adm/ 755 0 12 0 6045336347 4516 adm/aculog 600 102 1 0 6026172343 5710 adm/README 644 0 12 153 4102464077 5434 /usr/adm/messages must be writable by the world so that syslog(3) can write on it for non-network kernels. lpd-errsd`messagesd_monthlyd^ daemonlog]weeklyog\ accty[ shutdownlogdZusracctloYsavacctloXlp.errloWlpacctloV rdist-errsdUdebuglogsT timed.logS daemonlog.0dR debuglog.0dQ messages.0dP daemonlog.1dO debuglog.1dN\ messages.1dadm/wtmp 644 0 12 0 6045336414 5416 adm/daily 755 0 12 2460 4575233075 5635 #! /bin/sh - PATH=/usr/local:/usr/ucb:/bin:/usr/bin:/etc echo "Subject: daily run output" echo "" msgs -c echo "" echo "Purging accounting records:" /etc/sa -sfv10 > /dev/null echo "" echo "Running calendar:" calendar - echo "" echo "Rotating mail syslog:" cd /usr/spool/mqueue rm syslog.7 mv syslog.6 syslog.7 mv syslog.5 syslog.6 mv syslog.4 syslog.5 mv syslog.3 syslog.4 mv syslog.2 syslog.3 mv syslog.1 syslog.2 mv syslog.0 syslog.1 mv syslog syslog.0 cp /dev/null syslog chmod 644 syslog echo "" echo "Rotating daemonlog:" cd /usr/adm rm daemonlog.7 mv daemonlog.6 daemonlog.7 mv daemonlog.5 daemonlog.6 mv daemonlog.4 daemonlog.5 mv daemonlog.3 daemonlog.4 mv daemonlog.2 daemonlog.3 mv daemonlog.1 daemonlog.2 mv daemonlog.0 daemonlog.1 mv daemonlog daemonlog.0 cp /dev/null daemonlog chmod 644 daemonlog echo "" echo "Rotating debuglog:" cd /usr/adm rm debuglog.7 mv debuglog.6 debuglog.7 mv debuglog.5 debuglog.6 mv debuglog.4 debuglog.5 mv debuglog.3 debuglog.4 mv debuglog.2 debuglog.3 mv debuglog.1 debuglog.2 mv debuglog.0 debuglog.1 mv debuglog debuglog.0 cp /dev/null debuglog chmod 644 debuglog kill -1 `cat /etc/syslog.pid` cd / echo "" echo "Cleaning up UUCP:" su uucp << EOF /usr/lib/uucp/clean.daily EOF echo "" echo "mail:" mailq echo "" echo "uucp:" uusnap adm/lastlog 644 0 12 0 6045336441 6074 adm/lpd-errs 644 0 0 231 5127271717 6206 Dec 28 23:04:57 sms lpd[332]: /usr/spool/lpd/errs: No such file or directory Dec 28 23:04:57 sms lpd[333]: /usr/spool/lq/errs: No such file or directory daemonlog]weeklyog\ accty[ shutdownlogdZusracctloYsavacctloXlp.errloWlpacctloV rdist-errsdUdebuglogsT timed.logS daemonlog.0dR debuglog.0dQ messages.0dP daemonlog.1dO debuglog.1dN\ messages.1dadm/messages 644 0 12 0 6045336407 6240 adm/monthly 755 0 12 546 4270442214 6175 #! /bin/sh - PATH=/usr/local:/usr/ucb:/bin:/usr/bin:/etc echo "Subject: monthly run output" echo "" echo "Doing login accounting:" /etc/ac -p | sort -nr +1 echo "" echo "Rotating wtmp file:" cd /usr/adm mv wtmp.5 wtmp.6 mv wtmp.4 wtmp.5 mv wtmp.3 wtmp.4 mv wtmp.2 wtmp.3 mv wtmp.1 wtmp.2 mv wtmp.0 wtmp.1 mv wtmp wtmp.0 cp /dev/null wtmp chmod 0644 wtmp buglog.0dQ messages.0dP daemonlog.1dO debuglog.1dN\ messages.1dadm/daemonlog 644 0 12 0 6045336426 6377 adm/weekly 755 0 12 1200 4537216056 6020 #! /bin/sh - PATH=/usr/local:/usr/ucb:/bin:/usr/bin:/etc echo "Subject: weekly run output" #echo "" #echo "Removing old .o files:" #find /usr/src -name '*.o' -atime +21 -print -a -exec rm -f {} \; echo "" echo "Cleaning up UUCP:" su uucp << EOF sh /usr/lib/uucp/clean.weekly EOF echo "" echo "Rotating messages:" cd /usr/adm mv messages.2 messages.3 mv messages.1 messages.2 mv messages.0 messages.1 mv messages messages.0 cp /dev/null messages chmod 644 messages kill -1 `cat /etc/syslog.pid` cd / echo "" echo "Rebuilding catman:" /etc/catman echo "" echo "Rebuilding find database:" su nobody << EOF /usr/lib/find/updatedb EOF .4 daemonlog.5 mv daemonlog.3 daemonlog.4 mv daemonlog.2 daemonlog.3 mv daemonlog.1 daemonlog.2 mv daemonlog.0 daemonlog.1 mv daemonlog daemonlog.0 cp /dev/null daemonlog chmod 644 daemonlog echo "" echo "Rotating debuglog:" cd /usr/adm rm debuglog.7 mv debuglog.6 debuglog.7 mv debuglog.5 debuglog.6 mv debuglog.4 debuglog.5 mv debuglog.3 debuglog.4 mv debuglog.2 deadm/acct 644 0 0 0 6045336360 5316 adm/shutdownlog 640 0 5 0 6045336452 6764 adm/usracct 640 0 12 0 6045336365 6074 adm/savacct 640 0 12 0 6045336373 6053 adm/lp.err 664 1 1 0 4157123507 5611 adm/lpacct 664 1 1 0 4307022037 5646 adm/rdist-errs 644 0 0 0 4307022037 6472 adm/debuglog 644 0 12 0 6044624033 6213 adm/timed.log 640 0 12 0 4307022270 6274 bin/ 755 0 12 0 6024533460 4515 bin/atq 4755 1 12 56610 6024532020 5361 K&  e7cce7 /   7%  @w :C5 5  e   u % &$ @ $j#@ȥ-  n  @  c  @ȋ, je7. &$ @   < > @  VN fP >  @ 0N  %NfT >  @N  @wAw A5 5 $u5 @ mef  e   -@wAw tA< v >5 Ne@ mxe& 2( -^ew2A * u5 @ m6ef  e  N @ me @ me N > @ me @w z@f * 5v : N &$ !Nv (>Nexfv %%Nv (>Nexf <w@w ? f * 5  > N &$%Nef %%   > N (> N (>Ne > w?w |? N D5wt?@w V?3 * 55 &$ @NePf %N (>Ne 5 |T > @ @&o >%@@&y >%w>w >A r %f A r Nf >%w>w p>5 5 5 5 5 5 Nefefefef e Nefeff eNfff@ &|fe &e Ne > w=w =A r A rd A rd  5AWp Am u AWp Am q-@ = wZ=w F=  >f * 5  > N &$Of  Nef %%  > N (>/N (>@e5/fe & 5 @e5N 0<%N#N. > w|7 w9w r9w:wx9w d9   @ E wP9t V)5% %\ (%   &  7*&  7&   : 7&   : 7&  7&   7w&   7w&  7&  7&  7|_F w "8P 4 w8  7 . ~1$ 155 ff !e55 4 D& 9%e& 9%e& 9%e& 9%e7tw 7  _6  <_ _ 5 & f ;%5= 5u fff ;e5 #u 1f ;%50 :=N >w`6w L6D      + - ̥9 Wp @@`e̥0  w6w 5D5 5      + -! ̥9 f& ff <-eee@ ee@ 5u̥0 A@  wp5A@w4w H5~fef D%5 *w45 w 5>N V'5Nef @ ff ^,eu@  @w45 Y   Qe E @ 33e5e5@ A H u-Nef @ ff +eu@  @B @ `N 'N 2'  N f e@w 3Nefe < w3w 3%Vw&w t7Wpw AwpAmu% Nf  @m5uBmB-"C-Dm5TD-um@5@- w3 rӁNdf XmPu-Bm> B-т̒&C-Lw 2 @@5@  vwpAmDu-6B @5  N C! 5ԒS DCdU^C-f LmB5D-/+D-!Cm@5&@5%3-f  5u0B555R DD-N& m-N&  -_w0w 0Nefr "%w0w 0Neff "%w0w 0D A555  ԋuNeffe "%wx0w d0DC 5 5 _d%%_5 %*e5  AWp `eu/ 0u%l5  %h%[ /e  _Neffff e   * O  A@ EN V)5% % % %Nf ~( &    %_> A@ E%Nf ~( @w.N V)5 w .N%c%s%[Nf ff f& ew.5 5 5 5 %e%f %o%xDe5 5 A @ EN V)% % % %- Ԑ A @ EN V) _%+_  _%a%f %A_%F_ % A@vN V)O% A@v@mAm@ vA@v5u/0 %a%fW7 5`u`u C% S P Ԑ A @ E =/%%.%e%E- *% ' $ ! Ԑ A @ EN V)%+%-%0%9 A@  5u% N  ~( =   @e! @e! _@t@]   xNe A _Ne A @H@pHw t+DC = 5%c%0u5 %s    V)%r%c5 %[r      V)%%   ~( =  D- %cw* w t*D ̥^   % %]%-+  $%-̥]4   ̠   %]  w)w )D*\5% %-%+ 5 55 55  B5eA5 /%.55  B5eA5 / %E%e$%+%-  Wp B`e/  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& e5 55w(6 m 7:"w 'D Lԋw'w 'DC * w'5 7@  55@- 7 5!w N'N  NwL'w 8'D el&&&&Wpef Wpefd &ew&w &5 5  AaAE f&A@vUU5u %w&w &D w&̥/ 55 0<&f  e %Nfe < fe ; fe ; ԥ.̋De & $ & ; %fe0 ;% > %,@e05e wPNe$ wBNe( w4%r*_ "_% _%2_WpfWpeme, _@e\5 N f&t<>e - @ E3 - *tev5.N f&@.e@.A Ep@.A Ep -4 s - 3 _ - t-|_ -77tev5  e7 - _@e7w # Nefe $w#7 fAWp@7 7  f F%  < 7(7" w x#7 7 \7 Z7 Z < 77wZ#w F# %̋      2  w#w # l @55 w-w-  t z -h  t5,< 5,> -> uev&&fe Xe3 ep,e3wN"w :"& f ew&"w " Q@f& he5uQ@f& e5uumumu _!eeQu  %QQ eu % ff et ff e5u< ff et< ff eL A@e@ f& et e  =  r  rd > r 8 8 rd ( A` 5 8u 4  A` f&A@ 5u r  r   A` @mAm@ 5u e4 tWpe0u4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ttwz!ww `De LN 0<4eeX $  0<4e Be v Nfe (%ww -@ wN &%tw(w  %!,& &   w 1&( %%71˕,(Nf F% w @D r  !     +  w e% - r<N r<&@&!( &e( ~ ~w  Nef & ww rD 5  =& '% `5ȥ= Z = @w$e  w  BuNefef D%=@@wЋ Ћ   Ћ Ћ  Jҋ~ @@w TD >4 4  "BwDw 0 f ; %  >P @4 4 ww D 4-&4-!4 4   &e & ;%4    wme   s lt  &wW f r @  W f r@  @ w D% 5     |@w4- yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_*5P_*  m@e4 ,5Ne & @  uN @4USt%r5z~ =5v =5& & ;% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff ;%ށ̥a &  ;e 3     U̥r 33w 4$ @  w5 4@E%@EU5N&e < P&e ; Nf&e ;%4 IN&e < U&e ; Nf&e ;%  (Ne& @  ff eee@ 4t@t"4 4t > "B_+w N >@ >N "Bww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  3 ve@ 4tw"w D55ff %f&& "eff&e e &e 6 55 wrwnZw5 5 w D5#5ff T %f&& eff&e *ew6&e 7'44  && ef&& ;e&e & C%%U w D5_/o5ff %f&& eff&e Ze L&e 78f f ff&e V e 744  && ef&& ;e&e & C%%UUw @@m e%fe P@  &e 6 55 3ff `%f&e@ &50c &e 6 55 3Z : U44  && ef&& ;e&e & C%%&_/fffffe e _/&e % _/_/e_/  mm@ e@ f& ef&& ;efe& C%%_/ 4_.w @0 0 @0 N 177^ww D85_2Ne& @q fe Ve4-4-/44  &&  ef&& ;e&e & ;%%&e P@ &e 6 55 ewwbw4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t  3 ve@ 4t4-4-/44  && ef&& ;e&e & ;%%&e P@ ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& ;e&e$& ;%%&e$ P@ `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& ;e&e$& ;%%&e$ P@ `Btp$t t"  ff Nef&& ;e&e$& C%%Uw w r D5#5 5 w2w.fwX  @ a@ a@m5A a@5w  D 5# aB- f a@m& n9% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l0@Et5lP5lRu te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm 9% a@ `` e w D a@@m e  w e  aAm HN@`@m &f 9%  aN f`f 9%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef D% =U4 4  fef D%5 w    6v&  @ppC`p   6@Cwzwtw D = & & ;e 4E05Ew7 Ћ P ы A@PЋ w FD:5UE5Hw* _=5uNfe & C% _=bNe & @  uN @)U5| m- 5 & C%St%~ 0 @ U   & C% S U _h< @_l 3 "B 4 4 4 4 4 ww~w  $r5+  &5e-e %b &     @ ww  5f @ 7\ f @ 7(wX@ m270r&%be w       @ e-ww D r5 e %bw  5 e-w (> ?ww  N Cww rDCDpC @ P@ wZw FN "BwJ ~5 & E        ~5>wlYwfw Net@f @e  w6w.w  U7U7zAe vBf7 h  ^%X 55 a  a!PE - % w$ B `e vWt vw@ `e @  B%e U? `e 7U?ٔ a7 |~?vrU ew dDRE wZw FD5 "B 5N @!w5A vBB-  }ee@ !ۃ `!ւ ` `m|& E%nηmh·%w w7*'$!      7& A& BF7!W-K7& & e Ӌ jn &7n& e \ӕ-Vӕ0B~Bӕ.  ӕ0~ B~jn&7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .lupBw* J@B V_F@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& @< z   5 , @ :% & f E @<  (˥-%0     ,:% &  @< 8 5E& z   5 , @ :% & f E @<  w&w Nefef 5& Ie C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& Ieww  fff 5& Ieww  5 %O N  = 555Ne5& |Ke555'0Ne5 B& |Ke57 Be0" 5%55 5 B5@B e a=%7w %5 B5Ne& |Ke55e0%7`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#) Copyright (c) 1983 Regents of the University of California. All rights reserved. @(#)atq.c 5.2 (Berkeley) 5/28/86 JanFebMarAprMayJunJulAugSepOctNovDec/usr/spool/at/usr/spool/at./usr/spool/atno files in queue. %d no files for %s. specified users Rank Execution Date Owner Job # Job Name %5drCouldn't open spoolfile # owner: %127s%*[^ ] r%-10.9s???# owner: %9s%*[^ ] %-10.9s???%-10.9s/usr/spool/at/lasttimedoner/usr/spool/at/lasttimedone%ld LAST EXECUTION TIME: %s %d, 19%d at %d:%02d thstndrdthththththth%3d%-5sth%3d%-5s%2d.%3d.%2d%2d%3s %2d, 19%2d %02d:%02d%-21.18s r%.27s ???%*[^ ] # jobname: %27s%*[^ ] %.27s ???%.23s ... %.27s usage: atq [-c] [-n] [name ...] Z/etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwdSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecmn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT: Unknown error: %dt| ,>Pbn4CRjw 9 V g  H _ ~   9 Q r  & 9 H \ r  ( J _ RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator , h     TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired jEdEoExfFftFefEg@FcLFsvElvELEuEDEOEXEU=(\ef&& ;e&e$& ;%%&e$ P@ `Btp$t t"  ff Nef&& ;ebin/at 4755 1 12 52736 6024532023 5210 @C  e7cce7 /   7%  ;w >5 5 5 5 e 13@ȥ-.  m s x @  c   @ȋ e ̀  n "6  ;  N e N & 5%e Nefef %%. f 7 ee  R    nm57 7   V$ e" D& 7 \ ; & :   5%$ \ ; Ne J$5@-  f  ; >     u)f D& 7>N \ ;(  D< 5 b+ b b9  0 ! 6   = "6%NN "6%a "6 n "6%z "6  $5 $NX "6%Ne N n "6  ;Ne  "6%  N "6%fe b fe r$%  b  9 9 ;w:w :_uf "% nf "% bN@& P =N= P N' P N' P f "6 u$' N N  N@&N@& P =N P e _w9w 9 5 @m rdNf f ff8f t"e f V %e5w<9w (9-  - - z  w9w 8` j F %P Z c %@ J  %0 :  % *  %   %   %w8w x8uu@tez5%w- @  @m7` w- e %d  n "6  ;u @N  N.n "6% ;@e7 N  7  Wp m  NJn "6% ; 7 e ff 7e e   }}w7w 7-z j 8-t d -b R J  nm7!4 7. &  nm7   nm-  w6w 6 5  AWp Am ul @wL6w 86A r A rd A rd  w6w 55 zz@f r @w5e w 5uuu@@e 5@ H w~5 w Z5Nefe k \ ;Ne 5 ==@ABp@ABp@ABp@AB p@AB p @AB p w4w t4u5 AWp B`eu @@@%AWpdu@!AWp B`eu`e@ r y  @xn "6  ;%a %% %` n "6  ;A rd%< n "6  ;@C rd @C rd w43%a %e %H5 %` `    _H  ' ( 7 8n "6  ; _n  & 0_n  6 %a _ w Z2 N 45N \ ;@wB2w .2 $% \ ;w2w 2n "6  ;w1|wj1 w\1 9 E5 @@l wV*w 1DC E5<E@e33. @;E  5 , @;% & fE 7 5  b9U3 3  w0w 0x@e5@e57 =Ne # f 7 w0uuf 7 eNefe #pNef 8< u-$u- N "_f_N ^#5N "4}-(N ^#5N "LNef 7 Nefe F u-u-N "Nfe  d  5u-u-uuf 7 eNe #5__Nf 7 @_w /DC  ̋`%# w.(w^.w .    L  w.  5 ff L% 50  8 w t.  uN 75&f %5wH. $5  f 7  0   w - p  @e5ff l%5w- 5  w-   4 w t- ^X 67 N &  ,'%78wH-xr 7f5f D& 7 w , 4w-w , t  w,ww ,  X(7   97 w,w ,ww,w ,  z@ E w,` $5% %H8 r$%  8 "8  7&  7&   7&   7&  7&   7w&   7w&  7&  7v&  7h_w T+<  wN+  t7 n - N-55 ff e55  D8 & h5%e"& h5%e$& h5%ezt0& h5%e7`w H*  _r 7_ b_5 & f *7%5= 5u fff x7e5 #u 18f 07%5088 :=8N &:w)w ~)D      + - ̥9 Wp @@`e̥0  w8)w )D5 5      + -! ̥9 f& ff n eee@ ee@ 5u̥0 A@  w(A@w(w z(bfef f?%5 wf( w N(Nf  wL(~w'w 2(D Lԋw*(w (DC D w (5 70@  55@- 7 5!w 'N  w'w 'D el&&&&Wpef WpefHl t"elwb'w N'5 5  AaAE f&A@vUU5u %w'w 'D pw&̥/ 55z 7&f f e %Nfe 7 fe 7 fe 7 ԥ.̋De & V & *7 %fe0 07% &: %,@e05e wjNe$ w\Ne( wN%rD_4 <_4% 0_4%2_4WpfWpem e, _4@e\5 N f&te - @ E3T - *te5.N f&@.e@.A Ep@.A Ep -N s -:3 *T_4 - t-_4 -7~7xte5  e7T - _8@e74w F$ Nefe w6$7 AWp@7 7  f 4!  7 77 w #7 :7 v7 t7 t 7 77w#w # !̋      2  w#w l#  @55 w-w-  t  -  t5, 5, -X Sue&&fe Xe3 epe3w"w "& f erw"w z" LQ@f& e5uQ@f& e5uumumu _0eeQu  %QQ eu % ff *et ff de5u< ff et< ff ,eL A@e@ f& et e  =  r  rd > r 8 8 rd ( AD 5 8u 4  AD f&A@ 5u r  r   AD @mAm@ 5u e4 tWpeu4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ttw!wNw De LN 74eex   74e Be v Nfe l$%wVw B-l@ w<Nd t"%dw u@t5x5z@ 5Nefef $% (3A@u5Btrz2x@ Aup fef $% u-u-u-@wltww R !!,& "   w8 1&8 !%7S˕,8Nf 4! w D V !     +  we% - r<N r<&@&8 t"e8 ~ ~w < Nef " w6w "D 5  =& "% `5ȥ=  = @we  w  BuNefef f?%=@@wЋ Ћ  Jҋ~ @@w *D &:4 4  =ww  f *7 %  &:P |<4 4 ww D 4-&4-!4 4   &e & 07%4    w|me   s lt  &w< w$lw e& 7 7gwbw  & f f$eww>yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_.&5P_.&  m@e4 ,5Ne & 8<  uN |<4USt%V5b b95n b95& & 07% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff *7%ށ̥a &  x7e 3     U̥r 33w 4$ |< w5 4@E%@EU5N&e 7 4&e 7 Nf&e *7%4 IN&e 7 9&e 7 Nf&e *7%  (Ne& 8<  ff eee@ 4t@t"4 4t &: =_F'w N &:@ &:N =ww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  J/ ve@ 4tw"w D55ff %f&& "eff&e e &e 1 55 wwjw5 5 w D5#X5ff T %f&& eff&e *ew6&e 3'44  && ef&& x7e&e & >%%U w D5_j+o5ff %f&& eff&e Ze L&e 38f f ff&e V e 744  && ef&& x7e&e & >%%UUw @@m e%fe ;  &e 1 55 3ff `%f&e@ &50c &e 1 55 3>n "6 U44  && ef&& x7e&e & >%%&_V+fffffe e _V+&e % _+_V+e_+  mm@ e@ f& ef&& x7efe& >%%_V+ T0_*w @0 0 @0 N N-7.7*nww D85_Z.Ne& 8<q fe Ve4-4-/44  &&  ef&& x7e&e & 07%%&e ; &e 1 55 ewFwBrw4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t  J/ ve@ 4t4-4-/44  && ef&& x7e&e & 07%%&e ; ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& x7e&e$& 07%%&e$ ; `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& x7e&e$& 07%%&e$ ; `Btp$t t"  ff Nef&& x7e&e$& >%%Uw w r D5#5 5 wwvwX  @ a@ a@m5A a@5w  D 5# aB- f a@m& 5% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l@Et5l45l6u te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm h5% a@ `` e w D a@@m e  w e  aAm HN@`@m &f h5%  aN f`f h5%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef f?% b9U4 4  fef f?%5 w    6v&  @ppC`p   6@Cwzwtw D b9 & & x7e 4E05Ew7 Ћ P ы A@PЋ w FD:5UE5Hw* _H95uNfe & >% _H9bNe & 8<  uN |<)U5| m- 5 & >%St%b v D< U   & >% S U _8 @_ 8w DE%%"5   & >% U wv w ^D55@ b9  &: 3 = 4 4 4 4 4 ww~w  Z$V5+ &5e-.e %F &     ; ww  5f ; 7 f ; 7nwX@ m7V%Fe w   t    ; e-Xww D DV5 e %Fw  5 e-w 9 >;ww  N >ww rDCDpC |< ; wZw FN =wJ ~5 & E        ~5>wlYwfw Net@f v `e vWt vw`@ `e @  |>%84e U?"" `e 7U? a7 ?U ew dDE wZw FD5 = 5N |<!w5A vBB-  }ee@ !ۃ `!ւ ` ` m& E%ӷmӇ%w w7b*'$!     6 7,& A& BF7!W-&C7w 8uDAB %u f& & e w5 5  W- W00~u5  .luNBw* J@B |_2A@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& 7 z   5 , @ :% & f E 7  (˥-%0     ,:% &  7 8 5E& z   5 , @ :% & f E 7  w@(#) Copyright (c) 1983 Regents of the University of California. All rights reserved. @(#)at.c 5.4 (Berkeley) 5/28/86$+2:DMT]entz~N sundaymondaytuesdaywednesdaythursdayfridaysaturdayjanuaryfebruarymarchaprilmayjunejulyaugustseptemberoctobernovemberdecemberjanfebmaraprmayjunjulaugsepoctnovdec/bin/shstdin/bin/csh/bin/shambiguous shell request. weekwforkrat> SHELL$SHELL# owner: %.127s # jobname: %.127s # shell: sh # notify by mail: %s yesno umask %.1o at: can't get working directory cd %s %s << '...the rest of this file is shell input' at> TERM=TERMCAP='\''\ export %s/%02d.%03d.%02d%02d.%02d/usr/spool/atYEAR nowtime: %d attime: %d YDAY nowtime: %d attime: %d MON nowtime: %d attime: %d MONDAY nowtime: %d attime: %d WDAY nowtime: %d attime: %d HOUR nowtime: %d attime: %d MIN nowtime: %d attime: %d day of month not specified. "%s": illegal day of month "%s": illegal day of month weekgettimeofdaybad time format: bad time format time out of range illegal minute field usage: at [-csm] time [date] [filename] /getwd: can't stat /./getwd: can't stat .../getwd: can't open ..getwd: read error in ..getwd: read error in ..//l/etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwdSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDechlmn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT: Unknown error: %dX`j"4FRht ' 6 N [ q  : K j , C b r   5 V x  , @ V x .CRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator,h TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired z^@dD@oP@xAfAe@g@c@s@l@Lf@uj@DH@OT@X|@U&e & 07%%&bin/atrm 4755 1 12 47650 6024532025 5550 A e7cce7v /   7%  h5w 85 %  e e  $@ȥ-e@ȋ  x  @ȋ f  b   P   @  7  Z% ~ h5 7v Jfe e5 ~ h55 $4 F65 ~ h5N@ @me&  ~ u- @5 6@ @ap @ @me T &  @ @a&@ @me& % u- h5@  _"5 N 55 @ @a  +@ @mef ) u-   Nj /%eN A AaA@,  @ @a&@ @me& % @ @a0  h5w5w 5j /  h5w5w 55 @e5 .  5`% wr5w X5 u @  wB5w (5 N  Nf N & #   |4 /  " N . 1 R  >N 0  * ^ = ` N ~ w4  O w d4Xf  5vZj / N ~ !Nv 3Nexsfv %%Nv 3Nexf j1w3w 3f  5v  N ~%Nexfv %%  Nv 3 Nv 3Nex wz3w f3  ߸ R 55@%  ߈ R 5 @ @e 5y w2w 2 N 5w2@w 2 N 5w2@ w2w 2DC E5<E@e33. @;E  5 , @;% & fE 1 5  ,3U3 3  w1w 1 l  h L  w1 R 5 ff L% 50J  8 w d1  uN 15&f %5w81 5  f j1  0   w 0 p  @e5ff l%5w0 L5  w-@ H  4 w d0  1  &  %7w80 j15f  7 w /  w/w / t  w/ww / jd ""7 \  XR 37 Jw/w /wTw/w /  , &@ E wr/  5% % <%   v  7&  7&   7&   7&  7z&   7\wZ&   7JwH&  70&  7"&  7_ w D. z  w>.  7  & '55 ff e55 z Drl& 2/%e& 2/%e& 2/%e2,& & 2/%e7 w 8-  _|  j1_ _ 5 & f 0%5= 5u fff B1e5 #u 1f 0%50 :=0N 3w,w n,D      + - ̥9 Wp @@`e̥0  w(,w ,D5 5      + -! ̥9 f& ff ^#eee@ ee@ 5u̥0 A@  w+A@w*w j+^ fef &:%5 wV+ w >+>N 5Nef 6 ff "eu@  F6w*5 Y   Qe E F6 33e5e5@ A H u-Nef 6 ff !eu@  7 @ `N N   N f e@w )Nefe j1 w)w )%Vww t7WpwAwpAmu% Nf @ @mv5uBm^B-"C-DmH5TD-um(@5@- w$) ӁNf mu-Bm B-т̒C-Lw ( @@5@ :  vwpAmDu-|6B f@R5 D N (C! 5ԒS DCUC-f m5D-/+D-!Cm@5&@5%3-f @ 5u0B55jf5R DD-N& >m6-2N& @ -_Tw'w 'NefR h%w'w &Neff h%w&w &D A555  ԋuNeffe h%w&w &DC 5 5 _%%_5 %*e5  AWp `eu  0u%l5  %h%[ X e  _Neffff e   * O  A@ EN 5% % % %Nf  &    %_ A@ E%Nf  @w$N 5 w $N%c%s%[Nf ff f& Xew$5 5 5 5 %e%f %o%xDe5 5 A @ EN % % % %- Ԑ A @ EN  _%+_  _%a%f %A_.%F_. % A@vN O% A@v@mAm@ vA@v5u 0 %a%fW7 5`u`u C% S P Ԑ A @ E = %%.%e%E- *% ' $ ! Ԑ A @ EN %+%-%0%9 A@  5u% N   =   @e! @e! _\@t@]   x$Ne A _\Ne A @H@pHw !DC = 5%c%0u5 %s    %r$%c5 %[r$      %%    =  D- %cw w D ̥^  $$$ % %]%-+ $ $%-̥]4  $ ̠ $ $$ %]  ww D*\5% %-%+ 5 55 55  B5eA5  %.55  B5eA5   %E%e$%+%-  Wp B`e   @`5 @ 5AupAm%55 @5A5u555555  55555AupN& e5 55w$6 m 7T"w D Lԋww DC  w5 7@  55@- 7 5!w pDe LN 14eRe   14eU Be v Nfe 6%ww -@ jwNW 6%w  BuNefef &:%=@@wЋ Ћ w ZD 34 4  7wJw 6 f 0 %  3P F64 4 w w D 4-&4-!4 4   &e & 0%4    wme   s lt  &wW f r @  W f r@  @ w D% 5     |@w4-  w>yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_5P_ N mD@e4 ,5Ne & 6  uN F64USt%R 5^ ,35j ,35& & 0% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff 0%ށ̥a &  B1e 3     U̥r 33w 4$ F6 w5 4@E%@EU5N&e 1 0 &e R1 Nf&e 0%4 IN&e 1 5 &e R1 Nf&e 0%  (Ne& 6  ff eee@ 4t@t"4 4t 3 7_!w N 3@ 3N 7ww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  ) ve@ 4tw"w D55ff %f&& "eff&e e &e |+ 55 www5 5 w D5#5ff T %f&& eff&e *ew6&e `-'44  && ef&& B1e&e & l8%%U w D5_4%Fo5ff %f&& eff&e Ze L&e `-8f f ff&e V e 744  && ef&& B1e&e & l8%%UUfw @@m e%fe 5  &e |+ 55 3ff `%f&e@ &50c &e |+ 55 3: j / U44  && ef&& B1e&e & l8%%&_ %fffffe e _ %&e % _d%_ %e_d%  mm@ e@ f& ef&& B1efe& l8%%_ % *_^$w @0 0 @0 N '77ww D85_$(Ne& 6q fe Ve4-4-/44  &&  ef&& B1e&e & 0%%&e 5 &e |+ 55 ew ww4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t  ) ve@ 4t4-4-/44  && ef&& B1e&e & 0%%&e 5 ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& B1e&e$& 0%%&e$ 5 `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& B1e&e$& 0%%&e$ 5 `Btp$t t"  ff Nef&& B1e&e$& l8%%Uw w r D5#5 5 w~wzwX  @ a@ a@m5A a@5w  D 5# aB- f a@m& .% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l @Et5l0 5l2 u te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm 2/% a@ `` e w D a@@m e  w e  aAm HN@`@m &f 2/%  aN f`f 2/%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef &:% ,3U4 4  fef &:%5 w    6v&  @ppC`p   6@Cwzwtw D ,3 & & B1e 4E05Ew7P Ћ P ы A@PЋ w FD:5UE5Hw* _35uNfe & l8% _3bNe & 6  uN F6)U5| m- 5 & l8%St%^  6 U   & l8% S U _1 @_1w DE%%"5   & l8% U wv w ^D55@ ,3  3 3 7 4 4 4 4 4 ww~w  4$R 5+ &5e-fe %B &     |5 ww  5f |5 7 f |5 7wX@ m~7|R r%Be w  \ N    |5 e-2ww D R 5 e %Bw  5 e-w 3 5ww  N r8ww rDCDpC F6 5 wZw FN 7wJ ~5 & E        ~5>wlYwfw Net@f @6e  w6w.w  8U76U786Ae vB7   % 55 a  a!PE -l%6 w$ F8 `e vWt vw:@ `e @  F8%e U? `e 76U?ؔ a7 ?U ew dDE wZw FD5 7 5N F6!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%շmՇ%w w7 *'$!     h 7^& AN& BF7!0W-@7& & e Ӌ JN &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~JN&7 & Le tӕ-0 hӕ.\ B~ӕeN ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luPBw* J@B V_;@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& 1 z   5 , @ :% & f E 1  (˥-%0     ,:% &  1 8 5E& z   5 , @ :% & f E 1  w&w Nefef 5& ?e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& d?eww  fff 5& d?eww  5 %O N  = B555Ne5& @e555'0Ne5 B& @e57 Be0" 5%55 5 B5@B eB a=%B7Bw %5 B5Ne& @e55e0%7`Jʕ0%Bʕ1  %B˕0 ʥ9 6@~ @(#) Copyright (c) 1983 Regents of the University of California. All rights reserved. @(#)atrm.c 5.2 (Berkeley) 5/28/86/usr/spool/at/usr/spool/at./usr/spool/atmallocstat%6s: no such job number usage: atrm [-f] [-i] [-] [[job #] [user] ...] %6d: permission denied (owned by ) remove it? could not remove removed rCouldn't open spoolfile # owner: %127s%*[^ ] r%s???# owner: %127s%*[^ ] %s???%s???/etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwd>>H$$$$$$$$$$$$$,: Unknown error: %d"<Ldn  ,8JYix)8DWh~"CZt*Ae 0 E X z  0 B T h ~ RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired ;d;o;x;f;e:g;c;s:l:L&;u*;D;O;X<;U=(\&e & 0%%&e 5 &e |+ 55 ebin/calendar 755 0 12 1277 6024532030 6300 : calendar.sh 4.5 84/02/14 PATH=/bin:/usr/bin: tmp=/tmp/cal0$$ trap "rm -f $tmp /tmp/cal1$$ /tmp/cal2$$" trap exit 1 2 13 15 /usr/lib/calendar >$tmp case $# in 0) trap "rm -f $tmp ; exit" 0 1 2 13 15 (/lib/cpp calendar | egrep -f $tmp);; *) trap "rm -f $tmp /tmp/cal1$$ /tmp/cal2$$; exit" 0 1 2 13 15 /bin/echo -n "Subject: Calendar for " > /tmp/cal1$$ date | sed -e "s/ [0-9]*:.*//" >> /tmp/cal1$$ sed ' s/\([^:]*\):.*:\(.*\):[^:]*$/y=\2 z=\1/ ' /etc/passwd \ | while read x do eval $x if test -r $y/calendar then (/lib/cpp $y/calendar | egrep -f $tmp) 2>/dev/null > /tmp/cal2$$ if test -s /tmp/cal2$$ then cat /tmp/cal1$$ /tmp/cal2$$ | /bin/mail $z fi fi done esac ;d;o;x;f;e:g;c;s:l:L&;u*;D;O;X<;U=(\&e & 0%%&e 5 &e |+ 55 ebin/dc 755 0 12 55656 6024532033 5152 U e7cce7  / E  7%  Nw RQNf ! wLQw 8Q  .+ 0$ \$ *%0%9%A%F%. r y"J @       N |De  k hDe \: 28 + f+ l#7  w \$ `E F#7 1@?5v1@?j5* f+ "  @@m7B>-(4@-#*@-uu-u-N 9 w,__  _/ f+ `" BD ndp, AP@ LmBH:_~86m,$ %  ,7  BD BD, A _~  7,__, _6-5  @5vN % 7 f7p, A@ ȝz_~7 6 !7h R_6R1@?Fȋ_6 74 ( \$_6H, H,   )@%_61@?7 &  BD?~H,l h`H, LH,: 6WpdaD,Dpu BD --5u-NN 9 , Az ,, A{  \$ \_ 2 z>, A , A:  \$ \$ z _/ f+  BD BD_  _6 5, ,0 , , % , %Z%   BD z>%d, AA rd@: A rd5, Az , A:_ : BD_@  ^? ,_d_j V _6 :5 5 ^? , 5 %K  )5, 5 %', f&d ff Beee@ 5u, ff 6%7ww~ BD% A@  7ZwX4V% %3<07 .F*_5 %  z>, A  ,7 5A@ 5`@=@H,@%  N BD BD BDw@ 7zFv-rl_F 7r\wpVwV_zr@ f ^? ,_d_j5  z> %] _| , A; %[   _6 :%!_6, , 7\ BD_@  ^? ,_d_j  B0_6, 5 BD z>, A{ ,_d_j%J_6, N_6 BDU `E _%X RL BDB%h__6Z%_N +%6l_6( +_  y_6, A;  `E _%_65 ^? _z _ b  BD%_6 D  7 R L  5><44  N_6% ^? 5 , A:  % BD@__6   7 % ~D BD,  BD t  7hfd? \ 6R 0  7 >_6 , ($ %_| ~D BD, _|  _6 : , %_6 , _6, Wpd@, @`%_6 BD E5 7 *&@   7_ ? e  z>,!? e @ e  ^?  BD  @  D BD `5  _6N PA _R : |_6 : , %0_6 , %_6, Wpd@, @`%?_6 BD E5 7 *e @   @  ~D5A@f ^? _ z>  D _%( "H, BDe%[_6e _ % _ .+_e%j_6?  * %! z>, A;  \% pX_, A; %\, A ; b*%__ <%__  _  _ y `E _ _ _ _  _,  z> 5%d, AA rd; A rdu, A{ , A;_ _t  _ _  _ _ _  _  _  _Z  _% N  BD  BD_ _ _H _ T _ =_6 _ _%h_ _6 _ _4  _l _  .__6 _ _ _   7 ), A _| E_ _ _  _ X __6 _ _R  _ )_ _ _ _ _X  _  ,_lN_6w < 7  z>@A@ N \$ `Ew< 55B, %@A@f ^?  )@@ 5@A@f ^? , , %  )@@ 5@@ 5@5_ & @ , A; 5 , 5   , , f&d ff 3eee@ 5u _ , , f&d ff v3eee@ f& d3e5u fe 2e_, Wpd@5 , , 5d A @mAm@ f& 2e5u, , 5 @mAm@ 5uuu eu eu A@v5uffff 2eu ?5 2, upAmuA rd5H, AA rd@ H,, H, A H|H,pj?dN @ 5 A,5:H,& *H, &@@55 ed, A{ ,, u - - A| -4 -   _ , - A@ < -4, A , ,7 5 BDC 5 & -@m55 %dd - A| -4 -   - A| -4   - 4 -   ) , ,   )B- BD_w 6 d  \ `E \$V B     7B  70,# ,m 5+ &  , , , A  \$ `Ew5N& % 7  w 5 @=A r5 z>4- A@H,@ < % z>, A@H,@ : @H, N BD%;   BD?H, 4- ApH,^ Z< L BD7HwT47>w 84@A@5@=@H,@5@E%AWpdB, B,B`u@ 5 z>57e? @-Nf @ u@ 5@=@H,@%d_d@H, A@ H@H,p@p, AA@ ȕNf  5Nf ,7 5N BD BDf  5N BDd BD@A@f ^? 5 )Nf ,7 5N BD@=@H, (@H, A@ H@H,p@H,@5 N BDN BDu_N BDN BDN BD@w1w x1  z>4- A @A@f ^? @A@f ^? ,_! 5 , 5I  )C,  5 BDC@5N BD  & 5 BDD ^? 5 & 5 BDN BDB @A@5%4  BD BDw0@=@H,@ 5%4 4- A| w / F %$ F   E ww- e  p& H 7h \ `E  N z>7Bp, A.@  z>7p, A@ ȕ   &%7F7  z>7p, A@ ȕ  l f z>7p, A~@ ȕ  z>7hp, AT@ ȕ z>7@ z>78 z>70777 7 7e?e% ? w-w -$ F  d^ BDT%N wV-w B--hb `Ew>-7 VeJDw -%86 w-& w , 55 z>I \S%AS%FPe %c7 Ap@? p, A@ & &  BD ,7  BD .+ 0 .   %0%90 .+ 4- A< w,N& : w +A rAAB@` z>4- A< %@=4- A@H,@ < @H, N BD% t &  BDw+w + 55@=DH,) @H,@ @A@f ^?  )@@ 5@=CH,) @H,@ @A@f ^?  )@@ 5@` z>&_(? ,_(, 5 Jm5 = - 5, ,5AupAm`uA rd5, AA rd@: , -  !, ,5, A@@m: ,,_' _'  )D- BDC- BDw(w (  @=8dAB,AA@5ddAu @H, A@ H@H,p@H,  T@p, AA@ ȕ@=@H,@@H,@5c@p@p, AA@ ȕw`'@=@H,@5@pw ' H,N BD% .(@ E H,@ 7 G7%% @L Nw&w p&%b  \ R @Hw^&@& F w 8&@*  x8`Z ,7 N BDH BD4- A6  \$w% & w %@=@H,@=@H,AD @H,@ %c@=@H,@  `E @H,  `Ew%@5@H, @A@f ^?     -  )- `E  `E  %x%rd-f 1f& <3% J D -@ N& 0 _,dAp@?T upuA r @m 7r5N& / N& 9 &   BD   BD?H, `E x `EbhH,   BD_,fAp@?V. `E  `E5  &  BDN / N 9 & u- BD?H,ֿ  `E |  `EflH, _,w " @=@A@ @-@@f ^? w!@A@ z>4- A@H,@ < % & & 5 z> BD, A, : @ 倲, A:  BDHզ   BD BD_/w @= 8@A@ @-9@H,@% % `E  `E|܂@H,    `EN BDw4 @A@ @->@H,@ r  `E   `E r e0N# `E & `E .) `E , `E۞@A@ @-J0/ `E v2 `E`f @A@ @-,@H,@% 59 `E < `E%%%@H,@ r e0? `E B `EښE_n1w bNf 9 Ap@?p, A@ ȕ $j ,7 5 BDD@G `E J `Eۀ BDM `Eww @=@H, p, A@ ȕ0N BDwv@H,@ N BD%O `Ep, Ar@ % e0e7Hw  % z> 6@m 5 @A@a@=@H,@ CN );f  N BDR?L4- A:H,0(H,ҿ e0<  BD@A@N BD%`@  p, A @ ȕ- 1p, A@ ȕ0 p, A@  - H -  BDAvn@`p, AL@ ȕ0 *1@?p, A@ ȕ-p, A@ ȕ ww r@A@&@A@%@@A@5 z>@=@= O@H, @H,@ 5@H, @H,@ 5B``%dd ed 4- A  4- A   -( -  - 5  - A| -44  -8 - %+ - 5%c% - - A -44wxw d B ^ `E%k `E \$  Z    5 7FD̷D w B- w2N& %  ̎N % 7w @=@H,@ % z>4- A@H,@ < @H, %t&   BD BDN BDw w A1@=f 9 5ww Nf %  z>4- A|  &  BD   BD BD` BD4- A| wTw @ 7v `x `Ew2X1@?L7ND )<p, A(@ ȝ" \$ j + f+ w j 5<  xD     =  BD BD ^w  - 5 BD<>w ,   7 A%, z>(  D ,  ~D5A@f ^? 5 ^?  \$w z>, A: w l      A@vu5  w8w $e4w .A 7` w`w N N BN N bB "7 44 @m4ww ew ew  N7 B N7 bBeee! wTw @ePw JA 7`0*0* e8 eD @ Lww  5 @ 5 %%)@5@5NH `E NS @ N Cu %w|@5@=5 * %@5Nfe_[ `E%Nfp `E%N~ @ N CN ~D5uw @5@& `E% bB@A@@& XP  bBA@@=aA1`A1`wp w \ De`w Z 7PwNɷ Hp7l :Pw4 w D - w ew  D4- A|cw w D - w w DN N w @  w  %  F  % & ZE wh  w %w w > fef Q%5 <w* w  D 3 :PEtU4 4 w w D Lԋw ǀe& ;ew w u@t5 5 @ 5VNefef G% (3A@u5Btr 2 @ AupV fef G% u-u-u-@w w D% 5     |@w 4- mn4Glw e& 7 J7Bgw w >  & f |Gew6 w w  D85U5_H5P_H ޽ mԽ@e4 ,5Ne & N  uN N4USt%5 K5~ K5& & BJ% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff wlYwfw Net@f Ne  w6w.w  U7U7Ae vBz7 |  r%l 55 a  a!PE -4% w$ P `e vWt vw@ `e @  P%ھ־e U?ľľ `e 7U? a7 ?U ew dDfE wZw FD5 :P 5N N!w5A vBB-  }ee@ !ۃ `!ւ ` `½m& E%m%w w7*'$!       7& A& BF7!ԳW-U7w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_S@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& XJ z   5 , @ :% & f E XJ  (˥-%0     ,:% &  XJ 8 5E& z   5 , @ :% & f E XJ  w@(#)dc.c 4.3 (Berkeley) 4/26/86rFnBh+~+++++<< 16stack empty stack empty stack empty /bin/shsh-c! sallocsallocmorehdheaderscopycopy size %d copy%s %o rd %o wt %o beg %o last %o %d seekcseekcmoremoreout of space: %s all %ld rel %ld headmor %ld nbytes %ld stkstring %o odd begarray %o elt %d odd tmps %o p %o eltodd ptr %o hdr %o redef-badredefRdRoRxSfSeRgbScnSsRlRLRuRDRORXRU BDD@G `E J `Eۀ BDM `Eww @=bin/style 755 0 12 1735 6024532051 5671 #! /bin/sh # # @(#)style.sh 4.5 (Berkeley) 82/11/06 # L=/usr/lib B=/usr/bin echo " " $* sflag=-s eflag= Pflag= nflag= lflag= lcon= rflag= rcon= mflag=-me mlflag=-ml kflag= for i in $* do case $i in -r) rflag=-r; shift; rcon=$1;shift;continue;; -l)lflag=-l; shift; lcon=$1;shift;continue;; -mm) mflag=-mm;shift;continue;; -ms) mflag=-ms;shift;continue;; -me) mflag=-me;shift;continue;; -ma) mflag=-ma;shift;continue;; -li|-ml) mlflag=-ml;shift;continue;; +li|-tt)mlflag=;shift;continue;; -p) sflag=-p;shift;continue;; -a) sflag=-a;shift;continue;; -e) eflag=-e;shift;continue;; -P) Pflag=-P;shift;continue;; -n) nflag=-n;shift;continue;; -N) nflag=-N;shift;continue;; -k) kflag=-k;shift;continue;; -flags) echo $0 "[-flags] [-r num] [-l num] [-e] [-p] [-n] [-N] [-a] [-P] [-mm|-ms] [-li|+li] [file ...]";exit;; -*) echo unknown style flag $i; exit;; *) break;; esac done $B/deroff $kflag $mflag $mlflag $*^$L/style1^$L/style2^$L/style3 $rflag $rcon $lflag $lcon $sflag $nflag $eflag $Pflag ,5Ne & Nbin/diction 755 0 12 1014 6024532051 6150 #! /bin/sh # # @(#)diction.sh 4.5 (Berkeley) 82/11/06 # D=/usr/bin B=/usr/lib echo $* rest= flag= nflag= mflag=-me lflag=-ml kflag= file= for i do case $i in -f) flag=-f;shift; file=$1; shift; continue;; -n) nflag=-n;shift; continue;; -k) kflag=-k;shift; continue;; -mm) mflag=$1; shift; continue;; -ms) mflag=$1;shift;continue;; -me) mflag=$1;shift;continue;; -ma) mflag=$1;shift;continue;; -ml) lflag=$1;shift;continue;; *) rest=$*; break;; esac done $D/deroff $kflag $lflag $mflag $rest^$B/dprog -d $nflag $flag $file ag=-a;shift;continue;; -e) eflag=-e;shift;continue;; -P) Pflag=-P;sht;continue;; -n) nflag=-n;shift;continue;; -N) nflag=-N;shift;continue;; -k) kflag=-k;shift;continue;; -flags) echo $0 "[-flags] [-r num] [-l num] [-e] [-p] [-n] [-N] [-a] [-P] [-mm|-ms] [-li|+li] [file ...]";exit;; -*) echo unknown style flag $i; exit;; *) break;; esac done $B/deroff $kflag $mflag $mlflag $*^$L/style1^$L/style2^$L/style3 $rflag $rcon $lflag $lcon $sflag $nflag $eflag $Pflag ,5Ne & Nbin/explain 755 0 12 306 6024532051 6142 #! /bin/sh # # @(#)explain.sh 4.5 (Berkeley) 83/05/27 # D=/usr/lib/explain.d while echo 'phrase?' read x do case $x in [a-z]*) sed -n /"$x"'.* /s/\(.*\) \(.*\)/use "\2" for "\1"/p' $D esac done ? learn> lexn= m4n< neqn; tek: t40139 t3008 t300s7 t4506aedplot15bgplot14crtplot13dumbplot12gigiplot11hpplott10 hp7221plotd/implotlot.atoplotot-plottoaot, ploto+ profo*ratforot)bin/diff3 755 0 12 465 6024532056 5510 #! /bin/sh # # diff3.sh 4.1 83/02/10 # e= case $1 in -*) e=$1 shift;; esac if test $# = 3 -a -f $1 -a -f $2 -a -f $3 then : else echo usage: diff3 file1 file2 file3 1>&2 exit fi trap "rm -f /tmp/d3[ab]$$" 0 1 2 13 15 diff $1 $3 >/tmp/d3a$$ diff $2 $3 >/tmp/d3b$$ /usr/lib/diff3 $e /tmp/d3[ab]$$ $1 $2 $3 aedplot15bgplot14crtplot13dumbplot12gigiplot11hpplott10 hp7221plotd/implotlot.atoplotot-plottoaot, ploto+ profo*ratforot)bin/eqn 755 0 12 72064 6024532063 5342 M& e7cce7X9 / >  7%  Ew I6 j 7 h 7 f Be&e@e  wHe& 5n%,   (7 7  m %0@ 5 -b%%C   5%,  77 e%@ e -j@5  HP C x   62% ne5%0  %b@ _p 5n@e ֆ_ __@  D@  5@7v$u@ 5@ b 5%0   A p b@  @ [_p x  _p &  _p7 %_p && %_p X _p7#$#_pL CR-$# $_p7x#_p7 p#_p& $  _p& \6& r  " _p 7_pV$&L +%7B$_p:$&C,$&R$&-&& 62_&& ._&& _ &&&  & &&& &_&&  %7 l"_p& &  _& 0_&- #_&*&,&+ !_p _p l>7!_p2!_p6!_p7!_p4!_p5!_p0!_p3!_p1!_p"!"! "_p!"|! >e_p"f! ^!" "_p~"H! >_{0!_p}&!_pN" H"0'_p>" ! 6_p1 _p23# 2_p"7 _p 8_     _pw 8C 5 5%!!5Nff % @ ~(A @F)P!Wp@& $  rWpN( > N4 > NfZ >%Nfm >%@0  x fe $ f >%N f %@ %2*N > Nffff >e Nff >e%5L WpZ rd  rWpB r`~( $ @ F)@ &~(@ &*@ &*ff >e N N wrAfe $ f _N > _N Nf _Nf _Nff2 >e_Nfu >%N > @ F) w @w@ F)@ &F) $ 5@ ~(A @F)@ ~(A @F)& $ @m5 1~( pF) Nfff`V >e @ %2* @ %1*z } NfJf~ >eNff >eNf >e@ A p**N w?w z?!rR1!iI2x!bB3`!@7V!R! > @!@& >%w ?w >w,( " %2!21*p* 4" * &* &~( &F)ff  >eNf - >ew  C > wZ>w F> wz r5Nf %NffffK >e j Nfm >%w=w =fe  7.7@7 B" I R  b i r1~ > w=23w b= , 7  1 *A*p*z A A~(p~(@5@ 5F)5 %z5ejNbf %N >% &Nff %Nf >e@  1l~(~(@ 5~(  Nff %Nf >e@  1l~(~(x > <%fffF@ ~(A @F)@m& >e @ ~(A @F)@m f >eNff: >e 0@@A @lF)f%fff@@A @lF) &j >e >^ AAmpF) F F)< &~(fff& >e N  N  N w:w : ~7@  y xf+ >eeWp@Wp C r  rWpx r~(Wp r  rWpN rF) x> F)4 &~(f&U >e  1*A*p*w9 N %w 9  Nf >%  Nf >%    Nff 62 N#  N"f .% @ F)@ &~(f >e@ 1*w8w 8 76f. >eeWp r Wp rWp r~(Wp r  rWp rF)  1*A*p*wF8w 28Nf b  Rw*8w 8N Ew8w 8Nf  $_vE_Q_ @ 0 +%dx,\ > _ >7  v &z >% > tp >% >  > > >%8/ 4# . & " - ? % x%&  "B w65x%   ?E  !5 -?% x%& ߎx%E "B % 8 n ?fE Z V"5TF -F ?8% x%& &x% fE& "B %  x, 5%_._-x, > w 5D % %- %(1x,& %72- wv5w b5  > &5 > L x,f >%    f' >%r 5 >x, - x,fJ >%U >Nj > N w4w 4 @ F)@ &~(fq >e@ 7~(~N > WpH r  rWpf@ ~(A @F)5 > @ %2*f >eVWp r  rWpf@ F)5 >   ߤ 5 - ?% x%& px% "B wwX3w D3u-@wD3@w *3  A @+ + @w3 %dN % w 2@ 0 +w2w 2%N > w2w 2N#ff >ew2w 2 wzwvY eO fC p4 s%DKN-E ? d07D 76#e l>7e l>7 7  e   l% dw1w 1w1w |17   > wb1w N1   >Nf > .,$ m&& >e?% JA E% JA Nf% JA% m&S% JAe  Rw0w 0%2 w0  @ En ?7t%  `%d^ L-NF8 D2  w $0 m& Al%  m& b@ 7 m %w/w /DӋ %3    !w/w / % % 7    "" ^ { } ~-hWwF/{}7 b h%"% L0*1*1. % *1& %%\  &%"\*1 0*1 %*1 %? *1  *1 >  *1x5 %5" l h@  V R _@*1 >%_ *1@6 %5 d *1 > _2@%%%@ _@% _@% _@% _@% _@_2w P-DB % % %=T% 4% 1% .%{+%}(%"%%~"%^-%\ B%"ҕ\Ґ  N& % %{%}%" %~ %^% - w w,w z, 5% % %  05 5@-%@@m% N> % w$,@@mH u-} >5% % % %@@mH u-w +*1  % *1 3*1 X5*1 % *1_ %*1 X5fx5 % Nf >%w$+w +N B  F N %N& B w*w *&  w*w * 7$ 7& *1 % *1 %J7C7%o%f 77wt*w `*B ʋ  rdC @m`f A  t w&*   F  Lt @m4 @mw ) 5 @t @t& @6 % @t 5 @t@t&7 % @t w^)w J)nNf >%wh N > w$)w )4   78 > \N > w(w ( @ 4A p' *'N& > @ 5 @ '5 > -@ ': >  p'wf(w R(E @ 5'5 u  @ 'J > @ 'e5`-h_v" 55@@m55 /@ ' ~(A A' @F)f $ 5@ ' F)f $ 5@e5` u-  NffV >e@@m55 @ ' pF)@ ' AAmp~(@e5` u- u-u5 (@ '@m f @ '@m &' +%@ @a"@e5` u- X7 A" p~(~( A" pF)F)  1 *A*p* | F)r &~(ff`m >e P > 5 @ @-N @ @a&" >%@ @a"  u- >ww%w % w%upWp rd  rWpu > %-%,Nf%,%* Nff %+ Nff >e \" F) &~(fff >e w$w $ 5wWp r  rWpu@ ~(A @l~(@m5@ ~(@5 NffftD >e Nf %Nf %Nfn >%Nfff| >e%B<ff >eNff@ ~(A @F)@& >e N@ ~(A @F)A @lF)@m &ff >eNf@ F)@m&ff >e L pF)@ p~(4 . 1 *A*p*N N w"w " @ 5~(@ 5F)w  1 *A*p*%WpAm %pr5%@e5%{%}A r  @5%@e5hupWp rWp r~(  ~(C rBmF)"Wp r  rWp@AC r@`5X >%@0 (_) [_) c_f) f_>) n {_~) |_)Nefefef *eN@ & >% ?N > @ )_* ]_* c_&* f_) |_* }_>*Nefefef *e@ R > Z > Nfff &F) &~(\ >e w> %i} >xsn_V(%_V( >5  >eu- >5  >eu-_V(_V(_V(%  >_(_(%   _( >5  >eu- >5 # >eu-( 8 3 . _(G B = _(P N L _(w  N > 5 N > u-N  > wzw f 07Wp r  rWpu%-5 @@5 r5@@m 55 u @ ' 5l~( u- A upAmp~(5 @ 5@ ' ~(@m5` u-A r @ ' F)@mWp r  rWpf@@t 1F) ,N` >%u @ ' > u-* F) &~( >%@ '4@ &' %@ ' >%@ 5%@ '@ &' %@ '@ &' >e u-x%R& d &F)Z >e@ 5_p.@ ' 5~(@ ' 5F)@ -A C> L R am@@@m@ &'@ &'@ &! >eB@@@m@ &'@ &'@ &>!@ '@ &'x@ &a! >e@@@m@ &'H! >e u-_h-(%R&  ~( @F)@m&! >eu @ '  u-  1 *A*p*ww zw@ 5~(@ 5F)@ 5~(@ 5F)%5mB%m45&!55%#iAWp r  rWpu@ @m@5@@m@-@@5@@@& $ @m 1F)@@@& $ @m 1~(@ %2* @ %1*!@ %2*_^1!_^1AWp r  rWpu2 pF)AAWt r  rWp AuAAWt r  rWpAmBB @@ @m@@5NAAWp r  rWpN& $ @mx 1~(@ %2*!@ %2*! z@ ~(6 &F)@ &fff! >e@ ffffff" >em@ %2*@ 0 * @ A p**N wrw ^zw D" >%wFw 2 5w\ NffFW" >ehm%Zm5A A~(@p %60r  rWpuB r~(mm%m5@ 5~(@ 5F)@ 5~(@ 5F)@ 5F)AWp r  rWpu@ @m@5@@m@-@@5AAWt r  rWp AuAWp r  rWpuAAWt r  rWpAmBB @@ AA@`@5@@@& $ &fAAWp r  rWpN& %e@m8 1~(@@@& $ @m 1F)@ %2*@ %1* Nfq" >%@ %2*N" > Nff %@ %2*@ %1*Nf"Nf" >%Nff %Nf" >%Nfff" >e@ @mfffff" >e @ fffff# >e m@ %2* 0 *N N N w|w h+N l>7`-N l>7N l>7 fF# >%w w w> n4 ~(* &F)ffJ]# >e %4.5%@5ff# >ewww xfe  +Ne l>7`p-Ne l>7XNe l>7H 77X: 2|% *$ r r7 ww  A A~(Wp r e r%A A~(Wp r e r5wWpH r  rWp r~(  ~( &F)fz# >ej %2*\# > N|f %nff@ &F)&# >e Nf@ F) &$ >e 1*ww  r7 0 F)%Wp rWp r~(  1*A*p*%uN%%F% %>%%6 f7 %55' 77 7F7@>@m 45A(077 * *   * &* &~( &F)ff3% >eN_% >%wVNf ^: 7B <76%N% %w  1@  ^_= xJ$%2 N =@w%1N =p7 %2  N = %2 qe ,> %2t lp%2^ |@mȥ= =f ,> p7 ~%2  >@mjȥ>>-im%2 ls %2 "p7 AmAu p7 Amp7 %( Amp7 %*_:(7_:Amp7 Amp7 ~_>;v\7 lhf7 ^Z%221p7 @mf ,> .\7 $ f7 P7 %2215_:%2<\7 ^7 f7 \7 |7\7 ^7 j7 x2_:jf7_N;%2(Tj7_N;Fp7 <%2w *\7 |7 w w \7 f7 17 p7 \7 f7 P7 wP w < \7 (7 p7 vrp7 hw w D      + - ̥9 Wp @@`e̥0  w w x%fef I%5 w w r D Lԋwj w V D85U5_L@5P_L@  m @e4 ,5Ne & |F  uN F4USt%l%5x% C5% C5& & A% 45@e-4  % U5EU  w( E w  D  +   r= wB w5 a U5ff A%ށ̥a &  Ae 3     U̥r 33w D5"E@e44fef I% CU4 4  fef I%5 w w w7  ы A@PЋ w FD:5UE5Hw* _C5uNfe & H% _CbNe & |F  uN F)U5| m- 5 & H%St%x% H F U   & H% S U _JB @_NBw DE%%"5   & H% U wv w ^D55@ C  jD 3 H 4 4 4 4 4 ww~w  $l%5+ &5e-e %\& &     E ww  5f E 7 f E 7@wX@ mf7dl%Z%\&e w  D 6    E e-ww D l%5 e %\&w  5 e-w  D Eww  N Hww rDCDpC F 2F wZw FN HwJ ~5 & E        ~5>wlYwfw Net@f Fe  w6w.w  9U79U799Ae vB7   % 55 a  a!PE -T%9 w$ H `e vWt vw"@ `e @  H%e U? `e 79U? a7 ?U ew dDE wZw FD5 H 5N F!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%ݷm݇%w w7*'$!      7& A& BF7!W-jM7w 8uDAB %u f& & e w5 5  W- W00~u5  .lud&Bw* J@B |_vK@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& "B z   5 , @ :% & f E "B  (˥-%0     ,:% &  "B 8 5E& z   5 , @ :% & f E "B  w"<=4;:;:;:XYCE>DAB?@CE>DAB?@CE>DAB?@wxyz"5{WVNMiLKO97o\Q Z~vu[tsq|"]2r^_`a8$#%&'0"3( )*+h  -/.,!p$#%&'0"XY3( )*+wxyzXY  -/.,!$#%&'0"jkl( )*+  -/.,!$#%&'03( )*+  -/.,!$#%&'06( )*+P  -/.,!$#%&'0( )*+  -/.,!1FGHIJ}RSTU}bcdefgmn1111ooooo@oooo@oooooo@@@@oo$oo@@@@@b<`][aZYWV\GUmTSQPON0LJIHGFEDBA6  ! ""  )!$&'(%.{ -*,+  #"26745031{{{{{{/  }}}}}}}{{{{}}}}')MNOHIKJ2TUVWXYZ[\ ,QR?@789:;<=>E-./0L]^PAB3456"#+F%&( S!* $CD 1G ppp ,,4<HR^jt~ p$<LZlx<lrl|4 $*yacc stack overflowsyntax errorsyntax error. from: old ps %d, new ps %d, fflg %d . to: old ps %d, new ps %d @(#)diacrit.c 4.3 8/11/83FV*<f .nr 10 %du .if \n(ct>1 .nr 10 \n(10+\s%d.25m\s0 .nr %d \s%d.1m\s0 .if \n(ct>1 .nr %d \s%d.15m\s0 .ds %d \v'-.4m'\s%d\(->\s0\v'.4m' .ds %d \v'-.4m'\s%d\z\(<-\(->\s0\v'.4m' .ds %d ^ .ds %d ~ .ds %d \s%d\v'-.67m'.\v'.67m'\s0 .ds %d \s%d\v'-.67m'..\v'.67m\s0' .ds %d \s%d\v'.18m'\h'.05m'\l'\n(%du-.1m\(rn'\h'.05m'\v'-.18m'\s0 .ds %d \l'\n(%du\(ul' .nr %d 0 .nr 10 0-%d .nr %d 0 .as %d \h'-\n(%du-\n(%du/2u+\n(%du'\v'0-\n(10u'\*(%d\v'\n(10u'\h'-\n(%du+\n(%du/2u-\n(%du' . diacrit: %c over S%d, lf=%c, rf=%c, h=%d,b=%d @(#)eqnbox.c 4.2 8/11/83. e:eb: S%d <- S%d S%d; b=%d, h=%d \|.nr %d \w'\s%d\*(%d%s' .ds %d \h'|\n(97u-\n(%du'\*(%d .as %d "%s\*(%d @(#)font.c 4.3 8/11/83.ft %c . setfont %c %c . b:fb: S%d <- \f%c S%d \f%c b=%d,h=%d,lf=%c,rf=%c .ds %d \f%c\*(%d\f%c .ft %c .ds %d \*(%d\h'-\n(%du+%du'\*(%d . fat %d, sh=%d .ft %c @(#)fromto.c 4.3 8/11/83.nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .ds %d \v'%du'\h'\n(%du-\n(%du/2u'\s%d\*(%d\s%d\h'-\n(%du-\n(%du/2u'\v'%du'\ \h'\n(%du-\n(%du/2u'\*(%d\h'\n(%du-\n(%du/2u'\ \v'%du'\h'-\n(%du-\n(%du/2u'\s%d\*(%d\s%d\h'\n(%du-\n(%du/2u'\v'%du'\ . from to: S%d <- %d f %d t %d; h=%d b=%d @(#)funny.c 4.3 8/11/83\(*S\(cu\(ca\(*Pfunny type %d in funny.ds %d \s%d\v'.3m'\s+5%s\s-5\v'-.3m'\s%d . funny: S%d <- %s; h=%d b=%d @(#)glob.c 4.2 8/11/83 2@(#)integral.c 4.3 8/11/83.ds %d \h'-0.4m'\v'0.4m'\*(%d\v'-0.4m' .ds %d \v'-0.3m'\*(%d\v'0.3m' . integral: S%d; h=%d b=%d \(is.ds %d \s%d\v'.1m'\s+4%s\s-4\v'-.1m'\s%d @(#)io.c 4.4 9/3/83%s.nr 99 \n(.s .nr 98 \n(.f .nr %d \w'\*(%d' .nr MK %d .if %d>\n(.v .ne %du .rn %d 10 \*(10 .ps \n(99 .ft \n(98 .EN%sinput line too long: %.20s .nr 99 \n(.s .nr 98 \n(.f .rm %d .as %d "%s .as %d \*(%d .ps \n(99 .ft \n(98 .as %d "%s.ps \n(99 .ft \n(98 \*(%d . answer <- S%d, h=%d,b=%d .ds %d \x'0'\x'0-%du'\f%c\s%d\*(%d%s\s\n(99\f\n(98\|\x'%du'no eqn strings left.ps %d .nr %d \w'\s%d\*(%d' -.ft %c eqn fatal error: file %s, between lines %d and %d eqn: fatal error: file %s, between lines %d and %d @(#)lex.c 4.3 9/3/832-rcan't open file %spushback overflowquoted string %.20s... too longmissing " in %.20s. lex token = |%s| . found %s|=%s| . %s is not a keyword token %.20s... too longUnexpected end of input at %.20sUnterminated definition at %.20s. name %s defined as %s out of space in strsave on %sInclude not yet implementedBizarre delimiters at %.20s@(#)lookup.c 4.2 8/11/83>#B"FJOR V2Z6^7c0g1n4r3x5~ !$%)&'(./ &*)+.-2,7 < CJ NSX ]`ehmpux} !,3W\mq ").169>DIOTX]afinqv| &*47@CLOX\fjtx !,1<@JNX\fjtwsubsup.ENfromtosumhatvecdyaddotdotdotbartildeunderprodintintegralunioninterpilelpilecpilerpileoversqrtabovesizefontfatromanitalicboldleftrightdelimdefinetdefinendefinegsize.gsizegfontincludeupdownfwdbackmarklineupmatrixcollcolccolrcol>=\(>=<=\(<===\(==!=\(!=+-\(+-->\(-><-\(<-inf\(ifinfinity\(ifpartial\(pdhalf\f1\(12\fPprime\f1\(fm\fPdollar\f1$\fPnothingtimes\(mudel\(grgrad\(gr<<<\h'-.3m'<>>>\h'-.3m'>approx\v'-.2m'\z\(ap\v'.25m'\(ap\v'-.05m'cdot\v'-.3m'.\v'.3m'...\v'-.3m'\ .\ .\ .\ \v'.3m',...,,\ .\ .\ .\ ,\|alpha\(*abeta\(*bgamma\(*gGAMMA\(*Gdelta\(*dDELTA\(*Depsilon\(*eEPSILON\f1E\fPomega\(*wOMEGA\(*Wlambda\(*lLAMBDA\(*Lmu\(*mnu\(*ntheta\(*hTHETA\(*Hphi\(*fPHI\(*Fpi\(*pPI\(*Psigma\(*sSIGMA\(*Sxi\(*cXI\(*Czeta\(*ziota\(*ieta\(*ykappa\(*krho\(*rtau\(*tomicron\(*oupsilon\(*uUPSILON\(*Upsi\(*qPSI\(*Qchi\(*xand\f1and\fPfor\f1for\fPif\f1if\fPRe\f1Re\fPIm\f1Im\fPsin\f1sin\fPcos\f1cos\fPtan\f1tan\fPsec\f1sec\fPcsc\f1csc\fParc\f1arc\fPasin\f1asin\fPacos\f1acos\fPatan\f1atan\fPasec\f1asec\fPacsc\f1acsc\fPsinh\f1sinh\fPcoth\f1coth\fPtanh\f1tanh\fPcosh\f1cosh\fPlim\f1lim\fPlog\f1log\fPmax\f1max\fPmin\f1min\fPln\f1ln\fPexp\f1exp\fPdet\f1det\fPout of space in lookup@(#)mark.c 4.2 8/11/83.ds %d \k(97\*(%d . mark %d .ds %d \h'|\n(97u' . lineup %d @(#)matrix.c 4.2 8/11/83. %d column of S%d, rows=%d \ \ . colct=%d . row %d: b=%d, hb=%d . matrix S%d: r=%d, c=%d, h=%d, b=%d .ds %d "\*(%d%s @(#)move.c 4.3 8/11/83.ds %d \h'%s%du'\*(%d -\v'-%du'\*(%d\v'%du' \v'%du'\*(%d\v'-%du' . move %d dir %d amt %d; h=%d b=%d @(#)over.c 4.3 8/11/83. b:bob: S%d <- S%d over S%d; b=%d, h=%d .nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .nr %d \n(%d+\s%d.5m\s0 .ds %d \v'%du'\h'\n(%du-\n(%du/2u'\*(%d\ \h'-\n(%du-\n(%du/2u'\v'%du'\*(%d\ \h'-\n(%du-\n(%du/2u+.1m'\v'%du'\l'\n(%du-.2m'\h'.1m'\v'%du' @(#)paren.c 4.3 8/11/83.ds %d \|\v'%du'\(lf\(bv\(bv\(lf\(lc\(lc\(bv\(bv\b'\(lt\(bv\(lk\(bv\(lb'\(lt\(bv\(lb\(lc\(bv\(lf|||\v'%du'\*(%d\|\v'%du'\(rf\(bv\(bv\(rf\(rc\(rc\(bv\(bv\b'\(rt\(bv\(rk\(bv\(rb'\(rc\(bv\(rf\(rt\(bv\(rb|||\v'%du' . curly: h=%d b=%d n=%d v=%d l=%c, r=%c \b'%s%s%s'@(#)pile.c 4.3 8/11/83. S%d <- %c pile of: S%d;h=%d b=%d .nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .ds %d \v'%du'\h'%du*\n(%du'\ \v'%du'\*(%d\h'-\n(%du'\v'0-%du'\ \v'%du'\h'-\n(%du'\*(%d\v'0-%du'\ \v'%du'\h'\n(%du-\n(%du/2u'\*(%d\h'-\n(%du-\n(%du/2u'\v'0-%du'\ \v'%du'\h'%du*\n(%du' @(#)shift.c 4.3 8/11/83\|\|\|\|. b:b shift b: S%d <- S%d vert %d S%d vert %d; b=%d, h=%d .as %d \v'%du'\s-%d%s\*(%d\s+%d%s\v'%du' . shift: %d;ps=%d . shift2 s%d <- %d %d %d .ds %d \|\*(%d .as %d \| .ds %d \|\|\*(%d .ds %d \|\*(%d .nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .as %d \v'%du'\s%d\*(%d\h'-\n(%du'\v'%du'\ \s%d\*(%d\h'-\n(%du+\n(%du'\s%d\v'%du' @(#)size.c 4.2 8/11/83. setsize %s; ps = %d . b:sb: S%d <- \s%d S%d \s%d; b=%d, h=%d .ds %d \s%d\*(%d\s%d @(#)sqrt.c 4.3 8/11/83. sqrt: S%d <- S%d;b=%d, h=%d .as %d \| .ds %d \v'%du'\s%d\v'-.2m'\(sr\l'\n(%du\(rn'\v'.2m'\s%d\v'%du'\h'-\n(%du'\*(%d @(#)text.c 4.3 8/11/83;:===:=V<::=;:T;:;::::::::::::;:;============================:;::=======<===p==================:=;\ \|\tconverted token %.25s... too long. %dtext: S%d <- %s; b=%d,h=%d,lf=%c,rf=%c .ds %d "%s 999JdJoJxRKf`KeRJg,Kc8KsbJlbJLJuJDJOJXJU& E& "B z   5 , @ :% & f E "B  (˥-%0     ,:% &  "B 8 5E& z   5 , @ :% & f E "B  w"<=4;:;:;:XYCE>DAB?@CE>DAB?@CE>DAB?@wxyz"5bin/f77 755 0 12 32322 6024532071 5152 @- e7cce7^ /   7%  %w (_  E7  E7  E7  E7l , 7 ^@e  7jf\RHe7B e __@ȥ-_@_D  ̋__ , 7_ 7_ 7_ 7_ 7_ 7_   1 2 F a l m_6 6? ? ? _O I ?  A H_4 x_`7 Z_Z_NB* &A H& ! 1 _ew` _>_7 _24s? _ % - ?e_ l h \ X_ P L @ <__7% ?e}| r y _ _b _ _t _ _ _|  _ _ _  _\ _ _N _ _ _j  _0 __ _H__> e_p  *8?ten  F>?XeR5  u-_@ @m7r 5_:@ @m . _~De@ @m .5@ f \" Efex eNex  _~%eNetOfex eNe]fex eNex 5 l  Ne _~ @@ @m&@ @m& 7$  \ȕf@ @m  4@ @m z5 F eNe _~@ @m . #@ @m  @ @m z5 F  e_~@ @m . z_~@ @mn %@ @mL|sfex eNex "@ @m z5 F ~exZ@ @m F @ @m?TeNE@ @m& !  @ @m7 @ @m?e #" F_ c_* e_$ f_ o r_$ s_*_ :  2 $  w _Tw l nw F f.2fe. eNe. -6  x    d N 5    @  ww # (d Zfe e Ne wLdw 2_ N \N z5 -fe. eNe.  fe. eNe. J̕sNfe. eNe. ̕o2  V f`Jfe. e Ne. "  2  w_ w DCb Se 4 7 \5e N= %Ap :5 ,d  ZC  Lf  T$ w:w _ NV %5 5 0CI ˋ;˥< 5˥>> e55  5@ @a0Iˋ ˋI %i@ @a0 0DeZˋԔC2Ԕ 5D Jdf % V fhf % ,Ne0fe Ne0fe Ne0fe Nej  Nef  w6_ w t*Nef  %@pNN  y % N  w.w  _ N %ww * N  N  N  N  ww  ww C ,Ne P5@- %  ,5% NEf e @tww D&   #   %ww   %V@5  N #= ww l    wVw @Nef      w4w A                 *  ww tD   ̋ wfw PNN"f ew>w (D ̋ ̥.  ww D ̥̋/ ww D ̋  ww D  \ȕo .ww  N*  w|w fN % 5@K wN w 6DC 5  w w Nf  &  ww e- N& !  ww NYx e $   %wrw \Nffe %Ne wHdw .Nx ew w _5 55 5 5 5 5 5 7 fe eNe 5N    7   7   Nefe  _<Ne  _<Ne  _<Ne  _<@t5Nefe ! eA@@A f& h%Nefe ! 5 5 umumu uu  W- @  5Nff r%5u% Ned n NeN %u- u- u-u-A@@A f& l%uu W- Ne   N n_ @ ȕ 75* @," % p@ E \XE& ! B ! 4.@ & " @ E 2 EZ5: @,2& @ E  % @ E E& ! t r l@ EX  E& ! % A 5`u`u u- u- _A@@A f& \%A@@mAm@ f& r%5uD pB pD p @wl_w jZ 2      n  ff 0 ef& P e5u  ff euu      nww 8f f A @mAm@ ee@ f& ef& e5uA@@A f& %A@wHw .DF H B@ E. r% -e=  % @ E r% %  ww D_l @ E r @ El r%I% 7 4  < 6@ E" rI  && eee@ ee@ tww Dr l0F%b_F  7 Jww rD#f   %% ,&f ew6w  N"f %ww &0u  W-0u&f ff5f Few w NBf %w w  l%    V% &  wd  ;ew  w w ( DC+ 5 # a  r5 w: w U5ff |!%̥a &  !e 3     U̥r 33%w w 8 D Lԋw0 w  u@t5J5L@ 5Nefef % (3A@u5BtrL2J@ Aup fef % u-u-u-@wx w ` BuNefef ^)%=@@w4 &w w mn$lw e& 7 7gwT w  & f lew w0 w D85U5_5P_  m@e4 ,5Ne & 0&  uN t&4USt%J56V Z#52b Z#5& & !% 45@e-4  % U5EU  w| E w Z D R +   r= wB w< 5 a U5ff |!%ށ̥a &  !e 3     U̥r 33w rD5"E@e44fef ^)% Z#U4 4  fef ^)%5 w     6v&  @ppC`pw w7  ы A@PЋ w FD:5UE5Hw* _@#5uNfe & (% _@#bNe & 0&  uN t&)U5| m- 5 & (%St%V r <& U   & (% S U _! @_"w DE%%"5   & (% U wv w ^D55@ Z#  $ 3 ' 4 4 4 4 4 ww~w  $J5+ > &5e- e %: &     % ww  5f % 7f f % 7jwX@ m<7:J0%:e w       % e-ww D J5 e %:w  5 e-w # 6%ww  N (ww rDCDpC t& % wZw FN 'wJ ~5 & E        ~5>wlYwfw Net@f n&e  w6w.w  $ U7" U7$ " Ae vBp7 r  h%b 55 a  a!PE -*%"  w$ t( `e vWt vw@ `e @  t(%e U? `e 7" U? a7 ?|U ew dD\E wZw FD5 ' 5N t&!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%޷mއ%w w7*'$!     2 7(& A& BF7!W--7w 8uDAB %u f& & e w5 5  W- W00~u5  .luBBw* J@B |_*+@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& ! z   5 , @ :% & f E !  (˥-%0     ,:% &  ! 8 5E& z   5 , @ :% & f E !  w8msyb--c -V-u -V-x/Qet,8Xn   FORTRAN 77 DRIVER, VERSION 1.13.1+, 09 JUN 1995 -lU77-lF77-lI77-lm-lc/lib/f77pass1/lib/c1/bin/as/bin/ld/lib/crt0.o/lib/mcrt0.om4/bin/sha.out/tmp/fort-X-u_MAIN_bad option -T%c -O -ponetrip/lib/fc1invalid flag -I%c /lib/fmcrt0.o/lib/fcrt0.o%s %s >%sefl %s %s >%sratfor %s %s >%s%s: %s %s %s/bin/cc-oPASS1.%s %s %s %s %s %s Error. No assembly. compiler error. PASS2.%s %s - %s %s-V%s %s %s/lib/c2mv %s %scat %s %s >%s ASM.%s %s -o %s %s %sassembler error -oLOAD %s couldn't load %s %s /usr/bin/rawCannot load %sNo shell!%s: too largebad wait codef77 terminated. Core dumped. Executing %s. Signal returned was %d. rError: Cannot read file %s writing errorxsadSopzA%s%d.%scannot open intermediate file %sout of memoryCompiler error in file %s: %s Error in file %s: %s sort %s >%scall sort status = %dra .data%s: overlapping initializationsbad intermediate file formatinitialization out of bounds.byte %o%c%s . = .+30000. . = .+%ld. %s: ((((( AAAAAABBBBBB  . . V*d<*oH*x+f+e*g*c*s*l*L^*ub*D@*OL*Xt*U\Nffe %Ne wHdw .Nx ew w _5 55 5 5 5 5 5 7 fe eNe 5N    7   7   Nefe  _<Ne  _<Ne bin/find 755 0 12 63310 6024532107 5470 U( e7cce7J, / >)  7%  Mw 8Q % . H  M% @ 8 MX 2 b I 72 d H  Mww% r H  M57j%d mbȥ-"N mL& J6 m4& J  " @ -% @5  H  Mw-  H  MS 8  m J / 4  $ "%  H  M̕/ 7@ p ,6 N$ "% w-   J 7 R7 P  jd Fef& ,%e MwOw N > & J  @ & %wN- w N v n J  & %wN J  J ˥-   J -   w (N  H  M x . & J  "& %wM-  w M 0& J  5 t2& J_@_4& J & H  &   & T %_;& JC& JL& J & \P& J7  & v ’%+ V& J . \& J  ! &\ c& J  ! & j& J' ~5%p   ! & w H  Mf& J  L! & _,& J( 5%   ! &8 _, H  Mf& J  & _,& J  &p _,& J5 ˥- @t5@me5 ˋf _,& J.%d@%b`%c %f %l%s 5 f _,& J 5 z& J f _,& JT 5 B& J f6 _,& J)  7  H% M P7  P7 7  & & _,& J ,6  H% M   & :_,4 H% MwIw I%dR M H  M6 Wpq( Wpq Wpq Wp  e@w>Iw *I% e H  M-   7 wH m w HD  wH w HD  wH w xHD  wpHw VHD  wPHw ..3Cӕ/e J @ 7>N6f "% =  "%  H  MN 5 N ,59 "%=N< H%@_dw >DC̥.˥. w>&  w >DC55 E *< ?5 [B5 * - ] #  &  wZ>œu-  5P5@- ’   &  u-w =DCˋ  & ̋ w=w =DC '   t B 7fbZ Q%  7Few   ,wV=w B=LV H% xh H%Nef N @E%  M H% 8 5fe 6%Ne .J@a0 MN L  fe I   H N &Lw`J  ݀5E - ?%  ߤ& ߘ >J wX05 w 20 ~  z L  w$0 d 5 ff L% 50\  8 /w /  uN .J5&f %5/w/ 5   f J  0   w J/ p  @e5ff l%5/w/ ^ 5  w-R  Z   4 w .   I  &  9%7 w. J5f 8 7  w X. :#w^.w J. t  wL.w w ,. | v :7 n  j d &L7 \ w.w -wFw.w -  > 8 @ E w- T75% % / 6%  / 4/ ) 7 & ) 7  & )  &7 & )  &7 & ) 7 & )  '7n wl & )  '7\ wZ & ) 7B & ) 74  & ) 7& _#w , ' w,  7  |? ?55 ff De55 ' D/ ~ /& G%e/& G%e/& G%eD > 8 2 /& G%e7 w +  _&# J_&_&/5 & f I%5= '5u fff Ie5 #u 10f I%5000 :=0B N Lw*w *D      + - ̥9 Wp @@`e̥0  w*w z*D5 5      + -! ̥9 f& ff !eee@ ee@ 5u̥0 A@  w)A@w^):wT)w )fef Q%5 w) w )4De _J) t4 t t4 4t Ne&& 26% _J)t 4     6t-t- t-t- t- t- 55 eAePPPP 5 5 d) 55 Nefe F6% & > %5u7 & && 26%  fe F6%ff % fe& 26%wJ(A@E f& w (w&(w (D Lԋw (w 'DC  w'5 7v@  55@- 7 J5!w 'N 8. *w'w 'D el&&&&WpeXf WpeBf21 |4e21wB'w .'5 5  AaAE f&A@vUU5u %w&w &D w&̥/ 55 .J&f F e %Nfe J fe I fe I ԥ.̋De & 1 & I %fe0 I% L %,@e05e V*wNe$ V*wNe( V*w%r_* _*% v_*%2_*bWpfVWpemPe, _*@e\5 N V*f&tR1T1e -  @ E37 - *te85.N V*f&@.e@.A Ep@.A Ep - s8 -38 p7_* -` t-T8_* -D87j7dte85  e87@؃ -  _*@e87 w &$ Nefe 2w$7 AWp@7 7  f <3 8 J 877 w #7 7 7 7 8 J 877w#w #  3̋  *  *  2  w`#w L#  @55  w-w-  t 8 -  t5,R1 5,T1 - 7ue8&&fe Xe3 e8p|e83w"w "& f e^wn"w Z" 9Q@f& e5uQ@f& e5uumumu _/eeQu  %QQ eu % ff et ff De5u< ff et< ff eL A@e@ f& et e  =  r  rd > r 8 8 rd ( A 5 8u 4  A f&A@ 5u r  r   A @mAm@ 5u e4 tWpeu4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ttw!w.w De LN .J4ee b2  .J4e  Be v Nfe 6%w6w "-X@ wN *9 |4%*9w  fe 2@w @pHA@tw0w   3!,& 4   w 1&>9 3%7Q˕,>9Nf <3 w HD   !     +  we% - r<N r<&@&q>9 |4e>9 ~ ~w  Nef 4 ww zD 5  =<& 5% `5ȥ=  = @w,e  w  BuNefef Q%=@@wЋ Ћ   Ћ Ћ  Jҋ~ @@w XD L4 4  PwHw 4 f I %  LP N4 4 ww D 4-&4-!4 4   &e & I%4    wme   s lt  &wSwmownZ6lw e& 7 >76gw*BI I7>Iw  & f 6eww>yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_85P_8 & m@e4 ,5Ne & N  uN N4USt%5 K5 K5& & I% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff I%ށ̥a &  Ie 3     U̥r 33w 4$ N < w5 4@E%@EU5N&e J &e I Nf&e I%4 IN&e J &e I Nf&e I%  (Ne& N  ff eee@ 4t@t"4 4t L P_9w N L@ LN Pww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  A ve@ 4tw"w D55ff %f&& "eff&e e &e D 55 wwr9w5 5 w D5#5ff T %f&& eff&e *ew6&e E'44  && ef&& Ie&e & Q%%U w D5_=o5ff %f&& eff&e Ze L&e E8f f ff&e V e 744  && ef&& Ie&e & Q%%UUw @@m e%fe NN  &e D 55 3ff `%f&e@ &50c &e D 55 3 H U44  && ef&& Ie&e & Q%%&_=fffffe e _=&e % _=_=e_=  mm@ e@ f& ef&& Iefe& Q%%_= B_eC ff e5u4 t "-t t"  ff ef&& Ie&e$& I%%&e$ NN `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& Ie&e$& I%%&e$ NN `Btp$t t"  ff Nef&& Ie&e$& Q%%Uw w r D5#5 5 wLwH~9wX  @ a@ a@m5A a@5w  D 5# aB- f a@m& lG% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l~@Et5l5lu te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm G% a@ `` e w D a@@m e  w e  aAm HN@`@m &f G%  aN f`f G%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef Q% KU4 4  fef Q%5 w    6v&  @ppC`p   6@Cwzwtw D K & & Ie 4E05Ew7 Ћ P ы A@PЋ w FD:5UE5Hw* _K5uNfe & Q% _KbNe & N  uN N)U5| m- 5 & Q%St%  N U   & Q% S U _fJ @_jJw DE%%"5   & Q% U wv w ^D55@ K  L 3 P 4 4 4 4 4 ww~w  $5+ 6 &5e-e % &     N ww  5f N 7v f N 7xwX@ mL7J@%e w  *     N e-ww D 5 e %w  5 e-w &L Mww  N Qww rDCDpC N NN wZw FN PwJ ~5 & E        ~5>wlYwfw Net@f Ne  w6w.w  9U79U799Ae vB7   x%r 55 a  a!PE -:%9 w$ P `e vWt vw@ `e @  P%e U? `e 79U? a7 ?U ew dDlE wZw FD5 P 5N N!w5A vBB-  }ee@ !ۃ `!ւ ` `m̿& E%m%w w7*'$!     @ 76& A&& BF7!W-U7w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_S@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& >J z   5 , @ :% & f E >J  (˥-%0     ,:% &  >J 8 5E& z   5 , @ :% & f E >J  w 4FsstUsage: find name, or find path-list predicate-list .Can't open . Usage: find path-list predicate-list (!find: parsing error find: missing conjunction /find: bad starting directory TRAILER!!!%D blocks -o-a(!-ofind: operand follows operand !()-print-nouser-nogroup-ls-xdev-name-mtime-atime-user[0-9]*find: cannot find -user name -inum-group[0-9]*find: cannot find -group name -size-links-perm-type-exec;-ok;-cpiofind: cannot create < %s > -newerfind: cannot access < %s > find: bad option < %s > find: Too many options find: incomplete statement < %s ... %s > ? ./TRAILER!!!find: cannot copy < %s > ;{}find: Can't forkfind: Can't execute rfind: bad status < %s > .find: cannot open < %s > find: bad directory tree ..find: bad directory <%s> find: errno: %d, find: can't %s write outputread inputIf you want to go on, type device/file name %s when ready/dev/ttyrThat didn't work/usr/lib/find/find.codesrfind: can't open %s /usr/lib/find/find.codes*??*[]]*?%-9.9s%-9d%-9.9s%-9d%3d,%4d%8ld%-7.7s %-4.4s%-12.12s%5u %4ld %s %2d %s%s%s %s %s%s%s -> /bin/shPATH:/bin:/usr/binsh/etc/grouprr/etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwdSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecmn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT: Unknown error: %d"<N`p| ,=Qe  2 L j  ( J h  : S m . A N b v   2 L _ x RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator!)-,15h9=AEIMQU]aei mTZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d=951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired 999RdRoRxnSf|SenRgHScTSs~Rl~RLRuRDRORXRUe & Q%%&_=fffffe e _=&e % _=_=e_=  mm@ e@ f& ef&& Iefe& Q%%_= B_(@7Nefe % Nefe % 7 7 Nefefe % @e55_RA_R7_R%_Rx@7e _R_R_RNefe~ % _R f_RNefeR % _RNefeN % _RNefez % _R _  _  Nefe2 %_R _| _ _  Nefe^ _  _ _H _B __wV+w B+D%@l eNf&e % Nf&e % Nf&e % w*w *D % 0-A.5%+ @ #= ewT*w @* % ]77\\ Wp NF . 5976 66Wp `N J *"Wp meN J Wp m   Wp m1 w)7wwWp m %L@w d)0 ?@e2P~2^P~^AeP~ Wp mFIuWp m6q@Wp m& Wp muq -w(w ( @m  .  w(7 mȜ C-@w (5 & fe5 55 & 6e5 wf(w R(5 & 6e5 55 & e5 w6(w "(D Wp AmIBWp AmIt Wp AmIBWp AmIt -w'w 'D45t45put5  t@_ | _ @55n5l555t55p5t55p5n5uln5l#55pA5p5tA5t5p@5p5t%O5tKJ5putC&5t&flfn e&@eP~54545&4(4(54fex  %J5l5n455t55p5p&5t&flfn e&@eP~554554545&4(4(5u4w%w %@ B&555@5u555@ B&55 B5@ B&555 555 55555C> 5A5A 5A5A&55 5AuA 5AuA&555555DAeP~Dwr$w ^$$55555u5@55 B&555u B&55 B&555 Bu5&555&555AuA&55AuA&55 5 5&5& e5 5 5&5& e5  u5_ 5u5_ 5555TAeP~Tw"w "DN& 6  `^54& e&4& e&4 u@45tw4$ t t$4&4& et&4$@4 w"w "h _ e      2fe  5 C%` @a& @a& e%4(m" @a&| @a& eh @a&Z @a& e D-^fe  5 C% @a @a& e%( @amt @a& e @a @a&> e D-w| w h D5 %K H4:5&fef e 4tC5A&fef e 5A&fef e  B&55t@w5 45%$&5At& e55&4uWA& euWA%5&4uWA& e55&5At& euWA55 5& ett A Am 4& e&55u_w @0750755& eAqq A  Am wrw ^5 *$ ( :5 +Ne2AWp mTIf e Ne^AWp m.qf e 5 - :w  Nf Nf  AWp mNff %@ 5@w zD 4(5& ett  5$ 5 u & 5 u  w.}w N f % ww  f %*& %  f +"  x^& % w f Ne f % (w <   Nf  w$Nf  ,Nm4 nNf    @Pw e ֝> n n X T2x   n^y  wtw `2@0q(&@&@%@0q(&fe PeNe nw w  ~'  +ww  )ww  )ww  R nL D @5>0 -0n?"% & n ( N fN fw^w J e 5 -e?% & ߠe ( ww  tz r n5l^ -^t?P% & >t ( 5 D5(g -a ? % S Z@@m? ! -/@@m? %  ߶ & ߦ ( @@mȋ   Ā5@@m E&& T ( ww  6 l0 ( $5" -l?% & l ( N fN fN fN fw2w  f ߦ 5 -f?% & rf ( 5 D5\gN -Na ?@% S 2 .Z@@m?  ! -/@@m? %  & ( @@mȋ 쳁  Ā5@@m E&& ߈ ( ww  j md \ X5VH -Hm?:% & (m ( N fN fwvw b p 5 -p?% & ߸p ( N fN fww   | x!5vh -h@?Z% & H @& ( . @t? )5 - @t?%  & @& ( w6w " s ߬ 5 -s?% & xs ( N fN fN fN fww "5!r7wNe5& Ve5 5A5@ 5@557Z A55@ 55uW@557@57057 575W@uw0uw uw55uw5w 5& e@7ww 5 55Ne& 2e555@555 Ne5& 2e5w<w (5& ew"E66> w Nef %ww Neff %ww D A555  ԋuNeffe %ww pDC 5 5 _*%%_L5 %*e5  AWp `eu 0u%l5  %h%[ "e  _Neffff e   * O  A@ EN .&5% % % %Nf % &    %_ A@ E%Nf % @wN .&5 w N%c%s%[Nf ff f& !ew5 5 5 5 %e%f %o%xDe5 5 A @ EN .&% % % %- Ԑ A @ EN .& _ %+_  _ %a%f %A_ %F_ % A@vN .&O% A@v@mAm@ vA@v5u0 %a%fW7 5`u`u C% S P Ԑ A @ E =%%.%e%E- *% ' $ ! Ԑ A @ EN .&%+%-%0%9 A@  5u% N  % =   @e! @e! _@t@]   xNe #A _Ne #A @H@pHw DC = 5%c%0u5 %s    .&%r%c5 %[r      .&%%   % =  D- %cw w D ̥^   % %]%-+  $%-̥]4   ̠   %]  w w D*\5% %-%+ 5 55 55  B5eA5 %.55  B5eA5  %E%e$%+%-  Wp B`e  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& ^%e5 55w 6 m 7l"w D Lԋw w BuNefef 0%=@@w w z D% 5     |@wL 4- w * D85U5_h'5P_h' x mn@e4 ,5Ne & l,  uN ,4USt%5 )5 )5& & '% 45@e-4  % U5EU  wE w D5"E@e44fef 0% )U4 4  fef 0%5 wt wЋ w FD:5UE5Hw* _|)5uNfe & .% _|)bNe & l,  uN ,)U5| m- 5 & .%St%  x, U   & .% S U _:( @_>(w DE%%"5   & .% U wv w ^D55@ )  Z* 3 - 4 4 4 4 4 ww~w  $5+ &5e-e % &     + ww  5f + 7 f + 7wX@ mZ7XN%e w  8 *    + e-ww D 5 e %w  5 e-w ) r+ww  N .ww rDCDpC , ", wZw FN -wJ ~5 & E        ~5>wlYwfw Net@f ,e  w6w.w  ~U7|U7~|Ae vB7   % 55 a  a!PE -H%| w$ . `e vWt vw@ `e @  .%e U? `e 7|U?ٔ a7 ٦?U ew dDzE wZw FD5 - 5N ,!w5A vBB-  }ee@ !ۃ `!ւ ` `m$& E%׷mׇ%w w7\*'$!      7& A~& BF7!`W-\77L& & e Ӌ  &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~&7 & Ze ӕ-0 ӕ. B~ӕe~ ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_\2@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff Je w5  @ 0   Wp `e06@~ w DCB P  5 , :% & E& ( z   5 , @ :% & f E (  (˥-%0     ,:% &  ( 8 5E& z   5 , @ :% & f E (  ww Nefef 5& 5e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& 5eww  fff 5& 5eww | 5 %O N  = 555Ne5& 2e555'0Ne5 B& 2e57 Be0" 5%55 5 B5@B e a=%7w %5 B5Ne& 2e55e0%7`Jʕ0%ʕ1  %˕0 ʥ9 @(#)graph.c 4.2 3/30/832xX@ T@vX9disconnectedsoliddotteddotdashedshortdashedlongdashed%f%1s%s%[^" ]%["] %g -%s%c- %glog graph: error in arguments @(#)close.c 4.1 (Berkeley) 6/27/83@(#)cont.c 4.1 (Berkeley) 6/27/83@(#)erase.c 4.1 (Berkeley) 6/27/83@(#)label.c 4.1 (Berkeley) 6/27/83@(#)line.c 4.1 (Berkeley) 6/27/83@(#)linmod.c 4.1 (Berkeley) 6/27/83@(#)move.c 4.1 (Berkeley) 6/27/83@(#)point.c 4.1 (Berkeley) 6/27/83@(#)putsi.c 4.1 (Berkeley) 6/27/83@(#)space.c 4.1 (Berkeley) 6/27/831@rzA]ݬ5@3dlB##3h?ØGf@lB,l$d!r!!!!!!!!!!!!!!!!!!! ((((( AAAAAABBBBBB d1dn1oz1x82fF2e81g2c2sH1lH1L1u1Dr1O~1X1U=(\f e   * O  A@ bin/learn 755 0 12 72520 6024532242 5654 @Y` e7cce7t$ / 3  7%  Mw P`5 I^ J?e<%_dd :H  RKE0"'%:fefe J?eNefe I % ; f N Nffe % Ne *@e5 Ne,fe 5Ne, 5% Nfe I Ne,fe 5Ne, 5 H Ne Ife P%r P% < Ne h7~ < 8_Ne$ :H%Ne2 I_@ _ x$  N :H%N2 I wN _ qN 4_ #5u 4 &I/ RK ff Z%_r   -!@?% &  I ` v#5% Ӏ5 @ݤ& _2f I 7_ _2f I_ _ _ 5 f RG 5Nf N_N K_N D7_Nfe J?eNef b_ P7 JP_d7 l <*T,N I _d RG 7_ K7 _ \ 7_ @7 _ 7_ L XEx_ l_dNeX :H%Ne_Zpt (ep*  (%   RK_7 <_d (, _F  G J?eQ f RG 5_Ne b=Ne 350 glfSf :He N_w 2K  Dq 0$  RKNdf E% wK w J   =wJw J _%_"%#_  A@ EN F5% _%_8 ?  A@ ȕ#3@5&@ A@,@#% A@ EN@E&N# I % ` A  A@ H5@5&@ A@,@x% A@ EN@E&NfE I %   A@ EN F5%_d  A@ EN F5%#_X%#Nf D N RKwHw Hu = u = N '5tf RG 5vf RG 5  w8H5 3A@ E0N F55 N KN K@%  %% ʀN F5 ˁA@ Ew G % % } @ 5=    @wHG w 0G D> K7 6 6 0 L XE X7 R @ K7 8wFw Fd *_ 7   ~fe J?efe RG 7Ne ;Ne :H% & L_  L X T  e |b r_h& L,& Lx XE F 7L< 0%* ( : (@ < _H  (U (_H n7  (  ( RK   wlE ( RKNe $yfe I w E"vX"fe J?efe ;FwD8̥. ̥0̥95 ̋ J fe I ̥0̥9 ̥.  xI |fe J?efe ; fe (%NeQ ( Ne t'  6N Lf n' N0ife J?e fe Ae  w AN  p>t e7r%d  :H  Lp@ A H%2"  :H z w@w ~@N    vwplwd@w P@N Iw@@e8te- w @|  vf& (ee\te-L߇w?w ?Ne t' " .N L LN !N L urj w @>  RK L ! LNe XEw >w >Nfe J?%tfe J?  Z, 02"PE& B% W 2"efe J?ee % lN7z I Ne I  lN7ZNeP I Ne I  lN76Ne, I  0 2"2"~w=& B%  2"fe J?%& B%  w <xD, r y@x          x ̋%x@x  xH     N w<fe I Nfe xI NeNfe I Ne|fe  5zD|& I& I& I& I $  < @z @a0 |Ne|& "  ;Ne| :H% MNev XE@vw ; <  <  X 5  <   <  f+' 5o4$ J?%4$ RG 5]Ne>fe@fehf <)eN KhE@B >?% Neh I%.Neh"%7& I Ne@$7& I w> (%  (% t<X ({ 4 ( ( ( ( RK"%72 $(1 47 ( RK"%7 $  7 <I (t ( ( ( (, (a ( RK$ $  $ I _~$  !  ;  :H  M % $7H& J?%< fe J?%Ne  !  ;Ne  :H% M fe $e& ;p fe J?e  ! ( w:6w &6f ; N1 (  Mw 6w 5JDe5 N C5 N ;   N DN C@ew5w 5. 87  l7  _0 _0 " ( RKJ% $ J% I J% 7z_0 5 dFpR fe J?e fe RG 5Ne ;2  :H% Nfe E% Ne * fe I@5 ( RK7  5 @ @aeAWpAaef feX X)e NPfeX E%  8  5ru5 :AAm 5ruWpAaeN  % u @ @a 4&@ @a& %u u-   |% I _  (I ( RK7 ~"AWpAaeNJ% I % xb|% I J%@N Kw2w 2 @w2@ w 2Ne b=,Wp $Amu@Ew2w 2De C5H+ ; " 5@m.@mc5%a%ze DNH DNH C v*NN feJ J?efeJ ;NeJ ;N  :H% w1w 1f ! 5 f I 5$ Nfef P%fef I%5N LN LwN1w :1  z (  RKr I S ZN (  ( RK0> I 7 (7 7 1   I %   7 7  6 (  RKwn0w Z0  < x !  I <   L{ I   5/f B@Nevf& #%@ 6   w.v@ev5xt%t t@t @aAt AmpxNev ^#  %ч <2Nfev ^#      w -DCB̥:̋ ҕ/Ҕˋ ̋ w- 8 ;ew&-  @ wt" w,w v-D  5 & & hIe5u A@w<-5 5 5@ 5`u`u w ,DC E5<E@e33. @;E  5 , @;% & fE I 5  RKU3 3  w6,      SW ~#r`J   w +DE5_&% _b& _b&5`uu '& & hIe5u%%w@+ @A 5`u`u  5u 5  5 u  5 u tmL CE 54E N  A@ f& & hIe5u %%    F%%%_%5 RK5 5 E4N ff & hIe W _%%_T&%_T&_%Zw&)*J w)w )D      + - ̥9 Wp @@`e̥0  wB)w *)  3  I  Wp,f&  hIe,% I%%, L LR Y%ҥ "%w(w (D  %7 - # s 3  33 a r w wh(+& f hIew (fef LR%5 w ( w 'Nef )%w'w 'Neff )%w'w 'D A555  ԋuNeffe )%w'w r'DC 5 5 _*%%_+5 %*e5  AWp `eu 0u%l5  %h%[ /e  _:+Neffff P+e   * O  A@ EN F5% % % %Nf D &    %_) A@ E%Nf D @w%N F5 w %N%c%s%[Nf ff f& .ew%5 5 5 5 %e%f %o%xDe5 5 A @ EN F% % % %- Ԑ A @ EN F _T-%+_T-  _@-%a%f %A_h-%F_h- % A@vN FO% A@v@mAm@ vA@v5u0 %a%fW7 5`u`u C% S P Ԑ A @ E =%%.%e%E- *% ' $ ! Ԑ A @ EN F%+%-%0%9 A@  5u% N  D =   @e! @e! _+@t@]   x"Ne J0A _+Ne J0A @H@pHw "DC = 5%c%0u5 %s    F%r"%c5 %[r"      F%%   D =  D- %cw! w !D ̥^  """ % %]%-+ " $%-̥]4  " ̠ " "" %]  w w D*\5% %-%+ 5 55 55  B5eA5 %.55  B5eA5  %E%e$%+%-  Wp B`e  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& 2e5 55w6 m 7"^w 4De _3 t4 t t4 4t Ne&& E% _3t 4     6t-t- t-t- t- t- 55 eAePPPP 5 5 3 55 Nefe E% & %5u7 \ && E% L fe E%ff % fe& E%wA@E f& Rw Vw\w HD Lԋw@w ,N 28 3w*w D el&&&&Wpeff WpePf% J?e%ww 5 5  AaAE f&A@vUU5u %ww |D wr̥/ 55 I&f  e %Nfe I fe xI fe xI ԥ.̋De & ; & I %fe0 I% L %,@e05e P4wDNe$ P4w6Ne( P4w(%r_4 _4% _4%2_4WpfWpeme, _4@e\5 N P4f&t%%e - @ E3+ - *te-5.N P4f&@.e@.A Ep@.A Ep -( sj- -3j- +_4 - t- -_4 -j-7~7xte-5  ej-7Tك - _4@ej-74w  Nefe =w7 ZAWp@7 7  f > j- I j-77 w V7 7 P7 N7 Nj- I j-77w8w $ >̋  4  4  2  ww  ` @55 w-w-z  t - -\  t5,% 5,% -2 ܧ+ue-&&fe Xe3 ej-pej-3w,w & f e rww  -Q@f& ne5uQ@f& te5uumumu _9eeQu  %QQ eu % ff et ff e5u< ff et< ff eL A@e@ f& et e  =  r  rd > r 8 8 rd ( A 5 8u 4  A f&A@ 5u r  r   A @mAm@ 5u e4 tWpeu4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ttwX!ww >De LN I4ee \<  I4e Be v Nfe zE%ww -l@ ,wN- J?%-e& ;eww ju@t5-5-@ 5L.Nefef E% (3A@u5Btr-2-@ AupL. fef E% u-u-u-@ww  fe =@w @pHA@tww l >!,& B   wR 1&. >%7˕,.Nf > w D  !     +  we% - r<N r<&@&. J?e. ~ ~w V Nef > wPw <D 5  =& B% `5ȥ= r = @we  w  BuNefef LR%=@@ww   C C  C wp/ B  ,5   & I 6@ ,w   RG 7|v &Iww  f` K7 Xww D 5 %" 5x@ #w%̥\" %%# % % % % % %  w @D=& B  w6 w   RG 7 _Bv. E% % % %  %#7f7d B@7Z B@7P B@7 F7 D_XB& B% % % % UK % % N& B% % % % E(& B% % % % U& B%  @7x B@̋#\̥#7\̋7 T & B  /wЋ Ћ   Ћ Ћ  Jҋ~ @@w hN 4N HNef (N?@E% 8 C2 D*L-/ I e/ xI Ne/ Du-u- C/w  C w l D L4 4  Ow\ w H  f I %  LP lN4 4 w w  D 4-&4-!4 4   &e & I%4    w me   s lt  &w w f D% 5     |@w8 4-  w Sw mow n,Elwr e& 7 f7^gwD w  & f tEew w yw &  4  b '     ` TW ~  s`K6!  w  D85U5_e % &     M ww  5f M 7P f M 7wX@ m&7$%e w       M e-ww D 5 e %w  5 e-w K .Mww  N Pww rDCDpC lN M wZw FN OwJ ~5 & E        ~5>wlYwfw Net@f fNe  w6w.w  0U70U7x0v0nAe vBZ7 \  R%L 55 a  a!PE -%0 w$ lP `e vWt vw@ `e @  lP%e U? `e 70U? a7x pr?jfU ew dDFE wZw FD5 O 5N lN!w5A vBB-  }ee@ !ۃ `!ւ ` `m6& E%(˷m"ˇ%w w7*'$!      7& A& BF7!rW-Y7^& & e Ӌ  &7(& e ӕ-ӕ0B~ӕ.  ӕ0~ B~&7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_T@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& I z   5 , @ :% & f E I  (˥-%0     ,:% &  I 8 5E& z   5 , @ :% & f E I  w&w Nefef 5& @We C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& Weww  fff 5& Weww  5 %O N  = 0555Ne5& Ye5`055'0Ne5 B& Ye57 Be0" 5%`055 5 B5@B e0 a=%070w %`05 B5Ne& Ye55e0%`07`Jʕ0%0ʕ1  %0˕0 ʥ9 6@~ @(#)copy.c 4.3 (Berkeley) 5/15/868h^tv*B2<  V2b%s/%sType "bye" if you want to leave learn. %s %s w%s/L%s.%s.copyw%s You are in lesson %s of "%s" with a speed rating of %d. You have completed %d out of a possible %d lessons. cd not allowed You are already in learn. %s/log/%sa%s L%-6s %s %2d %s failpass% rr@(#)dounit.c 4.2 (Berkeley) 4/25/83%s/%s/L%srDounit: no lesson %s. Sorry, that's %snot right. Do you want to try again? still Try the problem again. [ Whenever you want to re-read the lesson, type "again". You can always leave learn by typing "bye". ] bye OK. That was lesson %s. Skipping to next lesson. Please type yes, no or bye: @(#)getlesson.c 4.2 (Berkeley) 4/26/83%s/%s/L%s.1a%s/%s/L%sThere is no lesson %s; trying lesson %s instead. There is no lesson %s. cd %s/%s ; fgrep '%s' L?.* L??.* L???.*/bin/cshcsh-cf/bin/cshGetlesson: can't do %s r%s/%s/L%sTrying lesson %s. There is no lesson containing "%s". @(#)learn.c 4.4 (Berkeley) 5/15/868/usr/lib/learn Interrupt. Want to go on? @(#)list.c 4.2 (Berkeley) 4/25/83r@(#)mem.c 4.3 (Berkeley) 5/15/86.4;BJT]hnv     readyanswer#print#copyin#uncopyin#copyout#uncopyout#pipe#unpipe#succeed#failbyechdircdlearn#logyesnoagain#mv#user#nextskipwhere#match#bad#create#cmphint#once#Setdid: too many lessons Setdid: lesson names too long %3d lesson %7s sequence %3d @(#)makpipe.c 4.3 (Berkeley) 5/15/86/bin/shsh-i/usr/ucb/bin/shsh-iExec error @(#)maktee.c 4.2 (Berkeley) 4/25/83%s/bin/lrnteelrnteeMaktee: lrntee exec failed dupMaktee: error making tee for copyout @(#)mysys.c 4.5 (Berkeley) 5/15/86H PATH=%s/bin:/usr/cc/bin:/usr/ucb/bin:EXINIT=set prompt noopt open window=23stty oldPATH=PATH=%s/bin:%sEXINIT=%s|set prompt noopt open window=23PS1=PS1=% exec mvcprmlsMysys: execv failed on %s /bin/cshcsh-cf@(#)selsub.c 4.3 (Berkeley) 5/15/86Selsub: couldn't cd to non-standard directory -0HOME%s/.learnrcr%s %s %d[ Taking up where you left off last time: learn %s %s. %s "rm $HOME/.learnrc", and re-enter with "learn %s". ] To start this sequence over leave learn by typing "bye", thenThese are the available courses - LinfoIf you want more information about the courses, or if you have never used 'learn' before, press RETURN; otherwise type the name of the course you want, followed by RETURN. Xinfo Which subject? If you were in the middle of this subject and want to start where you left off, type the last lesson number the computer printed. If you don't know the number, type in a word you think might appear in the lesson you want, and I will look for the first lesson containing it. To start at the beginning, just hit RETURN. 0/tmp/tmpSelsub: couldn't cd to public directory pl%damkdir %sSelsub: couldn't make play directory with %s. Bye. %s/%s/Init%s/%s/Init %sLeaving learn. Sorry, there is no subject or lesson named %s. Bye. @(#)selunit.c 4.3 (Berkeley) 5/15/86What lesson? bye%s/%s/L%srSelunit: no script for lesson %s. #nextCongratulations; you have finished this sequence. %s %dSorry, there are no alternative lessons at this stage. See someone for help. @(#)start.c 4.5 (Berkeley) 5/15/86.Start: play directory%s/%s/L%sStart: no lesson %s @(#)whatnow.c 4.2 (Berkeley) 4/25/83 OK. That was lesson %s. OK. That was lesson %s. Skipping to next lesson. Good. That was lesson %s. @(#)wrapup.c 4.3 (Berkeley) 5/15/86../dev/tty/bin/sttysttynew/bin/rmrm-rf/usr/bin/rmrm-rfbin/rmWrapup: can't find 'rm' command. w%s %s %d Bye. /bin/shPATH:/bin:/usr/binsh/etc/utmpx.x..^.^.^.^.^.^.^.^.^.^.^.^.^.N.N.f.SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecmn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT: Unknown error: %d&0J\n~ +:K_s*@Zx6Xv'Ha{<O\p*@ZmRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator#+/7;,?ChGKOSW[_ckosw {TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d/etc/ttysrronoffsecurewindow=/dev/ ((((( AAAAAABBBBBB /`0`0DSd*So6SxSfTeRgScSsSlSLLSuPSD.SO:SXbSU=(\5 e %w  5 e-w K .Mww  N Pww rDCDpC lN M wZw FN OwJ bin/lex 755 0 12 76032 6024532254 5350 @` e7cce7&& / `Q  7%  Xw [j@-h U@a r yTB"D7 <"A7 >7 ;  / ! " &@a      'd  $ &" @aȋ e%ww% !! @m& @S 7t! Th! d!%@ @ B) X!  J!>! x 7`:!,!0    X  R $M >@  8/ x1 J * L>%  @S 7 U  @?~ @ EE 45% @,@8% @ EtpE&`&E T N@   Q% V" V%@ L V V XwYw X  77  7!7!(  7t(  7d  7T7Z  7@d  7074 *        @wFXw 2X( X%( X% X%wXw W  7  7  7  7  7  7n  7^*  76  7&b  77             @  m -wVw V X%x  X%d z X%B X%2 X%" X%| X%j X%T X% X%d X% X%wVw U  7  7e  7   ? @wUw UNf X a wU% w jUN  m&{ (TewFUw 2U%,_> % _T_^ # r y N  (T ! (T% j6 (T Wp Be  a @& X%  7"  7t  7b  7P  7       @w T  7%_> _> ̋     7%_> ̋     7%_> ̋     7%_> ̋   %ld  7R_> ̋   %<4. X%  7  77_>  0 & -\& Z& S  5-N  <  ̋    5"Ne  & ^    p&     @`0 -  &@a % & @@m p&@@m % _> 7_> 4 &  7 d (T%  ̥%_> ; @  I &  ̋ _> M &  ̋5 Q &  ̋̋5  fU  (T fX  (Tenf   mLR m> %f @2 x 7`(ed- @ _ _ R _L _   _>  _v _ e Q7%% @d _\  _, D ? _ _ ̋_,  _,  _L _   _  _v _   r  @%r_ _ P  (T% _^% >     % r y   ̋̋7  7R b    _(*   ̋̋ P&&  P& &% _T7 %7 @_(%  | _T% _T n N@b Te0u   (T% ,  & % z (T % % j% b%v- _T% B_,%{:%  _T  _T _ _T b  (T%%%_,  ~_ j _J|_% % % %|%/_,_% t%J_,P&   2P&P&  7"c *. _ %}P&  2P&P& #  P&t  _T ms *.% _, P&  # %> P& D%,2P& _,@P& # ہ ?t p %>?b ^u-u-wBu% 6 @w_Nf T@ ȋ %"% %\  "P& % %  B  62P&  _% 7`_P&P_ _%\  "# %-_%],_ %\  " uu%A%Z%a%z %0%9 @ 5@# u-_P&  -@-:7R.J(P&  P& x 7` e- @%  !_ 2P&_^_ _ _  _ _Z n7 _ _ _ _ X2# % B%^ 0%]_ 5 @#2P& %2P& l__ _: _ _ _   " 7 %0%9O . _ P&P&  . _%?%*%+  P&c *. 2P&%__ _ _    _X _ _: _8 _ _ %  % % _v _fe0u f  (T% p _ 9  `  ,  (T%   _(w F6 27 07 .Be%e@e 0 whFe6 5 %,  77 m%#@ 5 -C   r5%, r 7h7 be%@ e -2@5  H C xD  %  e5%#  %@ _ 5 @e ֆ_ __@  D@  5@7 u@ 5@ ~b 5%#   A p @ ~ @ _ x  6 _ &   m   x 7`  &   m  %( Q @ x 7`  e- f @ mt  mh AH_ _& +%7n _7f _% x , 7@ & +%7* 7 N_ -7    -7      +%7 <    # %   # n j % ?Z V P e-J { @V b ^  , 7F  !_ , _&_&_    , 7 & +%7   +%7 & +%7  :_4- 7p 4f  _7L H  .6  +%7( & 7-  7 + .7   .  +%7 -    +%7 7-  _   _7   .r  +%7d b 7-\   _ _%_7$   .  +%7 7- . , 7_"&__ -7 `  , 7& +%7xx_`l&_d7X_w f?C%     wN? > :w *?@   w? w ?%0%9 w>w >~  mb&   (TeNff (Te @ ȕ 35&z t@,@ % V@ EB>E&. T %D 1 Xw>w >  m&   (TeNff (Te @ ȕ 35& @,@ % x@ Ed`E&P T B bV8 bV bVw8=w $= @a@-w= @aȋw <%a%z %A%Z w<w <% % w<w < @78  (rc fe Q% fe @S 7\ XNe @  8 (T ,w:::74%0 *& @ E Q7%=%v9 V ~z mV& @S 7d 7 P^ m: @ D >@ E* Q7 %  V wh0%  w F0 mH mH mH m m@ L x@ @ mA H@mȋ@mȋzmxȕ@ mfA m\\AHP@mȋD@mȋ@ m..(m& AmH-z %pշ  @  wF/w 2/ mH mH m m@  xV N x mȕ-Ԋ %   @ n jw. ZmXȕ@ mFF>m<6AmHw p.( mH m  m % @ mȕ-H%>  @  w.w -%cӷ w% @w-%sӷ @7N x @`?ӷ %w -@ m2%< -6 xv @ m& , (@ m .@ m @ m .@ m& && +%w- ƒ w , @ m% r yN ` -n7 N 1Nt K % @ m: 8/w,%%% 3# %@ m5 @% p# # @`Ȭ# @`-@`-# %? m-~ @@ mbH@ mR@ mD 8/@ m6_/ I_d/ J K L_/ M_/_/ _d/ I_d/ K_/ L_/ H_d/ I_/ J_d/ K_/ L_/w *@ @m aȥ - m %  @ w*w *D @- @ m. m  xT(aȋ aȕwL*N 22 1 mH- mmȋ 1 m 22w )@ m% r yl r @ mjˋ_\3!N@ mL 22@ m<m<ȋ"X % &5Q A %> &H $7 %4 &?@ m 22@ m 22. $ % &% r%@ m $ % &@mȋ @mȕw( $_\2 % &w ( @ (T  (T Ύ x (T%d (T  (a -7   22  21 %  r-0  _,65 ` m = 4# % m5 m @`5@ mT%-@ mD# D-5 #_5 B6 R 877H%T) %_5@ m т xx@ m5nn#n# % n@ mjNffepfep 7e`` (T w&%*-̎%M_: @ lhX 21 @@m0p@ @aDp@@m0p@ @a$p %_4@@m0p@ @ap  m -_(4 ew %@ m5@ me55 Fue@ mL%D-%@ m2H-%$@ mf <@ m&5uCe dȕ D- u- m5 ҕʥB-7w%w $ w$u @ m-  eȋ -r-l@w $A 7`Vw`Tw Nuu ~_|; _L9 @a AaAp# % @a @a Amp@a0# D-  %@a$5 @a Amp"@a@- @a @a Amp D- # @a %  @a% %B- =  @a%@`0h @a Aa% AaAp %@`0h@eh5@e5 @mȕ _: m%_:@mȥaȥ_: m|5%_:@ md5u- _:5   @@m5f@`ȋ'u-f "@`ȋ  @`AmH@`ȋ @`AmH @`ȋ,  @m A mH" @m%@mȋ @`A`AH$ u-fu- u-u5  D-_R9%\@ m8B @ m0H@ m 5 _<@`ȋ  mA`H  m AmH @`AmH@m_J<@`AmHNfj %@ m mtH  _< @mA mXH" @m%J@mȋ@`A`AH$ "m(A`H  m AmH @`ȋmA`H  m AmH @`ȋ@ m mu HmAaH  mz AmH D- pmb f% @ mF Lwl-xB%n @ w 2DC#ˋ!w$ w 5 5 @@ m5%, @ Q m% @ @a mnp: m^% @ @a mFp m:%d @ m$$ m% @@ @@a mpBe C-@ m%%@_? & @a Aap, @a5 @a Aap @ap B- C-  @a Aap, @a0 @ @ mn | v@ ȕ 3d5&X R@,@ % 4@ E E&  T  ( @a !  @a (Te  @a (T% ƒ C- " < @aB (Te  @aBl (T% zƒ C-@ h H (T%48 (T Fw:w & @a0x -$#@ax#@a0x %#@a4x$ %ww  5   m m AH -5 7 $  ml%{ m` -f _PC^ (T%ߎ ( I%ߎ  I% I   I% I   J   I% $ @J%$ @J% I   I%w f`ȋ 5 @mf m@ u _B h@@-8 @C ` &Bm m  C-C-C>` &Bm` &` &`&N hQe m H m| mtA H  ރ C- mTH_@ \@-k @C (`Bm m  C-C-C`Bm m H m mA H rl݃ C- % (T% (T  & ` mr 8 mh m\&t (Te,f@ ȕ e-#H (T *: (T D, (T  _PE (T % ̀5) @,!@ % н@ EE& T  aȋ  ml mdA H mVNj (T% mB% m4 [@ (T%g0 (T  m %  ml (T%x (T _,F@ ȕ -ޛ|ʼ (T J (T% (Tȼ_G (T6_G _F%'_F%\_FN\ (T% %o J\D5_F4 .@,_F@ % c @ E>5+ @,#@ % Ȼ@ E_NEE& T _NE @ ȕ e%_G `$5 ^ _EN_EFBE& T ,   5  @   @m -  & @m$ H& %  ` @m (T% % '@ ȕ e-f X%l (T ^ (T  _HN5)B <@,!@ % @ E E& T   `%d`$ -ȹ (T% % ?@ ȕ ( @,4@ % z@ E fbE& T e-`1@ (T _A25& w 6 (T NfB (TeNfS (TeNfbθ (Te2 r%t (T  @m&fz (Te r D-d (T D-N (T wTw @ u@ @mA Amp w w  5 @ @m u-ww ܷ (T NfƷ (TeNf (TeNf (Tea@a&fp (Te`B-@`fB (Te % .?(@ ȕ ( @,4@ % @ E ޶ڶE& T eD- (T w5 w @ @m` X? VePNf 21 wr  @m-  dȋ - -@ @m AmHw    ww  (T %+Eֵ (T Vȵ (T } (T  (T  (T  (T~ (T  p (T b (T fH@H (Te8 (T  * (T , (T X (T  (T  (T  (T ִ (T ȴ (T  (T * (T ; (T U (T n (T t (T f (T wlw XP (T B (T 4 (T & (T R (T n (T  (T  (T  (T )ҳ (T 3ij (T P (T ] (T w (T  (T ~ (T w w p  wr w ^ V (T H (T : (T , (T w2 w    ^ w w  (T   (T *ֲ (T XȲ (T h (T w w | (T% (T  (T  e0ul (T% -vV (T H (T : (T w@ w , : Ԏ 2 &$ e7 (Te X± (Teֱ:x (Te @ ȕ 35&z t@,@ % V@ EB>E&. T w. w  D      + - ̥9 Wp @@`e̥0  w w fef f\%5 w w D Lԋw w t BuNefef f\%=@@wH w 4 D85U5_*S5P_*S \ mR@e4 ,5Ne & 8Y  uN |Y4USt%5 bV5 bV5& & T% 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff T%ށ̥a &  Te 3     U̥r 33w D5"E@e44fef f\% bVU4 4  fef f\%5 w ww7  ы A@w FD:5UE5Hw* _HV5uNfe & [% _HVbNe & 8Y  uN |Y)U5| m- 5 & [%St%  DY U   & [% S U _U @_ Uw DE%%"5   & [% U wv w ^D55@ bV  &W 3 Z 4 4 4 4 4 ww~w  $5+ &5e-e % &     X ww  5f X 7 f X 7wX@ mf7dZ%e w  D 6    X e-ww D 5 e %w  5 e-w V >Xww  N [ww rDCDpC |Y X wZw FN ZwJ ~5 & E        ~5>wlYwfw Net@f vYe  w6w.w  V*U7T*U7V*T*Ae vB7   % 55 a  a!PE -T%T* w$ |[ `e vWt vw"@ `e @  |[%e U? `e 7T*U?ϔ a7 ϲ?U ew dDE wZw FD5 Z 5N |Y!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m꿇%w w7*'$!     r 7h& AX& BF7!:W-&`7&w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_2^@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& T z   5 , @ :% & f E T  (˥-%0     ,:% &  T 8 5E& z   5 , @ :% & f E T  w@(#)lmain.c 4.3 (Berkeley) 2/21/85  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Zn  /usr/lib/lex/ncform/usr/lib/lex/nrformUnknown option %crCan't read input file %sstandard inputINITIALINITIAL/usr/lib/lex/ebcformrLex driver missing, file %sToo little core to beginToo little core for state generationToo little core for final packingOOPS - calloc returns a 0"%s", line %d: %s @(#)parser.y 4.1 (Berkeley) 8/11/83 $ t $X"-#+" ). "  "  *$%&'(,!!!!! ,)&J.^( *+?|/$,})}}     42*nDR\# define YYNEWLINE %d yylex(){ int nstr; extern int yyprevious; Too little core for parse treeToo little core for parse treech table needs redeclaration%T%tCharacter value %d out of rangeCharacter '%c' used twiceCharacter %o used twiceToo late for language specifier%}%s Premature eof , , ,# define %s %d Too many start conditionsStart conditions too longInvalid request %s%s Substitution strings may not begin with digitsNo translation given - null string assumed%d case %d: goto 30997 break; Executable statements should occur right after %%%}%s %d case %d: Definition %s not foundUndefined start condition %sToo many start conditions usedString too longNon-terminated stringNon-portable Character ClassToo many large character classes%s yacc stack overflowsyntax errorToo many definitionsDefinitions too longToo many large character classesExtra slash removedIteration range must be positiveCan't have negative iterationCan't have negative iteration@(#)sub1.c 4.2 (Berkeley) 2/21/85B!V!d!x!!<#\#p#6,,L,,,,,,,,L,<-<-T-T-T-T-T-T----T-T--T-H-................"%s", line %d: (Error) "%s", line %d: (Warning) lex.yy.%cwCan't open %s# EOF inside commentNon-terminated string or character constantEOF in string or character constantAction does not terminatePremature EOFrCannot open file %sParse tree too big %s Try using %e numParse tree too big %s Try using %e numParse tree too big %s Try using %e numToo many characters pushed@(#)sub2.c 4.1 (Berkeley) 8/11/830011111111111112223.3`354<5Too many packed character classesToo many positions %s Try using %p numblockdata common /Lvstop/ vstop define Svstop %d integer vstop(Svstop) int yyvstop[] ={ 0, bad state %d %oToo many states %s Try using %n numend 0}; bad transition %d %dToo many transitions %s Try using %a numToo many positions for one state - acomputeToo many right contextsdata vstop(%d)/%d/ %d, data vstop(%d)/%d/ %d, data vstop (%d)/0/ 0, output table overflowj %d nchar %d ctable.nch %d output table overflowdefine YYTOPVAL %d verifadvanstoffsfallextramatchatable# define YYTYPE %s intcharstruct yywork { YYTYPE verify, advance; } yycrank[] ={ %d,%d, 0,0, 0,0}; struct yysvf yysvec[] ={ 0, 0, 0, yycrank+%d, yysvec+%d, 0, yyvstop+%d,0, 0, 0, 0}; struct yywork *yytop = yycrank+%d; struct yysvf *yybgin = yysvec+1; char yymatch[] ={ '%c' ,0%-3o,No space for char table reverse0%-3o,0}; char yyextra[] ={ %d,0}; block data common /L%s/ %s define S%s %d integer %s (S%s) data %s (%d)/%d/, end block data common /L%s/ %s define S%s %d integer %s (S%s) data %s (%d)/%d/, %s (%d)/%d/end @(#)header.c 4.1 (Berkeley) 8/11/83# include "stdio.h" # define U(x) ((x)&0377) # define U(x) x # define NLSTATE yyprevious=YYNEWLINE # define BEGIN yybgin = yysvec + 1 + # define INITIAL 0 # define YYLERR yysvec # define YYSTATE (yyestate-yysvec-1) # define YYOPTIM 1 # define YYLMAX 200 # define output(c) putc(c,yyout) %s%d%s # define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} # define yymore() (yymorfg=1) # define ECHO fprintf(yyout, "%%s",yytext) # define REJECT { nstr = yyreject(); goto yyfussy;} int yyleng; extern char yytext[]; int yymorfg; extern char *yysptr, yysbuf[]; int yytchar; FILE *yyin ={stdin}, *yyout ={stdout}; extern int yylineno; struct yysvf { struct yywork *yystoff; struct yysvf *yyother; int *yystops;}; struct yysvf *yyestate; extern struct yysvf yysvec[], *yybgin; integer function yylex(dummy) define YYLMAX 200 define ECHO call yyecho(yytext,yyleng) define REJECT nstr = yyrjct(yytext,yyleng);goto 30998 integer nstr,yylook,yywrap integer yyleng, yytext(YYLMAX) common /yyxel/ yyleng, yytext common /yyldat/ yyfnd, yymorf, yyprev, yybgin, yylsp, yylsta integer yyfnd, yymorf, yyprev, yybgin, yylsp, yylsta(YYLMAX) for(;;){ 30999 nstr = yylook(dummy) goto 30998 30000 k = yywrap(dummy) if(k .ne. 0){ yylex=0; return; } else goto 30998 while((nstr = yylook()) >= 0) yyfussy: switch(nstr){ case 0: if(yywrap()) return(0); break; case -1: break; default: fprintf(yyout,"bad switch yylook %%d",nstr); } return(0); } /* end of yylex */ 30998 if(nstr .lt. 0 .or. nstr .gt. %d)goto 30999 nstr = nstr + 1 goto( %d, 30999),nstr 30997 continue } end %d/%d nodes(%%e), %d/%d positions(%%p), %d/%d (%%n), %ld transitions , %d/%d packed char classes(%%k), %d/%d packed transitions(%%a), %d/%d output slots(%%o)<*`*`*^]dD]oP]x^f^e]g]c]s]l]Lf]uj]DH]OT]X|]U 33w D5"E@e44fef f\% bVU4 4  fef f\%5 w ww7  ы A@w FD:5UE5Hw* _HV5uNfe & [% _HVbNe & 8Y  uN |Y)U5| m- 5 & [%St%bin/m4 755 0 12 44562 6024532365 5106 9* e7cce7Z9 / b$  7% 2 62w p5DCB% E _ x% %&  w$5%%~& l& % B  t%& Z% 6  6%%% f. % "# % "# % j%7%   8%& %%_ _%_  _ 8%&%_ _& _&  _%_& 2 _%_ 5 @ a 6 ,  %  6 _%  "#5 Z _v 7 |_& _h_%_ @ a&  _%_  @ a&  _%_ f'_%%&&fe eNe_%__% &  __%_@ a -%  -_4  ( A@ E  *5% _%_-ֆ % F 7_% "# 62_%_ @ a 4 _ _w 0DC @  L@$@# 5 xFe t @e5 @  a 6 5 @ a 6,  %@ $  @ w0w 0DC̋) ̢ & J.:  6 n-8 X4ˋ$ F 2w/w /N 6-  6 wd/w P/DC̋T ̢ & J.d  nˋ F 2w/w .DC % a 65 fD -e w.  5@f -e@5  %w b.DC %%e<& J. 6w0. w . % ~ f , l 1 `\ NwHpHw- w - f , 5@ Y @ 3r5%f `@,@8% D@ E0,E&&E v. A@ EN *%N ^0w-w ,DC%7X%7H @@`6'2w,w ,DC%7%  7# wv,w b,D%   \e0p ,  1\ 7 7\w,w ,DC % a "#5 %  \N  w+@ \N  % w +DC% "#5 "#`5 & f.`@-N f.@-@N f.@m 5@  u-w+w *DCBˋ1 ptʋ A @5tuL ˋ u@pt  w*w z*w6.9 #  wn*    #w B* @ %? -w4*  %:   w ) H %| %| - -w)- -ȥ|    w ) H f%& %& P- L-w)B- >-ȥ&    w Z) > - -ȥ|  - $P %|%| , ,w()w ) $ x %^ ,w(w ( B, ,ȥ& , (@ @ %&%& n, j,w(w ( < %w( $  x   w Z( L %wR( 4  x     w ( Ru+ +  :%< u %<%>%<%> |+ x+w'w ' 2 ` &%+ T%+%- >+w'w r' X rC $%*%/%% 0 % * /Bp r *w&'w ' %!%~%-   ! - ~  *  w& @  w & x%( b h%) w& L* w & >%' 0*  &* * *ȥ'  _ZwJ& )5 )%'\<)5 ) r y *& "    " &     n) R5 @aAp %    $ & t @alw R% %0  5 %79 BpDe`ß( ( %0 (  w$w $ ß( ( ! =%= |( w$%= f( b(w $ XßN( J(<  x%=wr$ (%= ( ( (w 6$ '5 '% @w $w $N! # 9 # w#w #D5 5  f&A@vee@ @mAm@ 5ű ff e@w#w #N   =f J. wb#w N# N   5 p pN F =@w#w #@5N X4@-n X4N X4w"w " N  5 2Nf J.$@5    pr   @HB5 wZ"w F" N p 7% & %  & 2 U# o*+ D%= = N%   z%  ? ff !%%  5`v` F  f'7 _` %7 %j0 7 r77  6 %vv \  %   ^00 ) w u-@jf ,  z 8%f %4$7 2$\ %j ^0e@  w N _~ _  *_ #6̋n @ ' @,*@x@% @ E E& v. ̋8 ̀5E   A@ E  * %() ( -_z _ A@ E%_i h De ^5_%" "" "r!%z"  t"p" Apr!%^" X"T" 0 r!J"J"%B"  <"8" Apr!%&" "" pr!%" "" r!-_, _`%!%! _Z |  ^0n 7H\_~f _-BB <8:  . A@ E  *    %  E !? 0*@ 75( @, @% @ EE& v. E  __~ p _8 _ @ Ȑ3r5%f `@,@% D@ E0,E&E v. -    A@ El  *j  5 @,@%  @ Ȑ_~n5*b \@,"@% @@ E_~*&E& v. _~E( E x r! -ll fbd  X A@ E>  *i  \ r!_~N r! _~ %,6  %p!  et!&   p! et!& L% 7x!e7 7n!_~ %r! -JJ D@B  6 A@ E  *i  %6_~ ,( r!_~wrw ^De5 5 -    A@ E  *5i _ @ f&A@vee@ @mAm@ 5u@  F7  ff e u@Ȣ J.@5 @wVw B tL    2 t LtNU2 %"Ղww CB  ˋw ʋ ʋ@w - H ww D ˋ ! 7-h wf-Ғw H @ @ r e0N  r  - ww -rnf b ww @ -\ @ \ ^0@ 0 \PAe0p< , M.  ^0 )%  w^ *6&@ ' @,3@8% @ E E& v. ˁ  % À5&Ew  ww N 3 r 8% ww vN V$ H 8% w`w LD/& $ wB w ( -  62ww  @e53 -%Nf )%8 -  62ww 6w-,& @m7ȥ- > - 7,%:f ( ( f `" A `"  ("  (" ?w ̥:7 v*+nh ^w-XVR Jf `" W. @m7dy X 9 E5 @@l w w \DC E5<E@e33. @;E  5 , @;% & fE v. 5  /U3 3  ww D      + - ̥9 Wp @@`e̥0  wTw <vfef 5%5 w( && e& & %ReR$v @  1   "@! @#E B Ew z :5%wpww fN f. 5 35 wRNff ,%@w &D Lԋww De LN f.4ee 8%  f.4e Be v Nfe *%ww -@ w~N9 (%9w R wP&  %5u : - xT ff %5 EU@ff % fc ` X l&e @5 & 5 & 5 fe& *%ff L%N & N & %e& ;eww 4u@t5959@ 5,:Nefef )% (3A@u5Btr929@ Aup,: fef )% u-u-u-@ww | Nef '@wpw V f '@wP w 8D6 5B ʋA r e0@ A r 5X  B-ʥ/ʥ/ Nef (,5@ 'Nef ( %ʕ/  f ..% %b%R wx Nef (ҕaʋʥzi ʕaw ( BuNefef 5%=@@w Ћ Ћ &wJ L dC@C eJ  E6P6 EP w mn)lw e& 7 7gwr BzI I7Iw @5-E@BepNff 5%5N /@U@0 @0 =  Nff 5%5@5 wB @w (  fff *ew w yw w D85U5_+5P_+ f m\@e4 ,5Ne & 2  uN 34USt%j5 v /5 /5& & 4.% 45@e-4  % U5EU  w E w D  +   r= wB w 5 a U5ff ..%ށ̥a &  :.e 3     U̥r 33 ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw D5"E@e44fef 5% /U4 4  fef 5%5 w ww7`  ы A@Ћ w FD:5UE5Hw* _/5uNfe & :5% _/bNe & 2  uN 3)U5| m- 5 & :5%St%v  2 U   & :5% S U _. @_.w DE%%"5   & :5% U wv w ^D55@ /  0 3 X4 4 4 4 4 4 ww~w  $j5+ &5e- e %Z & h    J2 ww  5f J2 7*  f J2 7wX@ m 7j%Ze w       J2 e-ww D j5 e %Zw|  5 e-bw ^0 1ww  N @5ww rDCDpC 3 2 wZw FN X4wJ ~5 & E        ~5>wlYwfw Net@f 3e  w6w.w  j:U7\:U7R:P:HAe vB47 6  ,%& 55 a  a!PE -%: w$ 5 `e vWt vw@ `e @  5%e U?~~ `e 7l:U?` a7R JL?D@U ew dD E wZw FD5 X4 5N 3!w5A vBB-  }ee@ !ۃ `!ւ ` `|m>& E%0ڷm*ڇ%w w7Z*'$!      7& A& BF7!zW-97fw 8uDAB %u f& & e w5 5  W- W00~u5  .lubBw* J@B |_7@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& v. z   5 , @ :% & f E v.  (˥-%0     ,:% &  v. 8 5E& z   5 , @ :% & f E v.  w$b|>0P@bXPv~0b@@@@@@@@@@  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%s: %s%s: %s%s %s: major botch.eval`%s' `%s' null definition.%s: recursive definition.null definition%s: recursive definition.too many include files.rrw%s: cannot divert.N \ 4Jxhm4: ill-formed expression. bad querybad factorillegal character constantbad constantm4: %s in expr. rrr!t)t9`'#   ! "&+04@JP V ]dltz  &44includesincludedefinedefndivertexprevalsubstrifelseifdeflenincrdecrdnlchangequotechangecomindexpastespastepopdefpushdefdumpdefshifttranslitundefineundivertdivnummaketemperrprintm4wrapm4exitsyscmdsysvalunixtD:U:o:/tmp/m4.0XXXXXXr%s: %sunexpected end of inputmissing right quoteinternal stack overflowtoken too longtoo many characters pushed backtoo many characters pushed backstring space overflow%s: diversion still active.undivertr%s: cannot undivert.%s: cannot unlink.interrupted.malloc: %sstrdup: %susage: m4 [-Dname[=val]] [-Uname] %s: @: illegal option -- : option requires an argument -- longjmp botch longjmp botch : Unknown error: %dV^h 2DPfr~%4LYo~ 8 I h * A ` p  3 T v   * > T v , A RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator%%/bin/shsh-c. ((((( AAAAAABBBBBB n:::6d6o6x7f7e6g7c7s6l6L6u7D6O6X7U ( f `" A `"  ("  (" ?w ̥:7 v*+nh ^w-XVR Jbin/neqn 755 0 12 65146 6024532373 5527 @F$ e7cce76 / r7  7%  >w A6 j 7 h 7 f Be$e@e  |wAe# 5n%,   7 7  m %0@ 5 -b$#$#C   5%,  V77 e%@ e -j@5  HP C x  | 62% ne5%0  %b@ _p 5n@e ֆ_ __@  D@  5@7!u@ 5@ b 5%0   A p b@  @ [_p x  _p &  _p7 "_p && %_p _p78!^",!_pL ,CR-(" ""_p7 _p7 _p& ," _p& /& *  _p 0_p!&L '%7!_p!&C!&R!&-&& <-_&& +_&& 0_ &&&  & &&& #_&& %7 _p& & _& $_&- Z!_&*&,&+ _p  _p 77j_p2`_p6V_p7L_p4B_p58_p0._p3$_p1_pD <  4 _p$  z7e_p   _p z7_{_p}_p 0P%_p| h/_p1 _p# -_p"7F_p 1_     h _pw ; 5 5Nf T% @ %A @&e&  ( z7 @0  x N4 z7 Nf T%Nfff z7eNf z7%%5A 1`% V@ &@ &%ff z7eN N w:NI NS N] Nr Nf z7%Nf w :w@ &@ &&  5@ %A @&@ %A @&&  @m50 1%& p& NNfffF z7e @ %1' @ %1H(j m Nffn z7eNff z7eNf z7e@ A p''N wp9w \9L TrR14 iIbB@7   z78 z7 w9w 8w  %11'pH( " ' &H( &% &&ff z7eNfdj z7ewNJ0 z7 wX8w D8 w:h r5NVf T%Nffff8 z7e * NfZ z7%w7w 7fe  77@7 B" I R  b i r1k z7 lw723w `7  7R L 1 'A'pH(: A A%p%@5@ 5&5 %@:5e*N"f T%N z7% &Nff T%Nf z7e@  1l%%@ 5%  Nff T%Nb^f z7e@ D 1l%%8 z7 <%TNfff@ %A @&@m& z7e @ %A @&@m f  z7eNff( z7e 0@@A @l&fn%fffL@@A @l& &[ z7e z7 AAmp& @ & &%fff z7e N  N  N w4w 4 d7@  L xN z7%t (%h 0 & X &N &%f@( z7e0 * 1'A'pH(w(4N %w 3    Nff <- N#  N"f +% @ &@ &%f z7e@ 1H(wx3w d3 7XNJ z7%< (%0 0 &&   1'A'pH(w3w 3Nf :  *w3w 2N >w2w 2Nf  _NE_vQ_v @ 0 )%d) z7  z77  & z7% z7   z7%^ z7& z7- z7B z7%/ #    - ?% "& ߔ : w15"  p h?hE \ X!5VH -H:?:% "& ("E : % 8  t?E  "5 - F?% "& " &E& : %  ) 5%_^vv.z_X-)F z7 w 0D % %- %.)I& %7- wN0w :0 e z7 5 z7  )f z7% h , $ f z7%   z7) - )f z7% z7N z7 N w/w / @ &@ &%f z7e@ 7%N z7 @ %A @&e5 z7 @ %1'03f:8 z7e@ &e54 z7   ~ z5xj -j ?\% "& J" : wwp.w \.u-@w\.@w B.  A @) ) @w0. %dN< % w -@ 0 )w-w -%NP z7 w-w -N#ffX z7ew-w - wTwPY eO fC p4 s%DK(-E ? d 77r#e 77Te 77: 7, \ e   "rxX dw,w ,w,w ,7 x 0lp z7 wz,w f, x z7Nf z7  m& z7e" 9 " 9 Nf" 9% m&" 9e  *w+w +%.0 w+ b \@ EH 77N%  :%>8 &-(  <   w <+ m& :"  m& 9 7 m %w*w *DӋ %Z1    !w*w * % % 7    "" ^ { } ~-Ww^*{}7 < h%"% &0.. % .E& %%\  &%"\. 0. %.% %? ~.  .X z7  .2 %5" B >@ @ , ( x _~@.l z7%_~ .3 %5 > .} z7 _@%%%@ T_~@% _~@% _~@% _~@% _~@_w h(DB % % %=T% 4% 1% .%{+%}(%"%%~"%^-Z%\ B%"ҕ\Ґ  N % %{%}%" %~ %^% - w w'w ' 5% % %  05 5@-%@@m% N % w<'@@mH u-} >5% % % %@@mH u-w &.  % . 3. 5. % . %. 5f2 % v Nf z7%w<&w (&N :  p? N %N& : w&w %%&  w%w % 77& . % .A %$77%o%f 77w%w x%B ʋ  rdC @m`f :  t w>%   p?  Lt @m4 @mw $ 5 @tz@t&x3 % @t x5 @tR@t&Pz4 % @t Pwv$w b$Nf z7%wB rN z7 w<$w ($p   7 z7 6N z7 w$w # @ A pP% 'ND z7 @ 5 @ P%S z7 -@ P%X z7  pP%w~#w j#c @ 5P%5 u r @ P%h z7 @ P%e5`-B_ 55@@m55 /@ P% %A AP% @&f  5@ P% &f  5@e5` u-  Nfft z7e@@m55 @ P% p&@ P% AAmp%@e5` u- u-u5 (@ P%@m f @ P%@m &R% '%@ @a"@e5` u- X7 A" p%% A" p&&t n 1 'A'pH( V &L &%ff: z7e * z7 5 @ @-N @ @a&" z7%@ @a"  u- z7ww w wAe1 r2Wpu z7 %-%,Nf%,%* Nff %+ Nff z7e T & &%fff% z7e w w  5w@ %A @l%5@ %@5 Nfffb z7e Nf T%Nf T%Nf z7%Nfff z7eNff@ %A @&@& z7e N@ % A @l&A @&&ff z7eNf@ &&ff z7e  p& p%~ x 1 'A'pH(N N whw T @ 5%@ 5&w0@@efe  r5%@e5%{%}A r  @5%@e5 AWp(p% C rWp(p&A r l 1&@C re5HP z7%@0 (_& [_& c_F& f_& n {_^& |_&Nefefef 'eN@ & z7% ?N z7 @ )_|' ]_l' c_' f_& |_' }_'Nefefef 'e@ J z7 R z7 fNfff && &%T z7e w%au z7pkf_6%%z_6% z75  z7eu- z75  z7eu-_6%_6%_6%%  z7_%_%%_%  z75  z7eu- z75  z7eu- 0+&_%?:5_%HFD_%w | N} z7 5 N z7 u-N  z7 wJw 6 7(%-5 @@5 r5@@m 55 u @ P% 5l% u- A upAmp%5 @ 5@ P% %@m5` u-t C r A AP% A&AmAeAp& n,N0 z7%u @ P% z7 u- & &% z7%@ P%@ &P% T%@ P% z7%@ 5%@ P%@ &P% T%@ P%rn@ &P% z7e u-H%R& 4 &&* z7e@ 5_+@ P% 5%@ P% 5&@ -A C> L R am@@@m@ &P%@ &P%@ & z7eB@@@m@ &P%@ &P%@ &6@ P%@ &P%H@ &Y z7e@@@m@ &P%z z7e u-_ *%R&  % @&@m& z7eu @ P%  u-  1 'A'pH(ww  w|@ 5%@ 5&@ 5%@ 5&%#3@ @m@5@@m@-@@5@@@&  @m 1&@@@* p&@5@eAA@ @@ @m@@5Ne&  @mz 1% j %` &&@ &fffB z7e@ ff" z7eN ww H2w * "! z7%ww  5w Nff4 z7em%m5@ 5%@ 5&@ 5%@ 5&@ 5%@ 5&@ @m@5@@m@-@@5@5@eAA@ @@ AA@`@5@@@&  &fe& F%e@m 1%@@@&  @mt 1&Nff T%Nff T%NfN z7%Nfff\ z7e@ @mffffz z7e @ fff z7emN N N ww +N 77`-N 77N 77 f z7%whw TwH x> %4 &&ffT z7e %>85%@5ff! z7ewww fe  +Ne 77`-Ne 77Ne 77 77b 0ކ%  r r7xw@w ,w$NNf T%N@ % &@ &&fJ! z7eNf@ %A @&&l! z7eA 1`% @ %@ &&ff! z7eww z ,7l 0 &b (%V P 1'A'pH(%uN%z"F%}">%"6 fz4 %55' 77 77@m 5A0F5F5 rH( h'  ' &H(v &%l &&f^f" z7eNF" z7%wJNf 3 7 7%>N" %w  1@  ^_66 x!%1 N r6@w%1N r6pF5 n%1d  N r6 %1F qe 6 %1* lp%1 p@m^ȥ= =f 6 F>pF5 4%1 2@m ȥ>>-im%1 ls %1 pF5 AmAu pF5 AmpF5 %( AmpF5 | z%*_R3h(E5_R3ZAmpF5 L JDBAmpF5 4_3,\F5 "fF5 %11pF5 mf 6 \F5 fF5 PF5 %1h15_R3%1x<\F5 ^F5 fF5 ~z\F5 pl|F5`\F5 VR^F5 HDjF5 :1_R3,fF5_ 4%1jF5_ 4pF5 %1w \F5 |F5 w w \F5 fF5 1F5 pF5 \F5 fF5 xtPF5 jwP w < ^\F5 TP(F5 FBpF5 84pF5 *w w D      + - ̥9 Wp @@`e̥0  w w "fef ZB%5 Zw w r D Lԋwj w V D85U5_85P_8  m@e4 ,5Ne & ,?  uN p?4USt%"5z" V<5v" V<5& & ~:% 45@e-4  % U5EU  w( E w  D  +   r= wB w5 a U5ff x:%ށ̥a &  :e 3     U̥r 33w D5"E@e44fef ZB% V ww  5f > 7R f > 7wX@ m(7&"%#e w       > e-ww D "5 e %#w  5 e-w < 2>ww  N Aww rDCDpC p? > wZw FN @wJ ~5 & E        ~5>wlYwfw Net@f j?e  w6w.w   7U7 7U7z 7x 7pAe vB\7 ^  T%N 55 a  a!PE -% 7 w$ pA `e vWt vw@ `e @  pA%e U? `e 7 7U? a7z rt?lhU ew dDHE wZw FD5 @ 5N p?!w5A vBB-  }ee@ !ۃ `!ւ ` `mV& E%HmB%w w7J*'$!      7& A& BF7!W-F7~w 8uDAB %u f& & e w5 5  W- W00~u5  .lu#Bw* J@B |_&D@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& : z   5 , @ :% & f E :  (˥-%0     ,:% &  : 8 5E& z   5 , @ :% & f E :  w"<=4;:;:;:XYCE>DAB?@CE>DAB?@CE>DAB?@wxyz"5{WVNMiLKO97o\Q Z~vu[tsq|"]2r^_`a8$#%&'0"3( )*+h  -/.,!p$#%&'0"XY3( )*+wxyzXY  -/.,!$#%&'0"jkl( )*+  -/.,!$#%&'03( )*+  -/.,!$#%&'06( )*+P  -/.,!$#%&'0( )*+  -/.,!1FGHIJ}RSTU}bcdefgmn1111ooooo@oooo@oooooo@@@@oo$oo@@@@@b<`][aZYWV\GUmTSQPON0LJIHGFEDBA6  ! ""  )!$&'(%.{ -*,+  #"26745031{{{{{{/  }}}}}}}{{{{}}}}')MNOHIKJ2TUVWXYZ[\ ,QR?@789:;<=>E-./0L]^PAB3456"#+F%&( S!* $CD 1G ppp ,,4<HR^jt~ p$<LZlx<lrl|4yacc stack overflowsyntax errorsyntax error. from: old ps %d, new ps %d, fflg %d . to: old ps %d, new ps %d @(#)diacrit.c 4.3 8/11/83JT6@^r.nr 10 %du .ds %d \v'-1'_\v'1' .ds %d ^ .ds %d ~ .ds %d \v'-1'.\v'1' .ds %d \v'-1'..\v'1' .ds %d \v'-1'\l'\n(%du'\v'1' .ds %d \l'\n(%du' .as %d \h'-\n(%du-\n(%du/2u'\v'0-\n(10u'\*(%d\v'\n(10u'\h'-\n(%du+\n(%du/2u' . diacrit: %c over S%d, h=%d, b=%d @(#)eqnbox.c 4.2 8/11/83. e:eb: S%d <- S%d S%d; b=%d, h=%d \|.nr %d \w'\s%d\*(%d%s' .ds %d \h'|\n(97u-\n(%du'\*(%d .as %d "%s\*(%d @(#)font.c 4.3 8/11/83.ft %c . setfont %c . b:fb: S%d <- \f%c S%d \f%c b=%d,h=%d,lf=%c,rf=%c .ds %d \f%c\*(%d\f%c .ft %c .ds %d \*(%d\h'-\n(%du+%du'\*(%d . fat %d, sh=%d .ft %c @(#)fromto.c 4.3 8/11/83.nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .ds %d \v'%du'\h'\n(%du-\n(%du/2u'\s%d\*(%d\s%d\h'-\n(%du-\n(%du/2u'\v'%du'\ \h'\n(%du-\n(%du/2u'\*(%d\h'\n(%du-\n(%du+2u/2u'\ \v'%du'\h'-\n(%du-\n(%du/2u'\s%d\*(%d\s%d\h'\n(%du-\n(%du/2u'\v'%du'\ . from to: S%d <- %d f %d t %d; h=%d b=%d @(#)funny.c 4.3 8/11/83  \(*S\(cu\(ca\(*Pfunny type %d in funny.ds %d %s . funny: S%d <- %s; h=%d b=%d @(#)glob.c 4.2 8/11/83 1@(#)integral.c 4.3 8/11/83. integral: S%d; h=%d b=%d \(is.ds %d %s @(#)io.c 4.4 9/3/83n%s.nr 99 \n(.s .nr 98 \n(.f .nr %d \w'\*(%d' .nr MK %d .if %d>\n(.v .ne %du .rn %d 10 \*(10 .ps \n(99 .ft \n(98 .EN%sinput line too long: %.20s .nr 99 \n(.s .nr 98 \n(.f .rm %d .as %d "%s .as %d \*(%d .ps \n(99 .ft \n(98 .as %d "%s.ps \n(99 .ft \n(98 \*(%d . answer <- S%d, h=%d,b=%d .ds %d \x'0'\x'0-%du'\f%c\s%d\*(%d%s\s\n(99\f\n(98\|\x'%du'no eqn strings left.ps %d .nr %d \w'\s%d\*(%d' -.ft %c eqn fatal error: file %s, between lines %d and %d eqn: fatal error: file %s, between lines %d and %d @(#)lex.c 4.3 9/3/83.0-rcan't open file %spushback overflowquoted string %.20s... too longmissing " in %.20s. lex token = |%s| . found %s|=%s| . %s is not a keyword token %.20s... too longUnexpected end of input at %.20sUnterminated definition at %.20s. name %s defined as %s out of space in strsave on %sInclude not yet implementedBizarre delimiters at %.20s@(#)lookup.c 4.2 8/11/83#" 26701435 ! &!+1$6%;)?&E'L(Q.V/\biqy*+-,     "',7=HOW_`fkoty~ %*05<AHMPUX]chnsw|  %).27;EISV_bknw{  +0;@KP[_imw{subsup.ENfromtosumhatvecdyaddotdotdotbartildeunderprodintintegralunioninterpilelpilecpilerpileoversqrtabovesizefontfatromanitalicboldleftrightdelimdefinetdefinendefinegsize.gsizegfontincludeupdownfwdbackmarklineupmatrixcollcolccolrcol>=\(>=<=\(<===\(==!=\(!=+-\(+-->\(-><-\(<-inf\(ifinfinity\(ifpartial\(pdhalf\f1\(12\fPprime\f1\(fm\fPdollar\f1$\fPnothingtimes\(mudel\(grgrad\(gr<<<<>>>>approx~\d~\ucdot\v'-.5'.\v'.5'......,...,,...,alpha\(*abeta\(*bgamma\(*gGAMMA\(*Gdelta\(*dDELTA\(*Depsilon\(*eEPSILON\f1E\fPomega\(*wOMEGA\(*Wlambda\(*lLAMBDA\(*Lmu\(*mnu\(*ntheta\(*hTHETA\(*Hphi\(*fPHI\(*Fpi\(*pPI\(*Psigma\(*sSIGMA\(*Sxi\(*cXI\(*Czeta\(*ziota\(*ieta\(*ykappa\(*krho\(*rtau\(*tomicron\(*oupsilon\(*uUPSILON\(*Upsi\(*qPSI\(*Qchi\(*xand\f1and\fPfor\f1for\fPif\f1if\fPRe\f1Re\fPIm\f1Im\fPsin\f1sin\fPcos\f1cos\fPtan\f1tan\fPsec\f1sec\fPcsc\f1csc\fParc\f1arc\fPasin\f1asin\fPacos\f1acos\fPatan\f1atan\fPasec\f1asec\fPacsc\f1acsc\fPsinh\f1sinh\fPcoth\f1coth\fPtanh\f1tanh\fPcosh\f1cosh\fPlim\f1lim\fPlog\f1log\fPmax\f1max\fPmin\f1min\fPln\f1ln\fPexp\f1exp\fPdet\f1det\fPout of space in lookup@(#)mark.c 4.2 8/11/83.ds %d \k(97\*(%d . mark %d .ds %d \h'|\n(97u' . lineup %d @(#)matrix.c 4.2 8/11/83. %d column of S%d, rows=%d \ \ . colct=%d . row %d: b=%d, hb=%d . matrix S%d: r=%d, c=%d, h=%d, b=%d .ds %d "\*(%d%s @(#)move.c 4.3 8/11/83.ds %d \h'%s%du'\*(%d -\v'-%du'\*(%d\v'%du' \v'%du'\*(%d\v'-%du' . move %d dir %d amt %d; h=%d b=%d @(#)over.c 4.3 8/11/83. b:bob: S%d <- S%d over S%d; b=%d, h=%d .nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .ds %d \v'%du'\h'\n(%du-\n(%du/2u'\*(%d\ \h'-\n(%du-\n(%du/2u'\v'%du'\*(%d\ \h'-\n(%du-\n(%du-2u/2u'\v'%du'\l'\n(%du'\v'%du' @(#)paren.c 4.3 8/11/83.ds %d \|\v'%du'\(lf\(bv\(bv\(lf\(lc\(lc\(bv\(bv\b'\(lt\(bv\(lk\(bv\(lb'\(lt\(bv\(lb\(lc\(bv\(lf|||\v'%du'\*(%d\|\v'%du'\(rf\(bv\(bv\(rf\(rc\(rc\(bv\(bv\b'\(rt\(bv\(rk\(bv\(rb'\(rc\(bv\(rf\(rt\(bv\(rb|||\v'%du' . curly: h=%d b=%d n=%d v=%d l=%c, r=%c \b'%s%s%s'@(#)pile.c 4.3 8/11/83. S%d <- %c pile of: S%d;h=%d b=%d .nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .ds %d \v'%du'\h'%du*\n(%du'\ \v'%du'\*(%d\h'-\n(%du'\v'0-%du'\ \v'%du'\h'-\n(%du'\*(%d\v'0-%du'\ \v'%du'\h'\n(%du-\n(%du/2u'\*(%d\h'-\n(%du-\n(%du/2u'\v'0-%du'\ \v'%du'\h'%du*\n(%du' @(#)shift.c 4.3 8/11/83. b:b shift b: S%d <- S%d vert %d S%d vert %d; b=%d, h=%d .as %d \v'%du'\*(%d\v'%du' . shift: %d;ps=%d . shift2 s%d <- %d %d %d .nr %d \n(%d .if \n(%d>\n(%d .nr %d \n(%d .as %d \v'%du'\*(%d\h'-\n(%du'\v'%du'\ \*(%d\h'-\n(%du+\n(%du'\v'%du' @(#)size.c 4.2 8/11/83. setsize %s; ps = %d . b:sb: S%d <- \s%d S%d \s%d; b=%d, h=%d .ds %d \s%d\*(%d\s%d @(#)sqrt.c 4.3 8/11/83.ds %d \v'%du'\e\L'%du'\l'\n(%du'\v'%du'\h'-\n(%du'\*(%d . sqrt: S%d <- S%d;b=%d, h=%d @(#)text.c 4.3 8/11/83T4>3666666>3665>3>3663>34Z3>4>3>3>3>3>3>3>3>3>3>3>3>333366666666666666666666666666666666666666666666666666666666>3Z4>33666666666666665666666 66666666666666666666666666666666666366T4\ \|\tconverted token %.25s... too long. %dtext: S%d <- %s; b=%d,h=%d,lf=%c,rf=%c .ds %d "%s 677RCd8CoDCxDfDeCgCcCsClCLZCu^CDeuu5u-u-u-u-u-u-u-u- %%%Nf uuu-_%_@ _ xu- __u- __%m:2@@55uB555& euu5u-u-u-u-u-u-u-u- %%Nf uuu-_%_@ _ xu-_u-_ww u-u-  u- wu-u- w  F  ww  F  ww ww   F  F PLHw *775757 FCFAAA7CFA AA7w w 5www55www~5@tE5@tE5@tE5@tE5@teAA @@E5N" &f z ee r 5- NU F w-- NU` F wNU` F NU F w-NU` F NU` F w~ -r NU` F w\NU@ F @ wl  w T H B : 6!54& -&@?% & fE T w w 5 5!w Ne5& e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_  6> w D      + - ̥9 Wp @@`e̥0  wL w 4 D Lԋw, w  D85U5_5P_  m@e4 ,5Ne &   uN 4USt%5f 5b 5& & >% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff 8%ށ̥a &  De 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7 w FD:5UE5Hw* _5uNfe & % _bNe &   uN )U5| m- 5 & %St% 4  U   & % S U _| @_w DE%%"5   & % U wv w ^D55@    3 6 4 4 4 4 4 ww~w  J$5+  &5e-e %z &     ( ww  5f ( 7 f ( 7,wX@ m7%ze w  r d    ( e-Hww D 45 e %zw  5 e-w < ww  N ww rDCDpC  d wZw FN 6wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -% w$  `e vWt vwP@ `e @  %($e U? `e 7U? a7 ?U ew dDE wZw FD5 6 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%rml%w w7*'$!      7& A& BF7!W- 7& & e Ӌ  &7r& e `ӕ-Zӕ0B~Fӕ.  ӕ0~ B~&7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& T z   5 , @ :% & f E T  (˥-%0     ,:% &  T 8 5E& z   5 , @ :% & f E T  w&w Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& eww  fff 5& eww  5 %O N  = 555Ne5& e5T55'0Ne5 B& e57" Be0" 5%T55 5 B5@B e a=%7w %T5 B5Ne& e55e0%T7`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)circle.c 4.1 (Berkeley) 6/27/83@(#)arc.c 4.3 (Berkeley) 6/23/85TTDD~~d@(#)close.c 4.1 (Berkeley) 6/27/83@(#)dot.c 4.1 (Berkeley) 6/27/83@(#)erase.c 4.2 (Berkeley) 1/2/85@(#)label.c 4.1 (Berkeley) 6/27/83 HHHHHHJJJJJJJJJJ DDDDDDEEEEEEEEEE@(#)line.c 4.1 (Berkeley) 6/27/83@(#)linemod.c 4.1 (Berkeley) 6/27/83@(#)open.c 4.1 (Berkeley) 6/27/83@(#)point.c 4.1 (Berkeley) 6/27/83@(#)move.c 4.1 (Berkeley) 6/27/83@(#)space.c 4.1 (Berkeley) 6/27/83@(#)subr.c 4.1 (Berkeley) 6/27/83@@TTdoxzfezgTc`slLuDOXU=(\& e w5 5  W- W00~u5  .lu#Bw* J@B |_&D@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Abin/t4013 755 0 12 21552 6024532400 5321  e7cce7 / D  7%  &w `u@ȥ-? l r. w  e  T 4 &wNe  7Ne  7Ne  75 Nf  5NfPl e &N 4N Nw x ^_a _ x&N 5N 5f _N 5N 5N 5N 5fff j e_Nfe D Ne D _ *_N 5N 5f N 5N 5f : N 5N 5N 5N 5fff N 5N 5N 5N 5N 5N 5fffff e cN 5N 5N 5ff z%HNfe D Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff  e  A@ EN %_D ww D    5%    5%t5@]w|w hDC̥      wFw 2NfNmffNmff e ww www &@@5@@ 55@uB5555& e5A5 -|N @55@ 55Nf u- u- 5 N fff e5Nf ff e5NN &fN 2 %x%%@x  xy%%%|mt@@55uB555& Peuu5u-u-u-u-u-u-u-u- %%%Nf : uuu-_%_@ _ xu- __u- __%m:2@@55uB555& euu5u-u-u-u-u-u-u-u- %%Nf : uuu-_%_@ _ xu-_u-_w&w u-u-  u- wu-u- w  X ` ww  X ` ww ww   X  X w|w h X   X @awVw BNf N f : w2w w*w w"w ww Nf Nf : w w  X Nf : w w 7L7J576572 CEAAA7$CEA AA7w w r 5www55www5@tE5@tE5@E5@E5N &f 8 ee r 5-p NU X wZ-XNU` X NU X w6 -, NU` X wNU@ X @ wl  w T  !5 -@?% `& ߾`fE f w w 5 5!w Ne5& e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_  6> w D      + - ̥9 Wp @@`e̥0  wL w 4 D Lԋw, w  D85U5_5P_ z mp@e4 ,5Ne &   uN 4USt%T5` 5l 5& & P% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff J%ށ̥a &  Ve 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7H w FD:5UE5Hw* _5uNfe & *% _bNe &   uN )U5| m- 5 & *%St%`   U   & *% S U _ @_w DE%%"5   & *% U wv w ^D55@    3 H 4 4 4 4 4 ww~w  $T5+ &5e-e %D &     : ww  5f : 7v f : 7wX@ mL7JT@%De w  *     : e-ww D T5 e %Dw  5 e-w N ww  N 0ww rDCDpC  v wZw FN HwJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   x%r 55 a  a!PE -:% w$  `e vWt vw@ `e @  %e U? `e 7U? a7 ?U ew dDlE wZw FD5 H 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m8& E%*m$%w w7n*'$!      7& A& BF7!tW-7`& & e Ӌ LP &7*& e ӕ-ӕ0B~ӕ.  ӕ0~ B~LP&7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luRBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& f z   5 , @ :% & f E f  (˥-%0     ,:% &  f 8 5E& z   5 , @ :% & f E f  w&w Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& "eww  fff 5& "eww  5 %O N  = 555Ne5& e555'0Ne5 B& e57 Be0" 5%55 5 B5@B e a=%7w %5 B5Ne& e55e0%7`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)circle.c 5.1 (Berkeley) 6/7/85@(#)arc.c 5.2 (Berkeley) 6/23/85TTDD~~d@(#)close.c 5.1 (Berkeley) 6/7/85@(#)dot.c 5.1 (Berkeley) 6/7/85@(#)erase.c 5.1 (Berkeley) 6/7/85@(#)label.c 5.1 (Berkeley) 6/7/85@(#)line.c 5.1 (Berkeley) 6/7/85@(#)linemod.c 5.1 (Berkeley) 6/7/85@(#)open.c 5.1 (Berkeley) 6/7/85@(#)point.c 5.1 (Berkeley) 6/7/85@(#)move.c 5.1 (Berkeley) 6/7/85@(#)space.c 5.1 (Berkeley) 6/7/85@(#)subr.c 5.1 (Berkeley) 6/7/85@@doxfegfcrslLuDOXU=(\bin/t300 755 0 12 22402 6024532402 5231 @!R e7cce7 /  7%  w u@ȥ-? l r. w  e  l 4 w~Ne @ 7rNe @ 7`Ne @ 75 Nf N 5NfP 6e N 4N w  _a _ x&N 5N 5f  _N 5N 5N 5N 5fff e_Nfe D Ne _ _N 5N 5f N 5N 5f jN 5N 5N 5N 5fff N 5N 5N 5N 5N 5N 5fffff ze cN 5N 5N 5ff %HNfe D Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN %_D wHw 4D    5%    5%t5@]ww DC̥       ww ww ww  ww x T ww lwxw d 5   @CB0BuwFw 2eN @ 5ww N  |f R & . &f f & 6 &f * &  & eww N  |f  &  &  eww pNf N fff e& e@A5@@5@ @55 5  55&555&55 05 L5uuw65wm*N F5 @ @ 5uuw5wmN F5 @ @ .  u- ww ww N  |f F & " & ww  7`7ZX H    PPPE,Fw&WpC7FwW@C77 pC7w^w J xwRw >Nf    w4w 7<77<757577AAA77A AA7ww  @w@ w eA 7rRmPww eA 7r:ww   wxw d  x T wJw 6% ,  z v5tf -f?X% x& Fx  0 * " !5 -@?% x& xfE  ww r  wpw \ w`w L@@5@@ 55@uBw&w  u}}w w --_x t r@- 7 \@TA5w-D 70uWA7"N F5N @ N F5 N @  @B5w-  7uWB7N F5N @ Np F5 BN @  FwBw>w w 5wLwNw85@w w r 5w(w*w5@w^ w J 5 5!w6 Ne5&  e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_ 6> w Nt@f hew w D      + - ̥9 Wp @@`e̥0  w w x xfef N%5 wd w L D LԋwD w 0 N tf hew$ w  u@t55@ 5PNefef % (3A@u5Btr2@ AupP fef % u-u-u-@wl lw e& 7 r7jgw w  D85U5_85P_8 ( m@e4 ,5Ne & *  uN n4USt%l5x T5 T5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef N% TU4 4  fef N%5 wz ww7 w FD:5UE5Hw* _:5uNfe & % _:bNe & *  uN n)U5| m- 5 & %St%x  6 U   & % S U _ @_w DE%%"5   & % U wv w ^D55@ T   3  4 4 4 4 4 ww~w  ~$l5+ &5e-Rpe %\ & 0     ww  5f  7 f  7wX@ m7l%\e w        e-|ww D hl5 e %\wD  5 e-*w  0ww  N ww rDCDpC n  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f he  w6w.w  2U7$U7Ae vB7   % 55 a  a!PE -% w$ n `e vWt vw@ `e @  n%\Xe U?FF `e 74U?( a7 ? U ew dDE wZw FD5  5N n!w5A vBB-  }ee@ !ۃ `!ւ ` `Dm& E%m%w w7**'$!     Z 7P& A@& BF7!"W-!7& & e Ӌ dh &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~dh&7 & Le fӕ-0 Zӕ.N B~ӕe@ ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .lujBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w&w Nefef 5& Be C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& eww  fff 5& eww  5 %O N  = 555Ne5& !e555'0Ne5 B& !e57 Be0" 5%55 5 B5@B e a=%74w %5 B5Ne& !e55e0%79`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)arc.c 4.1 (Berkeley) 6/27/83@(#)circle.c 4.1 (Berkeley) 6/27/83@(#)close.c 4.1 (Berkeley) 6/27/83@(#)dot.c 4.1 (Berkeley) 6/27/83@(#)erase.c 4.1 (Berkeley) 6/27/83@(#)label.c 4.1 (Berkeley) 6/27/83@(#)line.c 4.1 (Berkeley) 6/27/83@(#)linmod.c 4.1 (Berkeley) 6/27/83@(#)move.c 4.1 (Berkeley) 6/27/83@(#)open.c 4.1 (Berkeley) 6/27/83AA@@ @(#)point.c 4.1 (Berkeley) 6/27/83.@(#)space.c 4.1 (Berkeley) 6/27/83FF@(#)subr.c 4.1 (Berkeley) 6/27/83Fd,o8xfegcslLNuRD0O<XdU=(\doxfegfcrslLuDOXU=(\bin/t300s 755 0 12 22602 6024532404 5420 !R e7cce7 /  7%  w 2u@ȥ-? l r. w  e  l 4 wNe 7rNe 7`Ne 75 Nf  5NfP e N 4N w J _a _ x&N 5N 5f  _N 5N 5N 5N 5fff e_Nfe D Ne _ _N 5N 5f N 5N 5f pN 5N 5N 5N 5fff N 5N 5N 5N 5N 5N 5fffff ze cN 5N 5N 5ff %HNfe D Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN f%_D ww D    f5%    f5%t5@]wNw :DC̥     f  ww ww ww  ww x  ww ww  5   @CB0Buww  7A7N @ 5w~w jN  tf  &  &f  & ( &f  &  & ew"w N  tf X &  & eww Nf N fff z e& Te@A5@@5@ @55  u @PU05 55&555&55 "@ 5 @5uuw&5@7`@ >55uuw5@7`@ >5@tA@PU@  u- ww tww lN  tf  & " & wNw : 7h7b` P j  n PPPE4Fw.WpC7$FwW@C77pC7ww  xww Nf    ww 7D77D757577AAA77 A AA7wTw @ @wB@ w &eA 7rZmXww eA 7rBww  N  P ww     x  N ww  z r n!5l^ -^@?P% x& >xfE 8 w>w *  w(w  @ ww @@5@@ 55@uBww  u}}ww w-w-_ @5@5    @PU45N >5N >5A r5A r55 @@55.-@U5@ U8 U@ @@5xN @ u-u-@@5G@U5@ @ 2@AWp@5@AWp@5@5 % U8%U NN N @   N @t@]U@ ww w w 5www5@w w r 5www5@w^ w J 5 5!vw6 Ne5& x e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_X 6> w Nt@f ew w D      + - ̥9 Wp @@`e̥0  w w x xfef %5 \wd w L D LԋwD w 0 N tf ew$ w  u@t55@ 5PNefef &% (3A@u5Btr2@ AupP fef &% u-u-u-@wl :lw e& 7 7gw w  D85U5_5P_  m@e4 ,5Ne &   uN 4USt%l5dx 5` 5& & "% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  (e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7 w FD:5UE5Hw* _5uNfe & % _bNe &   uN )U5| m- 5 & %St%x 2  U   & % S U _` @_dw DE%%"5   & % U wv w ^D55@    3  4 4 4 4 4 ww~w  $l5+ & &5e-e %\ &      ww  5f  7 f  7*wX@ m`7^lT%\e w  > 0     e-ww D l5 e %\w  5 e-w   ww  N ww rDCDpC  H wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -N% w$  `e vWt vw@ `e @  %e U? `e 7U? a7 ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m~& E%pmj%w w7*'$!      7& A& BF7!W-!7& & e Ӌ dh &7p& e ^ӕ-Xӕ0B~Dӕ.  ӕ0~ B~dh&7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .lujBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& 8 z   5 , @ :% & f E 8  (˥-%0     ,:% &  8 8 5E& z   5 , @ :% & f E 8  w&w Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& eww  fff 5& eww  5 %O N  = 555Ne5& t!e555'0Ne5 B& t!e57  Be0" 5%55 5 B5@B e a=%7w %5 B5Ne& t!e55e0%7`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)arc.c 4.1 (Berkeley) 6/27/83@(#)circle.c 4.1 (Berkeley) 6/27/83@(#)close.c 4.1 (Berkeley) 6/27/83@(#)dot.c 4.1 (Berkeley) 6/27/83@(#)erase.c 4.1 (Berkeley) 6/27/83@(#)label.c 4.1 (Berkeley) 6/27/83@(#)line.c 4.1 (Berkeley) 6/27/83@(#)linmod.c 4.1 (Berkeley) 6/27/83@(#)move.c 4.1 (Berkeley) 6/27/83@(#)open.c 4.1 (Berkeley) 6/27/83AA@@ @(#)point.c 4.1 (Berkeley) 6/27/83.@(#)space.c 4.1 (Berkeley) 6/27/83FF@(#)subr.c 4.1 (Berkeley) 6/27/83dox^fle^g8cDsnlnLuDOXU=(\bin/t450 755 0 12 22372 6024532406 5251 @!Z e7cce7 /  7%  w u@ȥ-? l r. w  e  d 4 wNe \ 7Ne \ 7Ne \ 75 Nf j 5NfP| Re N 4N w  _a _ x&N 5N 5f  _N 5N 5N 5N 5fff e_Nfe D Ne _ _N 5N 5f N 5N 5f jN 5N 5N 5N 5fff N 5N 5N 5N 5N 5N 5fffff ze cN 5N 5N 5ff %HNfe D Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN %_D wdw PD    5%    5%t5@]ww DC̥       ww ww ww  ww p p ww ww  5   @CB0Buwbw NeN @ 5w8w $N  f n & < &f  & D &f F &  & eww N  f  &  &  eww Nf < N fff e& e@A5@@5@ @55 5  55&555&55 >5 L5uuw65wm*N T5 @ @ 5uuw5wmN T5 @ @ .  u- w4w w,w N  f b & 0 & < ww  7`7ZX H <   " PPPE,  FwWpC7FwW@C77pC7wlw X jw`w LNf    wBw .7&77&75757FAAA7FA AA7ww  @w@ w eA 7rDmBww eA 7r,ww  3 ww x 4 p pwlw X% /  x t5rd -d?V% p& Dp    ( "  !5 -@?% p& pfE  ww   ww x "   w`w L@@5@@ 55@uBw&w  u}}w w -l-f_ X r@- 7 @@8A5w-( 7uWA7N T5N @ N T5 N @  @B5w-  7uWB7~N T5N @ NT T5 4N @  2w&w"w w 5w0w2w5@w w r 5w ww5@w^ w J 5 5!w6 Ne5& , e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_ 6> w Nt@f ew w D      + - ̥9 Wp @@`e̥0  w w x pfef j%5 wd w L D LԋwD w 0 N tf ew$ w  u@t55@ 5PNefef % (3A@u5Btr2@ AupP fef % u-u-u-@wl lw e& 7 N7Fgw w  D85U5_T5P_T  m@e4 ,5Ne & F  uN 4USt%d5p p5| p5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef j% pU4 4  fef j%5 wz ww7 w FD:5UE5Hw* _V5uNfe & % _VbNe & F  uN )U5| m- 5 & %St%p v R U   & % S U _ @_w DE%%"5   & % U wv w ^D55@ p  4 3  4 4 4 4 4 ww~w  b$d5+ r &5e-6Te %T &      ww  5f  7 f  7nwX@ m7d%Te w   |     e-`ww D Ld5 e %Tw(  5 e-w  Lww  N ww rDCDpC   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -% w$  `e vWt vwh@ `e @  %@w xu@ȥ-? l r. w  e   4 >w,Ne  7Ne  7Ne 7|5 Nf  5NfP. e >N 4N fw  _a _ x&N 5N 5f _N 5N 5N 5N 5fff ~e_Nfe D Ne _ _N 5N 5f N 5N 5f N 5N 5N 5N 5fff N 5N 5N 5N 5N 5N 5fffff ze cN 5N 5N 5ff %HNfe D Ne n :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN %_D ww D    5%    5%t5@]ww DC̥       w^w JwVw B * Q ~ z5xj -jQ?\% "& J"Q ~ Nf x & O   5 -O?% "& "O ~ feAwpWtf 4 %"fe " wNw :" " h& ` w w Nf ~eww ww B * 2 , $ 5 - ?% "& " ~  5 -?% "& ߘ" ~ Q| t p5n` -`Q?R% "& @"Q ~ vt x " ww j *  Q 5 -Q?% "& "Q ~  7rm 7rm& x  x t5rd -d?V% "& D" ~ "f   5  -?% "& " ~ " N nWp`e 7r7`wZw F * Q ߆ 5r -rQ?d% "& R"Q ~ Nf x . A( 5 - A?% "& "A ~ N f x " w w wjw Vf R"+f R"f R"f R"" " ww wrwjww  h& ~ HBE"U76h& ` w r"  "\ "w D5 fefe 4 %"fe % "}  7777" ww  * * Q$  5 -Q?% "& "Q ~ Nf x " " wwwXw D BBr5 B Br55 7wWp r 7% 7rx 5AAm r@7h 7rR 5A Am r@7Dw w @@m5= @E=@t5  w` w L AwpWtuAwpWtufe@tEAWtE@P& 4 %fefE 4 %fefE 4 %Nefefe" ew w @;w@7 L ߾ 5 -L?% "& ߊ"L ~ "  w w  DC E5<E@e33. @;E  5 , @;% & fE ~ 5  U3 3  wZ w F Nt@f ew: w & D      + - ̥9 Wp @@`e̥0  w w D 3 `EtU4 4 w w D Lԋwx w d N tf ewX w D D85U5_5P_ P mF@e4 ,5Ne &   uN 4USt%5" 5. 5& & <% 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff 6%ށ̥a &  Be 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 w ww7,  ы A@Ћ w FD:5UE5Hw* _5uNfe & B% _bNe &   uN )U5| m- 5 & B%St%"   U   & B% S U _ @_w DE%%"5   & B% U wv w ^D55@    3 ` 4 4 4 4 4 ww~w  $5+ &5e-le % & l    R ww  5f R 7. f R 7wX@ m7%e w       R e-ww D 5 e %w  5 e-fw f ww  N Hww rDCDpC   wZw FN `wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  nU7`U7VTLAe vB87 :  0%* 55 a  a!PE -% w$  `e vWt vw@ `e @  %e U? `e 7pU?d a7V NP?HDU ew dD$E wZw FD5 ` 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7&*'$!     V 7L& A<& BF7!W-!7 & & e Ӌ  &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~&7| & Le bӕ-0 Vӕ.J B~ӕe< ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& ~ z   5 , @ :% & f E ~  (˥-%0     ,:% &  ~ 8 5E& z   5 , @ :% & f E ~  w&w Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& : eww  fff 5& : eww  5 %O N  = 555Ne5& !e555'0Ne5 B& !e57 Be0" 5%55 5 B5@B e a=%7pw %5 B5Ne& !e55e0%7u`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)arc.c 5.2 (Berkeley) 4/30/85@(#)circle.c 5.2 (Berkeley) 4/30/8501@(#)close.c 5.2 (Berkeley) 4/30/85Q00204@(#)cont.c 5.3 (Berkeley) 4/30/85@(#)dot.c 5.3 (Berkeley) 4/30/85@(#)erase.c 5.2 (Berkeley) 4/30/85FF@(#)label.c 5.2 (Berkeley) 4/30/8502@(#)line.c 5.2 (Berkeley) 6/6/8501@(#)linemod.c 5.2 (Berkeley) 4/30/85dotted1AAFFlongdashed1F055shortdashed1F0FFdotdashed1E4FF1FFFF@(#)move.c 5.2 (Berkeley) 4/30/85@(#)open.c 5.2 (Berkeley) 4/30/85}}}G1HHHN[00LFFCFFMFFFFFFFFK0004^15060AL@(#)point.c 5.2 (Berkeley) 4/30/8501O01@(#)space.c 5.2 (Berkeley) 4/30/85@(#)subr.c 5.2 (Berkeley) 4/30/850123456789ABCDEFxx%s%s%szdoxfeg~cslLuDOXU=(\zgTc`slLuDOXU=(\& e w5 5  W- W00~u5  .lu#Bw* J@B |_&D@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Abin/bgplot 755 0 12 21746 6024532411 6044 @ B e7cce7| /  7%  w u@ȥ-? l r. w  e  P 4 wNe ~ 7Ne ~ 7Ne ~ 75 Nf l 5NfPh Te N 4N w  _a _ x&N 5N 5f _N 5N 5N 5N 5fff e_Nfe D Ne x _ _N 5N 5f Z N 5N 5f ZN 5N 5N 5N 5fff N 5N 5N 5N 5N 5N 5fffff e cN 5N 5N 5ff z%HNfe D Ne R :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN %_D |wfw RD    5%    5%t5@]ww DC̥       ww NfNffNmff e NfNmffNff e wvw b^57 7@5577@5577@@55 77@@55 77@@5577@@5AApCp`Af e5@5 Nf Z _V5@& te5@55555@@5@@5AupCpAu@AA@5AAAmAu555555N f 5@@m7n5@@m7^  ߾ 5 -?% \& ߊ\   %5555uu555uu555uu5@-ww 577@7v57z7~@7d  5 -?% \& ߐ\   %wTw @wLw 8 X R J F5D6 -6?(% \& \    5 -?% \& ߶\   ww p577(@- 57 7@-$577@-5 77@-Nf Nf N f Z ww ww Nf r x ww N ww 57R7^@7B57F7J@70  ߐ 5| -|?n% \& \\   %w w Z  $ 7 7 & & ew w  $  5 -?% \& ߪ\  (  wr w ^ 5757@Euw5Eu w55557w w 5 5!Tw Ne5& n e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_N 6> w D      + - ̥9 Wp @@`e̥0  wp w X \fef l%5 jwD w , D Lԋw$ w  u@t55@ 5$Nefef % (3A@u5Btr2@ Aup$ fef % u-u-u-@wl  lw e& 7 870gw w  D85U5_V5P_V  m@e4 ,5Ne & H  uN 4USt%P5\ r5h r5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef l% rU4 4  fef l%5 wz ww7 w FD:5UE5Hw* _X5uNfe & % _XbNe & H  uN )U5| m- 5 & %St%\ ` T U   & % S U _ @_w DE%%"5   & % U wv w ^D55@ r  6 3  4 4 4 4 4 ww~w  4$P5+ D &5e-&e %@ &      ww  5f  7 f  7XwX@ m~7|Pr%@e w  \ N     e-2ww D P5 e %@w  5 e-w  Nww  N ww rDCDpC   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  ~U7|U7~|Ae vB7   % 55 a  a!PE -l%| w$  `e vWt vw:@ `e @  %e U? `e 7|U? a7 ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7*'$!       7& A& BF7!W-8 7& & e Ӌ HL &7& e ӕ-ӕ0B~rӕ.  ӕ0~ B~HL&7F & Le ,ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luNBw* J@B V_8@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w&w Nefef 5& `e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& eww  fff 5& eww  5 %O N  = 555Ne5& * e555'0Ne5 B& * e57N Be0" 5%55 5 B5@B e a=%7w %5 B5Ne& * e55e0%7`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)circle.c 5.2 (Berkeley) 4/30/85:%d;%dd@(#)cont.c 5.2 (Berkeley) 4/30/85:%d;%dd@(#)dot.c 5.2 (Berkeley) 4/30/85@(#)erase.c 5.2 (Berkeley) 4/30/85[H[J@(#)line.c 5.2 (Berkeley) 4/30/85@(#)linemod.c 5.2 (Berkeley) 4/30/85@(#)point.c 5.2 (Berkeley) 4/30/85.@(#)label.c 5.2 (Berkeley) 4/30/85%s@(#)move.c 5.2 (Berkeley) 4/30/85:%d;%dm@(#)open.c 5.2 (Berkeley) 4/30/85@@(#)close.c 5.2 (Berkeley) 4/30/85[H@(#)space.c 5.2 (Berkeley) 4/30/85dddJoVxf"egcs$l$LlupDNOZXU=(\bin/crtplot 755 0 12 41164 6024532413 6242 @=$ e7cce7  / '  7%  ~1w 4Q@-' l w=@e ' 7/@e ' 7t!5 P@& H+ 5@R ,% ~1N $e@ %  $ ~1w3w 3 _>@a _& x(N v5N v5f j _>N v5N v5N v5N v5fff _:Nfe  Ne ,_> _>N v5N v5f N v5N v5f N v5N v5N v5N v5fff fgN v5N v5N v5N v5N v5N v5fffff e 5N v5N v5N v5ff %Nfe  Ne  Nfa ,e  A@ EN )5%_4 w1w 1  A@ EN )5%wf1  A@ EN )5%t5@]w 1    A@ EN )==w0w 0  @- @-Nf  ew w w0w 0 j d \ X!5VH -H@?:% & ( @& - ` -PZ D7 N L 8 7> w0w 0 $  )5 2 (( w/w / ((  &   e  ~1w/w /577@7uww& . wr/w ^/Nf j * x7ju w\w`57:7>@&7<uw.w2&57 7@&* ew.w .N -  @a x w.w .&  $%&  $%E7x6z ( E6` ( fr $% V R & e7 N< 7Fw.w .Nf j * xw-w -7 uww577@& * ew-w -57577AAA77A AA7wr-w ^-wj-w V-$N N T'5N N T'@-N N T'5 O@ @u5@ @u55@55@55 (5555555& ve5& de& . @ x u-w,w t,NfNffNmff e NfNmffNff e w0,w ,Ruu u u5u77 u Bw w& Te5@5 Nf  _ 5@& e5@55555@@ 5@ @5AupC p Au@ A A@5AA AmAu55555 5N NmfNm j 7uuww5577@& * e5555uu555uu555uu5@-wD*w 0*w fwbwVwR w *w *-0B< 7r"7`4. 7rw$- P 7r` 7rw&)& &  $%  &  $%  ـ7  - x @7l 7z-bx8rV 7hL -Z(VJL7 F > 6 * & $ $%  7 --   "% -  w~(& & $%w Z(  N wR(w >(@7t7nb^ `_.XJ rf> re.-&( r& r   rC`!    `m  "- &  $% 77z<t r&h reD0 f< N`e   : & : $%7  7 - w&-<-5 --* '  &  $%   & ~ $% j7 d-f`  p;j -5 H D  & 8 $% *_, &  $% _  -  &  $% _-^%V   &  $%7vn  -f`X%2->/ XP) V  & J $% 7 &  $%    --9 !  + @`mEA E@    &  $% z ~À zwhwdf_@w $-> A 7r0wp*uu5 @@mC r@mw#w #6 n':6 n' 6 (t7d5  75 7E 6h ( w\#w H#D̋L T d % OT - Neht@ V2e w w X !7% [ !7%P  @  8^77 > _ . `  a  bn7 tjdX "%ȥO7D7 D8 <6 7*1&T .%& (%7  w!w !c !e̋N& ! e̋ 7&7&  ! 7   ! 7   w6 ( &  $%&  $% 5 & z $%E w w DC̥:̥| ̥̋|  ̥:̥|̋ wr w ^ < 6 . *!5( -@? % &  @& - w w D &  $%&  $%77 7  7+5  &  $%7 7 p0? hd0 \ . 4p  p0 . A m%9& > w m-  mmH mmH  m m mH" m -- & *eF'vr77 7-  7-~vt! 4 m &mTN *em?m p7  B/_w D @ m5-_: 5 @ m5_:- 5@m5*hAm @`Bmm @ mCm 'n$@ mm 5 @ mH- @A m@5 D_5 _Nm f *ew@m 7_u-_ [u-W˥ T| @`m| 5 @ Lz @`&@ 5 -AA@ 5-& n $%@m 70ҕ @ @-w5 z)EA E@ ˵& R $%U & 2 $%E 5-W @-QB^5 5  &  $%4E d EE 5 < vc7$ m7_:5  w _>EE  N˵  & 4 $% _~@m -_:@m 7-h*^'7 |   _Lu- _:u-  F u-_:w 5 . & v $%E N fff eww D  & & 0% ^& 0%-n  4 wPw <D  & & e w"w DCBm5m  m% m m  m mH-  mH ww D m)   m mH m& m& 0,% & & e    m mm5C- & && e  wӕ w D : m5@m5Bʥ %@5ʕ B-%N mf& e - 4wTw @Dc&l 55@ lA mAlH ,!ww DCB  --ww  5 w2 ) ̋ ̥/ & h- 5  : h- 5 .wR7N w f - G 4% N N 0 hD N 0 @e!چԐB-fef n-%5 @a % D-ņ\ w  -m:-_ 4% h ̥tbc^efe - Ce˥: ˋ ^% XrNefe d %7 0Ce ˥: -A@`5% 4%@` & - w7 ww n˥#%  ̋ ̋˥|˥:ˋ wH˥:˥| ˋˋ˥: Dw D̥: ̥̋: ww : ʋRʋAA@ ʥ@wʥ#  ʥ0 CpDe`w | ̋T̋AA@ ̥̋:̥@ wHw 4 ̋T̋AA@ ̥@ w̥= N& " w DC=%::\  x,EB @  0teP Dw\w Hu^5 B _$7_$%%_$C  r y`5x@`5x@_b$@_$@ @` _$@` %%      - % Z   _$ r f r te r f   # &P3 M   !@% %d  rdU0 rdB r U0 r U0@@5 _&#@_*#  _0#  $_ #w|Ԑ@ _"& - ^w DD [Wp @@`eWp C̥. e` ̥*  upC ̋  %  r` rl  ww |5 5!nwhNe5& ^'e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_%w 85 55Ne& l8e555@555 Ne5& l8e5w w 5& ew  6> w Nt@f V2ew w v D      + - ̥9 Wp @@`e̥0  w0 w  D Lԋw w N tf V2ew w u@t55@ 5(Nefef )% (3A@u5Btr2@ Aup( fef )% u-u-u-@w8  ~ ~w Nef ") w w D 5  =& )% `5ȥ=  = @w e   Jҋ~ @@)lw e& 7 7gw w D85U5_2+5P_2+  m@e4 ,5Ne & 2  uN \24USt%5D B/5@ B/5& & n-% 45@e-4  % U5EU  w E w D  +   r= wB w 5 a U5ff h-%ށ̥a &  t-e 3     U̥r 33 ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw D5"E@e44fef <6% B/U4 4  fef <6%5 w ww7 Ћ PPЋ w FD:5UE5Hw* _(/5uNfe & 4% _(/bNe & 2  uN \2)U5| m- 5 & 4%St%  $2 U   & 4% S U _- @_-w DE%%"5   & 4% U wv w ^D55@ B/  0 3 3 4 4 4 4 4 ww~w  h$5+ &5e-<e % &     1 ww  5f 1 7 f 1 7wX@ m7%e w       1 e-fww D R5 e %w.  5 e-w / 1ww  N 4ww rDCDpC \2 1 wZw FN 3wJ ~5 & E        ~5>wlYwfw Net@f V2e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -% w$ \4 `e vWt vwn@ `e @  \4%FBe U?00 `e 7U? a7 ?U ew dDE wZw FD5 3 5N \2!w5A vBB-  }ee@ !ۃ `!ւ ` `.mj& E%\зmVЇ%w w7*'$!      7& A& BF7!W-=7& & e Ӌ  &7\& e Jӕ-Dӕ0B~0ӕ.  ӕ0~ B~&7 & Ze ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_8@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff Je w5  @ 0   Wp `e06@~ w DCB P  5 , :% & E& - z   5 , @ :% & f E -  (˥-%0     ,:% &  - 8 5E& z   5 , @ :% & f E -  ww Nefef 5& >;e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& ;eww  fff 5& ;eww | 5 %O N  = 555Ne5& l8e555'0Ne5 B& l8e57 Be0" 5%55 5 B5@B e a=%7w %5 B5Ne& l8e55e0%7`Jʕ0%ʕ1  %˕0 ʥ9 @(#)crtdriver.c 4.2 (Berkeley) 1/9/85l&& &&&&&tL&&&(rcan't open %s Unknown command %c (%o) @(#)crtplot.c 4.1 (Berkeley) 11/11/83TERM,N^`bdfhjlVnprtvxz|~PX>H@JR\BLZ2F4xxxx|dumb:licoambsdadbeohchzinmimsncnsosulxbxnxtxsxxalbcbtcdceclcmcrcsdcdldmdoedeik0k1k2k3k4k5k6k7k8k9hoicimipkdkekhklkrkskullmandnlpcrcscsesfsosrtatetiucueupusvbvsveALDLUPDOLERIsgug unknown ^"Z"J"TERMCAP/etc/termcapTermcap entry too long Bad termcap entry Infinite tc= loop Termcap entry too long E^^\\::n r t bf ##t$OOPS5MS7)  ((((( AAAAAABBBBBB h47d7o&7x7f7e6g7c7s6l6L<7u@7D7O*7XR7U=(\EE  N˵  & 4 $% _~@m -_:@m 7-h*^'7 |   _Lu- _:u-  F u-_:w 5 . & v $%E N fff eww D  & & 0% ^& 0%-n  4 wPw <D  & & e bin/dumbplot 755 0 12 24056 6024532415 6404 #/ e7cce7|3 /   7%  Tw u@ȥ-? l r. w  e   4 TwBNe R 7^Ne R 7LNe R7>5 Nf  5NfP e TN 4N |w  _a _ x&N 5N 5f  _N 5N 5N 5N 5fff e_Nfe D Ne _ z_N 5N 5f N 5N 5f N 5N 5N 5N 5fff N 5N 5N 5N 5N 5N 5fffff ze cN 5N 5N 5ff %HNfe D Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff `e  A@ EN %_D w w D    5%    5%t5@]ww DC̥       wtw `wlw Xwdw P5 5 AWpZAmA(N  -.  -.   Tww uu. .up C rv.mt.5d.up 7r`.m^.5NfP.N.* >eww zww r  WpZ` ( - . -.wXw D----WpZm-@p(  ----- 7-ww - -up C r-m-5-up 7r-m-5uu d- ^-up C rR-mP-5@-up 7r<-m:-5w4-w,-*-WpZm -*(N fff* >ewLw 8wDw 0, ,up C r,m,5,up 7r,m,57,w,ww  5fe h   7l,%`, \,0T, P,  7F,%ZZ:, 6,.,5 5 AWpZAm ( -, -+  7+7+w8w $+ +up C r+m+5+up 7r+m+57+w+WpZm+*(ww w~+@@7p+wh+@ @7Z+ww $H+ B+up C r6+m4+5 $+up 7r +m+5 N H5N N H@-N N H5 W@ @u5@ @u55@55@55 05555555& e55& e5w`*wX*V*WpZmL*@p( u-ww r 5 w(*X  ̋ ̥/ & V 5  ` V 5 .w$7)N w) f r m X% N N  hD N  @e!چԐB-fef \%5 @a % D-ņ\ w V)) m):-( X% h ̥tbc^efe r Ce˥: ˋ (% (Nefe h %7 v(Ce ˥: A@`5% X%.(@` & r w(7 (wTw @(˥#%  ̋ ̋˥|˥:ˋ w˥:˥| ˋˋ˥: Dw D̥: ̥̋: ww ' ʋRʋAA@ ʥ@wʥ#  ʥ0 CpDe`w N' ̋T̋AA@ ̥̋:̥@ ww & ̋T̋AA@ ̥@ w ̥= N& " w DC=%::\  xREB @  0teP Dw. w  5 55Ne& Be555@555 Ne5& Be5w w 5& ew  w D      + - ̥9 Wp @@`e̥0  wB w * fef %5 w w D Lԋw w u@t5353@ 5(4Nefef `% (3A@u5Btr323@ Aup(4 fef `% u-u-u-@w> w * Nef  w$ w  D 5  =#& 8% `5ȥ= # = @w e   Jҋ~ @@tlw e& 7 <74gw w : D85U5_5P_  m@e4 ,5Ne &   uN 24USt%5 5 5& & \% 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff V%ށ̥a &  be 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 w ww76  PЋ w FD:5UE5Hw* _5uNfe & X% _bNe &   uN 2)U5| m- 5 & X%St% B  U   & X% S U _ @_w DE%%"5   & X% U wv w ^D55@    3 v 4 4 4 4 4 ww~w  $5+  &5e-fe % & D    h ww  5f h 7 f h 7:wX@ m7%e w       h e-ww D |5 e %wX  5 e->w | ww  N ^ww rDCDpC 2  wZw FN vwJ ~5 & E        ~5>wlYwfw Net@f ,e  w6w.w  F4U784U7.4,4$Ae vB7   % 55 a  a!PE -%4 w$ 2 `e vWt vw@ `e @  2%ple U?ZZ `e 7H4U?< a7. &(? U ew dDE wZw FD5 v 5N 2!w5A vBB-  }ee@ !ۃ `!ւ ` `Xm& E%mz%w w7:*'$!      7& A& BF7!W-"7& & e Ӌ  &7& e nӕ-hӕ0B~Tӕ.  ӕ0~ B~&7( & Ze ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff Je w5  @ 0   Wp `e06@~ w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   ww Nefef 5& !e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& ^!eww  fff 5& ^!eww | 5 %O N  = 4555Ne5& Be5455'0Ne5 B& Be57" Be0" 5%455 5 B5@B e4 a=%47:4w %45 B5Ne& Be55e0%47?`Jʕ0%4ʕ1  %4˕0 ʥ9 @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)arc.c 5.1 (Berkeley) 5/7/85@(#)circle.c 5.1 (Berkeley) 5/7/85@(#)close.c 5.1 (Berkeley) 5/7/85%c @(#)cont.c 5.1 (Berkeley) 5/7/85@(#)dot.c 5.1 (Berkeley) 5/7/85@(#)erase.c 5.1 (Berkeley) 5/7/85@(#)label.c 5.1 (Berkeley) 5/7/85@(#)line.c 5.1 (Berkeley) 5/7/85@(#)linemod.c 5.1 (Berkeley) 5/7/85@(#)move.c 5.1 (Berkeley) 5/7/85@(#)open.c 5.1 (Berkeley) 5/7/85TERMcoli@(#)point.c 5.1 (Berkeley) 5/7/85@(#)space.c 5.1 (Berkeley) 5/7/85@(#)subr.c 5.1 (Berkeley) 5/7/85b ^ N TERMCAP/etc/termcapTermcap entry too long Bad termcap entry Infinite tc= loop Termcap entry too long E^^\\::n r t bf ((((( AAAAAABBBBBB h444 doxfegcslLuDOX(U=(\ Be5w w 5& ew  w D      + - ̥9 Wp @@`e̥0  wB w * fef %5 w w D Lԋw w u@t5353@ 5(4Nefef `% (3A@u5Btr323@ Aup(4 fef `% u-u-u-@w> w * Nef  w$ w  D 5  =bin/gigiplot 755 0 12 24156 6024532417 6377 #B e7cce7 /   7%  w u@ȥ-? l r. w  e   4 wNe  7Ne  7 Ne 75 Nf  5NfP re N 4N w  _a _ x&N 5N 5f _N 5N 5N 5N 5fff je_Nfe D Ne 6_ 8_N 5N 5f  N 5N 5f N 5N 5N 5N 5fff h N 5N 5N 5N 5N 5N 5fffff ze cN 5N 5N 5ff %HNfe D Ne  :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN :%_D ,ww pD    :5%    :5%t5@]w"w DC̥     :  ww *AABBBpfN CC p`AuA AB BBpfN CC p`Au@AB& ZeW4Dw@5@@ 5@@5AupCp Au@ AA@5AA AmAu5u uBu@ eNf N ff eww %Nf  Nf N  w\w H B ~ v r5pb -b?T% & B  , \&  5 - \?% & \   ww |577@77uww@7~zt %wHw 4w@w ,^ w0w  _& Z T L H"5F8 -8@?*% & @E&  "; D" 25I -C"?% 5 ߾ < -$"?%  ߖ& ߊ   tƁ"n5l"& P"  ww 577@-70uww @-'577@-7u ww@-Nf Nf N f  wbw Ns, o- o+ t% tdh dl w(w 577@77uww@7X %ww   B 7 7  ߦ 5 -?% & r  \ PV N J5H: -:P?,% & P   p 5 -p?% & p   & & h ewRw >57h7t@-V7uwTw`@-:Nf  ww 57577uw7 7~u w7ww @55 555@5!w~@uA& Ne57555& ne&7 55& Re555w @55!|w5& (e&7w 5 5& ew5& ew 55 5<537X.55 & e&7<555 & Zeww 55 & :ew$75 555 & ew 57& Ne @5& :e&7w 57ruW@& e7jw z 557Z57Z57Z57Z57Z5uwVuwVuwVuwVuwV55w w 5 5!~w Ne5& e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_l6> w D      + - ̥9 Wp @@`e̥0  wp w X fef %5 wD w , D Lԋw$ w  u@t55@ 5lNefef % (3A@u5Btr2@ Aupl fef % u-u-u-@wl lw e& 7 b7Zgw w  D85U5_t5P_t  m@e4 ,5Ne & f  uN 4USt%5 5 5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7 w FD:5UE5Hw* _v5uNfe & % _vbNe & f  uN )U5| m- 5 & %St%  r U   & % S U _4 @_8w DE%%"5   & % U wv w ^D55@   T 3  4 4 4 4 4 ww~w  ^$5+ n &5e-2Pe % &      ww  5f  7 f  7wX@ m7%e w   x     e-\ww D H5 e %w$  5 e- w  lww  N ww rDCDpC   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -% w$  `e vWt vwd@ `e @  %<8e U?&& `e 7U? a7 ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `$m& E%m%w w7 *'$!     J 7@& A0& BF7!W-V#7& & e Ӌ  &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~&7p & Le Vӕ-0 Jӕ.> B~ӕe0 ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_V@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w&w Nefef 5& ~!e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& !eww  fff 5& !eww  5 %O N  = 555Ne5& H#e5 55'0Ne5 B& H#e57x Be0" 5% 55 5 B5@B e a=%7w % 5 B5Ne& H#e55e0% 7`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)arc.c 5.1 (Berkeley) 5/7/85IA7C(A%d c)[%d,%d]@(#)circle.c 5.1 (Berkeley) 5/7/85C[%d]@(#)close.c 5.1 (Berkeley) 5/7/85@(#)cont.c 5.1 (Berkeley) 5/7/85DV[%d,%d]@(#)dot.c 5.1 (Berkeley) 5/7/85@(#)erase.c 5.1 (Berkeley) 5/7/85S(E)@(#)label.c 5.1 (Berkeley) 5/7/85T(S0 H2 D0 I0) "@(#)line.c 5.1 (Berkeley) 5/7/85DD@(#)linemod.c 5.1 (Berkeley) 5/7/85W(P1)W(P00011100)W(P10000000)W(P10001100)W(P11111100)W(P1)@(#)move.c 5.1 (Berkeley) 5/7/85DP[%d,%d]@(#)open.c 5.1 (Berkeley) 5/7/85@@S(I0 T0 [0,0])@(#)point.c 5.1 (Berkeley) 5/7/85DV[]@(#)space.c 5.1 (Berkeley) 5/7/85?ED@!h3@333333Ay2?ϒy@!hI@!hB:IvDv6T1E r OER `EM2 fkCӴKE\QEYWF\*~`EM2 f  dhotx2f@e2g csBlBLuDlOxXU=(\EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz bin/hpplot 755 0 12 36320 6024532421 6056 8@ e7cce7F / %  7%  ,w 0u@ȥ-? l r. w  e   4 ,w/Ne % 7Ne % 7nNe %7`5 Nf ' 5NfP (e ,N 4N +w 4/ _a _ x&N 5N 5f  _N 5N 5N 5N 5fff e_Nfe D Ne _ _N 5N 5f N 5N 5f N 5N 5N 5N 5fff HN 5N 5N 5N 5N 5N 5fffff ze cN 5N 5N 5ff f%HNfe D Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN P&%_D Vw,w ,D    P&5%    P&5%t5@]w8,w $,DC̥     P&  w,w +XAABBBpfN CC p`Au@&5& e5@5 Nf  _@55@&@uA& Ne5@@55@ @5555555 5555 5&5&5&5&5&5& |e05 NNmfNm  5555uu5555uu55  w|*w h*5,5uu55$5uu 55555w$*5 w *,%Nf  U@u5@&@uA& e555555NNmfNm  5555uu5555uu55 @ @-wH)w 4) Z ߼ 5 -Z?% & ߈Z ")  *% L 0&  j+w(w (Nefe5w~wx@& ,"e Nefe5wXwR@& ,"e   !5 -@?% & ߚ @& ") z r n!5l^ -^@?P% & > @& ") $   !5 -@?% &  @& ")  ߺ !5 -@?% & ߆ @& ") 5ww@75ww@7w&w &w&w &    5 -?% &  ") * ߶ 5 -*?% & ߂* ") l df ^ Z5XJ -Jd?<% & *d ")  a  5 -a?% & a ")  ߮ 5 -?% & z ") d *^ V R5PB -B*?4% & "* ") p 5 -p?% & p ") i ߦ 5 -i?% & ri ") w#w #  P J B >5<. -.? % &  ") * 5 -*?% & ߶* ") l ߒ ]5~ -~l?p% & ^ ") Bl FD@ <25:L, -,F?% 8  ? -$@?%  & ")  Ɓ5@E&& ߜ ") * x t5rd -d*?V% & D* ") . d( 5 - d?% & d ") T 5 -T?% & ߔT ")  z t l h5fX -X?J% & 8 ") " *  5 -*?% & * ") p ߼ 5 -p?% & ߈p ") r il d `5^P -Pi?B% & 0i ") zww v5wVwP@wR5w<w6@w2.5ww @w5 ww@wNf Nf  N f  ww  V ZP H D5B4 -4Z?&% & Z ")  5 -?% & ߸ ") * ߔ 5 -*?r% & `* ") J mD < 856( -(m?% & m ") s_^ oS 1 5 -1?% & ߘ1 ") b|_X5x_f -f_b?T% _R& >_h_r ( 6"  5 -6?% & 6 ") 5_ -_b?% _R o_r t_r tK n 7h ` \5ZL -L7?>% & ,7 ") _5_ -_b?% _R_d_r 8 ߾ 5 -8?% & ߊ8 ") t_5p_^ -^_b?L% G_ : 54 , (5& -5? % & 5 ") _5e -_b?% _ ߰ Vd_hl 1 ߂ ~5|n -n1?`% & N1 ") 8_54& -& b?% _b ") Z 5 -Z?% & ߶Z ") "  ߎ 5z -z?l% & Z ") D *> 6 250" -"*?% & * ") p 5 -p?% & ߪp ") i ߆ 5r -ri?d% & Ri ") ww Nefe5whwb@& ,"e Nefe5wBw<@& ,"e  a ߸ 5 -a?% & ߄a ") n h ` \!5ZL -L@?>% & , @& ")     !5 -@?% &  @& ")  ߨ !5 -@?% & t @& ") Z T L H!5F8 -8@?*% &  @& ") 5wHwB@7D5w4w.@7*w<w ( - &  ) 7L r% U 7L 0& E 77 7 7 7  L F > :58* -*?% &  ") * 5 -*?% & ߲* ") d ߎ 5z -zd?l% & Zd ") D c> 6 250" -"c?% & c ")  5 -?% & ߪ ") * ߆ 5r -r*?d% & R* ") < p6 . *5( -p? % & p ") i 5 -i?% & ߢi ") h& & Heww 5ww@w5ww@wNf    d  5 -d?% & d ") w4w 57574EuB7Du B7ww %_ ` Z R N5L> ->?0% &  ")  *: Z 5 -Z?% & ߼Z ")  *L 0&  ,fe )%5ww @m7%P_(" F @ 8 452$ -$?% &  ") * 5 -*?% & ߬* ") p ߈ 5t -tp?f% & Tp ") > i8 0 ,5* -i?% & i ") @e7@wPw <@EU =@tEU =w$w  5'525 ;)5& ne5 & le55555& :e5 & 8ew 5 5 55 !pw l "5!V7w` Ne5& b%e5 5A5@ 5@557 A55@ 55uW@5575757575W@uwuwuw55uwf5w | 5& e@7Nwt w ` "5 @"@7wJ 755775& e55u557457$5755@57(57575N57@uu& %ew 5 55Ne& 3e555@555 Ne5& 3e5w4 w 5& ew 6> w Nt@f -ew w D      + - ̥9 Wp @@`e̥0  w 6 m 7"Xއw T D LԋwL w 8 N tf -ew, w  D85U5_'5P_' d mZ@e4 ,5Ne & |-  uN -4USt%5 *5 *5& & )% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff )%ށ̥a &  )e 3     U̥r 33w D5"E@e44fef 1% *U4 4  fef 1%5 wz ww7P w FD:5UE5Hw* _*5uNfe & /% _*bNe & |-  uN -)U5| m- 5 & /%St%  - U   & /% S U _J) @_N)w DE%%"5   & /% U wv w ^D55@ *  j+ 3 / 4 4 4 4 4 ww~w  $5+ &5e-e % &     , ww  5f , 7~ f , 7wX@ mT7RH%e w  2 $    , e-ww D 5 e %w  5 e-w  + ,ww  N /ww rDCDpC - 2- wZw FN /wJ ~5 & E        ~5>wlYwfw Net@f -e  w6w.w  U7U7Ae vB7   %z 55 a  a!PE -B% w$ / `e vWt vw@ `e @  /%e U? `e 7U?Ք a7 ՠ?U ew dDtE wZw FD5 / 5N -!w5A vBB-  }ee@ !ۃ `!ւ ` `m"& E%Էmԇ%w w7v*'$!      7& A|& BF7!^W-l87J& & e Ӌ  &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~&7 & Ze ӕ-0 ӕ. B~ӕe| ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_l3@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff Je w5  @ 0   Wp `e06@~ w DCB P  5 , :% & E& ") z   5 , @ :% & f E ")  (˥-%0     ,:% &  ") 8 5E& z   5 , @ :% & f E ")  ww Nefef 5& 6e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& 6eww  fff 5& 6eww | 5 %O N  = 555Ne5& 3e555'0Ne5 B& 3e57 Be0" 5%55 5 B5@B e a=%7w %5 B5Ne& 3e55e0%7`Jʕ0%ʕ1  %˕0 ʥ9 @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)arc.c 5.1 (Berkeley) 5/7/85@(#)circle.c 5.1 (Berkeley) 5/7/85@(#)close.c 5.1 (Berkeley) 5/7/85@(#)cont.c 5.1 (Berkeley) 5/7/85@(#)dot.c 5.1 (Berkeley) 5/7/85@(#)erase.c 5.1 (Berkeley) 5/7/85@(#)label.c 5.1 (Berkeley) 5/7/85@(#)line.c 5.1 (Berkeley) 5/7/85@(#)linemod.c 5.1 (Berkeley) 5/7/85@(#)move.c 5.1 (Berkeley) 5/7/85@(#)open.c 5.1 (Berkeley) 5/7/85/dev/tty@(#)point.c 5.1 (Berkeley) 5/7/85@(#)space.c 5.1 (Berkeley) 5/7/85@(#)subr.c 5.1 (Berkeley) 5/7/851@rzA]ݬ5@3dlB##3h?ØGf@lB,l$d!rJGSrCu%طK@0qi9IE4Ÿ@;\)@3dG@n2d~2o2xH3fV3eH2g"3c.3sX2lX2L2u2D2O2X2U=(\7?>% & ,7 ") _5_ -_b?% _R_d_r 8 ߾ 5 -8?% & ߊ8 ") t_5p_^ -^_b?L% G_ : 54 , (5& bin/hp7221plot 755 0 12 25346 6024532423 6402 &VB e7cce7< /   7%  w u@ȥ-? l r. w  e   4 wNe  7Ne  7Ne 7v5 Nf  5NfP( ne N 4N w  _a _ x&N 5N 5f  _N 5N 5N 5N 5fff e_Nfe D Ne "_ ,_N 5N 5f N 5N 5f |N 5N 5N 5N 5fff  N 5N 5N 5N 5N 5N 5fffff ze cN 5N 5N 5ff %HNfe D Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN 6%_D xww lD    65%    65%t5@]ww DC̥     6  ww *AABBBpfN CC p`AuA AB BBpfN CC p`Au@AB& V eW4Dw@5@@ 5@@5AupCp Au@ AA@5AA AmAu5u uBu@ eNf  ww %Nf ?Nf  6 t0 ( $5" -t?% & t  577@ w w  >   ww 57z7@7j57n7r@7X p qj b ^5\N -Nq?@% & .q   V wPw <wHw 4w@w ,N\   5 -?% & ߢ  ww 57f7r@-T 57V7Z@->$5767B@-$5 7&7*@-Nf Nf  N f | wDw 0s, o- o+ t% tdh dl ww 57R7^@7B57F7J@70 H pB : 654& -&p?% & p   V w(w V > 7 7    V % V    V # & &  eww 57H7T@-6 5787<@- Nf  Nf | w`w L5757Euw5Eu w55557w w  @tE5U`  ߘ !5 -@?v% & dfE  @tE5% e@ . ( !5 - @?% & fE  @tE5@tE5P% e@  ߖ !5 -@?t% & bfE  @tE5% e@ , &  !5 - @?% & fE  @E5% e@ " ߪ  -@?% & ~  w5tfEw  @tE5U` < 6 . *!5( -@? % & fE  @tE5% e@  ߶ !5 -@?% & ߂fE  @E5% e@ P"J B >6 -6@?(% &   wP5 fEw &E% e@ "  -@?% & ߞ  w5fEw @55 555@5!w~@uA& Ne57555& ne&7n 55& Re555w @55!w5& (e&7w 5 5& ew5& ew 55 5<537.55 & e&7555 & Zeww 55 & :ew$7n5 555 & ew 57,& Ne @5& :e&7 w 57uW@& e7w z 557575757575uwuwuwuwuw55w w 5 5!w Ne5& e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_h6> w D      + - ̥9 Wp @@`e̥0  wp w X fef %5 wD w , D Lԋw$ w  u@t5d5f@ 5Nefef % (3A@u5Btrf2d@ Aup fef % u-u-u-@wl  lw e& 7 7gw w  D85U5_p5P_p  m@e4 ,5Ne & b  uN 4USt%58 54( 5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7` w FD:5UE5Hw* _r5uNfe & % _rbNe & b  uN )U5| m- 5 & %St%  n U   & % S U _0 @_4w DE%%"5   & % U wv w ^D55@   P 3  4 4 4 4 4 ww~w  $5+ &5e-e % &      ww  5f  7N f  7wX@ m$7"%e w        e-ww D 5 e %w  5 e-w  hww  N ww rDCDpC   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  >U7<U7v>t<lAe vBX7 Z  P%J 55 a  a!PE -%< w$  `e vWt vw@ `e @  %e U? `e 7<U? a7v np?hdU ew dDDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `mR& E%Dm>%w w7*'$!      7& A& BF7!W-R&7z& & e Ӌ   &7D& e 2ӕ-,ӕ0B~ӕ.  ӕ0~ B~ &7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_R!@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w&w Nefef 5& z$e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& $eww  fff 5& $eww  5 %O N  = H555Ne5& D&e555'0Ne5 B& D&e57 Be0" 5%55 5 B5@B eH a=%H7Hw %5 B5Ne& D&e55e0%7`Jʕ0%Hʕ1  %H˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)arc.c 5.1 (Berkeley) 5/7/85IA7@(#)circle.c 5.1 (Berkeley) 5/7/85@(#)close.c 5.1 (Berkeley) 5/7/85v@}@(#)cont.c 5.1 (Berkeley) 5/7/85@(#)dot.c 5.1 (Berkeley) 5/7/85@(#)erase.c 5.1 (Berkeley) 5/7/85@(#)label.c 5.1 (Berkeley) 5/7/85~'%s@(#)line.c 5.1 (Berkeley) 5/7/85@(#)linemod.c 5.1 (Berkeley) 5/7/85vAvDvBvCvEvA@(#)move.c 5.1 (Berkeley) 5/7/85@(#)open.c 5.1 (Berkeley) 5/7/85@~VR~W~SvA~*z@(#)point.c 5.1 (Berkeley) 5/7/85@(#)space.c 5.1 (Berkeley) 5/7/85@(#)subr.c 5.1 (Berkeley) 5/7/85@!h3@333333Ay2?ϒy@!hI@!hB:IvDv6T1E r OER `EM2 fkCӴKE\QEYWF\*~`EM2 f$~ dd op x.!f l> L u Dh Ot X U=(\pB : 654& -&p?% & p   V w(w V > 7 7    V % V    V # & &  eww 57H7T@-6 5787<@- Nf  bin/implot 755 0 12 22270 6024532424 6056   e7cce7 / T  7%  6w pu@ȥ-? l r. w  e   4 6w$Ne * 7(Ne * 7Ne *75 Nf  5NfP e 6N 4N ^w  N _a _ x&N 5N 5f z _N 5N 5N 5N 5fff e_Nfe D Ne _ _N 5N 5f T N 5N 5f N 5N 5N 5N 5fff t N 5N 5N 5N 5N 5N 5fffff e cN 5N 5N 5ff %HNfe D Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN %_D ww D    5%    5%t5@]ww xDC̥       wVw BwwHw 4&@@5@@ 55@uB55& e5A5 -N z@55@ 55Nf z u- u- 5 N fff 4e5Nf ff 4e5NN z&fN  %x%%@x  xy%%%m@@55uB5& euu5u-u-u-u-u-u-u-u- %%%Nf  uuu-_%_@ _ xu- _0_u- _0_%mjb@@55uB5& euu5u-u-u-u-u-u-u-u- %%Nf  uuu-_%_@ _ xu-_u-_ww u-u-  u- wlu-u- w B @ wB@w (NfNmffNmff e w w  p  ww Nf eww ww   p 77ww  p h r&7wZwdwV  p 747&7w,w6w(  7wwT7N%  p @aw w  p  5www 5www 5w~wwz 5 wdwnw`  p  p ww w`w L 6 0 ( $!5" -@?% & fE v w w @t p N p w w 5 C ,  Ԥ2̋ #ˋ  *50˥9  *t r5 2Nf  wV w B wlwhwB w .  p  p  p  p    p e  p   p  p  p   p  w w wz p  p  p  p N   p w| w h Nfff ew\ w H A7"A757 57 X7B@AAA77B@A AA7w w 5 5!w Ne5& e55A5 @555A5 @5@5 5O5<%< 5O5e<% 5C r Bv V5C r Bv V55 555@5 %_ 6> w D      + - ̥9 Wp @@`e̥0  wL w 4 D Lԋw, w  D85U5_5P_  m@e4 ,5Ne &   uN 4USt%5\ 5X 5& & `% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff Z%ށ̥a &  fe 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7 w FD:5UE5Hw* _5uNfe & :% _bNe &   uN )U5| m- 5 & :%St% *  U   & :% S U _ @_w DE%%"5   & :% U wv w ^D55@    3 X 4 4 4 4 4 ww~w  B$5+  &5e-e % &     J ww  5f J 7 f J 7"wX@ m7%e w  j \    J e-@ww D ,5 e %w  5 e-w ^ ww  N @ww rDCDpC   wZw FN XwJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -z% w$  `e vWt vwH@ `e @  % e U?  `e 7U? a7 ?U ew dDE wZw FD5 X 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `mv& E%hmb%w w7*'$!      7& A& BF7!W- 7& & e Ӌ  &7h& e Vӕ-Pӕ0B~<ӕ.  ӕ0~ B~&7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& v z   5 , @ :% & f E v  (˥-%0     ,:% &  v 8 5E& z   5 , @ :% & f E v  w&w Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& 2eww  fff 5& 2eww  5 %O N  = 555Ne5& e5n55'0Ne5 B& e57 Be0" 5%n55 5 B5@B e a=%7w %n5 B5Ne& e55e0%n7`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)driver.c 4.4 (Berkeley) 9/21/85~8Z:r%s: can't open %s @(#)arc.c 5.1 (Berkeley) 9/21/85$$@(#)circle.c 5.1 (Berkeley) 9/21/85@(#)close.c 5.1 (Berkeley) 9/21/85@(#)cont.c 5.1 (Berkeley) 9/21/85@(#)dot.c 5.1 (Berkeley) 9/21/85@(#)erase.c 5.1 (Berkeley) 9/21/85@(#)label.c 5.1 (Berkeley) 9/21/85@@(#)line.c 5.2 (Berkeley) 9/21/85AA@@@(#)linemod.c 5.3 (Berkeley) 9/21/85charset=@(#)move.c 5.1 (Berkeley) 9/21/85@(#)open.c 5.2 (Berkeley) 9/21/85@(#)point.c 5.1 (Berkeley) 9/21/85@(#)space.c 5.2 (Berkeley) 9/21/85@(#)charset.c 1.1 (Berkeley) 9/21/85 cour07nndoxfegvcslLuDOX U=(\fNmff e w w  p  ww Nf eww ww   p 77ww  p h r&7wZwdwV  p 747&7w,w6w(  7wwT7N%  p @aw w  p  5wwwbin/atoplot 755 0 12 27502 6024532426 6241 )2 e7cce7 /   7%  @w z U@-' l wA@e 73@e 7%5 `@&  5@b % @N ,N he@ %  , @ww  _@a _ x&N 5N 5f _A@ E_N 5N 5N 5N 5fff e_Nfe J Ne p_ _N 5N 5f  N 5N 5f N 5N 5N 5N 5fff H N 5N 5N 5N 5N 5N 5fffff e fN 5N 5N 5ff d%KNfe J Ne  < :N 5N 5N 5N 55 N A Aa1 u-Neffff le _|N 5% %  A@ EN 5%_< ww  Neqf B %%w@w |    A@ EN ==wNw : Nef ^ %% % @ Nw @w   a  5 -a?% & a  N x N x N x N x N x N x wvw b c ~ z5xj -jc?\% & Jc  N x N x N x ww  ww  ww  n 5 -n?% & ߲n  N x N x wnw Z d| t p5n` -`d?R% & @d  N x N x N x N x 5 @ @m  x u- ww  e 5 -e?% & ߞe  wjw V ~ tx p l5j\ -\t?N% & <t  5 D5&g -a ? % S Z@@m? ! -/@@m? %  ߴ & ߤ  @@mȋ  ~Ā5~@@m E&& R  ww  4 l. & "5  -l?% & l  N x N x N x N x ww  f ߤ 5 -f?% & pf  5 D5ZgL -La ?>% S 0 ,Z@@m?  ! -/@@m? %  &  @@mȋ  Ā5@@m E&& ߆  wRw > h mb Z V5TF -Fm?8% & &m  N x N x ww ww ww  p 5 -p?% & ߦp  N x N x wbw N x r j f!5dV -V@?H% & 6 @&   @t? )5 -@t?%  & @&  ww ~ s ߚ 5 -s?x% & fs  N x N x N x N x ww D      + - ̥9 Wp @@`e̥0  ww Nef %ww Neff %w|w hD A555  ԋuNeffe %w2w DC 5 5 _%%_ 5 %*e5  AWp `eu 0u%l5  %h%[ e  _@Neffff Ve   * O  A@ EN 5% % % %Nf ^ &    %_ A@ E%Nf ^ @wN 5 w pN%c%s%[Nf ff f& ew:5 5 5 5 %e%f %o%xDe5 5 A @ EN % % % %- Ԑ A @ EN  _Z%+_Z  _F%a%f %A_n%F_n % A@vN O% A@v@mAm@ vA@v5u0 %a%fW7 5`u`u C% S P Ԑ A @ E =%%.%e%E- *% ' $ ! Ԑ A @ EN %+%-%0%9 A@  5u% N  ^ =   @e! @e! _@t@]   xNe PA _Ne PA @H@pHw .DC = 5%c%0u5 %s    %r%c5 %[r      %%   ^ =  D- %cwF w . D ̥^   % %]%-+  $%-̥]4   ̠   %]  w w v D*\5% %-%+ 5 55 55  B5eA5 %.55  B5eA5  %E%e$%+%-  Wp B`e  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& e5 55w 6 m 7"w D Lԋw| w h D% 5     |@w: 4- w  D85U5_5P_  m@e4 ,5Ne &   uN 4USt%5 5 5& & j% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff d%ށ̥a &  pe 3     U̥r 33w D5"E@e44fef !% U4 4  fef !%5 wz ww7 w FD:5UE5Hw* _5uNfe & D % _bNe &   uN )U5| m- 5 & D %St% j  U   & D % S U _ @_w DE%%"5   & D % U wv w ^D55@    3 b 4 4 4 4 4 ww~w  |$5+ L &5e-P.e % & .    T ww  5f T 7 f T 7bwX@ m7%e w       T e-zww D f5 e %wB  5 e-(w h ww  N J ww rDCDpC   wZw FN bwJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  0XU7"VU7XVAe vB7   % 55 a  a!PE -%V w$   `e vWt vw@ `e @   %ZVe U?DD `e 72VU?& a7 ? U ew dDE wZw FD5 b 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `Bm& E%m%w w7*'$!     * 7 & A& BF7!W-(7& & e Ӌ  &7& e ӕ-ӕ0B~|ӕ.  ӕ0~ B~&7P & Le 6ӕ-0 *ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_#@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w&w Nefef 5& &e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& <'eww  fff 5& <'eww  5 %O N  = b555Ne5& (e555'0Ne5 B& (e57X Be0" 5%55 5 B5@B eb a=%b72bw %5 B5Ne& (e55e0%77`Jʕ0%bʕ1  %b˕0 ʥ9 6@~ @(#)atoplot.c 4.2 (Berkeley) 1/9/85N,T&Ju{rcan't open %s %dsolidsoliddotteddotdashedshortdashedlongdasheddotlongdashdotshortdashdotdotdash%d@(#)arc.c 4.1 (Berkeley) 6/27/83@(#)circle.c 4.1 (Berkeley) 6/27/83@(#)close.c 4.1 (Berkeley) 6/27/83@(#)cont.c 4.1 (Berkeley) 6/27/83@(#)dot.c 4.1 (Berkeley) 6/27/83@(#)erase.c 4.1 (Berkeley) 6/27/83@(#)label.c 4.1 (Berkeley) 6/27/83@(#)line.c 4.1 (Berkeley) 6/27/83@(#)linmod.c 4.1 (Berkeley) 6/27/83@(#)move.c 4.1 (Berkeley) 6/27/83@(#)open.c 4.1 (Berkeley) 6/27/83@(#)point.c 4.1 (Berkeley) 6/27/83@(#)putsi.c 4.1 (Berkeley) 6/27/83@(#)space.c 4.1 (Berkeley) 6/27/83~~dddddddddddddTTl ((((( AAAAAABBBBBB >"d"o"x#f#e"g#c#s"l"L"u#D"O"X#U=(\    %%   ^ =  D- %cwF w . D ̥^   % %]%-+  $bin/plottoa 755 0 12 15362 6024532427 6243 " e7cce7 / B  7%  $ w ^U@-' l wA@e  73@e  7r%5 N@&  5@P % $ N ,N L e@ %  , $ ww ~ _@a _ x&N 5N 5f  _N 5N 5N 5N 5fff e_Nfe T Ne L_ _N 5N 5f 2N 5N 5f N 5N 5N 5N 5fff N 5N 5N 5N 5N 5N 5fffff be cN 5N 5N 5ff %HNfe T Ne :N 5N 5N 5N 55 N A Aa1 u-Neffff e  A@ EN 5%_< w w   A@ EN 5%w  A@ EN 5%t5@]w V     A@ EN ==w( w  N fff_ Jew w w w w w n Jw w Nfq J%w w Nfz J%w w N fff Jew w x Nf J%wr w ^ N J w\ w H Nf f fff Je w0 w  Nff Jew w N J w w N f fff Je w w D      + - ̥9 Wp @@`e̥0  wx w ` fef %5 wL w 4 D Lԋw, w  D85U5_5P_  m@e4 ,5Ne &   uN 4USt%5 5 5& & N % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff H %ށ̥a &  T e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7 w FD:5UE5Hw* _ 5uNfe & (% _ bNe &   uN )U5| m- 5 & (%St% v U   & (% S U _ @_ w DE%%"5   & (% U wv w ^D55@   3 F 4 4 4 4 4 ww~w  $5+ X &5e-\:e % & :    8 ww  5f 8 7 f 8 7nwX@ m7%e w       8 e-ww D r5 e %wN  5 e-4w L ww  N .ww rDCDpC  t wZw FN FwJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  <HU7.FU7$H"FAe vB7   % 55 a  a!PE -%F w$  `e vWt vw@ `e @  %fbe U?PP `e 7>FU?2 a7$ ?U ew dDE wZw FD5 F 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `Nm& E%m%w w7*'$!     6 7,& A& BF7!W-7& & e Ӌ  &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~&7\ & Le Bӕ-0 6ӕ.* B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& d z   5 , @ :% & f E d  (˥-%0     ,:% &  d 8 5E& z   5 , @ :% & f E d  w&w Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& eww  fff 5& eww  5 %O N  = R555Ne5& e555'0Ne5 B& e57d Be0" 5%55 5 B5@B eR a=%R7>Rw %5 B5Ne& e55e0%7C`Jʕ0%Rʕ1  %R˕0 ʥ9 6@~ @(#)plottoa.c 4.2 (Berkeley) 1/9/85x2|T4rcan't open %s s %d %d %d %d e m %d %d n %d %d l %d %d %d %d p %d %d t%s a %d %d %d %d %d %d c %d %d %d f%s d %d %d %d %d %s .doxfegdcpslLuDOXU=(\@e44fef % U4 4  fef %5 wz ww7 w FD:5UE5Hw* _ 5uNfe & (% _ bNe &  bin/plot 755 0 12 1246 6024532430 5505 #!/bin/sh # @(#)plot.sh 4.4 (Berkeley) 9/21/85 # PATH=/bin:/usr/bin:/usr/ucb case $1 in -T*) t=$1 shift ;; *) t=-T$TERM esac case $t in -T450) exec t450 $*;; -T300) exec t300 $*;; -T300S|-T300s) exec t300s $*;; -Tver) exec lpr -Pversatec -g $*;; -Tvar) exec lpr -Pvarian -g $*;; -Ttek|-T4014|-T) exec tek $* ;; -T4013) exec t4013 $* ;; -Tbitgraph|-Tbg) exec bgplot $*;; -Tgigi|-Tvt125) exec gigiplot $*;; -Taed) exec aedplot $*;; -Thp7221|-Thp7|-Th7) exec hp7221plot $*;; -Thp|-T2648|-T2648a|-Thp2648|-Thp2648a|h8) exec hpplot $*;; -Tip|-Timagen) exec implot $*;; -Tcrt) exec crtplot $*;; -Tdumb|un|unknown) exec dumbplot $*;; *) exec crtplot $*;; esac @ :% & f E d  (˥-%0     ,:% &  d 8 5E& z   5 , @ :% & f E d  w&w Nefef 5& e C ӕ-B  `ȥ0 @bin/prof 755 0 12 36342 6024532437 5531 0  e7cce7x  /   7%  %w R(Uw2 eZ@ȥ-O @ȥl  ?@ȥa 7@ȥn /@ȥz '@ȥv @ȥs @ȥ0ȥ9 `5%5ue   v %d5 u-%ddCAAA7  & 77 E7 n   N e       > R w&w &5 4 5 L `    xe  g  0  U 07 55q55&C5&@ e   0zE@5 q&  f&K e cbV L%P d L e @ > e-4 w%w %j  7(  \   0^ e%4 %, % $ % % % B l %  H   xew$%w % ^ 4 f& etZ e | % 2x %7l %f%^XR ze 0e$e e% P % wR$w >$ ^ X f& e7  vC fe e"  " @ ߂ 6  %   ,% 7 t %  ^  f& e 0fe e" "A v@1@m?pe j ΂`e Tw"w "N    w"w "4%f  7"N \ Ne  & %  e  vw  vw@eWp@7 vww*"w " @# :'w"w ! p ,% 7f^ WpN' % %B82 e $WpmeueA  r7  xewh! -7 -߂A v}w !WpDme~z"-~&n0#b0#-^N0# 0m p 0m .-&(׃w w $6 ,% 7 &S L  @ m ` fe e5- &u e w, w  & 7w7 _  mh5_ `& Cwz &u>&  AwT &uf& 57 57577 DWp mq->Wp mq-1Wp mNf . &Wp mff %555@7&Wp m\ -L -n_7d  @7Jww   5 \ 7     e e! N e!   555 Nfe ee be!ه5 5 5 Nfe eNR. eN @#ww <ww u-@w@w pu-@wp@w V@A@wRw > $/@B2,2, #@B2,2, 2, w@B2, @0Aq55ׁNf ,! w @@ww  x& * B %w|w h   8 je *e& & *e WpN& WpN *e % 57r5F7^@wj7v5 _  m65f& 555555WEuAw557 55HE5B55&5&5& *e 5&555E@755wWA55&5&& *e -hF7L@D>& V7XHC5_N-_H- _Z l 0  _H0757Af& Vw55SE5M525&& *e55&5&5H& *e5 B5B&  ȥ_ `fe %Ne 5D5E5HC5e -_ wTw @ "wDw 0 "w4w  R eL D @5>0 -0e?"%  &  e X! ww  t 5 -t?%  & ߮ t X! 5 D5g -a ?|% S n jZ@@m?\ X !L -L/@@m?8 %  & " &  X! @@mȋ  Ā5 @@m E& &   X! ww t l ߘ 5 -l?v%  & d l X! N N N N ww  & m   5 -m?%  &  m X! N N ww ww |ww t p ߘ 5 -p?v%  & d p X! N N ww  6 0 ( $!5" -@?%  &  @& X! @t? )5 -@t?%  ߖ & ߊ @& X! wHw 4 f s` X T5RD -Ds?6%  & $ s X! N N N N ww DC AupB5 S  "̥ ;  & ӄ X! %;  7  & %bb& ӄ X! % ₎& %`@ @m A &@w  w DE5_^% _ _5`uu '& & !e5u%%wh @A 5`u`u  5u 5  5 u  5 u tmL CE 54E N  A@ f& & !e5u %%    %%%_B5 "5 5 E4N ff & !e W _B%_%__Bw D 5u5mu A@ww D 5u5 A@ww nDe m@ e@ 5u%% du %e u 5mu A@ww D 05u5 A@ww D%%055  m@ 5u%% e du %umumu 5umumu A@wRw >D      + - ̥9 Wp @@`e̥0  ww DC AupB 4  & %b 5% 傎& %`@ @m A &@wp  w R fef )%5 vw> w &%Vww  t7WpwAwpAmu% Nf  @m5uBmB-"C-Dm5TD-um~@5@- wz `ӁNRf Fm>u-Bm, B-т̒C-Lw  @@5@  vwpAmDu-6B @5  N ~C! p5ԒS DCRULC-f :m05D-/+D-!Cm @5&@5%3-f  5u0B555R DD-N& m-N&  -p_wr w ^ D LԋwV w B De LN H!4ee   H!4e Be v Nfe %w w -@ (w N % w BuNefef )%=@@w^ W f r @  W f r@  @ yw w D85U5_5P_  m@e4 ,5Ne & %  uN %4USt% 5 "5 "5& & !% 45@e-4  % U5EU  w E w D  +   r= wB w 5 a U5ff !%ށ̥a &  !e 3     U̥r 33 ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw D5"E@e44fef )% "U4 4  fef )%5 w ww7x  ы A@Ћ w FD:5UE5Hw* _"5uNfe & (% _"bNe & %  uN %)U5| m- 5 & (%St% r % U   & (% S U _! @_!w DE%%"5   & (% U wv w ^D55@ "  # 3 :' 4 4 4 4 4 ww~w  "$ 5+ &5e-e % &     ,% ww  5f ,% 7 f ,% 7jwX@ ml7j `% e w  J <    ,% e- ww D  5 e % w  5 e-w @# $ww  N "(ww rDCDpC % h% wZw FN :'wJ ~5 & E        ~5>wlYwfw Net@f %e  w6w.w   U7 U7  Ae vB7   % 55 a  a!PE -Z%  w$ ' `e vWt vw(@ `e @  '%e U? `e 7 U? a7 ?U ew dDE wZw FD5 :' 5N %!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7r*'$!     2 7(& A& BF7!W-07& & e Ӌ   &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~  &7X & Le >ӕ-0 2ӕ.& B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B V_+@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& X! z   5 , @ :% & f E X!  (˥-%0     ,:% &  X! 8 5E& z   5 , @ :% & f E X!  w&w Nefef 5& .e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& /eww  fff 5& /eww  5 %O N  =  555Ne5& 0e50 55'0Ne5 B& 0e57` Be0" 5%0 55 5 B5@B e a=% 7 w %0 5 B5Ne& 0e55e0%0 7`Jʕ0% ʕ1  % ˕0 ʥ9 6@~ #C333333a.outmon.out %%time cumsecs #call ms/call name %6.1f%9.2f%7ld %8.2f%7.7s %8.8s %s r%s: bad format %s: no string table (old format?) %s: no room for %ld bytes of string table%s: error reading string table %s: no symbols prof: No room for %u bytes of symbol table rprof: No room for %d bytes of count buffer prof: No room for %d sample pc's prof: unexpected EOF after reading %d/%d samples No time accumulated mon.sumwmon.sum%s@(#)close.c 4.1 (Berkeley) 6/27/83@(#)erase.c 4.1 (Berkeley) 6/27/83@(#)label.c 4.1 (Berkeley) 6/27/83@(#)line.c 4.1 (Berkeley) 6/27/83@(#)move.c 4.1 (Berkeley) 6/27/83@(#)open.c 4.1 (Berkeley) 6/27/83@(#)point.c 4.1 (Berkeley) 6/27/83@(#)putsi.c 4.1 (Berkeley) 6/27/83@(#)space.c 4.1 (Berkeley) 6/27/83: Unknown error: %d ",FXjz'6G[o&<Vt2Tr#D]w  8 K X l  & < V i RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator 0 0 *d*o*x~+f+e~*gX+cd+s*l*L*u*D*O*X*U=(\: can't open %s @(#)arc.c 5.1 (Berkeley) 5/7/85@(#)circle.c 5.1 (Berkeley) 5/7/85@(#)close.c 5.1 (Berkeley) 5/7/85@(#)cont.c 5.1 (Berkeley) 5/7/85@(#)dot.c 5.1 (Berkeley) 5/7/85@(#)erase.c 5.1 (Berkeley) 5/7/85@(#)label.c 5.1 (Berkeley) 5/7/85@(#)line.c 5.1 (Berkeley) 5/7/85bin/ratfor 755 0 12 33626 6024532447 6063 , .  e7cce7 / 4  7%  &%w `(7 $ %+  7^  1 ? & H xB & | ( x 0 $w(w 'h^ R  D   F & Q & "  xS & 5 Ne j5%:%( %) %, Ne & ڀ Y %,z & %:   &  x 1 n   w&w &Ne %: 8  *    w&w &    % N wn&w Z&7    7f `  ~z N p j   ^ 0  w&w &N x x   & N & 7 "N   %  % Ne  w%w %7   & # &  7  wn%w Z%N  t% hN wD%w 0%7 z *  7< ^Z 1 P  D 0   x h 0 & D9 &   w$w $N  ; N  w$w $ j% % %(DQ &  j%; %{%}% 1%( %%) %  j% % %  %=!W  &  t w#w #wm @w#w #7 & N &  w#w #h5  j5%;K% H%{%}% :%,%+%-%*%( %&%|%= Ne j% Ne %(  &  w"%)  w "7    7   p    0   & 1  5%(   _x %;   t  ]  %; $  x H & 5 >  & e    5 G= e &@ &  5 @ A H `wD! 5%;%(  %  & %) _N j5%( %) %  w   5  %  % N x7 N  N & rN  p! Ne u@ ȋN H' fw" w   % %;%}  l & ( & F %}  @, & ww 7 3 &  7      0   x l rwVw BN  ^ % t % N  \ww 5  5%  5%; @7 @   @ U ww 5  5%  5%; @E @  n@ U Zww  @ 5 % % % w w  $R   &* Z eN v ww p x  0 & &*  e 0 5%; %}% % %   >  % 77ww  c Z N | ww u   @ CvvN |wN r y u \ (`e%G    xh Z@!   Z \ @  @ Z 7 @ Z%=  | |_D %=%>%== Z_D %=%&   _D     / _    _     )%|    N V!m%G l%"%'_ _ w R%Gl Fbp> XwDw 0N V!mD%G  @  Zww  0> >  % Wp u`%##7  > w-= % ww v  lWpu`%## Zw-^wHw 4 A r 5 xA r e0N Zww 7 J    N x< & ww   F & N x ww  * ) & 55@ 0 Ne MT %@ 5 -x7 pwVw B   N# B .v r y %0 e %   N#   1  0 *  w % % %#%_?6 2% _?"    Z% % %# ? N j_% _ $ v%%  N 5   - _ :B ʥAʥZ `J ʋB ʥ0ʥ9_ ʋ_}?:ʥ"ʥ' $ $_tc jfe D V%  v @0@_  !ʥ\  ʥ   "_  %  ~ z %_= J _& _   _^  _    {_ _ _    4 %(ʥ)_<ʥ(_2{_6 _    }_ _ _ _  |w N j% % ww  j%   2 .wvw b@ b=A@   =w>w *DӋ %   &% !ww % w   A@ E  %  * % w  9@-76b@@7h@C 0 @h  e%ww%? 5 @ d@ &D (% @ D  (%7  &%ww r 0 * h p  &%wtw `h d5% % %(@e5 :=%):%"%'@e5 =@-! @e5 =%   ;=&fe  |x 1 Ne  &%Z 0 * P Aepwhw T !  j5% % % 78%;%{%}@w%% 5% %  h @ w ww  5% % %(( 5% %  * &7 v@vv \p R B5 :0% % % %,( _ 5% + 5% % ? u@p 5% %# T PD 5% % %,% ?* &5 u%( fe @5%) @   @0 fe (%ww D7 ̋  rew@ 7`DԢӋw w N  " &N  N 4t2 4& 0wB H'N 4w D V!  &ww 6 T7 R7 PBee@e l w e 5<%,  477 m%@ r5 -TjxC   5%,  77 fe%@ e -T@5  H: C x"   % <e5% r %T@ r_ 5<@e ֆ_ __@   D@   5@7_ R_ _ _ T_ _w D      + - ̥9 Wp @@`e̥0  w\ w D D Lԋw< w ( D85U5_5P_  m@e4 ,5Ne & %  uN &4USt% 5h "5d "5& & @!% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff :!%ށ̥a &  F!e 3     U̥r 33w D5"E@e44fef (% "U4 4  fef (%5 w ww7v Ћ w FD:5UE5Hw* _"5uNfe & *(% _"bNe & %  uN &)U5| m- 5 & *(%St% & % U   & *(% S U _! @_!w DE%%"5   & *(% U wv w ^D55@ "  # 3 H' 4 4 4 4 4 ww~w  ($ 5+ &5e-e %~ &     :% ww  5f :% 7 f :% 7wX@ mr7p f%~ e w  P B    :% e-&ww D  5 e %~ w  5 e-w N# $ww  N 0(ww rDCDpC & v% wZw FN H'wJ ~5 & E        ~5>wlYwfw Net@f %e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -`% w$ ( `e vWt vw.@ `e @  (%e U? `e 7U? a7 ?U ew dDE wZw FD5 H' 5N &!w5A vBB-  }ee@ !ۃ `!ւ ` `mr& E%dm^%w w7*'$!      7& A& BF7!W-,7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_*@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& f! z   5 , @ :% & f E f!  (˥-%0     ,:% &  f! 8 5E& z   5 , @ :% & f E f!  w@(#)r0.c 1.2 (Berkeley) 8/11/83switchSwitches nested > 5 I = if(.not.(I.eq.(Missing left parenthesis in case).or.Missing parenthesis in case)))Missing colon after defaultdefaultSwitches unwound too far@(#)r1.c 1.3 (Berkeley) 8/11/83Yrepeatif(.not.)if(.not.)elsewhileif(.not.)endwhilemissing left parenassigment inside conditionalmissing parenthesismissing left parenmissing right parenformissing left paren in FORillegal FOR clauseif(.not.(missing left paren in FOR clause))invalid FOR clauseendfor = returndo illegal BREAKillegal NEXTratfor:error at line %d, file %s: ****** *****F ratfor:syntax error, line %d, file %s @(#)r2.c 1.2 (Berkeley) 8/11/83& %s .ge..gt..le..ne..lt..eq..ne..not..and..or.%s more than 19 continuation cards continue goto %s @(#)rio.c 1.2 (Berkeley) 8/11/83  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~<`rmissing quotepushback overflow@(#)rlex.c 1.2 (Berkeley) 8/11/83     doifelseforrepeatuntilwhilebreaknextdefineincludereturnswitchcasedefaultfunctioncan't openrillegal define statement@(#)rlook.c 1.2 (Berkeley) 8/11/83 - /()',*!"#$% &+.10       !       ;{ {} }  !"# ^"4@LZbjr~yacc stack overflowsyntax error)d)o)x*f*e)gp*c|*s)l)L)u)D)O)X*U_% _ $ v%%  N 5   - _ :B ʥbin/refer 755 0 12 104134 6024532470 5676 @v V e7cce77 / ]  7%  jw m5 5 @-_ r y" e e@5@ 7L@ 76 e@7 e@7p%>7 e e@7D%>7 e@ P7 e@ P7 # * 6 9 :_ ! 0_ 4 7 9_@ Rfe f, Ne7 f_$Ne7 f55 h7 5 55 h7 5 55 h7 5Nfe G_7 Rfe H 7V5Vfe H 7D5Zfe H 725t&5 $A7nwl5 6Qe4 6Qe-@< : ., l%7 "   l%7   *K 7 ^ LJ r4 6Qe   *K 7 z LJ .4l 6Qe5-l 7P 3 H, *K 73 3  LJ Ne F  Ne LJ  j?R% Ne@8 %_JNe >5f3fef\3 F7e 5 ffef.3f 3 NAe 5 b3-XPf2 @%%|z855 fe f @ @afe f u-|N FNJ fe %e-  (whw h 7 u / u-u-@wh= @5 LKN f @w Xh@ r y&@e  &   w(h    (    $ w gD 2 e wgw g LKwgw gf fN f ff  N f ff e_!f fNe OuuNe Ouu HD 9N $iN $i $iN RKN $i $iN RKN $i/' LK f 6f ^eN< LJ N $iN $iN fff m%N $i 8bN ff pf%5@@mN $iwNfw :f\INuQuu TW[b@e5Nfe f Ne f%2 Ne f^ LJ Nef L wew e N LK& f ff ;e wpew \e5 h5 f5 dNfe f fe f N@ep5d& f֝  W `%@d d@af6% j =d5j @je =d j @f 5f% @d d@apdf%f=dujh d@d5j RK5b $i fe jfNe LJ  RK5` $i FK % LJ Neffd b  $iNb RKNb $i $iN` RKN` $i Jd 5lW LJ O5@e05. .. . .  . .=. .0 Ne0f f  ..@. @l5 l Al@ ENl b% Nldfe0 xb%Ae0@ Nl h a wbw bn  awbw b 77z7p7j7b7\7 \7 z J ^ *K 76 2   LJ  " ?  0 0  0  0 e  e - @ 7@e7 4ȥ-/i  x e 7e 7e7zezr l 5 m% j < f  4 waw la5  57   5 _ N $iw"a&f pf%5_> _>_> _V _Z&f pf%5_|R V+D-NfNf m% m% E m% 57   _ %%_ &f pf%5_ _ U _2 3  . ~-lx% fԥ  %%_h &f pf%5_ _   ԥ w J_7941e - e e - e @%   $% !ˋ w^w ^ xpRN(eJD @  2( .(wz^&(7 <80 0%*7 $ w >^G m% jw0^w ^@eh5d5f̋=ded@e@-d fDf@e@-f@eh5fef5`O7b=du-df@e@-d @eh@-f@eh5d ed edu-fd "5b bb}`bAbp@b @b5bu-fdw]w ] 5 @ p-7 w\ - @ p7w \5 @-_ r y @e5 P7@ ȥ,N P7_@@L7p j_@e P7\_N_@17$f@e7]@e P 7P @D@e7; 5 2  _ ' e@?e % LJ  _  N e_n  _*    _J _  @@e7 `  `? e  L04 `%;4 Jd 7x = e  j ^" LV4 `%a4 Jd 72 .*c e <%R h7 ${@7& Jd 7 e 7} LJ %    , 4 3 |  jwXY %%Ne Ne 6  z Z Ne JNe ,w X _ % _  _  _  _ wXw X _  jwXw nX4 a a4 a4 awBXw .XR5 55 ^%r %Nfe f Ne 6 1 *   5_fe f_\- ee j &_ Ne J   %@  Ne fefe f Ne f% Ne f LJ Ne f%_2<  LJ_05@e5 @  55@e5 @  7__@=@@m%NN ~H @@5 u- " @@5% P  rd%  u- 555f'fefe eNe f%TR, ee jNe f&fe M e% [ LJ /f ` 5@  5/5 Ne f&fe M e@m% y LJ Nfe f Nefe f Ne f% Ne f LJ Ne   e-_ f%n ee jNe f%o ee j_tNe   xNe  e%_Ne  e%Ne @e5  = NNe 215F%_fe - 5Ne@ @ae& - 5`%V0 ee j fefffef e _n6_fe eNe f%e ee j f% ee jfe - 5Ne@ @ae& - 5`% ee j R 2 >Dfef v&e%feffef e  Nef |) _ %Ne  eewZQw FQ5 %  @ 5@w*Qw Q @55_ i= Xfef e@e5; ,.%$@Teu  =N e%5   5  N e%u w*Pw P%.%% w Pw O (L8 RL NL8 f L8 f%9 LJ wOw OL8 L8  @5 E%.%? %! %,%;%:3=NL8 f@ !L8; , . : ; ?L8 f%P LJ wN@ ! ,  .  : ; ?}   =} =w N lL8 RL 7 XwvNw bND ̋ ̥  @wTNw @N5 V v_! @F@ &Bvfe `e_"5 : .feff $e {fe `% *' Dfehff $e 5\& Afeff @e &~RV fe^ `% Dfehff $e 5\ r5P \\@\X5\@-PuP\N\& Afeff e &fe^fe `e 5 X@e5\ \\ \-\X=\  X Nfe ' fe $7 Nfe v'ffe `e 5\ J 5VN\ fN\RL eeNe f&L< lD e% LJ NeL< f N N HZ \& N fZ f F&@Z@ eZe Z Z p_$ V_L$N Lu5 Q@E5%\ s - 2  %\ s + 2  E }  @  5@ 5%\ s + 2 =@w>w = u@55 u  u-@,( u  u-u}  u-, }  u- = @w,=} w =  @w=w < N@ &2 f@w< - Ѡ2% LJ N f з ȋ%2 ; LJ w ^ 8@,@x% @ EE&fE f _B2N b5_X2N h4 aw  e wz:w f:5 5 2f j 5z h| f Jd 7d_5N~  e% j_5%_L5@e5}   @ E b5%= Ne P 54Ne P5 u-e2@ f l 5   e  j@ @mp r l@ EX b5%H@ @m Ne&ff 5%5 Ne& Q | t۷ p!5n` -`@?R% & @fE f @ E b5%_"4 hN awJ8w 68 6ff Qe=4 @m fe `%Nef f e@- @m AmAeH  D- f f D-w7  @m AmA H  w z7DCwz7w f7 7  w`7If f @pf xb%w $7 Iw&7I 67w 6 } =w6w 65 5 5 $/   ee j ^ t *K 7J l lP *K 5> *K 5u5 @ @m  I  5rB r6 u-  %5 @ 6 m@ &6@ @m &7  ee u-  >>f zI%Bt@m55 Ow Q  ee j fff Me%P   ee j5 H N R>BtBmr  N MA Am @ m-^   ee j @t@m", -vu_P=@ @m% R55 . L@t@mBtBmr  @ @mA AmH@ @mA mH u-@ 6t@m55 fff Me%z   ee j 55 N R>5uN M55 %_;%_; @_>=_F= 8 @t@mA AmA 5 Zu V@ @mm@- D-/   ee j @t@mBtBmr  @ @mA AmH@ mFA AmHu- Pu-u-C @ @t@mA AmA 5 ,u ) @t@mpH@ @mH@ mA AmA H_:w-_: @t@mpH@ @mH@ mL_:@ @mmZ@-B-J] 7  ee j .@t@mBtBmr  @ @mA AmH@ mA AmH u-u u- _9 \5 5 @ mnH-@ m^5 u-wj 552@ m2H-( T@t@mBt Bmr @ @mA AmH u-u  f l%f l%@w/w /N M  w/w /Nff O%w/w /@ 6 mvA A6 mfH" w/w l/ @ 56@ A p66@ p6wL/w 8/5 5 jw./M d^ӷ Z   ߞѷ  b521% . @ @mH@ %}  = 5 =%M   e%%M*   ee j  l@w .n5 _A @t@mA AmA 5u fff MeNdfe xb%@e5%;=Ne  `% @5 /VNe  `e /" Q Ne Q u-_@w-w ,4Ne@ & 6k A@w,w , 55_C @t@mA AmA 5u fff MeNdfe xb%Ne6fe C=@e54%;2% 2=4& ffe6fe e 4@452 fe6fe e 5 _C @ 55 @ @a6 @ @a< @ @a? @ @ap@ @aB @ @aAe6p@ @ap5 @ @aA Am p u- Nef b 4 @t@mBt Bmr  @ @mA AmHu-  fe6 RL u-_dA@w*Ne6 fw d* >/ + *W-;&NefeE f Te ff Meff xb%w *A u5vw )!f K Nf vH w) 5u :;= uNefe f Te5% 5 5 u _ Ћ P ы A@PЋ w FD:5UE5Hw* _Fh5uNfe & m% _FhbNe & 6k  uN zk)U5| m- 5 & m%St%  Bk U   & m% S U _g @_gw DE%%"5   & m% U wv w ^D55@ `h  $i 3 l 4 4 4 4 4 ww~w  $5+ r &5e-Te % &     j ww  5f j 7z f j 7wX@ mP7ND%e w  .     j e-ww D 5 e %w  5 e-w h wlYwfw Net@f tke  w6w.w  >hU7h% rCan't reopen %s Ref condense out of memory.%s%d-,\| @(#)refer8.c 4.1 (Berkeley) 5/6/83 @(#)hunt2.c 4.3 (Berkeley) 7/29/85Assertion failed: file "%s", line %d hunt2.citem %s hash %d hfreq %d Assertion failed: file "%s", line %d hunt2.cAssertion failed: file "%s", line %d hunt2.cAssertion failed: file "%s", line %d hunt2.cAssertion failed: file "%s", line %d hunt2.cAssertion failed: file "%s", line %d hunt2.cAssertion failed: file "%s", line %d hunt2.cj @(#)hunt3.c 4.2 (Berkeley) 6/28/83query long than %d characters Assertion failed: file "%s", line %d hunt3.c @(#)hunt5.c 4.2 (Berkeley) 1/9/85%s%s/%s%s/%s  @(#)hunt6.c 4.2 (Berkeley) 1/9/85fgrep-r-n-i%ld,%d &7|@(#)hunt7.c 4.1 (Berkeley) 5/6/83%ld,%ldrrAssertion failed: file "%s", line %d hunt7.cAssertion failed: file "%s", line %d hunt7.cWarning: index predates file '%s' j @(#)hunt8.c 4.2 (Berkeley) 6/23/83/usr/lib/refer/mkey %s >%s.ig.ig.ig.igrMissing expected file %s @(#)hunt9.c 4.1 (Berkeley) 5/6/83"d@(#)mkey3.c 4.1 (Berkeley) 5/6/83/usr/lib/eignr4@(#)shell.c 4.1 (Berkeley) 5/6/83X@(#)deliv2.c 4.1 (Berkeley) 5/6/83Error: ZZZYYYYYYYYYYYYYYYY8^\^/bin/shsh-c ((((( AAAAAABBBBBB $hhhRpd8poDpxqfqepgpcpsplpLZpu^pD #v@i fff e  fff e R  R Ne l  R   R f f 5N  ww  F @  8 4 52 $ -$  ? % &     " Y    / h    P ww  f f 5  N N  5 u5 AWpAmBBm @@m @@m AWpAm1@@m   N   N   5 AWpAmBBm @@m AWpAm1%2   N   Nfe % _wpN ww Nef  ww r  5 /f  @Nevf& %@ 6    w v@ev5xt%t t@t @aAt AmpxNev   %ч Nfev  b      w nDCB̥:̋ ҕ/Ҕˋ ̋ wD   ;ew ww DC E5<E@e33. @;E  5 , @;% & fE  5  |U3 3  wVw BD* R ?E G   -?% & ߘ   ݀5En -n ?`%  R& F  w5< w |fef %5 wh w P4De _V  t4 t t4 4t Ne&& % _V t 4     6t-t- t-t- t- t- 55 eAePPPP 5 5 p 55 Nefe ,% & %5u7  && %  fe ,%ff % fe& %w A@E f& w w w D Lԋw w De LN 4e e>   4e#  Be v Nfe %w2 w  -@ 8 w N%  %w u@t5052@ 5Nefef ,% (3A@u5Btr220@ Aup fef ,% u-u-u-@wH w 4 Nef $ w. w  D 5  =& % `5ȥ=  = @w e  w BuNefef %=@@w Ћ Ћ  Jҋ~ @@Sw mow n@lw e& 7 v7ngwZ w  & f ew w6 yw0 &  4  b '     ` TW ~  s`K6!  w ( D85U5_P5P_P  mx@e4 ,5Ne & R  uN 4USt%5& |5" |5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % |U4 4  fef %5 w ww76 Ћ w FD:5UE5Hw* _b5uNfe & % _bbNe & R  uN )U5| m- 5 & %St%  ^ U   & % S U _  @_$w DE%%"5   & % U wv w ^D55@ |  @ 3  4 4 4 4 4 ww~w  $5+ &5e-e % & h     ww  5f  7* f  7wX@ m7%e w        e-ww D 5 e %w|  5 e-bw  Xww  N ww rDCDpC   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  j U7\U7R PHAe vB47 6  ,%& 55 a  a!PE -% w$  `e vWt vw@ `e @  %e U?~~ `e 7lU?` a7R JL?D@U ew dD E wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `|m0& E%"m%w w7L*'$!      7& A& BF7!lW-@7Xw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_L@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w Author:%A Title:%T Journal:%J Volume:%V Pages:%PPublisher:%I City:%C Date:%D Other:%O Keywords:%K @(#)addbib.c 4.2 (Berkeley) 11/2/84Usage: addbib [-p promptfile] [-a] database -p: the promptfile defines alternate fields -a: don't include prompting for the abstractYou must specify a bibliography file (database).Not enough arguments for -p option.No bibliofile specified after -a.Invalid command line flag: %s Too many arguments with no options.aInstructions? %s Too far back. %s %s> > %s %s Abstract: (ctrl-d to end)%%X Continue? +$aAddbib will prompt you for various bibliographic fields.If you don't need a particular field, just hit RETURN, and that field will not appear in the output file.If you want to return to previous fields in the skeleton, a single minus sign will go back a field at a time. (This is the best way to input multiple authors.)If you have to continue a field or add an unusual field, a trailing backslash will allow a temporary escape.Finally, (without -a) you will be prompted for an abstract.Type in as many lines as you need, and end with a ctrl-d.To quit, type `q' or `n' when asked if you want to continue.To edit the database, type `edit', `vi', or `ex' instead.rPromptfile No tabs between promptfile fields. Format: prompt-string %%key Too many entries in promptfile. /bin/shPATH:/bin:/usr/binsh: Unknown error: %d  2 < V h z   ' 7 F W k    % 6 L f (Bd3Tm&H[h|"6LfyRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB xd^ojx(f6e(gcs8l8LuDbOnXU  ݀5En -n ?`%  R& F  w5< w |fef %5 wh w bin/sortbib 755 0 12 36776 6024532474 6243 0. R e7cce7  / T  7%  %w J($% 1  Y   %%@-s@e7` e %  r % %@ @m&  A Aa1@ @m * u-  X z %B  z   5 * 5 Nf@ @a& % @ @-N 8#Nfe  x b %w&w &5 5 5 _     %.[  % \5 @@5%  f r e %@ &Nefefefefffff r e@5 h * 55557 J uu% Nefe \ N 5uNfe % _N 5u@@5%  f r e % &Nefefefeffff+f r e@5 d * w$w $X$P L Cfe eNe \%Y * a  5_<Nefefecfe e%n *  ff@ @m&  e% * @ @mffe e  * 0%L, 2 , $ 5 - ?%  &   P!  ffe 2 e  * Nfe % _"wN#w :#5 @t@a0 %Nefefefefefefefef e55 6@mH_A_z D _v 4 @t @m& ! @t@ae h @t@ae@t @m& ! @t@ae@t @m& ! @t @m& ! @t@ae@t @m& ! @ @-ZG@t@ae@t @m& ! %1Ne@t @m& ! #Ne  @t@ae@t @m& ! u- %_w0!DTJ@t@ae@t @m& ! u-Q,@mȥA@t@ae@t @m& ! u-w z N $!@N $!8N $!0N $!(N $! N $!N $!N $!N $! N $! ww 5 5 @@mȥ+ @@mAAmH @@mȋ@@mww lN  %whw T r  b %wBw . N @! 5@@mȥ, @@mw w D  5 & & e5u A@w5 5 5@ 5`u`u w dDC AupB5 S  "̥ ;  & ӄ P! %;  7  & %bb& ӄ P! % ₎& %`@ @m A &@w  w DE5_ % _ _ 5`uu '& & e5u%%w @A 5`u`u  5u 5  5 u  5 u tmL CE 54E N  A@ f& & e5u %%    %%%_ 5 "5 5 E4N ff & e W _ %_ %_ _ w ~D* R ?E G ߰  -?%  & ߆ P!  v݀5v E\ -\ ?N%  @ & 4 P! w5*  w DC AupB 4  & %b 5% 傎& %`@ @m A v &@wH  w *Nef %w"w Neff %ww D A555  ԋuNeffe %ww DC 5 5 _0%%_R5 %*e5  AWp `eu  0u%l5  %h%[  e  _Neffff e   * O  A@ EN 5% % % %Nf  &    %_  A@ E%Nf  @w N 5 w N%c%s%[Nf ff f& ew5 5 5 5 %e%f %o%xDe5 5 A @ EN % % % %- Ԑ A @ EN  _%+_  _%a%f %A_%F_ % A@vN O% A@v@mAm@ vA@v5u 0 %a%fW7 5`u`u C% S P Ԑ A @ E = %%.%e%E- *% ' $ ! Ԑ A @ EN %+%-%0%9 A@  5u% N   =   @e! @e! _@t@]   xNe A _Ne A @H@pHw DC = 5%c%0u5 %s    %r%c5 %[r      %%    =  D- %cw w D ̥^   % %]%-+  $%-̥]4   ̠   %]  ww D*\5% %-%+ 5 55 55  B5eA5  %.55  B5eA5   %E%e$%+%-  Wp B`e   @`5 @ 5AupAm%55 @5A5u555555  55555AupN& de5 55wF6 m 7"w D Lԋww De LN @!4eeP *  @!4e Be v Nfe %ww l-@ .wfN6 %6 w : w8&  %5u & - x ff %5 EU@ff % f   ^e ( z 5 z 5 fe& %ff 8%N z N z %e& ;eww u@t5J 5L @ 5 Nefef p% (3A@u5BtrL 2J @ Aup  fef p% u-u-u-@wxw d Nef v@wXw > f v@w8 w D6 5B ʋA r e0@ A r 5X  B-ʥ/ʥ/ Nef ,5@ 'Ne  %ʕ/  f % %% w` Nef ҕaʋʥz ʕaw  BuNefef )%=@@w &wP W f r @  W f r@  @ w D% 5     |@wV 4-  w mnlw e& 7 <74gwn (RBHI I7dIw  fff ew w$ yw &  4  b '     ` TW ~  s`K6!  w  D85U5_5P_ " m@e4 ,5Ne & %  uN %4USt% 5 "5 "5& & % 45@e-4  % U5EU  w E w D  +   r= wB w 5 a U5ff %ށ̥a &  e 3     U̥r 33 ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw $D5"E@e44fef )% "U4 4  fef )%5 w w&w 7. Ћ P ы A@Ћ w FD:5UE5Hw* _"5uNfe & (% _"bNe & %  uN %)U5| m- 5 & (%St%  % U   & (% S U _x! @_|!w DE%%"5   & (% U wv w ^D55@ "  # 3 2' 4 4 4 4 4 ww~w  z$ 5+ t &5e-NVe % & ,    $% ww  5f $% 7 f $% 7wX@ m7 % e w       $% e-xww D d 5 e % w@  5 e-&w 8# $ww  N (ww rDCDpC % `% wZw FN 2'wJ ~5 & E        ~5>wlYwfw Net@f %e  w6w.w  .&U7 $U7&$ Ae vB7   % 55 a  a!PE -%$ w$ ' `e vWt vw@ `e @  '%XTe U?BB `e 70$U?$ a7 ?U ew dDE wZw FD5 2' 5N %!w5A vBB-  }ee@ !ۃ `!ւ ` `@m& E%m%w w7*'$!     V 7L& A<& BF7!W-07 & & e Ӌ   &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~  &7| & Le bӕ-0 Vӕ.J B~ӕe< ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B V_+@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& P! z   5 , @ :% & f E P!  (˥-%0     ,:% &  P! 8 5E& z   5 , @ :% & f E P!  w&w Nefef 5& .e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& /eww  fff 5& /eww  5 %O N  = 0555Ne5& 0e555'0Ne5 B& 0e57 Be0" 5%55 5 B5@B e0 a=%0700w %5 B5Ne& 0e55e0%75`Jʕ0%0ʕ1  %0˕0 ʥ9 6@~ .@(#)sortbib.c 4.1 (Berkeley) 5/6/83ADUsage: sortbib [-sKEYS] database [...] -s: sort by fields in KEYS (default is AD)sortbib: More than %d databases specified r/tmp/SbibXXXXXwsortbib: record %d longer than %d (%d) %d %D %d : %s %s %s %s sortbib: record %d longer than %d (%d) %d %D %d : %s %s %s %s sort -ft: +1 %s -o %ssortbibr%d %D %d :sortbib: sorting errorsortbibsortbibsortbib%s %s %s %s %s %s %s %s~~ TheAAnLeLaDerDieDasElDen Interrupt : Unknown error: %d(2L^p-<Mau,B\z8Zx)Jc}  > Q ^ r   , B \ o RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator/bin/shsh-c. ((((( AAAAAABBBBBB  *d*o*xv+f+ev*gP+c\+s*l*L*u*D*O*X*U=(\bin/roffbib 755 0 12 1120 6024532474 6137 #! /bin/sh # # @(#)roffbib.sh 4.1 (Berkeley) 83/05/08 # # roffbib sh script # flags= abstr= headr=BIBLIOGRAPHY xroff=nroff macro=-mbib for i do case $1 in -[onsrT]*|-[qeh]) flags="$flags $1" shift ;; -x) abstr=-x shift ;; -m) shift macro="-i $1" shift ;; -V) xroff=vtroff shift ;; -Q) xroff="troff -Q" shift ;; -H) shift headr="$1" shift ;; -*) echo "roffbib: unknown flag: $1" shift esac done if test $1 then (echo .ds TL $headr; refer -a1 -B$abstr $*) | $xroff $flags $macro else (echo .ds TL $headr; refer -a1 -B$abstr) | $xroff $flags $macro fi ags= abstr= headr=BIBLIOGRAPHY xroff=nroff macro=-mbib for i do case $1 in -[onsrT]*|-[qeh]) flags="$flags $1" shift ;; -x) abstr=-x shift ;; -m) shift macro="-i $1" shift ;; -V) xroff=vtroff shift ;; -Q) xroff="troff -Q" shift ;; -H) shift headr="$1" shift ;; -*) echo "roffbib: unknown flag: $1" shift esac done if test $1 then (echo .ds TL $headr; refer -a1 -B$abstr $*) | $xroff $flags bin/indxbib 755 0 12 513 6024532475 6133 #! /bin/sh # # @(#)indxbib.sh 4.1 (Berkeley) 83/05/08 # # indxbib sh script # if test $1 then /usr/lib/refer/mkey $* | /usr/lib/refer/inv $1_ mv $1.ia_ $1.ia mv $1.ib_ $1.ib mv $1.ic_ $1.ic else echo 'Usage: indxbib database [ ... ] first argument is the basename for indexes indexes will be called database.{ia,ib,ic}' fi ncodetuudecodet yaccolorderet mkdep nohupiostatet basenamet calna cbna checkeqt colke commecrypbin/lookbib 755 0 12 21162 6024532476 6201  @ e7cce7  /   7%  w .F@&  e 5 %%           VM 5X J @jfe % fe D %3@pfe % fe D %Ne JNes n %Ne n % @fe % I@   @ n Nfe %y+ ( $fe  5 J Ne rNfe  N  n Nfe % N   n  ww @ @e = ww     6   q     ww DC E5<E@e33. @;E  5 , @;% & fE 4 5  U3 3  ww D̥r̥w74 $ 5,+  7 $@  D Ne   d5 K xN | N | wb̥r@- f z N | NV@- Lf z N | N |  f e ̥r f  N f  N | mHw   @  m w| N  & :%5u fe m& %%%ff % mz %@Zw *J wj w D F 7< -2  s 3  33 a r w w +& f ew R D LԋwJ !w w 0 De LN $ 4eeZ   $ 4e Be v Nfe %w w -@ w N % e& ;ew w \ BuNefef %=@@w0 mn4B&I I7^Iw  fff ew wR ywL &  4  b '     ` TW ~  s`K6!  w D D85U5_p 5P_p . m$@e4 ,5Ne &   uN 4USt% 5 5 5& & % 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 w ww7  ы A@Ћ w FD:5UE5Hw* _ 5uNfe & % _ bNe &   uN )U5| m- 5 & %St% t  U   & % S U _\ @_` w DE%%"5   & % U wv w ^D55@   | 3  4 4 4 4 4 ww~w  $ 5+ @ &5e-\"e % & :     ww  5f  7 f  7lwX@ m7 % e w        e-ww D r 5 e % wN  5 e-4w  ww  N ww rDCDpC  D wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  < U7. U7$ " Ae vB7   % 55 a  a!PE -%  w$  `e vWt vw@ `e @  %fbe U?PP `e 7> U?2 a7$ ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `Nm& E%m%w w7*'$!     4 7*& A& BF7!W-|7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& 4 z   5 , @ :% & f E 4  (˥-%0     ,:% &  4 8 5E& z   5 , @ :% & f E 4  w-nUsage: lookbib database finds citations specified on standard input /dev/ttyrlookbib: /dev/tty%s.ia%s Neither index file %s.ia nor reference file %s found /usr/lib/refer/hunt %sInstructions? > wlookbib: /usr/lib/refer/huntEOT Type keywords (such as author and date) after the > prompt. References with those keywords are printed if they exist; if nothing matches you are given another prompt. To quit lookbib, press CTRL-d after the > prompt. ,/bin/shsh-c: Unknown error: %d"4FVbt#7Kjy2Po0N~ 9So'4H\o~  2 E ^ RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB  " " doxdfredg>cJstltLuDOXU n  ww @ @e = ww     6   q     ww DC E5<E@e33. @;E  5 , @;% & fE 4 5  U3 3  ww D̥r̥w74 $ 5,+  7 $@  D bin/nroff 751 3 24 130370 6024532654 5714 @' e7cce7Z / m  7%  }w . 4v . 4v % 4v  4v  4v > 4v . 4v \ 4v @ z__e@ȥ-_ r y O_Ne 67b_7 ^Ne 67_ j_@ $) m&fe  _e5@e5@ A H vNef } f vN } <_Ne x_ O_ O_(e5@e5e@ A H X l   _"N 67BC  _ _l  N&& Dk* & _ _B   _:  Ne 67&N N _@ȥ+  677 ww D k! \ ) &M-M 7  R -MM 7 RH 77777    ĐE% E% 7 h  n---  > ^E% % 7F  &  w | w|w | > 4v w|w | 4v  w|w p| xae& j  } $  }& } 7X  `?a7Xw|4w {(  z7Ę z7  z7>  V  KJ } 7D   _ .GQ77 77IX 7 "7 I < 78K72KNIe7*KHDw"{B: h%w z v5uNe tr7\I 7TI7 BI 7@Iwzw zwҊЊ %7 wzw z n ^ R| E@ j whzw Tz * N wTzw @zC   Z h%w*zw zD % w z? J   t ft5  t w y   tQwyw y I E%  Œ7  I zI wjy  <E%S5_^ % v  7 ^ t%  F  H_^ %f  V  0 H_^ - -r-n a_^ %_^  U ,C  PG E5_^  r y _b _b LE% _^ %"   _^ _^ .EQ   ,_V  r y  _^  _b                 _  x_b _  _b 9_^ _b l:_b D_b 4;_b <_^ _b <_^ _b R_  R_b U_b ^U_b S_b  $)%_b D7D m _b _buUbU0 ,C_J X=V_b G_     _d   _d   _   _d    _ _d _   _ _dވE%  Ј7 CX  C E_%  PG7Z?e_w 4u X ,C`e-w$uw u V P7 L RPwu Fe _ 7  e^7    % 2K    -+%' ·   -7  Q }%Q\eQ7V xğH DEew %  fE%  4 0 5E%],E-_ EU_ w s  } ̅̋ ; 29e̥-7 † & } 7V  c h  7 A7 7 w(sV R ƀ8b C  P 77C7D7tAw r FBt77. 7" 7R qQĂ‚Ҕ- wr \VEf&΅ }e  Q neeQ7dQZ z EeQ7>->w r `#7 pJE%  B7 8 2  8-AA B " 7 F@XHwqw q 5E% E% 57 ȄEwqw tq 4 7 7 77PALAHAe7FAwDqw 0q r E% %~ %?27j @wqw p 07     } %.e  v    R7tZR7 L7 J؃ 7  RQq^^\\Ҕ-Rw4pw p  Z7 B    } 5%V#x    5 @@m  u- fef }%5 \N }wow ro* w $ E e 777V% ?w"o+  x7b D ^P?rel %zd  w n     E%  7܁wnw |nD5PEN K 6 E B * 0tEWt@P5@ E<  <  x<7 7 x7r%N`<.4EE@P &wmw mDE%N*< *<  Z % <1 A p  ΄% ewxmw dm eG-x "wTmw @m@  w6mw "m t?@ < h "=%=  ^lJ } 76 *I 9 8 8%& & Dk ~M8~]8~& n 8@ ȋ@8 8 h%'' h%7`"'fwHlw 4lw]7 B< 7j77d7  & D k J 7 ~NR: `   *U7 %  ~7 ~;;;e7;  @3 ~ RD k w~kw jkw]F 9 7 ~ RD k `; U   ~ w0kw k T N wkw kw] 4v  4v 0 X| O : U}&& n  V }wjw j:::e7:7 }N wjw zj R   0 Ne k% T% 1w N }  2:# }N .kN }  v%    }wiw i7 N} %.&  wiw i |  " 7,}      }t}WtAEPpwdiw Pi |    l w>iw *i | w.iw i | wiw i | wiw h%Nj7 . ,|  &; 7R|5 P|   vN|  H| B|tUp 4| |*| | {6{%.  7{7{wfhw Rh tE@- %,%,w4hw h @t5@t @t0 @t0 wgw gN 7h{7 f{7 f{ L{* (t5"zB{t7z2{ z*{ ({z 7zz{zL t  %,%, 7z7 zz z%    J 7zw"gtz z 7z%zt tAUp7 Zz^zw f .E% 7ywfw f  .tE y d7 y 7 w 5 yN  5E%  y wy  Ty@wf% 7 Dy% %. ^y%  w e y  E%"  E%   xwew ze   ҝ %%  ҝ 5% 5 @7xwDew 0e  5ҝ 0 ҝN  %ҝ 0 ҝw ew d@te wdw dN  wdw d LxA Lx@xDx7 ^xZx Txpԟ &x5 x% V xx  %ҝ (   wҝ 7ҝw%w wRdw >d w- & w& f`ef&Nv }ew ԟ6v h%wEwE@ w7 fwwcw cAe v@wcw cw \ 8w  v 7vwcw cDE-&w#7 w & w& _ef&u }eԠ~u }%  wJc@E Ԡw &c @5 N  ҝ%A  wbw b-22 wb  272 727v7v7v7 n7 u7t7uw b te-|2v2l2uuu u ltu 7~u7Tt 77hu77pu7ju22 2e2u2@7>uwaw a EN B% Z @ J@m7swaw a   wa%(w a t  %t5 t wdase-V1 ? F1  vtt fw a \t? 11 < _>!ueeew00@e5e5 re@-C  @m % 7 vu-^ Ze5 5E%" w 5 s E%  @E%" 5E%"wx S ~ C- o  4s J re  w/@Ae@ ?/Ds rw_w _ Ee % ?!/ m/7rw_w p_ r wt_w `_ r  %%N-  r-7-7- rrWpeNw--r7 r7 rw_ |r%vr  pr  J%NR-  rrJrWpeNw6- ?,-(-0Dr -e  ` % w ^ q,2 p  :2,1 q ,1wL^w 8^ ,0  ^%N, 57q_B$ r557d'E 6q E@-  4E%    N,C Z$ 5 ,C Z$ 5 ,C Z$ 5+p TNn Z$  V)A r@& 2  T n Z$ @@@ T n Z$  O%NV+ P+p,p 8+-8+0+N w\w \ H47w\w \ _p$w~~ \~ 7} %wh\E-hE7o% $) 7&oN* ) ` w \ 55 8  5 t55<Bet5 N  ҝ5% ` @E@tE ҕ  % Ne  %, % Nef % Ne w@[w ,[%d A rde0= % A rd r e0= A r e0@=   =@wZw ZwZw Z 7>n5 E%+ %-7 _(E%._(t r y _( +_(_(_(x_((_(m_(~(_(v(_(|_( mh_(.q_(%_(%_(x_(~_(,_(j_(   _( _(  _(_(   _( ,C  _(_(  _& _(_( e' 7*i7"i7 i_(  _& Irf _' > [ _' _& .K (%N'_&&= |(7 _4' _&  E% _& $)%_^' m Aup mbH@ 7&k ($jwXw Wj7 |k+f ) ? jiwWw W !  p- %%   p D  wW %% x  x%x Jw >W  jU- @ 5j 1  A I a i Nf $* awVNf n*Nf j+w V XjA r  FjN& $* A r e0]"jN `wVw |V jU0   ff *ew\V%ii+%w 6V  w8VN f fA r & *eA r u rA rC%@]di ` @@ 5]Bi ` @ ]*i ` @w U  iU0 wzUNf + w TU A rN& + A rmh]hN `w&Uw U%8g wU*ge$gw T @wTw T5 5 5 5 7 :h *E%  x7 _- R5u g_-5`u`u  .5u g_-5u  5u g_-fffe :>e 5u g_-  0 5 5 fffe O 5u DgWfffe 6> v5u gE     _*, :5u f'     E%=7 5u f 5 5 A@w&Su-u- jE%= 7T 5u Jf A@ 5 _,u _, E%= 7 J5u e @mAm@ 5 _,_^-u _^-_, l5u_*,w @R E%( B7 5uw Rw R  5555 5 *7V REe5% 2   ff Meee@ 5u E + - |@ 55 E%.  7 _0 E P_0 cg ia mV nS pS uD vEV7nP A@  5u g& ff Mef& Le5u / - ) fe tLeH. "%N f 7%  5u  7bcA@wOw O "c) ) 0! %%  mf  2 &&^p H wOw xO b  $)%  m v2 b m l @ b w.Ow O \b H + R' 8 # d X T%9  FE%0  $)  p&wNw N veN v2wNw NN v2wNw tN  E%+%-7 N  DpDDoz& 2 7 d7`7^7\ va w Nw M  @ 5A 5rA rADpfA@  upD  wMw M 7 E r yX 77$7 !7 e r    1 6 7 9w,M    1w L7 vwMw L  l7 wLw L 7 RwLw L40 wLw L$ wLw L  5 E% E% 7@wzL w `L. H47w`Lw LL' H47wLLw 8L H47w8Lw $L H47w&Lw L H47wLw L ,  b 7 b R_ & .5 7bwKw K7 VwKw Ku-@wK@w K jb  & .5  ^ 27<7 @bwKw lK (   & .5  7 7 (w8Kw $K V  h v & .5 tt7n wJw J  \  l < & .5 >>78wJw J   & .5  F7" wJw J Ha  d & .5 77 awTJw @J r a  < & .5 f`7`wJw J <: :2P @7:-6b.ZwIw I ]  :2 6]+  7%    %%\  旀 0wxIw dI \    %% l :2 \ 0 旀 0w$Iw I  p-  %wHw H  _ fO \ & .5 7 _ 2\7Lʷ JwHw H%N fO v2 B [7ʷ   RwxHw dH [ [  p  %%@a @a0Ne  Z[wH@ae& l % w G \ 6 P[3 H    :2 0[*C  %N`  OwGw lG %NehO :2 Z "  8w4Gw G bZ N \7ZwGw G  w Gw F *  ]f ]] . ] 7 ] :Z % % z]|  c = J8R] L]]7!]- ]t && X }eBX h% t && pX }eB\X }%7R]w*Fw F g7 g7 f ";w Fw E%f  7 f J "; fwEw E%  f ԡ ) E%! 7  X.  x% jf pԡ =7 X E% E%7ӷ zX< E  e n o  t <5`5V X ^% 7 X H< % WwDw D ED-D-% D-Nf H< D-7 WwnDw ZD5 _=E%N 57W5 7 Xxttpd`%   LEC-   5 W2Bw wwwww 7 X EC-%  \!%N ^5 wwwwww vVN @w"C   5w B 4V U EU&& n  |   ~ Y fwBw B 5fe& }%%  YY%Y@wXB ^7 vY \ UpT&& n w B\ H47^w Bw B7 RwBw B 2& z & .5 7^U%NN%J OwAw A 7*U7 9 ; & .5 E 1  e& & .5 E 1 T E C R 77T %" T 0 w6A U@ Uw A < :2 lTf b! XTT0  O7Bw@w @ T 5 5E%  4 E% w@w @ @ w@w r@ :W  j   W 77  hW77 V lw*@w @ H  R%S & C %|xt 7rw?w ? S 77Ʒ V  S 7v7n7 `Vw?w ?%7 7  7  & & .5  R7wP?w ( :2 VR7aV w>w > <-V 2U, O7"7 Uw>w > 7Z7R + Fŷ VUxO v2 Q & .5 7 t B  r B   B 7 UĜwH>w 4> ^ ^  . QN& .5 =w>w > T . & .5 77 Tw=w =  8 w=w =C 55@:E5 4T -E%%ƾ-%54E%  L  ALEwpZ B vTwB=w .= r , e !e]bÀw=w %PH %S& C %&& w;w ;d 7 7( 7"  E55_F X@e5-;Xf 7^ 7  tR E@-< lN9 ,C`5$ 5-  @m5-x 7r }ee5@E55  5C5 7 * *( %%~X!$ 77%x r& 2 7`%mؽ ʸ7 2XȽm@,@mڽpҽ T 7r $  0L혽jm T n C BE% 3  ,C` >E% m * Bwm5 5r-Bmwؼ T n ܼ7 z 7ּ7ʼڼܼ  O%Nx rp,p Z-ZRH O  4I7 w5w 5BI>IU1 ,C V P  7r  m6eCpw`8" %d %  aCpN T7 Hn ) wpw` w45w 5 rH%N % O_DM   z F_DM N  rV'> fV  ^V  E%  G  7@V77l7G _DM7 $V : 4h FeVwp޺w`67 V ` GX G (   *U C "  G7 7º7 %%κ   r7 7r wpw wpr@7nT |7 2G G7 7 Gw3w 3 p07 J J GW F 7F7 Q 77 '"-%  (7 F < 9& ~N E%   . r& 2 7aʹ   ~N S 0 70F7w2w 2 :F4F07 *F 8w2w 2 h  b7 ^I d  ^  Z R  w2w l2@E%@t $)%6 m/ e"-ָ lI$  ^I%N ,C5wmwe w1w 1 _NP%N8o. & EE m 1` & & wDp   & & &1l 0  _rQ _rQp,_rQ _rQ x& _rQ bD` _rQP JDDDDD <@l m.`2 &7 D-P wp@7D%C . @ C  C7 C-d` C رб 7ʱ7ı-찤" ް >  ְ  -.7 7 pC r 7%,5--P7  < Q ,a vQ%    &  7Bw/w t/   mC- %wV/w B/ΰeưE7%  5ίEƯ Ư7 w/w .%Nf` @w.   mC  %@!w .%N Qwz.w f.%N" A wZPR A Q7 O7  Aw&.w .7 PE  ƴ ,C7࠴E% -| f ^ .Wp-Z 5B - WfD7 D DGeD D@%. D+eD e -5سe 5ijڳe  hD  ~N  ,Cඳ γ& ~N   w, D ,C5w-j v D r0w-|.R%L, C P:E%-%EU? ,C`e   ,C`Բ`޲ w ,7 B N PG nw,w , $ xX7x 7n7h7zw+w + 5  ? z_VrF_VBt 4 7T747B7  E%  7(7_V-ر%  ,C& VhB~U V hU V 7 8B% 7 @> Ըw*%l1-`^lBeB%B)A%%-%%v B(6e?AeA%AA ,C& V E% % E%.%!%? Ұ? ̰7 аt °7 ? ^AeXA @w *% :A!  ,A%N ,C5wmp`eZ |w)w ) 5)=6&E N 4 @ A @@EU_ *% % LMwT)w @)D X  X ?7үe X e77J X  &휯 e*@? &@j N    N? @e@  w( ??/? ????0e? ?w j( N X  wb(w H(DE%A%Z%a%zw0( w (@ D  > 7,7 >w(w ' " %t ?w' %  ZP %t 5E% % %-w ' ˋ w|'-HE ZE@  eˋˋ/e-H -ڭ$E Z%sƭC˵?R>eL>%F>>>e ˋ Ӌw & XHE5 X  \%a@ " BmE5` H -" ZE@  Cm Gʵ ȵe7Gʵ@  L[ ?h=eb= ʵ  w&w %E%ae @w%w %N Z a e  i  o u yw% w %-B NE [ @w% w p%i7F L[j55 Ie!H-&a֫e! && j\%&VpCr&& j\%&VpC&& j\%&VpCC-e5e-7`R.60 7172%G1 | , m . d7l .0 G1ww rG_0hD5#E55  55@wm-_*h _*hm<^1_*hwmT1_*hE%  LEwpuu55 ʋ 1 d- wm15xtE70 6; %0  ; ; %0 7 ;-0CA 7r_  A 7rb  &$ @hZ  ʵ :< , (ReG- ƫʋ A 7r  e-0_fww  4: BE%++ʵ#ʵ@ ʵ  ʵ 䀒E     ʋw:w &l/mT/d/.:2 +Y |+ 7v+˵^+ 7rR+ 7rwH+  ʵ.+ 7r"+ 7rw+  + 7r* 7rzw* ..   z.Hr. 7l.b^. 7r6R. 7r*wH. ,  A 7rr8fl85-. 7r - w-um5 - (*/ "8 - 7r7-* 7r7)N - - N ) ) p  7)7l-w<w ( w0w  fe }%wwzwt&  @ppC`pL)w< w.w Nt@f <~ew  @A  @C@A*J w&& e& & %ReR$ @  1  ~ "@! @#E B Ew # h%wpww 4De _m t4 t t4 4t Ne&& ^|% _mt 4     6t-t- t-t- t- t- 55 eAePPPP 5 5 m 55 Nefe r|% & %5u7 7 && ^|% 6 fe r|%ff % fe& ^|%w4A@E f& w 6ww D Lԋww N tf <~eww N tr @nww D el&&&&Wpe#f Wpe#fX$ $zewlw X5 5  AaAE f&A@vUU5u %w$w D $w̥/ 55$ }&f  e %Nfe } $fe } fe } ԥ.̋De & v & } %fe0 }% } %,@e05e nw4Ne$ nw4Ne( nw4%r4_n 4_n% 4_n%2_n4Wpft4Wpemn4e, _n@e\5 N nf&te -*4 @ E3t -4 *te5.N nf&@.e@.A Ep@.A Ep -3 s6 -336 3t_n -~3 t-r3_n -b367Ҳ7̲te5  e67 -(3 _n@e67w P Nefe ,ww@7 2AWp@7: :7 : f w 6 } 67*7$ w 7 27 97 97 9$6 } 677ww .:$ Hx̋  n  n  2  ww v 9 @55 2 w- 2w-2  t  -1  t5, 5, -1 sue&&fe Xe3 e6p $e63w w & f e$ư$w w lQ@f& v e5uQ@f& e5uumumu _seeQu  %QQ eu % ff et ff e5u< ff et< ff eL A@e@ f& et e  =  r  rd > r 8 8 rd ( AT$ 5 8u 4  AT$ f&A@ 5u r  r   AT$ @mAm@ 5u e4 tWpe$$u4  AmA f&A@ 5u  AmA 5 u ܃@ 44 $ttw !wX d,e& ;ew> w u@t55@ 5Nefef r|% (3A@u5Btr2@ Aup fef r|% u-u-u-@w w  fe ,w@w @pHA@tw> w $ Hx!,& dz   w 1&D x%75˕,DNf w w V D $ !     +  w" e% - r<N r<&@&Y%D $zeD ~ ~w  Nef bx ww D 5  =)& z% `5ȥ= ) = @w:e  w  Nef y@ww  f y@w w D6 5B ʋA r e0@ A r 5X  B-ʥ/ʥ/ Nef R|,5@ 'Nef% R| %ʕ/  f }% %(%( wNef R|ҕaʋʥzo%ʕaw  BuNefef ,%=@@wЋ Ћ  Jҋ~ @@w @hN ~ HNef ~?@E% 8h% v{2 {*L-h%v } ev } Nev R|u-u- R{vw R{ w D }4 4  ww t f } %  }P B~4 4 wHw 4D 4-&4-!4 4   &e & }%4    wme   s lt  &w wSw mown|lw e& 7 Щ7ȩgww 8 & f |ew0w  @A  v @A   6v&  @ppC`p   6@Cww7$ Ћ PPЋ ww  N nww w>wfw Net@f <~e  w6w.w  L/U7>/U74/2/*/Ae vB/7 /  /%/ 55 a  a!PE -.% w$ B `e vWt vw.@ `e @  B%v.r.e U?`.`. `e 7N.U?B. a74. ,...?&.".U ew dD.E wZw FD5  5N B~!w5A vBB-  }ee@ !ۃ `!ւ ` `^-m$& E%m%w w7"*'$!      7& A~& BF7!`W-27Lw 8uDAB %u f& & e w5 5  W- W00~u5  .luv&Bw* J@B |_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  ww D:5UE5Hw _V5uNfe & h% _VbNe & ~  uN B~)U5| m- 5 & h%St%& Ƞ ~ U   & h% S U _ @_w zDE%%"5   & h% U w. w D55@ p  } 3  4 4 4 4 4 ww z&$&5+ * &5e-N& e %' & ,&    wVw B z5f 7% f 7Ɵw@ m%7%&%%'e w % %    e-x%ww D d%&5 e %'w@%  5 e-&%w TԆ FwXw DDCDpC B~ w,w N w ~5 & E        ~5Yw>@(#)ni.c 4.2 9/15/87'%nlyrhpctdnmodydwlndlstsbc.'/usr/lib/tmac/tmac.xxxxx/usr/lib/term/tablpr\P /dev/catV dsassp8ftDpspHvsGnrr1if";ie:el:po6tl"tm8bp<8ch7pn8brHti86ne?nf4ceH5fi3in~5li>ll5ns84mkArt~9amdedi!daz!wh7dtd"itArmrr 1rn>adN3rs(4na3pl6ta,?tr"@ulx@cuh@lt6nxvsoigtc4fcZaec>eo>lc4ev9rd=abCfl9exssHfpGcsHbdHlgxHhc4hy4nh"5nmFBnnBsvAosBlsj6cc4c24em9af1hwXmc^Apm$pipuf@pcF$htXcf0 ((.'.@(#)nii.c 4.1 6/7/82fO@(#)n1.c 4.8 7/21/87X@j 4 V n  8  /usr/local/lib/tmac/tmac.Floating Exception. /tmp/taXXXXXCannot create temp file. nottyTypesetter busy. Cannot open can't open file can't open file Too many page numbers @(#)n2.c 4.1 6/7/82Waiting for Typesetter. Pipe not created. Cannot exec: @(#)n3.c 4.4 6/25/87%Too many string/macro names. Out of temp file space. Bad storage allocation. Core limit reached. Macro argument too long. Cannot divert. @(#)n4.c 4.1 6/7/82H'd'|''''((4(T(p(|(( -0-H,.-,T,H,x,H,,H,H,H,H,H,H,H,H,H,H,l-H,@.--Too many number registers. ixcmzvldwIXCMZVLDWDivide by zero. @(#)n5.c 4.2 6/30/8333Cannot plant trap. User Abort.Cannot do ev. if-else overflow. :@(#)n6.c 4.2 11/26/82RIBS@(#)n7.c 4.3 1/5/88Line overflow. Trap botch. Word overflow. @(#)n8.c 4.1 6/7/82Exception word list full. @(#)n9.c 4.2 7/7/86Zero field width. @(#)n10.c 4.2 4/17/85/usr/lib/term/tablprCannot open  @(#)hytab.c 4.1 6/7/820 "!S3"#`p`Аp@РP`p"! #!4!@``Pp`#s5$#D"1f1@` @P` 0P` @````p``p0#!Q "b"1P```PPp@ P@0`` @!`@PA! "Qp@`p``@F! g 3!Bp ``Phk22jWf@P`@P0@ 00 @P@`0#b&`2gY&FI00 @0 @ @@@ @`6%e`8XC  @`PP P 00p P P p P`P` )Vh`0fuP p`0```0@`P000 `@``8U)rPEVD$*``00 0`p`5"0f Pf"G>B"f()/ /// @/N@//_?OU3u&'=  //`O@//?@/0e:ou36t(OUH/,oL+/???L?>???o,O=U5/63'V /)P./0>._|-ݶm?o//3"? /?@~(wf"J?H2*s0 P0 o UͯfV/ @p o~%hlr"gjC@ `@P0@ `0 @P@`0r&bY*FH0"p @` `P P @@``&@`6%XfXC@  ``P P"`q"cr Q"0`S!Q"0P`Sp!)Vha0f6uP p`@`aR pc"b'cP `0a@ `@``HU)rPUWDD*` p`0  ˙`.`p`5"0 f`a@(#)ntab.c 4.1 6/7/82hybusqemru141234mififlffFiFldedgscfmaagaulsl*a*b*g*d*e*z*y*h*i*k*l*m*n*c*o*p*r*s*t*u*f*x*q*w*AA*BB*G*D*EE*ZZ*YH*H*II*KK*L*MM*NN*C*OO*P*RP*S*TT*U*F*XX*Q*Wsrtsrn>=<===~=ap!=-><-uadaeqmudi+-cucasbspibipifpdgrnoisptesmoplrgcobrctddrhlh**bsorciltlbrtrblkrkbvlfrflcrc@(#)suftab.c 4.1 6/7/82rrrlhhetalsisipiytotaniniciathinmlibililhfdiaaiorororararuararoarariararararoooooonentanananololieliiaiaitetrererevleDalce%edede$edduceeteaeaarzanzalzrdzelvnivievCuoninuuuquatuttatatortentatouslosisisasr$urigr#rtororherpherrrrcopyntonhononen$nn%ainlininouinomomimllllillcklllllalfalaltablbllalalalikgagiagergmgkgdgifnifereeidididuenclunc&esncerncinc%ancerncarncancalncincusicticieclacfrooeli$ieoontintrinrinpinninminlinlinlin%sinrinlinnlinkinlinlinlinlinlinyhineethnehingindinbinnoutortittiseispisrisnislisuislisbisgisdissraporugurgicaairhifedsciemorarooalracacuselelheltaltaalalvukthtchadua#uaur%gaonaiaia%ririiiiaaea$eaciaiaaaaoiuoi#i#eivsisiisals$es$asoooaithithowowurpoooooo alaioaiolioio%sioionoioiooolooisoiiiiiiteiaightomeoekeeee#aomaiaia$eaiaialeaea#eacrouhieearro#o$iizovvevomut%useost%cerit%ise%ese%asetearert%meaeropaewn$seonrmelldleleknheaheeihethshhechdgrdoundldiducncBa&aca&eca&ica&ega$uuiouiouiou$iueoueoueubesesb%pibCeCeDshDchionsinsalslishtsisgesgsdesdsasearooironrinenieninrighrighligheighhifraf$dgoaoaoahaui$es%quii%osiinni(failailaililiurouar$urenaionrirnlglalfalalbllk&gahleeckeodtudeedaa8bp*>4Jd: !"H""longjmp botch longjmp botch SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecx$|$mn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT$$% %%%,%%h!%%%)%-%1%5%9%=%E%I%M%Q% U%TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d./dev/ ((((( AAAAAABBBBBB $d oxԂfeԁgcslL,u0DOXBU ~5 & E        ~5Yw>@(#)ni.c 4.2 9/15/87'%nlyrhpctdnmodydwlndlstsbc.bin/troff 751 3 24 137356 6024533032 5724 ^-d e7cce7b / Dv  7%  4w  ~  ~ % ~  ~  ~  ~  ~  ~ @ _F_Pe@ȥ-_P r yN S_FNe 7"_F7 Ne 7ʕ_F J_FNe 7S_F S_F@ ( m &fe 2 _Fbe5@e5@ A H ~Nef f ~N _FNe _F R_F7 $_F  ؅ ( 777R7 t@e7m _r _" E N 7V 2 _ _  0R& s=:J 9    _ _`   Q _:  _ _B Q _@ȥ+  7F7 D ww $ "t!  ) &Q-Q v7  2Z -QP 7P O 7J7L77472 4   NE% 4E% 7 $   ---  ȓ E% % 7  >& R w  ww   ~ ww  ~  wzw fz ؅ 7Ȝ n twVw B  dae& s  .   ( 4& ؅ 7  Ց Ba7ww ƃ  7& 7  7#Z P  F "O  ؅ 7,) (  e .`MT77 77M8 7 7 M < 7N7zNRLe7rNw %w Ȃ Z5uNe z7L 7L7 L 7Lww w42 $7 Lwvw b К  E s w6w " N (w"w C    %ww D J% wځ? NM   tT t5R  t Tw   tQwrw ^ M 60E%  $7  L L w8  <E%S5_ % ؏  7 ֏%  `  _ %f    L_ -b-- i_ %_ LU 0C  L E5_  r yX _ _ LE% _ %"   _ _ .EQ   _  r yh  _  _                 _0   _ _6   "_ <;_ _ >_ I_ ?_ HA_ _ NA_ _ HY_ ZY_ \_ 0\_ Z_  (%_ D7>H m _ _uUbU0 0C_ EV_ PL_    _   _   _\   _    _ _ _   _ _@E%  27 BG8> " FG H_%$  L7:? e_w } 8 0C`e-w|w | 7  w| ten_d 7 b e|^7 t J j ` %X 1K  J t - +%' 0   -7  T ޅ%TeT7 ڊğ EeTw N% r ȊE%  v 5E% p %$]\]TE-8_j EU_j w d{ RL . ̋ F; 29e̥-7  & ؅ 7; ( (H (ډ t Ή7 D7 D7 B wz ƀ퀈 bF t 7f7LF77Dw z t77v 7Nj 72RtT  Ҕ- wJz Ef& e  T veeT7T؈  JEeT7-w y #7 E%  7 z  -EE ( j \7 tC8pwyw ny D 5E% E% 57 Ew 7 >>>e7> * :  2Z$ ft w sw rw]j < 7  2Z$ ft > Z    ʁeԁ wrw r Z h@ I  A    ( N w`rw Lrw] ~  ~  Ƅ = U& v   2l 4wqw qh=d=`=e7^=7 N twqw q%" J=&  e0= \5fe % .w~qw jq7 | %.& R wZqw Fq   " J7Z   J | :t2WtAREPpRwpw p  Z J | l wpw p  wpw p  wpw p  wpw p%R~: . Z  ; 75 ~   v| | v ptUpR b >X8 ,:&%. R 77wpw o tRE@- %,%,wow o @t5R@tT l@t0 R@t0 Twow toN J7~7 ~7 ~ z~* (t5R"(~p~t7T~`~ ~X~ V~} v7}}2~}L t R %,%, 7~7 } ~ ~%   ( N 7}wnt}T } 7}%}tR tAUpR7 }}w `n E% 7**}wRnw >n  .tE | J7 | 7 w 5 |N  t5E%  | w|  |@wm% 7 r|% %. |%  w \m 4|  E%"  E%   {w(mw m    %%   5% 5 @7{wlw l  5 0 N  % 0 wlw l@te wlw |lN  w|lw hl z{A z{n{r{7 {{ {p T{5N{% V D{@{  % * (  { 7{% { wkw k z- & z& hef&|y ez dy %zEzE@ z7 zwkw pkAe v@wlkw Xk6z  fz  z v7zwi%(w i w  J%t5R w whve-j4 ? Z4 H wtT w h w? 24.4 < _!ueeew43@e5e5 &ve@-C  @m % 7 u-^ Ze5 5E%" w 5 v E%  @E%" X5E%"w S  C- q  bv NNue  w2@Ae@ ?2rv "vwRgw >g Ee % ?!2 m27uwgw g $v wgw f u  d%%R0  u07070 uuWpeRw00u7 u7 uwf u%u  u ( N%Rf0  uxuWpeRwJ0 ?@0<00ru |,0e  ` % w f t02 p  $2/1 t \/1wew e /0  ^%R/ 57t_$ >557r'E dt E@-  E%    N0C % 5 0C % 5 0C % 5.tN %  A r@& 2  x\  % @@@ x\  %  V%Rt. n.p,p V.-V.N.N lw\dw Hd <47 wHdw 4d _%wtp f v7^ %w dE-E7s% ( 7sN- p) ` w c 55 B  5 tR55<Bet5T N  5% ` @E@tE ҕ  f& Ne ( %, % Nef f& Ne (wbw b%d A rde0= % A rd r e0= A r e0@=   =@wnbw Zbwfbw Rb 7vq5 E%+ %-7 _(E%._n(t$ V_n( xE_(_(߄ _(_( 2_(t_(_(_(-_(^_(+_(_(p_(b+_(%RT+N+fH+cJ`` m8Z6 0CDPfMtJGD6A~>;p6* 7l7l7 l)   (%  m Avup m|bH@ 7o (@nw`w x`2n7 o+f p) ? nnwb`w N` !  p- %%   p  w ` %% >  0%* Nw _  nU- @ 5n 1  A I a i Nf ) aw~_Nf 2*Nf .+w N_ tnA r  bnN& ) A r e0]>nN `w_w _ $nU0  ff x*ew^%imw ^  w^N f fA r & x*eA r u rA rC%@]m ` @@ 5]^m ` @ ]Fm ` @w ^ (mU0 w^Nf Z+ w ] A rN& Z+ A rml]lN `w]w ]%Tk w]Fke@kw v] @w|]w h]5 5 5 5 7 Vl E%  x`7 _- R5u l_-5`u`u  .5u k_-5u  5u k_-fffe Ge 5u k_-   5 5 fffe RX 5u `kWfffe F v5u  < 8 fe TeEWpCEWpCH`T "%R""" j 7|"%  5u  7XgA@wVXw BX g) ) 0! %%  mf  2 v^p ` wWw W f n H (% X m j2 f m| 4  f vwWw |W Rf  + ' #  _ *%9  E%0  (  pw&Ww W liN j2wWw VEWpwN j2wVw V  ^E%+%-7|   DpDDoF& 2 7 h7,7*7( be wbVw NV  @ 5A 5rA rADpfA@  upD  wVw U 7 E r y 77$7 !7 e r    1 6 7 9wU    1nw PU7 BwXUw DU  87 ~w>Uw *U 7 w.Uw U0 wUw U wUw T  5 E% E% 7@wT w T. <47wTw T' <47wTw T <47wTw |T <47~w~Tw jT <47nwlTw XTX  f 7 f >c & "5 7.w4Tw T7 "w(Tw Tu-@wT@w S Vf  r& "5  b B77 ,fwSw S \   t & "5  7 7 &wSw |S  ` +( l & "5 @@7: &wTSw @S (  , 2 & "5  7wSw S  t  & "5  V7 >&wRw R 4e l  $ & "5 Д77 ewRw R 0 d   & "5 2d7, 2d7`*ewfRw RR  $27-$w4Rw R `  $2 a+ | 7% ƛ  ƛ %%  ƛ 0wQw Q ` @   ƛ %%  $2 x` 0 ƛ 0wlQw XQ  p- ƛ %wBQw .Q c ,S L & "5 7 lc `7ʷ w Qw P%Rl ,S j2 B _7ɷ   2ZwPw P ~_ |_ 8    %%@a @a0Ne  6_wfP@ae&  % w 6P  6 ,_3     $2 _C  %R`  VwOw O L%Re.S $2 ^x "  9w|Ow hO >^ 7p^wdOw PO  wTOw @O  af aa . ~a 7 ta ^ D% % Va  dg = N8.a (aa7!a- at && v\ eb\ % t && L\ e8\ ޅ%7.awrNw ^N l7 l7 l &;wTNw @N%l ! (7 l N &; lw$Nw N%  l  ) E%! 7 T \.  x% Pl p =7 8 ,E% E%7Pӷ V\< E  e n o  t <5"5 [ Xe% 7 [ L< % [wLw L ED-D-% D-Nf L< D-7 [wLw L5 _=E%Rt b57[5 7 `8\400, %   EC-   5 Z2Bwwwwww 7 8 `EC-%  !%N Xe5 whwdwdw`wTwP 2 \ZN l@wjK v  5w :K Z F X EX& v 4 x (68 ( , ] wJw J 5fe& ޅ%%  r]j]%d]@wJ 7 R] 8 ULX& v w hJ\ <47whJw TJ7 w\Jw HJ & j & "5 7:Y%R%  VwJw J 7Y7` 9 ; & "5 E 1  e& & "5 E 1 X E C R 7l7X %" X 0 w~I U@ Uw RI  $2 HX" ! 0  V7w$Iw I W 5 5E%   |E% wHw H wHw H [ N  *  `[p 77  XD[P77 Z (wrHw ^H   %S \& E %>84t 7.w(Hw H V 7V7PƷ bZ  V d727*7 G  $2 2V7aY w*Gw G -Y Y V77 YwGw F 77 z + ŷ 2Y>S j2 U & "5 74 B  2 B  l B 7 XVXwFw |F Xe   hUN& "5 =w\Fw HF X  & "5 7\7 Xw4Fw F  8 wFw FC 55@ME5 GX @E%%-2%/t-f>zX6, E5 2dE  C  ` ,X 7c7(XwZEw FE 7 @%75  Rf -Wؽ 7 7 $W T @mE WtE7PLEEVpD r r% hW 7.'ZW 7$fEEVpD r7 r%  W 7w4Dw DDu E7VtE f7vUt7Vtfl7 VwCV  xV@DV<2<rV4$w C  *# e !e]:wtCw `CDe% % - wHC  @m   @mH-w C   | \& E % _BG   7̓ - t t55 tWtAAp@Wt1  '7 $ E%+%-t0t0ȷ T Wt17 zT-Nm zG̺  wBw A   >T j27 0T P zGwAw A #t N~ H 5hhw```NE G7N 2w|Aw hA  fC-  fvUwNAw :A7  E  œf!  œf t]t 7ҾU 0C7־> -Ⱦ)¾tm H  G  œf!  œf t]|t 7hw@w @@t@t  %+Dm%-@@tApwL@w 8@ ҾE%+%- E7e% %- 7 ʽ`#0 % % nE7e % Wp D`7  zGw?w ? 6 Iw?w ?   4%PL %S2\& E %(**$  t  tm t  zG  w ?w >l 777 zE55_K8@e5-J8H 7@ 7b^^ZNJ >Q E@-? 6M< 0C`5" EWpu-82@m5-"7}ee5@E55  5C5 7 M (ww8@e5-wP wtwpwpwlw`w\ >7 NPw=}eew \=> O wZ=w F=EWpw w>=w *=  tO& 2  L 7 TOwLw9w 9 l  B \& E % p f  7à "˷ K  17 Kw~9w j9 ˷ K   j2 NH*%7w:9w &9 K  E7ضU 0C7޶7 XKw9w 8 ζ d& 2  h E?tU7G U@GEt Uw8w 8 7 G _R%Rh %d V_R  _R    W \ z 0 ?< F 6"%V7  07- " ε%Vܵ 7Ե7ε%еȵ r7`%mֵ 7 VVmƵt@,@mp x\  $@팵^m x\  3 2E% #  0C` 2E% m    촎 x\  7 77޴  V%R p,p t-tl\ V  hE7 wf6w R6"vErEU1 0C j d 2 7r"  $mJeCpw`L" %d %  $aCpN x\7 E p) wpȳw` w5w 5 D%R % V_T  г  2_T ȳN  T'> T  T E%  2D  7T7"77$D _T7 T H^ Z[jTwpw`J7 ^T b DN C < 2 ( \ 9 $  C7 7ֲ7в %IJ  β r7 wp@7DS 7 zC PC7 7 HCwj4w V4 07 &G LCW "C 7 C7 Q 7872'J-%  P7 B < 9& V E%    r& 2 7a ر  V bR  0 7xB7бw3w 3 B|BX7 rB 9wt3w `3  7 F(     z R w43w 3@E%@t (%6 mҸ/8 e- E$&  E%N 0C5wm̰we w2w 2 _W%RfoV  hAbABH m6:1`    w.Ap     1l 0  _ Y _ Yp,_ Y _ Y & R_ Y @ _ Yx @@lr j@l mV`` 4@1 A p  7 N@,-4P* w(p@76@%@ @ R ,@ > @7 ?-|x ?  7ܩ7֩->" 80 p  (  -`7 7 ?  7%,5--h7  T Y Da $Y%6    &ƛ R 7"?w&0w 0  ƛ  mC- %w/w /Jeب@E7:%2 x >5 E 7 w/w /%R~x @w|/  ƛ mC  %@!w (/%R  Yw/w /%R" > wrhj = Y7 V7  =w.w .7 A ά ج 0C7ಬE% - x p @Wp-l 5T -* ^xA7 A AGe@ @@%. @+e@ e - 5e 5֫e  @  V  0Cȫ & V ҫ  w-R@ 0C5w-| 8@ 0w-.d%^, @ bLE%-%EU?( 0C` e   0C`` w ,7 ? N L w,w , ª Īj7 77z7wr,w ^, 5  ? _v^X_8^?4 F 7f7F7>7 " E%  7:7_v^-%  0C& ^>U ^Щ zU ^ 7 j>% Щ7 r: w+%~1-rp~@>e:>%4>),>%%-%%6 T:He?>e=%== 0C& ^ E% % E%.%!%? ? ި7 4 Ԩ7 ? =e= @w *% l=!C  ^=%N 0C5wmrel wZ*w F*D _  _ ?7Le _ e7.7RI _  & e2Ne( ww02%r&2_zw 2_zw% 2_zw%2_zw1Wpf1Wpem1e, _zw@e\5 N wf&te -1 @ E3| -1 *te5.N wf&@.e@.A Ep@.A Ep -01 s> -13>  1|_zw -0 t-0_zw -0>77te5  e>7ԯ -0 _~w@e>7w  Nefe w7 b0AWp@77 77 7 f  > >7V7P w 7 07 X77 V77 V7P*> >7$7ww z7T* ̋  dw  dw  2  wLw 8 h7 @55 / w-/w-/  t  -d/  t5, 5, -:/ {ue&&fe Xe3 e>p)e>3w w n & f eW*[*wZ w F tQ@f& 8 e5uQ@f& f e5uumumu _v|eeQu  %QQ eu % ff et ff e5u< ff Zet< ff eL A@e@ f& ret e  =  r  rd > r 8 8 rd ( A * 5 8u 4  A * f&A@ 5u r  r   A * @mAm@ 5u e4 tWpe)u4  AmA f&A@ 5u  AmA 5 u ܃@ 44 _*ttw !w w u@t55@ 5 Nefef % (3A@u5Btr2@ Aup  fef % u-u-u-@w w  fe @w @pHA@tw w * !,& ҂   w| 1&L %73˕,LNf  w 4 D `* !     +  w e% - r<N r<&@&+L eL ~ ~w  Nef Ѐ wzw fD 5  ='& % `5ȥ= h' = @we  w  Nef @ww  f @w w D6 5B ʋA r e0@ A r 5X  B-ʥ/ʥ/ Nef ,5@ 'Ne+ %ʕ/  f ؅% %H&%8& wNef ҕaʋʥz%+ʕaw  BuNefef x%=@@wxЋ Ћ  Jҋ~ @@w hN V HNef P?@E% 8+ 2 $*L-+~ e~ Ne~ u-u- ~w w vD .4 4  ҇wfw R f ؅ %  .P 4 4 w&w D 4-&4-!4 4   &e & ޅ%4    wme   s lt  &w wSwmownlw e& 7 7gw  @A  v @A   6v&  @ppC`p   6@Cww7" Ћ PPЋ ww  N ww w>wfw Net@f e  w6w.w  -U7,U7,,,Ae vB,7 ,  ,%, 55 a  a!PE -,% w$  `e vWt vwZ,@ `e @  %2,.,e U?,, `e 7 ,U?+ a7+ ++?++U ew dD+E wZw FD5 ҇ 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `+m& E%mz%w w7*'$!      7& A& BF7!ʢW-~7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu,,Bw* J@B |_D@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& 8 z   5 , @ :% & f E 8  (˥-%0     ,:% &  8 8 5E& z   5 , @ :% & f E 8  ww D:5UE5Hw _5uNfe & % _bNe & P  uN )U5| m- 5 & %St%x, 2 V U   & % S U _` @_dw zDE%%"5   & % U w. w D55@   . 3 ҇ 4 4 4 4 4 ww 6$$l,5+  &5e- $e %\- & #    wVw B z5f 7# f 70w@ m#7~#l,t#%\-e w ^# P#    e-4#ww D #l,5 e %\-w"  5 e-"w T wXw DDCDpC  . w,w N ҇w ~5 & E        ~5Yw>@(#)ni.c 4.2 9/15/87^-%nlyrhpctdnmodydwlndlstsbc.'/usr/lib/tmac/tmac.xxxxx\/dev/cat dsasrsp9ftIpsFGvsOnr\1if&;ie:el:po6tld#tm8bp@8ch7pn8brPti,6ne?nf 4ce<5fi3inr5li>ll5ns,4mkArt9amdedi<"da,"wh7dt#it"ArmLrr0rnadB3rs4na3pl6ta0?tr&@ul|@cul@lt5nxsoigtc4fchec>eo>lc4ev9rd=abCfl9extssPfpdMcsObd`OlgFMhc4hy4nh5nmJBnnBsvAos Bls^6cc~4c24em9af1hw>`mcbApm~%uf@pc$ht`fz$Fcfb<  HH .'.`8pH @(#)nii.c 4.1 6/7/82,S@(#)n1.c 4.8 7/21/878lx  " F > Z p  ../usr/local/lib/tmac/tmac.Busy. Available. Floating Exception. /usr/adm/tracct/tmp/taXXXXXCannot create temp file. nottyTypesetter busy. Cannot open can't open file can't open file Too many page numbers @(#)n2.c 4.1 6/7/82HpppppppHNX^djfiflffffifflWaiting for Typesetter. Troff finished. @(#)n3.c 4.4 6/25/87%Too many string/macro names. Out of temp file space. Bad storage allocation. Core limit reached. Macro argument too long. Cannot divert. @(#)n4.c 4.1 6/7/82'n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n(n('n(n(n(n(n(n( (n(n(n(2(n(n(n(,(n(8(n((n((n(n(n(n(n(n(n(n(n(n('b(''n(h'n('''&('n(''r'n(n(T'z''`''((B(,, ,^.-`,, ,<, ,, , , , , , , , , , ,0- ,.`--Too many number registers. ixcmzvldwIXCMZVLDWDivide by zero. @(#)n5.c 4.2 6/30/8333Cannot plant trap. User Abort.Cannot do ev. if-else overflow. :@(#)t6.c 4.2 2/23/83%&'(RIBS $zEEEMMMMLB"f()/ /// @/N@//_?OU3u&'=  //`O@//?@/0e:ou36t(OUH/,oL+/???L?>???o,O=U5/63'V /)P./0>._|-ݶm?o//3"? /?@~(wf"J?H2*s0 P0 o UͯfV/ @p o~%hlr"gjC@ `@P0@ `0 @P@`0r&bY*FH0"p @` `P P @@``&@`6%XfXC@  ``P P"`q"cr Q"0`S!Q"0P`Sp!)Vha0f6uP p`@`aR pc"b'cP `0a@ `@``HU)rPUWDD*` p`0  ˙`.`p`5"0 f`a@(#)suftab.c 4.1 6/7/82rrrlhhetalsisipiytotaniniciathinmlibililhfdiaaiorororararuararoarariararararoooooonentanananololieliiaiaitetrererevleDalce%edede$edduceeteaeaarzanzalzrdzelvnivievCuoninuuuquatuttatatortentatouslosisisasr$urigr#rtororherpherrrrcopyntonhononen$nn%ainlininouinomomimllllillcklllllalfalaltablbllalalalikgagiagergmgkgdgifnifereeidididuenclunc&esncerncinc%ancerncarncancalncincusicticieclacfrooeli$ieoontintrinrinpinninminlinlinlin%sinrinlinnlinkinlinlinlinlinlinyhineethnehingindinbinnoutortittiseispisrisnislisuislisbisgisdissraporugurgicaairhifedsciemorarooalracacuselelheltaltaalalvukthtchadua#uaur%gaonaiaia%ririiiiaaea$eaciaiaaaaoiuoi#i#eivsisiisals$es$asoooaithithowowurpoooooo alaioaiolioio%sioionoioiooolooisoiiiiiiteiaightomeoekeeee#aomaiaia$eaiaialeaea#eacrouhieearro#o$iizovvevomut%useost%cerit%ise%ese%asetearert%meaeropaewn$seonrmelldleleknheaheeihethshhechdgrdoundldiducncBa&aca&eca&ica&ega$uuiouiouiou$iueoueoueubesesb%pibCeCeDshDchionsinsalslishtsisgesgsdesdsasearooironrinenieninrighrighligheighhifraf$dgoaoaoahaui$es%quii%osiinni(failailaililiurouar$urenaionrirnlglalfalalbllk&gahleeckeodtudeedaa vFD J Z L!!("@(#)tab3.c 4.1 6/7/82hybusqemru141234mififlffFiFldedgscfmaagaulsl*a*b*g*d*e*z*y*h*i*k*l*m*n*c*o*p*r*s*t*u*f*x*q*w*AA*BB*G*D*EE*ZZ*YH*H*II*KK*L*MM*NN*C*OO*P*RP*S*TT*U*F*XX*Q*Wsrtsrn>=<===~=ap!=-><-uadaeqmudi+-cucasbspibipifpdgrnoisptesmoplrgcobrctddrhlh**bsorciltlbrtrblkrkbvlfrflcrcem+(Z[Rc' $#HIJKLMNOPQb`gC=8<:A506EG321/7-4>.F9DB?;\]ޠ   % "! )i fl&STUVYX^_hݠ·ƭش윞հŸ覤ǶakW磖  $  $ۛ Rɔ SSR $$   $ $ۛ QɓQR P $$  $   $ݜ R̗ TSS$$!!  $$$ WW YUVR$$$$$$$$$$$$$$$"**)  longjmp botch longjmp botch SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec.*2*mn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT******,**h**********++ +TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d./dev/ ((((( AAAAAABBBBBB ³³pdVobx f.e gcs0l0Lxu|DZOfXUbin/spellin 755 0 12 12742 6024533130 6216  e7cce7& /   7%  j w D %J&  5 VNa Ne%aN 5 AWpxCe"@ s 5ue@t f&A@vf& bes 5u % % ww $Nf LYM   j M @e55 5 WpxBe" e5`u`u eCt f&fe TeA@v efAEtP % fe >% a De%a t   j w w DC AupB5 S  "̥ ;  & ӄ  %;  7  & %bb& ӄ  % ₎& %`@ @m A &@w    @A  @C@Aw DC AupB 4  & %b 5% 傎& %`@ @m A 2&@w2  w  D Lԋw W f r @  W f r@  @ &  4  b '     ` TW ~  s`K6!  w 0 D85U5_5P_  m@e4 ,5Ne &    uN H 4USt%58 . 54 . 5& & % 45@e-4  % U5EU  w E w D  +   r= wB w 5 a U5ff %ށ̥a &  e 3     U̥r 33 ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw >D5"E@e44fef 2% . U4 4  fef 2%5 w   @ppC`p   6@Cww7 w FD:5UE5Hw* _ 5uNfe & n% _ bNe &    uN H )U5| m- 5 & n%St%   U   & n% S U _ @_w DE%%"5   & n% U wv w ^D55@ .   3  4 4 4 4 4 ww~w  b$5+ 2 &5e-6e % &     ~ ww  5f ~ 7־ f ~ 7wX@ m7%e w   |    ~ e-`ww D L5 e %w(  5 e-w  ww  N tww rDCDpC H  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f B e  w6w.w  hU7fU7hfAe vB7   ؼ%Ҽ 55 a  a!PE -%f w$ H `e vWt vwh@ `e @  H%@D5"E@e44fef d% ` U4 4  fef d%5 w   @ppC`p   6@Cww7f w FD:5UE5Hw* _F 5uNfe & % _F bNe & 6   uN z )U5| m- 5 & %St%  B U   & % S U _ @_ w DE%%"5   & % U wv w ^D55@ `   $ 3  4 4 4 4 4 ww~w  $5+ &5e-Ҿe %z & Ҿ    ww  5f 7 f 7wX@ mj7h^%ze w  H :    e-ww D 5 e %zw  5 e-̽w  < ww  N ww rDCDpC z  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f t e  w6w.w  ԼXU7ƼVU7XʺVʲAe vB7   % 55 a  a!PE -X%V w$ z `e vWt vw&@ `e @  z%e U? `e 7ֻVU?ʻ a7 ?U ew dDE wZw FD5  5N z !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7*'$!     l 7b& AR& BF7!4W-$7 w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_0@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w@(#)spellout.c 4.1 12/18/82')AEQkourispellout: arg count spellout: cannot initialize hash table >bb\dBoNx fe gcslLduhDFORXzUbin/spell 755 0 12 1716 6024533143 5652 #! /bin/sh # # @(#)spell.sh 1.3 (Berkeley) 83/09/10 # : V data for -v, B flags, D dictionary, S stop, H history, F files, T temp V=/dev/null B= F= S=/usr/dict/hstop H=/dev/null T=/tmp/spell.$$ next="F=$F@" trap "rm -f $T ${T}a ; exit" 0 for A in $* do case $A in -v) B="$B@-v" V=${T}a ;; -x) B="$B@-x" ;; -b) D=${D-/usr/dict/hlistb} B="$B@-b" ;; -d) next="D=" ;; -s) next="S=" ;; -h) next="H=" ;; -*) echo "Bad flag for spell: $A" echo "Usage: spell [ -v ] [ -b ] [ -d hlist ] [ -s hstop ] [ -h spellhist ]" exit ;; *) eval $next"$A" next="F=$F@" ;; esac done IFS=@ case $H in /dev/null) deroff -w $F | sort -u | /usr/lib/spell $S $T | /usr/lib/spell ${D-/usr/dict/hlista} $V $B | sort -u +0f +0 - $T ;; *) deroff -w $F | sort -u | /usr/lib/spell $S $T | /usr/lib/spell ${D-/usr/dict/hlista} $V $B | sort -u +0f +0 - $T | tee -a $H who am i >> $H 2> /dev/null ;; esac case $V in /dev/null) exit ;; esac sed '/^\./d' $V | sort -u +1f +0 % 傎& *%`@ @m bin/tbl 755 0 12 76312 6024533164 5343 d:2 e7cce7I / LT  7%  \w ,` T Nf v  \w`w `FFNf NeF lX%Ne fB 6Ne >8 dF [ w_w _wTFwPF JFeFF @F w_w p_ .F*Fȥ-  F< 8F F F%EE [E7& W 7EE lX% E 8 EeEw^E 8;fe0 TUNe0 w]@e05.BN B :5 (N.f fB@N "Y5`.@. B  8 .  .e@  ( 8 .@.5%; .N.@e5(. .@.5 %)=  .= =@% Ax@%: Ne! TT%@%>@7X@7R w \ u  8u-wj\ @w J\5 @ A@ 0 BAWp 1?5 AWpAmWt1(AWpAmWt1r1AWpAm CpCm 3 ::b#AWpAm 1 AWpAm l % % 7>B7<7 FB 7,7& H4*B lX 5 NeP8B lX% -A>A lX w:[w &[ 55_~ @  r xN-_~ @ 8_~ _~ NA ,C 7A* ȋG: 0 C: V : 5: pB : p5: 0 C: 0 B:et 5: 1r ;  =/ _3v: -B j: >8 Z: 5J@  fB_ 7 2r t  & J1w~S: =B: 4J@4 4 C 745 _29 r AWt@`W  5-? N9 bC  a n<9 rAWt@` @x9 ArBt`1"^9 rAWt@`J9 ArBt`p29 rAWt@`N 9 bC %s t -8n8 rAWt@` 8 rAWt@`0  : 4 2 %_ &7 7 _ w "Q 5 Nf bC a  xZ -7wP w P f bC 5Nf bC @- wP -X7@w P 5 KA ff % 5N N5 8@ rAWt@`5@ rAWt@`5-6 ff %   -6 -6wO @ rAWt@`H@ rAWt@`pu-@ rAWt@`0 @ rAWt@`N M5w hO .Nf bC %^wTO-5@ C @ rAWt@` @ B @ rAWt@` w N  N 7 f  : < <, 5AN&&X*, lXe&&i, lXe &+ lX%O+ lX%     55 C&ffeOfe(+ lXe Ne(fePz+ lXe@ @a Ne(fe<L+ lXe@ 5A -&+ +eN+e'+eO+ lXe*eO* lX%   &* &A* lXe  * lXewCw CN 7 3lR ~* lX%N $1N Z1NW P* lX%Z $1\ Z1^ Na * lX%w^Cw JCN 7 \@R w4Cw C    j  ) lX  ) lX ~ ) lXe ) lX 5 Nf " -N) >  D) lX  6) lX  () lX ) lX w\Bw HB ( lX 5 _^uNuN N5 rAWt@`  Nf CaNf bC 5a S x~ @ rAWt@` @ PE Ne< L( lX%%a%n@ rAWt@` @ xE @ (EA @lPE NeP ' lX% -'_N( ' lX wANf CNeP w @N 7  \ @_-=w@=w @ 555 @ B -'@ f* ' lXewT@@ C w .@5 @ E@ Ee`7 & lX% %D & lX P & lX U & lX ] ~& lX h p& lX  b& lX  T& lX  F& lX 5 @ E@ Ee` & lX% %   2% B,  % lX  % lX   =-%& % He  % lX 5 DNefp% L%54 Ee` Z% lX%@ Ee` <% lX%N DNf% f .Ne  % lX -$   &* $ lX ? $ lX$$ & .NeX $ lX Z $ lX _ $ lX c x$ lX w=w = 557`$ 7 X$  .    =-& &G @ CR@ BL5 E@ rAWt@`56N  `u@ rAWt@`5  N M5-# % N~ # lX% -h#@ E@ Ee` J# lX%N N5@ C@ C 0SwjA AJ@WpAm eb#uPN 7 *N N5_h& rAWt@`  jNeaffeaf ! lXe -n! Z  t!-f &G ^!Nf 0 N D  6$K (! lX%Y ! lX l ! lX%{  lX   lX 5 5 _X(Nf  lXe &@ - Neff L%5N DNfff .Nee V@ -N _T(uNuN N5 rAWt@`  Nf bC 5%s6@e(5%a@e<5%n@ rAWt@`  @ PE@e<5N  lX%@ rAWt@`5A AJ@WpAm eb#uA AJ@WpAmWte(u5 Nf bC 5 -_* =_* aF c_) l_) n9 r_) -_&~  lX N D  $  lX% Nf - _$5 _j-@ rAWt@` _)@ PEZN N55 rAWt@`  ( %Nea  lX% Nea  lX%   lX   lXeNff v-%  lX%@ rAWt@`5%a%nG@ rAWt@` :@ xE<_+@ rAWt@` $5 N    lXeNff (F%_T(@ (E_+N  N N . NefeP TTN N5A AJ@WpAm  5 4@ rAWt@`  % "Nea * lX% Nea  lX% 7  lX 9  lX%% <  lX%N   Nff v-%% ?  lX%lB ~ lX% _,@ rAWt@`  _,@ -8;@ rAWt@`  +@ A p,JGHG!A AJ@WpAm  @- Nef f L%  5%NeaE  lX% Nea[  lX% r ~ lX 5 %_T(-X_T(t R lX 5 _T(@ rAWt@`  ( N N5 rAWt@`  Nea  lX%@ pHG -_$w 3N 7 $N $1N Z1N  lX%   lX%  Z1w2w 2 Z lX  H lX%5 _/@ rAWt@`5N 7 _/ _/  lX %  lX%uN N5 Nf bC 5@ a_n0 c_0 l_T0 n_0 r_|0%r lX%A AJ@WpAm eb#uN $1N N5 C A rAWt@`  4Nea!  lX%A AJ@WpAm Nfea&/ lXe&&O lXeNj lX%%p lX%} $1 t lX%  V lXe -<_.2 lX% 55tNff .%@meO&fe(  lXe_.Ne(  lX%_.Ne< NfeP lXe_.@ -,Neff L%5@ f lX N D Nfff .Ne -* " lX wh/w T/ N@ lX%w2/w /   N lX%w /w .7 n h%b\ r%N 8@ 7rn 7. ( $  B C  8* *2h7b >8 T *2 HJwb.w N.N  fB 1@N 0S" _#-.7 7 @@ ==p X " w-5 ^ @5-\= N  bC  a  n3@tm~ @AWtml1! @tmV%@tmDAWtm8p@tm($N  bC %s  -@tmH@tm0 @tm& -_2w ,5 _4@ A B 2 xExEPEp(E5 _4@ Co@ BiNf bC 5%-]%=Z%n%ad@ rAWt@` $5A 1PxE@ rAWt@` $5 @ rAWt@` $5A 1P(E@ rAWt@` @ rAWt@` $5A 1PPE -J -@_3w+@ rAWt@` $5A 1P(Ew T+  wX+N 7 w ,+  pG  pGw+%B 8 ] 5 1pG% _ 8@w * x @mj AGe@ " XT G  ] : 1G0 7G%zw 8lwmdu= e-N@w6*w "*7 7 w *w *5 @ @a0 % 775 F@ C>@ B85 1Nf bC 5%%-"%=@ rAWt@`5N 7 @ @a - -"@ rAWt@`5N 7 @ @a @ @a @7 @a @ @a @7V P L0 8w(w (%  w(w t(N x lXe lX  \wN(w :(5 f U%5   w(   = 5  \u-  A r N >8@w '%  L׷ %I 8w'w v' %Gh b^  @ E 4V5%  8  @ E 4V5%  @w&w &# lX% lX  lX r lX d lX V lX H lX $: lX (, lX - lX 7 lX wV&w B&#J lX%w<&w (& 5 @ E NeaO lX% %5 @8Z lX% -c~ lX%w%w %gh lX rZ lX w%w %D lX .0 w%w p%  lX%7  wb%w N% lX wL%w 8%  8 " lX%$ lX NeP) lX%3 lX 8 lX% z  N Ad lXeVT lX A AJ@WpAmWter1u   96 a lX% o  N w lX%N lX%   lXeAWp ?AWp e?N lX%r ff %&"^ lXeNePfeP> lXeNf bC %a lX  lX T }@-Ne 8    lX%   lX v lX h lX VV lX%D-D lX%<6 lX @( lX Nef FC = 87@w8"w $" G lX "L lX%w "w !-     w!-x-l  Nf M  5@ ->5 Nf f f M 5%%%%w 6!@ %=B    @-- w! _r@-  N f 4E  5% N x@ D   N f & 4E  5Nf 4E 5% N x@ D   Nf 8 & 4E  5%=%=%=%=w @ C@w w  u5 %\@&5 @5u Y5 '.!Nf Au- @ C @ C u  @ C Nf A u- u- w uuu - 7e7ztn jA H=@w 5 -Ju-@w|  %-5 @5 w < @ ȋw6 } w  @5 A @   w w %a %z %Z%A ww  5 AWp B`eu 09@ww l%0%9 wfw Lu-@wL@w 2@ A Hw*w @ C @ B@ 5J@AWpAm A@ww u-@w@w  -f Nf bC %s ww  Nf bC %s  $Nf bC %s -5  Nf bC %s@w2w    - Nf bC %s@ww   lX NeOfe(r lXeww @ B   55Nf 4E 5% - @wXw D  a Nf bC 5%_%--L=I@ BCN f 4E :%=%^-@ B%s @ rAWt@`5%a@5 7 @wN  N R5w PNf 4E 5Xu@ rAWt@`ȥ\ 5   N f 4E @-1 0u -Nf bC %sNf 4E @-N& ff ff He w@ 5 -&Nf bC %sw R $ lX%5 Puff  & %  u ff h & %  --x f-ff fff He -B@ lX8 $ * lX%wpw \5 ,55@   - = _xK "N D   5 _xK@@-5- lX 55_   x >AE52NO(%HL%Nf >   xV N] lX%%-N f >  G xZ dhl52%pt'%#N f >   xx| Ne( lX%! lX% ! lX%  NeP lX%8 % 5@ -d Nf\ lXeNffe)feP2 lXe $ ! lX% lX u-_H @  lX%  lX ww  5 @ 0 E %5 $5 Neff L%5 E @ pE -H -:  " wvw b= Nf M 5P@ -"Nf | & M @-Nf M @- @5 N5 N N%5 }@ 5@ C @ &C Y@w u-@ 5 @ Bu u-w ` - 5Nf bC %s%u Nf bC %sNf 4E  @ w@ 5J@AWpAm u: j l V w @ -R @ B@ C@ww t  @ B@ C@w^w J5 5 5 v @ C5 _4R 55@ @ 5@- N> lX%u-@ B @ CN D % 9Nf B?  - x&Nf DR  - =FM  %5`% Nf B?   x, @ C  :@ 5 @ BN D 5 - Nf DR  - =TX    D 5 m% [Nf B?   x2 N\ lX% Nc lX%!k lX% !s lX% lX %v(' 5`%% Nf B?   x8 @ Ee`& lXe N lX% N lX%@@5  lXe%v@ Ee`& lXe Nh lX% @ @ 8 lXe( lX ! lX% u- _fNwHw 4 Nf R 5   N f R 5@w w  Nf bC 5%s%-%=@@ rAWt@` R5 w w N 7 \ @   _-wl @ ==w H D* R ?E G ߲÷  -?% & ߈ 2Y  x݀5xE^ -^ ?P%  Bþ& 6 2Y w 5, w D      + - ̥9 Wp @@`e̥0  w< w $ fef `%5 w w D Lԋw w u@t5I5I@ 5xJNefef rU% (3A@u5BtrI2I@ AupxJ fef rU% u-u-u-@w8 Ћ Ћ Ulw| e& 7 T7LgwN &  4  b '     ` TW ~  s`K6!  w D D85U5_nW5P_nW  m~@e4 ,5Ne & ]  uN ]4USt%5, Z5( Z5& & X% 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff X%ށ̥a &  Xe 3     U̥r 33w D5"E@e44fef `% ZU4 4  fef `%5 w ww7  ы A@Ћ w FD:5UE5Hw* _Z5uNfe & _% _ZbNe & ]  uN ])U5| m- 5 & _%St% μ ] U   & _% S U _ZY @_^Yw DE%%"5   & _% U wv w ^D55@ Z  z[ 3 _ 4 4 4 4 4 ww~w  D$5+ R &5e-4e % &     ] ww  5f ] 7 f ] 7ƻwX@ m7%e w  l ^    ] e-Bww D .5 e %w  5 e-w [ \ww  N _ww rDCDpC ] B] wZw FN _wJ ~5 & E        ~5>wlYwfw Net@f ]e  w6w.w  JU7JU7JJAe vB7   % 55 a  a!PE -|%J w$ _ `e vWt vwJ@ `e @  _%"e U?  `e 7JU? a7 ?U ew dDE wZw FD5 _ 5N ]!w5A vBB-  }ee@ !ۃ `!ւ ` ` m& E% m%w w7*'$!      7& At& BF7!VW-zd7Bw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_b@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& 2Y z   5 , @ :% & f E 2Y  (˥-%0     ,:% &  2Y 8 5E& z   5 , @ :% & f E 2Y  w@(#)t0.c 4.2 8/11/83 xaabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYXZ0123456789Input@(#)t1.c 4.2 8/11/83%s .TS-ms/usr/lib/tmac.s-mm/usr/lib/tmac.m-TXr.ds f. %s Can't open file@(#)t2.c 4.2 8/11/83@(#)t3.c 4.2 8/11/83fmt{&&  ::>>expandEXPANDcenterCENTERboxBOXallboxALLBOXdoubleboxDOUBLEBOXframeFRAMEdoubleframeDOUBLEFRAMEtabTABlinesizeLINESIZEdelimDELIM.nr %d \n(.s Misspelled global option.nr %d %s Illegal option@(#)t4.c 4.2 8/11/83|||||||||||||||||||||~ ||||||||||||          |||||| |||||||| J ||||||| |||||||| J ||||` .rm %02d bad table specification charactertoo many lines in specificationno specificationdot not last character on format linetried to widen table in T&, not allowedfirst column can not be S-type.tm warning: can't span a-type cols, changed to l .tm warning: can't span n-type cols, changed to c first row can not contain vertical spantoo many columns in tableNonterminated font namepoint size too largepoint size unreasonablevertical spacing value too largecolumn width too longEOF reading table specification@(#)t5.c 4.3 9/14/85.TE.TC.T&T{Vertical spanning in first row not allowed\^\^@(#)t6.c 4.3 1/23/85.nr %d 0 .%02d .rm %02d .nr %d 0 .nr %d 0 .if \n(%c->\n(%d .nr %d \n(%c- .nr %d 0 .nr %d 0 .nr %d .if \n(%d<\n(%d .nr %d \n(%d .nr %d \w%c%s%c .if \n(%d<\n(%d .nr %d \n(%d .nr %d .if \n(%d<\n(%d .nr %d \n(%d .if \n(%d>=\n(%d .nr %d \n(%du+2n .nr %d \n(%d .nr %d \n(%d+\n(%d .if \n(%d>\n(%d .nr %d \n(%d .if \n(%d<\n(%d .nr %d +(\n(%d-\n(%d)/2 .nr %d %sn .if \n(%d<\n(%d .nr %d \n(%d .nr %d -\n(%d-%dn .if \n(%d>0 .nr %d \n(%d/%d .if \n(%d<0 .nr %d 0 .nr %d +\n(%d/2 .nr %d +\n(%d .nr %d 0 .if \n(%d>\n(%d .nr %d \n(%d .nr %d (100*\n(%d/\n(%d)*\n(%d/100 .nr %d \n(%d .nr %d 0+\n(%d .nr %d \n(.l-\n(%d .nr %d \n(%d/%d .if \n(%d<0 .nr %d 0 .nr %d 1n .nr %d 0 .nr %d \n(%d+(%d*\n(%d) .nr %d +\n(%d .nr %d +\n(%d .nr %d (\n(%d+\n(%d)/2 .nr TW \n(%d .nr TW +%d*\n(%d .if t .if \n(TW>\n(.li .tm Table at line %d file %s is too wide - \n(TW units \w%c%sP0%c\n(%c-@(#)t7.c 4.3 8/11/83ZZZZZZZZZZZZZ|.nr #I \n(.i .in +(\n(.lu-\n(TWu-\n(.iu)/2u .fc %c %c .nr #T 0-1 .fc .nr T. 1 .T# 1 .in \n(#Iu .ta \n(%du \n(%du \n(%du .ne %dv+%dp .nr #%c 0-1 .nr #a 0-1 .eo .de T# .ds #d .d .if \(ts\n(.z\(ts\(ts .ds #d nl .mk ## .nr ## -1v .ls 1 .if \n(#T>=0 .nr #%c \n(#T .if \n(T. .vs \n(.vu-\n(.sp .if \n(T. .if \n(T. .vs .if \n(#%c>=0 .sp -1 .if \n(#%c>=0 \h'|\n(TWu' .if \n(#a>=0 .sp -1 .if \n(#a>=0 \h'|\n(TWu' .ls .. .ec @(#)t8.c 4.2 8/11/83.ne \n(%c|u+\n(.Vu .ne \n(%c|u+\n(.Vu .mk #%c .nr #^ \n(\*(#du .nr #- \n(#^ .if (\n(%c|+\n(^%c-1v)>\n(#- .nr #- +(\n(%c|+\n(^%c-\n(#--1v) .if (\n(%c|+\n(#^-1v)>\n(#- .nr #- +(\n(%c|+\n(#^-\n(#--1v) .nr %d \n(.v .vs \n(.vu-\n(.sp .nr %2d \n(.f .nr 35 1m \&\h'|\n(%du'\v'-(\n(\*(#du-\n(^%cu-((\n(#-u-\n(^%cu)/2u)'%c%c%c%s: line %d: Data ignored on table line %d \l'|\n(%du\&%s'\v'-(\n(\*(#du-\n(^%cu-((\n(#-u-\n(^%cu)/2u)'%c%c%c%c\v'(\n(\*(#du-\n(^%cu-((\n(#-u-\n(^%cu)/2u)' .sp-1 \& .vs \n(%du .nr ^%c \n(#^u %s\f\n(%2d0.mk ## .nr %d \n(## .sp |\n(##u-1v .nr %d (\n(%du+\n(%du-\n(%c-u)/2u \n(%du \n(%du \n(%du-\n(%c-u .in +\n(%du .sp |\n(^%cu .nr %d \n(#-u-\n(^%c-\n(%c|+1v .if \n(%d>0 .sp \n(%du/2u .%c+ .in -\n(%du P.mk %d .if \n(%d>\n(%d .nr %d \n(%d .sp |\n(%du .sp -1 \f(%.2s\f%.2s\s%s@(#)t9.c 4.2 8/11/83Wierd. No data in table.Wierd. No real lines in table..TE@(#)tb.c 4.3 9/14/85Too many characters in tableno space for charactersno space for vectors@(#)tc.c 4.2 8/11/83!%&#/?,:;<=>@`^~_{}+-*ABCDEFGHIJKMNOPQRSTUVWXYZabcdefgjkoqrstwxyz:_~^`@;,<=>#%&!/?{}+-*ABCDEFGHIJKMNOPQRSTUVWXZabcdefgjkoqrstuwxyzcouldn't find characters to use for delimiters@(#)te.c 4.2 8/11/83G %s: line %d: %s tbl quits too much backupunexpected EOF@(#)tf.c 4.2 8/11/83.de %d .ps \n(.s .vs \n(.vu .in \n(.iu .if \n(.u .fi .if \n(.j .ad .if \n(.j=0 .na .. .nf .nr #~ 0 .if n .nr #~ 0.6n .%d .nr #%c 0 .rm %c+ %s .ds #d .d .if \(ts\n(.z\(ts\(ts .ds #d nl .if \n+(b.=1 .nr d. \n(.c-\n(c.-1 .if \n-(b.=0 .nr c. \n(.c-\n(d.-%d .fc @(#)tg.c 4.2 8/11/83Too many text block diversions.nr %d \n(.lu .eo .am %02d .br .di %c+ .nr %d \n(.f .ft %s .ft \n(.f .nr %d \n(.v \n(.s+2.ps %s .vs %s .if \n(%du>\n(.vu .sp \n(%du-\n(.vu .ll %sn .ll \n(%du*%du/%du .if \n(.l<\n(%d .ll \n(%du .ll -2n .in 0 T}%s .ft \n(%d .br .ps .vs .br .di .nr %c| \n(dn .nr %c- \n(dl .. .ec \ .nf .ll \n(%du @(#)ti.c 4.2 8/11/83@(#)tm.c 4.2 8/11/83@(#)ts.c 4.2 8/11/83@(#)tt.c 4.2 8/11/83\h'|0'\h'(|\n(%du+|\n(%du)/2u'@(#)tu.c 4.2 8/11/83&IPI^IIIIIIJ4J4J@6fe X%Nef p %w&lw l5 ufe .% 1@ b- I @ % .%7  Afe (q% A wkw ~k  zU wvkw bk    ߾ !5 -@?% & ߊfE q Ne )_ B  zU  zU !t& nve! (q% 35  IC  2V5uNe B^510@-,R B  t %  zU   zU Ne Ne I  u  2V@A f&, e! x%!t& nve  zU   zU wiw i6 I zU  zU  15Ne B^@- 0= I  zU   zU .  zU   zU / ~[ 5  f ^U%C I uwhw h  Bx b ,X x%T x%fet (q%nV I wfhw RhPDeNeh ) L A n I  Iwhw h B N  N I  I f t5  uwgw g N qf x% J wgw ~g b*# :J wrgw ^g/6 ~[ (  f& ^Uew4gw g DB5 ̥ ̥  ̋̋  ̥ ̥  ̋ e ̋̋@wfw f  A f&ff l^e Bar A f&fe 0\e %N I ( @a     @a% s & @a& Ie ր Iwfw eNe )SNe 7   B } u [SME T } u t " w wJew 6eNet@" nvef qUU EE Ne t nve  t& nvewdw d {t  nve J zt  nvewdw zd  \C&& B >wbdw Nd f `_@Y TNe B Nfe X% H/N t tN AN t t  feff ^Ue x% TN tN t wcN t>#f (q%N tNe B^!E %  p   T NN p%%3>#e=#5 %># =>#w bDC  ,wb w b% I u 7 7 $ @-_7 e %P( zU P( zU P( zU P( zU  c>' X%>' @h I u% x I t5 u  I x  p .7 rT H , ,.  I 2 t5 u  , ,.wZa@ r y@7e_@7   qmAAp _ qmxAAp_     $@W I _     &% @ H , @= p% u@ H7    & _w _0J' :J w_w _ $ zU 5N zU ][n t5N #7 /& ~[ 7H 5 4J' I  A& "q 7R A H Tv r   t & nve t  nve  zU w_w ^ V & H TF .5 ( C5u 2V5uNe L50N ffff pe Zs & H wF^w 2^ <` 7  p%w^w ^ W574 f q 57 Nff 0%w]Nff 0%5%= 57 Nffe 0%5%%%1@e5%@ ȥ:N q&f U e%   x%Nf q w6 w \  w 5 /,/2 W5f q Nf q w\ 7  @76& "q 5  C 7& "q 5 u'N t @e@-O  x%=N  N t=  fef (q%ˁ @a % u-ӆ@\ w [  qm :- f  x% _ ̥trcnefe q Ce˥: ˋ p % j x \ fefe 0%% < q fefe 0%%Ceӥ: qA@`5%  x%A@`& q wwZw rZ˥#%  ̋ ̋˥|˥:ˋ wLZ˥:˥| ˋˋ˥: Dw ZD̥: ̥̋: wZw Y, ʋRʋAA@ ʥ@wYʥ#  ʥ0 CpDe`Cw Y ̋T̋AA@ ̥̋:̥@ wLYw 8Yt ̋T̋AA@ ̥@ wY̥= N& 2 w XDC=%::\  xEB  @  C0teP CDw`Xw LXDf'fe  57 ̥/7& T77 _# f |  p% u   Ne  :ee  @  ,72* ,7 7 7   p% u    p% u 7 xj q 7v7j  J      7   $      7     7         ; vp ; hb ; PJ ; " ,7:7 4% ,7*7 $( ,7 wNUw :U J_4$ _"$+ W5_"$0  p  uN 6 . wT, `[ f7 X7Pw T5 7 7 7 l$7 f & q Nf  _T'#   p  u H r 7d+ :J w*Hw H zU  zU 0 zU 0 zU / zU 0 zU 0 zU + I5 5  %\@& 8,% ff 0,%feh (q%߁`H& ,%5uDeŀ @`e!fe x%   B fe AeDeḀ ̥~F& ,2 8@ ' @,.@x@% @ E rnE& q @`e!_1H5<Ew 8F: %7 + X%N+ 5%%7Nef x] 5%Ne 2VA@@A 5 u N ]5N+* 5%5N 3 wEw ~E5 @ " -%    p%N  p% f- f = & u 5  p%N p% fNf q @ p"wDw D 5 )@ "!  @ "f q@ " ]@ " w@ 0 " -wTDw @D4Nef x]  W-w Dw D $f A 5wCfef x%N tNf BN ]N ] w CN/)fe XeNe r4wCw xCNJDfe Xep fe e wJC w 2CR W 4e fe q fe q fe <` 5, Ne I  fe ~[  Ne 7Nfe j^% N swtBw `BD& l: I7E + xN& q#P wN ,  tv4PN& q wAt-t! -! 4=tw ~AD& qR& l: 8e  & :   8  I7 zw"Aw AD=& `[    :B  H 6:& q ?& `[   :& l: 8̥! : I wj@w V@D %#1 ,7`E m x  ߈ | -| ?n% & \ q Bշ >%# Bր5B  .  !  5  -!?% & ! q  I %#7  IwF? I  & ,  ,7`le^&  I% I <  b- ,7` w >DC 1t1t1   w>w t>DR q    qwT>e  w 4>D_;eg x̋_5 50<78@tA@`e55%027.@tA@`e55%07@tA@`e5 R ʋ S u @\ S5 u wF= w .=DC :w$= H '& q  6 w 5%1@ > Net nve  _^<w ; xt  nve J yt r nve bwp;w \; AP x% wP;w <;C I6+ :J w,;w ;D5 = zU 57 6+ I N zU w: Afe (q% Aŀ5 @mH@5  q@-   zU @w h:` I@0  xc I IwH:fns~@@& I%w 9 5 Net nve Q JNet nve x% >50 3 I I JNef@\ nveuB x% JNet" nve xt  nve tw9w 85 b x% JNef@ nveu.%(N(J+ (q%50J+ `[OJ+ `[ KJ+ `[w`8 xt D nve yt . nve@ %! I w 8 De t4 tt 4 4 Ne&& ]% w7  eu @w7 w7)w7 w7w z7DC AupB5 S  "̥ ;  & ӄ q %;  7  & `o%bb& ӄ q % ₎& `o%`@ @m A &@w6  0/%w6 w6Zw6*J w5w r6   L  wd6 5 ff L% 50  8 v+w 6  uN q5&f %5v+w5 5  f q  0   w 5 p  @e5ff l%5v+w^5 5  w-   4 w 5 ZT .q J &  $a%74w4T q`5sf <` 7 w 4 Dw4w 4 t  w4ww l4  Pb7   s7 wR4w >4w^wD4w 04  | v@ E w4\ ^5% %D+ j^%  + `[u+ XL 7x& XL 7{& XL  H7~& XL  H7& XL 7& XL  bH7w& XL  bH7w& XL 7& XL 7r& XL 7d_Ew 28 H w2  7  g Fg55 ff e55 H D+z+& `o%e|+& `o%e~+& `o%e|vp+& `o%e7\w 1  _H q_jG_nG5 & f "q%5= bH5u fff pqe5 #u 1,f (q%50,, :=,N tw,1w 1D      + - ̥9 Wp @@`e̥0  w0w 0D5 5      + -! ̥9 f& ff (eee@ ee@ 5u̥0 A@  w<0A@w/w 0 J 3  "q  Wp,f&  pqe,, (q%%, t tf m,ҥ ",w/w /fef ^y%5 w/ w n/D 3 wEtU4 4 w:/&& e& & %ReR$Hւ @  1   "@! @#E B Ew . x%w.w.~w-pw-w p.4De _L t4 t t4 4t Ne&& ]% _Lt 4     6t-t- t-t- t- t- 55 eAePPPP 5 5 .L 55 Nefe ]% & %5u7  && ]%  fe ]%ff % fe& ]%w-A@E f& w ,w,w ,D Lԋw,w ,DC  w,5 7n@  55@- 7 B5!w d,N Q Lwb,w N,D el&&&&Wpef WpefL, Xe,w,w +5 5  AaAE f&A@vUU5u %w+w +D tw+̥/ 55~ q&f $ e %Nfe q fe q fe q ԥ.̋De & T & "q %fe0 (q% t %,@e05e MwNe$ MwNe( Mw%r_~M z_~M% n_~M%2_~MZWpfNWpemHe, _~M@e\5 N Mf&t--e - @ E32 - *teN45.N Mf&@.e@.A Ep@.A Ep - s4 -x34 h2_~M -X t-LT4_~M -<47872teN45  e47ă - _M@e47w ( Nefe rVw(7 AWp@7 7  f V 4 q 477 w (7 x7 7 7 4 q 47^7Xwp(w \( W̋  hM  hM  2  w.(w (  @55 w-w-  t R4 -  t5,- 5,- - 2ueN4&&fe Xe3 e4pe43wd'w P'& f e,w<'w (' 4Q@f& ~e5uQ@f& e5uumumu _zReeQu  %QQ eu % ff et ff e5u< ff et< ff eL A@e@ f& et e  =  r  rd > r 8 8 rd ( AH 5 8u 4  AH f&A@ 5u r  r   AH @mAm@ 5u e4 tWpeu4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ttw$!w#w v$De LN q4ee ,U  q4e Be v Nfe d^%w$w #-&@ w#N4 X%4̀e& ;ew*#w #u@t5555@ 55Nefef ]% (3A@u5Btr525@ Aup5 fef ]% u-u-u-@w"w " fe rV@w" @pHA@tw*"w " W!,& `[   w" 1&5 fW%75˕,5Nf V w B"D Z !     +  w"e% - r<N r<&@& 5 Xe5 ~ ~w ! Nef W w!w t!D 5  =,& [% `5ȥ=  = @w&!e  w ! BuNefef ^y%=@@w w  [ [  [ w / ~[  ,5   & q 6@ ,w N J " <` 760 .qw8 w $  s7 w w D 5 %" 5x@ #w%̥\" %%# % % % h% % %  w xD=& `[  wn w T P $ <` 7< _\[05 j^% % % %  %#77 Y7 Y7 Y7 7 _([&& [% % % % UrK % % N)& [% % % % E,(-& [% % % % U4& [%  Y7 Y̋#ګ̥#7̋7  & `[  6wЋ Ћ   Ћ Ћ  Jҋ~ @@w LhN yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_&`5P_&` T mJ@e4 ,5Ne & 0v  uN tv4USt%5 Zs5 Zs5& & (q% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff "q%ށ̥a &  pqe 3     U̥r 33w 4$ tv w5 4@E%@EU5N&e q d&e q Nf&e "q%4 IN&e q i&e q Nf&e "q%  (Ne& 0v  ff eee@ 4t@t"4 4t t w_>aw N t@ tN www Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  Bi ve@ 4tw"w D55ff %f&& "eff&e e &e k 55 ww"7w5 5 w D5#65ff T %f&& eff&e *ew6&e m'44  && ef&& pqe&e & x%%U w D5_befo5ff %f&& eff&e Ze L&e m8f f ff&e V e 744  && ef&& pqe&e & x%%UUw @@m e%fe u  &e k 55 3ff `%f&e@ &50c &e k 55 3n p U44  && ef&& pqe&e & x%%&_Nefffffe e _Ne&e % _e_Nee_e  mm@ e@ f& ef&& pqefe& x%%_Ne Lj_dw @0 0 @0 N Fg77&7ww D85_RhNe& 0vq fe Ve4-4-/44  &&  ef&& pqe&e & (q%%&e u &e k 55 eww*7w4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t  Bi ve@ 4t4-4-/44  && ef&& pqe&e & (q%%&e u ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& pqe&e$& (q%%&e$ u `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& pqe&e$& (q%%&e$ u `Btp$t t"  ff Nef&& pqe&e$& x%%Uw w r D5#5 5 wdw`.7wX  @ a@ a@m5A a@5w  D 5# aB- f a@m& o% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5lD@Et5ld5lfu te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm `o% a@ `` e w D a@@m e  w e  aAm HN@`@m &f `o%  aN f`f `o%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef ^y% ZsU4 4  fef ^y%5 w    6v&  @ppC`p   6@Cwzwtw D Zs & & pqe 4E05Ew7p Ћ P ы A@PЋ w FD:5UE5Hw* _@s5uNfe & x% _@sbNe & 0v  uN tv)U5| m- 5 & x%St%  wlYwfw Net@f nve  w6w.w  L7U7J7U7L7J7Ae vB7   % 55 a  a!PE -R%J7 w$ tx `e vWt vw @ `e @  tx%e U? `e 7пJ7U?Ŀ a7 ?U ew dDE wZw FD5 w 5N tv!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%짷m槇%w w7@*'$!     n 7d& AT& BF7!6W-}7"w 8uDAB %u f& & e w5 5  W- W00~u5  .lu~ Bw* J@B |_*{@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& q z   5 , @ :% & f E q  (˥-%0     ,:% &  q 8 5E& z   5 , @ :% & f E q  w@(#)acu.c 5.5 (Berkeley) 12/4/87call completed call aborted call abortedinterruptunknown ACU typecall completedcall failedr%s: can't open phone number file unrecognizable host name missing phone numbercall completedcall failedmissing phone numbercall failedmissing phone numbercall terminatedcall terminated disconnecting...@(#)acutab.c 5.2 (Berkeley) 4/3/86B<|==hayes@(#)cmds.c 5.6 (Berkeley) 12/22/87<<secondminutehourLocal file name? %s: cannot creat List command for remote system? [take] usage: from [to] %s: cannot create cat %s;echo  %d write error write error lines transferred in Local command? can't establish pipe can't fork! List command for remote system? can't execl! Local file name? r%s: cannot open %d timed out at eol chars transferred in lines transferred in [put] usage: from [to] r%s: cannot open cat>%s stty -echo;cat>%s;stty echo  timeout error (%s) Local command? can't fork! can't find `%s' away for [sh] ! can't execl! can't create %s [cd] %s: bad directory ! %s [EOT] -c%s%d %s%c ! [set] onoffon~{[*?$`'"\pipeecho %s/bin/sh-cfork"Echo" failed read"%s": No match Buffer overflow expanding "%s" @(#)cmdtab.c 5.4 (Berkeley) 12/22/87!<>~tpP |T$/ cQ.bfpf~s"?-#fshellreceive file from remote hostsend file to remote hosttake file from remote UNIXput file to remote UNIXpipe remote filepipe local command to remote hostchange directoryexit from tipexit from tipsuspend tip (local+remote)suspend tip (local only)set variableget this summarysend break@(#)cu.c 5.5 (Berkeley) 10/22/87Xusage: cu telno [-t] [-s speed] [-a acu] [-l line] [-#] cu: unsupported speed %s Bad flag %scu%dall ports busy link down noneConnect failed @(#)hunt.c 5.2 (Berkeley) 4/23/87@(#)log.c 5.2 (Berkeley) 5/2/87tip: flock???%s (%s) <%s, %s, %s> %s acan't open log file %s. @(#)partab.c 5.1 (Berkeley) 4/30/85 !"$'(+-.03569:>>>>? dialing...ATV0E0X0 ATDT 01234 timeout waiting for reply OKCONNECTRINGNO CARRIERERROR in inputCONNECT 1200Unknown Modem error: %c (0x%x) ATH0 03cannot hang up modem please use 'tip dialer' to make sure the line is hung up ATV1 AT Cannot synchronize with hayes... H/etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwd/etc/utmplongjmp botch longjmp botch SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDeclpmn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT: Unknown error: %d\dn&8JVlx+:R_u!>On0Gfv!9Z|!0DZ|2GRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator,h TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d/etc/ttysrronoffsecurewindow=/dev/ ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired 27V7V7VzdwlYwfw Net@f nve  w6w.w  L7U7J7U7L7J7Ae vB7   % 55 a  a!PE -R%J7 w$ tx `e vWt vw @ `e @  tx%e U? `e 7пJ7U?Ŀ a7 ?U ew dDE wZw FD5 wbin/cu 4711 102 1 117016 6024533271 6610 1bin/tipbin/uucp 6111 102 1 73262 6024533326 5570 @cbT e7cce7P / 1  7%  ~[w ^5 `  W L _ C-LdGcB 7=7N78%_@-_ r y@ eDC7 8cf@e& =%@7@eg H> @e .7b X   @m &0   e hW    @7X    @e7 _% ~B V% \ & \ . % L N5 r  . % L $7d (%5 &  . % L%$ B V%% B V%% B V%% dB V%% B V  L!@ @m& A V@ @m5 L fX =%Ne NB V% L& f =%!& AB V 2B V  L L@ @mfe W N W%_ @0_ !@& A C@5 N W%@0L fH =%Ne NVB V% L f  =% L@fe W % NekB V%Neffef ~e e% p- , X# LwYw Y : P  NwB V%N ~[wYw YDCB5 5&fe W N fe W L& WL We5* A? A[ A@ : xH% NB V%Ne D _Ne D _Nefe  & C$NeB V% _u-#u-NefeB VeNefe  & C 5Ne % d A fe  Ne % B V  L5NfeB Ve(5 Nfe Nefe  F<  _Ne D wNW% NKB V% ~Ne D Ne^ % _B V  Ne&fefe& e _ 5feferf VNe D ~Ne D % NB V% Ne % NeNeB V%_Nefe Z & C@E%@Ne5 Nfe_d n A hW Z d _.fe& H>%_.wmwmw xNej&LD reNefe Ne fe W  5fEfefefef Ve_%~ N5B V% L WNe D _NeM % N_, _. 5fefeaf Ve _w $T% 0sB V%% N}B V%% NB V%% NB V%%p N B V%%V N B V%N f fffffe0 H>e% Ne0B V%Ne0 :wRw *RD D7 > 82 &, =%&, A%  7wQw Q [ C5 $F N C B 05 & V%N/& V%Ne `e%r N ZB V%wH t&  `@4x %w HHD #wHH̥ ̥ ̥  ̋ @m ̋ ̥ ̥ ̥ C-C- @m w GDC r5 =5 N )r- N 0* wG W & W w lGN )=wdGf W = w 8GD/& A  w(Gw GL W = -[ C5& $F 7N C  & :%5U & :% ~  Nfh %wrFw ^FD ( ) B t%78 & 6" *& VeNfF& Ve BY +OB Ve VB Ve NflB VewEw vE nh Y7 `7 ` ZT Y7 L7 LwVEw BE 8= 6-[ C5u $F 7N C  & :%5U & :% E   & 6b Ve&&& x Ve Nh r &ZTP Ve D BYwNDw :Df :% % NB V%wDw DDC 5@  wCw CDC 5 ˋS? wCw C%~~D?4 W(& A% `ȥ/ ,` W / R hW  ` 4 @`ȋ(`ȥ/# hW 1  hW  hW wB W& A% e w BDj& W 7r z&wBw BD>& WC3 F wrBXw RB  !7  H>eN fe H>e W fe W !fe W%5 Z% f (%wAfe . % fe  Ne C 0 %  . % LNe %%   -% &  . % L- |Ne W  \\  fe . % LNe& W  0 _Lw @D  fe H>eDe !   & W  C  ] 0  -wJ@w 6@$f t& )% N B V%%46 B V%*%" B V%fe& ^% Z%Nf (N Cw?N C w ?D4   P 5 5 Neb C N R0N n0 @ / %%  w B V% ˋ  @ =% ˋ     W . A  & =%4%^ B V%  H>e B H>ewn>w Z>D%  B V% !%  B V%5Lf A%  w >+  $F   -  . % L7fe %% #dfe.fe %f.f A%  Y<f6" =% Yw b= Y A $F 5%  g [ B V%w8=% N B V%Nfe %% _4#@e55 % Ne B V%   @u  @  =% 0 N B V%Nf W7Ne W  \\5Nef W N Y% N B V%% N B V%} _!@ 5N Y% N B V%w ;d  q Z Z Z  W  W  W  ;  ;  ;  ;  N fe H>%5  feC ? 8 # ;e  feb [ F ;ed ~[w:w : * H Z Z Z W  W  W  ;  ;  ;  ;  z f ;%d ~[w*:w :,  Z Z Z Z  W  W  W  ;  ;  ;  ; N  fe H>e fe   ;ed ~[ 0wZ9w F9D = W 5`5˥#)˥ +Cm% 6\#2% A@ E w8N D5%  Nf RD%    w8w8 w 8 w7w t8D Nefe <Lt ff /etttw.8w 8x@e5@e57 =Ne2 C 4 f W w7uuH f W eNefe CpK Nef \ u-$u- N B_( _(N C5N Bx }-(N C5N B Nef W Nefe ( u-u-N BNfe (  ( 5u-u-uu_ f W eNe B5_r'c _('Nf W @_4'w V6DC  ̋`%# w26%w5 w5(w5w5w 6w7 w6w 5mNA -ee90@ wx7rvE@w5w 5   L  w5 x 5 ff L% 50p  8 w X5  uN W5&f %5w,5 5  f W  0   w 4 p  @e5ff l%5w4 r5  w-f n  4 w X4 0* W  &  G%7 w,4  W 5 f $F 7 w 3 0+w3w 3 t  w3ww 3  8H7  ~x Y7 pw3w 3w,w3w z3  R L@ E wf32 D5% % RD%   A  62 7 & 62 7 & 62  .7 & 62  .7 & 62 7 & 62  /7w & 62  /7pwn & 62 7V & 62 7H & 62 7:_+w 82 / w22  7  L .M55 ff e55 / D& HU%e& HU%e& HU%eXRLF& HU%e72w ,1  _.  W_._ . 5 & f W%5= /5u fff XWe5 #u 1f W%50 :=VN Zwv0w b0D      + - ̥9 Wp @@`e̥0  w0w 0D5 5      + -! ̥9 f& ff R'eee@ ee@ 5u̥0 A@  w/A@w.Ww.w X/  3  W  Wp,f&  XWe,8 W%%, Z Z6 =@ҥ "@w.w .6fef F_%5 w. w .Nf h0 w.w.w .Nf 0 w.~w.w z.4De _1 t4 t t4 4t Ne&& C% _1t 4     6t-t- t-t- t- t- 55 eAePPPP 5 5  2 55 Nefe C% & %5u7  && C%  fe C%ff % fe& C%w"-A@E f& w ,Nw,w ,D Lԋw,w ,DC  w,5 7@  55@- 7 5!w n,N 6 2wl,w X,D el&&&&Wpe>f Wpe(fh H>ehw,w ,5 5  AaAE f&A@vUU5u %w+w +D w+̥/ 55 W&f $ e %Nfe W fe hW fe hW ԥ.̋De & ~: & W %fe0 W% Z %,@e05e 2w>Ne$ 2w0Ne( 2w"%r_\3 _\3% _\3%2_\3WpfWpeme, _\3@e\5 N 2f&te - @ E3P! -~ *te"5.N 2f&@.e@.A Ep@.A Ep -" s# -3# P!_\3 - t-"_\3 -#77te"5  e#7~؃ - _`3@e#7^w ( Nefe <w(7 TAWp@7 7  f = # W #77 w (7 7 J7 H7 H# W #77wz(w f( =̋  F3  F3  2  w8(w $( Z @55 ~ w-|w-t  t " -V  t5, 5, -, O!ue"&&fe Xe3 e#pbe#3wn'w Z'& f ewF'w 2' H#Q@f& e5uQ@f& e5uumumu _X8eeQu  %QQ eu % ff et ff e5u< ff et< ff eL A@e@ f& et e  =  r  rd > r 8 8 rd ( A 5 8u 4  A f&A@ 5u r  r   A @mAm@ 5u e4 tWpefu4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ttw$!w$\w$w z$ wx$&   %5u R  - xff %5 EU@ff % f ;e ^ ; 5 ; 5 fe& .D%ff d%N ; N ; %܀e& ;ew"w \#u@t5`#5b#@ 5#Nefef C% (3A@u5Btrb#2`#@ Aup# fef C% u-u-u-@w"w " fe <@w" @pHA@tw!w ^"F =!,& A   wD" 1& $ =%7g˕, $Nf = w !D  !     +  w!e% - r<N r<&@& $ H>e $ ~ ~w H! Nef = wB!w .!D 5  =v& A% `5ȥ= P = @w e  w BuNefef F_%=@@w w |  A A  A wb / A  ,5   & W 6@ ,w   $F 7 Www   Y7 ww D 5 %" 5x@ #w%̥\" %%# % % % % % %  w 2D=& A  w( w   $F 7 _AT$ RD% % % %  %#77 @?7 @?7 @?7 7 _VA& A% % % % UK % % N& A% % % % E^(& A% % % % U,& A%  ?7 @?̋#̥#7̋7  & A  T%wЋ Ћ   Ћ Ћ  Jҋ~ @@w hN $\ HNef \?@E% 8 B2 C*L-`% W e`% hW Ne`% Cu-u- B`%w| B w ^D Z4 4  ]wNw : f W %  ZP \\4 4 ww D 4-&4-!4 4   &e & W%4    wme   s lt  &w< wSwmownClw e& 7 $7gwnBdI I7Iw  fff LDeww8&  4  b '     ` TW ~  s`K6!  w 0D85U5_F5P_F  m@e4 ,5Ne & \  uN \\4USt%*56 BY5B BY5& & W% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff W%ށ̥a &  XWe 3     U̥r 33w 4$ \\  w5 4@E%@EU5N&e W &e hW Nf&e W%4 IN&e W  &e hW Nf&e W%  (Ne& \  ff eee@ 4t@t"4 4t Z ]_&Gw N Z@ ZN ]ww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  *O ve@ 4tw"w D55ff %f&& "eff&e e &e Q 55 ww%w5 5 w D5#5ff T %f&& eff&e *ew6&e vS'44  && ef&& XWe&e & ^%%U w D5_JKo5ff %f&& eff&e Ze L&e vS8f f ff&e V e 744  && ef&& XWe&e & ^%%UUw @@m e%fe [  &e Q 55 3ff `%f&e@ &50c &e Q 55 3B V U44  && ef&& XWe&e & ^%%&_6Kfffffe e _6K&e % _zK_6Ke_zK  mm@ e@ f& ef&& XWefe& ^%%_6K 4P_tJw @0 0 @0 N .M7f7b%ww D85_:NNe& \q fe Ve4-4-/44  &&  ef&& XWe&e & W%%&e [ &e Q 55 ew~wz%w4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t  *O ve@ 4t4-4-/44  && ef&& XWe&e & W%%&e [ ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& XWe&e$& W%%&e$ [ `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& XWe&e$& W%%&e$ [ `Btp$t t"  ff Nef&& XWe&e$& ^%%Uw w r D5#5 5 ww%wX  @ a@ a@m5A a@5w  D 5# aB- f a@m& T% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l@Et5l5l u te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm HU% a@ `` e w D a@@m e  w e  aAm HN@`@m &f HU%  aN f`f HU%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef F_% BYU4 4  fef F_%5 w    6v&  @ppC`p   6@Cwzwtw D BY & & XWe 4E05Ew7 Ћ P ы A@PЋ w FD:5UE5Hw* _(Y5uNfe & ^% _(YbNe & \  uN \\)U5| m- 5 & ^%St%6 j $\ U   & ^% S U _W @_Ww DE%%"5   & ^% U wv w ^D55@ BY  Z 3 ] 4 4 4 4 4 ww~w  $*5+  &5e-fe % & D    [ ww  5f [ 7 f [ 7bwX@ m7*%e w       [ e-ww D |*5 e %wX  5 e->w Y [ww  N ^ww rDCDpC \\ [ wZw FN ]wJ ~5 & E        ~5>wlYwfw Net@f V\e  w6w.w  F%U78%U7.%,%$Ae vB7   % 55 a  a!PE -%% w$ \^ `e vWt vw@ `e @  \^%ple U?ZZ `e 7H%U?<Ȕ a7. &(? U ew dDE wZw FD5 ] 5N \\!w5A vBB-  }ee@ !ۃ `!ւ ` `Xm& E%m%w w7*'$!     * 7 & A& BF7!W-c7޳w 8uDAB %u f& & e w5 5  W- W00~u5  .lu"Bw* J@B |_a@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& W z   5 , @ :% & f E W  (˥-%0     ,:% &  W 8 5E& z   5 , @ :% & f E W  w@(#)uucp.c 5.5 (Berkeley) 10/9/85^np(B B uucpm%.31sunknown flag %s ** %s ** STARTGETWD FAILEDCHDIR FAILEDCAN NOT FIND UIDUID %d, User %s,Ename (%s) PATH %s usage uucp from ... to bad system name: %s uucp handles only adjacent sites. Try uusend for multi-hop delivery. bad system name: %s file1 - %s uucp failed. code %d all work here %d can't get file status %s copy failed %s %s - same file; can't copy permission denied can't read file (%s) mode (%o) can't write file (%s) mode (%o) WORK HEREDONEreceive file - %d permission denied R %s %s %s %s send file - %d permission denied %s can't get status for file %s directory name illegal - %s can't read file (%s) mode (%o) n-n%scan't copy %s D.0S %s %s %s %s %s %o %s send uucp command - %d permission denied X %s %s!%s %s %s Ropt(%s) ename(%s) s1(%s) f1(%s) s2(%s) f2(%s) uux %s %s!uucp %s %s!%s \(%s!%s\)cmd (%s) wQUE'D@(#)assert.c 5.5 (Berkeley) 6/19/85/usr/spool/uucp/ERRLOGaASSERT ERROR (%.9s) pid: %d (%d/%d-%02d:%02d) %s %s (%d) @(#)chkpth.c 5.4 (Berkeley) 6/19/85filename doesn't begin with / INIT USERFILE, No entrys!/../filename has /../ in it filename not in list /usr/lib/uucp/USERFILEr*** Userpath malloc failed Userpath calloc 1 failed cUserpath calloc 2 failed! INIT USERFILE, No Users!file is not writable: mode %o can't stat directory %s /usr/lib/uucp/L.sysSorry, you must be able to read L.sys for debugging @(#)cpmv.c 5.5 (Berkeley) 10/9/85/full %s @(#)expfile.c 5.5 (Berkeley) 6/19/85/usr/spool/uucppublic/mkdir - %s CAN'T EXPAND FILENAME - PWD FAILED@(#)gename.c 5.6 (Berkeley) 10/9/850123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/usr/lib/uucp/SEQF/usr/lib/uucp/SEQF/usr/lib/uucp/SEQFis missing or trashed %c.%.*s%c%.*sfile - %s @(#)getargs.c 5.3 (Berkeley) 6/19/85@(#)getpwinfo.c 5.3 (Berkeley) 6/19/85USER@(#)lastpart.c 5.4 (Berkeley) 6/20/85@(#)logent.c 5.6 (Berkeley) 10/9/85/usr/spool/uucp/LOGFILEa%s %s (%d/%d-%02d:%02d-%d) %s (%s) %s %s (%d/%d-%02d:%02d-%d) %s (%s) /usr/spool/uucp/SYSLOGa%s %s (%d/%d-%02d:%02d) (%ld.%02u) %s CAN'T FIOCLEX %d @(#)prefix.c 5.3 (Berkeley) 6/20/85@(#)subdir.c 5.4 (Berkeley) 6/23/85B" % ( + D.C.X.TM.///usr/spool/uucp/C./usr/spool/uucp/X.@(#)ulockf.c 5.5 (Berkeley) 10/9/85 .%s/LTMP.%d%s/LCK..%sDEAD LOCKDEAD LOCKCAN'T GET LOCKFILETOO MANY LOCKSCAN NOT ALLOCATE FOR%s/LCK..%sCan't creat temp file %s -- errno %dTemp file write failed -- errno %d @(#)uucpname.c 5.5 (Berkeley) 10/9/85/usr/lib/uucp/uucicogethostnamewlonexSYSTEM NAMECANNOT DETERMINEunknownMy uucpname = %s D.%.*sD.%.*sX@(#)versys.c 5.5 (Berkeley) 10/9/85Before Alias: %s After Alias: %s /usr/lib/uucp/L.sysr/usr/lib/uucp/L.sys/usr/lib/uucp/L.aliasesrNo %s file /usr/lib/uucp/L.aliasesAlias expansion for %s Alias line: %s Compare against: %s Alias: %s to %s Alias doesn't match %s, remains unchanged @(#)xqt.c 5.3 (Berkeley) 6/23/85-s%s/usr/lib/uucp/uucicouucico-r1-L/usr/lib/uucp/uucicouucico-r1/usr/lib/uucp/uuxqtUUXQT%s -r %suucp/bin/shsh-c@(#)uucpdefs.c 5.5 (Berkeley) 10/9/85b /etc/nologin/dev/nullCAN'T OPENFAILED/usr/spool/uucp@(#)cfgets.c 5.3 (Berkeley) 6/19/85/getwd: can't stat /./getwd: can't stat .../getwd: can't open ..getwd: read error in ..getwd: read error in ..// /etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwd/etc/utmpSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecmn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT::/bin/shsh-cMQY]ei,mqhuy} TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d/etc/ttysrronoffsecurewindow=/dev/ ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired %%%>`d$`o0`x`f`e_g`c`s_l_LF`uJ`D(`O4`X\`Uve@ 4t4-4-/44  && ef&& XWe&e & W%%&e [ ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&&bin/uux 6111 102 1 103220 6024533331 5435 j. e7cce7< / 9  7%  bw 4fZ(5 5 5 5 5 A@e555 5 5 , _   &_ jKh7 f%_@-_ r y$5 _5 5 _5 _@5i j@e 67> Z4 VR | O@e5  !@  *_@mȥ!7!f I 5, ' ! $ & (@0 ~]%    " % e_ $ ( N.5A ~] t _ %4 } ~]%5e"% N ~]%fe ^ Nefe ^ %% Ne ~]% "5   % l R+5Nef % fe E%@e5=NeXfeD 2efe  5  fe % lNeTfeD 2efe  5  fe % lNeUf ~]e Nf ~]% Zf ~]% NRf ~]e@e5= Nef  5Nef  5><Neffe 4%Nef _ Ne >' N ~]%N "aN "aD lfz E%%r N ~]% _,NeBfeD 2efe  5  fe % l5_N "aNefe _ Nfe ^'Ne *_%@aSNe.fefef ~]e NeF/f ~]eNeI6f ~]e@e5Nef  5_%$ Ne= ~]%><=uئfe 7e5Nffe x-e5  LBJ l@5 _rNe LBJ_n;#De̋ == @e@-G ~] F l|^#@e@-_6De̋= @e@-_ ~] F lNefefe 4%5% New ~]%% Ne ~]%% N ~]% Nefe _ @e@- De̋_= @e@- ~] F l% Ne ~]%% Ne ~]%>#~ Ne  I lNefeOf ~]e5_6 De̋_= @e@- ~] F lNef ^INef ^@Ne  I l<NeIf ~]eDe̋ == @e@- ~] F lNefe ^_, Ne  I lNeAfeD 2e%N Ne ~]%Ne % Ne   Ne ~]%B l5 )Ne !fe P & L0 Ne=fefe%f ~]e  1Nefe Nefe> ~]eB lNekfefeSf ~]e  fefelf ~]e <NeIf ~]eNeF_ Ne `̋ =Ne `feF_= @e@-ރ ~] F lNfe ^_ NeRfeC 2eNefe _ Dfe  5  fe % lNe  I lfefef ~]eN "a ~ Ne  I l<NeFf ~]eNeI_ Ne `feFf ~]eNe `̋_ = @e@- ~] F lNfe ^_&NeRfeD 2eNefe _ Cfe  5  fe % lNeTfeD 2efefef ~]eN "aNe:fefe"f ~]e <NeF;f ~]eNeIB_ Ne `feFIf ~]eNe `̋_ = @e@-S ~] F l~ Ne  I l< NeIk_ De̋_ = @e@-r ~] F l@e@- @  =@e5! ~]  ~] @ l  NeCf ~]e@5  fe  J lfe  N "aNe@&feX 2eNef ^Nefe  " N ) &Ne fefef ~]e @5 J lN "a "Ne@&fC 2eNefe  N ) lNe ! nK bw(Uw U  $ 5 AWpeN ! nK -N ~]%% N# ~]%N bwTw T%<N2Wp *ef _71  Nf  & M w`Tw LTDC ̥()& I  ! = " _ !& I &f E%@0 _ wSw S4Nef 2 & K wS5w S ~[ jK5 M N jK  25& ~]%N& ~]%Ne CNe > & ~]e N f f& ~]e% "awRw R/%  ~]%wR   & 5 % l7 #f ^ &f NI%    BO !% T ʋ N ! e % mw Q M 5*__6%_ _fe J & c Ne _ 2fe, |%5(L,,& I  *_c *_%0 7z n7h&f. ^ &4@(@& & c %  ~]%N* "awP@& &@a,u-(& 7N*efe R,%  c_ % w PD  P  &  % l7 tj  wO ^w O6Nef " & K5I% N ~]%wONfe _ Ne `Nefe & K 5%  %Ne !'%5 N nw N@ @BT ~]  l bwNw N4 f & & ^ wNNfe _ Nef & K@E%@fe ^ N `fe ^ %( Ne ~]%fe & -  afe ^% fe e%! a a w MDC ! nK !&  & L0&   ! nKwrM ! nK w NMh@ /n ~./f I fe _ fe ^ Nfe ^ Nef _֝DwLD @e5= ̥̋/=Nefefe ,% fe _ fe ^ Nef _   w RL4Nef  & K  w6L@E%@w LDe wL Nfe _ /& I  Ne . % Ne ~]% jK5fe X0 5N jK w |KD 2% wvK   w NK PJ F7!L ^ h 6 = ^%=J I U %== i!  &  ^e= e% aK=@&f@&f Ee%f N  ~]%whJ -  CN ^0 %   r>@4J= %w JD #wJ̥ ̥ ̥  ̋ @m ̋ ̥ ̥ ̥ C-C- @m w IDC ̥ ̥ ̥  ̋ 62)& I  !#̥>̥<̥|̥;̥&̥(̥``& I   ! wI̥ ̥ ̥<̥>̥|̥̋&̥;̥ w HDC 5h 4E5 N 1r- N 1 wH _ & _ w THN 1=wLHf _ = w HD/& $I  wHw G  _ = -[ jK5 M 7N jK  & FB%5U & FB%   ^!Nf :%wZGw FGD   b X&7X - >B & ~]eNf& ~]e ` +  ~]e   ~]e Nf  ~]ewrFw ^F  "a7 7 zt "a7 l7 lw>Fw *F X= V-[ jK5@ ) M 72N jK  & FB%5U & FB% E  ^! - >B  ~]e&&& I  ~]e N r &~\ p ~]e d `w6Ew "Ef FB% % Nk  ~]%wDw DDC 5@  wDw DDC 5 ˋS? wDw D%==P=D?T *_H& NI% `ȥ/ 8( _  r ^  ` 4 @`ȋ(`ȥ/#< ^  . ^ " ^ wC *_& NI% e w CD& ^ 7~ -wCw rCD^& ^C  wZCXw :C  d"7: = EeNE fe Ee W fe ^ !fe ^%5 a% f F0% wBfeP %Z fe  Ne nK L8 % =d % lNe= b%%%  f; -% & w % l- Ne *_  c  fe % lNe& _  0f; _#w AD 8 fe EeDe ! f;  f;& ^ f; nK f; e 0 f; -w2Aw A$f - )% N  ~]%%4F  ~]%*%"*  ~]%fe& e% a%Nf L0N nKw@N nK w j@D4    5 5 Ne K N 8N 08 ;@ 7 %%  +  ~]% ˋ 7 @; E% ˋJ >  [ ; _ .; I  ;& E%4%~c  ~]%u &; Ee| : EewV?w B?D% *  ~]% 6(%   ~]%5 f NI%  w>  M     % l7fe R,% #dfe.fe |%f.f NI%  "a<f6; E% "aw J>   M 5% "    ~]%w >% N3  ~]%Nfe R,% _)@e55 % NeK  ~]%   @Eu  @E  =% P N[  ~]%Nf ^7Ne *_  c5Nef _ N "a% Np  ~]%% N~  ~]%} _p(@ 5N "a% N  ~]%w w t5  uN *_5&f %5>wH5 6 5  ( f ^ *  0   w 4 p  @e5ff l%5>w4 5  w-    4 w t4 p j ^ `  & 4 N%7J  wH4t ^5f M 7  w 3 2w4w 3 t  w3w w 3  O7   "a7 w3w 3ww3w 3   @ E w3r PL5% %Z > K%  > I> 9 7( & 9 7 & 9  67 & 9  67 & 9 7 & 9  `67 w & 9  `67 w & 9 7 & 9 7 & 9 7z _3w T2N 6 wN2  7 , xT" T55 ff e55 6 D>  >& \%e>& \%e>& \%e    >& \%e7r w H1  _5 ^_h5_l55 & f ^%5= `65u fff ^e5 #u 1?f ^%50?? :=?N aw0w ~0D      + - ̥9 Wp @@`e̥0  w80w 0D5 5      + -! ̥9 f& ff n'eee@ ee@ 5u̥0 A@  w/A@w/Ww.w t/DC AupB 4  & \%b PL5% 傎& \%`@ @m A &@w/  w . ^ 3  ^  Wp,f&  ^e,? ^%%, a a ?ҥ "?w.w l.Nf *8 wj.w-w P.Nf F8 wN.~w-w 4.4De _9 t4 t t4 4t Ne&& tK% _9t 4     6t-t- t-t- t- t- 55 eAePPPP 5 5 9 55 Nefe K% & %5u7  && tK%  fe K%ff % fe& tK%w,A@E f& w ,,w,w ,D Lԋw,w ,DC  w|,5 7@  55@- 7 5!w (,N > n:w&,w ,D el&&&&Wpef WpefN@ Ee@w+w +5 5  AaAE f&A@vUU5u %w+w x+D vwn+̥/ 55 *_&f # e %Nfe _ fe ^ fe ^ ԥ.̋De & @B & ^ %fe0 ^% a %,@e05e :wNe$ :wNe( :w%r_; _;% _;%2_;WpfWpeme, _;@e\5 N :f&t(@*@e -x @ E3E -\ *tebG5.N :f&@.e@.A Ep@.A Ep - sG -3G E_; - t-hG_; -G77tebG5  eG7pу -v _";@eG7Pw ( Nefe Dw(7 2AWp@7f ` 7 b  f D G _ G77 w R(7 7 ( 7 & 7 & G _ G77w4(w (|  4E̋  ;  ;  2  w'w ' 8  @55 \ w-Zw-R  t fG -4  t5,(@ 5,*@ -  EuebG&&fe Xe3 eGpeG3w('w '& f ew'w & GQ@f& Be5uQ@f& pe5uumumu _@eeQu  %QQ eu % ff et ff e5u< ff det< ff eL A@e@ f& |et e  =  r  rd > r 8 8 rd ( AJ 5 8u 4  AJ f&A@ 5u r  r   AJ @mAm@ 5u e4 tWpeu4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ttwT$!w#\w#w 4$De LN *_4eeZ B  *_4e Be v Nfe K%w#w #-@ w#NH E%He& ;ew"w `#u@t5H5H@ 5HNefef K% (3A@u5BtrH2H@ AupH fef K% u-u-u-@w"w " fe D@w" @pHA@tw!w b" 4E!,& I   wH" 1&H E%7˕,HNf D w "D \ !     +  w!e% - r<N r<&@& H EeH ~ ~w L! Nef NE wF!w 2!D 5  =& NI% `5ȥ= x = @w e  w BuNefef f%=@@w w  vI vI  vI wf / $I  ,5   & ^ 6@ ,w $ M 7 ^ww  |v "a7 nww D 5 %" 5x@ #w%̥\" %%# % % % % % %  w 6D=& I  w, w  & M 7 _II K% % % %  %#7876 F7, F7" F7 7 _H(& NI% % % % UK % % N+& NI% % % % E(/& NI% % % % Uh6& NI%  JG7J F̋#.̥#7.̋7 & & I  JwЋ Ћ   Ћ Ћ  Jҋ~ @@w hN c HNef c?@E% 8> BJ2 J*L->J _ eJ ^ NeJ Ku-u- JJw J w bD a4 4  ewRw > f ^ %  aP c4 4 ww D 4-&4-!4 4   &e & ^%4    wme   s lt  &wW f r @  W f r@  @ < wSwmownKlwn e& 7 7gw@yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_M5P_M  m@e4 ,5Ne & c  uN c4USt%5 `5 `5& & ^% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff ^%ށ̥a &  ^e 3     U̥r 33w 4$ c B w5 4@E%@EU5N&e _ f&e ^ Nf&e ^%4 IN&e _ k&e ^ Nf&e ^%  (Ne& c  ff eee@ 4t@t"4 4t a e_Nw N a@ aN eww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  V ve@ 4tw"w D55ff %f&& "eff&e e &e Y 55 wRwN4Jw5 5 w D5#5ff T %f&& eff&e *ew6&e Z'44  && ef&& ^e&e & e%%U w D5_Ro5ff %f&& eff&e Ze L&e Z8f f ff&e V e 744  && ef&& ^e&e & e%%UUw @@m e%fe Jc  &e Y 55 3ff `%f&e@ &50c &e Y 55 3p ~] U44  && ef&& ^e&e & e%%&_Rfffffe e _R&e % _R_Re_R  mm@ e@ f& ef&& ^efe& e%%_R W_Qw @0 0 @0 N T778Jww D85_UNe& cq fe Ve4-4-/44  &&  ef&& ^e&e & ^%%&e Jc &e Y 55 ewweC ff e5u4 t "-t t"  ff ef&& ^e&e$& ^%%&e$ Jc `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& ^e&e$& ^%%&e$ Jc `Btp$t t"  ff Nef&& ^e&e$& e%%Uw w r D5#5 5 ww@JwX  @ a@ a@m5A a@5w  D 5# aB- f a@m& h\% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5lF@Et5lf5lhu te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm \% a@ `` e w D a@@m e  w e  aAm HN@`@m &f \%  aN f`f \%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef f% `U4 4  fef f%5 w    6v&  @ppC`p   6@Cwzwtw D ` & & ^e 4E05Ew7 Ћ P ы A@PЋ w FD:5UE5Hw* _`5uNfe & e% _`bNe & c  uN c)U5| m- 5 & e%St% L c U   & e% S U _b_ @_f_w DE%%"5   & e% U wv w ^D55@ `  a 3 e 4 4 4 4 4 ww~w  $5+ < &5e-e %x & z    c ww  5f c 7< f c 7DwX@ m7%xe w       c e-ww D 5 e %xw  5 e-tw "a bww  N fww rDCDpC c Jc wZw FN ewJ ~5 & E        ~5>wlYwfw Net@f ce  w6w.w  |^JU7n\JU7d^Jb\JZAe vBF7 H  >%8 55 a  a!PE -%\J w$ e `e vWt vw@ `e @  e%e U? `e 7~\JU?r a7d \^?VRU ew dD2E wZw FD5 e 5N c!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7*'$!       7& A& BF7!ԴW-j7w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_h@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& :_ z   5 , @ :% & f E :_  (˥-%0     ,:% &  :_ 8 5E& z   5 , @ :% & f E :_  w@(#)uux.c 5.6 (Berkeley) 1/24/86uuxunknown flag %s can't get working directory; will try to continue /UNKNOWN ** %s ** STARTarg - %s: arg - %s CHDIR FAILEDwCAN'T OPENwCAN'T OPEN%c %s %s %c %c %c %s bad system name: %s xsys %s wCAN'T OPENstdinS %s %s %s -%s %s 0666 %c %s %c %s prm - %s argument list too long argument list too long s - %s, r - %s, ret - %d argument list too long file s- %s, local - %s %c %s %s argument list too long %c %s argument list too long rest %s permission denied %s S %s %s %s -%s %s 0666 can't copy %s to %s S %s %s %s -%s %s 0666 S %s %s %s -%s %s 0666 cD.0%c %s %c %s argument list too long %c %s %s wCAN'T OPENR %s %s %s - %c %s %c %s %c %s %s argument list too long wCAN'T OPENR %s %s %s - S %s %s %s -%s %s 0666 %c %s %c %s %c %s %s argument list too long %c %s argument list too long uux handles only adjacent sites. Try uusend for multi-hop delivery. %c %s COULD NOT QUEUE XQTXQT QUE'DS %s %s %s -%s %s 0666 uux failed. code %d exit code %d FnameTABLE OVERFLOW@(#)anyread.c 5.4 (Berkeley) 6/19/85@(#)assert.c 5.5 (Berkeley) 6/19/85/usr/spool/uucp/ERRLOGaASSERT ERROR (%.9s) pid: %d (%d/%d-%02d:%02d) %s %s (%d) @(#)chkpth.c 5.4 (Berkeley) 6/19/85filename doesn't begin with / INIT USERFILE, No entrys!/../filename has /../ in it filename not in list /usr/lib/uucp/USERFILEr*** Userpath malloc failed Userpath calloc 1 failed cUserpath calloc 2 failed! INIT USERFILE, No Users!file is not writable: mode %o can't stat directory %s /usr/lib/uucp/L.sysSorry, you must be able to read L.sys for debugging @(#)cpmv.c 5.5 (Berkeley) 10/9/85/full %s @(#)expfile.c 5.5 (Berkeley) 6/19/85/usr/spool/uucppublic/mkdir - %s CAN'T EXPAND FILENAME - PWD FAILED@(#)gename.c 5.6 (Berkeley) 10/9/850123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz/usr/lib/uucp/SEQF/usr/lib/uucp/SEQF/usr/lib/uucp/SEQFis missing or trashed %c.%.*s%c%.*sfile - %s @(#)getargs.c 5.3 (Berkeley) 6/19/85@(#)getprm.c 5.4 (Berkeley) 10/9/85@(#)getpwinfo.c 5.3 (Berkeley) 6/19/85USER@(#)lastpart.c 5.4 (Berkeley) 6/20/85@(#)logent.c 5.6 (Berkeley) 10/9/85/usr/spool/uucp/LOGFILEa%s %s (%d/%d-%02d:%02d-%d) %s (%s) %s %s (%d/%d-%02d:%02d-%d) %s (%s) /usr/spool/uucp/SYSLOGa%s %s (%d/%d-%02d:%02d) (%ld.%02u) %s CAN'T FIOCLEX %d @(#)prefix.c 5.3 (Berkeley) 6/20/85@(#)subdir.c 5.4 (Berkeley) 6/23/85:&; D.C.X.TM.///usr/spool/uucp/C./usr/spool/uucp/X.@(#)ulockf.c 5.5 (Berkeley) 10/9/858 .%s/LTMP.%d%s/LCK..%sDEAD LOCKDEAD LOCKCAN'T GET LOCKFILETOO MANY LOCKSCAN NOT ALLOCATE FOR%s/LCK..%sCan't creat temp file %s -- errno %dTemp file write failed -- errno %d @(#)uucpname.c 5.5 (Berkeley) 10/9/85/usr/lib/uucp/uucicogethostnamewlonexSYSTEM NAMECANNOT DETERMINEunknownMy uucpname = %s D.%.*sD.%.*sX@(#)versys.c 5.5 (Berkeley) 10/9/85Before Alias: %s After Alias: %s /usr/lib/uucp/L.sysr/usr/lib/uucp/L.sys/usr/lib/uucp/L.aliasesrNo %s file /usr/lib/uucp/L.aliasesAlias expansion for %s Alias line: %s Compare against: %s Alias: %s to %s Alias doesn't match %s, remains unchanged @(#)xqt.c 5.3 (Berkeley) 6/23/85-s%s/usr/lib/uucp/uucicouucico-r1-L/usr/lib/uucp/uucicouucico-r1/usr/lib/uucp/uuxqtUUXQT%s -r %suucp/bin/shsh-c@(#)uucpdefs.c 5.5 (Berkeley) 10/9/85< /etc/nologin/dev/nullCAN'T OPENFAILED/usr/spool/uucp@(#)cfgets.c 5.3 (Berkeley) 6/19/85/getwd: can't stat /./getwd: can't stat .../getwd: can't open ..getwd: read error in ..getwd: read error in ..//h/etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwd/etc/utmpSunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecnrmn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT: Unknown error: %d^fp (:LXnz-<Taw#@Qp2Ihx#;\~#2F\~4IRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator,h TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d/etc/ttysrronoffsecurewindow=/dev/ ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired DJhJhJgdgogxjhfxhejggDhcPhszglzgLgugDgOgXgUwzwtw D ` & & ^e 4E05Ew7 Ћ P ы A@PЋ w FD:5UE5Hw* _`5uNfe & e% _`bNe & c  uN c)Ubin/uulog 6111 102 1 34120 6024533333 5733 0@ e7cce7$  /   7%  ^$w 'L  ~ ,@ | 55%_~@-_~s a x&@e5%@-5e N %@0Ne  N2 L%5 e@e5%@-5e @L 6   ] L  ^$~ d 5@  f% V3Nerfefe e Nef B Nerf B fe t  ""Nfe %  ^$w%w %N ^$w%w ~% D[ >5 d N >  5@& L%N& L%Ne Ne , & Le N f? f>2& Le% "w$w $DC 5@  w$w l$DC 5 ˋS? wT$w :$D%  L% %  L%5f %  w# d    f% V7Ffe X% #dfe.fe %f.f %  "<f6 % "w B#  d 5%  L%w#% N L%Nfe X% _4@e55 % Ne+ L%   @u  @  =% " N; L%Nf ` 7Ne  <%5Nef | N "% NP L%% N^ L%} _@ 5N "% vNb L%w !D = 5`5˥#)˥ +Cm% 6\#2% A@ E w.!N 5%  Nf %    w D #w ̥ ̥ ̥  ̋ @m ̋ ̥ ̥ ̥ C-C- @m w p DC E5<E@e33. @;E  5 , @;% & fE 5  ""U3 3  ww fef )%5 w w Nef %wzw fNeff %w^w JD A555  ԋuNeffe %ww DC 5 5 _& %%_H 5 %*e5  AWp `eu 0u%l5  %h%[ e  _| Neffff e   * O  A@ EN 5% % % %Nf B &    %_ A@ E%Nf B @wxN 5 w RN%c%s%[Nf ff f& ew5 5 5 5 %e%f %o%xDe5 5 A @ EN % % % %- Ԑ A @ EN  _ %+_  _ %a%f %A_ %F_ % A@vN O% A@v@mAm@ vA@v5u0 %a%fW7 5`u`u C% S P Ԑ A @ E =%%.%e%E- *% ' $ ! Ԑ A @ EN %+%-%0%9 A@  5u% N  B =   @e! @e! _ @t@]   xJNe A _ Ne A @H@pHw DC = 5%c%0u5 %s    %rJ%c5 %[rJ      %%   B =  D- %cw( w D ̥^  JJJ % %]%-+ J $%-̥]4  J ̠ J JJ %]  wlw XD*\5% %-%+ 5 55 55  B5eA5 %.55  B5eA5  %E%e$%+%-  Wp B`e  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& Ze5 55w6 m 7"w fD 3 &EtU4 4 w2w D Lԋww N , ww D el&&&&Wpef WpexfL eLww 5 5  AaAE f&A@vUU5u %wfw RD wH̥/ 55 &f e %Nfe | *fe H fe H ԥ.̋De &  & , %fe0 2 % " %,@e05e JwNe$ JwNe( Jw%r_ _% _%2_Wpf|Wpemve, _@e\5 N Jf&tlne -2 @ E34 - *te5.N Jf&@.e@.A Ep@.A Ep - s -3 4_ - t-z_ -j77te5  e7 -0 _@e7bw  Nefe w7 AWp@7  7  f x  | 77 w ,7 7 7 7 , | 77ww 60 ,̋      2  ww   @55  w-w-  t  -  t5,l 5,n - 3ue&&fe Xe3 epe3ww & f e37ww  ,Q@f& e5uQ@f& e5uumumu _eeQu  %QQ eu % ff et ff e5u< ff et< ff eL A@e@ f& et e  =  r  rd > r 8 8 rd ( A 5 8u 4  A f&A@ 5u r  r   A @mAm@ 5u e4 tWpeu4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ;ttw.!w w  fe @w @pHA@twT w  ,!,&    w 1&D %7˕,DNf x w l D < !     +  w8 e% - r<N r<&@&D eD ~ ~w Nef F w w D 5  =& % `5ȥ=  = @wP e  w , BuNefef )%=@@w Ћ Ћ  Jҋ~ @@<w D% 5     |@wt 4- &  4  b '     ` TW ~  s`K6!  w D85U5_N5P_N  m@e4 ,5Ne & $  uN <%4USt%5D ""5@ ""5& & 2 % 45@e-4  % U5EU  w E w D x +   r= wB wb 5 a U5ff , %ށ̥a &  8 e 3     U̥r 33w D5"E@e44fef )% ""U4 4  fef )%5 w2    6v&   6@Cw8w27 Ћ P ы A@PЋ w FD:5UE5Hw* _"5uNfe & b'% _"bNe & $  uN <%)U5| m- 5 & b'%St% Z % U   & b'% S U _ @_ w DE%%"5   & b'% U wv w ^D55@ ""  " 3 & 4 4 4 4 4 ww~w  $5+ < &5e-je % & H    r$ ww  5f r$ 7  f r$ 7RwX@ m7%e w       r$ e-ww D 5 e %w\  5 e-Bw " #ww  N h'ww rDCDpC <% $ wZw FN &wJ ~5 & E        ~5>wlYwfw Net@f 6%e  w6w.w  JU7<U720(Ae vB7   % 55 a  a!PE -% w$ <' `e vWt vw@ `e @  <'%tpe U?^^ `e 7LU?@ a72 *,?$ U ew dDE wZw FD5 & 5N <%!w5A vBB-  }ee@ !ۃ `!ւ ` `\m& E%m%w w7*'$!      7& A& BF7!W-/7& & e Ӌ  &7& e ӕ-ӕ0B~lӕ.  ӕ0~ B~&7@ & Le &ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_*@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  w&w Nefef 5& .e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& Z.eww  fff 5& Z.eww  5 %O N  = 555Ne5& /e555'0Ne5 B& /e57H Be0" 5%55 5 B5@B e a=%7Lw %5 B5Ne& /e55e0%7Q`Jʕ0%ʕ1  %˕0 ʥ9 6@~ @(#)uulog.c 5.4 (Berkeley) 6/23/85j.uuloguulog: unknown system %s unknown flag %s usage: uulog [-u user] [-s sys] /usr/spool/uucp/LOGFILErCAN NOT OPEN/usr/spool/uucp/LOGFILE%s%s@(#)assert.c 5.5 (Berkeley) 6/19/85/usr/spool/uucp/ERRLOGaASSERT ERROR (%.9s) pid: %d (%d/%d-%02d:%02d) %s %s (%d) @(#)prefix.c 5.3 (Berkeley) 6/20/85@(#)versys.c 5.5 (Berkeley) 10/9/85Before Alias: %s After Alias: %s /usr/lib/uucp/L.sysr/usr/lib/uucp/L.sys/usr/lib/uucp/L.aliasesrNo %s file /usr/lib/uucp/L.aliasesAlias expansion for %s Alias line: %s Compare against: %s Alias: %s to %s Alias doesn't match %s, remains unchanged @(#)uucpdefs.c 5.5 (Berkeley) 10/9/85/etc/nologin/dev/nullCAN'T OPENFAILED/usr/spool/uucp@(#)cfgets.c 5.3 (Berkeley) 6/19/85@(#)getargs.c 5.3 (Berkeley) 6/19/85 SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec mn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT,h TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d ((((( AAAAAABBBBBB v*d)o*x*f*e)g*c*s)l)L*u *D)O *X2*U=(\ %E%e$%+%-  Wp B`e  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& Ze5 55w6 m 7"w fD 3 &EtU4 4 w2w D Lԋww N ,bin/uuname 6111 102 1 24764 6024533335 6111 $(  e7cce7 /   7%  Tw  65 & t% d3 r T  T  T  T  T  T  T  T  T  T  T  T  %@-lNe" Ne":   T%>  TfR Z 5Kh   T?5  @@m "@@m "@@m0"Ne fe" Vx"x#x$Ne"  Ne"fe r Nfe" P%  Tww N Tww vN Twzw f x[ D5 Z N D  5& B%N& B%Ne Ne n  & Be N f f & Be% |ww D =  5`5˥#)˥ +Cm% 6\#2% A@ E w,N 5%  Nf %    w D4   ~ 5 5 Neb > N N  .@  %% *w B% ˋ @. % ˋ ( . r ..   .& %4% B%n e eww  r = -[ D5p Z 7N D  & %5U & %   Nf %ww D   p 7f < n P & BeNf& Be  + Be  Be Nf Bew,w   |7 7  |7 z7 zww  f= d-[ D5 Z 7@N D . & %5U & % E   < n b Be&&&  Be N r & ~ Be r ww f % % N B%w w$w D Nefe Lt ff BetttwXWww 6fef  %5 w" w Nf  wwtw Nf  w~wXw D Lԋww N n  : ww D el&&&&WpeBf Wpe,f ewbw N5 5  AaAE f&A@vUU5u %ww D w̥/ 55 &f f e %Nfe r fe > fe > ԥ.̋De &  & " %fe0 (%  %,@e05e wFNe$ w8Ne( w*%r _ _ % _ %2_ WpfWpeme, _ @e\5 N f&t  e - @ E3 - *teX5.N f&@.e@.A Ep@.A Ep -* s -3 _ - t-^_ -77teX5  e7 - _ @e7w F Nefe w67 \AWp@7 7  f x  r 7v7p w 7 7 R7 P7 P r 7D7>ww  ,̋    2  ww l b @55 w-w-|  t \ -^  t5, 5,  -4 ueX&&fe Xe3 epfe3ww & f eww z Q@f& : e5uQ@f& @ e5uumumu _eeQu  %QQ eu % ff et ff e5u< ff \et< ff neL A@e@ f& Let e  =  r  rd > r 8 8 rd ( A 5 8u 4  A f&A@ 5u r  r   A @mAm@ 5u e4 tWpeju4  AmA f&A@ 5u  AmA 5 u ܃@ 44 ttw!wN\wHw u@t55@ 5vNefef H% (3A@u5Btr2@ Aupv fef H% u-u-u-@ww  fe @w @pHA@twJ w 8 ,!,&    w 1& %7˕,Nf x w b D  !     +  w. e% - r<N r<&@& e ~ ~w Nef F w w D 5  =& % `5ȥ= f = @wF e  w " BuNefef  %=@@w Ћ Ћ  Jҋ~ @@&w <\lw e& 7 (7 gw &  4  b '     ` TW ~  s`K6!  w D85U5_D5P_D \ mR@e4 ,5Ne &   uN 24USt%5 5 5& & (% 45@e-4  % U5EU  w E w D x +   r= wB wb 5 a U5ff "%ށ̥a &  .e 3     U̥r 33w D5"E@e44fef  % U4 4  fef  %5 w2    6v&   6@Cw8w27 Ћ P ы A@PЋ w FD:5UE5Hw* _5uNfe & X% _bNe &   uN 2)U5| m- 5 & X%St%   U   & X% S U _ @_w DE%%"5   & X% U wv w ^D55@    3 v 4 4 4 4 4 ww~w  $5+ &5e-e % &     h ww  5f h 7 f h 7wX@ m\7ZP%e w  : ,    h e-ww D 5 e %w  5 e-w | ww  N ^ww rDCDpC 2  wZw FN vwJ ~5 & E        ~5>wlYwfw Net@f ,e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -J% w$ 2 `e vWt vw@ `e @  2%e U? `e 7U? a7 ?U ew dD|E wZw FD5 v 5N 2!w5A vBB-  }ee@ !ۃ `!ւ ` `mb& E%TmN%w w7*'$!      7& A& BF7!W-#7w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_!@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w@(#)uuname.c 5.3 (Berkeley) 10/9/85CHDIR FAILEDuuname%s Usage: uuname [-l] /usr/lib/uucp/L.sysr%s (name file) protected /usr/lib/uucp/L.sys%s @(#)assert.c 5.5 (Berkeley) 6/19/85/usr/spool/uucp/ERRLOGaASSERT ERROR (%.9s) pid: %d (%d/%d-%02d:%02d) %s %s (%d) @(#)cfgets.c 5.3 (Berkeley) 6/19/85@(#)uucpname.c 5.5 (Berkeley) 10/9/85/usr/lib/uucp/uucicogethostnamewlonexSYSTEM NAMECANNOT DETERMINEunknownMy uucpname = %s D.%.*sD.%.*sX@(#)uucpdefs.c 5.5 (Berkeley) 10/9/852/etc/nologin/dev/nullCAN'T OPENFAILED/usr/spool/uucp@(#)logent.c 5.6 (Berkeley) 10/9/85/usr/spool/uucp/LOGFILEa%s %s (%d/%d-%02d:%02d-%d) %s (%s) %s %s (%d/%d-%02d:%02d-%d) %s (%s) /usr/spool/uucp/SYSLOGa%s %s (%d/%d-%02d:%02d) (%ld.%02u) %s CAN'T FIOCLEX %d SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecmn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT?CKOW[,_chgkosw{ TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d  !d o!x!f!e g!c!s l L!u !D O !X2!Uwbin/uusnap 6111 102 1 24644 6024533336 6130   e7cce7* /  7%  nw   h  & ;( e& Q> eXgT ej Ne  WpFeN   - _WpF@f&WpF@ee@ @A 5u   &W "WpF%WpF1WpFefWpFefWpFAgg_WpFeNz h eWpF WpF%WpFf h % h WpF  WpFN h  h WpF WpF%WpFf h % h WpFWpF@f&WpF@&%& #WpF@   h - _ jI h  nw8WpFeN h A@   %W !WpF WpF%WpF% WpF@  WpF@f&WpF@ee@ @A 5u   W WpF%5 5 WpF% h _A@   W QA@  f& ef& T]   *W-<%< ff e W  "< ff ef& $< ff 4 e W 8:< ff ef&# h eWpF% WpFN; h _G_w FN 5N h N  n\ _N  n_N&e^t Le_._Nf&e ^ % @mefe  Ne 5 ,u@@m5@[ @e5% SB@@m0 @@mp @@m0  -J NWpFeffe ^ % Wp#Am - NeWpFef  Wp#Am   _t wBw .N h N  nw 54_N  n_ _yf6e p}f6e ^ % if6e ^ % \f6e ^ % ON6efe   WpFeffe ^ %  -NeWpFef  - Nefe  WpF@  WpF@ppN4 56_N4  h   n 54_   n_ @6._ efe   WpFeffe ^ %  -NeWpFef  - fe d 52WpF1_ 58N2fe8 %N2  fe8 L o  Be8  0  %%Z WpFef %Be8WpFef   0 WpFef   0  f&WpF@  0  f&WpF@N4 56_tww DLwԋ w D Lԋw w w D      + - ̥9 Wp @@`e̥0  w@w (D5 5      + -! ̥9 f& ff eee@ ee@ 5u̥0 A@  wA@w h fef 6%5 wx w `D 3 EtU4 4 w,w D Lԋww De LN 4ee ~  4e Be v Nfe %w w v -@ wp N*  %*w D  fe @w6 @pHA@tw  ~ ~w BuNefef 6%=@@w  Jҋ~ @@w n D 4 4  w^ w J  f T %  P L4 4 w w D 4-&4-!4 4   &e & Z%4    w me   s lt  &w yw &  4  b '     ` TW ~  s`K6!  w D85U5_N5P_N  m@e4 ,5Ne &   uN L4USt%\ 5h 25t 25& & Z% 45@e-4  % U5EU  w E w D  +   r= wB wr 5 a U5ff T%ށ̥a &  `e 3     U̥r 33w D5"E@e44fef 6% 2U4 4  fef 6%5 wB    6v&  @ppC`p   6@Cw w7  ы A@PЋ w FD:5UE5Hw* _5uNfe & r% _bNe &   uN L)U5| m- 5 & r%St%h   U   & r% S U _ @_w DE%%"5   & r% U wv w ^D55@ 2   3  4 4 4 4 4 ww~w  $\ 5+  &5e-e %L &      ww  5f  7 f  7wX@ m`7^\ T%L e w  > 0     e-ww D \ 5 e %L w  5 e-w  ww  N xww rDCDpC L  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f Fe  w6w.w   +U7+U7 ++Ae vB7   % 55 a  a!PE -N%+ w$ L `e vWt vw@ `e @  L%e U? `e 7+U? a7 ?U ew dDE wZw FD5  5N L!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7n*'$!     l 7b& AR& BF7!4W-7 w 8uDAB %u f& & e w5 5  W- W00~u5  .luT Bw* J@B |_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w@(#)uusnap.c 5.7 (Berkeley) 10/9/85/usr/spool/uucp/C.C./usr/spool/uucp/D.D./usr/spool/uucp/X.X./usr/spool/uucp%-*.*s %3.d Cmd%s s --- %3.d Data --- %3.d Xqt%s s --- LOCKED %s at MAX RECALLS%ld days agoRetry time reachedRetry time %ld sec%ssRetry time %ld min%ss Count: %d Uuxqt is running .strange file (%s) in %s .XQTLCK..ttyculSTSTSTST.STSTr: Unknown error: %d\dn&8JVlx+:R_u!>On0Gfv!9Z|!0DZ| 2 G RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB +*+*+.do xfegcslL6u:DO$XLU4 4  w^ w J  f T %  P L4 4 w w Dbin/uupoll 6111 102 1 54304 6024533341 6125 @Jt@ e7cce7pC / 6)  7%  >w ADCA5 % (F p9   5 zM % Z~ :   :aF p9% e  wNAp 4% 5s :  H vfe v4e fe n1 nCfe v4eNe~fe e $@CCP %&fe v4e fe   2= _ _w ,@N >w0@w @DC̋_^ _> <7 ^%ZF p9%Q |_& 4% & 3%& * & 8 7>2/& 4 5  fe v4eNe& & & F   \6 w>?7 7A w|B7vB7nBwlBlA   ^BXB eD   6B0B~ er (7BwBbC 6% L <   \67 h 7@_>?-  (7AwACD 3%@e 7@C ^ %w .>DC :5 !&   &57%&  -F p9% w=& t "e 7 bGNe :5Ne T % @@%%cV&Ne@ %BNeTF p9%@@m& cNe "Ne  w =DWpe N& %2Wpe NWpef : %2Wpef : %2H Bw94 f  & x: w*9Nfe : Nef  & 6@E%@Jfe : N  fe : % NeLF p9%fe  &   2=fe ~:% fe A%! 2= 2= w 48DC  \6 &  & &    \6w7  \6 w 7D #w7̥ ̥ ̥  ̋ @m ̋ ̥ ̥ ̥ C-C- @m w f7DC f5 e 3%3%cF p9% w&7w 7D/& 4  w7w 6 : = -[ 65  8 7rN 6 ` & t1%5UB & t1%4 ,&  Nf %wL6w 86D " #  P(7t t - @$& p9eNf@& p9e n< +@IF p9ed PF p9e NffF p9ewd5w P5  <7 7   <7 7 w05w 5 = -[ 65o 8 7N 6  & t1%5U & t1%| tEn  t t -\@B p9e&&&  p9e N r &zt p9e  nwX*w D* $ H 2= 2= 2=, x: , x: , x:  1  1  1  1   z1%d >w)w ),  Z 2= 2= 2= , x: , x: , x:  1  1  1  1 Nfe v4e fe z1ed > 'w(w (D = : 5`5˥#)˥ +Cm% 6\#2% A@ E wv(N 875%  Nf 6%    w' w' w'w (D  5 & & :e5u A@w'5 5 5@ 5`u`u w v'D Nefe 2Lt ff etttw0'w 'DC E5<E@e33. @;E  5 , @;% & fE : 5  n @ E3K -" *teVM5.N )f&@.e@.A Ep@.A Ep - sM -3M K_L* - t-\M_L* -vM7<76teVM5  eM7ރ -< _P*@eM7w : Nefe 2w*7 AWp@7, & 7 (  f 63 M : M77 w 7 7 7 7 ` M : M7b7\ww B d 3̋  6*  6*  2  wtw `  @55 " w- w-  t ZM -  t5,F 5,F - KueVM&&fe Xe3 eMp eM3ww & f eg 0k ww n MQ@f&  e5uQ@f& 4 e5uumumu _H/eeQu  %QQ eu % ff ` et ff e5u< ff ( et< ff b eL A@e@ f& @ et e  =  r  rd > r 8 8 rd ( A 5 8u 4  A f&A@ 5u r  r   A @mAm@ 5u e4 tWpe u4  AmA f&A@ 5u  AmA 5 u ܃@ 44 o ttw!wB\w<e& ;ew"w u@t5M5M@ 5tNNefef v6% (3A@u5BtrM2M@ AuptN fef v6% u-u-u-@ww & f :eB B`@ `ww  fe 2@w @pHA@tww \ 3!,& 4   wB 1&N 3%7˕,NNf 63 w D p  !     +  we% - r<N r<&@& N v4eN ~ ~w F Nef 4 w@w ,D 5  =h& 4% `5ȥ= B = @w e  w BuNefef hC%=@@w Ћ Ћ   Ћ Ћ  Jҋ~ @@w  f x: %  2=P ?4 4 w w D 4-&4-!4 4   &e & ~:%4    w me   s lt  &w <w $ D% 5     |@w 4-  wT SwN mowF n6lw0 e& 7 |7tgw &  4  b '     ` TW ~  s`K6!  w D85U5_r85P_r8  m@e4 ,5Ne & D?  uN ?4USt%. 5T: n<5PF n<5& & ~:% 45@e-4  % U5EU  w E w D  +   r= wB w 5 a U5ff x:%ށ̥a &  :e 3     U̥r 33w D5"E@e44fef hC% n ww  5f > 7. f > 7:wX@ m7. %e w       > e-ww D . 5 e %w  5 e-fw < J>ww  N Aww rDCDpC ? > wZw FN @wJ ~5 & E        ~5>wlYwfw Net@f ?e  w6w.w  nOU7`NU7VOTNLAe vB87 :  0%* 55 a  a!PE -%N w$ A `e vWt vw@ `e @  A%e U? `e 7pNU?d a7V NP?HDU ew dD$E wZw FD5 @ 5N ?!w5A vBB-  }ee@ !ۃ `!ւ ` ` m& E%̷mż%w w7*'$!      7& A& BF7!W-4J7& & e Ӌ &* &7& e nӕ-hӕ0B~Tӕ.  ӕ0~ B~&*&7( & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .lu,Bw* J@B V_4E@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& : z   5 , @ :% & f E :  (˥-%0     ,:% &  : 8 5E& z   5 , @ :% & f E :  w&w Nefef 5& \He C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& Heww  fff 5& Heww  5 %O N  =  O555Ne5& &Je5ZO55'0Ne5 B& &Je570 Be0" 5%ZO55 5 B5@B e O a=% O7p Ow %ZO5 B5Ne& &Je55e0%ZO7u`Jʕ0% Oʕ1  % O˕0 ʥ9 6@~ @(#)uupoll.c 5.5 (Berkeley) 10/9/85usage: uupoll [-gX] [-n] system ... CHDIR FAILEDuupollThis *is* %s! -g-n%s: unknown system. %s/LCK..%.*s.%c.%.*schk%s/%c.%.*s%cPOLL@(#)anlwrk.c 5.5 (Berkeley) 6/19/85Workfilename repeated: %s r+w%s/%sCORRUPTCMD FILE UNREADABLEopendir(%s) FAILS bldflst rejects %s bldflst rejects %s, grade too low %s/%sgetbldflst returns %d /usr/lib/uucp/SEQF@(#)assert.c 5.5 (Berkeley) 6/19/85/usr/spool/uucp/ERRLOGaASSERT ERROR (%.9s) pid: %d (%d/%d-%02d:%02d) %s %s (%d) @(#)cpmv.c 5.5 (Berkeley) 10/9/85/full %s @(#)getargs.c 5.3 (Berkeley) 6/19/85@(#)gnamef.c 5.4 (Berkeley) 6/20/85gnamef returns %s @(#)lastpart.c 5.4 (Berkeley) 6/20/85@(#)logent.c 5.6 (Berkeley) 10/9/85/usr/spool/uucp/LOGFILEa%s %s (%d/%d-%02d:%02d-%d) %s (%s) %s %s (%d/%d-%02d:%02d-%d) %s (%s) /usr/spool/uucp/SYSLOGa%s %s (%d/%d-%02d:%02d) (%ld.%02u) %s CAN'T FIOCLEX %d @(#)prefix.c 5.3 (Berkeley) 6/20/85@(#)subdir.c 5.4 (Berkeley) 6/23/85A\A"%D.C.X.TM.///usr/spool/uucp/C./usr/spool/uucp/X.@(#)systat.c 5.4 (Berkeley) 6/23/85%s/%s/%sSTSTr%d %dwSYSTAT OPEN FAIL%d %d %ld %ld %s %s %s/%s/%sSTST%s/%s/%sSTSTr%d%d%ld%ldMAX RECALLSNO CALLMAX RECALL COUNT %d debuggingcontinuing anywayRETRY TIME NOT REACHEDNO CALLRETRY TIME (%ld) NOT REACHED debuggingcontinuing anyway@(#)uucpname.c 5.5 (Berkeley) 10/9/85/usr/lib/uucp/uucicogethostnamewlonexSYSTEM NAMECANNOT DETERMINEunknownMy uucpname = %s D.%.*sD.%.*sX@(#)versys.c 5.5 (Berkeley) 10/9/85Before Alias: %s After Alias: %s /usr/lib/uucp/L.sysr/usr/lib/uucp/L.sys/usr/lib/uucp/L.aliasesrNo %s file /usr/lib/uucp/L.aliasesAlias expansion for %s Alias line: %s Compare against: %s Alias: %s to %s Alias doesn't match %s, remains unchanged @(#)xqt.c 5.3 (Berkeley) 6/23/85-s%s/usr/lib/uucp/uucicouucico-r1-L/usr/lib/uucp/uucicouucico-r1/usr/lib/uucp/uuxqtUUXQT%s -r %suucp/bin/shsh-c@(#)uucpdefs.c 5.5 (Berkeley) 10/9/85 BJ /etc/nologin/dev/nullCAN'T OPENFAILED/usr/spool/uucp@(#)cfgets.c 5.3 (Berkeley) 6/19/85V#V#`#<#<#<#<#<#<#<#<#<#<#<#<#<#,#,#D#SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec> B mn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT , h        TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d ((((( AAAAAABBBBBB NZOZO`DdFDoRDxEfEeDgDcDs Dl DLhDulDDJDOVDX~DU=(\ A @mAm@ 5u e4 tWpe u4  AmA f&A@ 5u  AmA 5 u ܃@ 44 o ttw!wB\w<e& ;ew"w u@t5M5M@ 5tNNefef v6% (3A@ubin/uuq 6111 102 1 43236 6024533343 5423 6F e7cce7  /   7%  *w ..^$ ' d  S 7&77A&77 5 n_ x*@e7-@e7L $'%!<0@e7,@e7 Ne 7   e@ȥ-b b %  * _ 2@ , f `  X T 5R D -D  ?6 % & $  4' % e .VWpP @ l l @ f& w5pC5   e5pC%f %AWp<Af557A &5& $e 8 2  * & 5$  -  ? % &  4' " _ + 5  @m ,6f e _ @m ,ee  e& 2w&e e  eVe0    r   ? :5 " -  r   ? %  ߰ & ߤ  r   E& 4' %"e3 &CC T%&8fe F!eNe # ,_H ` * r #  +    -  ? % & 4'  _N *wj)5  w D) @AA@5w6)Nefe & w )C  !5 F %  *N 0"5%C.e  b % N !w(w (?ffe %5Ne $'@ae5u= N &9 Ne 5 , +5w(Nfe ' @Ap@p@p@ qf  & $ 5N  5 N5 F5 H5 L_fefe % _ "S_cf !_N  #Ns %%_ XN d N )_N NS*f & NePf  & " NePf  & "um^Fum`Hu F LjDfN $'@mX\f  & $ 5>M Ne ' L.Ne $'@a0CR De̥!̥@ ԋ ' Nfe (#% N )Nfe (#% _N ) N  #N %% * N N $'@me & N %%_N +5_vNfe ' }N@pHpF@p@ApXffe %@0Ne $'5J-670 Lffe %NePf  & " @pjph@Ap@p@ @Br` r 2` _w #D|& & (h d     P + ' 3 3 *3 3 w#w #D #w#̥ ̥ ̥  ̋ @m ̋ ̥ ̥ ̥ C-C- @m w #DC 5@  w"w "DC 5 ˋS? w"w "%44zfrD?j\ $'P& !% `ȥ/ 06 ' g( &  `J4 R@`ȋ(`ȥ/# & i &  & w" $'& !% e w !D& & 7 Jw!w !Df& &Ck~w!Xw f!D4   ~ 5 5 Ne " N N  @  %%  %% ˋ @ % ˋ <  ' . !  & %4%V %% F!et F!ewR w > d ' `= ^-[ #5 $ 7:N # ( & %5U & %   Nf %ww D    *7 P < 8& %eNf& %e ( +8 %e,  %e Nf$ %eww   )7 7  )7 7 ww p = -[ #5D- $ 7N # p & %5UR & %D L# ' L#77ww |B ̋      2  wRw > 8 @55 \ w-Zw-R  t # -4  t5, 5, -  ܉!ue"&&fe Xe3 eL#peL#3ww t& f eEIw`w L #Q@f& e5uQ@f&  e5uumumu _eeQu  %QQ eu % ff f et ff x e5u< ff . et< ff @ eL A@e@ f&  et e  =  r  rd > r 8 8 rd ( A 5 8u 4  A f&A@ 5u r  r   A @mAm@ 5u e4 tWpeu4  AmA f&A@ 5u  AmA 5 u ܃@ 44 Mttw!w \ww De LN $'4eNe l  $'4eQ Be v Nfe "#%w"w -@ fwNS# F!%#tw\w R !,& !   w 1&# %7˕,#Nf  w tD   !     +  w@e% - r<N r<&@& # F!e# ~ ~w Nef w w D 5  =4& !% `5ȥ=  = @wX e  w 4 BuNefef /%=@@w Ћ Ћ  Jҋ~ @@w D |)4 4  -w w  f & %  |)P +4 4 w^ w J D 4-&4-!4 4   &e & &%4    w me   s lt  &w. W f r @  W f r@  @ < w yw &  4  b '     ` TW ~  s`K6!  w D85U5_$5P_$  m@e4 ,5Ne & +  uN +4USt%5| (5x (5& & &% 45@e-4  % U5EU  w E w D x +   r= wB wb 5 a U5ff &%ށ̥a &  &e 3     U̥r 33w D5"E@e44fef /% (U4 4  fef /%5 w2    6v&   6@Cw8w27Z Ћ P ы A@PЋ w FD:5UE5Hw* _(5uNfe & -% _(bNe & +  uN +)U5| m- 5 & -%St%  + U   & -% S U _\' @_`'w DE%%"5   & -% U wv w ^D55@ (  |) 3 - 4 4 4 4 4 ww~w  j$5+ &5e->pe % &     + ww  5f + 7 f + 7wX@ m7%e w       + e-hww D T5 e %w0  5 e-w ) *ww  N -ww rDCDpC + D+ wZw FN -wJ ~5 & E        ~5>wlYwfw Net@f +e  w6w.w  #U7#U7##Ae vB7   % 55 a  a!PE -%# w$ - `e vWt vwp@ `e @  -%HDe U?22 `e 7 #U? a7 ?U ew dDE wZw FD5 - 5N +!w5A vBB-  }ee@ !ۃ `!ւ ` `0m& E%m%w w7**'$!     R 7H& A8& BF7!W-~67& & e Ӌ  &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~&7x & Le ^ӕ-0 Rӕ.F B~ӕe8 ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_~1@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& 4' z   5 , @ :% & f E 4'  (˥-%0     ,:% &  4' 8 5E& z   5 , @ :% & f E 4'  w&w Nefef 5& 4e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& 4eww  fff 5& 4eww  5 %O N  = $555Ne5& p6e5T$55'0Ne5 B& p6e57 Be0" 5%T$55 5 B5@B e$ a=%$7 $w %T$5 B5Ne& p6e55e0%T$7%`Jʕ0%$ʕ1  %$˕0 ʥ9 6@~ @(#)uuq.c 4.6 (Berkeley) 10/9/85E88888888888883@333333uuqusage: uuq [-l] [-h] [-ssystem] [-uuser] [-djobno] [-rspool] [-bbaudrate] %s: %d %sjobsjob, %ld bytes, %d hour%s, s%3.1f minutes (@ effective baudrate of %ld)%s %2d %-*s%7ld%5.1f %-12.12s %c %.*s %sPOLL%s/%c.%szPOLLcan't examine spooling areaout of memory rRemoving data file %s D.0rRemoving command file %s Xforced pollPOLL%.14s: empty command file ---@(#)getargs.c 5.3 (Berkeley) 6/19/85@(#)prefix.c 5.3 (Berkeley) 6/20/85@(#)subdir.c 5.4 (Berkeley) 6/23/85tZ]`cD.C.X.TM.///usr/spool/uucp/C./usr/spool/uucp/X.@(#)uucpname.c 5.5 (Berkeley) 10/9/85/usr/lib/uucp/uucicogethostnamewlonexSYSTEM NAMECANNOT DETERMINEunknownMy uucpname = %s D.%.*sD.%.*sX@(#)uucpdefs.c 5.5 (Berkeley) 10/9/858/etc/nologin/dev/nullCAN'T OPENFAILED/usr/spool/uucp@(#)logent.c 5.6 (Berkeley) 10/9/85/usr/spool/uucp/LOGFILEa%s %s (%d/%d-%02d:%02d-%d) %s (%s) %s %s (%d/%d-%02d:%02d-%d) %s (%s) /usr/spool/uucp/SYSLOGa%s %s (%d/%d-%02d:%02d) (%ld.%02u) %s CAN'T FIOCLEX %d SunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDec mn%.3s %.3s%3d %02d:%02d:%02d %d GMTGMTlocaltime/etc/zoneinfo/GMTTZGMTGMT: Unknown error: %d 8H`j(4FUet%4@Sdz ? V p  & = a , A T v , > P d z RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticatorY ] e i q u ,y } h   TZNAMEMETMET DSTEETEET DSTASTADTESTEDTCSTCDTMSTMDTPSTPDTWETWET DSTESTESTCSTCSTWSTGMT%c%d:%02d ((((( AAAAAABBBBBB #T$T$0d0o0xZ1fh1eZ0g41c@1sj0lj0L0u0D0O0X0U=(\u  AmA 5 u ܃@ 44 Mttw!w \ww De LN $'4eNe l  $'4eQ Be v Nfe "#%w"w -@ fwNS# F!%#tw\w R !,& !   w 1&# %7˕,#bin/uusend 6111 102 1 45652 6024533345 6122 =j e7cce7l /   7%  1w *5N r7@_ t,%:@-=8@ f m&X@& \%Eh e[X  T@, . e%% m t,  1@77- -  7 @  1 , .  r, - ! V 7|:|t ?p lhl hR & 2 E7FB>,0 4 e  > 7 _~j/ V 7   t,  1   7x &  t,% r7   1" .x .j & " . " - > " - "2 , " . 7  .  %   t,% 1  E%@   - . -    7 n  .z %  1d r7^ %"V  . 7F F" . 72  $ -   % 8  - .  -   7  1  " 5 5 C  @ 3v 5%j d @,@8% H @ E4 0 E& &E 0. eu  @ E F% 0 0 1w40w 0DLw 0ԋ w 0D ̋   w/̥/ w / z  x.  f te 1Ne ~5!%%w|/Nf " @w. w.w.w 8/D̥r̥w74 4  *,5,+  27 $@  @2 Ne   5 K x$N x0N x0 w.̥r@-  f  N x0N@- f  N x0N x0 f30( te 4̥r f  N f  N x0 m Hw -  @  m w-N 0& %5u fe m& %%%ff V% m %@Zw,*J w,w @- T  P L  w2- : 5 ff L% 502  8 w ,  uN .5&f %5w, 5  f -  0   w X, p  @e5ff l%5w,, 45  w-( 0  4 w +  -  & x ~%7dw+FV -JR5ef  7 w f+  wl+w X+ t  wZ+w|w :+ RL 7 D  @: 07 2w +w +ww+w *   @ E w* F5% % %   Vg \ 7j& \ 7m& \  7p& \  7ls& \ 7bv& \  7DwBy& \  72w0|& \ 7& \ 7 & \ 7_ w )  w)  X7 R n# #55 ff Re55j  DZT& +%e& +%e& +%e& +%e7w (  _ V -_ F_ 5 & f |-%5= 5u fff -e5 #u 1f -%50 :=N x0w'w 'D      + - ̥9 Wp @@`e̥0  w'w 'D5 5      + -! ̥9 f& ff eee@ ee@ 5u̥0 A@  w 'A@wl&w &D  #7 - ! s 3  33 a r w w&+& f -ew R&Nef %wJ&w 6&Neff %w.&w &D A555  ԋuNeffe %w%w %DC 5 5 _%%_ 5 %*e5  AWp `eu  0u%l5  %h%[  e  _>Neffff Te   * O  A@ EN F5% % % %Nf  &    %_ A@ E%Nf  @wH$N F5 w "$N%c%s%[Nf ff f& ew#5 5 5 5 %e%f %o%xDe5 5 A @ EN F% % % %- Ԑ A @ EN F _X%+_X  _D%a%f %A_l%F_l % A@vN FO% A@v@mAm@ vA@v5u 0 %a%fW7 5`u`u C% S P Ԑ A @ E = %%.%e%E- *% ' $ ! Ԑ A @ EN F%+%-%0%9 A@  5u% N   =   @e! @e! _@t@]   xNe NA _Ne NA @H@pHw DC = 5%c%0u5 %s    F%r%c5 %[r      F%%    =  D- %cw w D ̥^   % %]%-+  $%-̥]4   ̠   %]  w<w (D*\5% %-%+ 5 55 55  B5eA5  %.55  B5eA5   %E%e$%+%-  Wp B`e   @`5 @ 5AupAm%55 @5A5u555555  55555AupN& e5 55wn6 m 7"Rw 6D Lԋw.w DC t w5 7`@  55@- 7 45!w De LN .4ee B  .4e Be v Nfe %wHw 4-F@ w.N %e& ;ewnw  BuNefef 6%=@@w Jҋ~ @@&w<w tD% 5     |@wF4- mnjB\I I7Iw  & f eww  fff eww>yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_5P_ H m>@e4 ,5Ne & 2  uN 24USt% 5 /5 /5& & -% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff |-%ށ̥a &  -e 3     U̥r 33w 4$ 2 w5 4@E%@EU5N&e .  &e - Nf&e |-%4 IN&e .  &e - Nf&e |-%  (Ne& 2  ff eee@ 4t@t"4 4t x0 4_w N x0@ x0N 4ww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  % ve@ 4tw"w D55ff %f&& "eff&e e &e ( 55 w(w$w5 5 w D5#5ff T %f&& eff&e *ew6&e )'44  && ef&& -e&e & 4%%U w D5_!o5ff %f&& eff&e Ze L&e )8f f ff&e V e 744  && ef&& -e&e & 4%%UUw @@m e%fe @2  &e ( 55 3ff `%f&e@ &50c &e ( 55 3  t, U44  && ef&& -e&e & 4%%&_!fffffe e _!&e % _!_!e_!  mm@ e@ f& ef&& -efe& 4%%_! &_ w @0 0 @0 N #7r7nww D85_$Ne& 2q fe Ve4-4-/44  &&  ef&& -e&e & -%%&e @2 &e ( 55 ewww4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t  % ve@ 4t4-4-/44  && ef&& -e&e & -%%&e @2 ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& -e&e$& -%%&e$ @2 `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& -e&e$& -%%&e$ @2 `Btp$t t"  ff Nef&& -e&e$& 4%%Uw w r D5#5 5 ww wX  @ a@ a@m5A a@5w  D 5# aB- f a@m& ^+% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l @Et5l 5l u te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm +% a@ `` e w D a@@m e  w e  aAm HN@`@m &f +%  aN f`f +%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef 6% /U4 4  fef 6%5 w    6v&  @ppC`p   6@Cwzwtw D / & & -e 4E05Ew7 Ћ P ы A@PЋ w FD:5UE5Hw* _/5uNfe & 4% _/bNe & 2  uN 2)U5| m- 5 & 4%St%  2 U   & 4% S U _X. @_\.w DE%%"5   & 4% U wv w ^D55@ /  x0 3 4 4 4 4 4 4 ww~w  $ 5+ &5e-re % & P    2 ww  5f 2 7 f 2 7wX@ m7 % e w       2 e-ww D  5 e % wd  5 e-Jw 0 1ww  N 4ww rDCDpC 2 @2 wZw FN 4wJ ~5 & E        ~5>wlYwfw Net@f 2e  w6w.w  R*U7D(U7:*8(0Ae vB7   % 55 a  a!PE -%( w$ 4 `e vWt vw@ `e @  4%|xe U?ff `e 7T(U?Hޔ a7: 24?,(U ew dDE wZw FD5 4 5N 2!w5A vBB-  }ee@ !ۃ `!ւ ` `dm& E%طm؇%w w7*'$!     b 7X& AH& BF7!*W-z=7& & e Ӌ   &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~  &7 & Le nӕ-0 bӕ.V B~ӕeH ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B V_z8@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& 0. z   5 , @ :% & f E 0.  (˥-%0     ,:% &  0. 8 5E& z   5 , @ :% & f E 0.  w&w Nefef 5& ;e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& ;eww  fff 5& ;eww  5 %O N  = 4555Ne5& l=e555'0Ne5 B& l=e57 Be0" 5%55 5 B5@B e4 a=%47T4w %5 B5Ne& l=e55e0%7Y`Jʕ0%4ʕ1  %4˕0 ʥ9 6@~ @(#)uusend.c 5.2 (Berkeley) 1/22/8523A/usr/lib/uucp/usr/spool/uucppublic/%o-r Bad flag: %s Usage: uusend [-m ooo] [-r] -/file sys!sys!..!rfile r-fuux -gn -z %s- "%s!uusend %s -m %o - (%s)"wIllegal ~user No such user as %s /illegal file: %s/w/w/bin/mkdirmkdir/bin/shsh-c:/etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwd||bbbbbbbbbbbbbRRj: Unknown error: %d .>J\n 3Rap8Wt6f}!;Wo  0 D W f z  - F h } RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired 7d7o7xV8fd8eV7g08c<8sf7lf7L7u7D7O7X7U=(\ww D85_$Ne& 2q fe Ve4-4-/4bin/ruusend 6111 102 1 45652 6024533345 10361 1bin/uusendbin/uuencode 755 0 12 17346 6024533362 6373 V < e7cce72  / j  7%  w 8%(@&  5 @  e %* r Ne@ & v @E5@fO r%*f  \ r wlw XT-fef %5 A@  `HPAEe @5/@ A@,'@ AEe `x@% A@ EN@EN @Ee `E&  5 N@@me&  eu-  A@ ȕ 3@5&@ A@,@ % A@ EN@E&N  _ww @t5@tEAAWtE@P5@tEAAWtE@P5@E5 A@  AEe `HI@5/@ A@,'@ AEe `x@% A@ EN@EN @Ee `E&  A@  AEe `HI@5/@ A@,'@ AEe `x@% A@ EN@EN @Ee `E&  A@  AEe `HI@5/@ A@,'@ AEe `x@% A@ EN@EN @Ee `E&  A@  AEe `HI@5/@ A@,'@ AEe `x@% A@ EN@EN @Ee `E&  wd w P 5 " A@ E@w4 N 5%@@mH u-@w *fef %5 w w D Lԋw w De LN 4ebe^ @  4ee Be v Nfe %w6 w " -@ zw NgZ r%Z w BuNefef %=@@w yw0 w D85U5_5P_  m@e4 ,5Ne & v  uN 4USt%5* 56 5& & % 45@e-4  % U5EU  w|E w ZD R +   r= wB w<5 a U5ff %ށ̥a &  e 3     U̥r 33ww7R Ћ w FD:5UE5Hw* _ 5uNfe & % _ bNe & v  uN )U5| m- 5 & %St%*   U   & % S U _D @_H w DE%%"5   & % U wv w ^D55@   d 3  4 4 4 4 4 ww~w  $5+ &5e-e % &     ww  5f 7 f 7wX@ mZ7XN% e w  8 *    e-ww D 5 e % w  5 e-w  | ww  N ww rDCDpC  , wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w   U7 U7  Ae vB7   % 55 a  a!PE -H%  w$  `e vWt vw@ `e @  %e U? `e 7 U? a7 ?U ew dDzE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `mL& E%>m8%w w7h*'$!      7& A& BF7!W-d7tw 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_p@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w@(#)uuencode.c 5.3 (Berkeley) 1/22/85rUsage: uuencode [infile] remotefile begin %o %s end : Unknown error: %d (2L\t~0<HZiy#9HTgx2Sj *:Qu@Uh@Rdx RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticatorn doxLfZeLg&c2s\l\LuDOXU ww  5f 7 f 7wX@ mZ7XN% e w  8 *    e-ww D 5 e % w  5 e-w  | ww  N wbin/uudecode 755 0 12 43636 6024533364 6364 :  e7cce7j  /   7%  B.w |1>%(@&  5 @  B.e H %*  B.NPfe" % D` (  B.Sfe" % NerfeZfe" @ e~rS/fer \ 5 f` (  B.= Nes 5Neru` (% B.@fe `* fe ,* N fe ,* Nefer `* fer  5 Ner  B.Nfer x Nf T NPfe" % fe" D* ` (  B. B.w/w t/TNPfe %   B.@eE5@e5Nff %e w /w .@eEtAAeEWt@P5@eEtAAeEWt@P5@eEtAAeE@P5%A  A@ H5@5&@ A@,@x% A@ EN@E&NfE * %A  A@ H5@5&@ A@,@x% A@ EN@E&NfE * %A  A@ H5@5&@ A@,@x% A@ EN@E&NfE * w,w ,5 " A@ E@w,N 5%@@mH u-@w l,DLwl,ԋ w+w J,    L  w<,  5 ff L% 50  8  w +  uN r*5&f %5 w+ l5  ^f D* ` 0   w b+ p  @e5ff l%5 w6+ 5  w-   4 w *  )  &  %7w* D*x5f  7B w p* fwv*w b* t  wd*w0w D*  7    j,7 w**w *ww*w *   @ E w) 5% % %   \ @ 7^& @ 7P& @  78& @  7 & @ 7& @  6 7w& @  6 7w& @ 7& @ 7& @ 7_w (  w(  7 b X 55 ff8 \e55 D  & (%e & (%e & (%e & (%e7w '  _  D*_> t_B 5 & f )%5=: 6 5u fff *e5 #u 1f )%50 :=N ,w'w &D      + - ̥9 Wp @@`e̥0  w&w &D5 5      + -! ̥9 f& ff eee@ ee@ 5u̥0 A@  w&A@wv%w %T fef 3%5 bw% w %NefH %w%w %Neff %w%w %D A555  ԋuNeffe %wR%w >%DC 5 5 _ %%_ 5 %*e5  AWp `eu  0u%l5  %h%[ z e  _"Neffff 8e   * O  A@ EN 5% % % %Nf  &    %_ A@ E%Nf  @w#N 5 w #N%c%s%[Nf ff f& zewZ#5 5 5 5 %e%f %o%xDe5 5 A @ EN % % % %- Ԑ A @ EN  _<%+_<  _(%a%f %A_P%F_P % A@vN O% A@v@mAm@ vA@v5u 0 %a%fW7 5`u`u C% S P Ԑ A @ E = %%.%e%E- *% ' $ ! Ԑ A @ EN %+%-%0%9 A@  5u% N   =   @e! @e! _~@t@]   xNe 2A _~Ne 2A @H@pHw N DC = 5%c%0u5 %s    %r%c5 %[r      %%    =  D- %cwf w ND ̥^   % %]%-+  $%-̥]4   ̠   %]  ww D*\5% %-%+ 5 55 55  B5eA5  %.55  B5eA5   %E%e$%+%-  Wp B`e   @`5 @ 5AupAm%55 @5A5u555555  55555AupN& e5 55w6 m 7("lw D Lԋww DC  w|5 7x@  55@- 7 L5!w (De LN r*4eHe &  r*4eK Be v Nfe %ww -@ `wNM X%w p BuNefef 3%=@@wD Jҋ~ @@w D% 5     |@w4- yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_5P_ j m`@e4 ,5Ne & .  uN /4USt%H 5T ,5 ` ,5& & )% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff )%ށ̥a &  *e 3     U̥r 33w 4$ / w5 4@E%@EU5N&e `* & &e ,* Nf&e )%4 IN&e `* + &e ,* Nf&e )%  (Ne& .  ff eee@ 4t@t"4 4t , d0_w N ,@ ,N d0ww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  ! ve@ 4tw"w D55ff %f&& "eff&e e &e V$ 55 www5 5 w D5#05ff T %f&& eff&e *ew6&e :&'44  && ef&& *e&e & F1%%U w D5_`o5ff %f&& eff&e Ze L&e :&8f f ff&e V e 744  && ef&& *e&e & F1%%UUw @@m e%fe .  &e V$ 55 3ff `%f&e@ &50c &e V$ 55 30 ` ( U44  && ef&& *e&e & F1%%&_fffffe e _&e % _>_e_>  mm@ e@ f& ef&& *efe& F1%%_ "_8w @0 0 @0 N 77ww D85_ Ne& .q fe Ve4-4-/44  &&  ef&& *e&e & )%%&e . &e V$ 55 ew2w.w4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t  ! ve@ 4t4-4-/44  && ef&& *e&e & )%%&e . ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& *e&e$& )%%&e$ . `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& *e&e$& )%%&e$ . `Btp$t t"  ff Nef&& *e&e$& F1%%Uw w r D5#5 5 wwwX  @ a@ a@m5A a@5w  D 5# aB- f a@m& '% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l @Et5l& 5l( u te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm (% a@ `` e w D a@@m e  w e  aAm HN@`@m &f (%  aN f`f (%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef 3% ,U4 4  fef 3%5 w    6v&  @ppC`p   6@Cwzwtw D , & & *e 4E05Ew7j Ћ P ы A@PЋ w FD:5UE5Hw* _+5uNfe & F1% _+bNe & .  uN /)U5| m- 5 & F1%St%T  . U   & F1% S U _* @_*w DE%%"5   & F1% U wv w ^D55@ ,  , 3 d0 4 4 4 4 4 ww~w  F$H 5+ &5e-e %8 &     V. ww  5f V. 7 f V. 7wX@ m7H %8 e w  n `    V. e-Dww D 0H 5 e %8 w  5 e-w j, -ww  N L1ww rDCDpC / . wZw FN d0wJ ~5 & E        ~5>wlYwfw Net@f /e  w6w.w  $U7"U7$"Ae vB7   % 55 a  a!PE -~%" w$ 1 `e vWt vwL@ `e @  1%$ e U? `e 7"U?ޔ a7 ?U ew dDE wZw FD5 d0 5N /!w5A vBB-  }ee@ !ۃ `!ւ ` ` m& E%ܷmۇ%w w7:*'$!      7z& Aj& BF7!LW-978& & e Ӌ @ D &7& e ӕ-ӕ0B~ӕ.  ӕ0~ B~@ D &7 & Le ӕ-0 ӕ.x B~ӕej ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luF Bw* J@B V_4@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& * z   5 , @ :% & f E *  (˥-%0     ,:% &  * 8 5E& z   5 , @ :% & f E *  w&w Nefef 5& 7e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& >8eww  fff 5& >8eww  5 %O N  = .555Ne5& 9e5~55'0Ne5 B& 9e57 Be0" 5%~55 5 B5@B e. a=%.7.w %~5 B5Ne& 9e55e0%~7`Jʕ0%.ʕ1  %.˕0 ʥ9 6@~ @(#)uudecode.c 5.3 (Berkeley) 4/10/85rUsage: uudecode [infile] No begin line begin begin %o %sIllegal ~user No such user as %s /wend No end line Short file /etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwd``jFFFFFFFFFFFFF66N: Unknown error: %d2BZd~".@O_n .:M^t9Pj 7[|&;Np & 8 J ^ t RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired  ~~3d3o3x4f4e3g4c4s3l3L4u4D3O3X4U=(\ *efe& F1%%_ "_8w @0 0 @0 N 77wbin/yacc 755 0 12 63644 6024533374 5510 V4 e7cce7 / F  7%  FNw QNf  >e r7$  P F3 6 =  \>  FNw>Qw *Q;* H 7$S=  ހd >% u 0%  @ e 1u -ui >%u 0% dO  Wtp u Q  -4  bP   pu Q  -fun >%Tt >%_%$_v  @ E~ G%AC ΋ ȋ@ ȕ$_v5+ @,#@$% @ E_vnjE& J _vR$z H 7 *$@ 35% @,@8% @ EҊΊE&&E J @ E G% nL G } }@ El} G PJ@ 3:5%. (@,@8%  @ EE&&E J | |@ E| G%_ nLwMw MDC ̔wMw MCe  tM ,  ,    , %d eC-_ D ,   G%wLw L%@tM@t̥  wLw L Z_V`V< Ie X> Ie  Iev - r&H޳ IeHV &PN &a Ie  Ie z I%d IeP I%> I%  2h I h I%  -h I | v0h I%Ah I Ʋ nL  nLwKw J &Ct I Nft I%St I%   FNwJw J  @mH D-wJw |JDC5  5T T- - @wRJw >JC^)d I EtWt `A@0  h I% -l I wIw I  _re p"|7   8!  e=e -Z p-"| t΍n  -, p"|   FN e@-@ e@   wIw IWpe-w, C Wpe-f 0% 5$| "|)@ J_e5%Wp @AWt@` e-&AEtPeC-Ԃ -05  2 5$| "|$AWpe-NWpe-f P 5P@ Jee5eC-ق -  Wpe-N  1} - & n# t΍V I% }  J4 I% -<wtGw `G 5PA 5RAu- wFG@e5-@e5}/u}}@5Ap@pu-݃u-χA A vu%@ b0@ dO" 5PA 5RAA A vuu uu; Q  x l pTA` %X %pD A pb0Q@ ,b0o}/ eeu-u-  pPARA _ uu35 @ AAB `p- ->@- P  F- A1eeu-ɂd A pdOQ@ LdOF F: 6_ w D H f V & Ie RAL N 4e 0RA- 7% wDw ~D J J 0%   J_  -  ,% J_e   J_  %J 7 <t΍  -  6 FN  J 0% e% %J_   J_   J_ -HwzCw fC7 07272 - 0%-hue ^7Z22 V 0%5 @ %F@ 0 F  u 0%N L-6 -wB )%8@ &PA& A ARA vf - r%@ Fe-1ς Z WN4 I%5 @:! ee e-1% l  l  1U@ u@ u@t&΍9 Ie -Ah I r u 5 A 1J_w A -0@ 5RA@ PA!005 @ m0A lp -e0eB-܂ _z5 --t0 5%  - 0%<4 e%15H-+3  &eu%/AEtAWt 1P- e- P e-/Ƃ@ 5$|@ 5"|,@ ]- P @ J_-" 0-e P53eu-ႂe-B/ނw >ue% ue% 5 C> `5$B-wp>@ aA AmH -w :>7 7 `@-K] O2 R6 V  d o& r* v+ H 7+ &@ D H 7rt I  @  A1`@ȋe %,$ H 7Fy. NE H 7ZP H 7y ڤ \ %r@7& H 7kt ʹ& l & l  l |5 5 5 % \   lx I ^x I Px I Bx Iڳ80x I d"x I Jne$ee? en %_Z  ; _R _N _N _N _N    _Fv _< %  $ 7h_6 ^%  G AWt pP> _< $ %" tEC-t C-tM  tMtpM  , ;_6 _6 e55 % l&e ;_< _<& $   5   p] AWtpP  t5?2   AWt pP % tz -| % tN   ,  _6% |  |_b $ zk1_b _l%| ? $ ?% e%   e $ ?%  pހ@p p-epn 5eX =eH B AހEp0 ހ $%2   pe%%) &%  $ % tM    pހ %=@ Uހs I%pn @  D*%zs I %@-fe G%Ne $ _"%; H ?e = 5ހ6 t M, E %tM ɗtE t Mo  r%l  X PL 0 ހ%_ %dDr IeA 6r 0r@ H5r5&r  r@,@x% q@ EqqE&qfE J d d@ Ed G5%d nLw5w 5zq nLjhq I%wt5w `5D  $%   Wt1΍ew.5 %   Wt1̥ _̥ _\_5 "* '$ \' b f n  r  t I M JG D A'>";\8740007 07! t@`t@`eP ;  t  0 _w 3Ctʥ [ [[%_* t t&Mho Ie $t t&] Ie - 7w63w "3D eʹ-m ? ԋ@w2w 25 m7 aa G 7`%  aa@ E% % % % %/ . "_z  %_! '_z  <( \_! {[_ "e7%0_!_! w2a BG =  %  %2 ` `@ E` G%>%> 4 &l jJ7L  -  72 el& 6  $N`@ E!:` G\ %2 B-_" %2 `ـ` G% % %\ _΁_@ E _ _@ E_ G %* 0 2 < =" > \ {________  $__@ EėCp`ew ^^ G[^ BG  _[ [ %_%.%$> [[ [ %_%.%$+ [ `t %2 V^ P^@ E<^ G_*^ BG 4 q jJ_v! jJ_v! jJ_~! jJ_! jJ_! jJ_! jJ_! jJ _ jJ _  jJ_  2],] G _%  ګ%/ 7`ʫ ]\@ E% % % % %/%:\ BG _w -%@tM @ uE %@tM@t5  wR-w >-D ̥ 5 @t& jJ@w- -5 @t΍& jJ@e -%N  f l w ,`r h Ie zh I: 0 I 5 _&h[@ E_&@h5&4h .h@,@x% h@ EggE&gfE J A @ H55&t n@,@x% P@ E<8E&(fE J @ $ {$ }$ JZ_p%@Z G5  g_%g@ H <   f I  I w*w * Y Y@ EY G%  Y Y@ EY G : df Ie_)%\V `Y ZY@ EFY G%}_) f f@ ȕ\3f5&e e@,@\% e@ EeeE&e\ J %%V X X@ EX G%}_) ne he@ ȕ%3Ve5&Je De@,@%% &e@ EeeE&d% J dd@ 3d5%d d@,@8% d@ EddE&d&E J %  |W vW@ EbW G _r' wL(w 8( >W 8W@ E$W G%*  W W@ EV G%(  V V@ EV G%/w'%*%  Vсw ' D; pc Ie5 pV jV@ EVV G _H3 _P3 "_1 $h '_60 /_. ; {T }_._T3b@  _T3 b1b@ 'b b@,'@8% b@ E b~bE& J w~&fb5Zb&E _T3 JU DU@ E0U G%<$ U& BG % L  T T@ ET G%$%j a IT_h*   *$5@ lp a I%_h*%-@ 5 xT rT@ E^T G[_~-5 AWp aeu 0T *T@ ET G[AupAu NNmt  @  ` I% X_*@@m  NNm  b AAm @` *$5@ l X` I%_* J` D`@ ȕ$32`5&&`  `@,@$% `@ E__E&_$ J _* _ _@ ȕ-_*_5+_ _@,#@-% x_@ E_*b_^_E& J _*F_- _T3 2__+(_5_n+_ _@,_n+@8% _F+_2+ ^^@ 3^5%^ ^@,@8% ^@ E^^E&~^&E J ~Q xQ@ EdQ G%*_* @^:^@ 3*^5%^ ^@,@8% ]@ E]]E&]&E J P P@ EP G%^ '_1 ]]@ 3r]5%f] `]@,@8% D]@ E0],]E&]&E J P P@ EP G%/_T3%* \\@ 3\5%\ \@,@8% \@ E\|\E&l\&E J %  bO_0_ 0" >\8\@ _&36O@ E_83\5\ [@,@8% _3[[E&[&E J _&3%\V [[@ 3[5%[ [@,@8% l[@ EX[T[E&D[&E J DN >N@ E*N G%  H D-E%   Z_1Z5Z Z@,@8% _1Z@ E M_1M G_2   tZ_*jZ5*^Z XZ@,"@8% }_=NI ,} I%@ 5RA@ PA  FT | I%eB-@ %F.@ &PA& A ARA vWpe-u@  FY | I%e-H8 u2 ^ d| I% 6%e L| I  <| I D?%l r | I% - `Z { I% {   u u&e , & { Ie -ww Nf O Ieww N O I% D-w r  O I  @m rO I% D- \O I  w P 7 XB# 5ހ z  F z I%  Aepހ -  h I%ww %  H 7A' ? 7 67 7 ~ $ , 4    puF  ? 1u   m~ H    ,S  mFFB H A}  u e5 u e  K-eC- -w u @u @` 1F-̄ -= m  m e5 mv e  m\ ` eC- mB @` m2 -4.̄ -  0 V %V  F %` L I% J -ʾ  B   A ,%%+V%V p HL I%  `v 0L I% % | L I e-.؆  8~ Gw w @ m& @ m e5@ m e5V C$e%uN  w ae - 7%u eC-L-r 7j%u C  aeeC-@ mVV H%Rʹ@ m:f J Iew @ 0 F@ u e5@ u e5 5 D` eV%V  eD-5 I - %N`  0 @ uA @lu&@ uA @lu%@ J%V Nf I Iew @ J -D&` eV%u -ΆȆ  - V &% % eD-ׂ@ J%Ƚ@ JfINI Iew F   mr  mf  -  F F -2 > H Ie w w tB ܅  %V…V &P &@t Ie V & t Iet IewN w : RV  H I%6V V E%4J% E% $, E%w w N2G I% D-w  r @G I  @mBG I% D-FnG I Kw b  [Wp C`e%- @: ::@ E&: G%CpLeF%@M w w D Lԋw w BuNefef R%=@@w w D% 5     |@w\ 4-  w w 4 D85U5_H5P_H ~ mt@e4 ,5Ne & N  uN $O4USt%\5"h L5t L5& & TJ% 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff NJ%ށ̥a &  ZJe 3     U̥r 33w D5"E@e44fef R% LU4 4  fef R%5 w ww7  ы A@w FD:5UE5Hw* _K5uNfe & JQ% _KbNe & N  uN $O)U5| m- 5 & JQ%St%h  N U   & JQ% S U _J @_Jw DE%%"5   & JQ% U wv w ^D55@ L  L 3 hP 4 4 4 4 4 ww~w  ܂$\5+ } &5e-}e %L &     ZN ww  5f ZN 7P f ZN 7wX@ m&7$\%Le w       ZN e-ځww D Ɓ\5 e %Lw  5 e-w nL Mww  N PQww rDCDpC $O N wZw FN hPwJ ~5 & E        ~5>wlYwfw Net@f Oe  w6w.w  U7U7xvnAe vBZ7 \  R%L 55 a  a!PE -% w$ $Q `e vWt vw@ `e @  $Q%e U? `e 7U? a7x pr?jfU ew dDFE wZw FD5 hP 5N $O!w5A vBB-  }ee@ !ۃ `!ւ ` `~m & E%m %w w7y*'$!      7& Az& BF7!\W-U7Hw 8uDAB %u f& & e w5 5  W- W00~u5  .luTBw* J@B |_S@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& J z   5 , @ :% & f E J  (˥-%0     ,:% &  J 8 5E& z   5 , @ :% & f E J  wV-/usr/lib/yaccparrcannot find parser %s/usr/lib/yaccparyyr1yyr2yychkyydefyacc.actsrcannot reopen action tempfileyacc.acts : item too big (%d) %d/%d terminals, %d/%d nonterminals %d/%d grammar rules, %d/%d states %d shift/reduce, %d reduce/reduce conflicts reported %d/%d working sets used memory: states,etc. %d/%d, parser %d/%d %d/%d distinct lookahead sets %d extra closures %d shift entries, %d exceptions %d goto entries %d entries saved by goto default conflicts: %d shift/reduce, %d reduce/reduce fatal error: , line %d NULL { %s }nonterminal %s not defined!internal Yacc error: pyield %d %s: %d yacc state/nolook errortoo many statesputitem(%s), state %d out of state spacenonterminal %s never derives any token string%d: %s %d, working set overflow State %d, nolook = %d flag set! %s too many lookahead setsʹy.outputwcannot open y.outputy.tab.hw`o' flag now default in yacc Ratfor Yacc is dead: sorry... illegal option: %cy.tab.cwcannot open table fileyacc.tmpwyacc.actswcannot open temp filercannot open input file$enderror$acceptbad %%start constructionbad syntax in %%typetype redeclaration of token %stype redeclaration of nonterminal %sredeclaration of precedence of %sredeclaration of type of %splease define type number of %s earliersyntax errorunexpected EOF before %%#define yyclearin yychar = -1 #define yyerrok yyerrflag = 0 extern int yychar; extern short yyerrflag; #ifndef YYMAXDEPTH #define YYMAXDEPTH 150 #endif #ifndef YYSTYPE #define YYSTYPE int #endif YYSTYPE yylval, yyval; bad syntax on first ruletoken illegal on LHS of grammar ruleillegal rule: missing semicolon or | ?illegal %%prec syntaxnonterminal %s illegal after %%prec case %d: break;$$%dmore than %d rulesmust return a value, since LHS has a typedefault action causes potential type clashmore than %d rules # line %d "%s" # define YYERRCODE %d too many nonterminals, limit %dtoo many terminals, limit %dinvalid escapeillegal \nnn construction'\000' is illegal# define %s %d # define %s %d too many characters in id's and literalsunterminated < ... > clauseillegal or missing ' or "termtokenleftnonassocbinaryrightprecstarttypeunioninvalid escape, or illegal reserved word: %smust specify type for %s%s should have been defined earlier # line %d "%s" typedef union typedef union EOF encountered while processing %%union YYSTYPE; YYSTYPE; extern YYSTYPE yylval; # line %d "%s" eof before %%}illegal commentEOF inside comment # line %d "%s" bad syntax on $ clauseyyval.%sIllegal use of $%dyypvt[-%d]must specify type of $%d.%sEOF inside commentnewline in string or char. const.EOF in string or character constantaction does not terminaten:9b:short yyexca[] ={ %d: reduce/reduce conflict (red'ns %d and %d ) on %s }; YYNPRODoff = %d, k = %d action table overflow %d no space in action table$ %d,%d,%d %s: gotos on %s %d: shift/reduce conflict (shift %d, red'n %d) on %s-1, %d, %d, %d, %d,%d, -2, %d, state %d %s %s %s accepterrorshift %dreduce %d . reduce %d . error %s goto %d # define %s %d short %s[]={ %4d }; ,Rule not reduced: %s %d rules never reduced -Ѝyacc.tmproptimizer cannot open tempfilebad tempfilebad tempfileState %d: null %4d %4d yacc.tmpa array overflowa array overflowNonterminal %d, entry at %d cannot place goto %d State %d: entry at %d equals state %d out of space in optimizer a arrayclobber of a array, pos'n %d, by %dState %d: entry at %d Error; failure to place state %d nxti = %d, max = %d Optimizer space used: input %d/%d, output %d/%d %d table entries, %d zero maximum spread: %d, maximum offset: %d # define YYLAST %d yyactyypactyypgoshort %s[]={ %4d }; ,out of space ((((( AAAAAABBBBBB SdRoRxSfSeRgScSsRlRLSuSDRORX$SU H    ,S  mFFB H A}  ubin/lorder 555 0 12 620 6024533401 5766 trap "rm -f $$sym?ef; exit" 0 1 2 13 15 case $# in 0) echo usage: lorder file ... exit ;; 1) case $1 in *.o) set $1 $1 esac esac nm -g $* | sed ' /^$/d /:$/{ /\.o:/!d s/:// h s/.*/& &/ p d } /[TD] /{ s/.* // G s/\n/ / w '$$symdef' d } s/.* // G s/\n/ / w '$$symref' d ' sort $$symdef -o $$symdef sort $$symref -o $$symref join $$symref $$symdef | sed 's/[^ ]* *//' nohupiostatet basenamet calna cbna checkeqt colke commecrypbin/mkdep 555 0 12 4103 6024533402 5620 #!/bin/sh - # # Copyright (c) 1987 Regents of the University of California. # All rights reserved. # # Redistribution and use in source and binary forms are permitted # provided that this notice is preserved and that due credit is given # to the University of California at Berkeley. The name of the University # may not be used to endorse or promote products derived from this # software without specific prior written permission. This software # is provided ``as is'' without express or implied warranty. # # @(#)mkdep.sh 5.11 (Berkeley) 5/5/88 # PATH=/bin:/usr/bin:/usr/ucb export PATH MAKE=Makefile # default makefile name is "Makefile" while : do case "$1" in # -f allows you to select a makefile name -f) MAKE=$2 shift; shift ;; # the -p flag produces "program: program.c" style dependencies # so .o's don't get produced -p) SED='s;\.o;;' shift ;; *) break ;; esac done if [ $# = 0 ] ; then echo 'usage: mkdep [-p] [-f makefile] [flags] file ...' exit 1 fi if [ ! -w $MAKE ]; then echo "mkdep: no writeable file \"$MAKE\"" exit 1 fi TMP=/tmp/mkdep$$ trap 'rm -f $TMP ; exit 1' 1 2 3 13 15 cp $MAKE ${MAKE}.bak sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP cat << _EOF_ >> $TMP # DO NOT DELETE THIS LINE -- mkdep uses it. # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. _EOF_ # If your compiler doesn't have -M, add it. If you can't, the next two # lines will try and replace the "cc -M". The real problem is that this # hack can't deal with anything that requires a search path, and doesn't # even try for anything using bracket (<>) syntax. # # egrep '^#include[ ]*".*"' /dev/null $* | # sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' | cc -M $* | sed " s; \./; ;g $SED" | awk '{ if ($1 != prev) { if (rec != "") print rec; rec = $0; prev = $1; } else { if (length(rec $2) > 78) { print rec; rec = $0; } else rec = rec " " $2 } } END { print rec }' >> $TMP cat << _EOF_ >> $TMP # IF YOU PUT ANYTHING HERE IT WILL GO AWAY _EOF_ # copy to preserve permissions cp $TMP $MAKE rm -f ${MAKE}.bak $TMP exit 0 w nL Mww  N PQww rDCDpC $O N wZw FN hPwJ ~5 & E        ~5>wlYwfw Net@f Oe  w6w.w  U7U7xvnAe vBZ7 \  R%L 55 a  a!PE -% w$ $Q `e vWt vw@ `e bin/nohup 555 0 12 213 6024533402 5627 trap "" 1 15 if test -t 2>&1 ; then echo "Sending output to 'nohup.out'" exec nice -5 $* >>nohup.out 2>&1 else exec nice -5 $* 2>&1 fi lloutt spell tbll tipl cul uucp uux uuloguunamettuusnapttuupolltt uuqlluusendttruusendtuuencodetuudecodet yaccolorderet mkdep nohupiostatet basenamet calna cbna checkeqt colke commecrypbin/iostat 2755 0 2 26340 6024533404 6057 @( e7cce7 / D  7%  w  !  ֝)   P  7\Z  5 e @ȥ- q   &   e %       7rr  7\`  7TN  7:<  7,*  7  7"  72  7  7  7  7  7  7@e5  mnH m\& L% mL  5` -F  & z ef % & T et: % tm  zEWtm IWtm -7 &(@I! N mz&  ml D -f e ׀ , m@ %tm8ve N m&  m -%  m  m -%%@ 5  r  &  e % &  eLtV % & r e t0X % & F et, % x&  et % <&  e % &  e % &  e % _ m, _tm<55tmJf&tm tm$pHtm55tmf&tm tmpHtm55tmf&tmt tmpHtmL55tmZf&tm$ tm4pH -_` ww ww7 t55tf&t tpp7Wt q7| %7n@7b7^wX7T 7$7H& 77:&  e  m   -  % V b   N  _ww    mb  mR  -L    m&   - ww  @tm &&& e_ @tm 5w5@tm C5@tm5555555555555555E7& Re @tm< 7b& .e @tm  5zE@AWtm I&& e w\w H5 5Wt q5 %5@5@t 0C@5&$ |e ww   &  e6 $p % & ^ e F % .  m&& * efe % m@&@&* m& Le  m w&w 2f v 5wN0fe .e%_V %%%  %%%cNe :5uu5 Ne @5u fff , e ?4f v 55D 55444  5@-5e  %6b  N N @_8 CeXN .e%  @ A@bl@ f&f , e Nffe* .eDNe*&  4 e   w DE5_% _4 _45`uu '& & e5u%%w~ @A 5`u`u  5u 5  5 u  5 u tmL CE 54E N  A@ f& & e5u %%    &%%%_ 5 b5 5 E4N ff & e W _ %_&%_&_ w D :5u5mu A@ww D 5u5 A@ww De m@ e@ 5u%% du %e u 5mu A@w.w D 5u5 A@ww D%%055  m@ 5u%% e du %umumu 5umumu A@whw TD      + - ̥9 Wp @@`e̥0  ww DC AupB 4  & ^%b &5% 傎& ^%`@ @m A &@w  w hVfef \!%5 wT w <4De _P t4 t t4 4t Ne&& % _Pt 4     6t-t- t-t- t- t- 55 eAePPPP 5 5 j 55 Nefe % & %5u7  && %  fe %ff % fe& %w A@E f& tw ~w w D Lԋw w u@t55@ 5tNefef % (3A@u5Btr2@ Aupt fef % u-u-u-@w w BuNefef \!%=@@w W f r @  W f r@  @ Sw mow nlw e& 7 (7 gw w D85U5_`5P_`  m@e4 ,5Ne & 8  uN |4USt%J5V b5~b b5& & % 45@e-4  % U5EU  w E w D  +   r= wB w 5 a U5ff %ށ̥a &  e 3     U̥r 33 ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw D5"E@e44fef \!% bU4 4  fef \!%5 w ww7D  ы A@Ћ w FD:5UE5Hw* _H5uNfe & % _HbNe & 8  uN |)U5| m- 5 & %St%V j D U   & % S U _ @_ w DE%%"5   & % U wv w ^D55@ b  & 3  4 4 4 4 4 ww~w  $J5+ &5e-he %: & F     ww  5f  7 f  7bwX@ m7J%:e w        e-ww D ~J5 e %:wZ  5 e-@w  >ww  N ww rDCDpC |  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f ve  w6w.w  HU7:U70.&Ae vB7   % 55 a  a!PE -% w$ | `e vWt vw@ `e @  |%rne U?\\ `e 7JU?> a70 (*?"U ew dDE wZw FD5  5N |!w5A vBB-  }ee@ !ۃ `!ւ ` `Zm& E%m%w w7>*'$!     * 7 & A& BF7!W-((7& & e Ӌ BF &7& e ӕ-ӕ0B~|ӕ.  ӕ0~ B~BF&7P & Le 6ӕ-0 *ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luHBw* J@B V_(#@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w&w Nefef 5& P&e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& &eww  fff 5& &eww  5 %O N  = 555Ne5& (e5(55'0Ne5 B& (e57X Be0" 5%(55 5 B5@B e a=%7Jw %(5 B5Ne& (e55e0%(7O`Jʕ0%ʕ1  %˕0 ʥ9 6@~  @(#)iostat.c 4.15 (Berkeley) 87/01/12_dk_busy_dk_time_dk_xfer_dk_wds_tk_nin_tk_nout_dk_seek_cp_time_dk_wps_hz_dk_ndrive_dk_name_dk_unitrp0rp1rp2/vmunixdk_busy not found in /vmunix namelist /dev/kmemcannot open /dev/kmem dk_ndrive undefined in system dk_ndrive %d dk%d%4.0f%5.0f tty %3.3s cpu tin tout bps tps msps us ni sy id %4.0f%4.0f%5.1f %4.0f%4.0f%5.1f %3.0f%c%c%drrnlist: sym 2 big ((((( AAAAAABBBBBB ((T"d:"oF"x#f#e"g"c"s"l"L\"u`"D>"OJ"Xr"U=(\Sw mow nlw e& 7 (7 gw w D85U5_`5P_`  m@e4 ,5Ne & 8  uN |4USt%J5V b5~bin/basename 755 0 12 5264 6024533406 6312  $( e7cce7 /   7%  w %0  5 - ?% 8& ߚ8   @̋ %@ԥ/ ʋ@ " 8   w<w (D* R ?E G  -?% 8&   ݀58E - ?%  ߊ8& ~  w5t8 w bD LԋwZw FD:5UE5Hw* _^5uNfe & % _^bNe & N  uN )U5| m- 5 & %St%8 6 Z U   & % S U _ @_ w DE%%"5   & % U wv w ^D55@ x  < 3  4 4 4 4 4 ww~w  $,5+ &5e-e % &      ww  5f  7f f  7.wX@ m<7:,0%e w        e-ww D ,5 e %w  5 e-w  Tww  N ww rDCDpC   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  BU7@U7B@Ae vBp7 r  h%b 55 a  a!PE -*%@ w$  `e vWt vw@ `e @  %e U? `e 7@U? a7 ?|U ew dD\E wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%tmn%w w7^*'$!      7& A& BF7!W-| 7@(#)basename.c 4.2 (Berkeley) 10/20/82(LLr@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z bin/cal 755 0 12 11072 6024533407 5311 j e7cce7 /   7%  w  %  %Q@ 05%_$% _$@ 0%_$%'_$@ &8 %$  j&f e ej d e% @ 0%_$%'z      2j % :   <   >  $$$  eHj& eH&e eH&e e Hej d eH%e%    ww  B%0%9 wWp D`ew CDӋ  D   3N-  w`w LBN N e r@  x`XSR` C- rDWpB`4%@R e  @RepR%  r e0  r e0@ % BBm  @R wfw RDe rae%e[ rde r`%e r@ww >fef < %5 *w w D Lԋww  $25+ &5e-e %" &      wTw @ 5f  7X f  70w@ m.7,2"%"e w        e-ww D 25 e %"w  5 e-w R XwVw B N ~wBw .DCDpC X  ww N w ~5 & E        ~5Yw(w  8U76U786Ae vB7   % 55 a  a!PE -Z%6 w X `e vWt vw(@ `e @  X%e U? `e 76U? a7 ?U ew ^DE wTw @D5  5N X!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w7*'$!     < 72& A"& BF7!W-7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu*Bw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  ww D:5UE5Hw _f5uNfe & % _fbNe & J  uN X)U5| m- 5 & %St%> 4 P U   & % S U _$ @_( w zDE%%"5   & % U w. w D55@   D 3  4 4 4 4 4 ww6>w0w Net@f e  w6ww@(#)cal.c 4.3 (Berkeley) 83/08/11 S M Tu W Th F Sdlu{JanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecemberusage: cal [month] year %s %u %s %u %.3s %.3s %.3s %s %s %s Bad argument %s BB4 d o& x f e g c s l L< u@ D O* XR U @(#)iostat.c 4.15 (Berkeley) 87/01/12_dk_busy_dk_time_dk_xfer_dk_wds_tk_nin_tk_nout_dk_seek_cp_time_dk_wps_hz_dk_ndrive_dk_name_dk_unitrp0rp1rp2/vmunixdk_busy not found in /vmunix namelist /dev/kmemcannot open /dev/kmem dk_ndrive undefined in system dk_ndrive %d dk%d%4.0f%5.0f bin/cb 755 0 12 14476 6024533410 5143 @ e7cce7 / <  7%  w _   @ 7 _ r yV@ %  _ _@ 7X%  f D l%6  $ Z_HH_(_  " 77  76 $  7$ 0 $  P p7%; & D  D   D J -> < 62 _" 7$d 0 $ 0 _B 82 (\| 1  d  7P-N@ %_( _7 v__ %7 _H  7 l ~ b v 7l%; D X > : D @_6 , 7(%*_  _T 7B% 2 7  ~D %, 7%;7  %( | v j7%) d 2 H D%_ J|< %_ Wp m "PWp m  $Wp m    _ _ _P  _  %,__  Z x b ^%_ d 0_  X_ $ D_ _ _ v   1_ _ _ @ % n "| z6 7r7l f% ` $T $  j f b D nd $[   L _ _ _ _ f   $  7$ 0 $   D  n %h_ \7 Z 67%_~wx w d 5  D -twT w @ b % % D F  ߞ  $7xw w "  t7 % 7  D 0 D 7  7 7 w w % w 5  @ 5 5 u  @ @m  @ @m@m5 AA@ @az-w  1 e ~ 5%\'"e N 7A@ \ ,1   f\@wV w B Wp m wPV Wp m p$ Wp m p w w   7% %  z7%/% f7%*/ *  0/ "7% |w^ w F bwH  / @ -JD* 7%* z  w fef j%5 hw w D Lԋww D85U5_ 5P_  m@e4 ,5Ne & <  uN 4USt%5 f 5 f 5& & % 45@e-4  % U5EU  wnE ww FD:5UE5Hw* _L 5uNfe & % _L bNe & <  uN )U5| m- 5 & %St%  H U   & % S U _ @_ w DE%%"5   & % U wv w ^D55@ f   * 3  4 4 4 4 4 ww~w  $5+ ^ &5e-b@e % & @     ww  5f  7 f  7wX@ m7%e w        e-ww D x5 e %wT  5 e-:w  Bww  N ww rDCDpC   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f ze  w6w.w  BU74U7*( Ae vB 7   % 55 a  a!PE -% w$  `e vWt vw@ `e @  %lhe U?VV `e 7DU?8 a7* "$?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `Tm& E%m %w w7*'$!      7& Ax& BF7!ZW-*7Fw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_6@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  w`vL@(#)cb.c 4.3 (Berkeley) 2/17/86ifelseforcasedefault %c;%c ; %sbdHoTxf egcs"l"LjunDLOXXUv   1_ _ _ @ % n "| z6 7r7l f% ` $T $  j f b D ndbin/checkeq 755 0 12 16406 6024533411 6156 6 > e7cce7  / .  7%  " w \% wX +ef N 7 N ~ " N- 6   J w d 55555_ 5 @e5 @- .$E Q@ N2 6 _DNK_<.'E#N Nc 6 5 Npl| 6e5 M JdFeBl>i:m6@e5  o@f 7 N 6 @7 N 6e  N 6e AumA r  u0Nfhd@@ & 6e  Nf84@@ & 6e 5 5 NXfe |% _  6% 0 6w w r  fef %5 w^ w F D Lԋw> w * De LN R4eBe|   R4eE Be v Nfe v%w w -@ Zw NG< 6%< w r BuNefef %=@@wF yw &  4  b '     ` TW ~  s`K6!  w D85U5_85P_8  m@e4 ,5Ne &   uN 4USt%5^ 5Z 5& & <% 45@e-4  % U5EU  w|E w ZD R +   r= wB w<5 a U5ff 6%ށ̥a &  Be 3     U̥r 33ww7 Ћ w FD:5UE5Hw* _5uNfe & &% _bNe &   uN )U5| m- 5 & &%St%  U   & &% S U _ @_w DE%%"5   & &% U wv w ^D55@   3 D 4 4 4 4 4 ww~w  $5+ h &5e-Je % & ^    6 ww  5f 6 7  f 6 7wX@ m7% e w       6 e-ww D 5 e % wr  5 e-Xw J ww  N ,ww rDCDpC  r wZw FN D wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  `j U7Rh U7Hj Fh >Ae vB*7 ,  "% 55 a  a!PE -%h  w$  `e vWt vw@ `e @  %e U?tt `e 7bh U?V a7H @B?:6U ew dDE wZw FD5 D  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `rm& E%m%w w7*'$!     Z 7P& A@& BF7!"W-7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& b z   5 , @ :% & f E b  (˥-%0     ,:% &  b 8 5E& z   5 , @ :% & f E b  w$@(#)checkeq.c 4.2 (Berkeley) 4/29/83r%s: Spurious EQ, line %d EQ in %c%c, line %d Spurious EN, line %d EN in %c%c, line %d Delim off, line %d New delims %c%c, line %d %c%c in EQ, line %d %d line %c%c, lines %d-%d %d line %c%c, lines %d-%d Unfinished %c%c Unfinished EQ : Unknown error: %d,<T^x(:IYhy(4GXn3Jd 1Uv 5Hj} 2DXnRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticatorP t t doxfeglcxslLuDOXU rules never reduced -Ѝyacc.tmproptimizer cannot open tempfilebad tempfilebad tempfileState %d: null %4d %4d yacc.tmpa array overflowa array overflowNonterminal %d, entry at %d cannot place goto %d State %d: entry at %bin/col 755 0 12 14112 6024533414 5323 ^ e7cce7 /   7%  w w4@ @mȥ-@ @mjC v e @ @m b 6 x  ˋ u-7  0  %7 7 5  z t p  V v e  & %_ r y  7 p & 7  x J)  >%8 0 ,e(     5   eE7 _ _ _    E% _%_N]  _   _p   _v _~5 JAm r 4@me&Am r f  % Ep   wnw Z-7      -   e~ zr jb) \XP LH@ <6. *uu7 ww A ru@ @   e A 1@  r v % @ & w$w A rűd7 l@  @ F w w 3_R  5 - ?% & ߜ  7 e@ -w-Z h b Z V5TF -F?8% & &   9   5 -9?% & 9  H *,  ߠ 5 - ?~% & l  7 C_J$h_R < 4 0( -(# ?% &   ӥ  5 >7^ р5   ߾ 5 - ?% & ߊ  7!E-V˥S $ RL95J< -<?.% $& (# 5 -?%    7xLH E? ߠ "5 -E?|% & j&E  ӥ  ˋ_@w w  -|vv-tn,h r #VeN r f  <4 r N  r 1  Rw w e-   Rwl w X D LԋwP w < D85U5_` 5P_`  m @e4 ,5Ne & v  uN 4USt%5 5 5& & % 45@e-4  % U5EU  wE w D5"E@e44fef % U4 4  fef %5 w wPЋ w FD:5UE5Hw* _ 5uNfe & % _ bNe & v  uN )U5| m- 5 & %St% d  U   & % S U _D @_H w DE%%"5   & % U wv w ^D55@   d 3  4 4 4 4 4 ww~w  $5+ f &5e-jHe %r & H     ww  5f  7  f  7\wX@ m7%re w        e-ww D 5 e %rw\  5 e-Bw  |ww  N ww rDCDpC  , wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  JU7< U720 (Ae vB7   % 55 a  a!PE -%  w$  `e vWt vw@ `e @  %tpe U?^^ `e 7L U?@ a72 *,?$ U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `\m& E%m%w w7*'$!     $ 7& A & BF7!W-d7w 8uDAB %u f& & e w5 5  W- W00~u5  .luzBw* J@B |_p@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w"""""`@(#)col.c 4.2 (Berkeley) 5/15/84%s: bad option %s %s: bad option letter %c %s: no storage doxLfZeLg&c2s\l\LuDOXUd on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timedbin/comm 755 0 12 16360 6024533415 5511 ` L e7cce7L  /   7%  w $8 9 ; %@- _e % R@   @ 7@ 7Ne Ne|  fe` T%NeP  fe8 T%Nefe    x x !@mȕ ? @m A1`@ȋ_@1 ă>@   fe  Nej NeZ  fe> T%Ne. _:_&fe  Ne _:fe_4fe  Ne _:_&w  % %= w   A@ EN H%w f @  x : N@ &d c %w@  w  Nf  Nf  w w D C ̢̋ w ̢w - @(if  5N J @w w n 4fef %5 wZ w B D Lԋw: w & De LN 4ele   4eo Be v Nfe B%w w -P@ w Nqt %t w n BuNefef %=@@wB yw w ( D85U5_5P_  m@e4 ,5Ne &   uN 4USt%(5>4 5:@ 5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 w ww7^ Ћ w FD:5UE5Hw* _ 5uNfe & % _ bNe &   uN )U5| m- 5 & %St%4  U   & % S U _R @_Vw DE%%"5   & % U wv w ^D55@   r 3  4 4 4 4 4 ww~w  $(5+ &5e-e % &     ww  5f 7 f 7wX@ mf7d(Z% e w  D 6    e-ww D (5 e % w  5 e-w  ww  N ww rDCDpC  : wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w   U7 U7  Ae vB7   % 55 a  a!PE -T%  w$  `e vWt vw"@ `e @  %e U? `e 7 U? a7 ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `mH& E%:m4%w w7t*'$!      7& A& BF7!W-r7pw 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_~@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& * z   5 , @ :% & f E *  (˥-%0     ,:% &  * 8 5E& z   5 , @ :% & f E *  w^P"DL@(#)comm.c 4.2 (Berkeley) 4/29/83 comm: illegal flag comm: arg count %s%s r: Unknown error: %d*2<Vf~$:FRds -CR^q <]t4D[(J_r(J\nRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator doxZfheZg4c@sjljLuDOXU*,?$ U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `\m& E%m%w w7bin/crypt 755 0 12 14116 6024533416 5715  e7cce7 /   7%  w 0f %= DJ?ENe  H5# ~  ~ N N  <+ J% K> J%  f % 5%@- f %% M >  { 5 ffAA f& b eC `@ `5u % 5 @0@0 %5 C r Ü f& ff eee@ 5u& ff eu@5 @A Z5A vu@5@Ap@p@! @A 5A 5ru@@p@p %5 @Ep %ww 5 %@-s e%i @ L  5 f E5E5@mE@mE@ED  ? 5 - ?% & &E 6 % %    ߆  wxw d 5 C r Ü f&  peee@ 7w&  teu@5 @A 5@@m5@@mAAmH@@mH %w )w*  w *J w w | }t %& V 5 f   f 5Net@@ & euENe t@ & eN > % A@ E %Ԑ N % %  >  uNe t@ & eN f %N  w: w & D " . 7 -  s 3  33 a r w w +& f & ew D 3 EtU4 4 wb w N D LԋwF e& ;ew w  u@t55@ 5ZNefef % (3A@u5Btr2@ AupZ fef % u-u-u-@wr  ~ ~W f r @  W f r@  @ lwf e& 7 7gw8 w  & f ew w w D85U5_( 5P_( R mH@e4 ,5Ne &   uN 4USt%5 5 5& & % 45@e-4  % U5EU  w`E w >D5"E@e44fef % U4 4  fef %5 w   @ppC`p   6@Cww7 w FD:5UE5Hw* _ 5uNfe & % _ bNe &   uN )U5| m- 5 & %St% N  U   & % S U _^ @_b w DE%%"5   & % U wv w ^D55@   ~ 3  4 4 4 4 4 ww~w  "$5+ ( &5e- e %v &      ww  5f  7 f  7FwX@ ml7j`%ve w  J <     e- ww D 5 e %vw  5 e-w  ww  N ww rDCDpC  F wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -Z% w$  `e vWt vw(@ `e @  %e U? `e 7U? a7 ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7*'$!      7& A& BF7!W-~7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu~Bw* J@B |_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& 6 z   5 , @ :% & f E 6  (˥-%0     ,:% &  6 8 5E& z   5 , @ :% & f E 6  w{@(#)crypt.c 4.3 (Berkeley) 1/25/85/usr/lib/makekey-/lib/makekey-crypt: cannot generate key Enter key:/dev/ttyr%s doxfftefg@cLsvlvLuDOXU  peee@ 7w&  teu@5 @A 5@@m5@@mAAmH@@mH %w )w*  w *J w w | }t %& V 5 f   f 5Net@@ & euENe t@ & eN > % A@ E %Ԑ N % %bin/deroff 755 0 12 63470 6024533420 6023 [ 6 e7cce7v / K  7%  Sw W5 5 7 H 7 F B 7 @ 7 > 7 < 7 :   * @ 7 @e7  5@k P x(  j ef ` \ ȥ-   * 0 , ;p z B v 7 ~ @ a e l m s  B 7 8 0 ( "  7 e  x a %zA %Z0 %9       jwLUw 8U x r @ E^ L7 - E% 7 %"  4 . @ E L7 %"% 7 %\   @ E L7p % x7Z wT w fTD g& JN 5i 2O  fK S@w:Tw &T%p d ^ Q%xR J F F   72 e  S   @ E L7 %  %x  bwS- z t w S  @ E L7F % , -: 4 %x   % F n h @ ET L7 %%  % % % %\  .   @ E- %x  h L7| % b -p j %x  :% V X F O7F   S &F &3w4Rw Rr 2O Nf 2O% SwRw Q @ L&N 2GwQw Q& @ E# L=-%x f%.%'z`  ׀ L7X% >w bQD@8 :]?40N8  wHQx@ E_-%xV ?%{%}- * $@ E L7% -%x h?~%\z p % h %TZ R  L7B% ( 0  @ Er L7 %-%xVw P ^_ B <@ E( L7% -%x %   @ E L7p% V -d^%x .J%.  @ E L7%  - %x` %. L F@ E2 L7% -%x %._R% V  @ E L7n% T -b\%x ,H% ,  @ E L7% -%x\ % `wNw M : 4@ E  L7% -%x x%.  @ E L7h% N -\V%x &B% w\Mw HM  @ En L7% -%xJ %. 6 0@ E L7% -%x t%   @ E L7d% J -XR%x ">% 44  @ Er L7 % -%xN %.%  2 ,@ E L7% -%x p%Z%T+  @ E L7X% > -LF%x 2%E_l  |@ Eh L7% -%xD %  * $@ E L7% -%x h%.% z  @ E L7P% 6 -D>%x *%T ~ x@ Ed L7% -%x@ %E_d wIw I 5  @ E L7% | -%x Tp%  @ E L7D% *4%.%'(_z | v@ Eb L7% % % %E_j , &@ E L7% %N_j @ E L7l% R -`Z%x *F%  _d _d l xf ^ Z5XJ -Jx?<% | & *| x P    5 - ?% | & |  P Q  ߨ !5 -@?% | & t| @& P Z" T L H@ -@ ?2% | & P wF5|  %d_j  @ E L7% t~%e_h @ E L7N% 4>%l_h @ Et L7% %i_h N H@ E4 L7% %m_h  @ E L7% t~% t% C @ E L7H% .8% $%o(%f% ~ x@ Ed L7% %f7 % _  @ E L7% % _  5% l5w zD @ E L78% %x   r yD- ^ L7% -%x: % _V "߁@ E  @ E L7% n -|v%x Fb%\ 7 @ E L70%  -$%xr  %0%9V L 0 w C : 4@ E L7% -%x x%( _ @ E L7^% D -RL%x 8%e0 @ Er L7 % -%xN %m_V-_V% _V @ E L7% _V-_V%x_V T_V @ E L7L% 2 -@:%x &% _V v p@ E\ L7%-_V%x<_V 4 .@ E L7%-_V%x_V @ E L7r% X -f`%x 0L5% _V @ E~ L7% - %xZ % _Vw-_V%\ l B_V_ _ _Z _ _V _` _ __V _Z  _Z_V _ _ __V _r _ __Vw *?D& 7 & S  { 0 w?w > De " @ E L7% -%x `|% :̝r@e! @ E Ne G& L74%  -("%xv % De@e! w> D >@ E* L7% -%x %._ @ E L7n% T -b\%x ,H%c_ @ E~ L7% - %xZ %e_ B <@ E( L7% -%x % %0I @ E L7h% N -\V%x &B% _L L7,%  - %xn % _H V߁P@ E< L7% -%x % _H ߁@ E%P) @ E L7^% D -RL%x 8%P1% ,_L z@ Ef L7% -%xB % _L% _H  @ E L7% -%x \x% _H @ E L7H% . -<6%x "%  _Hw ,:% ) d ^@ EJ L7% -%x& %    @ E L7% x -%x Pl%.* @ E L7@% & -4.%x %  l f@ ER L7% -%x. %]I  @ E L7% -%x Xt% _ L7^% D -RL%x 8% . ߁@ E ! J ?F > :2 -2?&% | &  P w75 | &Ew 7  @ E L7% n -|v%x Fb% 8  RN @ E L7(%  -%xj %._"% _" H B@ E. L7% -%x  %P/%  @ E L7n% T -b\%x ,H% _ @ E~ L7% - %xZ %EO% _ : 4@ E L7% -%x x% _ L7~% d -rl%x <X% _n# ߁@ E%"._" |@ Eh L7% -%xD %":%\3 ( "@ E L7% -%x f%"t L ӝdӕ _% T_%8 _  L&08 2G j d \ X5VH -H ?:% | & (|  P 8 _w3w 3D  &_$% L&_H&? ̥ + -?%  ߶| & ߪ P ̥  ׀5| E& ˥ ˥ ˋ̥" @m   : _% if *>?& "c5 ] ?    -?% | & P ؃̥" ڀ5| E&5 -?%  ߆| & z P | E&5̋_# L F > :58* -* ?% | & |  P "_@ Y ? !5 -@?% | & ߢ| fE P  z v5tf -f ?X% | & F|  P w1w 18 _X'Ӌ_X'w0% _l' _' 5%%' 4 Q ߼  -?% | & ߒ P !׃ ݀5| E&5l^ -^ ?P%  B| & 6|  P  _\&5  5_h&%_z&w /D  n*_j*5 _)̥ ̥  ̥" 5   2  , "- ˋ Jw-BB j5j4\ -\. ?N%  @ <' 4  "  O ˕ | & |  P @-@  8" (? ߼  -?% | & ߒ P ܂5 I5x| E& 7%2 - B ?> 6 2%50" -"?% | &  P | E&5 ̋_' 3@ - ? ߴ !5 -@?% | & ߀| fE P f ` X T5RD -D ?6% | & $|  P w,w ,N L&w,w , 5   @ E L7% n -|v%x Fb%  @ E L76%  -*$%xx %..%  \ V@ EB L7% -%x %   @ E L7% n -|v%x Fb% _* @ E L70%  -$%xr  % _*@!_z-@ _z- @ :@ E& L7% -%x ~%   _* , . ߲ݷ 5 -.?% | & ~| . P h& b Zݷ VN -N_n- ?<% _-| & & P w*5_*-|  _X-L_.%L_. _-@ E_- L7z%_- \_--hb_-%x_- *_-D% _-_*%E_R.%Q_R.%_0.)_H.%v_*D_* $ _*f_Z/%H_~.%h_.%p_.%(_*%P_.%P_* _.@ E_. L7p%_. R_/-^X_.%x_. _/:% _._^- L7 %_,/ _P/-_L/%xX_L/ _P/% _* :_/0@ E_/w ' w'w ' w'w ' _/ _/EP ~* w'w ' _/@ E_/ L7J%_0 ,_&0-82_"0%x_"0 _&0% _/ w.'w ' l_L0 _P0  w'w &7 Vw'w & ^_0eF ?7 w&w & 0_0 S%p _0 QF ?7 w&w ~& _0@ E_0 L78%_1 _81-& _41%xp_41 _81% _0 R_b1H@ E_j12 L7%_1 _1-ܴ_1%x_1 |_1% _B1܈ _1@ E_1 L7Z%_1 <_2-HB_2%x_2 _2$%._1% _1 h_L2^@ E_T2H L7%_j2 _2-_2%x_2 _2%Z_1w$w $@5 @5f VH% _2@ E_2 L7@%_ 3 "_03-.(_,3%xx_,3 _03 % _3 >_\34_T3 *׷ &_25"_3 -_3?% _N3| & P _2| E_3 _3 _3 ߴַ _45_4 -_4 ?% _3| & r_4|  P w@#w ,#%~_:4 w*# Z_Z4P@ E_b4: L7%_x4 _4-ټ_4%x _4 _4% _:4 _4@ E_4 L7h%_4 J_5-VP_5%x_5 _52% _4$$ |_85r@ E_@5\ L7%_V5 _z5-_v5%x._v5 _z5%._5% _5 _5@ E_5 L7~%_5 `_5-lf_5%x_5 ._5H%Z_5_64w L!@5 @5 _L:f VH% X_\6N@ E_d68 L7%_z6 _6-׺_6%x _6 _6% _7 _6_6 ߼ӷ _<65_7 -_7P?% _6| & z P _<6| $E_7 Z_@7P_87 Fӷ B_75>_~7, -,_~7?% _27| & _7| E P _7!_D:5_7 -_7!?% _>:| & ߠ_7| ! P _8@ E_8 L7%_.8 _R8- _N8%xV_N8 _R8% _8 _p8_D:5_8 -_8?% _7_>:| E_7 _8 _8 ߰ѷ _"95_9 -_9 ?% _8| & n_9|  P r_B9h@ E_J9R L7%_`9 _9-_9%x$_9 _9%._9w _9!_9 з _:5_9 -_9!?% _9| & ߌ_9| ! P t_f85p_8^ -^_8 ?L% _7 :з 6_7 H_l:>@ E_t:( L7%_: _:-Ӫ_:%x_: r_:% _L: _:@ E_: L7V%_: 8_;-D>_;%x_; _; % _: j_J;`@ E_R;J L7%_h; _;-_;%x_; _;%._$;% _$; _;@ E_; L7l%_; N_<-ZT_<%x_< _<6%Z_$;_9w : _,<_0< VH w*w @5 @5 T_>f VH% "_<@ E_< L7%_< ~_<-ф_<%x_< L_<f% _T= _=Nѐ_< ߆ͷ _r<5~_D=l -l_D=?Z% _<| & D P _r<| E_:= $_= _n= ͷ _= -_= ?% _h=| & P w5_v=|  _= L7f%_= H_ >-TN_>%x_> _ >0% _= _=v@ E_=w @5 @5) ~* ww @5 @5Ef ~* ww if ~* ww  ww  _>N d?_>'  wz _> _?@ E_? L7%_2? _V?-_R?%xR_R? _V?% _>_>w N 2 ww  2_?N d?_?N T@ w _? _?@ E_? L7f%_? H_ @-TN_@%x_@ _ @0% _?_?w 8,N T@7 w0w N @w w N d?ww @5 @5 4_A%*_A%L_A _@%R_@EL ~*  _B xP _@@ E_@ L7@%_ A "_0A-.(_,A%xx_,A _0A % _@ >_\A.4_TA *ɷ &_@5"_A -_A.?% _NA| & P_@| ._A%._@%._@ _B _A@ E_A L7B%_ B $_.B-0*_*B%xz_*B _.B % _A_BX L7%_ZB _~B-_zB%x*_zB _~B%._@ __fC _jC% _C% _C% _E _C@ E_C L7%_C b_C-nh_C%x_C 0_CJ%._ D%._ D7 _(D%[_(D $_E _^D%t_^D%P_^D% _^D VH_E% _E%>_D% _D% _D t @P55  5_D 5u-_EAAm rWpmzu@p-_Dp-_E_D@ _E xZN@  _E xh%xN_E_E X_NE_EJ_E>_E :_NE 5_E5 _"EN T@ww @A@ww D _E_Ee _Ewzw fDC_F_FeePPP _FwBw . t E5 E5` 55 Z_pFR _pF xldN E5`N E5`fe S 5tf E 5f E 5Nf E 5Nf E 5Eff He}}wVF_pF_pF_pFw D* wlYwfw Net@f Te  w6w.w  "U7U7 Ae vB7   %޹ 55 a  a!PE -% w$ V `e vWt vwt@ `e @  V%LHe U?66 `e 7$U? a7  ?U ew dDظE wZw FD5 U 5N T!w5A vBB-  }ee@ !ۃ `!ւ ` `4m& E%m%w w7*'$!     $ 7& A & BF7!W-R[7سw 8uDAB %u f& & e w5 5  W- W00~u5  .luh Bw* J@B |_^Y@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& P z   5 , @ :% & f E P  (˥-%0     ,:% &  P 8 5E& z   5 , @ :% & f E P  w@(#)deroff.c 4.5 (Berkeley) 84/12/18&^.^^^^^^^^ zBBBEBEVEdEnEExECCGGjF(G"\/ed/gi/ma/fn>ec>osb0xn0mt/wh/QEz/ST60CT60&T60ETV0SP/LT0SF0KO0RN/DN/PP2PI2PL2UA$4IA$4HS6NS6XU<SDd>SKd>FKd> H:<UH:< P2SNd>ppd?pld?pnd?pi>hsv?huv?l(4>q(4>b(4>z(4>c(4>d(4>f(4>x(4> r@ i@ b@ u@ q@br@ib@xb@IB4@RB4@BI4@RI4@BR4@IR4@PPD@PLD@PHD@usage: deroff [ -w ] [ -k] [ -m (a e m s l) ] [ file ] ... rDeroff: Deroff: Cannot allocate memory.%c%c.%c%cUNIX UNIX .%c%c.P : Unknown error: %drz*<N`l2APhu7TeF]|7Op $ 7 F Z p & H ] RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticatorXdpXo|Xx:YfHYe:XgYc YsJXlJXLXuXDtXOXXXU2? _V?-_R?%xR_R? _V?% _>_>w N 2 ww  2_?N d?_?N T@ w _? _?@ E_? L7f%_? H_ @-TN_bin/fgrep 755 0 12 15214 6024533421 5653 ֻ e7cce7 /   7%  w $H x 8B7 ? < 9 e   DKf | 7=NM d % / Ľ     Ɂe@ȥ-b 6 d w e N vw`  H    N e $  ww < ; f  54Nc$Nef   wҼʼƼ  7Ny d %K5  5 ^ X7 r7 p7 d7 bn_` mXf  %_\N r %N    Dewe @  <_l_ҥ _ __ ` m m > mf  %E9C _l 8e e @  f  %  7`w`޺w غҥ  ĺ      Lew e|w v5 ( m |xmv _Hjf  %_l_l 7`4w`2w , "__e _  N  N r_%ܹ  BN     ee@ f& ef& e t d^ eB-+ipe ~ -~'@?p %  ^ Z& N *  m@-Ά 2π52@ E&  -$@? %  & * _ Ҁ5@ E&w < f `Z@ Ew$ > , 6 2w 7 %_t% _|  !ˋ@ %t e.ˋ B%t evrl %td jeXTN % % L˕ %t, 2e %w !w  d  w w *@e55̋=e@e@- u-_D@e@-@e5e5S5 7X=u-@e@- @e@-@e5 e eu- 5 }Ap@εƵ7@5 5 w w fef %5 wx w ` D LԋwX w D D85U5_f 5P_f R mH@e4 ,5Ne &   uN 4USt%5 5 5& &  % 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff  %ށ̥a &   e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 w    6v&ww7 w FD:5UE5Hw* _ 5uNfe & % _ bNe &   uN )U5| m- 5 & %St%   U   & % S U _R @_V w DE%%"5   & % U wv w ^D55@   r 3  4 4 4 4 4 ww~w  B$5+  &5e-e % &      ww  5f  7 f  7wX@ m7%e w  j \     e-@ww D ,5 e %w  5 e-w  ww  N ww rDCDpC  : wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  ȾU7ƾU7ޭȾܭƾԭAe vB7 ­  % 55 a  a!PE -z%ƾ w$  `e vWt vwH@ `e @  % e U?  `e 7ƾU?쬔 a7ެ ֬ج?Ь̬U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7*'$!     X 7N& A>& BF7! W-r7 w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_~@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& * z   5 , @ :% & f E *  (˥-%0     ,:% &  * 8 5E& z   5 , @ :% & f E *  wdjp^Xfgrep: unknown flag rfgrep: can't open %s fgrep: can't open %s egrep: no memory for %s %s %s:%ld:%ld:%s:%ld wordlist too large ((((( AAAAAABBBBBB ҾҾdoxZfheZg4c@sjljLuDOXU/PP2PI2PL2UA$4IA$4HS6NS6XU<SDd>SKd>FKd> H:<UH:< P2SNd>ppd?pld?pnd?pi>hsv?huv?l(4>q(4>b(4>z(4>c(4>d(4>f(4>x(4> r@ i@ b@ u@ q@br@ib@xb@IB4@RB4@BI4@RI4@BR4@IR4@PPD@PLD@PHD@usage: deroff [ -w ] [ -k] [ -m (a e m s l) ] [ file ] ... rDeroff:bin/file 755 0 12 26770 6024533423 5502 h@ e7cce7H /  7%  w "% NH H% %_`@-ifc@& ` 5'@ J  5@m0   r vp pNfe % @  @ r<  e  p% ww <Nef -    _@E  f G @8 `A f  7~]-:r Tl P  fef %5 @@m0Ne   _5" /_ N@&@E% NX: e_^_jfl %7 v_  r y}  5 5 5   L   8  4  0  __$_1_ W X Y %+ %= <  EC_ $U X ]  !U W ]#x !q Nen _R `l `% r_l `% _ ff \e !  el % %j/ _7 p H ]7 d`cl#l_H D l-z 67 0  _ 5.l_ j @ %__@%_-  l  #l\ @ % 5 /{- zl5 l%;_Z V l @ %_-z 6_,(l!lm;l   l @ %_-, _)l l @ %_-_{l_< @ %__@ l n/ _P @ U  7 @g: 6:l-l(" l -N l l l 5.l j @ %_@ ln/ ._M_l @9%4d_ p-j5I:5~ 5 5 xjl % Hx[Hl % 74*l )xl % l %  l   -ztlE h%( ww  7 F5 * @ # %* @  l w- @- wBw .  l l l5 5  @ @m  w @ @m@m5 AAl@ @ l l  l{l/lw*w j l5%   4 -0<*m,e*l/m\le -e-/l l R  ww ^/l RN J l-< w0 l $-bw \ 5 5 %2 wR5 @ @a0 %5 /@@m% @@mU @a @@m %N )K ,H .E :B ;? ?< u-AWpA-@@m@m@m@m5@@m@m@m@m@m5@@m@m@m@m@m5@n @- @ @-@@m @@m  @t@mp@mV@-_* AWpBB8 _* AWp A-_* _, w  f B 5@- aD% D-/ 5%燄 D-/ D-@5* @53 N<f `% DNJf `% S N[  w w 7 #l :l  t l hw-b \w-VN @ %w w-8 (w :w w l <fef %5 $wX w @ D Lԋw8 w $ De LN 4ere   4eu Be v Nfe %w w -V@ w Nwp %pw l BuNefef %=@@w@ Ћ Ћ  Jҋ~ @@ywf &  4  b '     ` TW ~  s`K6!  w ^ D85U5_J5P_J  m@e4 ,5Ne &   uN 4USt%05~< 5zH 5& & % 45@e-4  % U5EU  w0 E w  D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w &D5"E@e44fef % U4 4  fef %5 w    6@Cww7X Ћ w FD:5UE5Hw* _5uNfe & % _bNe &   uN )U5| m- 5 & %St%<   U   & % S U _P @_Tw DE%%"5   & % U wv w ^D55@   p 3  4 4 4 4 4 ww~w  $05+ &5e-e %  &      ww  5f  7 f  7wX@ md7b0X% e w  B 4     e-ww D 05 e % w  5 e-w  ww  N ww rDCDpC  8 wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -R% w$  `e vWt vw @ `e @  %e U? `e 7U? a7 ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `mR& E%Dm>%w w7n*'$!      7& A& BF7!W-p7zw 8uDAB %u f& & e w5 5  W- W00~u5  .lu(Bw* J@B |_|@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& ( z   5 , @ :% & f E (  (˥-%0     ,:% &  ( 8 5E& z   5 , @ :% & f E (  w@(#)file.c 2.11BSD (Contel) 11/24/90 "'-4;BHMSX]bejot{~xTresinitfont202V0p1functionsubroutinecommondimensionblockintegerrealdatadoublesysmovtstclrjmpintcharfloatdoublestructexterngloblbytealigntextdatacommfielifesacdoneexportreadonlytrapPATHHOMEaliasbreakswendswforeachlimitonintrrepeatsetenvsourcepathhomeusage: %s file ... r%s: %s: %s Cannot statsymbolic link to %s append-only directory %s special (%d/%d) characterblocksocket %s Cannot readempty demand paged pure separate replacement text overlaid pure overlaid separate set-uid set-gid sticky executable not stripped (likely vax) very old archive old archive cpio data block compressed %d bit code data ! __.SYMDEFarchive random library ! archive PRESS file data c program textc program textfortran program textassembler program textroff, nroff, or eqn input textassembler program textroff, nroff, or eqn input textassembler program texttroff (CAT) output data set-uid set-gid sticky shell scriptc-shell scriptcommands texttroff intermediate output textshell commandsc-shell commandsEnglish textascii text with garbage set-uid set-gid /bin/shshell/bin/cshc-shellexecutable %s script : Unknown error: %d08B\l *@LXjy&3IXdw # B c z   : J a . P e x   . P b t   RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB doxXffeXg2c>shlhLuDOXUticatorbin/join 755 0 12 15504 6024533424 5514 @(  e7cce7  / 4  7%  w _ eB j_ oR tC_@-_(_(@ a@1  xU( _U _U _@7 e _@77_7 A.A 0 @e  1L @.[@e z 1L p  e Z %(T <@1@2/@1@ @2 @ 7 @ 77 e e%_x5 @ L -%5   7  7 @-n|@& V 7V @~  @& V 7. @   5 85u 5     w2@@m     & " 5N&      | & " 5P f   5 $@  4 & "Nf   85u 5 ff e 5 5!    & "Nf   5 ހ  z  n & "  ff> euu_w j@t e5AWp(e u@ f %  w4 (C--& % -   }eC-= % C% = w  XK b  X   < 5 -< @  . < % u-5 - @   < % u- < w 5 DA A WpB lL u @ @ p-L @ % @ p-L xN < D @-  < -,> < w d > N f fff > e  >  w,w Nf ww D  5 & & e5u A@w 5 5 5@ 5`u`u w p DE5_l % _ _5`uu '& & e5u%%w  @A 5`u`u  5u 5  5 u  5 u tmL CE 54E N  A@ f& & e5u %%     %%%_P5 x5 5 E4N ff & e W _P%_%__Pw \ D      + - ̥9 Wp @@`e̥0  w w fef |%5 vw w D Lԋw &  4  b '     ` TW ~  s`K6!  w 4 D85U5_@ 5P_@ p mf@e4 ,5Ne & N  uN 4USt%5 x5 x5& & % 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef |% xU4 4  fef |%5 w ww7$  ы A@w FD:5UE5Hw* _^5uNfe & % _^bNe & N  uN )U5| m- 5 & %St%  Z U   & % S U _ @_ w DE%%"5   & % U wv w ^D55@ x  < 3  4 4 4 4 4 ww~w  $5+ &5e-te % & t     ww  5f  76 f  7wX@ m 7 %e w        e-ww D 5 e %w  5 e-nw  Tww  N ww rDCDpC   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  v U7h U7^ \ TAe vB@7 B  8%2 55 a  a!PE -%  w$  `e vWt vw@ `e @  %e U? `e 7x U?l a7^ VX?PLU ew dD,E wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7.*'$!      7|& Al& BF7!NW-<7:w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_H@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  w 4@(#)join.c 4.2 (Berkeley) 6/30/83usage: join [-an] [-estring] [-j1 x -j2 y] [-o list] [-tc] file1 file2rcan't open %srcan't open %s%s%c%s%c%s %s %cjoin:    tdZofx$f2e$gc s4l4L|uD^OjXUcommands texttroff intermediate output textshell commandsc-shell commandsEnglish textascii text with garbage set-uid set-gid /bin/shshell/bin/cshc-shellexecutable %s script bin/look 755 0 12 14160 6024533425 5517 V e7cce7 /   7%  w T 4@-1 f  t  d (  @7@ A1`@  e%%_%  @7O  7 Q % @&  5 5 & ^ feR 5u A@@mAm@ f& e5u ff  fe  @ E \eu %%  4 -      xu-u-uuuu ffV feJ 5 'u # 4 &      xt z  4  w      xw DC̋  w ̢̋ˋ̢w lb@ E% =  @: \% w<=w - g  g A`} D = =w w D  5 & & J e5u A@w 5 5 5@ 5`u`u w : DE5_% _n _n5`uu '& & J e5u%%w  @A 5`u`u  5u 5  5 u  5 u tmL CE 54E N  A@ f& & J e5u %%    \%%%_5 5 5 E4N ff & J e W _%_`%_`_w & D* R ?E G  -?% t& ߤ Z  ݀5tEz -z ?l%  ^t& R Z w 5Ht w ` D LԋwX w D D85U5_5P_  m@e4 ,5Ne &   uN 4USt%h5jt 5f 5& & D % 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff > %ށ̥a &  J e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 w    6v&ww7| w FD:5UE5Hw* _ 5uNfe & % _ bNe &   uN )U5| m- 5 & %St%t    U   & % S U _ @_ w DE%%"5   & % U wv w ^D55@   3 < 4 4 4 4 4 ww~w  6$h5+  &5e- e %X &     . ww  5f . 7 f . 7wX@ m7~ht%Xe w  ^ P    . e-4ww D h5 e %Xw  5 e-w B ww  N $ww rDCDpC  j wZw FN <wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -n% w$  `e vWt vw<@ `e @  %e U? `e 7U? a7 ?U ew dDE wZw FD5 < 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `mX& E%JmD%w w7*'$!      7& A& BF7!W-7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu`Bw* J@B |_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& Z z   5 , @ :% & f E Z  (˥-%0     ,:% &  Z 8 5E& z   5 , @ :% & f E Z  w?..RR@(#)look.c 4.2 (Berkeley) 7/2/81/usr/dict/wordsrlook: can't open %s ((((( AAAAAABBBBBB doxfegdcpslLuDOXU_`%_`_w & D* R ?E G  -?% t& ߤ Z  ݀5tEz -z ?l%  ^t& R Z w 5Ht w ` D LԋwX w D D85U5_5P_  m@e4 ,5Ne &   uN 4bin/mesg 755 0 12 10376 6024533426 5514 @~ e7cce7 /   7%  w 5  ^7 n & %!5 2   y#U N wX 8@ nE > w NR % w w N <\ w wJ w D Lԋw w hN & HNef ?@E% 8p *2 j*L-p  e  Ne u-u- w   w D 4 4  ww  f  %  P ^4 4 ww D 4-&4-!4 4   &e & %4    wRme   s lt  &ww D5"E@e44fef H % DU4 4  fef H %5 w wwЋ PPw FD:5UE5Hw* _*5uNfe & % _*bNe &   uN ^)U5| m- 5 & %St%  & U   & % S U _ @_w DE%%"5   & % U wv w ^D55@ D   3 4 4 4 4 4 ww~w  $v5+ &5e-e %f &      ww  5f  7z f  7wX@ mP7NvD%fe w  .      e-ww D v5 e %fw  5 e-w  ww  N ww rDCDpC ^  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f Xe  w6w.w  "U7 U7" Ae vB7   |%v 55 a  a!PE ->%  w$ ^  `e vWt vw @ `e @  ^ %e U? `e 7 U? a7 ?U ew dDpE wZw FD5  5N ^!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7R*'$!     t 7j& AZ& BF7!<W-7(w 8uDAB %u f& & e w5 5  W- W00~u5  .lunBw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w@(#)mesg.c 4.3 (Berkeley) 3/13/86cannot statis y is n usage: mesg [y] [n]mesg: %s cannot change mode/dev/,,@ d& o2 x f e g c s l LH uL D* O6 X^ U `mX& E%JmD%w w7*'$!      7& A& BF7!W-7w 8ubin/ptx 755 0 12 23032 6024533427 5366 !L e7cce7 /   7%  w v  %  v  %  v  v  ve%_ @ȥ-_ e@b _ x #  eN 7N  %   % xd% eN 77z Dt  %  "eu B  %  % ewN% wew  7   %%wz7 x h*"^  7V N$  T : 4@ E  N%  7@  ex7Tf  5BNV  : A@ EN N%(T~x * %& Nh  T Qe -<Â-6Nw    b7  7     7   N  5  5 ! xL    he ,@- JD  ww Nfj eww Nf   ww x e5  @ E NQ% w>&  '@ E$   xPC-ӕ Q ˕ C- rրl N%w     @Q u-u-c@ T u @TINf  e5 @e5!%Nff %  l  hNf  5  H DNf  5 ww  u @Q@e @A @  w u-w ` uX e@ HJ5m @,e@ % Q@ EXt n@,8@Ax@% P@ E <8E&  u- @ ȕ 5 @E  E&    @ ȕ3 5&  @,@% | @ Eh d E&T   X > e8 @ HJ& 5m  @,e@ % Q @ EX  @,8@Ax@%  @ E   E&  u-  @ ȕ n 5b @ET P E&@   ww   7     r7 _  _ _ Q  @Q =  5& %5@x @ @mj 5` 5&f N %5@@< @ @. 5$ AA@@5@Q @m5& %5@@-u AA@5@AQ @5&f N %5@@@-u*  Nf  @- u-0x  2j  u-u- u-6D  Nf 8(  Nf u-  <  >  u-u- u-B  Nf z D %J    _  "_  B < @ E( N%ww u@ 5u-@Q @Qu u-@@@-u-@Q @w,w u@ 5@Qu-@Qu u-@@@-u- @Q @ww  uu6 (9"@ H(  @,.@Ax@% @ E E&  u-Ƃw5@Ew hb  ww  @@% wuu @Q@e @5u@Q@e @5A@pu uu @Q@e @5u@Q@e @5A@pu@tA@xE5w u@ @ p  %5 @  u-w  w w x D      + - ̥9 Wp @@`e̥0  w2 w  D Lԋw e& ;ewj w u@t55@ 5rNefef % (3A@u5Btr2@ Aupr fef % u-u-u-@w> w * Nef @w w   f @w w D6 5B ʋA r e0@ A r 5X  B-ʥ/ʥ/ Nef ,5@ 'NeN  %ʕ/  f % %% w& Nef ҕaʋʥzQʕa&wV w D% 5     |@w 4-  w lw e& 7 *7"gw w :  & f Hew2 w w  D85U5_5P_  m@e4 ,5Ne & z  uN 4USt%R5b^ 5^j 5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7 w FD:5UE5Hw* _5uNfe & % _bNe & z  uN )U5| m- 5 & %St%^ 0  U   & % S U _H @_Lw DE%%"5   & % U wv w ^D55@   h 3  4 4 4 4 4 ww~w  P$R5+ ` &5e-$Be %B &      ww  5f  7 f  7(wX@ m7R%Be w  x j     e-Nww D :R5 e %Bw  5 e-w  ww  N ww rDCDpC  0 wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -% w$  `e vWt vwV@ `e @  %.*e U? `e 7U? a7 ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m|& E%nmh%w w7*'$!      7& A& BF7!W-h!7w 8uDAB %u f& & e w5 5  W- W00~u5  .luJBw* J@B |_t@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   wTHuR^-dt-dftLj\TJXp|@(#)ptx.c 4.2 (Berkeley) 9/23/85/usr/lib/eignWrong width:Lines truncated to 200 chars.Only file already given.Ignore file already givenIllegal argument:Too many filenameswCannot open output file:rCannot open break char fileOut of memory spacerCannot open fileToo many wordsToo many words in file/tmp/ptxsXXXXXwCannot open output for sorting:rCannot open data: Cannot fork/usr/bin/sort/usr/bin/sort+0-1+1-o%s %s rCannot open sorted data:.xx "/" "/" "/" "/" %s " . ((((( AAAAAABBBBBB doxPf^ePg*c6s`l`LuDOXUBBBBBB doxXffeXg2c>shlhLuDOXUticatorbin/ranlib 755 3 24 33712 6024532444 6034 +  e7cce7<  / @  7% x "$w \'5 5+Uf  %55x p  t%%X N Ef8  %5( f P%-   35@E%(fef %% 5  6 fe ^%   'f &'%%| @w2&w &N "w"&w &<d f %%<   w% ,  d 0fe: %  ~  fefe %5 & fe %7 w fefe %5 & fe %w fefe" %5 & fe %wv fefe( %5& fe %wH  fefe0 %5 & fe %7 w  p 6f ^% .Ne 7 %? :  f %!    4  7w 7  f % ʥ  _w $ _:@ TNf $  R 5@% !B te !@f&@&@& @&@f&ed e a%  >/& @ee@ f&@&@& @&@f&&d e( @f&@&@& @&@f&d e@55  <d @& &'%%<@  @& &'%!@ 7fff e7 w"w !A@u5v_D@5A W-A@ Nfe& %-, 5u 5 @@me&f &'%@ C`       @ @55fe& %%   @ @5@m5f &'%%@ w w mE mm@ 5ufff & e W  wD w 0  L5f  7 5uJ5bP  w77~w|N  6 Nf   fe  N  ? . & f & e5u & f & euufffe 6e& f & ef&f eN "N N  ww *& f & e5u& f & e5ufef %%_ %%% % %%_ _ Ne b@mAm@ 5u fe @mAm@ f& Ne   W _ A v@55 Hpfe Ve R5 j   ' #  0A@@mAm@ 4t ?7ew A@ vD5 && Nefe j % 04&fe %tt 7`lw`jw d  fff & eww T  * Ne   W  &  emm@ ee@ 5u5 eu 5ff& N @ EI& j& && fe et<fe Re  & LF e5u0fe Re  A@eD@ 5u5 5 0uu 5`u`u A@mm@ 5ufe Re 6  Z Re . Z Pfe Re  * !w&& Re   D& D&w >D      %    C-= ww  fe- %5 @ff %5uNe 5% Ne ff %@ww x N %5 @whw T/f \  wJ@w 0|t w.w h 2fS te "$ww 5  t @ ? ldff (%5% 5`  65 @e7N "$w  * ,5Pw Vf t  "$wLw 8  L5     % T t%wN  w 85  fff & e W   de@ f&fe e fef &'%%  wpww VDC AupB5 S  "̥ ;  & ӄ b %;  7  & %bb& ӄ b % ₎& %`@ @m A &@w  /w w- @m7zȥ- pl> ^-XR N7%:f > (0 ( "  f       P   P ?w ̥:7 t*+` w-  f    @m7 ~ x 9 E5 @@l w w DC E5<E@e33. @;E  5 , @;% & fE b 5  !U3 3  wrw ZDE5_% _V _V5`uu '& & & e5u%%w @A 5`u`u  5u 5  5 u  5 u tmL CE 54E N  A@ f& & & e5u %%    %%%_5 !5 5 E4N ff & & e W _%_H%_H_w FD \5u5mu A@w*w D ,5u5 A@ww De m@ e@ 5u%% du %e u 5mu A@ww |D 5u5 A@w`w LD%%055  m@ 5u%% e du %umumu 5umumu A@ww D      + - ̥9 Wp @@`e̥0  wpww RDC AupB 4  & %b 5% 傎& %`@ @m A &@w  w D  7 -  s 3  33 a r w w|+& f & ew 4D Lԋw,w DC % 5 ̥+̥- %$ ! ̥0 ̥X̥x % ̥0 ̥X̥x 5 5 % 0 e e  ff eee@ 5u %  = A@  wA@w De LN R 4ee 2  R 4e Be v Nfe %w w v -@ wp N % w D  fe @w6 @pHA@tw w Nef @w w  f @w w D6 5B ʋA r e0@ A r 5X  B-ʥ/ʥ/ Nef ,5@ 'Ne  %ʕ/  f  % %T%D w Nef ҕaʋʥz ʕaw BuNefef '%=@@w~ Ћ Ћ   Ћ Ћ  Jҋ~ @@&wz W f r @  W f r@  @ < w* nyw w D85U5_H5P_H n md@e4 ,5Ne & $  uN %4USt% 5 !5 !5& & % 45@e-4  % U5EU  wl E   R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw 4D5"E@e44fef '% !U4 4  fef '%5 w   @ppC`pww7  ы A@Ћ w FD:5UE5Hw* _!5uNfe & &'% _!bNe & $  uN %)U5| m- 5 & &'%St% ^ $ U   & &'% S U _ @_ w DE%%"5   & &'% U wv w ^D55@ !  " 3 D& 4 4 4 4 4 ww~w  $ 5+ . &5e-e % &     6$ ww  5f 6$ 7 f 6$ 7VwX@ m^7\ R% e w  < .    6$ e-ww D  5 e % w  5 e-w J" #ww  N ,'ww rDCDpC % r$ wZw FN D&wJ ~5 & E        ~5>wlYwfw Net@f $e  w6w.w   U7 U7  Ae vB7   % 55 a  a!PE -L%  w$ ' `e vWt vw@ `e @  '%e U? `e 7 U? a7 ?U ew dD~E wZw FD5 D& 5N %!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7*'$!      7& A& BF7!W-+7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_)@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& b z   5 , @ :% & f E b  (˥-%0     ,:% &  b 8 5E& z   5 , @ :% & f E b  w ar: creating archive %s. ! ! ` ` #1/#1/#1/ar: warning: %s truncated to %.*s %-16.15s%-12ld%-6u%-6u%-8o%-10ld%2s` %s%-13d%-12ld%-6u%-6u%-8o%-10ld%2s#1/` %-16.16s%-12ld%-6u%-6u%-8o%-10ld%2s` r+__.SYMDEF%-16.16s%-12ld%-6u%-6u%-8o%-10ld%2s__.SYMDEF` temporary file/tmp/ranlib.XXXXXX/tmp/ranlib.XXXXXXranlib: %s: %s tusage: ranlib [-t] archive ... __.SYMDEF__.SYMDEFranlib: %s: no symbol table. %-12ld: illegal option -- : option requires an argument -- : Unknown error: %d8J\lx (9Ma.Hf $Fd6Oi*=J^r  . H [ t RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator. ((((( AAAAAABBBBBB  (d(o(x)f)e(gl)cx)s(l(L(u(D(O(X)UN  w 85  fff & ebin/rev 755 0 12 10604 6024533430 5342 t* e7cce7R /   7%  bw <%%@&  7@'T % b  @ E t f 4 %/?tn j)H& ^ V -Vt?H%  : 2߀52HtE&  !   - ?% H&  5H   e%_VwH w 4 D Lԋw, w  D85U5_ 5P_  & m@e4 ,5Ne &   uN @ 4USt%<5H &5T &5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef * % &U4 4  fef * %5 wz ww7 w FD:5UE5Hw* _ 5uNfe & f % _ bNe &   uN @ )U5| m- 5 & f %St%H   U   & f % S U _ @_w DE%%"5   & f % U wv w ^D55@ &   3 4 4 4 4 4 ww~w  $<5+ f &5e-jHe %, & H    v ww  5f v 7  f v 7wX@ m7<%,e w       v e-ww D <5 e %,w\  5 e-Bw  ww  N l ww rDCDpC @   wZw FN wJ ~5 & E        ~5>wlYwfw Net@f : e  w6w.w  JU7<U720(Ae vB7   % 55 a  a!PE -% w$ @  `e vWt vw@ `e @  @ %tpe U?^^ `e 7LU?@ a72 *,?$ U ew dDE wZw FD5  5N @ !w5A vBB-  }ee@ !ۃ `!ւ ` `\m& E%m%w w7*'$!     X 7N& A>& BF7! W-7 w 8uDAB %u f& & e w5 5  W- W00~u5  .lu4Bw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w@(#)rev.c 4.1 (Berkeley) 10/1/80rrev: cannot open %s z" d o x f e g c s l L* u. D O X@ U  = A@  wA@w De LN R 4ee 2 bin/sleep 755 0 12 7712 6024533431 5645 @z* e7cce7V / N  7%  dw Z5 %'  d@5%0%92  dAWp Ameu@ 5N ww Nfef %5 rw w 4De _Z t4 t t4 4t Ne&& % _Zt 4     6t-t- t-t- t- t- 55 eAePPPP 5 5 t 55 Nefe % & %5u7 f && % V fe %ff f% fe& %w\A@E f& 6w 2w8w $D LԋwSwmownlwj e& 7 T7Lgw<w  $B5+ h &5e-nJe %2 & L    x wTw @ 5f x 7 f x 7w@ m7B%2e w       x e-ww D B5 e %2w`  5 e-Fw R wVw B N *wBw .DCDpC   ww N Hw ~5 & E        ~5Yw(w  U7~U7trjAe vBV7 X  N%H 55 a  a!PE -% w  `e vWt vw@ `e @  %e U? `e 7U? a7t ln?fbU ew ^DBE wTw @D5 H 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m&& E%m%w7H*'$!      7& A& BF7!hW-:7Tw 8uDAB %u f& & e w5 5  W- W00~u5  .lu:Bw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  ww D:5UE5Hw _ 5uNfe & 4% _ bNe &   uN )U5| m- 5 & 4%St%N  U   & 4% S U _ @_ w zDE%%"5   & 4% U w. w D55@ ,   3 H 4 4 4 4 4 ww6>w0w Net@f .e  w6ww@(#)sleep.c 4.1 (Berkeley) 10/1/80arg count bad character dox f egj cv slLuDOXU vw@ `e @  %ebin/sort 755 0 12 31366 4636020154 5546 #& e7cce7  /   7%  w B w:@ȥ+[ mH+ A A T1 o ew @ @-  mZ 76e@ȥ-5 فewe@& j  %  j\ v   fEWpefu-9@-4-0-,-(- $}@Ap@Ap@Ap@B p -L z t n ml k X %Z m v   , 7 N Z%N ZD e7  r 7 t7  m 7  % 0 ,7 & e  8 x eH D   v      %     %        %       0 ]   e5-  4N&  De-`  l -j -N  D &  7  ww r 5 5 N > 5 f 4 7 N b     8-    - _ b_z 0N > 5 ^ f 4 7J N b  2 & b%  8 5@m B%$ v  @ E 5%  N v @m @m0Dm u n E0̋\ & ~ P 5 < -d 4 0 _bww @ 5 B5 > 5@ f 4 A1N b @ p0@f b%  e B-B e00  5 . 0̋( 0 &0 b%  @ A p0. u-   E022A @@](5B__ . &  %  , &. & ~ 5    .C%  . &. b%  X%p e05@f u@=@p%0 *N &. 5   .      .  _<B@ 0e- >   B-T 0ww D ̥  Nf v ww > > & 4 7  v  wdw P-@ mȥ- @ m w.@ mA rea?C reaVw   4 7V  v  :ww h X/ X,NeL  %!BeNe m0&  % u-u-  -w@w ,N \ Dw,w ' ~ f ~ f ~ . ~ ww       -zb \n >   -D ww x  59AWpefuDC _p f& l%5 f& l%f l%5 f l%_ - _ _l D-̭ C-˭  ̥ ̥  ˥ ˥ @5̥-  ˥- @ 55 u-@  u-@ uu5 B-  @A@555!5! 0 U  0I ABp@CD̥. C˥. B-D- C-  @5D-  ԥ0C-_  _ ӥ0@w2 ,5 ,5@ _ u5 @mȋ @mȋD-̥ C-_ ˥ _ @C-˥ @_ @mAmA@AA_ Nf . w `DC ԥ  "wT ̢̥ ˥   w "C@ @m  ,w˥ J ˭    !@ @m  ˥ ˥ ˥ ˥ ˥   ˥ ˥ @ @m˥   w bD ̥ w^w JWpBef  % w8w $WpDef @ r y$@ a  h w @ a% @ a0 vr Ne A` a1   ! " # & '  ! $  $ & w w  D5 AWp `eu=  @ww  @@ 5%_V vu@ @m55DC?5L}4 @D-%e5K}eD.f 5euK5KeD-N& p 5 C-χD-= @e5Nfe  u_@eu-@@ AA @ Nf  @e5_ L}CwH -|Enw w w  DC E5<E@e33. @;E  5 , @;% & fE H 5  U3 3  wb w N D LԋwF w 2 De LN 84e0e   84e3 Be v Nfe \%w w -@ Hw N54 %4w z u@t5H5J@ 5Nefef % (3A@u5BtrJ2H@ Aup fef % u-u-u-@w w BuNefef %=@@w &w w 0lw e& 7 7gw yw &  4  b '     ` TW ~  s`K6!  w D85U5_5P_  m@e4 ,5Ne &   uN 4USt% 5h 5d 5& & "% 45@e-4  % U5EU  w|E w ZD R +   r= wB w<5 a U5ff %ށ̥a &  (e 3     U̥r 33ww7 Ћ w FD:5UE5Hw* _5uNfe & % _bNe &   uN )U5| m- 5 & %St%   U   & % S U _p @_tw DE%%"5   & % U wv w ^D55@    3 * 4 4 4 4 4 ww~w  ~$ 5+ z &5e-R\e % & 0     ww  5f  7 f  7wX@ m7 %e w        e-|ww D h 5 e %wD  5 e-*w 0 ww  N ww rDCDpC  X wZw FN *wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  2"U7$ U7" Ae vB7   % 55 a  a!PE -%  w$  `e vWt vw@ `e @  %\Xe U?FF `e 74 U?( a7 ? U ew dDE wZw FD5 * 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `Dm& E%m%w w7*'$!     d 7Z& AJ& BF7!,W-#7w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_!@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& H z   5 , @ :% & f E H  (˥-%0     ,:% &  H 8 5E& z   5 , @ :% & f E H  w*LU,.  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Jd@(#)sort.c 4.11 (Berkeley) 6/3/86/usr/tmp/tmp-too many keys-can check only 1 file%s/stm%05uaacan't locate temprrline too long (skipped): missing newline before EOF in standard inputrdisorder:nonunique:wcan't create wcan't create sort: : Unknown error: %d*BLfx (7GVg{"5F\v ! 8 R t   C d }  # 6 X k x  2 F \ v RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB ,, d o xx!f!ex gR!c^!s l L u D O X U @;% & fE H 5  U3 3  wb w N D LԋwF w 2 De LN 84e0e   84e3 Be v Nfe \%w w -@bin/spline 755 0 12 20136 6024533434 6045  e7cce7," /   7%  w . ! @- @5@t0AWtqAWtqBtB5@t0AWtqAWtqBtB5Aww D%T! w L!7@5?0! 2! 55 ! ! @t0AWtq5 @-7~wv!@@-55 _ _ @t0AWtq5u@𗁖%78 5uBAB5%75uBtm2 BAB5N LuBtm BABAWtm 5u@u55uA5% 7vu&55e@- 7Ru&55%5 5uBAB5AWtmF _0@5 _( @- 57w @t0AWtq555 _@t0AWtq5 5Au7f55uAWtmIuBuBAWtmZIB5 5%E5uA5% 7u&55 e@- 7u&55@tm055u@u555  7fu5e@-7Ju5 _57$755u7@wB5 5u5up@@u@u55u@u55@BBuuBB5@t0uAWtqBuBBAWA55uAWtq&` ,e 5&d e  _ _w J7  7wwWt1 te  te   %ww   ` %5 ?  ߺ 5@   %  ` %@@m0@@m Ne R =wN@@m0%0%9 +  -  . E e w 5 < @0 AWt`q @t@m0A1 @ 0AWt`q @t@m0A1 -Fw w n 7t 7n 77777777Z 77V _"  a% k1 n7 p= x>h  RTe@ - Nefe %6Nefe Nefen Nefe % Nefe %    7  | | t5 7N 7 p #5 @t0&v e @t0&z te -w w %  %-. @509@ R = ewh w T fef %5 Xw@ w ( D*\5% %-%+ 5 55 55  B5eA5 %.55  B5eA5  %E%e$%+%-  Wp B`e  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& e5 55wn 6 m 7F"w 6 D Lԋw. w  D85U5_ 5P_  m@e4 ,5Ne &   uN 4USt%5 5 5& & .% 45@e-4  % U5EU  wE w D5"E@e44fef % U4 4  fef %5 wd ww FD:5UE5Hw* _5uNfe & % _bNe &   uN )U5| m- 5 & %St% R  U   & % S U _\ @_`w DE%%"5   & % U wv w ^D55@   | 3  4 4 4 4 4 ww~w  $5+  &5e-e %x &      ww  5f  7R f  7JwX@ m(7&%xe w        e-ww D 5 e %xw  5 e-w  ww  N ww rDCDpC  D wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  n"U7l"U7zn"xl"pAe vB\7 ^  T%N 55 a  a!PE -%l" w$  `e vWt vw@ `e @  %e U? `e 7l"U? a7z rt?lhU ew dDHE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` ` m& E%m%w w7J *'$!      7& A& BF7!W-~7& & e Ӌ  &7& e ~ӕ-xӕ0B~dӕ.  ӕ0~ B~&78 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_~@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& 4 z   5 , @ :% & f E 4  (˥-%0     ,:% &  4 8 5E& z   5 , @ :% & f E 4  w&w Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& eww  fff 5& eww  5 %O N  = x"555Ne5& pe5"55'0Ne5 B& pe57@ Be0" 5%"55 5 B5@B ex" a=%x"7x"w %"5 B5Ne& pe55e0%"7`Jʕ0%x"ʕ1  %x"˕0 ʥ9 6@~ <@C@ T@(#)spline.c 4.3 (Berkeley) 9/21/85%f %f Bad agrument %f %f  ((((( AAAAAABBBBBB T"""doxZfheZg4c@sjljLuDOXU=(\E5Hw* _5uNfe & % _bNe &   uN )U5| m- 5 & %St% R  U   & % S U _\ @_`w DE%%"5 bin/split 755 0 12 15716 6024533435 5717 >  e7cce7  /   7%  w  5 _ @mȥ-C @m r yD Z      .        @m  7  @m7  @m7 D-%-t  7nd 4 V_/J_D@ E 0* 2%    < `2@ `ȋ rea2@ l rea@2@ 2@ R1@  7 3 j   @ Ȑ3x5%l f@,@% J@ E62E&"E  % _t -`_t  w D      + - ̥9 Wp @@`e̥0  wZ w B D Lԋw: w & De LN 4eJe:   4eM Be v Nfe ,%w w -D@ bw NO % w n BuNefef %=@@wB yw w ( D85U5_l5P_l  m@e4 ,5Ne & n   uN 4USt%52 5. 5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 w ww7 Ћ w FD:5UE5Hw* _~5uNfe & % _~bNe & n   uN )U5| m- 5 & %St%  z U   & % S U _< @_@w DE%%"5   & % U wv w ^D55@   \ 3 4 4 4 4 4 ww~w  n$5+ * &5e-B e % &     ww  5f 7 f 7wX@ m7%e w       e-lww D X5 e %w4  5 e-w  t ww  N ww rDCDpC  $ wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  " U7 U7   Ae vB7   % 55 a  a!PE -%  w$  `e vWt vwt@ `e @  %LHe U?66 `e 7$ U? a7  ?U ew dDE wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `4m<& E%.m(%w w7*'$!      7& A& BF7!xW-\7dw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_h@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w @(#)split.c 4.2 (Berkeley) 4/29/83rxwCannot create output : Unknown error: %d4D\f$0BQap !0<O`v;Rl"9]~(=Pr(:L`vRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator dzoxDfReDgc*sTlTLuD~OXU a U5ff %bin/sum 755 0 12 11054 6024533436 5360 ( e7cce7x /   7%  w 5 C-% @m& N 5 @m'| 6%e _d 5 5 eu 5 vDe vD` A@ EN %@5  % @mR;| 6% A@ee@ f& Xef&&T He%  @m]  a N  C-_\N w w pfef %5 wx w ` D LԋwX w D D85U5_85P_8  m@e4 ,5Ne & V   uN 4USt%d5p 5| 5& & % 45@e-4  % U5EU  w E w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 w    6v&ww7 w FD:5UE5Hw* _f5uNfe & % _fbNe & V   uN )U5| m- 5 & %St%p f b U   & % S U _$ @_(w DE%%"5   & % U wv w ^D55@   D 3 4 4 4 4 4 ww~w  b$d5+ 2 &5e-6e %T &      ww  5f  7 f  7^wX@ m7d%Te w   |     e-`ww D Ld5 e %Tw(  5 e-w  \ww  N ww rDCDpC  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -% w$  `e vWt vwh@ `e @  %@w w  ߊ 5v -v?h% & V  ( 6   w~ w j  6  wb w N Ne&  EUNe&   6 1 .  Nw w 3 .  ߒ 5~ -~ ?p% & ^    ww   ww nNt@f Z ewbw ND LԋwFw 2N tf Z ew&w  Nef  w w D 5  =v& ~% `5ȥ= P = @we   Jҋ~ @@ ы A@w FD:5UE5Hw* _, 5uNfe & % _, bNe &    uN ` )U5| m- 5 & %St%  ( U   & % S U _ @_w DE%%"5   & % U wv w ^D55@ F   3 4 4 4 4 4 ww~w  $5+ ~ &5e-`e % & `    ww  5f 7" f 7wX@ m7%e w       e-ww D 5 e %wt  5 e-Zw  " ww  N ww rDCDpC `  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f Z e  w6w.w  bU7TU7JH@Ae vB,7 .  $% 55 a  a!PE -% w$ ` `e vWt vw@ `e @  `%e U?vv `e 7dU?X a7J BD?<8U ew dDE wZw FD5  5N ` !w5A vBB-  }ee@ !ۃ `!ւ ` `tm>& E%0m*%w w7*'$!      7& A& BF7!zW-J7fFiqu~0@(#)tabs.c 4.1.1 (2.11BSD) 12/9/94dasi300300dasi300s300sdasi45045037tty37tn300terminettnhp-nTERM=v& ~% `5ȥ= P = @we   Jҋ~ @@ ы A@w FD:5UE5Hwbin/tc 755 0 12 25074 6024533443 5167 "l  e7cce7l /   7%  w >L x@e7H 8< r75 2@e7t 7$&e@ȥ-p ȃD@ 7 7( 7 ـ 4f % NL V%    7T  7D_p _p5@ E7` _p %  7mwpvm 7rn7`wp`m 7rXw b 7 @ _ x 77777/ $ 7"7777 v- * $  "5 -?% @&  D @@     7 e>z _pE_pU_pU_pE_p7 _p@_p7 _p_p7 _p|_pE%`_@ E7h X 7\mX-JJ H-    "5 -?% @& ߺ D @@    \ _ _ _p 76 7 ,_p , _pE%P_FE   "E! 7" 7B 7b B-    "5 -?% @& ߴ D @ 7 @l .5L5F7  7a_pX -X$,?J%  <@& 0 D  555@E5_pE]0%"    ʋ[ ' =5 -?% (@& ߀ D 0@( b^5\N -N ?B%  4 0 @E& `ʵ V%DT  x    ߺ 4 %_N ww  B -  ߀ |"5zl -l?^% @& L D @ v- * &  "5 - ?% @& D @E&WpfwpWt rh7aa  -  ߒ "5~ -~?p% @& ^ D @ - < 8 0 ,"5* -?% @& D @E&ʋ w2w @  e -  ߪ "5 -?% @& v D @ - T N F B&5@2 -2 ?$% @&  D @  6 4-  "5 -?% @& ߦ D @ # &^~ v rj -j>?\% @& J D 7 w58@Ew j 7 N  P-   "5 -?% @& D @ - ; ߒ "5~ -~;?p% @& ^ D @;; - < 6 . *"5( -? % @& D @@  w.w  W@ex5v  t }tv v N5t=v@ex@-v6@ex5v!vNey 0 L sL  @v v e7 @ey7\  7ft wnw Z 5'F  :     f e -%)    Ne 5@-%     ww  fe .%%5@ww p `-    "5 -?% @& D @tE5EpWtE@`E5ZtE5tE5tE5-.> 7 J @U ?> 6 2+50" -"@U ?% @& D @@U E&@U -> 7 @U`? ߲ +5 -@U`?% @& z D @@U`E&@U`-,- -> ~7 2 @U`?&  +5 - @U`?% @& D @@U`E&@U`-> 7 @U ? ߚ +5 -@U ?t% @& b D @@U E&@U ~7 2 @U@?&  +5 - @U@?% @& D @@U@E&@U@wwwww7 w w  55%  Wp B` 5 e%.7vxn j5uBu- Wp C@  ff eB  77 w4 w ^ P" c i p u f Zew HB7w 7 w |)w  w w DC+ 5 , a  r5 w: wR U5ff (%̥a &  4e 3     U̥r 33w DC E5<E@e33. @;E  5 , @;% & fE D 5  U3 3  w w D Lԋw e& ;ew& w u@t55@ 5Nefef % (3A@u5Btr2@ Aup fef % u-u-u-@w lw\ e& 7 T7Lgw. w  & f ew w w D85U5_@5P_@  m@e4 ,5Ne &   uN 4USt%45@ 5L 5& & .% 45@e-4  % U5EU  wVE w 4D5"E@e44fef % U4 4  fef %5 w    6v&  @ppC`pww7T w FD:5UE5Hw* _5uNfe & % _bNe &   uN )U5| m- 5 & %St%@   U   & % S U _l @_pw DE%%"5   & % U wv w ^D55@    3 & 4 4 4 4 4 ww~w  $45+ &5e-e %$ &      ww  5f  7B f  7wX@ m74 %$e w        e-ww D 45 e %$w  5 e-zw , ww  N ww rDCDpC  T wZw FN &wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  nU7tlU7jnhl`Ae vBL7 N  D%> 55 a  a!PE -%l w$  `e vWt vw@ `e @  %e U? `e 7lU?x a7j bd?\XU ew dD8E wZw FD5 & 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m:& E%,m&%w w7z*'$!      7& A& BF7!vW-"7bw 8uDAB %u f& & e w5 5  W- W00~u5  .lu,Bw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& D z   5 , @ :% & f E D  (˥-%0     ,:% &  D 8 5E& z   5 , @ :% & f E D  w0 m ; $;;;;;;::99998889XpppppPV\pbh!#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{} &*2:@HLTZbjrx~  "(*24<BJPV\`fnx"$&,@(#)tc.c 4.2 (Berkeley) 7/6/81rtc: cannot open %s fiflfffflffi! ? /bin/sh-sh-chtnmlizsdbxfjukp-;a_c`e'orv-wq/.g,&y%QTOHNMLRGIPCVEZDBSYFXAWJUK0123456789*-ZM()[]JM_=O&:+!O~?'|O#L$(Mo_v)V,)?ISZo'o5becjCOM(kTS@UA|l/"E=O[RYN_\I(OJWX`/XFA\]WGIOO=O_V@s)K-SKit'ZXTo`HI'>F@TF>_F@</Cy||||||||||||=++_$^=_*{}'`^#|[c_~O/%M|*ZFO+]gCTxxdoxt f etgN cZ slLuDOXUwnw Z 5'F  :     f e -%)    Ne 5@-%     ww  fe .%%5@ww p `-    "5 -?% @& D @tE5EpWtE@`E5ZtE5tE5tE5-.> bin/tk 755 0 12 16436 6024533444 5202 @ e7cce7 /  7%  w IMD \ 7n f r Of < % NQ D%  VR _Ne 7, $7" e@ȥ- pN 7 77 r7 _t _J %  n _| mb  Z_H $_ _B7 |pl/p7 (-\f_ X7 X   5 -?% & ߜ   b-_ _7 _e r Wp@@7`    7 _ xe/^e/ r7`Je/ rw/ r7$/ 5 -?%  ߀_& r   V ?R J F5D6 -6 ?*% & &E  % e^   %_0627 8   ߰ 5 -?% & |  rww 77777- 7 %7 m~z ~ ve &  ww r V7 Hj &   wXw D b (%!  Jn F  b% @ E % ww   $ 5 5 N N & D zq < % | < %  ewHw 4 _(   tE5EWtE@`E5tE5tE5tE5 < 6 . *5( -? % &   -V6 @U ? &5 -@U ?% & ߐ @U E&  -6 h @U`?\ T P&5N@ -@@U`?.% &  @U`E&  -t-h-b6 @U`? &5 -@U`?% & ߘ @U`E&  -6 p @U ?d \ X&5VH -H@U ?6% & $ @U E&   @U@? &5 -@U@?% & ߸ @U@E&  wwwww7 w  wp w DC+ 5  a  r5 w: w U5ff %̥a &  e 3     U̥r 33w DC E5<E@e33. @;E  5 , @;% & fE  5  bU3 3  wP w < D      + - ̥9 Wp @@`e̥0  w w fef f%5 Fw w D 3 EtU4 4 w~ w j D Lԋwb e& ;ew w 2 u@t55@ 5XNefef % (3A@u5Btr2@ AupX fef % u-u-u-@w  lw e& 7 7gw w :  & f  ew2 w w  D85U5_F5P_F D m:@e4 ,5Ne & 8  uN |4USt%5 b5 b5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef f% bU4 4  fef f%5 wz ww7 w FD:5UE5Hw* _H5uNfe & % _HbNe & 8  uN |)U5| m- 5 & %St%  D U   & % S U _ @_ w DE%%"5   & % U wv w ^D55@ b  & 3  4 4 4 4 4 ww~w  x$5+ &5e-Lje % & *     ww  5f  7 f  7wX@ m7%e w        e-vww D b5 e %w>  5 e-$w  >ww  N ww rDCDpC |  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f ve  w6w.w  ,U7U7 Ae vB7   % 55 a  a!PE -% w$ | `e vWt vw~@ `e @  |%VRe U?@@ `e 7.U?" a7  ?U ew dDE wZw FD5  5N |!w5A vBB-  }ee@ !ۃ `!ւ ` `>m& E%m%w w7$*'$!     v 7l& A\& BF7!>W-&7*w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_2@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w$  @(#)tk.c 4.2 (Berkeley) 5/15/84/dev/ttyrrtk: cannot open %s  ;;! /dev/ttyr/dev/nullr/bin/shsh-t^dDoPxfegcslLfujDHOTX|U% @ E % ww   $ 5 5 N N & D zq < % | < %  ewHbin/touch 755 0 12 14746 6024533445 5711  @ e7cce7  /   7%  Jw 7 7 ~ @c  x(` e@ȥ-! 5: @|6 e JN e w w 4Nef  % & f iNJ^@E%NbPf ff :f N e -fff NeNf Np eNR ew w   Ef ^ 5%N  e w fef d%% & f je%fef N %% f  5%N %www  D Lԋw !wzw De LN z4ee b  z4e Be v Nfe %ww n-4@ whN % w < BuNefef  %=@@w&w|ywvw D5"E@e44fef  % U4 4  fef  %5 w ww7h Ћ w FD:5UE5Hw* _5uNfe & N % _bNe &   uN ( )U5| m- 5 & N %St%   U   & N % S U _ @_w DE%%"5   & N % U wv w ^D55@    3 l 4 4 4 4 4 ww~w  &$5+  &5e-e % &     ^ ww  5f ^ 7 f ^ 7 wX@ mp7nd% e w  N @    ^ e-$ww D 5 e % w  5 e-w r ww  N T ww rDCDpC (   wZw FN l wJ ~5 & E        ~5>wlYwfw Net@f " e  w6w.w   U7 U7  Ae vB7   % 55 a  a!PE -^%  w$ (  `e vWt vw,@ `e @  ( %e U? `e 7 U? a7 ?U ew dDE wZw FD5 l  5N ( !w5A vBB-  }ee@ !ۃ `!ւ ` `m^& E%PmJ%w w7~*'$!      7& A& BF7!W-7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w@(#)touch.c 4.3 (Berkeley) 8/11/830ptouch%s: bad option -%c %s: %s: does not exist %s: %s: can only touch regular files %s: %s: couldn't chmod: %s: %s: couldn't chmod back: %s: %s: cannot touch %s: %s: : Unknown error: %d*<LXj|-A`o~(Fe&Dt/Ie} *>Ret(;TvRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator   d o x f e g c s l L u D O X( U%$ &   bin/tr 755 0 12 7066 6024533447 5173  &4 e7cce7 /   7%   w P  77 77,77 .-e@ȥ-%! d  s @ c V L He@ȋ e wH%@7< 4&4& % # && 5 &@0& %@0&& 4& %5 C  & xp& j&  , B,  &H & 4&  > :d 4& %E02P N &EF - &; 7? $5 -7?% :& ߲:7tE& V 5   x. %  w w @ ;@ A@,+@&@-, jN jA1@   @p/ =-wh @ }p N j=w 2 A@ %\" @%0%7 tae % A@  A1@ ww D Lԋww D85U5_:5P_:  m@e4 ,5Ne &   uN 4USt%.5: 5F 5& & P% 45@e-4  % U5EU  wnE ww FD:5UE5Hw* _5uNfe &  % _bNe &   uN )U5| m- 5 &  %St%:  U   &  % S U _~ @_w DE%%"5   &  % U wv w ^D55@    3 8 4 4 4 4 4 ww~w  $.5+ n &5e-rPe % & P    * ww  5f * 7 f * 7wX@ m7.%e w       * e-ww D .5 e %wd  5 e-Jw > ww  N ww rDCDpC  f wZw FN 8 wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  RPU7DNU7:P8N0Ae vB7   % 55 a  a!PE -%N w$  `e vWt vw@ `e @  %|xe U?ff `e 7TNU?H a7: 24?,(U ew dDE wZw FD5 8  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `dm"& E%m%w w7 *'$!      7& A|& BF7!^W- 7J @(#)tr.c 4.2 (Berkeley) 4/22/856ZZ `e 7 U? a7 ?U ew dDE wZw FD5 l  5N ( !w5A vBB-  }ee@ !ۃ `!ւ ` `m^& E%PmJ%w w7~*'$!      7& A& Bbin/tsort 755 0 12 21522 6024533450 5724 @x e7cce7 / P  7%  w h%3@& @ 5 @5 N NefeBf e5%F%PG N Ne Ne   T `2% |   bP < 3 5   ww @ t-w  w @ %w~  w `D & (wR  ʋ  ` `   T N ; 0 0 w DC̋w ̢ w Nf l  ww Nfc (eww |% dp l  L~ N % w2w D  & l w%  w fef @%5 vw w Nef %ww Neff %w|w hD A555  ԋuNeffe %w2w DC 5 5 _,%%_N5 %*e5  AWp `eu 0u%l5  %h%[ e  _Neffff e   * O  A@ EN 5% % % %Nf &    %_ A@ E%Nf @wN 5 w pN%c%s%[Nf ff f& ew:5 5 5 5 %e%f %o%xDe5 5 A @ EN % % % %- Ԑ A @ EN  _%+_  _%a%f %A_%F_ % A@vN O% A@v@mAm@ vA@v5u0 %a%fW7 5`u`u C% S P Ԑ A @ E =%%.%e%E- *% ' $ ! Ԑ A @ EN %+%-%0%9 A@  5u% N  =   @e! @e! _@t@]   xNe A _Ne A @H@pHw .DC = 5%c%0u5 %s    %r%c5 %[r      %%   =  D- %cwF w . D ̥^   % %]%-+  $%-̥]4   ̠   %]  w w v D*\5% %-%+ 5 55 55  B5eA5 %.55  B5eA5  %E%e$%+%-  Wp B`e  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& ` e5 55w 6 m 7:"w D Lԋw| w h D% 5     |@w: 4- w  D85U5_*5P_*  m|@e4 ,5Ne &   uN `4USt%5* F5& F5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef @% FU4 4  fef @%5 wz ww7H w FD:5UE5Hw* _,5uNfe & % _,bNe &   uN `)U5| m- 5 & %St%  ( U   & % S U _ @_w DE%%"5   & % U wv w ^D55@ F   3  4 4 4 4 4 ww~w  $5+ &5e-e % &      ww  5f  7v f  7wX@ mL7J@%e w  *      e-ww D 5 e %w  5 e-w  "ww  N ww rDCDpC `  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f Ze  w6w.w   U7U7 Ae vB7   x%r 55 a  a!PE -:% w$ ` `e vWt vw@ `e @  `%e U? `e 7U? a7 ?U ew dDlE wZw FD5  5N `!w5A vBB-  }ee@ !ۃ `!ւ ` `mD& E%6m0%w w7n*'$!      7& A& BF7!W- 7l& & e Ӌ  &76& e $ӕ-ӕ0B~ ӕ.  ӕ0~ B~&7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w&w Nefef 5& 4e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& ~eww  fff 5& ~eww  5 %O N  = *555Ne5& e5z55'0Ne5 B& e57 Be0" 5%z55 5 B5@B e* a=%*7*w %z5 B5Ne& e55e0%z7`Jʕ0%*ʕ1  %*˕0 ʥ9 6@~ 2@(#)tsort.c 4.2 (Berkeley) 10/20/82rcannot open %s%sodd data%s too many itemstsort: %s%s cycle in dataprogram error ((((( AAAAAABBBBBB zz8do*xfegcslL@uDD"O.XVU=(\%c5 %[r      %%   =  D- %cwF w . D ̥^  bin/tty 755 0 12 7704 6024533451 5360 @tH e7cce7P /  7%  ^w  % %@&   ,(   ^wTw @Hfef %5 w, w D Lԋw w hN  HNef ?@E% 86 2 *L-6x  ex  Nex u-u- xwn  w PD 4 4  w@w , f  %  P <4 4 ww D 4-&4-!4 4   &e & %4    wme   s lt  &wwwЋ P ы A@Pwxw  $<5+ h &5e-Je %, & j    r ww ~ 5f r 7, f r 7wR@ m7<%,e w       r e-ww D <5 e %,w~  5 e-dw  ww  N bww lDCDpC <  wTw @N wD ~5 & E        ~5>wfYw`w Net@f 6e  w6w(w  lU7^U7TRJAe vB67 8  .%( 55 a  a!PE -% w < `e vWt vw@ `e @  <%e U? `e 7nU?b a7T LN?FBU ew ^D"E wTw @D5  5N <!w5A vBB-  }ee@ !ۃ `!ւ ` `~m& E%m%w7 *'$!     b 7X& AH& BF7!*W-.7w 8uDAB %u f& & e w5 5  W- W00~u5  .lu4Bw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  ww D:5UE5Hw _J 5uNfe & (% _J bNe &   uN <)U5| m- 5 & (%St%H Z  U   & (% S U _ @_ w zDE%%"5   & (% U w. w D55@ d    3  4 4 4 4 4 ww6@(#)tty.c 4.1 (Berkeley) 10/1/80-s%s not a tty/dev/ do x f eg c slL u$ D O X6 U7H w FD:5UE5Hwbin/uniq 755 0 12 12634 6024533452 5533  e7cce7r / T  7%  N w _~T&@& R% @( 0 %`8@& R% @: 0    N     N   7      N   7 V@S @  7(@7 e%_@-+_T  7w D%w Ԑ  | xT %  w D c d  u |7 v? p;dL \ 7 Z`& <    5 - ?% `& `  wF w 2 DC   5S ˋ w w D  -  -̋  ̥ ̥ ̥ ̥ ̋ w w Nfl % N w w DC+ 5 v  a  r5 w: wR U5ff r%̥a &  ~e 3     U̥r 33w DC E5<E@e33. @;E  5 , @;% & fE  5   U3 3  w w D      + - ̥9 Wp @@`e̥0  w w x `fef %5 wd w L D LԋwD w 0 D85U5_5P_ j m`@e4 ,5Ne &   uN , 4USt%T5`  5 l  5& & x% 45@e-4  % U5EU  wE w D5"E@e44fef %  U4 4  fef %5 wz ww7 w FD:5UE5Hw* _5uNfe & R% _bNe &   uN , )U5| m- 5 & R%St%`  U   & R% S U _ @_w DE%%"5   & R% U wv w ^D55@    3 p 4 4 4 4 4 ww~w  $T5+ &5e-n|e %D & L    b ww  5f b 7 f b 7wX@ m7T%De w       b e-ww D T5 e %Dw`  5 e-Fw v ww  N Xww rDCDpC ,  wZw FN p wJ ~5 & E        ~5>wlYwfw Net@f & e  w6w.w  N U7@ U76 4 ,Ae vB7   % 55 a  a!PE -%  w$ , `e vWt vw@ `e @  ,%xte U?bb `e 7P U?D a76 .0?($U ew dDE wZw FD5 p  5N , !w5A vBB-  }ee@ !ۃ `!ւ ` ``m& E%m%w w76*'$!      7z& Aj& BF7!LW-78w 8uDAB %u f& & e w5 5  W- W00~u5  .luLBw* J@B |_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w@(#)uniq.c 4.1 (Berkeley) 10/1/80rcannot open %s wcannot create %s %4d ((((( AAAAAABBBBBB j doxfegcslLuDOX,U 5 , @ :% & f E  ww D:5bin/units 755 0 12 20070 6024533454 5714 (G e7cce7I /   7%  dw ,% @- e :I%@= 7I?   d  X LET  Ne   @aAap  % 555 H4&_  e @5&f e  Hm  Ne tNe t7 ^HI  Ne   DH}  w vD & e   `& %P % 5> 6 /0 ( $5" -/?% & /   ` & %P %   ߬ 5 - ?% & x wrw ^ _5, H -B : 654& -&-?% & - @ (@ (Nea  %6 @e0? ߦ &5 -@e0?% & n @e0E& wT  w 6D `0 %  R @ 5 5 Be 8 r y     Ґ     @e Bef& e5P%/ % @wz     w F D@5N    e Ku  `&`p %  %9   Ku  `&`ep % %2  wu@A H ȋ Wp qf55@ 5 Wp uu @ @- s=_N  w DCԢӋw w  025 5ԕ*@eaԕ*N r@ @m %   2@ 5*02f  % C<     te%02B Bw(%/ %   @5% 5% 0% ,T 5% N  os 5 @mAmp %  N  M r5 @ _x5 @m5%_x  _x % @ (_x@ 5 %  _x@ p&_xN  _xw 5 % % %0+%.7  %+%-5 %-  %0%  @5) %%95 BD@5  h%9Wp Cae5 B5  55555%| &5w 7@5w v@7 p@w b@ \@@ EH@ P %%6@   d w b  C Wp9@@`eˋ   rYBWpDe< w( f e%02<w   X ?w w fef "%5 w w D Lԋw w u@t5I5I@ 56JNefef  % (3A@u5BtrI2I@ Aup6J fef  % u-u-u-@w $ lwP e& 7 7gw" w D85U5_ 5P_ L mB@e4 ,5Ne &   uN B4USt%5 (5 (5& & % 45@e-4  % U5EU  wlE w JD B +   r= wB w,5 a U5ff %ށ̥a &  e 3     U̥r 33ww7< w FD:5UE5Hw* _5uNfe & h% _bNe &   uN B)U5| m- 5 & h%St% <  U   & h% S U _ @_ w DE%%"5   & h% U wv w ^D55@ (   3  4 4 4 4 4 ww~w  :$5+ 9 &5e-d:9e % & B:    x ww  5f x 7: f x 74wX@ m9799%e w  9 9    x e-9ww D z95 e %wV9  5 e-<9w  ww  N nww rDCDpC B  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f <e  w6w.w  D8JU768JU7,8J*8J"8Ae vB87 8  8%8 55 a  a!PE -7%J w$ B `e vWt vw7@ `e @  B%n7j7e U?X7X7 `e 7F7JU?:7 a7,7 $7&7?77U ew dD6E wZw FD5  5N B!w5A vBB-  }ee@ !ۃ `!ւ ` `V6m& E%zmt%w w7<5*'$!      7& A& BF7!W-7& & e Ӌ  &7z& e hӕ-bӕ0B~Nӕ.  ӕ0~ B~&7" & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B V_@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  w&w Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& `eww  fff 5& `eww  5 %O N  = J555Ne5& e5J55'0Ne5 B& e57* Be0" 5%J55 5 B5@B eJ a=%J7F.Jw %J5 B5Ne& e55e0%J7K.`Jʕ0%Jʕ1  %J˕0 ʥ9 6@~ "]'|:,̼o P1_p6A67jl;nO#= p=ף > BCCzE%tJ$*tJ$/nO(k3hT8 ,@(#)units.c 4.1 (Berkeley) 10/1/80/usr/lib/unitsattofemtopiconanomicromillicentidecidekahectahectokilomegameggigaterarno table you have: you want: * %e / %e conformability underflow or overflow %e %s*%c*cannot recognize %s %d units; %d bytes %sredefinition %s vJJJdo xfegcslL"u&DOX8U=(\aԕ*N r@ @m %   2@ 5*02f  % C<     te%02B Bw(%/ %   @5% 5% 0% ,T 5% N  os 5 @mAmp %  N  M r5 @ _x5 @m5%_x  _x % @ (_x@ 5bin/bc 755 0 12 32666 6024533456 5156 "h! e7cce74 /   7%  tw  Z V5 F5% % %\%z_r%a_r 7%a_`%z_`%i*%f'%hh# %oX J 5%a%zw0@_\%w%f%s%q %r%e%b%r%d%e%s%c%b%a%i%bz%o%bj%d %iR_%a %u8_%l %e_%q%u  %Fw(w@ 7%0%9%A@ r y 7 %+ *$ + - /_ = ^=X_+= %+ %-= %-< => !  67%* "%* 7%/_Z%=_*%^  %w    5%"? _\    _   _ _ _ _ _z _f_w l 7@-@wf@w F   @ E `Z5P%5 -|e-v n7 X T mP&  7b 7 .8 m47" ww @e5ue` \Nf %%2<  ,e&e@ ? e w@w"w  N8  %%2  Ne N ww N E z 8ww G N NI  z 8 xwtw `-O fX ez 802.7 .7 ,w"w fp fevntfr` feTNww @fw fe.&|fz fe ww ~ h w w&  7  n 7 7w0w  z 8 ~ww @ eww @ eww %;@-5d@ceN f | @l  z 8 @Ne  *  N N N Nf | R  N N N   Le  Leww 6 7 7 Be2e@e  we 5%,  77 m%@ 5 -~ tC j d  5%, H <7>7 8e%@ e -@5  H C xX  % e5%  % @ _^  5@e ֆ_t n_t b_ @  D@  5@7bu@ 5@ b 5%   A p @  @ v_^ x` 6_^ r &$& fe  h 88 6 7,7*_^ & f%_^   f _^  &  fe_^ & && fe_^ &&& fe _^  &&&& n && fe_^ LF @ &$2 &$&" &$ & &$h$(_ ,&&*._ 2&&0_H 4_ 8&&6_H 7_^ :_ =_ & h ?&&_ && fe h A&&_ &C&& fe  h I&&F& fe _^ K_0 MJ _^ O@ _^ Q6 _^ S, _^ U" _^ X _^ _^ &_ _^ Z&\^`cfi_ npu&r_ wy{~ &_ &_H &_H &_H &_H  && && fe_^  && n && && B & &&  &_ _ _ _ _ _ _ _ _ _ _ _ & &_  & z & _ _ _ &_H &_  _^ _  _0 %&&&#_n  *&(&_ 0&.&&& &,& fe_^ 2&_ 46_ 8:_ <_ A&&?_H D_ I&&G_H L_ Q&&O_H T_ V_ X_  Z_ ? _^ v _h ?\ ? %[e%a{%\  r  _^  7lml 7d 0 _^  _^  4_^  7_^ )w  w *J w~ w zfef <%5 `w w D Lԋw  e& ;ew w u@t5*45,4@ 54Nefef % (3A@u5Btr,42*4@ Aup4 fef % u-u-u-@w 4lwP e& 7 7 gw" w D85U5_5P_  m@e4 ,5Ne &   uN R4USt%n5lz 85h 85& & % 45@e-4  % U5EU  wlE w JD B +   r= wB w,5 a U5ff %ށ̥a &  e 3     U̥r 33ww7z w FD:5UE5Hw* _5uNfe & x% _bNe &   uN R)U5| m- 5 & x%St%z   U   & x% S U _ @_w DE%%"5   & x% U wv w ^D55@ 8   3  4 4 4 4 4 ww~w  $n5+  &5e-e %^ &      ww  5f  7h f  7wX@ m>7<n2%^e w        e-ww D n5 e %^w  5 e-w  ww  N ~ww rDCDpC R  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f Le  w6w.w  5U75U755Ae vBr7 t  j%d 55 a  a!PE -,%5 w$ R `e vWt vw@ `e @  R%e U? `e 75U? a7 ?~U ew dD^E wZw FD5  5N R!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7*'$!     x 7n& A^& BF7!@W-!7,w 8uDAB %u f& & e w5 5  W- W00~u5  .lufBw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   wN00orux{~ &Bv; \b&XMLT+~G!)'q("*Z[YVWU,"+)'+(e*+)'()*]*""%,#cda`^#9 oI,$,JK,u## p+)'(*H} 2 >S,S2+)'(S*  2S -  >, S.:   O QRPO C?QRPs QRPO QRP01345678<=s 345678QRP+01)'(*345678/;@D01345678,<=345678345678345678EFAB345678345678EFAB345678345678N_+)'(*fghijklmnrtvwxyz+{|)'+(*)'(*,+)'(*+)'(*+)'(,*,,r,+,)'(*,2) l'l&%lllllllllWClllllll$l"lll jt\MlllllllllllllA:2/llllllll^ll ll4b a_] [U@ZT RC    { ~-(? _ ;+-*/%^=[((=(==~(((),[))}(=([====[[){]]),[))(;<>   ));=])]]]))=},rT efgpppOS\lmn()sw9< !"#ACEGIK&%^3Tefg:BFJ;DHLRPo124567 NhjT0q^Q[tx8MZ'UV_`abcdY]$=?ik*+,-./8>@ %u%WXvt ^ ^  ( 4 X ~   $ 4 < N V h r z &2<FPZdh n^ v^ "2F $,4<DLT\tXdh jrx^ v^  ^ ^ @(#)bc.y 4.3 (Berkeley) 85/11/28 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14abcdefghijklmnopqrstuvwxyz.string space exceededrcannot open input filebundle %d elements at %o bundling space exceededroutput(%o) []s%s teletypec[%s on line %d, %s]pc SLs.0SLs.rcannot open input filequnrecognizable argument /usr/lib/lib.b/bin/dcdc-/usr/bin/dcdc-yacc stack overflowsyntax error0Qps.[]Ps:ls;:QQ0Q0QkKkiIioOofYc s.s. S+-*/%%^=><!=!>!< 0!=+- 0-*/%%^;ld1+sl1+dsl1-dsld1-s;d1+:;1+d:;d1-:;1-d:Kd1+kK1+dkKd1-kK1-dkId1+iI1+diId1-iI1-diOd1+oO1+doOd1-oO1-dolxlx . . .l.ldsldsd:;d:ZX?vLdkKdkdiIdidoOdoKIOlprogram too big4554do&xfegcslL<u@DO*XRU & x%St%z   U bin/egrep 755 0 12 23476 6024533457 5674 !v e7cce7*| /   7%   w N ~% ww  5 r y HE B? =%^V Lpt B >5%]`zpt@ 5 l@7 z     wJ @        5 ~y 5%^ v5 - _Nt_ D5_25tu_%^  pt  w T x x x@ Ex F5% x  w x x@w  ~  ww %^z p p.Gd 0 IZ 0 LP Lww N  "xLww %^   p.G pI pL@ bO@ bO w@w ,%^ : p.G pI 0 L@ bO ww  ~  ww @ I7 Fw 0 zu -BN NR V @ L@ I @ I @ L w^w J7 v@ 0 zu -   zu vLB @ A pzu6x - hvdvdv7 p E V 5 5 _@F_ @`0t %@ E 5Thv v  p6xzu -@ E 5l _0@l 5Tj@j .G_*%@at_*% % @`t %_%"@j Lt5p@j L 5n @nt@at n B-p:%3@j Lt5p5 r@j L 5n @nt n@-r B-p% r@@mrt r%r  l C-h_ @at_tt  p6xzu -@ E 5l _p@l 5Tj@j .Gg%  @j &L& % & %@j &L& e  U! @P% @P.@j R 5Tf@j R 5d @d T %zu @d T zu s d B-f l C-hN  3% NE V ` %zu@F@tap %_< u-_w@tarw d@ I#@ %zu@ zu r1@ I  '@ %.G@ L@ %.G@ I  @ L   w@ L @ I   w @t  t @-@ w  w d  E -qT E   D-w@ T %zu -q7q w lmq% @ @mkk klqT %zuk k0T -Tww  -D@ 5bO@ .G +     wpN N @ p-I@ L   %zu zu pw E x p?7 < p9 p6 e   lpAw|ptp  7Hp7dp ~% ) 0p ,p (p &p ́e@ȥ-b  ~ wo e   wo  o   N e o  ww 8 _*  f  7`o_. N _ NeDo r   w`p XpTp  7FpN! ~%_, 7 n p n n7 n7 n7 n7 no5o&n %DCÝFF_LtE@`F_Lԥ  fn_`eLnw Fn5CFG omo!_vo&6n %_"n ` n%nNL  mmP ewBemw memw m5CF _Lnmn!_n&m %_4%m  vN>  Zm fm`mB Fe Hm 8m2mG ,eD-+ipne  -'@?z %  h d& X  n mn@-Ά <π5<@ E&   - $@? %  &  5!_: Ҁ5@ E&tm mlm!dmbm&"l %_ _ Dm me%@ e -@5  H C x<i L % Te5% J %@ J_6 5T@e ֆ_L z_Ln_b@  D@  5@7(iu@ 5@ b 5%  J A p @  J@ _6 xD 2 _6& %7h_6& 7~h 2   & 7&h_6w ` fef %5 nwL w 4 D Lԋw, w  D85U5_5P_  m@e4 ,5Ne & r  uN 4USt%v5 5 5& & % 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff %ށ̥a &  e 3     U̥r 33w D5"E@e44fef % U4 4  fef %5 wz ww7>f w FD:5UE5Hw* _5uNfe & % _bNe & r  uN )U5| m- 5 & %St% \ ~ U   & % S U _@ @_Dw DE%%"5   & % U wv w ^D55@   ` 3  4 4 4 4 4 ww~w  c$v5+ c &5e-cce %f & c     ww  5f  7pc f  7TwX@ mFc7Dcv:c%fe w  $c c     e-bww D bv5 e %fwb  5 e-bw  xww  N ww rDCDpC  ( wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  ap|U7an|U7ap|an|aAe vBza7 |a  ra%la 55 a  a!PE -4a%n| w$  `e vWt vwa@ `e @  %``e U?`` `e 7`n|U?` a7` ``?``U ew dDf`E wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `_m& E%m%w w7d_*'$!      7& A& BF7!W-`!7w 8uDAB %u f& & e w5 5  W- W00~u5  .lunBw* J@B |_l@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   wd(4Tn t z h b               ( )   LXX`ttt@(#)egrep.y 4.4 (Berkeley) 5/29/85egrep: %s egrep: syntax error egrep: regular expression too long something's funny egrep: unknown flag regrep: can't open %s egrep: can't open %s egrep: no memory for %s %s %s:%ld:%ld:%s:%ld yacc stack overflowsyntax errorV|z|z|d~oxHfVeHg"c.sXlXLuDOXUe-e %^ &      ww  5f  7h f  7wX@ m>7<n2%^e w   bin/install 755 0 12 37266 6024533461 6235 0 L e7cce7  / r  7%  )w <,n- g m o s F@ ? ch V d N r7b@ P D ff %5%  5`%   7   #% )  7  - #% )Ne@ @m5& ~ 5@E%@ ff X%e}- )%  FNef ~ NH #% )@E% Na #% )u-u-Nf #e )N  ff X% )wD*w 0*< f %NNef ~ N #% )@E% N #% ) /f T 5 NNf e 5 N  f $%5  l N " ) - & f $%5N   l N " )Nfff eN ' < N p 0  ,  $     &f % f    l N " rN '  N   & l N " )w,(w (   * x 6 l D "  fPE e V l e " ,Ne %  w'w 'DC"fe ,%  k l N " hfe& $%݀%  | l N " 2w*'w 'D t@`e k w&w &  )w&w &  l  )w&|w2&{w,&w &D @  % Rw&w |&w- @m7ȥ- > - 7%:f 6 (z r l  f l   l  B 4   4 ?w% ̥:7 *+ w-   f l    @m7-  9 E5 @@l ww %DC E5<E@e33. @;E  5 , @;% & fE B% 5  &U3 3  wn$w Z$  <.  7 $wD$w 0$  *'7 w*$w $DC  ̋̋w$w # >.  7 E| %7(:& r 7:& r  7:& r  & r  %,& r ̋ wT#w @# @  < L  w2# & 5 ff L% 50  8 w "  uN 2%5&f %5w" 5  f %  0   w X" p  @e5ff l%5w," 5  w-   4 w !  $  & p %7\w!PN %B\5of  7z w f! 0 wl!w X! t  wZ!whw :! >8 7 0  ,& *'7 w !w !ww!w   @ E w  X5% % %   6q  7t&  7w&   7pz&   7X}&  7N&   70w.&   7w&  7&  7&  7_ w   w  P7 J  55 ffp R e55V  DF@& "%e& "%e& "%e& "%e7w   _N %_>_ 5 & f $%5=r 5u fff $e5 #u 1f $%50 :=N 'ww D      + - ̥9 Wp @@`e̥0  ww D5 5      + -! ̥9 f& ff eee@ ee@ 5u̥0 A@  w A@wlw D Lԋww DC   w5 7@  55@- 7 5!w fDe LN 2%4ee   2%4e Be v Nfe %ww -@ wN %e& ;eww  BuNefef ,%=@@wfЋ Ћ   Ћ Ћ &w wjB`I I7@Iw  & f eww>yw8&  4  b '     ` TW ~  s`K6!  w 0D85U5_5P_  m@e4 ,5Ne & )  uN )4USt% 5 &5 &5& & $% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff $%ށ̥a &  $e 3     U̥r 33w 4$ ) > w5 4@E%@EU5N&e %  &e $ Nf&e $%4 IN&e %  &e $ Nf&e $%  (Ne& )  ff eee@ 4t@t"4 4t ' $+_w N '@ 'N $+ww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t   ve@ 4tw"w D55ff %f&& "eff&e e &e  55 www5 5 w D5#5ff T %f&& eff&e *ew6&e '44  && ef&& $e&e & ,%%U w D5_o5ff %f&& eff&e Ze L&e 8f f ff&e V e 744  && ef&& $e&e & ,%%UUw @@m e%fe R)  &e  55 3ff `%f&e@ &50c &e  55 3  # U44  && ef&& $e&e & ,%%&_fffffe e _&e % __e_  mm@ e@ f& ef&& $efe& ,%%_ _w @0 0 @0 N 7^7Zww D85_Ne& )q fe Ve4-4-/44  &&  ef&& $e&e & $%%&e R) &e  55 ewvwrw4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t   ve@ 4t4-4-/44  && ef&& $e&e & $%%&e R) ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& $e&e$& $%%&e$ R) `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& $e&e$& $%%&e$ R) `Btp$t t"  ff Nef&& $e&e$& ,%%Uw w r D5#5 5 ww wX  @ a@ a@m5A a@5w  D 5# aB- f a@m& p"% w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5ll @Et5l 5l u te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm "% a@ `` e w D a@@m e  w e  aAm HN@`@m &f "%  aN f`f "%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef ,% &U4 4  fef ,%5 w    6v&  @ppC`p   6@Cwzwtw D & & & $e 4E05Ew7 Ћ P ы A@PЋ w FD:5UE5Hw* _&5uNfe & ,% _&bNe & )  uN ))U5| m- 5 & ,%St% j ) U   & ,% S U _j% @_n%w DE%%"5   & ,% U wv w ^D55@ &  ' 3 $+ 4 4 4 4 4 ww~w  $ 5+ 8 &5e-^e % & <    ) ww  5f ) 7 f ) 7bwX@ m7 % e w       ) e-ww D t 5 e % wP  5 e-6w *' (ww  N ,ww rDCDpC ) R) wZw FN $+wJ ~5 & E        ~5>wlYwfw Net@f )e  w6w.w  >(U70&U7&($&Ae vB7   % 55 a  a!PE -%& w$ + `e vWt vw@ `e @  +%hde U?RR `e 7@&U?4 a7&  ?U ew dDE wZw FD5 $+ 5N )!w5A vBB-  }ee@ !ۃ `!ւ ` `Pm& E%m%w w7*'$!     * 7 & A& BF7!W-07w 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_.@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& B% z   5 , @ :% & f E B%  (˥-%0     ,:% &  B% 8 5E& z   5 , @ :% & f E B%  wcg:m:o:sinstall: unknown group %s. install: unknown user %s. install: can't find %s. install: %s isn't a regular file. install: %s and %s are the same file. /dev/nullinstall: can't find %s. install: %s isn't a regular file. %s/%sinstall: install: open: install: chown/chmodinstall: unlinkinstall: fork/bin/stripstripinstall: execlstripinstall: write: install: read: usage: install [-cs] [-g group] [-m mode] [-o owner] file1 file2; or file1 ... fileN directory : illegal option -- : option requires an argument -- /etc/grouprrD/etc/passwd/etc/passwd/etc/master.passwdr: : : : : : : : : : /etc/passwd/etc/master.passwd: Unknown error: %dlt~$6HZf| ,;Jbo1N_~@Wv1Ij  1 @ T j  B W RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired 22-d-o-xr.f.er-gL.cX.s-l-L-u-D-O-X-Ueff&e e &e  55 www5 5 w D5#5ff T %f&& eff&e *ew6&e '44  && ef&& $e&e & ,%%U w D5_obin/struct 755 0 12 552 6024533157 6041 #! /bin/sh # # @(#)struct 4.2 (Berkeley) 83/12/19 # trap "rm -f /tmp/struct*$$" 0 1 2 3 13 15 files=no for i do case $i in -*) ;; *) files=yes esac done case $files in yes) /usr/lib/struct/structure $* >/tmp/struct$$ ;; no) cat >/tmp/structin$$ /usr/lib/struct/structure /tmp/structin$$ $* >/tmp/struct$$ esac && /usr/lib/struct/beautify &ww ,b ww 7 J5   r4 I7  ` T  ` 5  3 $ '  .  / ? \  I   Cm5  r y  w-n6h-#` # w-Hw@-+  !%?_j4-$ %/e-  &  _j_j 2 ؕ<  _jQ _j-h ^@ `-Vl -L ' _j  _ .1 /_   `7  7 G wn _j  _ _    %% %H _& _%/_"w-_j-"~ ! _w Z Zww ww L_l _ r_ D_ _7 +*-_+ m77--  _F _8T_8   % r y& 0 b_ r_  l  7* R V $ R9*6 Z 7 *)- -7 * *_-z)_^p) 2 , $      j:  87  55z V ~/ %,_7Z %;,7%,%% 2,.* / %: . X B_% % %%_ %_p_f l & $. _p  l ^ _p . d h o_ l V l_p l  ,. .%d; /       5   h) N N /P _p7 @"_p  % %%  7L( V V R9 0(ze_^ _% l, l   V  B  _p -%x36 l r  &E &%E   '  V7 ' _l; l  & _p@ l    _l _G l R 0 7'  V \ R9'Ne6 Z 7 &-6 _l-*,_l  _lN l j  $  V%-e _pS l  _B ,%aD + ,%p X  j & $. _p\  f p+ 0   ,  &  BEp.%_pa_  v+%u f l  ҂k l $   T v e &_m l v7 ^%_l +r U xr l l &  ~  V  |@_p _p N* *%ev  H j Qc   7 $ &"  ڎ- y d  8+%_p l l      s 8  > ҄ y!  : )%e_ h) ) c. wf  4  # n "-B D t  ( x e*_   e f  "E &%E   # b b x" n-  x7 ^#_l  l - e b V (%!  D L( ֹ ޹_p & V! _p _p-. *_p-& _pe7 _p Z( e$ h+ oJ tX uXv%sl l V _p7 d"_p l z _p l d   n v & &  e  T_p l " B h) _  l   |    $ _p_  B'%n& & 4' a m   _   _  l ^   +_p l 8 ڞ_ l e_Z J_  l_ l   v&%! & %  ֹ ޹  %q_ _p ._p %% %   Ýh e    h 2_pD v x! %     -R  e7870  " ;% _b t . _b _b _p  %F  b ڞ _   V ֹ _  ֹ  n s & F! e  Tq_l 4$ $   VN "_  "   Fw    |-  | ԅ N (_p _ _  _ _    &  % _  _ _ _ _   #e _0 x _  _B _L   \#%q_<_@ _ _   l t_ q_D _H _ _    l * ~ V _ B_p _  _ (_  q_H _ _ _ _ __  _ _ _  _Z  _h  _7 _ _^  _ _  _  _ !%a_x l  # _l _pw ڣ B  ! 4040($& ww Р m )   7') ִ ' ִ D e ښ 7wdw P 7 |2 +! - ^ l p! 0 6   %7 w .   # 7   T   " @zw -zrl X ^ %  ww v Z wv  - 7 n   w >  7 N7 d7 ^7 ^ &w0w D 8N& x  ww  $   ҂    buw̞w "  0  %" ww w2pK ww x f %wtw ` f %w\w HD7^ 3     @   ̋  3d- (s0    >%3 33,  ww  7 NE &% s B s 3 J J* M X (j  %:  J: ~ Tq%: n tww &  %- xQ  K   s  &! 4p Du iww 5 w L F d :% e777   M- X{     % e7h  Beee(ejehede  %6  P"#@ww j d 7  77ww r 0  m  @ 4 ڞ6 mt @ 9 ڞ e ښ  -J tww 4z Q  K ,u ^ 7 RH De-<& ,e e&  7e7-7 7:74 ^ - te~ 5 7@ 7@ 7@ 7P -~7.  vww ڙ  7 R Dwƙw "      "e78`! Z 7 ww 4ex  q4x ִ J ; ?4 , " ; b 4& ִ x e 7 e7e7^  +w@w ,   .w7 AwpuF7<%=-v-t8 p4 @< > x: $Nm 4 5 `%vB N ִ x  e- Hqwt Bx  ,pw <5 : h %4/    0 %/ j  n   0 {   @ 0 %7B 8fe ִ @e5_' u  5 =Nef b3 5%_' Nef uu  5 5 u-_'u-_'44/ A@@mAm@ f& Ўe5ufff e  N4 |4% N4 |4% A@ee@ 5u ʋ n  "@4/-A@e@ 5u_$N ,5  n  n  ʋʋ4/  @ex5ʥ ʥ @e@- ʋ= ʋ- E7X 0`fe ִ 'fex  2E  V  D- ;fe ִ Nexfe @e7``7 \ N Jw@w5 2@e7&&7 "  7  N wwnN ,5 _\$  4/  w6w "     r~  ww w ^o7 7  5 @  ( + - . = ^  d   Wp Ce`   e - p %=e%     %7 |v v-r$ e7\7T ,׎ .) wʎw DC  * +/ -  ._J* =_J* ^8wp w-[   @7)-> -G wpb w`-O e 7`:-~zxr-tplh-f^-VP_*%/ ,: ; -7  %=  @7%= 7`%. k     NZ FE % d  e 8+% .  8+% e7 z 8+%ww %P^(R r-  bww D <C ; b  Z e!wxw d 2% f bwZw F 4 d    77 hf%8* x `7pe7e\Z7N `7J@&  a h_- i5e5 %$B- N N ^ 7T 5e7b%e7. R&e $#C-N ef  D 7`: 5`*e7 `7wN %w7 ---wTw @  x@- -- w g @ ~ EE@ ee-` w #  h"5, [ l%    D 5 *:A*WpAm, 0A*WpAm,N6  A*WpAm,N6  A*WpAm,N6 _ *A*WpAm, _&0 FkDe H 0 %"H  V N,& & g Ԑ % ?   De0 Ԑ % 0 %" #@e 5*f&u'5( fe ִ @e&@e5.N,f.fe0fe *0ew·w DCB %% !  `0 B& &! !  & F ` & 0 `&   ̋ 5 MAWpAm @ AWpAm AWpAm N& 8 +AWpAm "AWpAm N& AWpAm AWpAm 1 _2u AWpAm  AWpAm  _2 AWpAm u%0?  6$3. && & ܂ ee $3@`e%P  ִ AWpAm  贀 7` ִ AWpAm  贀 7`  ִ AWpAm  贀 7`tAWpAm 1w4w wV7 %fe@& C%`^u@e7Nw N eu-w&wwww 6 & f %5N Nef ww@w,w | v ff ef& 0e5uL ff :e7,w*w-&w-  !ww fff e f %7߀w|w hD%f %7.- 7 7 %` ,+ -! 7`vw`tw npf %7\N H wh% $* $w N  7 ww ww  %wxw d r% wb%  E    $9w   7ww   7ww 4v7 p"d `Z7 TE4 D.xK& %7w  wKxK wK V4xKxKxK xK  7 0N xK& %4xKw  x5%ƃ 5 R_D8 _D8  l^  ڞ M7 >@x _<8 e 7Nm %3 ] .P 0 ^W 5%?%07  B    N  1   %7 w| % &%ve w\  %  ( .U L7  %%  4@x "  Rx 8 7ӕ 0-,ӕ x ִ .b]ދ w DC f ִ w~ 7rfҀ`   w ~ J   b%(w~w ~-7  N ;4& 8 7wx~w d~4%_: : 7 \$9 ִ Ne$9 (N- $9  T : @E%@7 J7 H$9 $9 ښ v  r U0@$  r  $9 | 7ǰ $9 7ǠwD}w 0}  n J $9 .7  v L9 .h ^w|w |4 f ; fE  ef ; Bw|w | 4 Vf ; E̔ԥ $4etE7`@wJ|~ef ; w |DuECtE%[ 7~-pKw]n7 p@w]dbe99 R b9> <%7 :709& <% $7   b; <%7 7;& <%e;wX{--  b= <%7e=w {  f& F b;2 <%7 . , b9 <%7 % b= <%'  o7TNn(T eE7tE %[ e 7  & 2vef&X eh e %. b%!? 8$9 ? ,ee-$۩ W7 &  e' b%%wnyw Zy% 7 wVyw By%*$9L9 ִ L9 ښRL9 | 7L9 r L9 7\  f uef&< ex( %%w wxw x  H@x E  5   % p wjx CtpPHt`w >xDe te>w(xte~<w xD@ ? 33 3  r eH& rft@T@ > d7 www wH %%ww w hw ~ B7 P7 N@ ?7@   +  s X@  )@ ~A "    +  s   F7@788A Z  n@ ~A 7 " ┷|wzvw fv@ ?wfvw RvD ? wPvw 7e7ß wuw uD  ? ?j z    DJ  > rjm$e7d7 Z7 T4fe ִ  ; -?2-&4 ִ be- QNe4 ִ wtw t9 ?8& && & % %0wtw t4b   3 >3 |te7pl h ^%  T?TwXtw Dt @b6 > & w tw tF7 7 @ ?7 =@  Dԕ 4ˋ@@m! Ԕ@ ~A  zOwsw s 4& 5  ( 77Wp@ف p~`db^WpBe~vWpCe~ ePPP P%ƃ>Ԏ \W N ; ' $$% -" F*DmP5-wFۀ 7J2 2 f O &f E%Ӏ -Wpe~fWpA~a^wDrw 0rAWpCe~5 )3KE f F 5 f r N j5 wq%T$ a -f ,%XN $)%%0 a-& j -R a & r )w HqAWpDe~5 ~ @-SmRQ 7`d 1 X. T+ D<ڀ 7 @m-*$ @mwp 4Q%U N& xG% wwm4w lpDC `-_I _I փ  & s  D% Tq_I-f_I-$ _I* & s &  D%%5 @ R  : D% _I_I & stj%dXՀ &&P `e& D%_IO D%&  ~`e& D% D%  D% & ^ h *`e& D% FԀ & D% FԎ s `Ԁ 0& D%5@ & "J  _G _NH5 Nf I%w0nw nAWpDe\WpCe~ LmU me#Lme Zwmw m!fel %DCm   Aapl! -fC  Aapl! &! 4p -4 TqwXmw Dm.@ @  %<& K  K@7wlw lҎ Jwlw lDU     Tq ^ &  7r@7~ : 2& R D% Pa7   7r@7> :%%  77t 4p w0lw lD %F  E!fel %BՃa   Aapl!    Aapl!Ԁ &! 4p -r Wpe~f -wkw lk _rM -8-- ҒԀ 7X Wp-v~ hb  -Z TE Wpe~@`Wpe~PPP -* - Wp-t~WpA~@Wp@l -TWpAx@Wp@lzWp1~wjw nj 7 t V  -˜ tA >7 `  j 67 J- n.L k  V V f-vcz + 7 b77 pO E5R *S-Wp-L~'UWpN~ Nw-ʾʄ  77 Fn t WpNx *S VN ow(iw iD5 N ,$_0Q%_0Q _0Q ?  \4fe ִ   @ 6 Wp1!~ e-7 U _P-Ne  ;Wpe~fWp^,)Wp1!~#  * wn TqU \7 WpA~f& 4Q%Wp1~Wp57Wpef V- WpAa -f >/WpE E && E%WpefWpA~gDWpDle -% _pO 3-0 ; a - \D dWpDl Xe-%w@& Lp -%Ne w  Tqwfw f _R   AWpU_R f sbp%iBNff: We& D%hT D%f  fWe& D%x & | BWe& D%  J D-& > H We& D%hۨ &۩ fN D% D-Nf R Nf T w`ew Le!fel %DDmC   Aapl! -D  Aapl!8 &! 4p -wdw dWpN~ *Swdw dD . N JSwdw dD~ %_T_T%_T _T 4fe ִ  ! e-x7 *U d_ !,N  !53-JNe 6 m" ;-&5 P2El -d. FA@`&& E%le %<  *ɵ-ĭ m& Lp -Ne w J TqwDcw 0cDCWp1~ -fwcw c 5 -R_U @@m7 6Tum5  5  5 -P-H u- @@-0 - *% @@m- Nf \W %ƃ u-.f \W 7 HwFb % @@m-n @@m-\,V@5wH % @@m.Á @  @@m-x' $ !wçDDmCWpe~fWpe~@PPP -CmF``Wpe~fWpe~@PPP D- CWpe~fWp^~Wp1 Wp @@m _Uƀ _Uw ` 7 v5  hJ%ƃ< X s 8> ڞ w`w `DC  WpU -wp`w \`5 L7 & _XV  @~nR_(a%p Nf *S  |` p`%0  h`_c_c N`%"_Y ` `%0_c_c7 $ĝ % !_Y ?  r y^%     :& \W ? 7 p  V h% 7 J7 B7 HR7 7707 _W  @_7 r_W7  vM_W N  vM l ^ _%@ĝe _c7 ,  7feD& C%feD ^ 7 d ^7d7 ĝ\& v 7L%0%"_HX ~_W7 f7 7 t 9Ȼ vM_X_c  ڼ %9 ú|P p PCmP5 P7 ~fP `i% o_X .LH `Z 5P`5 P7 6fP j _X  l:& V: @ _c` 5PfPfP j% :_X  : -_c`5PfPfP `i " % wpd@퀽@` mje5R-_c7T 7\7Z+& & Vg_X @ mv-(!%0 wp f @e5R-@_c7 77^_ ~y& . _X- _c%   ,  V \4 ښ7D  Zf%N7 b7 f T%%4  %_$Z7 _$Z_ ~c V& ƹθ7$ \r@A  5B5C@A  @Ax5Afe@ ^_`\$ . aV%H > ^ . i V \[ ~r ` [%R' 7 ¿  7 4b ִ   & _X Z x_X Z%_X  > ` Һ 7 ̺%JD T S_X Dp_[ _] _\_X\ _6^ _Z _bY _f\_X\ _[ _Z[ _] _c _]_X\ _[ _` _0Z _*]_X\ _` _\Y _] _] _c_X\ _X _R^ _` _`_X\ _` _ ] _L\ _X\ R_X ؕ_c  TEp.  z_Xw Q ̋4/%/ ̥_ ̥-wQw Q( e wQw Q|İ@ me77 ` 8 277ظN 7<   7 w8Qw $Q4fe ִ ڶ %ζ%ƶ Bz "  ' Zf%7 Ю7 L ,Ne4  Ne ܯ wPw PD 6E K  & s  b ' V0= R .) %ܵ T& & %~ h'7 b 77 >\ C mt-rl-jd P# + ^ m @ @--   + - . ^- O - 7 &  h%wHOw 4OD P @f& h%w Ow OD V@& k & l  VN owNw ND & & j   &  & `i% N vMN owNw NDC - N_j > +   -  ~  l _jxt 7`7 j5@^R  ` PT!0  m 26@ A*5 v   /D-A r &&ڬ  %% r  r. m @& k n ` 7`~- ~ 7fr 7j )w"Mw MDC -@ ^M_k z*   " 3 1  m& l&5 N@A r && %%. m& k + 7``5@   Fn  x 7b lf 7R7 \ 'wLw LD ; %-v 7$7" |%v & l wK@ - . ^ & m  ; & m  ; & rw LK % 7 ( UШ-b27 ̪%$ e WpN~ \D %w~%ޮ N Nw0Iw ID  Z-ꮺ7 T7 U!B 2@* \D n %w  Tq WpNx *SwHw HD% % ާ ^ ! wHw tH N% @`mmR  7rwNHw 6H w4 bj 4 ؛74 PHwHw GJtz D%7 Ү7 (7 7 & wp N 4p wGw GDC~wGw G f r 5Ц -~@ % wjGw VG->@8 7r7`* 7r|w -ڬ ^Ĭ !m  ʋ H  h D% 4p wFʋ E% 5 7 ~ w F%B^5 ̥   7xP >  8  J# * s     s l D%   ޫ r 7   & &! 4p 7 wEw E l l%d ^7   s wEw ED%4t N  &swzEw fED%4t N &swJEw 6ED N &sw2Ew E" rw"Ew ED NJ  &s7wDw DwwʫwDw D s wDw DD bWpf~ s wDw DD 4`ȥWpf~ r wvDw bDDC -  7r` 7rC  -tt h 7r`7`̩Z 7rRwPH 7D%%[-  @   7 j !m/ʋʕ E5   N J ¬  &  D% J 77,&7-  Ԩ- ̨ JwpJ@D@  ί wBw BҖȩ B  PwBw B WpA~af du mޫ Wp1!wBw BD I p-!C9 p-!2 &!feX % &! &! %ffeX &! %  p!! p! -̧ wAw A  l_w5 : o%  _xN ~NWp@~wpΪmrf΢WpAwp@  @`%_x  y_xWpA~@Wp@l5vWp1 _x-Ʀ_xVf xG%DWp f r _x7 WpAwpDܸa7TWp@~wpԩmxw% n B 7r-l -XbZԧN ~ L_xVm@<ӵ Ĕ55 ѷ ѷ   -777 -7 ʵ7 7 7  B m:-  L x f - xN F{Wpw~pmj7< rwV?w B?jmLH ӵ   &s ~ -$w ?w ?XWpDwp@C@-  yw>w > WpDWpA~@Wp@lWp   r 44؟Wp -\ğ F   r  ވ~ֈ *SwȈ  N  r dw0>w >5 <V UH  m Tsm ~ -_ { %H7-μ _-Φ[5 &s  ~MžWpA uAwpN &s AwpB`\Xʋ ~ 8m> 7rb@-" Ts&햤@톤7  z ~mm  D╠ww Tsn  |   n N <N ~  J *Bmmm  ~ -xwlmp Ts^^֢@mV ~ wlJm*m,_} M*m 7r4 5Awp$N &sdAwpCa R ~ ˋ m2 7rܣ@- ˱mm@m%mrpp@E% T-XN̕ 䵀̕ _|_|# "m c 7 ~w9w 9  n  ^   t& H D%w9w 9 6 P J& Z&  D%w|9w h9 <&  D%$wX9w D9  & Ю D%7 w69w "9DE\ -  -䞶 ->ޟ 7r07`П 7r"wƟ-  x-xr Jj !m ( )  lˋ4˵7’EE 0 H-% f&5  jw\8  @% 8˵˕ 5j˕ X - - J 4-֞.-ƞ s ' %% "E    %_%_  J Ҡ t 9̠5 D Wpf D%E J  Wpf D%  f "_X 7rP _ J J_w 6@@5 j_ _ ¬& CmBE%_~B ˋ_E%_~N &sEA 7rA 7r _WpBl~A 7ruA 7rzu !D`md5̋ D-Am@A @ SN s B*Wpfb D% & P D% ҭCmʭDm % NNmNm %NfN 4p w^5w J5N JwN5w :5wN \7w&5w 5w, ƃ7w4w 4DE    5% % %^ 2  \w4$ w 4DE5  &  E% % T% % %^   ~w24w 4 V &N ڞ w 4w 3 .8 &4̋   w3 w 37 @   %,~   J J&  D% Jwx3w d3N }wh3w T3 r  ( %  %M} .} }%M} H w3w 3  w 3w 2?}zMV c _ B U  -B E J%'% % ⛷ ԛ 7r  J J%  zM|wl2 B< 7rȄ7`7 .̋     7r f7` 7r~ 7` ܘ 7rh  w 1  w1w 1B - 7r07`` 7r"w -ܚP֚ 7r7a6Ě 7rw `&)&  J&  D% J J&  D% J ـ7 ` -Ė  @7ఖz 7p -=` 7V -+  ԧ ب7  p  J& ^ D% J 7  !-  v z 4 ^  bT   ޕޕjw.0J& ȕ `!e& D%w / wږw/w /  N Jw/w /@77d Z_  7rrfz 7rfej-d 7rJ&R 7r> Ԥ  : 7r&C`,킘|!   d ” `m  Ф"-&  D% 77 F< 7r& 7reD0 n" N`e   f& B D%7  7 @- w^.80  Z-< *-ؓؓ5 -Z- * ' &  D%  &  D% p7 -ff  0_t& _tFD- p& ` e& D%`  "  r &  D% _H  B AZe@ 8&  D% 84 7rw*6 ʢ*&  e& D%!& 0 D% v_H ؕz- ʕ  -^+ H%& 2 e& D%  &  D% _H-đđ a ژ^@%V  &  D%7~ B -%2-$~/ " ) l & ` D% 7&  D%  ڠ -6-.N&|-R &  ne& D%`N/ Ґ !  !m,%  5  &  D% x twܓwD`_w * 4| -*| 7 77Fwd*w P*  & n7 (| 7 Blԏ^ƏƏw*w * Itw*w )% Itt I I b% Ihtw)w ) w)w )  @  Jw)w )@E? t t% Kt w)w v) hJ& f D%wn)w Z)sw`)w L) Nf ڞ 7sw<)w () R w,)w )  Z| D $ 2  dE 7 w(w ( 7 zMRs 4 ʐEҹw(w (   * ,E U7  U@wh(w T(4. n n X{7\    2K ִ NeK ( @E7K v w'w 'e`XSKغӺϺ˺w'w '5 7  dN ʐ wb'w N'. n n Vz XfK v w.'w ' :N ,w'w '-r#*KPPP$K.PPP wp w&w &#f *Kt@f 6e#*KPPP.tt@f 6e$K.PPPwl&w X&# tf 6e#tf 6e$Kutf 6ew&w &%p  w%w %DC-w% w %D 7ryC|y w%w % Μw%w %D2 & | w%w z% % %%7wj%w V%DCBԔ wJ%w 6%DCB w*%w %DCB a `H w%w $%?w$@U@w $  n w Jw$w $x x ˋ D-ԃ7w$& . & ִ w d$ 8ww DC !ww D l  f>}Ζ@ ,& @  Ƈć   e me& Β % 7`… 7`v@ fe %@e7wze7tww jb  ww VP  ww >6 ww 7 Δ7 7 Ȕww   ^ n ww l *N Ȗ , ޒ   nN4 N &   nww D ̋ww N4 ִ ww 7  -r >   ww -o A 7r owpouu5 @@mC r@m5whw TfԘf 3 | 4 ̋w-l%4 fw w D  n ww D  n ww D  w   7rofo`w -z -}-} $ww p t ^ by \y%Ty7 Ny* wLw 8 ^  ^J : N-   :  ww  ~  ^    ereO ww  ȑ X~  ^ ^ wjw V 7Ќ wR Č d  i B% x-J Fw N hww  \ 5 | n & %  ^ & Ȭ  ^  TN Z 6Neht@& 6e --~  zz 7z ~ 6%~7 xzk& \W w vMww @e5e@_ _<@ _ 7 ̥.6 ̥*e@5 +7 |̥0̥9lWp @@`e7Z5 ̥0̥9AWp @@`e5 H  L h l 5 r ye@5ZCeZZ N R 5%%_5 7 ̥- ̥0 ̥*_Be@7f_\ 7V T_ _ Ӌu- Co e@55 e@55 o     5Ceh@AA @@% @AA @@e0@AA @@eW#A@@ A f&A@B vEEu5vo    0 @ c0@eh5_@e 5 e@55e@5uu5 u u  5 A@  5uNeZff @% - .&@ee  _  _Ce_     _ _ԟ _ e@ 5 _ww D   e ̕0w5 ;   uu A@;ʀ u5 @e04e W- ff lee0@$ fe e C r e0@$ r  @00@e! w DC-ZT T 05̥-  : &"5  @  @ ww  5 w̨v  ̋ ̥/ & 5  ~ 5 .w7zN wj f ִ   b% N  N hD N @e!چԐB-fef %5 @a % D-ņ\ w  m:-  b% h ̥tbc^efe ִ Ce˥: ˋ H% B Nefe %7 Ce ˥: A@`5%  b%Ҧ@` & ִ w7 ww ˥#%  ̋ ̋˥|˥:ˋ w˥:˥| ˋˋ˥: Dw lD̥: ̥̋: w\w H$ xʋRʋAA@ ʥ@w"ʥ#  ʥ0 CpDe`w  x̋T̋AA@ ̥̋:̥@ ww l x̋T̋AA@ ̥@ wl̥= N& w BDC=%::\  xp EB  @  0teP Dww uM5 B _7_"%%_ C  r y `5x@`5x@_@_"@ @` _"@` %%   փ  nh  N % Z   _" r f r te r f   # &P3 M   !@% %d  rdU0 rdB r U0 r U0@@5 _@_  _  $_ w Ԑ@ _l N& ִ Mw D [Wp @@`eWp C̥. e` ̥*  upC ̋  bk%ZkTk   r` r  w w De t4 tt 4 4 Ne&& 4% w  eu @w w w )w  w _w w < Nt@f 6ew0 %w *J w && e& & 2%ReR$h @  1  " "@! @#E B Ew t   b%wn pw w T 4De _ t4 t t4 4t Ne&& 4% _t 4     6t-t- t-t- t- t- 55 eAePPPP 5 5  55 Nefe H% & %5u7 ` && 4% P fe H%ff ^% fe& 4%wA@E f& .w ww D Lԋw!w(e& ;eww u@t5N5N@ 5NNefef H% (3A@u5BtrN2N@ AupN fef H% u-u-u-@ww  fe V@w @pHA@tw ~ ~w ` Nef wZw FD 5  =l& X% `5ȥ= F = @we  Ћ Ћ   Ћ Ћ  Jҋ~ @@w dhN  HNef ?@E% 8 L2 *L-N ִ eN NeN (u-u- (Nw ( w D 4 4  ww  f %  P <4 4 wlw XD 4-&4-!4 4   &e & %4    wme   s lt  &w< w6Sw0mow(n\lw e& 7 tb7lbgw`bhB^RbI I7jIw 8 & f ȳew0w  @A  v @A   6v&  @ppC`p   6@Cww7*i Ћ P ы A@PЋ wl>wfw Net@f 6e  w6w.w  NU7NU7NNAe vB7   x%r 55 a  a!PE -:%N w$ < `e vWt vw@ `e @  <%ܘe U?ʘʘ `e 7NU? a7 ?U ew dDlE wZw FD5  5N <!w5A vBB-  }ee@ !ۃ `!ւ ` `ȗm^& E%^m^%w w7Tf*'$!     ^ 7^& A]& BF7!]W-&7]_ |_ v_ v_ v>_ v>_ v_ vZ_ v_ v_ vf_ v_ v_ v_ v_ vb_ vV_ vz_ v_ v_ v._ vz_ vH_ vj_ v_ |T_ v_ v_ vd_ vx_ v_ v_ v_ v_ v_ v_ v_ v_ v^_ v<_ v_ v_ v_ v\_ v_ v:_ v_ v_ vt_ v_ v_ v_ v_ vJ_ v_ |_ |d_ v_ v_ v_ v _ v_ v_ v_ vF_ v_ v_ v_ v_ v,_ v_ |f_ |_ |_ |_ |_ | _ |2_ |_ |_ |_ |_ |_ |_ |_ |_ |$_ |2_ |_ |_ |_ |_ |Z_ |t_ |x_ |_ |r_ |d_ |f_ |n_ |8_ |_ |_ |D_ |_ |n_ |H_ |2_ |_ |p_ |~_ |_ |_ |_ |_ |T_ |_ |_ |x_ | _ |T_ |_ |_ |Z_ |_ |_ |L_ |n_ |_ |_ |"_ |*_ |_ |Z_ |_ |h_ |_ |~_ |_ |_ |w DC5 6>UU7 U7 UU !_6 <_H =_> >_H cX d r_P sG y6F>N V  %0  &VpC8U _ & v g ?4V 0Vu u_ x ~ %cCUSU  I_ V &TE7U f e _7 U U ZTURT 7 HTwH7 pUhU f  e ۀ_T f& e _ S f e _   _%6  S S S <әS T L!_ T_ @N&  @ _ %T_U@T_~_the ^eV FT>T _4R_2_ĝ(&R  J_S S S 7 Ƹ _ 7 S T f t_ xR%6_ hR_%ƃ>eUS 7DR_4 ؛74R_%6VS N^U7 JS%%67 R 4Q m*S7Q_(S4 ښ 7Q4Q_Q N%6 E  mQQ l %6%4~Q_zQrQ_0uhQ :  V   & mHQ@Q u_%6PR! x7 \T_ mDRe7Q7 4R7 P_,R6T @ @`e7P%6 PR @Q @7P QQP N7SS mQS @ @7P%6S r mQS @e7TP%6 mxQ mnQ74P bQ^QğZQ VQ_/":7%4 K Kw & w D   A@  Lww D %_ ww K J w%J%4Jw n%4rJlJ wjw P%RwQwNw : d w4w J7Q w w  Q Q7 Qĝ>7:4 KK K7Q KM Mw7 Q LL7 L%lQfQ^Q7 ^Q  z4fe Pww ~ H-TP$P  Tq P :P s @ P s 4:H7zIwK Z O: O%4LI44@fey& &e%h4 `~Z4%~O%vO %nO7G R w%XO NO7 HO7 8O 8 H l  o*Ow h H JHOHO^GO?zHP ִ wDw 0 pHN > N%7tOww V Nww DF F& > ʐww DCE% && e %̕& ww :NpO%F  N wx N-@NN K  (N r .OHF ڞ%%8Fs OOe ڞ N ښee d 7 E M 7(I7&I7 |M%zM%rM z7lMNw N & N D% Jww DC  w|55 Wp`u@e54 Wp`  fe ^ %#  % =@0} % Wp`f ^ w  IFN & GG  e%j  GGfe ִ(L "L @M5 N ִGNe jG Kww  Wp Ce`  ~ ECww n ^ 5 9 K n ^  &K   7 K 7 KN ^ whw T J * wFw 2%K-hDL D4J ִ 4L4 ښ7zLzL6D  4\L4 ښ7RLJ%|J%tJ  @LC h%E \W 4B rww CRJ , x7 xBKKKe7K 01 B7 ZB CE @BB%K-KK w, %%K6& \W %K KzE nKfK &^K & T%A +  %I-B7 &KtIB -D :I  .& B h% 7 tA 7DJ vM7 JIHfe ִ 4H ִ J N&J z 7JNe vJvJpJpJjJjJdJdJ _TJ@%H7 ^J tHB \D @ o_@ ~r*- v"-UA ΟJ4@a0I4BaeʋIw,wA CWpe~fHwpKmKmINCWpe~fGwpfKmdKf 7 IXC \W (}%4@ 4 ښ-? ? _Ӏ w  G C7 G C  |G  xjGw@C?4fe ִ BB 5 |JJ @-NBeJe %@ 7`rJ ~ L@B 5TJB Befe Β %@ 7`bH@ 7`J@ 7`HH@ 7JNIe.Be %w?wBw>Ne4 ִ HFII8F4F_Tw X\>7G7GwXw D J>-AB>-A:> E.>`? 7 "> 7 G>& i 2->?zG 6?tG=pG*?fG%E ,I ? ~=’ U ? A T&I E%w>= rw-== j=ˋ-=”E w d l=> d=d _ _ D  F s @ ~d>,=  Zf%,E7vE7 F L@ T%-@< :@ vMU%4<4<-<< .G p< <& ִ %4̋# %BD 7<$< ڸ & ?Wp1 ? &?Wpf~ E% hy rwDw 0 4<_ 5_ <%7 _ ;G ;D?;4x ִ ; ;; &x e% _;x dx ȋ7 z; V7FC A1 Ad N; 60 /t< 4  n>h>WpA~^FCF< f Zf% ,Cd%C7DC%7 JD f> T%7 : V =-6>;  x :Dx 4 d B%B;U;; Lp w; =7 =t; \D Rw Vd 4:7V;  : ~rx_9%49 99 vMo%4949-99_J `9%VA ~%JA 9 Rr$ 7 @: vMww  ~_2 8F!8! ޸ _2@>y8>8>7 2>.> )  ֹ7 >w >w>7=  6> s N޹ Zf%7 =7 =w=06 vMw=37 =*& \W 7 =-9D7-999477 =>n?f? &9 T%77-V97 9 vMww 5-095-*95 w ` -56 -56 z5-t5p56j5 786\56V5N5L5H57F5 @5#%4:5-l645,5 4 -57 5 5 ;4 ښ74 ڲ4*6  66 B Zf%7 6@& 1 B Zf%w ?& " ww D4 ! _t4a  Nd4 ~r7Wpe~f;wp?m?f7= p5   5 ~4; ִ; ; <;3a733^=7\=3 ִ $ &r %;4 4 ww 31 F1 '& Zf% P v< R; L; j<7 B;7;7 r366-h3-(`37 Z3P3 vMV wFw 2 8303?,3?w,w DN N J>ww 6; . : : ; :4Z: ִ -222227227<7<7<2<2 Nww %4242-|2x2-r2r2l2f2f27`2N N@E% wJw 69 !m;j=;  w% 5 w 83%o%9 *= =1Ē˕ 1   7>%r5 & N  xv1 |  &s x %o *P17:7: 2z2 f  9% 8u ~7 :wN2_>2U>2 22787 Z=&  ,Ζ%5u0%t8_U2_ _$5  =  6  6 = < <K 6< 65 < $N : <5x ښNf 5.0 ִ x0 ִ %L1 vU>1x ڞ w*1~dx7`/  |/89%  / ִ %R792Wp1 $9 9:72Wp@~wp:Bm:m8 7 82 &2Wpf~ E%%Rw8% _P7 8 ;K 6  #6 #20e  ^;  L;4 57 :;  N  4 `%vx4 ִ  x ִ x J6 D6 b7%86  ' Zf%7x 6 1 5 p/ l r1WpDlxV/ \D# dP1WpN~ JS 4-x- |  &s%r_4Nfef &e ":_D_Nw.%4- -%05 j%4z- 7 6l-l- ff ʖ%w\w H8m.6 4 s w ~ %(w  Jw,5 -7@N  -7 N  75!_> ܓ=l.Wpe~f2wpL6CmH6x+ |  &s z40.Wpe~f2wp6m6f7`P4D_ 3^2\ ć f48 -8 7Nf s 4 4  V%v E n  _ _ %)%}_  _  ~\_21^ Nf s %Ýx7% _ X3 ( Wb7 -4 M 4Jr F*Ԑ  T 5 -5@ 7 m4A@6@ K -5@-51 r 6_-n5_Ne _ _5* 5 5$ f ^   ^ @ -44_ -4 N f  5 ) $AWp #AWpN#f  fe ^ AWpN# ^_ AWp # 1 #  (  ' )_x _x _ (_x _B X/_x_B (_x x 5x %5!_ m   5 5 3 573_C-5 35!@ !+^0#0 7R3x57B3>37>363 p  ~_ '_ '@%_ '^0_ 2 !_$_ w ^P/w$5D/' Z 72/wHw 4 5w64 7 4 w D%x R%  %`% ִ `L/4 Bp`%w r xv w  7 ^4wV44fe ִ  x%((5 w $4&X%P%P%%& 2@ğ>% @%%(  4%_%)_ . &_ Nf   %N -$&_^7 $-$$_^_^&$ _^% $$7%4$  $$) %_^p$l$ j$ r  #% V U|% F MN   %4$ D  ܀ $"-2#%4##%2"%  %e-#%4# w-#w-#%4#  Ne w #%( z#%)    ğP# R#%) F#%( 6  .#% .  ^ w #%4   ̋ԥ ̥    w w # F : F  ww tv"r"-%) N ;4˥( 4 w@˥) ˋ4 ˋ e4"7L#w""|%00 6  +%4!$!!!0    ! ! N ` X) w!w!w nr!&  7 *0& ҋ wF& ʬ!$/!$/ w/ (&"/ "  6w De w 4& ִ ? x ִ 4 ښ 7 !#  7H/+( :/ ` N  '$( J / Wpf~@ s  Nf s  x ִ   L 7 7 ww  Nww D̋   ̋  &  wvl &  %4Bw 2D: D 7 * w(Ÿ    w  ww D ß     %4 N %4  ww $ ~z H%6:-%4h b >-"-ZeRN ;4B- <%46'%,(h",-,4  ;>44 ښ 7ww пD  8 wƿ%]%6}* `- !-! ;{  r( F %] %6 ;-%6 %]4 ښ4707 *(7 Vw D.P 7I e̋ 70* wھw 6A Y  u% 8u :,$%% 0u u $     V] k l X  Swv5 ̥noe & #& % vV) & % XV% PV ~t ?    & % "Vl         e %d    Xt%?  s n Z_n @3%D _n@7Vc_n     s%=   _n x s-  >3 II HH%4 _n-&HIH 7II _n$%%F  r %\ Bs% r  %  [l $ ~_n$ ִ _nw  r n  r 0  ww l  n Wp `N nWp`%d 8 Wp`N n h e ww l %   x4- n e %d 8 6wL w 0D  x %  ڞ%w ( .w  b5ZXY`%Z  X < T   q %% %De  \$Ԑ@e!P  p%   X RԐ VZT$ p  \Xԕ\E-zZ -xZ & @-Ue-\T XXHT5EQ@e72X N Te-TwXwpY_ww  C 7$_7H @ &N s ~Fb r_`V p9 pP i%&h  &n 0 0& 7 V &  κ7 7 ~^h] p^   g r 7j m c 0^ 7"^&% %,ww &fe ִ  ~/ B,8%&(U%Ce%'!Ԕˋ mB-. "  & \ l% T%' L  LB%~ TTTw,w ^w 7 ^ w Nf  wN ֺ  \w \w JbN b 29 rT @T N TT a & ^\ & D % %  S %  %y w  fe %%w@Ew N ww 4x&-NS7 X]_J E LQ UY e lB uI QE%1JZe1@-C@ H'@ &Z' %EH%  5@E &:[R %(+\7 \%\\\\ \NE @E%x 5Z4x`7Z%xx w|w hD \ \ \ e ewDw 0DCB  %x ww DC J   & ڞ %! ڞ ww @ % i%\- & / ?Y %% %wZ|Y &^ D-% %ˋ %   D-7P@@e57 ~X7 xX%^ Hh hX7VP_6@e@- ӕ%%\ rh%*%% _ $_ *_F ._F [_F \ ~_F_P g (+ )` <_ >l $= *_  .c [_T ~^%_tO\_P% vW< hW ӕӝZW VW%%  gD-_*%_* <_J%*_`%%_d_`@e@- ӕ Sӕӕӕ&DE%& %1%9 %%ӕ@E %%_  @P _6ӕ f%^ e %]+~ &%\ 0f&  eU% %  %%_< e%]@p_6ӕ%  _6 7rMӕ_[  e@-  e%  e% ӕ_6 :_ӕw 7TN  ww tDC  P:e e! wHw .   T <NU7V -H4N ;7 V% T37L&  e@ e & 7XLwœ  9ԋ˥& ԋw pDC_ x&  wT _ԋ_̋_7\T& % `_ & %  0'_ 0'iԋ! &    & % ` -rU&  %44̥_____̥___ _ w DC w 7e -E E e  %E @w vD a 0 XdT%fz 'h) ִ*T"T  7T7 T T T%e%E 7S%_I_h) %f P7 ڞ U ڞ M ڞ _BI &@S %E%ee7 U)h)  7\STSTSe  xN7 TUVS  7.S') ִ h)'T%E 7Sh)) ִ U%f:%E6rT_ ڞ%f) d  d `  f& ef& ef& *& 4&% e ww X`%+'>K _%^K %\  ,` _%7G#?KT fC  w(>x ִ }7G )ʋ'ʋ  %v$ʋ D_ 0  # % \ D ~_&  _%v w z DeCe@0  '} @ S @ @ _0Ne ά   7jSwfS N 1  LS6 N N  H  x0>4 BeTF  w%Qw Q t* %| h) ִ w>w *6 h) 7Q_%e_%D_ٷ P JT_] ڞ Ҹ_ NeTQ  @E *  @  `_ Q   Hfe ^L  feP % & P e%-@ e m           5 %r  :1  % w &, X Kz BBІxxI b%  ہ 7`,Gw`*Gw $Gw@w , h) ' 'h)  I Z ww  ^  p<f<7 d<7 \<   <7<  f x<   d< mN h L<K 7K)|C@ 7@)N-fe % N-  N%;   ;feN- %N- * HKBB)   wV;wT; ;feN- %ww 7 J7 E7 E7 E7 E7 E7 ~E7 |Eww xG G G G_j x) @E:E:E 0e&E E %EEE %&E ڞe D  D D D2 ڞ D DDD e D D ڞ D D DD e) v t pD  lD  hD dD wpw V:f  5Qe@-L@  @ex@  .@v(i$f fe \%:fe . 5=@e7:9 N ww # 0!?-2  ? 7B'?72>H>E%  H 7H5> 7Hw0w  H nNfe %  fe ִ -I H000pH000dH0y00TH0 00>H000 H 8H 0H  ;; ;; *H ;; H ;~; G GG G GG zG7 |G.t@& 6e%H8HLe7IeH#5 AWp AWp@ & & bK *0e % bK *0eF @%ȥO7 bH7 FVH F @% ֻ70e  ڞ 5Cetˋ7b6Y ˋ%!Ԕ)ˋ7<6'ˋ7*6 ˋ%!U5 75  b2  62 6 `2 s  / >F! *2 %   $2 s  f *w@w , ^LC  ^ 1zA 55 Ne ά 1N   h7J>5 N N   >m5  N N 5 N  N (1  N ==  RB LB ^ @B ^6B  ^  ff0 Be ڞ  5 w8=N N @ww A ^ D0N Я 20   <  ڞ < wJw 6D6  5_L ^ fK ά   7x<l]t< P`]   V< 6F]L<>]   *]  ](< 5]& F! e5%  0e705) (/ "/ @00e7070Ne; w|>r>0~ Z ; ;N .&   ww jK ά _,  ^7:;2\6; *\ "  ;-   [ [  h)  Be  C [ w>w * 5 Ne 7T?-:wJ?%B?>?76?ww P-$?j: ?7 9 &ww DC 5 5 5  *D3= 7>  v 5w d 7 7 ^aN 5 * fe 7X> f 7F> 6 ^ 72> ^  ^ 7> ^ 7= ^ ^  ^_t ^ _ <7=e7/ 8 ^  ^ r= + 78 e  7 X= ~  Be  ' ִ  =7== "N- _v & 7;7  ִ  :_\_r77   r2 t2 vC wD& x_j e _p-_p5 R l %- e4/ ִ_j7 ;;e ;Wp @@`e7;  ^ ʋ ~N- G D 9A 7) ) N"7 ) ʋx %& x  x    N- 1 L)  70) f;") )T; ) n* N 7 \* -$$$"(N-  N 87 (7 (7 : N-  & N  : ww D.:7t$7r*7*,7d$7"\$e7V$R*7 97 4  / %7 :ww D̥/ ̋ww z4Nef (  H @-w\ w Dt/ 5  7 97 'd!7)7)6 ^ ^ ?%/% r?& %% %!& Y p'%4 ̋   4 ؛ N! 7 79  8 d799 %'* T( Ne V%&*~ 5%&%l*7 f* K &7&7& > l  o `%& uR-N ^  ^ ww   ~&  *78   (ww (& V& s y F& s 7 |87 &N b +7 & <T8 w>w *t 87 5 7  X ܖ J_  5  5 7   f5 7R  5  5 7{ / 5  |7 h77 h%7'7'6 ^ 7 7  H=&  < ġ 0= D Ne V & ~ 7 R d5 6 B k  o ^,N ^  ^ ww ξ-T V 5  : 76&7.&-* *&$ "&ww % &'  &&w~w j 5  ^ $ 7.(7(('%^6%e7%%-B6-:6e7,6ww |@'6  x 3 &' 7#7#7&'757 &' 55p#n# ' 7575w(e75p r&7&7 &-5& 5&e7# 78#w RD%&`*  %x& %FJ5 "t& wpX&%p 7,5"T& wp8&N& 4p   0 ! -2& 0!m & -" 0 ! %F7:"7 x"7 $F(f"~ ^ 7 7 *"7 $7 47 *" 77 4 r74w^w J~ ^! X ~  , 7 & * ww  4 @t !je  74! 73wڻw ƻ j81 / * w/(ĴĪŴ0."ĪŴ$`ĄİàX~fZ`²`Ķ(Ĵ0.fŽӚԜӚԜvTNXTx^^€ÀìҬ 00ҴѼҎpҸҔԐnP\>ݮ@!l-n-p-r-t-v-x-z-|-B!~----------------------------j--------------------------$-----d------------J>8 x x 000B~ `##$#---.- cd&ddddd(e\ee\zM I”֢Ȣ/usr/lib/ex3.7strings/usr/lib/ex3.7recoverexrecover-rSHELLdumbTERMEXINITHOME/.exrctagtag|pnextvisualoabbreviateargsappendcopycdchdirchangedeleteexeditfileglobalinsertjoinlistmapmarkmovenumberopenputpreserveprintquitrewindreadsetshell-isourcestopsuspendsubstituteunmapunabbreviateundoversion@(#) Version 3.7, 6/7/85.vwqwritexityank@* %d-c%d files@to editlpgcr[%s]e! :autoindentaiautoprintautowriteawbeautifybfdirectoryedcompatibleederrorbellsebhardtabshtignorecaseiclispmagicmesgmodelinenuoptimizeoptparagraphsparapromptreadonlyroredrawremapreportscrollscrsectionssectshshiftwidthswshowmatchsmslowopenslowsourceanytabstoptstaglengthtltagstermtersetimeouttottytypettywarnwindowwiwrapscanwswrapmarginwmwriteanywa %4d ^H discarded "%s" [Read only] [Not edited] [Modified]No file line %d of %d --%ld%%--echo #%|/dev/null~{[*?$`'"\ [New file]$/dev/tty [Existing file] [Incomplete last line] %d/%D %d line%s, %D character%s (%D null, %D non-ASCII%6d %d subs|%d substitutions on %d lines]-^\allw300w1200w9600%s%sno%s=%d%s=%s %c%sERRORmore fewer %d %slines@in file after %s/usr/lib/ex3.7preserveexpreserve/ExXXXXXxxxx|dumb:upjdownleftrightHhomesusplicoambsdadbeohcinmincnsosulxbxnxtxxalbcbtcdceclcmcrcsdcdldmdoedeik0k1k2k3k4k5k6k7k8k9hoicimipkdkekhklkrkskullndnlpcrcscsesfsosrtatetiupvbvsveALDLUPDOLERI%#![No write]|[No write since last change]!%sNo %s! +-^.%d %slinee! #e #&?/^+-.^().!?)]'({[)}][]{}(null pointer)/tmpIPLPPPQPP LIpplpipbpNHSHH HUnhsh/bin/shtags /usr/lib/tagsdumbPDOR\firu!Sfm(   "+h 0 3>AKNW\fnq{~ ( ( ިΨTERMCAP/etc/termcapTermcap entry too long Bad termcap entry Infinite tc= loop Termcap entry too long E^^\\::n r t bf `OOPS5MS7) longjmp botch longjmp botch  8B\n -=L]q +<Rl.Hj9Zs,Nan(<RlRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator/dev/ ((((( AAAAAABBBBBB OO!77G  K%"%| 0 %3 L3 2.   D   U ?R |DO-vDvDK !H-..D`D`D >0e  ڞ 5Cetˋ7b6Y ˋ%!Ԕ)ˋ7<6'ˋ7*6 ˋ%!U5 75  b2  62 6 `2 s  / >F! *2 %   $2 s  f *w@w , ^LCbin/lint 755 0 12 1337 6024532361 5501 #! /bin/sh # # @(#)SHELL 1.7 (Berkeley) 3/11/85 # L=/usr/lib/lint/lint T=/tmp/lint.$$ PATH=/bin:/usr/bin O="-C -Dlint" X= P=unix LL=/usr/lib/lint C= trap "rm -f $T; exit" 1 2 15 for A in $* do case $A in *.ln) cat $A >>$T ;; -l*) cat $LL/llib$A.ln >>$T ;; -C?*) P= C=`echo $A | sed -e s/-C/llib-l/` X="$X -L -C$C" ;; -[IDU]*)O="$O $A" ;; -O) ;; -X) LL=/usr/src/usr.bin/lint L=/usr/src/usr.bin/lint/lpass ;; -*) X="$X $A" case $A in -*n*) P= ;; -*p*) P=port ;; esac ;; *) echo "$A:" (/lib/cpp $O $A | ${L}1 $X >>$T)2>&1 esac done case $P in unix) cat $LL/llib-lc.ln >>$T ;; port) cat $LL/llib-port.ln >>$T ;; "") cat /dev/null >>$T ;; esac case $C in "") ${L}2 $T $X ;; *) cp $T $C.ln ;; esac rm -f $T %x& %FJ5 "t& wpX&%p 7,5"T& wp8&N& 4p   0 ! -2& 0!m & -" 0 ! %F7:"7 x"7 $F(f"~ ^ 7 7 *"7 $7 47 *" 77 4 r74w^w J~ ^! X ~  , 7 &bin/nsquery 555 0 12 30724 6024523032 6254 +Dl e7cce7$ /   7%  "w L%%@& U e%    "%'@  (  @  "1  47&7"@  @; %  " 4 "wx$w d$DI  S f& %^  e  b d m  e  q w#w #De LN B4ee-D> t  B4e Be v Nfe ^%wV#w B#DeEE&E&E&L e Lw#w "5 7 b7 `T5 7J@7pWF 6 __$Yfe 6% #Ce  ˥ ˥ ˋm> (%7  >  Z X nfe 6% L%HCe  ˥ ˥ ˋ: f&@t@t  ,@t0 0 @t 5 AWt1 %fe d% _%w : fe .fe   > 0  P> (%>>>5 ˥. ˋ> .    %%DU< w WwF w fef %%5 w w D Lԋw  ~ ~w H Nef j wB w . D 5  =& 6% `5ȥ=  = @we  w  BuNefef %%=@@wЋ Ћ  Jҋ~ @@yw&  4  b '     ` TW ~  s`K6!  w D85U5_ 5P_   m@e4 ,5Ne & "  uN "4USt%5b 5^ 5& & % 45@e-4  % U5EU  wE w bD Z +   r= wB wD5 a U5ff %ށ̥a &  e 3     U̥r 33w z  uff` e55 Dhfe& %eh  hb& %ed& %e@A@ 7r5%  l& %m^mZ  ^ww zD@et5r%=r ^D  7L; (   w:e =r r̋=rNet  Net e  @et5Net B5&f 4% V 7 :w DC |.  7j% (  2!f %    w.u5&f %  7 w D@e55 5  ̥0 ̥x̥X. 'Ae f&ffff `e A f&A@vee@ 5u 5 @ W-@D Ae Bḁ.@e@- @D@pHe _ ̋@pHeA Be vC ̂ xuuff %5uwpA@Ef&A@vUU5uA@ f& A vf&A@vUU A vf& A vf&A@vUUUU BPw 4$ " J w5 4@E%@EU5N&e 0 &e  Nf&e %4 IN&e 0 &e  Nf&e %  (Ne& "  ff eee@ 4t@t"4 4t  4$_ w N @ N 4$wzw fDff %5u4 4 @ A f&A@EE4tmm@ 4 t   ve@ 4tww D55ff %f&& "eff&e e &e h 55 whwdwb5 5 w DD5#5ff T %f&& eff&e *ew&e L'44  && ef&& e&e & %%%U w vD5_ o5ff %f&& eff&e Ze L&e L8f f ff&e V e 744  && ef&& e&e & %%%UU&w @@m e%fe b"  &e h 55 3ff `%f&e@ &50c &e h 55 3  U44  && ef&& e&e & %%%&_ fffffe e _ &e % _P_ e_P  mm@ e@ f& ef&& efe& %%%_  _Jw @0 0 @0 N 77ww D85_Ne& "q fe Ve4-4-/44  &&  ef&& e&e & %%&e b" &e h 55 ewww4 et 5-5-5 5 w ~D4 4 @ A f&A@EE4tmm@ 4 t   ve@ 4t4-4-/44  && ef&& e&e & %%&e b" ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& e&e$& %%&e$ b" `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& e&e$& %%&e$ b" `Btp$t t"  ff Nef&& e&e$& %%%UwD w 0 D5#5 5 w(w$w  @ a@ a@m5A a@5w D 5# aB- f a@m& % w e aC-w ^ D@ A 5@u@e@ 5u   w, uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l@Et5l5lu te%w L D5u-5 w2 @e@- @ a@ a@ a5@ a@@@m`&fNm % a@ `` e w D a@@m e  wj e  aAm HN@`@m &f %  aN f`f %  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw D5"E@e44fef %% U4 4  fef %%5 wZ    6v&  @ppC`p   6@Cw8w27R Ћ P ы A@PЋ w FD:5UE5Hw* _5uNfe & %% _bNe & "  uN ")U5| m- 5 & %%St%  " U   & %% S U _z @_~w DE%%"5   & %% U wv w ^D55@   3 4$ 4 4 4 4 4 ww~w  $5+ &5e-he % &     &" ww  5f &" 7 f &" 7wX@ mj7h^%e w  H :    &" e-ww D 5 e %w  5 e-w : !ww  N %ww rDCDpC " b" wZw FN 4$wJ ~5 & E        ~5>wlYwfw Net@f "e  w6w.w  U7U7Ae vB7   % 55 a  a!PE -X% w$ $ `e vWt vw&@ `e @  $%e U? `e 7U? a7 ?U ew dDE wZw FD5 4$ 5N "!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7"*'$!     V 7L& A<& BF7!W-f+7 w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_'@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff e w5  @ 0   Wp `e0eӕ?w  )w]w|w h  : 7 RL 7 D7 wLw 8 5 6 7 l d%5#7f n)  :f n) $N f&߈ ̥ ̥ 7v7p=& n)  ̥̋ ̥ %@& n)   ~wLw 8ww>w *D CKw ˋ 5 w D  & & e 4E05Eww DCB P  5 , :% & E& R z   5 , @ :% & f E R  (˥-%0     ,:% &  R 8 5E& z   5 , @ :% & f E R  wF-dusage: nsquery [-d] host [server] nsquery: Server: nsquery: %s: Name: %s Addresses: %s Aliases: %s Error 0Unknown hostHost name lookup failureUnknown server errorNo address associated with name: Unknown error %d.%d.%d.%d/etc/resolv.confrdomaindomaindomainnameservernameservernameserverLOCALDOMAIN < f ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired &d&o&x'f'e&g\'ch's&l&L&u&D&O&X&Uz*/etc/hostsr# @A@ 7r5%  bin/nstest 555 0 12 35542 6024523034 6073 +d e7cce7 /   7%  #w '5 5 $5 $5wT5 UB %E@-? eD- r' v  $ p  eN $ 5 iU FU>E@6 ̋ d  7 7 w%@ T7 %% 4%_n @& l 7R_n@ F_n r yfe& & & _& _n T zuf  fe& &_fe& & & d_fe& & & _fe& & &  _fe& & & _fe& & & _fe& & & _fe& & &  _fe& & & _fe& & & _ $ zLfe& &e_fe& & & _fe& & & _fe& & & _fe& & & _fe& & &  _fe& & & _ _   _ _  * @ W n        5 L c {      _ _J  $ zLfe& &f_ _ _r _ _ _ _fe& & & e_" _2 _fe& & & f_" _ _* _B _Z _z _fe& & &  && e5_  E B  fe  feffe e5Q  3g B+ }  5Nfef &%N n" | B r fe    !Ne _w w 6  B% #w w6   J     SW ~#r`J   w H D      + - ̥9 Wp @@`e̥0  w w ww ww ww ww @ r y w    *N  %    *    *   *     w @  * %w#&w xD pl  @EtEx4PE vEE CtP vEEWtEtP vEEWtEtPE  EtE@4PE  EE4PE4 4 4 4 Ce @e5}e= e@e55"0 -*.f "5  b %w*vf2fe e@e5@ p x.Nfeff é`f  ef  e 4 > ; Nfeff e`  ef  e& %e&  e 4 @_R @e @-_N f  ef  e& %ef  e  Nf %Cm 4w |5 C D@m 5YE?B ; 5%.` @-.ӕ\SD-': @ 5Et E@P@mD- D- e@@@-"C- C-ӕ.`@- 5`  @5@ww  CD@m5 @ e 5u e u5 _ @-@tUA r@@w Nf f fe5Ӏ @ e@-=e= 5 %. %\ D- @ 5   %?} D-w @DwB`D- E?  @w B(@E? )w ̥\ Ԥ 5ˋ@@%.eB- ݃D @Et @PCm 5̋w nD t Pwfw RD 55 @v5u  5PuPA@v5u  5PuPA@v5u ӁPww DC3 v@ ww Dtfe %@4fe %@4A@ D @ wzw f>5 5 uu<5  v%w>5% 5u#5  _j5 M  %7'6 -  zt n"j _| _r=@teD&8 @% $ n"N 5@e5uufe %Ae@ uNf %5a5 uN 5@- u uNfd %5a5   &@S@@ 5%@fe %5 E W _` _`@_>   %7%-( @teD& @% _ fff e@-_@teD&& ff4 e @-_ At 7r5   5 5 fe 6$  r f vf& r t@aUUNe& & fe e_ % f @%5 _ f fD e5__}-5 _DAA v5_D n" 5_ n"_b<^_:wT_:w % n"wfwHw 5 7 7 5 7vl7~ l __0fe % #Ce  ˥ ˥ ˋmv %79 v  Z X fe % L%HCe  ˥ ˥ ˋ: Tf&@tHJ@t H ,J@t0 H0 J@tD5 AWt1F %fe % _%w "Bfe .fe   v   2v %vvv5 ˥. ˋv .    %%|Uh wWww fef '%5 wl ]www HD Lԋw@bww &De LN  4eeR    4e Be v Nfe %ww -@ wN %ewaw ~ ~w : Nef L w4w D 5  =b& % `5ȥ= < = @we  w  BuNefef '%=@@wЋ Ћ  Jҋ~ @@   6v   6v   6vb"ywX &  4  b '     ` TW ~  s`K6!  w P D85U5_V5P_V 8 m.@e4 ,5Ne & $  uN $4USt%5 !5 !5& & % 45@e-4  % U5EU  w" E w D  +   r= wB w 5 a U5ff %ށ̥a &  e 3     U̥r 33w  D@e55 5  ̥0 ̥x̥X. 'Ae f&ffff e A f&A@vee@ 5u 5 @  W-@D Ae B ḁ.@e@- @D @pHe _j̋@pHeA Be vC ̂ x uuff %5uw A@Ef&A@vUU5uA@ f& A vf&A@vUU A vf& A vf&A@vUUUU BP ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw *D5"E@e44fef '% !U4 4  fef '%5 w   @ppC`pww7 PЋ w FD:5UE5Hw* _!5uNfe & &% _!bNe & $  uN $)U5| m- 5 & &%St% r $ U   & &% S U _N @_R w DE%%"5   & &% U wv w ^D55@ !  n" 3 & 4 4 4 4 4 ww~w  $5+ B &5e-~$e % & \    # ww  5f # 7 f # 7jwX@ m7%e w       # e-ww D 5 e %wp  5 e-Vw " #ww  N &ww rDCDpC $ 6$ wZw FN &wJ ~5 & E        ~5>wlYwfw Net@f $e  w6w.w  ^,U7P*U7F,D*@?84U ew dDE wZw FD5 & 5N $!w5A vBB-  }ee@ !ۃ `!ւ ` `pm& E%m%w w7*'$!     2 7(& A& BF7!W-n+7w 8uDAB %u f& & e w5 5  W- W00~u5  .luBw* J@B |_z)@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E& & z   5 , @ :% & f E &  (˥-%0     ,:% &  & 8 5E& z   5 , @ :% & f E &  wJw> a{host} - query T_A A{addr} - iquery T_A b{user} - query T_MB B{user} - query T_MG f{host} - query T_UINFO g{host} - query T_GID G{gid} - iquery T_GID h{host} - query T_HINFO i{host} - query T_MINFO p{host} - query T_PTR m{host} - query T_MX M{host} - query T_MAILB n{host} - query T_NS r{host} - query T_MR s{host} - query T_SOA T{host} - query T_TXT u{host} - query T_UID U{uid} - iquery T_UID x{host} - query T_AXFR w{host} - query T_WKS c{host} - query T_CNAME *{host} - query T_ANY res_mkquery: buffer too small SEND QUERY res_send: send error res_send: send error ns_packet.dumpGOT ANSWER Usage: %s [-v] [-i] [-r] [-d] [-p port] hostaddr #+3579;=EMV^gpxD`|QUERYIQUERYCQUERYMCQUERYU45678UPDATEAUPDATEDUPDATEDAUPDATEMUPDATEMAZONEINITZONEREFNOERRORFORMERRSERVFAILNXDOMAINNOTIMPREFUSED67891011121314NOCHANGEANSCNAMESOAMBMGMXMRNULLWKSPTRHINFOMINFOAXFRMAILBMAILAANYUINFOUIDGID%dINANY%d t %s.%s/etc/resolv.confrdomaindomaindomainnameservernameservernameserverLOCALDOMAIN: Unknown error: %d .>J\n 3Rap  8 W t  6 f }  ! ; W o   0 D W f z  - F h } RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator < ((((( AAAAAABBBBBB 66(d(o(xV)fd)eV(g0)c<)sf(lf(L(u(D(O(X(U w" E w D  +   r= wB w 5 a U5ff %ށ̥a &  bin/nslookup 755 3 24 172326 6024523025 6457 7 e7cce7A /  7%  w 5 % v6 6    2O 7z e 1%  @ȥ-55 %peN 5u%%t'wt'wp'U@ȥ- N |5N4v6 6% :pv6 k -5 @@teh(&@A @`& |% % @A @` w& & N l5 = f   wt(@teh(&@teh(& %5/ pR@tj(h(f& n%&]v6 6e -"&@t h( j(  @t7h(b67j(^6-% v6 6  l7 Ы Xj6 fO%8 ~N ̏  ̏  *j6 v zS _w 8fe & %75w5f8 e N Ա 2O =Nef Ы wԯw v6 6 v6 6 %v6 6 kv6 6 v6 6  w~w j@4 D$4̥. N u5 W @pHw ̋.w  NeNef %5%Nef %5% Nv6 6%w  2O  8 6  5Nefe  fef %5 %&fef e 5 %  Ա77 Ы Bj6 fO% N pRfeRv6 6e Ա@_w \ @  5%$Nef  7fef %% N  7ff e 5 < x % 7|n2 fO%@w֬7N~ ` &r N &v6 6eNv6 6N pRffw `7 Nef % j61"Nef Q 71Nev6 6%wN 1 6%1 fO%7fe %5 X1 ڭ7 P1@w 7 jNefef e j61_Nef Q 70Ne v6 6%wVN?0 6%Afe  & e 5 pRfeEv6 6eAol0 fO%NeAfe %5 B0 ڭ7 :0@w D 4w& % e 4̋ |v6 6 & % & %  U0U, w& % & % E *& % U& % E& % =& 5( f % d& % & % EDE@& % U $_4 & % E _4 & % =& 5_4   f %_4 & % & % #=& 5_4 Ne f % fe ^S 7_4 & % #=& 5_4 Ne f %fe R 7_4 & % U@_4 & % E@_4  & % !=& 5_4 Ne f % _4 wd_4 & % =& 5_4 _ & % U_4 & % E_4 $& % =& 5_4 N _4 *& % !=& 5_4 Ne- f % _4 w`_4 0& % UH_4 2& % E*_4 6v6 6%_w )((5 ̥. ̋( .&   %%) Uww D &( % (  ()5 ̥/  ̋%)/  w. 5 w Nj6 fO% 7^j6 fO%d *5r * 5 * 5 * 5@ * = * 5l * 5 P *  *  ^g *  h *  *  * " * (- * )?: * /H *%e  & & ߘ& &5&& -& ?v&% j6& d&j6 N& H& @& <&5:&,& -,& ?&% j6& &j6 wآw ĢdM ,f  D*?% % ڭw% -%%?%%  ߜ%j6& ߐ% ׁ  % n%π5n%j6 &w &Nef 0ff _%5Nefefefe}f e %Nffff 8e ww  8fe Ы fe fe  fe  Ne fe “%  ڭw4w D45 5 5  Nefef ff 2e 5= *@ vE@w @@me5Ce v5 5 5 5 5   BBe N y e`@ .BA5 9   v5 *%_n % _n B-j6ffe &e_%% _ _ _Lf 2O 45 _8Bm z5e z5ee z5e%8`%rB}eN ⫀ 5@ ptB umu B-Nfffe we5% 0Nfffe we5`BmN ⫀ 5 2O N&f |%_% tu% 5-u-Bm 4N ⫀ 5 2O N&f |%& f& v|eu`@@m%F5_N * _N@=&e |%umBm _n@ tB 2O A m @ tB@ m&@ &.B |% u-@ m 6f 2O 45  2O A m @ m&@ &A |% u-@ m 4 _ v5>%:  3 , r l d `5^P -P ?B% j6& 0j6  *Nfe X8%5 %_j _tB-_tj6ffe &e_BmN ⫀ 5 2O 5Nff |% z5e z5ee z5e%`_jB-_tNfffe we5_Nfffe we5_`N ⫀ 5 2O 5Nff |%5 5 5AWpN8f 'N Ա%AWp 49AWp%#49;AWpe49fAWpIg q8* u- % "AWpq8AWpq8AWp49AWp1 |9 _Nfe X8%%_ _B-_j6ffe &e_AWpN8f oAWp |9AWp%#|9aAWpe|9fAWpIg e49ff 5%NAWpe|9fAWpIg f49 |%;B-=Nfffe we5,` z5e z5ee z5e% 5  u-_Bm _df 2O 4 5 _L 2O A m AWp@A m A 8AWpA49 f 2O A m A15 @ m A @`&AWpIAm ^8 AWpq-49@ m A @` AWpA|9 f 2O A m A15 @ m A @`&AWpIAm ^69 AWpq-|9@ m A @` u-_@ m  @  __ __w 5 %^Nef Uf " e& 2O = N $f 8%@ 0 @ 0 @ @  2O A 1 2O A 9@ &fe |%@ 0  wC 5 ˥. ˋ N s) * Nf & fff xe  5  8.55 1),Nf f fff xe %% %% 2 E e  Nf & f fff xe  w @e5 &N 5@ @mȥ.%Nfef |%@@m0u N f ;fe 8e @e5fe& & & fff& te5 5& E *wNf& ffeff e 5% N ⫀ 5f 2O =Nff |%@w u@E@E&@E&@E&Yfe 8e fe& & &  fe& te5 5 r *wfffe f e 51@@ 2O A1 2O A9@&f |%@0 @w RD  Ա 5 @ m Ա @ m  Ա4  5 @ m Ա @ m  Ա4  _"5 _"@ m  @ m  Ա@ m  ,5 @ m A @` Ա @ m A @` @ m  Ա@ m  ,5 @ m A @` Ա @ m A @` @ m  Ա@ m  Ա @ m _! Ա4 ww j6fff "ew|w hCe =r_|$f 6  vE N#f 6% f 6% vE N2#f 6%f 6  v5f 6  v5f 6  v5f 6 5 f 6  v5f 6  v5/f 6  9f 6% Jf 6% Zf 6% tf 6% Ff 6 <f 6 N ff& |&e_% z5e z5eN ^gf 6%N hf 6% € f 6 f 6 N ff& &eQ  f 6 f 6 N ff& &e-  f 6  f 6 N ff& &e   f 6 wNw :fefff we5 w fe Ы Ne% f 6%N fe >k @@mw  f fff %eww f fff %eww v"N fff |&e5 + f 6 wPN z5eN z5eN z5ucN z5eEE5u  _L(=Nf A &f ? &> f 6e%ff A%ffa f 6e A @ ȕ 3@ 5&@ A @,@ % A @ EN @ E&N  u@ r y@ _) xfef |%%Iff ,H%r f 6%um5%ff ?%ff f 6e@@m@-NfN f 6e5 @_&%ff G% f 6%@ f 6%@tAA@` Nf f 6e    L [ f 6 N fff |&e5 A @ ȕ _(@ 5+@ A @,#@ % A @ E_(N @ E& _(N   B ? A @ ȕ 3@ 5&@ A @,@ % A @ EN @ E&N  | f 6 N fff |&e5 f 6 N fff |&e5 zf& f ~ecN z5uff F=%ff f 6ecN z5uff =%ff f 6ecN z5uff <%ff f 6ecN z5uff <%ff f 6ec_(@ 5&@ A @,@ % A @ EN @ E&N   f 6 N fff |&e5 f 6 N fff |&e5 _)@ 5_d*@ A @,_d*@ % _H*_2*N  >k @@m5_.A @ ȕ\< _. @ 5&@ A @,@\% A @ EN @ E&N \ A @ H AN ! >k_^*@ 5'@ A @,@Ax@ % A @ EN @ EN @ E& u-_-u-@ E55 @ 5@ A @,@Ax@ % g5 f {e e_(N%eugB _)%_( B ? A @ ȕ 3@ 5&@ A @,@ % A @ EN @ E&N  fef |%c@ l5 Nff @%&W @ff @%&{ f 6e 5 )@5 5 f n 5N N f 6% 5@@m@-Ї _)@ 5_d*@ A @,_d*@ % _H*_2*N _( _n* _) _t2N _( _d( _) @ 5Nfd f 6eum@ 5_(Nfp f 6eum_( _) _)  _, _, _V,A @ ȕ _, _) N z' f 6%e8 _) _1 _Z- _*1N$ _( _) _N/ _*1%_0/N zf&%e_/u_/w @5 5 5 uu <=N * fNmf "% 5@555H% 5u5 _7fe 䍖% H 5O  :_7N 5@e5uufeb %Ae@  5^ u Nf$ D%5a5 $ 5Hk  :%6_7 _7 _7u N 5@- 5w v6 6 u uNfp D%5a5    5_j3 _f3 &@S@@ 5%@fe D%5 5*_8=_7N * _7   %7 & 5_7 _7 fep 䍖% 5_7 _7 ff> e@- 5v_7 _7^5t5   5 5 fe   r f vf& r t@aUUNe& & feՎ re 5_7 _7 5 ff vLe_7 f f D Re55zj e}-=^ *f Nmf "%_"65 4_05AA v5_055 * : _Z55  _|3  %7t_<35< ꍵ - HB :8 % w\{+ *f Nmf "% :} %=nw z% :wzw z Ce  5D-N& y %5`ee  5 D- N& B9   D-N& B9  wJz 5  5 فD-փN& B9 w yNf y 5% 5`@e @-eecN z5e5`u- wy@w yNefel f e5  %> %!fe ^S 5%;@e5@e5 N%Ny v6 6% ff ;%5 pRf v6 6ewxw xNefe f e5  %> %XNe 7Ne  *Ne Ne  Ne @e5@e5 N%N v6 6% ff ;%5 pRf v6 6ewxww dw(5 5 5 fe& & & f& te55Fv6 6 wwfe   5  55  %7" fe 䍖% %=- | :r@N 5feR %% Nfe8 %@- 9  :_*<  Cj6 6% j6n3Nef Q 7X NeIv6 6%Nh4 6%X NH n 6%5@e5NfR D%55`5  _?%_?_?N 5-  Աw N7uNf D%55`5 Neff~ @e5 A r2 tj6 6 j6 v2e 5& Nmf y e5`uNmf y 5`N z%_=@t@ae&fNm we Nefe _>_= _=f%2vj6 6eL :B    ڭ7 @ _*< xL _.<@_.<v6 6 @ @& &B &@& B &AA vE f2#v6 6e _*k _tGA@ ȕ\;̥ _G @5&@ A@,@\% A@ EN@E&N\ A@ @ nA@ ȕ"_VC@5$@ A@,@x@% A@ EN@ENE& D-_TFD-E55 @5@ A@,@x@% @5*@ A@,"@"% A@ E_VCN@E& _EN"  A@ ȕ 3@5&@ A@,@ % A@ EN@E&N Nff& |&ef 6 Nff& |&_rD_C zf&f 0ae_VC%_VCe .l LnE5 l5NNf 6% 5 ,155Nf 9 & n 5NNf 6% 5@ ΀ " $_VC _D _C _H_VC _B _zC _|D_VC _C _zC _,H_VC _zC _E_VC _&F _H_VC _zC _I _H_VCw hNef %Nefe 8%Ne wxhw dh " v6 6 wThNef %% >5$ m 5(fe  z@5lfe^ |% P %7 j6 vA ꍫfe 䍖% j6 vP  :v j6Nef Q 7 Ne`v6 6%N 6% 6%  %Ne fe % % O  x` 0@ : 5& @,@% @ EE&E    D%% ? @ ȕ 3p5&d ^@,@ % @@ E,(E& @ ȕ 35& @,@ % @ EE&  : x ڭ7 p _Jw d%оʾ :wdw d < %j64. ڭ7 & *8 Œ wdw nd& PD%5uN 5ff 2D% j6 vv6 6 v6 v w d@w dDC CpN N5CpNf  @wcw cDff 6e G f 6 5 , % f 6 5 f& %@& f 6e,e   @f 6  ) e5`%K f 6  @&f 6e,e   _Q"f 6  _Q/f 6% 5 , % 6f 6 5 f& %@&9f 6e,e  ?f 6  ) e5`%K Bf 6  @&Ef 6e,e  Kf 6 e _PMf 6 wRaw >a>f 5 w0a@> NPf %V NYf %^f 5=@w `@ ( x`w`huw ``+f (wR`.f (5f (8f (>f (NBv6 6%@w _[f ( w_]f (`f (cf (if (mf (pf (sf ( vf ( zf ( ~f ( f (f (f (_Sf (_Sf (_Sf (d_Sf (e_Sf (f_Sf (_SNv6 6%@_Sw ]@ r yw]%*=Qbv    *NF 8%F    *    *   *      _^Uw \ j > < g> J > J> : > 9 >  >  >  >" *N"¼ 6%@  x v  5 w[w [ @ >e hd77 "e>5r?7% B%f 5_BZ%f_BZ%AՇ  @ E D7%  % 5= %f_"YBtBm-_YWpe!_YWpe%W @7:% _4Z_8ZA` _"Z= _&Z70_&Z &_&ZR"_Y & P[ %_Y%r?_Y@7 %  ɷ WpDe_W%fVf vWtefuB@t`-Wpe!Wpe% @7$% VW@B"tBm-Wpe!Wpe% @7% 12%f_X @7% @7@> 70>ew&Y@7x%  jȷ %r?_XT_zX%A~ xt r l@ EX D7%  @% 77(_fW_fW  @ ȝ_fW5' @,@% Ҹ@ E_fWE&E _fWw W  @eH-wW w W%AX RN L F@ E2 D7%  % wxWw ^W  @ H55& ڷ@,@x% @ EE&fE wVw Vw8% 2 d(`Ʒ \wVw Vj6f \ wVw VCe %$f 6  vE N#.$f 6% ;$f 6% vE N2#E$f 6%S$f 6  v5c$f 6  v5g$f 6  v5k$f 6 5o$f 6  v5s$f 6  v5w$f 6  {$f 6% $f 6% $f 6% $f 6% =$f 6 3$f 6 Nf& |_%_x_ z ^g$f 6%e z h$f 6%e ˀ $f 6 $f 6 Nf& _%C  $f 6 $f 6 Nf& _%"  $f 6 %f 6 Nf& _%wSw Sfeffef we5 wS.5Nfe >k @@mw \SNff |_%5 wJSN z5 ^g%f 6%eN z5 h"%f 6%eN zf& h%/%f 6%cN z5:%f 6%eu@ r yZ#@  xR#fef |%%4ff %G%f 6%um@@m@-NNmf&f 6e5 &f 6 @__%ff r%_%f 6%@v%f 6%@tAA@`%%f 6 Nff |_%5%f 6 %f 6 Nff |_%5%f 6 Nff |_%5 zf&%f GecN zf& z%%f 6%cN zf& T%%f 6%cN zf& .%%f 6%cN zf& % &f 6%c_aN5& >k @@m5_8dA@ ȕ\< _Xd @5&@ A@,@\% A@ EN@E&N\ A@ H AN8& >k_a@5'@ A@,@Ax@ % A@ EN@EN@ E& u-_ cu-@ E55 @5@ A@,@Ax@ % %_afef |%c@ ff  %&_&f 6e5 @5 5 N&f 6% 5@@m@-އ  A@ ȕ _a@5*@ A@,"@ % A@ E_aN@E& _aN  _a _a _,g&f 6 _a _` _a @ 5Nf%f 6eum@ 5_aNf%f 6eum_a _a _a ;&f 6 Nff |_%5H& _a N z&f 6%e,&f 6 Nff |_%5_a _b _eNT&_` _a _d _e%_aN zf&Y&f Bee_aw K@ r yf#&wK&&&&&&&&&&&&&& '    *N'F 8%F    *&    *&   *&   '   '_xgw J@   'F 8%FwJ'''w nJ   'F Ы FwXJ< ff (eu< fe (e< ff (eu< fe (e ff (eu fe ^(eF   W-.'/'ff%'& 8e ̋   ԕ %;'<'f1'& 8e ̋    ԕ %G'H'f>'& 8e ̋  _h _h _h _h     ԕ %S'T'fJ'& 8e_hw ~HwHw rH V(%  ̏  @(% :&& o wFH 9 E5 @@l w@w GDC E5<E@e33. @;E  5 , @;% & fE 5  vU3 3  wLGw 8GD .l h3!  6wGw G 0 h'V' 7 Jw]vwFw F  ڭ7 7 XwFw F j'V' 7̺ hºF “%5#l'f tm  w o'f tm  ̥ ̥ r'& tm 5=  o7H7 D ̥̋ ̥ %DHu'& tm   GwEw ED CKwE ˋ 5 w E& Ln f e  f  N&   xwBEw .E Ln t- N&   6wEw D 2 'x' 7 Jw]ZwDw D  ڭ7 7 5Nfe “% N ڭw >D ޳ @EtEx4PE vEE CtP vEEWtEtP vEEWtEtP0E  EtE@4PE  EE4PE4 4 4 4 Ce @e5}e= e@e550 -*.f x"5p  b %wH=(fR(fe 8e@e5@ p xN(Nfeff xé`f @{ ef @{ e 4 > ; Nfeff xe` @{ ef @{ e& `{%e& @{ e 4 @_v@e @-_uf @{ ef @{ e& `{%ef @{ e  Nf |%Cm 4w ;5 C D@m 5YE?B ; 5%.` @-.ӕ\SD-': @ 5Et E@P@mD- D- e@@@-"C- C-ӕ.`@- 5`  @5@w:w : CD@m5 @ e 5u e u5 _y @-@tUA r@@w": Nf f ze5Ӏ @ e@-=e= 5 %. %\ D- @ 5   %?} D-w ^9Dw`9`D- E?  @w $9B(@E? )w9 ̥\ Ԥ 5ˋ@@%.eB- ݃D @Et @PCm 5̋w 8D t Pw8w p8D 55 @v5u  5PuPA@v5u  5PuPA@v5u ӁPw 8w 7DC3 v@ w7w 7Dtfe %@4fe %@4A@  @ w7w 7>5 5 uu<5  v%w\75j% 5uF#5  _~5 &M  %7'R -    :ܫ _* _ = ¨@ted(& 䍖%  :N 5@e5uufeT %Ae@ uNf* D%5a5 uN 5@- u uNf֪ D%5a5   &@S@@ 5%@fe| D%5 jE W _ _@_{ <   %7&%*-( @ted(& 䍖% _P| ffة e@-_P|@ted(&& ff xe @-_P|At 7r5   5 5 fe  H r f vf&0 r t@aUUNe& & fe re_P| % "Jب 䍖%5 _P| f f Re5_P|_P|}-5 _}AA v5_}h :^^ 5_P|F :<_~<z_{wp_{w 3% : w2fwf2w 25 7 7 5 7ާ7)) __ށ)fe % #Ce  ˥ ˥ ˋm( %7 ( x Z X )fe % L%HCe  ˥ ˥ ˋ: f&@th(j(@t h( ,j(@t0 h(0 j(@td(5 AWt1f( %fe “% _%w ڭfe .fe x  ( Ы ) ( %)((5 ˥. ˋ( . x   %%)Uڥ w0Ww,0w 0D N -7D -: ~+ s 3  33 a r w wV0+& f ew 0j6fef p%5 *w/ w /Nef^6 ؃%w/w /Neff ؃%w/w /D A555  ԋuNeffe ؃%wt/w `/DC 5 5 _%%_<5 %*e5  AWp `eu4 0u%l5  %h%[ ȉ4e  _pNeffff e   * O  A@ EN D5% % % %Nf ܒ &    %_ A@ E%Nf ܒ @w-N D5 w -N%c%s%[Nf ff f& Ȉew|-5 5 5 5 %e%f %o%xDe5 5 A @ EN D% % % %- Ԑ A @ EN D _%+_  _v%a%f %A_%F_ % A@vN DO% A@v@mAm@ vA@v5u40 %a%fW7 5`u`u C% S P Ԑ A @ E =4%%.%e%E- *% ' $ ! Ԑ A @ EN D%+%-%0%9 A@  5u% N  ܒ =   @e! @e! _̅@t@]   x*Ne A _̅Ne A @H@pHw p*DC = 5%c%0u5 %s    D%r)%c5 %[r)      D%%   ܒ =  D- %cw) w p)D ̥^  ))) % %]%-+ ) $%-̥]4  ) ̠ ) )) %]  w(w (D*\5% %-%+ 5 55 55  B5eA5 4%.55  B5eA5 4 %E%e$%+%-  Wp B`e4  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& Ne5 55w&6 m 7"0]wF&w@&&& e& & %ReR$ @  1  v "@! @#E B Ew 0&$+ %w*&pw%w &DCB+``Hԋ w%``A@w %DCB B+ @mAmHԋ  @mAmA@w%w %DLw%ԋ w p%D Lԋwh%bw$w N%De LN 4eB,ex p  4eE, Be v Nfe %w$w $-@ Z,w$NG,2J 8%2Jew$aw$w $ w$&  ^%5u  - x3ff 4%5 EU@ff % f 4 44 e  ̏ 5 ̏ 5 fe& %ff %N ̏ N ̏ %$e& ;ew"w l#u@t5FJ5HJ@ 5JNefef 4% (3A@u5BtrHJ2FJ@ AupJ fef 4% u-u-u-@w" ~ ~w " Nef Ɛ w"w r"D 5  =& % `5ȥ= ° = @w$"e  w " BuNefef p%=@@w!Ћ Ћ  Jҋ~ @@ C& eJ  C@C eJ   6v   6v   6vb"  E6P6 EPw \ D% 5     |@w. 4- mnHlwz e& 7 7gwLڣḄI I7Iw  fff ewwyw&  4  b '     ` TW ~  s`K6!  w D85U5_~5P_~ Ԣ mʢ@e4 ,5Ne & L  uN 4USt%^65xj6 v5tv6 v5& & D% 45@e-4  % U5EU  wE w D  +   r= wB w5 a U5ff >%ށ̥a &  e 3     U̥r 33w   uffv e55 DKJfe& |%eL  L K& |%eK& |%e:L@A@ 7rԳ5%  :L& |%mm  Kww D@et5r%=r tD  @ 7b;" 0  w|e =r r̋4=rNet  Net e  @et5Net 5&f 4%  l7 lw DC .  @ 7%@ N 2!f %    wpu5&f % ި l7 w ,D@e55 5  ̥0 ̥x̥X. 'Ae f&ffff `e A f&A@vee@ 5u 5 @4 W-@D4 Ae B4ḁ.@e@- @D4@pHe _"̋@pHeA Be vC ̂ x4uuff %5uwA@Ef&A@vUU5uA@ f& A vf&A@vUU A vf& A vf&A@vUUUU BPw 4$  F w5 4@E%@EU5N&e Ы <6&e Nf&e >%4 IN&e Ы A6&e Nf&e >%  (Ne& L  ff eee@ 4t@t"4 4t : Ա_Zw N :@ :N Աww Dff %5u4 4 @ A f&A@EE4tmm@ 4 t  ^ ve@ 4tw"w D55ff %f&& "eff&e e &e ƥ 55 wwNLw5 5 w D5#Ҡ5ff T %f&& eff&e *ew6&e '44  && ef&& e&e & %%U w D5_~o5ff %f&& eff&e Ze L&e 8f f ff&e V e 744  && ef&& e&e & %%UU"w @@m e%fe   &e ƥ 55 3ff `%f&e@ &50c &e ƥ 55 3F6v6 6 U44  && ef&& e&e & %%&_jfffffe e _j&e % __je_  mm@ e@ f& ef&& efe& %%_j h_w @0 0 @0 N b77RLww D85_nNe& Lq fe Ve4-4-/44  &&  ef&& e&e & D%%&e  &e ƥ 55 ewwVLw4 et 5-5-5 5 w D4 4 @ A f&A@EE4tmm@ 4 t  ^ ve@ 4t4-4-/44  && ef&& e&e & D%%&e  ww D4- 4-  w & & teB & & e5u ff >eC ff e5u4 t "-t t"  ff ef&& e&e$& D%%&e$  `$BtA @@w D4-  4- 4 4  & & deB & & e5u ff .eC ff e5u4 t "-t t"  ff ef&& e&e$& D%%&e$  `Btp$t t"  ff Nef&& e&e$& %%Uw w r D5#5 5 wtwpZLwX  @ a@ a@m5A a@5w  D 5# aB- f a@m& % w e aC-w D@ A 5@u@e@ 5u   wn uMuMA@v5u A@@ A f&A@EE  A@@]A]w 5 5 5 uD A@w C  E 5l5@Et5l<55l>5u te%w D5u-5 wt @e@- @ a@ a@ a5@ a@@@m`&fNm |% a@ `` e w D a@@m e  w e  aAm HN@`@m &f |%  aN f`f |%  @A  v @A  R~55R 5& ER$ ~ER  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw  D5"E@e44fef p% vU4 4  fef p%5 w    6v&  @ppC`p   6@Cwzwtw D v & & e 4E05Ew7  Ћ P ы A@PЋ w FD:5UE5Hw* _\5uNfe & % _\bNe & L  uN )U5| m- 5 & %St%j6 j X U   & % S U _ @_w DE%%"5   & % U wv w ^D55@ v  : 3 Ա 4 4 4 4 4 ww~w  *$^65+ @ &5e-"e %N7 & ܝ    Ư ww  5f Ư 7 f Ư 7bwX@ mt7r^6h%N7e w  R D    Ư e-(ww D ^65 e %N7w  5 e-֜w ڭ Rww  N ww rDCDpC   wZw FN ԱwJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  ޛxLU7ЛvLU7ƛxLěvLAe vB7   % 55 a  a!PE -b%vL w$  `e vWt vw0@ `e @  %e U? `e 7vLU?Ԛ a7ƚ ?U ew dDE wZw FD5 Ա 5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7܋*'$!     * 7 & A& BF7!W-Ƽ7ރ& & "e Ӌ V7Z7 &7& \e ӕ-ӕ0B~|ӕ.  ӕ0~ B~V7Z7&7P & e 6ӕ-0 *ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & ze w5 5  W- W00~u5  .lu\7Bw* J@B V_<@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff e w5  @ 0   Wp `e0w  Jw]ww | ؀Ҁ ڭ7 ʀ :}4} l7 ,}7 w`w L 7 7 lL “%5#7f  7f 7ҕN f&• ̥ ̥ 72M77&  ̥̋ ̥ %XM7&   (Mw`w LwwRw >D CKw4 ˋ 5 w DCB P  5 , :% & E& z   5 , @ :% & f E  (˥-%0     ,:% &  8 5E& z   5 , @ :% & f E  ww Nefef 5& e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @w^w Jfff 5& 8ew8w $ fff 5& 8eww  5 %O N  = ZM555Ne5& e5M55'0Ne5 B& e57{ Be0" 5%M55 5 B5@B eZM a=%ZM7.ZMw %M5 B5Ne& e55e0%M73`Jʕ0%ZMʕ1  %ZM˕0 ʥ9 6@~ ns.internic.net.vN*** Can't initialize resolver. *** Can't find server address for '%s': *** Can't find server name for address %s: %s *** Default servers are not available Default Server:> > 0.0.0.0Usage: nslookup [-opt ...] # interactive mode using default server nslookup [-opt ...] - server # interactive mode using 'server' nslookup [-opt ...] host # just look up 'host' using default server nslookup [-opt ...] host server # just look up 'host' using 'server' lserver %s server %s %sSetDefaultServer: invalid name: %s Default Server:*** Can't find address for server %s: %s Name:Name:*** No %s (%s) records available for %s *** Request to %s timed-out *** %s can't find %s: %s %s*** Can't open %s for writing > %s Server: %s %s*** Can't open %s for writing > %s *** Can't find address for server %s: %s Server:set *** Invalid set command allALLd2nod2d2 mode disabled; still in debug mode defnodefdo%sdebnodebignoigpo%huqty%scl%srecnorecret%dro%sseanoseasrchlti%dvnov*** Invalid option: %s Default Server:Host:Set options: %sdebug no %sdefname no %ssearch no %srecurse no %sd2 no %svc no %signoretc no port=%u querytype=%s class=%s timeout=%d retry=%d root=%s domain=%s srchlist=%s%c%s/usr/lib/nslookup.helpr/usr/lib/nslookup.help%d.%d.%d.%d%d.%d.%d.%d.in-addr.arpa.HOME/.nslookuprcrSendRequest failed Non-authoritative answer: Size (%d) too big Authoritative answers can be found from: [%s]Aliased to "%s" %.*s.%.*sRes_mkquery failed %u.%u.%u.%u.in-addr.arpares_mkquery() failed |())|( 16111.2X2 HEADER: opcode = %s, id = %d, rcode = %s header flags: response query, auth. answer, truncation, want recursion, recursion avail., primary questions = %d, answers = %d, authority records = %d, additional = %d QUESTIONS: , type = %s, class = %s ANSWERS: -> AUTHORITY RECORDS: -> ADDITIONAL RECORDS: -> ------------ (root)%-30s(name truncated?) type = %s, class = %s, dlen = %d ttl = %ld (%s) internet address = %s internet address = %s, protocol = %d, port = %d address, class = %d, len = %d canonical name = mail group member = mail box = mailbox rename = preference = %u, mail exchanger = nameserver = name = CPU = %.*s OS = %.*s origin = mail addr = serial = %ld refresh = %ld (%s) retry = %ld (%s) expire = %ld (%s) minimum ttl = %ld (%s) requests = errors = text = "" user info = %s %cid = %ld %cid of length %d? inet address = %s, protocol = %s inet address = %s, protocol = %d %s #%d NULL (dlen %d) ??? unknown type %d ??? ttl = %ld (%s) *** Error: record size incorrect (%d != %d) 5------------ SendRequest(), len %d socket (vc) failedconnect failedwrite failedread failedresponse truncated read failedsocket (dg) failedconnectsendselecttimeout (%d secs) recvfrom------------ Old answer: truncated answer ------------ Got answer (%d bytes): ------------ Got answer: 0@*<>@6@IJ$JDJ\JtJLLLLLL ls -t %s %s*** ls: invalid request %s *** Can't list domain %s: %s ls %s %s-a-h-m-s-d*** ls: invalid request %s *** Can't list domain %s: %s *** ls: res_mkquery failed ls: socketls: connectls: write[%s] *** Can't open %s for writing > %s [%s] #%sReceived %d record%s. s*** ls: error receiving zone transfer: result: %s, answers = %d, authority = %d, additional = %d (root). %-30s %lu %-5s %-5s %s %s (%d, %d) (dlen = %d?) *** %s%s = hostserver%.*s %-10s %-10s %.*s *** %s *** %s. (%s%lu ) %-3d *** %s " %s %lu %-3d %-3s %u %s view %sgrep "^ " %s | sort | moreFinger: no current host defined. finger %sfingertcpFinger: unknown service finger: socketfinger: connect*** Can't open %s for writing > %s [%s] /W rRRRRRRRRRRRRRRRRRRRRRUUV$V> %sa+> %swSuccessFormat errorServer failedNon-existent domainNot implementedQuery refusedNo changeTimed outNo informationUnspecified errorNon-authoritative answerNo response from serverBAD ERROR VALUEINHESIODHSCHAOSANYunknown query class: %s ANSMXCNAMESOAMBMGMRWKSPTRHINFOMINFOAXFRMAILAMAILBANYUINFOUIDGIDTXTunknown query type: %s addressname servercanonical namestart of authoritymailboxmail group membermail renamenullwell-known servicedomain name pointerhost informationmailbox informationmail exchangertextuser informationuser IDgroup IDzone transfermailbox-related datamail agent"any"%d^6j6HW@WtVVRWVVVVVVVVVVVVVVWV WHW           )  '''(    6667?L@M))5H LL   * s|*     }|MM)RRRS'5)*5I)*L\5IVVVWbbbcqqqr  5H M]    !s}     u   '(##  !""===>!!!8889PPPQu$$# # %3%" "!.8!/"!&&*6*7```a$zzz{$=K!!8P5%+8+9%#,,&-;-<&**&**$,%.=.>!HH!00+ -+#1/+`5,"0,-//-1B1C22333..4G4..HI0HI$20::;;;<AAZZBBBC/DD/1[Z213E23F4&44EPEQ,::KZ;:A3AZfBZfDFRFSD[IGGG[Igggh;IVIWJXJYEE/BEENN/?KIoo/?KI0A/?O_O2D/?FFT`TaFFGT/?/@GUK[IIJIIeoJANNUbUcNopGop:JgsOXXXYO\g\hTTmmmnTTDO]i]j^k^___dmdnepwwwxepUUfqfrUU~~~jiiijkkkXdy\\eo\\lwlx||]]^]]_l^ddpzp{ddXet~tjffmyffN^itkvvv_yyw5ll|ll|~uiuppkppttyttvvvv5jZfRFfJ$>(6,.04 8<@DfHfL&RfVf\bfjnrVvNz>~.&NfFN>6.fff ff"*.>4.8<@n^FJNfTF\f`fnlpftFzf::ff"ff.f~fnBf .ff"f62&f,^4:>BfHPfTZf^  *-*-**********-**************************\-**************************A Unrecognized command: %sbad switch yylook %dr#x#####################$$ $ $ $$$$$$`aa`eeXfffggh"h>hVhnhQUERYIQUERYCQUERYMCQUERYU45678UPDATEAUPDATEDUPDATEDAUPDATEMUPDATEMAZONEINITZONEREFNOERRORFORMERRSERVFAILNXDOMAINNOTIMPREFUSED67891011121314NOCHANGEHEADER: opcode = %s, id = %d, rcode = %s header flags: qr aa tc rd ra pr qdcount = %d, ancount = %d, nscount = %d, arcount = %d QUESTIONS: , type = %s, class = %s ANSWERS: NAME SERVERS: ADDITIONAL RECORDS: type = %s, class = %s, ttl = %s, dlen = %d internet address = %s internet address = %s, protocol = %d, port = %d domain name = CPU=%.*s OS=%.*s origin = mail addr = serial = %ld refresh = %s retry = %s expire = %s min = %s preference = %ld, name = "" requests = errors = %s %ld internet address = %s, protocol = %d %d ??? packet size error (%#x != %#x) ANSCNAMESOAMBMGMRNULLWKSPTRHINFOMINFOMXTXTAXFRMAILBMAILAANYUINFOUIDGID%dINHSANY%d0 secs%d day%ss%d hour%ss%d min%ss%d sec%ss/etc/protocolsrr# /etc/servicesrr# ,/ '''''Error 0Unknown hostHost name lookup failureUnknown server errorNo address associated with name: Unknown error %d.%d.%d.%dqrqqrr%.*s.%.*sHOSTALIASESr>v"w%s.%s/etc/resolv.confrdomaindomaindomainnameservernameservernameserverLOCALDOMAINlongjmp botch longjmp botch   !"#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\]^_`abcdefghijklmnopqrstuvwxyz{|}~: Unknown error: %d---,-<-T-^-x---------..(.:.I.Y.h.y.......//(/4/G/X/n//////030J0d00000 1111U1v111111 252H2j2}22222222 323D3X3n333333RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator/bin/shsh-ctĚ ((((( AAAAAABBBBBB =951-)%! 114r(G3fC!Y&d;You7VV0{- T;>/ 2/[1a<=f`vK_zlG$6w$C M760n!)Y6N1Vp&8)3H+]<ܝ51;7$+g) #n0%a3 $ۤ V02nD91}NR7#:86)W{9:2}xL'|~\/q.pag.dirndbm: split not paired ^LMMhdNoZxf&egcs(l(LputDRO^XU$M7/etc/hostsr# =(\ %s view %sgrep "^ " %s | sort | moreFinger: no current host defined. finger %sfingertcpFinger: unknown service finger: socketfinger: connect*** Can't open %s for writing > %s [%s] /W rRRRRRRRRRRRRRRRRRRRRRUUV$V - 7p%:f  ( f  {  & h  h ?wz ̥:7 p*+hb Xw-RL Df  ( @m7  9 E5 @@l wxw DC E5<E@e33. @;E  5 , @;% & fE  5  U3 3  w w fef %5 Zw w D Lԋw w De LN  4ee 0   4e Be v Nfe r %wB w . -8@ w( N b% w BuNefef %=@@w Ћ Ћ w %Nf f fff e _  g %]@ D  %0  Q% 80 -pf % xc  = ?   @ ǃ:www @5-E@BepNff %5N @U@0 @0 =  Nff %5@5 w@ywlw D5"E@e44fef % U4 4  fef %5 w PЋ w FD:5UE5Hw* _ 5uNfe & % _ bNe & r  uN )U5| m- 5 & %St%  ~ U   & % S U _@ @_D w DE%%"5   & % U wv w ^D55@   ` 3  4 4 4 4 4 ww~w  $5+ z &5e-\e % & t     ww  5f  76 f  7wX@ m 7 % e w        e-ww D 5 e % w  5 e-nw  xww  N ww rDCDpC  ( wZw FN wJ ~5 & E        ~5>wlYwfw Net@f e  w6w.w  v6 U7h4 U7^6 \4 TAe vB@7 B  8%2 55 a  a!PE -%4  w$  `e vWt vw@ `e @  %e U? `e 7x4 U?l a7^ VX?PLU ew dD,E wZw FD5  5N !w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7*'$!     l 7b& AR& BF7!4W-`7 w 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B |_l@  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   wamnrsvsysctl%s%.*s sysctl%s%.*s sysctl%s%.*s sysctl%s%.*s sysctl%s%.*s usage: uname [-amnrsv] z: illegal option -- : option requires an argument -- : Unknown error: %drz*<N`l2APhu7TeF]|7Op$7FZp &H]RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator/usr/bin:/bin:/usr/ucb:/usr/local:/usr/new:/etcT \ T d l t |  @ @ d~oxHfVeHg"c.sXlXLuDOXUr programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator/bin/shsh-ctĚ ((((( AAAAAABBBBBB bin/printf 755 0 24 26156 6024532434 6067 @!  e7cce7  / ,  7%  w ff  %5% ? ,TN 5`%  @5 (ewj 5 5  & ) t%w@ ̋%D-NB &   D̥% ̥% NE &   D ̥*Ne x 5   D ̥. ̥*Ne x 5   D ̋ & H5 5 @ r y b5 $ @fff & e_@ff & %_@f @_ NNNfffffff e_ fff 5&f5&ff te _ 5&fA    & a_ 7 4  @f  5_Ne  _  fffff e >  D5  &fff e%  _    5 _: _Lf & L_w ,D%Xx ee, & R%l) s* 3+ , ww D %\ K 5 w  r y ˕\ ˕˕˕  te` @ ̥0̥7        ˕     ˕     ˕     ˕ w   wew  zwew Ne  %" z t%%} wPw <D JR 4 ]7 4 fe0 | %5u+ %%%!"  %"  t%!%"%Lte D  H4 wvw b x neh R wV\B D  w &<%'%"*e ww   ww  @e5ff F%ww   p  Nf % n f  & d   , N wzw f @e5ff %wVw B  Nf %  , N ww  @e5f  ww    Nf %  f  & d   , ww  @e5f  ww t *  Nf %  , wVw B . d w<w ( : ,   , ww w- @m7ȥ- > - 7%:f  (f ^ X  f d   d   ,   , ?w` ̥:7 Z *+F w-  f d   @m7  9 E5 @@l w^w DC E5<E@e33. @;E  5 , @;% & fE  5  FU3 3  w w  fef @%5 w w D*\5% %-%+ 5 55 55  B5eA5 %.55  B5eA5  %E%e$%+%-  Wp B`e  @`5 @ 5AupAm%55 @5A5u555555  55555AupN& e5 55w 6 m 7"w DLw ԋ w D Lԋw w DC %5 ̥+̥- %$ ! ̥0 ̥X̥x % ̥0 ̥X̥x 5 5 %0e e  ff Beee@ 5u % = A@  w A@w p De LN 4eeH   4e Be v Nfe L%w w -@ 2w Nl P%l w BuNefef @%=@@w Ћ Ћ w Z @5-E@BepNff @%5N F@U@0 @0 =  Nff @%5@5 w@yw< ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw D5"E@e44fef @% FU4 4  fef @%5 w   @ppC`pЋ w FD:5UE5Hw* _,5uNfe & % _,bNe &   uN `)U5| m- 5 & %St%  ( U   & % S U _ @_w DE%%"5   & % U wv w ^D55@ F   3  4 4 4 4 4 ww~w  |$ 5+ &5e-Pe % & .     ww  5f  7 f  7 wX@ m7 % e w        e-zww D f 5 e % wB  5 e-(w  "ww  N ww rDCDpC `  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f Ze  w6w.w  0 U7" U7  Ae vB7   % 55 a  a!PE -%  w$ ` `e vWt vw@ `e @  `%ZVe U?DD `e 72 U?& a7 ? U ew dDE wZw FD5  5N `!w5A vBB-  }ee@ !ۃ `!ւ ` `Bm`& E%RmL%w w7*'$!      7& A& BF7!W- !7& & e Ӌ   &7R& e @ӕ-:ӕ0B~&ӕ.  ӕ0~ B~  &7 & Le ӕ-0 ӕ. B~ӕe ӕ- ӕ+ r e0e0Sw 8uDAB %u f& & e w5 5  W- W00~u5  .lu Bw* J@B V_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B v @  A  fff <e w5  @ 0   Wp `e0w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w&w Nefef 5& 4e C ӕ-B  `ȥ0 @@ % 2%. ӕ. B- ӕe @ 5ӕ-ӕ+A r e0A r e0@.  ̥0ӕ. ӕ0 B-ӕ. B- u-  ӕ0@ @-ӕ.. @ww fff 5& ~eww  fff 5& ~eww  5 %O N  =  555Ne5& e5 55'0Ne5 B& e57 Be0" 5% 55 5 B5@B e a=% 72 w % 5 B5Ne& e55e0% 77`Jʕ0% ʕ1  % ˕0 ʥ9 6@~ X{#-+ 0*0123456789missing format character%s%smissing format characterillegal format character+-.0123456789%s: %s%s: illegal number%s: %s%s: %susage: printf format [arg ...] : illegal option -- : option requires an argument -- : Unknown error: %d,6Pbt!1@Qey 0F`~ "<^| -Ng  BUbv 0F`sRError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator ((((( AAAAAABBBBBB  8do*xfegcslL@uDD"O.XVU=(\ionmailbox informationmail exchangertextuser informationuser IDgroup IDzone transfermailbox-related datamail agent"any"%d^6j6HW@WtVVRWVVVVVVVVVVVVVVWV WHWbin/xargs 755 3 24 23274 6024533377 5721  H e7cce7  /  7%  vw  55D  5`   |@@me  T55  $ & K'=e 5S s, t0 x1 ff %% ? n  5 &r  5\ 5 @=e  5`e @5A @`5u1 &N T  P & 5@m 5 55_ ߄ _  v = N  v  _` _` >  S & }eu-C-%  u-C-f &= N %  vu  t      " ' \5 2  __ %  5   : 4 0t % &C-u- &  &= N u@@5f h%5Cmw : #N "%D "%e  "  :5  5 * xz  & Nf  X f "e  fef %5%   &  v @%5 A vE% vA v5ww  "  vww  @e5N " Nf P %V "  vww Nef  ww t ` 5e/f t@Nevf& %@ 6   wuv@ev5xt%t t@t @aAt AmpxNevX   %ч f Nfev  @     w pDCB̥:̋ ҕ/Ҕˋ ̋ wF  ;eww w-~ @m7tȥ- jf> X-RL H7|%:f (* "   f F   F  2     ?wr ̥:7 *+ w-  f F   @m7x r 9 E5 @@l wpw DC E5<E@e33. @;E  5 , @;% & fE  5  :U3 3  ww D      + - ̥9 Wp @@`e̥0  ww 4De _  t4 t t4 4t Ne&& % _ t 4     6t-t- t-t- t- t- 55 eAePPPP 5 5  55 Nefe % & `%5u7 , && %  fe %ff ,% fe& %w> A@E f& w  w w  D Lԋw w De LN 4ee`  4e Be v Nfe %wx w d -@ w^ N R % w 2 Nef w, w  D 5  =& % `5ȥ=  = @w e  w BuNefef >%=@@w~ Ћ Ћ  Jҋ~ @@Sw mow n lw e& 7 L7DgwX 8B*I I7fIw @5-E@BepNff >%5N :@U@0 @0 =  Nff >%5@5 w( @w   fff ew wp ywj w D85U5_R5P_R  m @e4 ,5Ne &   uN T4USt%t 5 :5 :5& & % 45@e-4  % U5EU  wE  ( R~55R 5& E R RRRRRR~5R`` b~55b 5& E b bbbbbb~5bw D5"E@e44fef >% :U4 4  fef >%5 wt wЋ w FD:5UE5Hw* _ 5uNfe & z% _ bNe &   uN T)U5| m- 5 & z%St%   U   & z% S U _ @_w DE%%"5   & z% U wv w ^D55@ :   3  4 4 4 4 4 ww~w  $t 5+ &5e-ne %d &      ww  5f  7L f  7wX@ m"7 t %d e w        e-ww D t 5 e %d w  5 e-w  ww  N ww rDCDpC T  wZw FN wJ ~5 & E        ~5>wlYwfw Net@f Ne  w6w.w   U7~ U7t r jAe vBV7 X  N%H 55 a  a!PE -%  w$ T `e vWt vw@ `e @  T%e U? `e 7 U? a7t ln?fbU ew dDBE wZw FD5  5N T!w5A vBB-  }ee@ !ۃ `!ւ ` `m& E%m%w w7(*'$!     | 7r& Ab& BF7!DW-70w 8uDAB %u f& & e w5 5  W- W00~u5  .lul Bw* J@B |_ @  o x d u        ӕ- f&@Ew ӕ0 E r@A r  f  e0 9e'  Aҋ D~@B | @  dA  fff Fe w5  @ 0   Wp `e0eӕ?w DCB P  5 , :% & E&  z   5 , @ :% & f E   (˥-%0     ,:% &   8 5E& z   5 , @ :% & f E   w2Fn:s:txillegal argument count%s/bin/echoinsufficient space for command%sunterminated quoteinsufficient space for argumentsbackslash at EOFinsufficient space for argumentinsufficient space for arguments%s %s vfork: %sxargs: %s: %s waitpid: %susage: xargs [-t] [-n number [-x]] [-s size] [utility [argument ...]] xargs: /bin/shPATH:/bin:/usr/binsh~: illegal option -- : option requires an argument -- : Unknown error: %dv~".@Rdp6ETly;XiJa;St(;J^t * L a RError 0Not ownerNo such file or directoryNo such processInterrupted system callI/O errorNo such device or addressArg list too longExec format errorBad file numberNo childrenNo more processesNot enough memoryPermission deniedBad addressBlock device requiredDevice busyFile existsCross-device linkNo such deviceNot a directoryIs a directoryInvalid argumentFile table overflowToo many open filesInappropriate ioctl for deviceText file busyFile too largeNo space left on deviceIllegal seekRead-only file systemToo many linksBroken pipeArgument too largeResult too largeOperation would blockOperation now in progressOperation already in progressSocket operation on non-socketDestination address requiredMessage too longProtocol wrong type for socketOption not supported by protocolProtocol not supportedSocket type not supportedOperation not supported on socketProtocol family not supportedAddress family not supported by protocol familyAddress already in useCan't assign requested addressNetwork is downNetwork is unreachableNetwork dropped connection on resetSoftware caused connection abortConnection reset by peerNo buffer space availableSocket is already connectedSocket is not connectedCan't send after socket shutdownToo many references: can't spliceConnection timed outConnection refusedToo many levels of symbolic linksFile name too longHost is downHost is unreachableDirectory not emptyToo many processesToo many usersDisc quota exceededStale NFS file handleToo many levels of remote in pathRPC struct is badRPC version wrongRPC prog. not availProgram version wrongBad procedure for programNo locks availableFunction not implementedInappropriate file type or formatAuthentication errorNeed authenticator 6do(xfegcslL>uBD O,XTU $ & K'=e 5S s, t0 x1 ff %% ? n  5 &r  5\ 5 @=e  5`e @5A @`5u1 &N T  P & 5@m 5 55_ dict/ 755 0 12 0 6024533140 4663 dict/connectives 644 0 12 1302 3063006655 7215 the of and to a in that is was he for it with as his on be at by i this had not are but from or have an they which one you were her all she there would their we him been has when who will more no if out so said what up its about into than them can only other new some could time these two may then do first any my now such like our over man me even most made after also did many before must through back years where much your way well down should because each just those people mr how too little state good very make world still own see men work long get here between both life being under never day same another know while last might us great old year off come since against go came right used take three  t      " ' \5 2  __ %  5   : 4 0t % &C-u- &  &= N u@@5f h%5Cmw : #N "%Ddict/hlista 755 0 12 141520 6024533135 6231 g˜ǡ̾Ib;*oȂۿ, [vŊ%%vh:b٢մwG%;Vay'O 17Ƿ:EHE5uQPI1^4C=ʠ2|Ҹ\p}laZgoףߡ(5bO F8[37zW|שP_xLϴB<&_ߘ.X:ZOIA~#ޗZq2 ]f%+>/UxA>UfjjQ Ldx7F0*jFR%|bKgwv; 4VȮWj&J>cL_TO~Q`hAS+U+NnUQ ,˗XɱߕbuS6Kgߖ3Fa6\zEG&䔮t``IpyN !I)I[Z'pǜ)[Vj?t U+.c $t{7/b^+%5Kݭ) էH̠1Ĉ*9z01 ٦z%xEHչ=-WplH+Ez=ߞ雸{l@{uY+ cL⬪޴pݤ((/O0* \yAj~=Z[ˍ J(W^},Nz.*^F DvkH |xh ,>bv٢E r^4P -'mĭXr.hNn]pG.ky`.C͞kkg _T+`ԡEuBb3¨ӹx Ymg]]bM|*TKjڋWbp.vh\&pE?I] y?B@fsA c$Zk>+oZ̪u;w >=:yH\鉙ةI)i(/ߣ.#ٕ,}yz̔';?19SW"<#|m `PdFGAgܒ3}qx:ڰ7fH]HvÑҹaQh .d`A*k9".S,j~7ʝpꓩd[7Щ$ Ŕ= k'I #Ń)w|?+5{QL-cx8פ(VyKVEk\kNSъg r9[7p/{HPM"ٽ5BÝ!2Zoh&m*X!)K6=}v{ em?DCF3zo&ʹorY@5!hظG=9OwR#P(bd{W0˂4')~diȹD[J#Xg#/J\\`WJ?or3:G^*zۣLWgO67{RٌYKH&iv -{o y^fd1@6fe1: z_6t}YqkJ]FftG& rpxQ(zҺ@7z*udДX1x.Lrhbh'^ .3EY\KǎP'FJ=mBvbv1G)('#kz2VB:,1dFG7Qlw"ex%eJv]J/c*@˙@8| 8&G8ZmI ahiR`uXhZrĉG'YݘJ q 1G^Æ14א"0t$Pٕ$⟤0.cj aSs|V= 4R]y?Ӣ{>}QyO%Tlκe"륬6_XT췊^Dؼ((ڦ~vn<ȉ[©~Xw-,q|\c:u΋=~h5!*78haGQ1e:]´=J3wߌ޿ "6]j ya|񻸸)3O䐾\#*\\2RDR^hAIJtֵ>ұo(Εig5& 8B/M&Xk(-J)Tm^&D\ruTHQd:c7mqbI|SdILP=f&X=3t"/z4+'-Mɡ -%ݭTo[kʙD6 l5jߓ镱l<"\EY84.}='Vɷs { 2Oj|)d>v .l¢l ÓKqrʹ_瀛E\\Td@y+$:tZͰp ZRӆG~]aΟC4(l\}AM}U8=>ZXxY*Jդ)D6Dc}HCkP>0xհ[|G,pbjcOH #/fD:qlمAZjG%W3n@gpO m f\I2Qݭя_=j(;0wLYYXٮ4D(]w{NIHnBg]~Gx\VP3$v>M5BbB~r6 ރrT\-π#m%Bސ,}>>M_>9m-M!G )&v)x^ ђIZTO7~}Gu:gs |2 + žǼ0=.;S3 ?R*&†l= PKE!.#Hؑ;[mkNgY a"?9J*-B*XbG9E)KAP^ "(BwZ[RW5z :Nw%Rs`9$-BȮ?cwt ZeѠCЍ@:e}/s^KK<bwT&keIZ@=tL!Gn>$g'JEj./_k n_PⅣ="6dSWY3GTxYa̬:1 /'|ȇ Zyjv2 t$ ; | YX;=bTJ7@jy; G"LP"&S mCe6ǖ?])j\sbo68V ]ƎE߼X87JU3:lRF=94!6ⰉPCTևǾ|g9:]Lr(sK^Tr1#uv.cZsƘwRHS=e'\ڹyGpvLǼKŦA@5sL?Yj?Gu~p(ׂ%qFV,C X:KEZ9SZބtRXx%O:_4me{:2ݥ`1sj$ˑSivCt}qM6v D`shM!p1ŢF7H=3ruYku`^[Jɨ(?8ό`Tw|\Լ}nU3iwۣ\>\mp)]YQArSA|f EmlpM 5v*P}I+e75 -arʍ 5O塃+m[xz(z<Djq,:#B QA-x =Z5Tj=4'PRO CZxX?BX*jy<|gcbwG^B;'N񛡺@DXomt7O:]jsbY  w1O5˘A ^2򨎺xb-̃Y#ǹTh|۰j1p/LC6_,dSkN{yͨ;DUB'DT]Q}"n퟉ʿ {,gTz'Fp(x9D[|&E`Jjk@A[ %WƄ*v1̯ege,Aئdt[5;u7ML#c!.wõp3 癔\Zzl`{v:Eг<% 9 Ԟ( ;~2O貐:/u:= 0/V[]uT#<>։y-H}|hrb6͑,U.."j#Hڟʒpv8Rqw1"xit\TW>2ƬڛrՈp[r٦T5}d;JBDW*7Jx~Ҁ$K-tK =FDu{*^T}!K놃o|d]FJ`QWEpf6c8qg8?pIUv|/>H+:F+0RI`CV6=8j~j%؝,nlLس6;!aRJ afdON eeml_Q<]ϣWηfc{Z7%Ⱦ_D-~P4;c-`Ȑʞ&}>uk Y˴%1nU;v& xvpx\.A4!P:`J i7mӲwpfXbCslBH \3o[/P1_TӖ0;r>>.%LX^#BWtf^ӄl_>vI){-@&x{4t{!p0;C~}h" _TFԐ5<|u١/D1Xjv? !_鈳E4)ZHhϗ/aHn9'vE-N'N6{t[|ΊY37TKM͎wn|fĄY^^jxl+R"Mҥ7RgrZU']|KW`#j6x9߁xzw$/{+e;B0o&(VrvHh6L1y&A3gFx2)6F\]+ x)@ovh]?_qKIM@ǬP/yyYl@an3/GrP\6̭ y,'cC$9§QzT\`mN֚k }z4.퍣3}7kBC`Л0tZ4%G; ߛpiĪfS&޺'kW&UEs!ԓx,vk M,U`E\h.lյԝϓJ[I~}TקGP>vV86L mVn{=yh*v/տ__ }-G\,Ahg*q2;RI7-Ks!T[ ÞEđ?[%2hgTpEpbIng菅o,P=۷'MCD7t怢/L9' ḩLi1"3ӏk}FܲGM͍%V}H~ 7 ȧ3\ޙЕ޶}ݱzTiZ%mO]ba=1;I `,'8dwQey~ɹn1.y 45s I&lQ(* v &):Sg7 V4ɨw4[Ozک}ŖWQ7&]葔FQ_U*HO򸉠 ͿkFz+_ bQ7zn"-3͙] Y, f 45t'SɩJOJHkn|K|re7CL]bX>B8v/Jdٺh0 ڟk'Az 9Lˢe=m\[D`{"Q$B)}Q~Ңk?6Mtk^[IOurN/[w9a?2p"` ֍\*GUzkw|?6heE`i+](i(aӓY{Ht٢-Ymd4~N-5}3&#\+;|'QÜOFjY0 y&ʶwj]ƞF0&X8XC wG]|zEAJ%+?.ʎ;kR5zUdgaZc0! Lh =7"К[{C}BOę,kRwAFX NJM~yuP.'Ҝsl`VS=IiӁ}Ljet:eJu^ʟ1}{Jn|/n|fk̫,Rg#f}?3fPջ-1.>wd 1l%kVCZB2s6ԩk?b|phQ$dM2E#(a^n"=H5F\X5x6$=ZtR ?xeiϋF#7 71*,F4jRzι!:mɜf=XhRfJp`p@r;5prE9r]]7G7R6ճ=w,ӭxm彿 \hvv6VeʹrR*u|u39O ]uf@knN`kʪsq;?.C/8gI/r[UNOPqQ[Qwĺ!iKhwZPD;A]eY۾TGgL`(WTusCqP΅b*]UnQɱ~M v%&yOw4'V{Dp'&Oq kt \7~PCN}]K0W&.@o6J{s+;>0ULiѴY/|!ReT:B{_\ %b̹%B#7=_[^\[,X7O89Z;N"x5?YgA?W{f~ p^f/v5gd~VlSoO?2;-Uu'|Nuؘh--p3x!"!Mh_8}x|,eb\_ N]*Ćr3<S6SDXү0 zބ4O˗S胂$$,0I8m>z U(Tk/Ue:M'V>e.1Vs8p$jhiv辳3-cK íO|6IJM?>rD `-l$u?B 6ΝN\»у!pݧ$TodE*e3 {ړ|oW?V`Pt?L*H҇]n}yƆ`)H'U-}9š.\y׋iWYFjd`n#\d'Ylyp|zlhN}We13 B`_߮;'Ca>A7jbOC >oFJ]AB^cR{q)ĩ='q88 Խ 39;毢Rj# ѰY3͜A3YZϭV퐚m#JC C830{% Szִ%KX~/ cAd52 ̧̕L '+"Ͷ0?]ɿG̠ _md7,ƣT1W+&T.XvУ,K:Zo%d2p,Σp 4 G^?|ugg TwLЬ݋pY 6 !୐3gv*2bq/o$kƍvƨjO{J闤|qY;~hpd2:Ss'eХhk;ĝ,i2cL+Ǝ%f=W5>'κc`oOؒ)==E.i4ڼj puӂny"{I'O[cN`Kba*"Il^|·zmW =rqNbW_'>ڟ"JKz ^W*k!%W ^Ry&[be92Q=EeUQf߈ise=H['{\qՆs~W9!#,yT>>`VD_u\k$Ѓ:hnPGelL=rɪv~Lk?[0Qk=$´\Lc[yK$YDGJIDb2+wT2 XOO vL[a{8^&3ot.K%Jo8aVj>rK~M'!c]spdk5d;c/τFklbG|f`DxRԫ09{9!oE_Q) u6`.)'3Q.U+lT*ܝ$['I.TYsn˕sz!|t^?Xf|;-,_D5nO )gگyɽ1^6o|:SO~a:{;v?r _"GT.`1|DG-?:NF va=D:L ix,]z,ɏޏ y lw$qoXYuD$3n2^F㈑J+7R:-f!g}=,+_ӟM.uu~hݏU=֥I< wvO1vfgJek6=tr ]cU|vXrN8j܉4Q3+.w6_bH@ I*b6(7to ګJD4x>f8x<糝ڤb7|X%#ceDX N&B$3F[u$6e$[3e|o_{Q--v4R1@z}[ Ѿ2'"ݟ4~Kuk,kd([l%LI;-dM!hm?1ŖtI C%{QCɓcs$ԝ$]r.o ]N(r6wU|<~PnHŸĽǜHj jp1(WUÊQdn+4g=ۿ%5'_Km%CčAk卤-Qe2o* ~\c|߉h=Ŵ nL?MqOT6pfD^FYzw* [FFjb]t@\fоIĉ[ٞH,U[f m.Ӷ^m-c pt^MIdKr >nQŚj6s#j1C)mDJm\W!>V2'7="[_fkb7QCۡ~ѴCʲoe+6x)Ay>R2迈v̀v:4%tō4L; 5\elE^N2mgU[r_E7{`GV y*W:E_*1[{-%:8A~tm#6xƞbv$=I coEAs6֎o Gu';x T:x"S "X/ڈr]ƾWL͑9&G/*;B{?Ӭ96O[,b_JaA=~c#w^v= Ex'LΖ)AkJ _nw Ki;hq$_W:mcI#;Jr vͺ;K$U\U\U%Shg5N5؎vn3K,p9e2s"n#zxA.8;%r_E[]&BK BBk DlCQ h~P/IV\.fGI0ٛKI>YsKHG6]=Hf}QC$z<̵2l-dBs@jBZٹtcsb q7lR^lΦ:S) ؄+Ј.t |/y 7U}Jx'f5]b)_RpnA6g&j= q DBnc \9 uE]#Л٧Ǔqi CO{Jm k-m/ٶ.+VcaEv슓Fh !k]= y e醳b3)[ R{aovwe[  pO+//s?2Q1_wZ a։8>1-I)W+F:j)m4?°4p1OMm#cXOBn [|u, #?dJض Cˬ>y=3^8%(.5{HT[^UGԭNq;Rʟ > ɐŬ.b]a2 s ڝ݈& IUEEdJoHZdv.<{ɔ'SX57Ռe*.~1>cKhPWvhF4_??be@$ڷĎsU_ĮxV<+6 }sFxO~PJh`GH^!!ϗ, 0% ю>'h70aSr^* R , |.=ft/ҁP)ڮVfuĴoIl5ۂ9}&.fVXiuI#wc*oASJWsOI؆Ayo %SS"rzhPj͏b2/K* ԓd&Q,2I(.HQؒI? [A : 3Cσ"'dΝB@l%*\T~v[|ls)hg習-Mt~GF N=k|({=㲰qwv昉۬7e#V-7Vq]O/3Ѡ}U_o0&SOT$EG:B'Wk)ݭ^+M^G|! ~;s^䩔pB;7ji"tD- &RWB ;5xHr i5B[]2l7z<]j vUqB$jD1S˙I0ǸϤŽ5ll  C@y{ y }:BagR\]+ݔ.]Fa*hrOjY3)]X#geT>V|`mi 9G&wobt#W 芞 By9.qRAcj<vsamr-/V3 "vPr.Mhdz"7B&hG>ƅPbWb*XyXMoaUA'솤h\}bOP]\V\WhM慘mC1A{y}g4fL$lR{78OucsMg6mS ţ?快wUNIͺ˅'Vw7'}De^Im q摣h%$ɅC6f uKl&ϩ`/=~ןfX>`#M'-$?8Sqha7yqKN׿[ù~qa@tػ_d(5"db WBٓ6Kgq`0k-4 }}nXØaЈ qg_` 6P (q_驨TMnUbښɍoOtq89]IyͤTG޼kN*]fbxd/#ZS^ۢa.ץˠ liŹ6z^sB?Ų&[g۱d _-;Xyx#/8F:=5Ss]co(11>&&θ[y~v~G%6ed⟻iZ-M[=?=~ 07u6|pTLzoӇPw(OWr5_E?ԯQ ?(}"]+',mD-?J:"ƹm"!t?D/a`8'(KxΎL*oFe7²&l N1iTGq8۴;[ F LK6'JhPҵ~-5mW+kC2255"FL~R Jbke24nKbxnd֮Q+S7ϪS|iO]E\J 2'KT}*+%zt.T!ⰍB j0D@(F`TBcd\SOeu h)i aA/|Y@͍|#&\&[4l6.&ur j')^ pƗS 꼪{ ƻ$/K#ή1Gn]ڶOGwSw:KzD1@7}w`O/9܋2 Gy:f\+b+#(d}$ 4^5֣-\?^U R*k~U M D-yД"- /qvo6Hz|!FyL Ea/HoK鲋dS!,UL\cO1I294}Iڟ%3GLtrL,lYXMkJN nAeMg>bh<ϧ#$܏|Gm<4oOeAqGo}Rzrzc;y׾ e{Hv?NX@#@]K*^HD[`w+{ʚK3g(;ieO͕&1Ho|~O T<:W#S@V:\_dL 9[OCzm_^IXAdeQ,1(d=8Z3V.*?с6i{y3ΝKt "V˙ UC+qML+h4]y6%,gHHR_>QR Ÿ9N~"E_QF ,V!92ee@׊ MTd(CRI.hj< Jli:3T6Aݻz$e;61WѕBm<z3.`)E6x(d m/ǡq)ywQ $bEm̡7/|\h'>Rw942r5༪]'n~4놝wyrv[U8<C@8ɯkVZ5OS|t33j Fm5tj:=[?ɗzy|P{- .b VځvazYvjW ɫ'Zm3=ȬYN4BJ|:dT} l815֗1@߳BoWe'7ysp#̕>UC28{-0F~S G򤴺ƴ2):8{W;Y\ A(Bx0PeMmNqX"D3k\U;Ta*ns#bUgKiJ2¥=ndH?gl~R'}d'Mҿ ݩIsjJU{TBg<4,c%Ư~^GM]?5ul|VMw6'ÍOp1r`_^V{;T(jN7X3C Y7듻Ii_{AfRrfзD0#!$kfibE֍O|}mrVAڪ'6N Pp6 9.׮3<Ne=!1:JmlvG8>t( eFz *y﫸NirŗOa^ ?~!LӤdkJ˺Y"O5r#ߙ +_ʰקZ3TA1F+|6WTdEVU~^ >/4E0%o<9$()chTKχKh P[(?}NUHɟBG_YLESl{XalzM pkWlMQ)L*Q&~R7a83,81wvtZWc[Gic.8?wCwvK]$ uqD/,xLƹS02]CF`‚{.I\6 3;\~WNcɍrlL~5S;*#*ד][Y83sgC }\Z )v[ۋhW&`w?v)A!u[-H?`03р|3 ) U {ZɮBJy2r>lsu 30< jcw t" C?ԴނNuȭ@IW{#+2*_adΏ>wroQbߛId>y]JlB`9_6 .Q!GO?e]ZҡDQ[忽0 h2 qSn73*QN=/c$Wk>srxDt,!xX YV3i:~bD\/fJtZݯP U^$?Ҏ<]Psn&.jO\M 5Kw(y r&_3Q`gNgnSNE }fomݶ1`2c4Z* A)F׷1$B r JHyvT7VqPC}Gtgk/MIg`VV]- MpSMִjVy5|w4j.\/.]15iFr>)9)FP@}Yzc/zNM~?xɟ󐗹AU2j֝H?/H" g&(`6 S812w׻gNO$t㞬G ԁo3?)zҊټygΩ p^;YD%n֦bdI9-GWK4܇q G8kC8me^ ߂@:9Ԑ_x}C׷^ioCw5PIS~?21:^Y+P`򐇒}d[1ɱcAӷna)]&.[St3b9yv@^#R 6O/z)AŘ Xd +wJ>_]0u? M[vB`]=(iʶ;r- #m弄 AִA4"-< z$liiiC cz1am]7xG9²t3o"o[6lKc0=8jxA퇎1+us;%S/AIB.yMLᧅ3lՈIU#fzu{ޥ*<3ODjKk_ęO_]Vu]p ӻvXHS , { +q㰴U{ {ٴo\bhDvUÝ c7W^X6Ó{Jwbrlj}_zMke毩mb;&$fqeal$( t}4?63CA^yń XSonRds.ئ3l| puEO^L%%&7:^ec~c_,:zu dHv;uFDF[;DOrR`T3, [J98_^C]nlҾy\LC򤩫<= l"X gm G[fPot4#^Vbc 1Rיة|,ȕaJD;z,}C[RM.98T?j:b#yɈ:ǭ'nSӗ LSmTo˗c7۵]ֽ)jN&g_/РB^eh8 -MC(>jH zg7xWrb10 OwqfІQ76yTzhC,F-e4_?/qIy5*MKyVfYZܠ~qRxOB/V)s4FLt?c}'84ȧA-2LZoȮA.j#C*fSȸ3ڌ6{eH78Q Sbup>w3=Jԅ;,2]q7TCjdպ`Ogx;r{5)xKB gO׌HpoM^.4ޮ1̎0Os_5 #oOXBXMyVK]~PXwM#)lb.}ѓ{GÿL: Z دܻ*jY{WQ ;)ׅHrRϷ[X=m $N>AiyѸyu(H] ; [㎒S-ͶB-M|B!4`f{0\<(eg*9$uKCiCfH1 l7JU鰄`& ;B`hŹgLy;R?QtiTKl*C~|UJ~*G}U#Gm&գ -$C~hǓ{|3:oA] r${7 gDugM#6kڎ2?'cGRѓ* X;+zOy5IMN\'e@بO|ϖ,)K|xnV).*ԥ:tn2(oB_шx!֗q(/E:4_L2˙VЬWAvKӰd`i5oE޾4zfkOPV,ꞷBr9 r36v6V[T)dG[-! k~~WG| ؗfٵ~&w%d/z_Zc6cY͑^ܛ=NG'Osmj7w %> q 5i,\rr%_ ^3 Bȭyql3+ń۵;_/GsHd./'OE]$nѾ^2|K:%&5AOfҞVh <6=Iqg?*GoM"KYkl!bT6)+@7&5eg1NgX\\]1)3>TttiGYU7Y_[DVlV q.) W+ +0?6 ݨUWZml6|@J :ۛ7UV0%gv~1|x`w'T@U6t7_gUL]%I5i!| loAMk_2yazwJG Qh')v;V4ʙI {F6 Gz[6q `~ׄCo&x z_o<6_?_fRUD܋NE.yTtA,'rb^7xTW̿GY_'U븥HF՚-~ oSYz1n}C84%q|)E߹uD 16("eSdz #-!.Mmt/J67 6T?ەЉlqY6%:!#N %ilYN0)lTM'7q1 uVѰv\A./~QW]$yԝ .Z\p]6վ)WWj)͖RNlփi/KH)[ ?J i{66U]L6.h$BR;0:Eق`Oc( Bx\M>8ãB_c/C aw8-z[ f.7$5K]f׻{'o b +̻m?cپ " ]h .zn,rͅ啍嘺P Y2Wz/='!jmL;-Vxlׄ7+n"R]1yeЗ 돃#mb}IHn!]kC*g  SrkGrice<4BpY!mcnraS87XzKftyCr"][mE2EIM 3tr+.#j~>.ؙ2hk;>D nz yRdSu3ĝ@H!+1s(Hq\GZT'#x\/4] a]텝z6ņ=먂ϮޯAF bHGRo@^SCi~;ѝԓƔ&kżXZH Ow3|-GGy^ZjEtIOv_G}pPe.V/&{ՋnZnOrr\4 $#Dg4?2:#0!bw^免9Mh~l9~vo!c1#3/27%}¹8ul1geqj7Nvrb!9J U ֈTYख़qƙjR?6VٖOIq .?Tʆ&?.ɸs i6)68Dʐ&RY"b:lkl}ls< #@x >/A#r5Bt}u4!`p<+qARM9vVWkoN`5^؆iH3ܾkȱqb1FEN2:ü`ic&6+Q6wC#B'Sy #Lkm>LW}1ˋY@Tސ GXxXrk_'3 *n'vL2!kɕN}~3}kTLhH^g2F<̲JhHk7>3PA gW^HN<4fUK a]@J8D'V-[9=H|% Tt"a ^GX' ]=j0˵ 1[jtM9^RQ'){%]%jkFңc:uXFzUZ7lך,mVo&SsFpaBлSR3=;_YNz(g7Vw-{L|{ 3E{X"!y}R;#R5ie(B˼WiʠRN῅L_Kn͒qᓫьP^g)Rj {*ۅY_^*oa)}g %* v?^zދξ5B]}GZ37|ʧAIkV}ԒEh t}iY1SH)'z^!aw({O9LXdpǦ)-`""aw`֠eTMK&<憋*)ghl4-\\sޢ޸TFcŽa(|"k88>ψq{mhk;kc[s;sV D4)L֬Q˅^Aĥ(ˆ`ɿ?q6k6hsb ZV]?Hb?Hy_h8]LPTDik*Hv JB+PMh}g-+g@;O~W`o[ ҅`GC@ɜ4"fUBi;T|R7in=;+fo[";~Ti}*2Y,]k_(*^we9 Ab.goQ,ؑWg{ӵx-ཨ# ёּ'=+ssdF.*pkݧKZ`_yI華xEx5wN>0O[[f:|[*1K~v;ZײKt?>B f@8"s, ҵL(}G)OEcݱK圐^˻ρ!cbq͏kߤ~g״uvêJ>]9hn&t4 .iR#5.eTٲU$U<1S4IbTq+|ʹ$NAWO &PV>q64\uP4ƥ Z{0cۂȦɆ!^1S£(;5RNÃtIsiWw7>ķX/Y^# qI\3n=OmVۭ8E>aϒ `/>[}n5!:%\#fk?p =m.C^x`dջ vj$B,'Q1 jG jp,,Y_'J<┘/0 -Q<=]x ܔ\U\ݲyyK~V%O9jqK֤z=MMcFrЏ"iX=bc]{+SUܽ)cDv됊"̪ʐB?Nh=/;e:uQa$G g"Zru w]dnSJCv-N=3-*{גl+TӁxM dEJ9#*,󠷚V@eU s%2FeX9 9#c%?B{ȫhKq}ǃt"P{KD ү֥9چ.|Jsw !PO %)>KC Ox Y }^u[~kqVyX@֒tMyi a+jB*۞KOrtֶN~'Eѣ\E^0lJN?ʼ֦ϻWw+c keJ]ZF9t+!=Na(+&o#!"X gӠi]YӨW!RQ!F7Wcb#VJ=VqZe4ǟ9 Re2\ɤ 9RZX' /!66_W]?l]  t_[t[7!bܻ2]wU "b Uw]b|B.Sj=G).Hxk96n'PTwnJ @!@-_)F=@kf=4J2}bn1*"#P?E!%>RhF~{;%eXƱgV\Qcc ,aRBS/Qp%z7mҋ4$_`]F>>n>tQc/}5GWdP{I䨚:C@krDSmC)@yh2mO%i3t&ݿW!3x=&z§uǁJR^lNtL+:;y 8WOϸiPDuPzlf/P$sk̔z',*d2`֫C!L%zU\* /6$cQ{fT88L1-bRN:.#kPE^dQWay[D~ĭCJ R^*E +B]:T@V3zO=W`igGM>ܸM~Jofhn6i7UTB['0L-{{&^dYB](^reGwקa0z:]gNnr& =es"+ѳ3WW&1Uj RfuA⨎+Zy7ȵGh|fJF!Yo~CyV ]4湱/IBmRʄH&X| j 7b{2";}8'r 5a^a%Y"j*3|.T#A G KQn&TQV9>KJÈk)OmbSFwN5\ԊE(x).9_!,72{!S M5$޴1͏=NDբܔ'Tt![Jv,{\rO;mYܖ)֔/![ Y[M2*{gh~ kPK*aӴt4KA"Ի`6pmqb3o5oz,0~i~}U(la zOeB>%{ ^tJ]Ѯ曭9y[ GvY'O(F=FPK-5NJUeһdz/E_=GU蘋4ekF>3Zѯ`3 ?TϾks#m.z+ay'E{zZ".ϸJcXƦ2NGΉB(|/\1Y%k~i-mbT=+aᒺs1 9gq@ 3׏t#j'S͆p/9Kcgz8'&-࡭mk}%(==Cz L?\39/͉c.ۘ-jRye@Kk*muyni9R}%F ޔ+U,w:߿ywbNŲ/9!OTՕmT>) Sk:S>;<:`n ..XscuZi@M&,Q8*h8(f^2x'JXLt=U?q{=[SLHg5ܫV_PFȷ{6o9)iWn.U;Ѯ~H.Qji $ߨ<$|2/ :OoE%iRVCNژJFށ'(Q > ) p&mV@ק^e!ov):f!m|>F|I NP|!t( PA6괪tˡ׍~b !'[: aֺne7J&fNtfo~ݎ`3hgfpL÷L­`k/cѣ?wQ(ΰMPN9i<_`*N&HNL3ҽ\C5ŇЏJ[ϵ"=w+m.:(Zo?WAWv;Vͩ⛹^cznЄ4Cq{QU@LXxce}f*Tn: fc@G(u޷ȿLmԚy-lq=mh.Z+UX@yA.{ego2Od),KڧꊠfjUGT",4۲6(wdčfK0X^*Z.Nv[p̄ɨ:.z캝lXѵ[_LnKS*"w֒?sBEnksA雊Hv0b{( B87IaRh\;^DvyȽ~uWF_bj_cS<)Bh0FL16VNd "om&Uݲǜ,jYLݝћWd!ѳɬv8kk{cuTi1Q#sVL?Oj@Q5ABS5|*. QQSG$`in[dE!|b+|o Ef/G"3,wbV2l&-ܤΤ^$9+Syjm(0}Fy!{#9i,T ؗ---lC ?JI/k)bxC0\鷣-ѫiuF&vHIír[_kחՅ}I>nS`|=[uo8hd&AoY gs۷77Otjk~-]Gȓ$2ڞ&e CUGh洩LuUQXMl6- #CGIwЧ`8s%,S kȾ`ؐUWPۗi X6Xr 粰agrⳃ (N2AM6=Q;afRܙ v>Qjt4綎IcRGr͝2"s蚻wߓL{)8 ~+#Fej,`Ş7rN@[(OA9 3dy_b}}_,JjO)gW#Zmf7& "fQzEk30~Hȅط~]ID^H漝M>d߿T˹7seHv]Q܈6i25›lOقlZB>.tϟ44ήzP]> ]#/sߛژbۧdti@p%@pWS)]`G7$zLO@J'Zp2Y_ R[E IKT-[cõ]PʼnQ+d>]ǵwPo7lMcKc`#fbf -RgY~ʀX6SS 9[ njT%t1_xyW6Y+ G5 [!UGsV6mI7,hPi3"uVbA& 6AqI3\zRļ!G*b[2# @ݬmCO1=tNK&E67*n gz(!4bέOX7a~_j=WS1҉d+uŨ V^4@b[xJ\B&) Bι]4IS7STCx-! o?=ͳsF maŐ&%$ "sow 'W–|T_Y N'- >pKEC@xeijM4FdMCpؕs`zSwG~잰gg$:.fFUR0L^CK+䟛"Zِ xH`! ]̚#ː1;4 c,Y0l4c&Qмr}̠eRJƅl13g\ !v[-Mftc@U4מUXW~:vnkcN˿2h~0Cmx3afhŲUiOFUOalT<|5V*1;Pji ~[f#H8G3H4RKBob}_G;MׇwCC?EԧyF@ww_%NtOw\qQYzER{wn"x崮_F N#Ȃy܀gQ)\\ZG錐/#˾31ۚ6zR̈ab!(c !:hRxù#8Vd#_a]IO0/7Ӷx+1VL(?e TR*"q5c_ [%\Q;5w:H/fVԻw$+qXtI2P_=3v)|9iLUlhn! &p&mqѩgQ#=3MrvgĿT(BE'kbʂȭ*m Oq[?%zZ~r[E:Wcj9ONy fn;H-g]rtkW2&Ջ㜎hHR'|DzV$$Ǵ6_vo(eXN!ޭXq^ݍUd5&fXa9wp=Jdm7&g ámQ⏘UARg+36:)KKbI1*W}5C5iKoᅥպ2-gfE>4ƈ[+K?xsSгv>w#R8i zL7f|_&wUܟFqǎ9*Y w);X-^10^>øu]i99²ӼSaד 8s<ߋ_͚gQ o5آ#aK)UgZ\Y{{fy?#y=o"z)+Ǟx=פ4mupI6٢̑r'e{E<7.w|db(}(t7YC宭yp zʲ_潚SKVGgZ1Uumkc jFv$A^_69O'I77G }5}A%$9D@2f+nW5#jF4㌧-'빗+Wej+/u*K[HP'L/dr)PKz3pnM&B sš5$*2\( \|$۟rKa-.qq:ޫ *l{[o蟛Ѧ։1s1Vt"a%6/CRNضݿ~+CIp'գ]0B jP`>SHI2dj;zfVƸ xoA#6 V1lh Rą™ɸC,7Bh)C޿5ڗ`o p+?# Q֘5=Ik%_ceBͮ7~"OhmhdWO2Z3qG(M0F͙g w:4rx!.o$n*.Q7ŨN;\yԵtC bLW EqNkO̬b6Q`YlA3߬P<ZL.ov( L ,T&ןYѽd#Ԫt@>wv̳}s`ԋsF$nI#I,AݣE. 7KrT3Ta:ez.6c-fCtgER se˗*2_n$5T10w@+CZ`i a)'!/\ڔB%:DP lVV62;N.-Rj-cr%%NHMݲh|kO;~j>nCV>l4^o6tn"wSF#9hNAI0pOou@J>,5˺G̪K=%!bm~4;i.-}3toUCv7}O颜z2@{3zEq{Ϧ1̬Nr݀#tz؅GF6[B&=0*jwVL'FKKe1Í~Wib_Ry3uj~IJąB(Y7 PFb%)XnfmyR/]~W\xv@h|d$;Rf\8 =V+Ql-:&X|<+^b8?ir/"B~WFÛ剫dH (S]!ȵ1I߰ f=%W5k:lK= wЪtVYD@Iu7&<3RX0|sڣ ;RCBnv"Ӝ S=lެrYkKT8bUMfYʱVk q.3r, BX4ARTCIFUt*1uWl_zx3bT^|B~IU rQԵ Hnzޛ#;[HtQIݪ@߿mY~i<&_Y5L0{kW/*!absғG4axC8VQF](岹4ՎbCmF~GDaS> MXЇ7 `w6֝†sZS"?@W"x4。.&b?n9N)CFF3('c) Ң(g7QbncyŮnINϹ`{E*`ψ:5)4(g[蕑5*Яz@Vd8{ 1JlЀD܋CʼIt'鴈rpH:NCx9sXqE ).^>hgĿa vUIXYc1Dc0~zH@c^!WFw@#EKa@f\wu 2Zb[KƎv6d_t<.}<@ F/ם6Ƣ }>y<- #jr8(ޑaÑq-Ug{Y'?K)*&a3JLeg _GrYF} 0*!Ӭ'1U<rUA'4@jv8 fVI, 9i]c I@y83QH/2}Qr8GrB)"k؆tqsTѺ Kl".Cܗ3[zXb3ЮRX+x',A)Z P\Gr{ZbOf5D'[Xl6_~_>bZT$"*0ؾ y6fDrDAA`hY2=rd@&lpo@bNK6 c?* Dj9_(p`9W`DXOв| [?N¸ $"[E.<,hY jzH@ǰ<Av#aPuޡDzf/zi"C|>w(3r -Eφ|Wt]R#qVاgKQKډz@^ ܽG] OLJ]W{x4[߯S|ޯ*\R(#xi͵6Ӧ% !Kv_>υK?'\czvctZYEӹLd7YO%u =e'\%T7l_ bFDŽ^jGQlK*kVKG~0~8i S M/0@-f$8P_; tnV=Y|״"]pv[c$W19hdGh:w)DL$PZ J;ޛ:y os{)̌{ջ_!\q\ A@9v^]iwk!ۇ۵g\K g~0/V%k\vg;tޅŀH@"k˒GZyϝ ?~{4v5\ក3`Zpg߬7 lٚbہY#?<~Wݝ!W*_Ff{-v0&݉DgV!sc{σb-+w ￐{,7!56Fzi6/ns`=__ŖLapö? cEZ8r,hAbpť&7G{>V$9Vw<)aM !98&&_6ٺ}S+wG\Zd_'H/FS*Vg3Yg;Rޛ_˯挰YTFK~4J*tc@"D(# BrpCZxOreÔM "WțF`37m>1nJm;xo~m>z ~hԁq 5>N;f: 56=`;imN9;@Փ`(`S3"33'sqlR?mi!IDB|k}$^sQQJb &SdeV8]sBeXƴO˄&y`OK͔hDYǮca4hQTp6KqDH_ĀYbhLǾW/zSĂZ cuլDģGYQOsAqagOhDS7s{mpCSSY(R4,&9!^-nN6wLkY|eO?O PqFm>H9Ji,|,-aCإ/`x'"ZN%rJi*΀c˖NNFς{ ~%nn DuV,juEiSq^'J ۼz7nN72uxV(w 1)-rEI\"\3\6̔H=0fqPֺ(]l¸*pBiAlM&_ⰓβF T 3\?-8 MBO:t4$t lWYtH YKTUBG=gNHֱQsVK>"ZVߔmYv,A"sX)0w0u+667BZ.HEe\eC'汊UR_aժ7MvLMƲp>"޼Q,C:Qjul*|mDi]/LCY[h"?֕nӀdE_3)BW,z%hRyv9Щ[>HmJYkq-8ng+^BcMl$O2 3*'b)‘Cw$]?mu`9νpm G z0+iOEŁ}W9"{h?2-5(=c~bUvqeZ k7'{CfXujɅ@<aNxILnε (83&{6 Q){iid} 7c`B.ƘL##i$n b&Kv |\\0nš{+\-4 wLkO_ET6vr\*ؘ/n@£tmOh5B.BL7ggT< d.X\DW17QRg7tz,UL2 ,]4uwcv}(?hYRJp Iiv5Kk${]@n yXNJ]wD6W` $E;  TP tkIpj Wǀڦ5i[hY)nF1D*gFS6kQa?$vU>E NH5TrU䋱z l?XjLp[»Vec󊻐oU>T*{Qq^ 7w>T|s_E ?fƇf&wI~\3I¶5.vn1|D$2ҷւp\|nɖX$c8^*ǂU BwÝ棢yuNA"/ i?oTQ~Ϫ;fsϑˬ/b\F\a8cͅ`oc;kSբR懫u0p5iW6c81]<'0KPj{GꊧeJt&>gIqq6*u}EXKؔX&f>t{_qCo3u M. /J\ppIxq IQkrγ0;.~ . S`z6%XRr7no_0o Y@)9CFqݩj}|6mԑ0RFC+Ң㈊l D#52 #t]ڮyĕm>2d:k!<,?<EÁZ ݫNUŸrt\0ѳDK'O+ DjNgG|d0$G2L[uC+`}yiwZbUl`oG)EȚ#E/Xuii q }{uK$jFoˠH#[F,`\d̔؁RCk_%P]V%~LJ5VA{E.Ju BKxD&Qv? 㰬't95ћfD,&Mr F9^Np?>G+7QPeNůc<FlFK>+AYW+]Ԁ;ϝla/*1ݏ山2z B2B¬MCJgH٘u$B,v=LAehS'b{"I42ՑC[0Z'\ajɒmBmӭg;Yա>!bx:ShE577bp1PYf❞xAD$O ` -B~ܖ1ɕg=ظhDlAjjz> Y)΁U7)2@O7ĂRPu|/+ _'WNt4~ &"I6Tҷ(zwFiȧM:vn_)v}@YK}@d*UÍ]W6Q˥U g;챰h-?IR΃({gբwK,wwWLl73F sg勬OUW*{.g`Ľ@šb*a~_PSQ! ȓV*qZQ<.>=#lGw7AY2f>GEřqyi\UoC}|t{ ^yD F2 q9^xϚ].,\D 'jFDp 6 (!^xEtP: w/nmdsCO?mE.ʱ3jϹ9s?֪k"qxs/dVt.@'T3e h=+U_PD<~I]BP  X 9Jaxp4ڥqog+7Ļ\mtW>C+Mɲ>|/y$'F)(Q?9śVkfJooPe 1s9! RLuc|ږ<>WAFWuNyapd3QD.w߮=UޞsȆjO`Aڵ{i jC62TrZk%'fŊbzA9sțZu,HMy(*vPSgG*Ir+<CY/A.hdE'o&A'. & ZJ qwq͠/)ٜ:mB7ƌpQlB4i[9}Bp]am/UxA>UfjjQ Ldx7F0*jFR%|bKgwv; 4VȮWj&J>cN_TO~Q`hAS+U+NnUQ ,˗XɱߕbuS6Kgߖ3Fa6\zEG&䔮t``IpyN !I I[Z'pǜ)[Vj?t U+.c $t{7/b^+%5Kݭ( oէH̢1Ĉ*z81 Yz%xEHչ=-WplH+Ez=ߞ雸{l@{uY+ cL⬪޴pݤ((/O0* \yAj^=Z[ˍ J(W^},Nz.:^F D6k ĸ8|8hD ,>b&v٢Er^4P -'mĭXr.hNn]pG.ky`.C͞kkg OT+`ԠEtBb1¨ӹx Ymg]]bM|*TKjڋWbp.vh\&pE9I] y?BfsA c$Zk>+oZ̪u;w >=:yH\鉙ةI))(/ߣ.#ٕ,}izΔ';?1Z9SW",#|m0`P`FGAgܒ3}qXڰ7fH]HvÑҹaQh .d`A*k9b.S,j~7ʝpꓩd[7Щ$ Ŕ= k'I #Ń)w|?/+5{QL-cx8פ(VyKTEk\kNSъg r9K7p/{hPM"ٽ5bÝ!2Zoh&m]*X!)K6=}v{ em?DF3zo&ʹorY@5!hиG=9OwR#P(b_d{W`0˂4')~diȹD[JcXg#/J\\`WJ?or3:G^*zۣLWgO6A7{RٌYKH&iv.-{o y^fd1@6fe1: z_6t}ZqkJ\ƦftG& rpxQ(zҺ@7z*udАX1x.Lrhbh'^ .3EY\KǎP'FJ=mBvbv1G)g('# kz2VB:,1dFG7Qlwv+'<8#S`?`0 :VU ^#Ļ}bRq井[m~35X we%y(|1#^q ꍣQ@t3Ӣ%K+2)[RyM^@qy HȵXoTgg5~׿uc &K e^3:]+d|gbj5\w Ix=HH[ˤ`ALux?h$\<1EMS̥c e=ҜLG 2.U[BR1?J jΊԛeU5 ju] C0ՏuW%8WXx:-5"x%eJv]J/c*@˙P8| :&G8ZmI ahiR`uXh[rĉG'YݘJ q 1G^Æ14א"հt$Pٕ$⟤0.cj aS|V= 4R]y?RӢs>}QyOeTlκe*륬6_HT跊^Dؼ((ަ~rn<ȉZ©~Xw-,q|\c:ut΋=~h5!*?8haGQ1e:]´=J3wߌ޿ &6]j ya|񻸸)3O䐾\#*\\2RDR^hAIJtֵ>ұo(Εig5& 8BM&Xk(-J)Tm^&D\ruQd:c7}pbISdILP=f&X=3t"/z4+'-Mɡ -%ݬTo{kʙD6 m5jߓ镱l<"\EY84.}='Vɷs { 2Oꪊ|)d>v .h¢l ÓKqrʹ_瀛E\:\Td@y+$:tZͰr ZRۘӆG~]aΟC4(l\}IM}U8=>ZXxY*Jդ)D6Dc}HkP.\0xհ[|G,pbjcOH #K/fD8qlمAZhG%W3n@gpO M f\I擲Qݭя_5z(;0wLYXXٮ4D(]w{NIHnBg]~Gx\WVP3$v>M5BbB~r6 ރsT\-π#m%Bސ,}>>O_>9m-M!G )&v)x^ ђIZTO7~Gu:g櫭s|2 + žǼ0=.;S3 ?R*&†l= PIE!.#Hؑ;[mkNgY)a#?9H(-B*XbG9E)KAP^ "(BwZ[RW~5z ސ;Ng%Rs`9$-BȮ?cwt ZeѠCЍ@:e}/s^KK<bwT&kdIZ@=tL!Gn>$g'JEj./_]k n_PⅣ<"6dSWY3GTxYa̬:1 /'|ȇȌZyjv2 t$ ; < YX;=bTJ7@jy; G"LP"&S  mCe6ǖ?])j\sbo68V ]ƎE߽X97JU3:lRF=94!6ⰉPCTևǾ|g9:]Lr(sK^Tr1#uv.cZsƘwRH*S=e/\ڹyGpvLǼKŦA@5sL?Yj?Gu~p(ׂqFV,B X:KEZg9SZބtRXx%O:]_G0}W.+&-M;WrP ' 6sW*$ #rIj9}_.H\ͭӶnX\d4 ]fA'[ck= gе S~;>4me{:2ݥ`1sj$ˑSivCt}qEv D`shM%p5ŦF7H=3ruYku`^[Jɨ(?(ό`Tw|\Լ}nU3Iwۣ\>\mp)]YAArSA|f EmlpM 5v*Q}I+e75 -arʍ 5O䡃+m[xz(z<Dja,:#C QA-x =Z5Dj=4'PRO C[xX?BX*jy<~ggbwG^B;'N񛡺@DXomt7O:]jsbY  w1O5˘A ^2(xb-̃Y#ǹTh|۰j1p/LC6_,dSkN{yͨ;DUB'DT]Q}"n퟉ʿ){,gTz'Fp(x9D[|&E`Jjk@[ %WƄ*v71̯eGe,Aئdt[5;u7 L#c!.wõp3 癔\Zzl`v:г<% 9 Ԟ( ;~2O蒐>:/u:=0/V[]u顨3<>։y-H}|hrb6͑,U.."j#Hڟʒpv8Rqw1"xit\TW>2ƬڛrՈp[r٦T5}dڻJBDW*7Jx~Ҁ$K-tK =FDu{*^T}!K놃o|d]FJ`YWEpf6c8qg8?pIUv</>H+8F+0RI`C^6=8j~j%ڝ,nlLس6;!aR afdOO eeml_Q<]ϣWηfc{Z7%Ⱦ_D-~P4;c-Ȑʞ'}>uk Y˴%1nU/v& xvpx\.A4!P:J i7m2wpfXbC3lBH \3[/P1_TӖ0;r>>.%LX^#BWtf^ӄl_:vI){-@&h{4t{!p09C~}h" _TFԐ5<|u١/D1Xjv?!_鈳E4 ZHhϗ/aHn9'vE-N'N6;t[|Έy37TKM͎wnxfĄY^^jxl+RN"Mҥ7RgrZU']|KW`#j6x9߁8zg$/{/e;B0o&(VrvHh6L1y&A3gFx2)6F\]+ x)@ovh]?_qKIM@ǬP/yyYl@an3/GrP\6̭ y,'cC$9§QzT\`mN֚k}z4.퍣3}7kBC`Л4tZ4$G;ΠߛqyĪfS&޺'kW&UEs!ԓx,vk M,U`3OE\h.lյԕϓJ[I~}TקGP>vV86L mVn{=yh*v/տ__ }-G\,Ahg*q2;քRI7-Ks!T[ ÞE?[%2hgDpEpbI~诅olQ=۷gMCD7t怢?L9' ḩLi1"3ӏk}FԲGM͍%霎V}H~7 ȧ3\ޙЕ޶}ݱzTa^%mO]ba=1+I `,'8dwQdy~ɹn1.y 45s I&lQ(* v &):Sg7 V4ɨw4[Ozک}ŖQ7&]葔FoQ_U*HO򸉢 MkFz+_ bQ7zn"-3͙]JY, f 45t'SɩJO Hkn|K|re7CL]bP>B8v/Jdٺh0 ڟk'Az 9 ˢe=m\[D`{"Q$B)}Q~Ңk?6Muk^[IOurNo[Uw9a?2p"` ֍\*GUzkw|?6xeE`i+](i(aӓY{Ht٢-Ymd4~N-5}3&#\+;|'QÜOFjI0 y&ʶwj]ƞF0&X8XC wG]|zEAJ%;?.ʞ;kR5zUdgac0! Lh =7"К[{C}BOę,kRwAFX NJM9~yuP.'Ҝsl`VS=IiӀ}Ljet:eJu^ʟ1}{Jn|/nxfK̫,Ro#&}?3fPջ-1.0gd 1l%kVCZB2s6ԩk?b|phQ$dM2E#(a^n"=H5F\X586$=ZtR ?xeiqϋF#7 71*,F4jRzι!:mɜf=XhRf|kuyJkOж>Jp`p@r;5prE9r]]7G7R6 ճ=w,׭xm彿 \hvv6VeʹrR*u|u39O ]ufAknn`kʪsq;?.C/8gI/r[UNOPqQ[Qwĺ!iKhwZPD9A]eY۾TGgL`(WTusCqP΅b*]UnQɰ~M v%&yOw4'V{Dp'&OJ1kt \7~PCN}]K0W&.@o6J{s+;>0ULiєY/|!ReT:B{_\ %b̹%B#7=_[^\[,X7O89Z;N"x5?z U(Tk/Ue:M'V>e.1Vs8p$jhiv辳3-"cK íO|63IJM?6rD `-l$u?B 6ΝN\»у!Pݧ$TodD*e3 {|WV`Tt?L*H҇]f}yƆ`)H='Um}9š.\y׋iWYFjd`n\d'Ylyp|zlhL}We1 B`_߮;'Ca>A7jbOC >oFJMABVcR{Q)ĩ='Q88 Խ 39;ΦRj# ѰY3͜A3YZϭVКm#JC 830{% Szִ%OX~/ cAd52 ̥̕L,'+"Ͷ0?]ɿG̠ _md7,ƣT1W+vT.XwP,K:Zo%堨d2p,Σp 4 G^?\ugg TwLЬ݋pY 6 !୐3gv*2bq/o$kƍvƨjO{J闤|qY+~hpd2:Ss7eХhk;ĝ,i2cL+ƞ%f=W5>'κc`oKؒ)==E.i4ڼj puӂny"{I'O[cN`Kba."Il^|΅zmW }rNbW_'>ڟ"JKz ^W*k!%W @Rx$[be92Q=lNMLΟ1d%+6M";95佷)n?T@:edj.@RE\'JNhoPp[V]2*P)n+ކ>EeUQf߈ise=H['{\qՆs~W9!#,yTn>>`VD_u\c$Ѓ:hnQGelL=rɪv~Lc?[0Qj=,´\Lc[yK$YDGJIDb2+wT2 XOO vL[i{8^&3kt.J%Jo8aVj6rK~M'!c]spdk5d+c/τFklbG\f`DxRԫ09{9!oE_Q) u6`.)'3Q.U+lT*ܝ$['I.TYsn˕sz!|t^?Xf|;-,_D5nO )gگyɽ1\6m|:SO~a:{;v?r ^"GT.`1|DG-?:NF ~A=D:Lix,]z,ɏޏ y lw$qoXYuSD$3n2^F㈑J+7R:-f!g}=,+_ӞM.uu~hݏU=֥I < wvO1vfgJek6=tR ]cU|vXrN8j܉4Q3+.wv_bH@ I*b6(7to ګJD4x>f8x<#ڤb7|X%#ceDX N&B$3F[u$6e$[3e|o_{Q--v4R1@z}[ Q2'"ݟ4~Kuk,kd([l-LI;-dM!hm?1ŖtI C%{QCɓcs$ԝ$]r.o ]N(r6wUx<~PfHŸĽǜHoj jp1(WUÊQdn+4g=ۿ%5'_KmCčAk卤-Se2o* ~\c|߉hŴ nL?qOT6pfD^FYzw* [FFjb]t@\vоIĉ[ٞH,U[f m.Ӷ^m-c pt^MIdKr >nQŚj6s#j3C)mDJm\W(!>V2'7="[_fkb7ϫSۡ8~ѴCʲoe+6x)Ai>R2迈v̀v:4%tō4L; 5\dlE^N2gU[r_E7{`GR y'.W:E_*1[{-%:8A~tm#6xƚbv$=I chOEr6֎o Gu';x T:x"S "Xڈ*r]ƾWL͑)&G/*;B{?Ӭ96O[,b_JaA=~cw^v=ExĴ'̇Ζ)AkJ _nw Ki;hq$_W:mcI#;Jr vͺ;K$U\U\U%Shg5N5؎rn3K,p9e2s"n#zxA.8;%r_E[]&BK BBk DlCQ h~P/IV\.fGI0ٟKI>YsKIG6]=Hg}QG$z<̵2l-dBs@jBZٹtcsb q7lR^lΦ:S)J؄+Ј.t |/y 7U}Jx'f5]b)_VpnA68g&j= q DBnc \9 uE\#Л٧ǓqMi CO{Jm k-m/ٶ.+VcaEv슓Fh !k]= y g醳b3)[ R{aovwe[  pO+//s?2Q1_wZ a։81-I)W+B:j)m4?O°4p1OMm#cXOBn |u, #?dJض Cˬ>=3^8%(.5{HT[^TGԭNq;Rʟ > ɐŬ.j]Ta2 s ڝ蠽݈& IUEEdJoHZdv.<{ɔ'[X57Ռe*.~1>cJhPwvhF4g_??be@$ڷĎsU_ĮxV<+6 }sFxN~PJh`GH~!!ϗ, 0% ю:&h70aSr^* R , |.=ft+ҁP)ڎVfuĴoIl5ۂ9}&.fVXiuI#wc*oASJWsOI؆Ayo %SS"rzHPj͏b2/K* ӣd&Q,2I(.HQؒI?} [A: 3Cσ"'dΝB@l%"XT~v[|ls)hg習-Mt~GF N=k|({=㲰qwv昉۬7te#V-7Vq]O/ՠ}U_o0&sOT$EG:B'Wk)ݭ^Q+M^F|! ~;s^pB;7ji"tE- &RWB ;5xHr i5B[]2l7z<]j vUqB$jD1S˙I0ǸϤŽ5ll  C@y{ y }zBa'RT]+ݔ.]Fa*hrOjY3)]X#geT> V|`mi 9G&wobt#W 肚 By9.qRacj<vsamr-/V3 "vPr.Mhdz"7B&hG>ƅTbWb XyXMoaUA'솤h\}bOP{]\V\WhM慘mC1A{y}g4fL$lR{78OucsMg6mS ţ?ſwUNIͺ˅'ַw7'}De^Im q摣h%$ɅC7f uKl&ϩ`/=~ןfX>`#I'-0?8Sqha7yqKN׿Yù~qa@tؿ_d(5"d/r WBٓ6Kgq:`0k-4m}nXØcЈ pg_` 6P (q_驨TMnUښɍoOtq89IyͤTG޼kN*]fbxd/#ZS^ۢa.ץˠ liŹ6z^sB?Ų&[gh۱d _-;Xyx#/8:=5Ss]co(11>&&θ[y~v~G%6e2d⟻iZ-M[=?=~ 07u6|pTLzoPw(OWr5_E?6ԯQ ?(}"]+',mD->J:"ƹm")t?D/a`8'΁(Kx̎L*oFe7²&l N1iTGqx۴;[ F LK6'JLhPҵ~ -5mW+oC2255"FL~R Jbke24nKBxnd֮+S7ϪS|iO\E]J 2'KT*+%zu.T°B j0D3@(F`TˇBcd\SKeu h+i aA/|Y@͍|#&\&[4l6.&ur j')^ pƗS 꼪{ ƺ$/9K#ή1Gn]ڶOGwSw:KzDȱ@7}w`O/9܋2 Gy:f\+b+#(d} 4^5֣-\?^U R*k~U M D-yД"- /qvo6Hz|!FyL Ea/HoK鲋dS!,UL\cO1I294}Iڟ%3GLtrL,lYXMkNN nAeMg>bh <燎#$܏|mQR B9N~"E_QF ,V!92ee@׊ MTd(CRI.hj< Jli:3T6Aݻջ>z$e;61WѕBm<z3.`)E6x(d m/ǡq)ywQ $bEmȡ7/|\h'>Rw842r5༪]'n~4놝wyĐrv[U<C@8ɯkRZ5OS|t33j Fm5tj:=?ɗzy|Pz- .b VځvazYvjW ɫ/Zm3=ȬYN4BJ|:$T} lx1֗1@ݳBoWe'7y3P#̝>UC28{-0FS G򤼺ƴ2):8{W;Y A(Bx0PeMmNqX"D3o\U;Ta*n[s#bUgKiJ2¥=ndH?gl~R'}d'Hҿ ݩIsjJU{TBg<4,c%Ư~^GM]?5ul|WMw6'ÍOp1Rh_^V{;?T,jN7XC Y7듳Ii_{AfRrfзΥE0#!$kfibE֍O|}mrV@۪'6N Pp6 9.׮3<Ne=!1:JmlvG8>t( eFr *y﫰NirǗOa^ ?~! Ӥdkؾ ˺Y"O5r#ߙ +_ʰקZ3TA1F+}6WtdEVUv^ >/4E0%o<9$()cHTKχK( P[(?}NUHɟBG_YLESl{XalzM `KlMQ+L*Q&~R7a83,81wvtZWc[Gic. 8?wCwK]$ uqD/,xLƹS02]CF`‚{.I\6 3;\~WNcɍrlL~5S;*#*ד]ېY83sgC }\Z )v[ۋhW&`w?v)A!u[-H=`13р|# ) U {ZɮBJy2r>lsu 30<"jcw t"*C?ԴzނNuȭ@IW{#+2*_adΏ>wroQbߛId>My]JlB`9_6 .!GO>e]ZҡDQ[忽0h2 qSno73*QN=/c Wk63rxDt,!xX YV3iz~bD\/fJtZݯP U^$?Ҏ<]Ps.$.j\M 5Kw(y r&_3Q`oNgnSNE fomݶ1`2cΈ4Z* A)F׷1$B r JHyvT7VqPC}Gtgk?IIg`VV]- MpSMִjV95|w4j.\/.]15iFr>)9)FP@}Yzc/zNO~?xɟ󀗹AU2J֝H?/H" g&(`6 S812w׻gNO${t㞬G` Ձo3?;)zŠݼygΩ P^;YD%n֦bdI9-GWK4̏q G8kC8me^ ߂@:9Ԑ_x}C׷^ioCw5PISn?21:^=Y+P`򐇲}d[1QɱcAӷna)]&.[S}3b9yv]@^#R 6O/z)AŘ Xd +wJ>_]0u? M[vB`]=(iʶ;r- #m弄 @ִa4"-< z$liiiC cz1am]7xG9²t3o"oK6lKc0=8jxA퇎1+us;%S/AIB.xMLᧅ3lՈIU#fzu{ޥ*<3ODjKk_ęO_]Vu]pڳ ӻvXHS , { +q㰴U{ {ٴo\bhvUÝ c7WVXÓ{Jwbrlj}_zMke毩m";&$fseal$( t}4?63CA^yń XSo-nRds.ئ3l| puEOL%%'7:^ec~c_,:zu dHv;uFDF2[;DOrR`T3, [J98_^C]nlҾy\LC򤩫<= l"X gm GZ&Pot4"Vbc 1Rיة|,ȕaJD;j,}C[RM.98T?Tj:b#yɈ:ǭ'n(Sӗ ڟLSeTo˗c7۵]ҽ)jN&g[/РBB^eh8 -MC(>jH zg7xWrb18 OwqfІQ76yTzhC,F-e4?/qIx*MKyVfYZܠ~qRxOB/V)s4FLt?c}'84ȧA-2 ZoȮA.j#C*fSȸ3ڌ6{eH78Q Sbqp>w3=Jԅ,2]1?TCjdպ`Ogx;r{5)xKB,gO׌HPoM^.4ޮ1̎0Os_5 #~OXBXMyVK]~PXM#)l.}ѓ{GÿL: [ دܻ*jY{WQ ;)ׅHrRϷ[X?m $F>@iyѸyu(H= ; [㎒S-ͶB~-M|B!4pf{0\(e˖g*9$uKCiCfH1l7JU鰄`& 3BphŹgLy;R?QtiTKl*C~|J~*G}U#Gm&գ -$C~hǓ{|3:oA] r${7 gDugM #6kڎ2?'aGRѓ* X;+zOy5IM`N\'e@ۨO|ϖ,)K|xnV).*ԥ:tnrЉ(oB_шx!֗q(/E:4_L2˝ЬWAvKӰd`i5oE޾4{zfkOPF,➷Br9 r;6~6V{[P)dG-! k~~WG| طfٵ~"w%d$/z_Zc6cY͑^ܛ=NG'Osmj7w %> q 5i,Lrr%_ ^3 Bȭyql3+ń۵;_/GsHd&/'OE]$nѾ^2|K2%5AOfVh <6=Iqg?*GoM"KYkl!bT6)+@wT&5eg1NgX\\]1)#>TttiGYU7Y_[DVlV q.) W+ +0?6 ݨUWZml6|@J :ۛ7UV0%gv~1|x`w'T}@U6t7_&UM]%I5i!| noA]Mk_2yazwJG Qh')v;V4ʙIX {F6? z[6q `~ׄCo&x z_o<6_!?_fRUD܋NE.yTtA,'rb^7xTW̿GY_'U븥HF՚-~ o{SYz5n}C84%q|)E߹5D 16("eSdzJ#-!.Mmt/Z67 6T?ӕЉlqY4%:!#N %ilYN0)lTM'7q1 uVѰv\E./~QWY$yԝ .Z\p]6վ)WWj)͖RNlփi/KH[ ?j i{66U]L6.h$BR;0;Eق`Oc( Bx\M>8ãB_c/C aw8-,z[ f.7$5K]f{'/ b +̻m>cپ " ] .zn,rͅŕ嘲P Y2Wz/=g!jmD;-Vxlׄ7+n"R]1YeЗ 돃#m}IHn!]kC*g  SrkGrice.ؙ2hk;> nz yRtSw3ĝ@Ha+1s(Hq\GZ'#x\/4] a]텝z6ņ=먂ϮޯAF `HGRo@^SBi~;ѝԗƔ&kżXZH(Ow3|-GGy^ZjEtYOv_G}rPg.V/&{ՋnZnO.rr\4 $#Dg4?2:#0!bw^免9Mh~l9~vo!c1#3/27%}¹8ul1geqj7Nvrb!9J U ֈTYख़qƙjR?6VٖOIq@ .?Tʆ&?.ɸs i6)68DĥʐRY"b:lkl}ls< #@x >/A#r5Bt}u4!`p<+qARM9vVWkoNh5^؆iH3ܾkȱqb1FEN2:ü`ic&6+Q6wC#B'Sy #Lm>\W}1Y@Tސ GXxXrk_'3 *n'vL2!kɕJ}~3}kT\hH^g2F<̲J`Hk7>3PA gW^HN<4gUK a]@N8D'Vԭ[9=H|% Tt"a ^GX' ]=J0˵ 1[jtM9A^R>Q'){%]%jkFңc:uXDzUZ?lך,mo&S{FpaBлS3};_YNz(g7Vw-{L~{ 3E{X"!y}R;#R5ie(B˼WiʠRN῍L_Kn͒qᓫьP^g)Rj [*ۅY_^*oa)}g %* v?^zދξ5B]}WZ37|ʧAIkV}ԒEh t}iY1SH)'z^!aw({O9LxdpǦ)-`""awa֠eTMK&<憋*)ghl4-\\sޢ޸TFcŽa(|"k88>ψQ{mhk;kc[s;sV D4)L֬Q˅^Aĥ(ˆ`ɿ?q6k6hsbZV]?Hb?Hy8_h8]LPTDik*HvB+PMh}g-/g@;O~`o[ ҅`GCAɜ4"fUBi;T|R7in=;+bo[";~Vi}*2Y,]k_(*^we9 Ab.goQ,ؑWg{ӵx-ཨ# ёּ'=+ssdF.*pkݧKZ`_yI華xEx5wN>0O[[Hf:|[*1K~v;ZײKp?B f@8"s, ҵL(}G)OEc?ݱK圐^˻ρ!c"qkߤ~f״uvêJ>]9hn&t4 .iR#5.eTٲUU<1[4IbTq+|ʹ$NAWO :&PV>q64\uP4ƥ Z{0cۂȦɆ!^1S£(;5RNÃtIsiWw7:X/Y^# qI\3n=OmVۭ8E>Aϒ `/>}n5!:%\#fk?p =m.C^x`dջ vj$B'Q1 jG jp,,Y_'J<┘/0 -Q<=]x ܔ\U\ݲyyK~V%O9jqK֤z=MMcFrЏ"iX5bc]{+SUܽ)#Dv됪"ͪB?Nh=/;e:uQa$GJg"Zru w]dnSRCv-N=3-*{גl+TӁhMDEJ9#*,'V@eU s%2FeX9 9#c%?B{ȫhKq|ǃt"P{KD ү֥9چ.|Jsw !PO %)>KC Ox Y }^u[~kqVyX@֒tmYa a+B*۞KOvtֶN~'E5ѣ\E^0lJnє?ʽ֦ϻWw+ckeJ]Z9t+!=Na(+&o#!"X GӠi]YӨW#RQ!F7Wcb#VJ=VqZe4ǟ9 Re2^ɤ 9RZX' /!66_W\?l]  5t_[4[7!bܻ2]wU "b Uw]b|B.Sj=Fi.Hxk9n'@TwnJ !@-_)F=kf=4J2}bn1*"T?E!%>RhF~{;%eXƱgV\QcgK,aRBS/Q0%z7m҃4d_`]G>>n>,! Nʩi '8{⚢ A;֣JJĕU_J ^^89ROkA`ʫS2:tQc/}5GWdP{I䨚:C@krDSmC)@yh2mO%i3t&ݿW!3x=&z§uǁJR^lNL+:;y 8WOϸiPDuPzlfoP$sk̔z',:d2`֫C!L%zU\*2/6$cQ{fT88L1-bZN:.#kPE^dQWay[F~ĭCZ!R^*E +B]:T@V3zO=W`igG >ܸӞM~Jofhn6i7UTB['0Lm{{&^dYB](^raFwקa0z:]oNjr" =s"+г3WW&9Uj RfuA樎+Zy7ȵGh|fJF![o~CyV ]4晱/IBmRʄH&X| j 7b{2";}8'r 5aZa%Y"z*3|.T!A G KQn&TQV9>K;JØk)OmbSF7N5\ՊE(x).9_!,72;!S M5$ް1͏=NDݢܔ'Tt![Jv,{\rO;mYܖ)֔/![ Y[M2*{gH~ kPK*aӴt4KA Ի`6pmqb3o5oz,0~i~}U)la zOeC> %{ ^tJ]Ѯ拭9y[ GvY'O(F=FPK-5NJUeһdz/EGU蘋4ekF>3Zѯ`3 ?TϾks#m.z+ay'E{|) Sk:SN>;<:`n ,.\cuZPi@M&,Q8*h8(fr^2x'JXLt=U?q{=[GSLHg5ܫV_PFȷ{6o9)iWAl.U;Ѿ~H.Qji $ߨ<$|2/ :NoE%iRVCNژJF^'(Q >8 ) p&mV@ק^e!ov)8n!m|>F|I NP|!t( PA6괪tˡ׍~b !'[: aֺne7J&fNtfo~ݎ`3hgfpL÷L­`k/cѣ?wU(ΰIPN9i<_`*N&@NL3ҽ\C5ŇЏJ[ϵ*=w+m.>(Zo?WAWv;Vͩ⛹^cznЄ4Cq{UU@LXxce}ftn: fc@&G(u޷ȿLmԚy-lq=mh.X+UX@yA.{ego2Od),KڧꈠfjUGT",0۲6(7dčfK0^*ՖZ.Nv[p̄ɨ:.z캝lXӵ[_LnKS*"w֒?sBEnksA雊Hvb{( B87IaRh\;^DvyȽ~uSoF_bj_cS<)Bh0FL16VNd"om&Uݲǜ-jYLݝћWd!ѳɬv8io{cuTi1Q#sVL?Oj@Q5ABS5|*. QQSG$`in[dE!|b+|o Ef/G"3,wbV0l&-ܤΤ^$9Syjm(0}Fy!;#9i,T ؗ}--lC JI/k)bxC0\鷣-ѫiqF&vhIir[_kחՍ}I>nS`|[qo8hd&AoY gs777Otjk~-]Gȓ,2ڞ&e CUGh洩LuUQXMl6- 'CGIwЧ`8w%,S kȾ`؀UWPۗi X6Xr 粰agrⳃ(N2AM6=Q;aFRܙ v>Qjt4綎IcRGUr͝2"s蚻wߓL{)8 ~;#Fej,`͞6rN@[(OA9 3dy_b}}_,JjO)gW#qZmF7& "fQzEk30~Hȅط~] D^WH漝i>d߿˹7sEHv]Q܈6i25›lOقlZB>.tϟ 44ήzR]> ]#/cߛژbۧdti@p%@pGS)]`G7$LO@J'Zp2Y_ R[E IKT-[cõ]PʼnQd>]ǵwPo7lMcKc`#fbf %R~gY~ʀX6SS+9[ njT%u1_xyW6Y+ G5 [!UGs6eI7,hPi3"5VbA& 6AqI3\zR̼!G*b [2# @ݬmCO1=tNKE6*n gz(!4bέOXa֛~_j=WS1҉d+uŨ V^4@bZxJ|\B&) Bι\4IS7STCx-! o?=ͳsF ea&%$I"sow gW–|T_Ye6 Z2@!f9|wvFc/Ru!J_g PPts*hӢj5D ~ x> N'- >pKEC@xeijM4FdMCpؕs`zSwG~잰gg$z.fFUR0L^CK+䟛"Zِ xH`! ]̚#ː1;4 c,Y0l4c&Qмr|̠eRJąl11g \ !v[-Mftc@U4מUXW~:vnkcN˿2h~0Cmx3afhŲUiONUOAlT<|5V*1;PKi ~[f#H8G3H4RKBob=_G;MׅwCC?MԧyF@ww_%NtOw\qQYzER{wn"x崮_F N#Ȇy܀gQ)\\ZG錐/#˾31ۚ6zR̈ab]!(c !:hRx9#8Vd#_a]IO0/7Ӷx+1VL,?e tR*"q7c_ [%\Q;5w:H/fVԻw$+qYtI2P=3v)|9iLUlhn! &p&mqѩgQ#=3MrvgĿT(BE'kbʂȭ*m Oq [?%zZ~r[E:Wcj9ONy fn+H-g]rtkU2&ՋX㜎hHR'|DzV$$Ǵ6_vo(eXN!Xq^ݍUd5&fXa9wp=Jdm7&g ámQ⏘UARg+36:)KKbI1*W:}1C5iKoᅥպ2-gfE.4ƈ[+K?xsSгv>w#R8i zL6f|_&wUFqǎ9*Y w);X-^10^>øu]i99²ӼSaד 8s<ߋ_͚gQ o5آ#aK)UgR\Y{{fy?#y=o"z)+Ǟx=פ4mupI6٢̑r%e{]C宭yx zʲ_潚SKVGgZ1Uumkc jFv$A^_69O'I77G}5}A%$9D@0+nW5#LjF4㍧-'빗+Wej+/u*K[HP'L/dr)PKz3pnM&Bsš5$*2\( \|$۟rK6a-.qq:ޫ *l{[o蟛Ѧ։1s1Vt"a%6/CRNضݿ~+CIp'գ]0B jP`>SHI2dj;zfV8 xoIA#6 F1lh Rą™ɸC,7Bh)C޿5ޗ`o p+?# Q֘5=Ik%_kebͮ7~"OhmhdWO2Z3qG(M0F͙' w:4rx!.o$n}*.Q7ŨN;\yԵtC bLW EqNkO̬b6wv̳}s`ԋsF$nI#I,AݡG. krT3Pa:ez.6c-fKtgER se˗*2n$5T10w@+CZ`i a)'!/\ڔB$:DP lVV22;N.-Rj-cr%%NHOݲh|kO:~k>nCV>l4^o6tn"wSF"9hNAI0pOoe@J>,5˺G̪K=%!bm~̈4;iѬ.-}3toUCv7}M颜z2@{3zEq{Ϧ{1̬Nr݀#t؅GF6[B&ɰ=U0*JwVL'F Ke1Í~Wib_Ry3uj~IJąB(Y7 PFb%)XnfmyV+]~W\xv@h|d$Rf\8 =V+.-:&X|<+^b8/ir/"R~ WFÛ剫dH (S]!ȵ1I߰ F=%W5klK= wЪtVYD@Iq7&<3RX0|sڣ ;PC·nr"Ӝ S=FlެrYkKT8b]MfYڊVK q.3r, JX4ARTCIFUt*1uWl_zx3bT^|B~IU zQԵ Hnzޛ#;[HtQIݪ@߿mY~i<&_5L0{GkW/*!ab{ғG4axC8VQF](岹4ՎbmF~GDaS> XЇ7 `w6֝†sS"?@W"x4。.&b?n9N)CFF;('c) Ң(g7QbncyŮCnINϱ`{E*`ψ:5)4,g[蕑5*Яz@Vd8{ 1J|ЀD܋CʼI t'鴈rpH:NCx9sXqE ).^>hgĿa vUIXYc1Dc0Ѥ~zH@c^!WFw@#Ka@f\wu 2^`[KƎv6dt<.}<@ F/ם6Ƣ }>y<- #jr8(ޑaÑq/Ug{Y'?K)*&a3JLeg _GrYF} 0*!Ӭ'1U<rUA'4@jf8 fVI, 9h]c I@y83QH/2}Qr8GrB)"k؆-tqsTѺ Kl".Cܗ3[zXb#ЮRX+x'S,תA)Z \Gr{ZbOf5D'[Xl6_~_>bZT$"*0ؾ{ y6fDrDAA`hY2=rd@&mpo@bNK6 c?* Dj9_(p`9w`DXOВ| Y[?N¸ $"[E.<݄,hY jzH@ǰ<Av#aPuޡDz Ȫf/zi"C|?w(3R )EφϕK?'\czvctZYE9Ld7YO%u V$9Vw<)aM !98&&_6ٺ}S+wG\Zd_'H/FS*Vg3Yg;Rޛ_˯挰YTFK~4J*tc@"D(# BrpCZxOreÔM "WțF`37m>3nJm;xo~m>z ~hԁq 5>N;f: 56=`;imN9;@Փ`(`S3"33'sqlR?m!IDB|k}$^sQQJb &SdeV8]sBeXƴO&y`OK͔hYǮca4hQTp6KqDHOĀYbhLǾW/zCĂZ cuլFģGYUOsAqagOhDS7s{mpCSSX(R 4,&9!^-nN6wLkY|eO?O PqFm>H9Ji,|,-eaCص/`x'"ZN%rJi*΀c˖NNFς{ ~%nn DuV,juMiSq^'J ۼz7nN72u7xV(w 1)-rEI\"\3\6̔H=?ԐtjB55q]l^J~YoM(/X [#>0fqPֺ(]l¸*pBiAlM&OⰓβF T 3\?-8 MJO:t4%t lWYt YKTU\BG}gNHˀֱQsVK>"ZVߔmYv,A"sX)0w0u+667BZ9.HEe\eC&汎URw_aժ7MvLMƲp."޼Q,C:Qjul*|mDi]/LCY[h"?֕nӀdE_3)BW,z%hRyv9Щ[?mJYkq-8g+^BcMl$O2 3*'j)‘Cw$]?mub9̽pm G z0+iOEŁ}W="{h?2-5(=c~cUviqeZ k7'{CfXujɅ@<aNxILnε (8;&ص{96 Q){iid} 緞c`B.ƘL##i$n b&Kv |\\0nš{+\)4 ,? 0лNB{-O*jA=`1F3'k=@R; ?6%;47t#jZ.8).b?Rb .elPT.~a\wԖ \#Ğ7 yg,2szE7$!'D'= Zۗtì5v^]vSb` @WsgM8UE Ͷ`SAJ‹QUC ZMlNZz=5vMw=;-?]_N.}1Y*ڏ-p ǐzg +PgدfQ}/x@qiy6wLkG_ET6vr\*ؘ/n@£tmOh5B.BL7fgT<0d.X\DW17QRg7tz,L2 ,]4ewcv}(?hYRJp Iiv5Kk$k]@n yXNJ]wD6_W` $E;  TP tkIpj Wǀڦ5i[hY nF1D*gFS6kQa?vE NH5TrU䋱z l?XjLp[»Vec󊻰oU>T {Qq^ 7w>\|s_E ?fƇf&wI~\3I¶5.fo1|D$2ҷւp\|nɖX$c^8^*ǂU bwÝ棢yunA"+ i?oT~A~Ϫ;fsϑ嶍ˬ/b\F\a8cͅ`oc;kSѢR懫u0p5iW6c81]<'0KPj{GꊧeJt&>gIqq6*u}EXKؔX&f>t{_qCo3u M. /J^ppIx q IQksγ0;.~ . S`z6%XRr7no_0o Y@)9Fqݩj}|6mԑ8RFC+Ң㈊l D#52 "v]ڮy̕m>2d:o!<$@?<EÁZ ݫNUŸrt\0ѳDI'O+ DjNgG|d0$G2L[uC+`}yiwZbUl`oG)EȚ#E/Xuii q }{uKdjFoˠH#[F,`\d̔؉RCk[%@]V%>LJ5VA{E.Ju FKhD&Qv? 㰬't95ћfD,&Mr F9^Np?>G+7QPe^ůg<FlBK>+AYW+]Ԁ;ϝla/*1ݏ屵2z B2B¬MCJgH٘u$B,v=LAehS'b"I42ՑC[0z'\ajɲmBmӭg;Yե>#bx:ShE577bp1PYfxAD$ ` -B~ܖ1ɕg=ظhDlAjjz> Y ΁U7)2@O7ĂRPu|/+ _'WNt4~ &"I?6Tҷ(zwFiȧM:n_)v}@YK}@d*UÍ]WQ˥U g;챰h-E?IR΃({gղwK,wwWLl73F sg勬OUW*{.G`Ľ@šb*a~_PSQ! ȓV*qZQ<.>=#lGw7Y2f>GEřayi\UoC}|t{ ^YDF2 q;^xϚ]=>,\D 'jFDp 6 (!^xEtP: w/nmdsCO?mE.ʱ3j9s?֪k"qxs/dVt.@'T3e h=+U_PD<~H]BP X 9Jaxp4ڥqog+7Ļ\mtW>C+Mɲ<|/y $'F)(Q?9śRkfJooPe 1s9! RLuc|ږ<>WAFWuNyapd3QD.w߮2=UsȆjO`A9ڵ{) kC62TrZk%'fŊAbzA9sțZuA,HMy(*vPSgG*Hr+$<CY/A.hdEo&'. ǘ& ZJ qwy͠/)ٜ;mb7njPQlB4i[9}Bp\amJJJJJLVZ\\\\^bffhlllllllnrz|~    """$&(.00268888:<<>@@@@@@BFHJLLLLLLLNRRRRRRRRRRRRTVX^``bjpppppprxxxxxzHLLLLNVVVVVX``````````bfhhhj((((*88:<<<<<>@@BFRZ^bfllnrz~  *,.08:<<<>BBBBDHLPRTTTVZbbbdhllllnrrrrrrtzzz|BDFFFFFFHJJJJJJJJJJJJJLNNPRT      "&********,..0246668::::<>>@BBBBDFFHJLVVVVVVVVVVVVX\^^^^^`dddfhhhhjn~     "$&4BBBBBBBBBDHHHHJNRVZjjlnnnnnnprtvvvvvvxz!"   " " & @@@@@@ dict/papers/Ind.ib 640 0 12 4174 6024532513 7275 gGGTA77$7J]p#7K_s'DT$4!J7K]'dt$4d!AG$7J]#7K_s'W!AJg4DAg$G$T!1A#wKGTA4J$JpK_WJ$$7J]p#7K_s'77gJ7W7!1Js7#Tg4W11tT!A7!1]s'pwTAwG7W#t$7J]p#7K_s'7W7W$W_$7J]p#7K_s'dtG4TA1]'G4TtdtwGT!7!W$!1#GAdtJDdtg!1K471JD7D]'Jd#Gd17t1p$DTt!AW1Ddt$41A7AW7wwDdtW$!1$7$!1Ad!1A_DdtpG$7J]p#7K_s'DdtJ$$7J]p#7K_s'7#DWwwTgg7_sW$Ddt!1$dt!71$77Wt1w4DwpwDTA$7J]p#7K_s'7GWd1sJ$7pdp$71W11tT!A7!1]s'pwTAwG7W#t$7J]p#7K_s'7W7W$W_$7J]p#7K_s'dtG4TA1]'G4TtdtwGT!7dict/papers/Ind.ic 640 0 12 2121 6024532505 7265 Rbstjissue:0,129 Rbstjissue:129,161 Rbstjissue:290,139 Rbstjissue:429,146 Rbstjissue:575,241 Rbstjissue:816,142 Rbstjissue:958,193 Rbstjissue:1151,191 Rbstjissue:1342,170 Rbstjissue:1512,151 Rbstjissue:1663,179 Rbstjissue:1842,175 Rbstjissue:2017,178 Rbstjissue:2195,162 Rbstjissue:2357,180 Rbstjissue:2537,218 Rbstjissue:2755,218 Rbstjissue:2973,140 Rbstjissue:3113,176 Rbstjissue:3289,155 Rbstjissue:3444,215 Rbstjissue:3659,175 Rv7man:0,135 Rv7man:135,279 Rv7man:414,175 Rv7man:589,165 Rv7man:754,180 Rv7man:934,151 Rv7man:1085,124 Rv7man:1209,115 Rv7man:1324,142 Rv7man:1466,179 Rv7man:1645,161 Rv7man:1806,209 Rv7man:2015,110 Rv7man:2125,141 Rv7man:2266,174 Rv7man:2440,139 Rv7man:2579,103 Rv7man:2682,50 Rv7man:2732,127 Rv7man:2859,797 Rv7man:3656,66 Rv7man:3722,158 Rv7man:3880,125 Rv7man:4005,95 Rv7man:4100,171 Rv7man:4271,107 Rv7man:4378,156 Rv7man:4534,150 Rv7man:4684,172 Rv7man:4856,175 Rv7man:5031,191 Rv7man:5222,87 Rv7man:5309,126 Rv7man:5435,181 Rv7man:5616,177 Rv7man:5793,86 Rv7man:5879,194 Rv7man:6073,949 Rv7man:7022,111 Rv7man:7133,92 Rv7man:7225,222 Rv7man:7447,338 Rv7man:7785,196 g!1K471JD7D]'Jd#Gd17t1p$DTt!AW1Ddt$41A7AW7wwDdtW$!1$7$!1Ad!1A_DdtpGdict/papers/Rbstjissue 444 0 24 7372 2736371622 10347 %T U\s-2NIX\s0 Time-Sharing System: Preface %A T. H. Crowley %J Bell Sys. Tech. J. %V 57 %N 6 %P 1897-1898 %D 1978 %K bstj unix %T U\s-2NIX\s0 Time-Sharing System: Foreword %A M. D. McIlroy %A E. N. Pinson %A B. A. Tague %J Bell Sys. Tech. J. %V 57 %N 6 %P 1899-1904 %D 1978 %K unix bstj %T The U\s-2NIX\s0 Time-Sharing System %K unix bstj %A D. M. Ritchie %A K. Thompson %J Bell Sys. Tech. J. %V 57 %N 6 %P 1905-1929 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: U\s-2NIX\s0 Implementation %K unix bstj %A K. Thompson %J Bell Sys. Tech. J. %V 57 %N 6 %P 1931-1946 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: A Retrospective %K unix bstj %A D. M. Ritchie %J Bell Sys. Tech. J. %V 57 %N 6 %P 1947-1969 %D 1978 %O Also in \f1Proc. Hawaii International Conference on Systems Science,\f1 Honolulu, Hawaii, Jan. 1977. %T U\s-2NIX\s0 Time-Sharing System: The U\s-2NIX\s0 Shell %A S. R. Bourne %K unix bstj %J Bell Sys. Tech. J. %V 57 %N 6 %P 1971-1990 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: The C Programming Language %A D. M. Ritchie %A S. C. Johnson %A M. E. Lesk %A B. W. Kernighan %J Bell Sys. Tech. J. %V 57 %N 6 %P 1991-2019 %D 1978 %K bstj %T U\s-2NIX\s0 Time-Sharing System: Portability of C Programs and the U\s-2NIX\s0 System %K unix bstj %A S. C. Johnson %A D. M. Ritchie %J Bell Sys. Tech. J. %V 57 %N 6 %P 2021-2048 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: The M\s-2ERT\s0 Operating System %A H. Lycklama %A D. L. Bayer %J Bell Sys. Tech. J. %V 57 %N 6 %K mert %P 2049-2086 %D 1978 %K bstj %T U\s-2NIX\s0 Time-Sharing System: U\s-2NIX\s0 on a Microprocessor %K unix bstj %A H. Lycklama %J Bell Sys. Tech. J. %V 57 %N 6 %P 2087-2101 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: A Minicomputer Satellite Processor System %A H. Lycklama %A C. Christensen %J Bell Sys. Tech. J. %V 57 %N 6 %P 2103-2113 %D 1978 %K bstj unix %T U\s-2NIX\s0 Time-Sharing System: Document Preparation %K unix bstj %A B. W. Kernighan %A M. E. Lesk %A J. F. Ossanna %J Bell Sys. Tech. J. %V 57 %N 6 %P 2115-2135 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: Statistical Text Processing %K unix bstj %A L. E. McMahon %A L. L. Cherry %A R. Morris %J Bell Sys. Tech. J. %V 57 %N 6 %P 2137-2154 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: Language Development Tools %K unix bstj %A S. C. Johnson %A M. E. Lesk %J Bell Sys. Tech. J. %V 57 %N 6 %P 2155-2175 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: The Programmer's Workbench %A T. A. Dolotta %A R. C. Haight %A J. R. Mashey %J Bell Sys. Tech. J. %V 57 %N 6 %P 2177-2200 %D 1978 %K unix bstj %T U\s-2NIX\s0 Time-Sharing System: The U\s-2NIX\s0 Operating System as a Base for Applications %K unix bstj %A G. W. R. Luderer %A J. F. Maranzano %A B. A. Tague %J Bell Sys. Tech. J. %V 57 %N 6 %P 2201-2207 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: Microcomputer Control of Apparatus, Machinery, and Experiments %K unix bstj %A B. C. Wonsiewicz %A A. R. Storm %A J. D. Sieber %J Bell Sys. Tech. J. %V 57 %N 6 %P 2209-2232 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: Circuit Design Aids %K unix bstj %A A. G. Fraser %J Bell Sys. Tech. J. %V 57 %N 6 %P 2233-2249 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: A Support Environment for M\s-2AC\s0-8 Systems %A H. D. Rovegno %K mac8 unix %J Bell Sys. Tech. J. %V 57 %N 6 %P 2251-2263 %K bstj %D 1978 %T U\s-2NIX\s0 Time-Sharing System: No. 4 ESS Diagnostic Environment %K unix bstj %A S. P. Pekarich %J Bell Sys. Tech. J. %V 57 %N 6 %P 2265-2274 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: R\s-2BCS\s0/R\s-2CMAS\s0 \(em Converting to the M\s-2ERT\s0 Operating System %K unix bstj %A E. R. Nagelberg %A M. A. Pilla %J Bell Sys. Tech. J. %V 57 %N 6 %P 2275-2287 %D 1978 %T U\s-2NIX\s0 Time-Sharing System: The Network Operations Center System %K unix bstj %A H. Cohen %A J. C. Kaufeld, Jr. %J Bell Sys. Tech. J. %V 57 %N 6 %P 2289-2304 %D 1978 4BBBBBBBBBDHHHHJNRVZjjlnnnnnnprtvvvvvvxz!dict/papers/Rv7man 444 0 24 17455 2736371623 7410 %A L. P. Deutsch %A B. W. Lampson %T An online editor %J Comm. Assoc. Comp. Mach. %V 10 %N 12 %D December 1967 %P 793-799, 803 %K qed .[ %r 17 %K cstr %R Comp. Sci. Tech. Rep. No. 17 %I Bell Laboratories %C Murray Hill, New Jersey %A B. W. Kernighan %A L. L. Cherry %T A System for Typesetting Mathematics %d May 1974, revised April 1977 %J Comm. Assoc. Comp. Mach. %K acm cacm %V 18 %P 151-157 %D March 1975 .] %T U\s-2NIX\s0 Time-Sharing System: Document Preparation %K unix bstj %A B. W. Kernighan %A M. E. Lesk %A J. F. Ossanna %J Bell Sys. Tech. J. %V 57 %N 6 %P 2115-2135 %D 1978 %A T. A. Dolotta %A J. R. Mashey %T An Introduction to the Programmer's Workbench %J Proc. 2nd Int. Conf. on Software Engineering %D October 13-15, 1976 %P 164-168 %T U\s-2NIX\s0 Time-Sharing System: The Programmer's Workbench %A T. A. Dolotta %A R. C. Haight %A J. R. Mashey %J Bell Sys. Tech. J. %V 57 %N 6 %P 2177-2200 %D 1978 %K unix bstj %T U\s-2NIX\s0 Time-Sharing System: U\s-2NIX\s0 on a Microprocessor %K unix bstj %A H. Lycklama %J Bell Sys. Tech. J. %V 57 %N 6 %P 2087-2101 %D 1978 %T The C Programming Language %A B. W. Kernighan %A D. M. Ritchie %I Prentice-Hall %C Englewood Cliffs, New Jersey %D 1978 %T Computer Recreations %A Aleph-null %J Software Practice and Experience %V 1 %N 2 %D April-June 1971 %P 201-204 %T U\s-2NIX\s0 Time-Sharing System: The U\s-2NIX\s0 Shell %A S. R. Bourne %K unix bstj %J Bell Sys. Tech. J. %V 57 %N 6 %P 1971-1990 %D 1978 %A L. P. Deutsch %A B. W. Lampson %T \*sSDS\*n 930 time-sharing system preliminary reference manual %R Doc. 30.10.10, Project \*sGENIE\*n %C Univ. Cal. at Berkeley %D April 1965 %A R. J. Feiertag %A E. I. Organick %T The Multics input-output system %J Proc. Third Symposium on Operating Systems Principles %D October 18-20, 1971 %P 35-41 %A D. G. Bobrow %A J. D. Burchfiel %A D. L. Murphy %A R. S. Tomlinson %T \*sTENEX\*n, a Paged Time Sharing System for the \*sPDP\*n-10 %J Comm. Assoc. Comp. Mach. %V 15 %N 3 %D March 1972 %K tenex %P 135-143 %A R. E. Griswold %A D. R. Hanson %T An Overview of SL5 %J SIGPLAN Notices %V 12 %N 4 %D April 1977 %P 40-50 %A E. W. Dijkstra %T Cooperating Sequential Processes %B Programming Languages %E F. Genuys %I Academic Press %C New York %D 1968 %P 43-112 %A J. A. Hawley %A W. B. Meyer %T M\s-2UNIX\s0, A Multiprocessing Version of U\s-2NIX\s0 %K munix unix %R M.S. Thesis %I Naval Postgraduate School %C Monterey, Cal. %D 1975 %T The U\s-2NIX\s0 Time-Sharing System %K unix bstj %A D. M. Ritchie %A K. Thompson %J Bell Sys. Tech. J. %V 57 %N 6 %P 1905-1929 %D 1978 %A E. I. Organick %T The M\s-2ULTICS\s0 System %K multics %I M.I.T. Press %C Cambridge, Mass. %D 1972 %T UNIX for Beginners %A B. W. Kernighan %D 1978 %T U\s-2NIX\s0 Programmer's Man\&ual %A K. Thompson %A D. M. Ritchie %K unix %I Bell Laboratories %O Seventh Edition. %D 1978 %A K. Thompson %T The U\s-2NIX\s0 Command Language %B Structured Programming\(emInfotech State of the Art Report %I Infotech International Ltd. %C Nicholson House, Maidenhead, Berkshire, England %D March 1975 %P 375-384 %K unix %X pwb Brief description of shell syntax and semantics, without much detail on implementation. Much on pipes and convenience of hooking programs together. Includes SERMONETTE: "Many familiar computing `concepts' are missing from UNIX. Files have no records. There are no access methods. There are no file types. These concepts fill a much-needed gap. I sincerely hope that when future systems are designed by manufacturers the value of some of these ingrained notions is re-examined. Like the politician and his `common man', manufacturers have their `average user'. %A J. R. Mashey %T PWB/UNIX Shell Tutorial %D September 30, 1977 %A D. F. Hartley (Ed.) %T The Cambridge Multiple Access System \- Users Reference Manual %I University Mathematical Laboratory %C Cambridge, England %D 1968 %A P. A. Crisman (Ed.) %T The Compatible Time-Sharing System %I M.I.T. Press %K whole ctss book %C Cambridge, Mass. %D 1965 %T LR Parsing %A A. V. Aho %A S. C. Johnson %J Comp. Surveys %V 6 %N 2 %P 99-124 %D June 1974 %T Deterministic Parsing of Ambiguous Grammars %A A. V. Aho %A S. C. Johnson %A J. D. Ullman %J Comm. Assoc. Comp. Mach. %K acm cacm %V 18 %N 8 %P 441-452 %D August 1975 %A A. V. Aho %A J. D. Ullman %T Principles of Compiler Design %I Addison-Wesley %C Reading, Mass. %D 1977 .[ %r 65 %R Comp. Sci. Tech. Rep. No. 65 %K CSTR %A S. C. Johnson %T Lint, a C Program Checker %D December 1977 %O updated version TM 78-1273-3 %D 1978 .] %T A Portable Compiler: Theory and Practice %A S. C. Johnson %J Proc. 5th ACM Symp. on Principles of Programming Languages %P 97-104 %D January 1978 .[ %r 39 %K CSTR %R Comp. Sci. Tech. Rep. No. 39 %I Bell Laboratories %C Murray Hill, New Jersey %A M. E. Lesk %T Lex \(em A Lexical Analyzer Generator %D October 1975 .] .[ %r 32 %K CSTR %R Comp. Sci. Tech. Rep. No. 32 %I Bell Laboratories %C Murray Hill, New Jersey %A S. C. Johnson %T Yacc \(em Yet Another Compiler-Compiler %D July 1975 .] %T U\s-2NIX\s0 Time-Sharing System: Portability of C Programs and the U\s-2NIX\s0 System %K unix bstj %A S. C. Johnson %A D. M. Ritchie %J Bell Sys. Tech. J. %V 57 %N 6 %P 2021-2048 %D 1978 %T Typing Documents on UNIX and GCOS: The -ms Macros for Troff %A M. E. Lesk %D 1977 %A K. Thompson %A D. M. Ritchie %T U\s-2NIX\s0 Programmer's Manual %K unix %I Bell Laboratories %O Sixth Edition %D May 1975 %T The Network U\s-2NIX\s0 System %K unix %A G. L. Chesson %J Operating Systems Review %V 9 %N 5 %P 60-66 %D 1975 %O Also in \f2Proc. 5th Symp. on Operating Systems Principles.\f1 %T Spider \(em An Experimental Data Communications System %Z ctr127 %A A. G. Fraser %J Proc. IEEE Conf. on Communications %P 21F %O IEEE Cat. No. 74CH0859-9-CSCB. %D June 1974 %T A Virtual Channel Network %A A. G. Fraser %J Datamation %P 51-56 %D February 1975 .[ %r 41 %K CSTR %R Comp. Sci. Tech. Rep. No. 41 %I Bell Laboratories %C Murray Hill, New Jersey %A J. W. Hunt %A M. D. McIlroy %T An Algorithm for Differential File Comparison %D June 1976 .] %A F. P. Brooks, Jr. %T The Mythical Man-Month %I Addison-Wesley %C Reading, Mass. %D 1975 %X pwb Readable, classic reference on software engineering and problems of large projects, from someone with experience in them. Required reading for any software engineer, even if conclusions may not always be agreed with. %br "The second is the most dangerous system a man every designs." p.55. %br "Hence plan to throw one away; you will, anyhow." p.116. %br "Cosgrove has perceptively pointed out that the programmer delivers satisfaction of a user need rather than any tangible product. And both the actual need and the user's perception of that need will change as programs are built, tested, and used." p.117. %br "The total cost of maintaining a widely used program is typically 40 percent or more of the cost of developing it." p.121. %br "As shown above, amalgamating prose and program reduces the total number of characters to be stored." p.175. %T A Portable Compiler for the Language C %A A. Snyder %I Master's Thesis, M.I.T. %C Cambridge, Mass. %D 1974 %T The C Language Calling Sequence %A M. E. Lesk %A S. C. Johnson %A D. M. Ritchie %D 1977 %T Optimal Code Generation for Expression Trees %A A. V. Aho %A S. C. Johnson %D 1975 %J J. Assoc. Comp. Mach. %K acm jacm %V 23 %N 3 %P 488-501 %O Also in \f2Proc. ACM Symp. on Theory of Computing,\f1 pp. 207-217, 1975. %A R. Sethi %A J. D. Ullman %T The Generation of Optimal Code for Arithmetic Expressions %J J. Assoc. Comp. Mach. %K acm jacm %V 17 %N 4 %D October 1970 %P 715-728 %O Reprinted as pp. 229-247 in \fICompiler Techniques\fR, ed. B. W. Pollack, Auerbach, Princeton NJ (1972). %X pwb Optimal approach for straight-line, fixed number of regs. %T Code Generation for Machines with Multiregister Operations %A A. V. Aho %A S. C. Johnson %A J. D. Ullman %J Proc. 4th ACM Symp. on Principles of Programming Languages %P 21-28 %D January 1977  @@@@@@ dict/papers/runinv 555 0 24 177 4046234556 7512 #! /bin/sh /usr/lib/refer/mkey R* | /usr/lib/refer/inv -v -h997 -n Xind mv Xind.ia Ind.ia mv Xind.ib Ind.ib mv Xind.ic Ind.ic sueINDEXdict/papers/INDEX 664 0 24 33547 3172320602 7073 1315 :Rv7man 589/164 17 :Rv7man 135/278 1820 :Rv7man 1645/160 1965 :Rv7man 1466/178 3880/124 1967 :Rv7man 0/134 1968 :Rv7man 2125/140 3722/157 1970 :Rv7man 7447/337 1971 :Rv7man 1209/114 1645/160 1972 :Rv7man 1806/208 2579/102 1974 :Rv7man 135/278 4005/94 5616/176 7022/110 1975 :Rv7man 135/278 2266/173 2859/796 4100/170 4684/171 4856/174 5309/125 5435/180 5793/85 6073/948 7225/221 1976 :Rv7man 589/164 5879/193 1977 :Rv7man 135/278 2015/109 3656/65 4271/106 4378/155 5222/86 7133/91 7785/195 1978 :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 958/192 1151/190 1342/169 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 414/174 754/179 934/150 1085/123 1324/141 2440/138 2682/49 2732/126 4378/155 4534/149 5031/190 2nd :Rv7man 589/164 30 :Rv7man 3656/65 301010 :Rv7man 1466/178 32 :Rv7man 4856/174 39 :Rv7man 4684/171 40 :Rv7man 6073/948 41 :Rv7man 5879/193 4th :Rv7man 7785/195 5th :Rv7man 4534/149 65 :Rv7man 4378/155 930 :Rv7man 1466/178 above :Rv7man 6073/948 academ :Rv7man 2125/140 access :Rv7man 2859/796 3722/157 acm :Rv7man 135/278 4100/170 4534/149 7225/221 7447/337 7785/195 actual :Rv7man 6073/948 addiso :Rv7man 4271/106 6073/948 agreed :Rv7man 6073/948 aho :Rv7man 4005/94 4100/170 4271/106 7225/221 7785/195 aids :Rbstjissue 2973/139 alephn :Rv7man 1209/114 algori :Rv7man 5879/193 always :Rv7man 6073/948 amalga :Rv7man 6073/948 ambigu :Rv7man 4100/170 analyz :Rv7man 4684/171 anothe :Rv7man 4856/174 any :Rv7man 6073/948 anyhow :Rv7man 6073/948 appara :Rbstjissue 2755/217 applic :Rbstjissue 2537/217 approa :Rv7man 7447/337 april :Rv7man 135/278 1466/178 2015/109 aprilj :Rv7man 1209/114 are :Rv7man 2859/796 6073/948 arithm :Rv7man 7447/337 art :Rv7man 2859/796 assoc :Rv7man 0/134 135/278 1806/208 4100/170 7225/221 7447/337 august :Rv7man 4100/170 averag :Rv7man 2859/796 away :Rv7man 6073/948 base :Rbstjissue 2537/217 bayer :Rbstjissue 1342/169 beginn :Rv7man 2682/49 bell :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 958/192 1151/190 1342/169 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 135/278 414/174 754/179 934/150 1324/141 2440/138 2732/126 4684/171 4856/174 5031/190 5309/125 5879/193 bobrow :Rv7man 1806/208 book :Rv7man 3880/124 both :Rv7man 6073/948 bourne :Rbstjissue 816/141:Rv7man 1324/141 brief :Rv7man 2859/796 brooks :Rv7man 6073/948 bstj :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 958/192 1151/190 1342/169 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 414/174 754/179 934/150 1324/141 2440/138 5031/190 built :Rv7man 6073/948 burchf :Rv7man 1806/208 cacm :Rv7man 135/278 4100/170 callin :Rv7man 7133/91 cambri :Rv7man 3722/157 center :Rbstjissue 3659/174 change :Rv7man 6073/948 channe :Rv7man 5793/85 checke :Rv7man 4378/155 cherry :Rbstjissue 2017/177:Rv7man 135/278 chesso :Rv7man 5435/180 christ :Rbstjissue 1663/178 circui :Rbstjissue 2973/139 classi :Rv7man 6073/948 code :Rv7man 7225/221 7447/337 7785/195 cohen :Rbstjissue 3659/174 comm :Rv7man 0/134 135/278 1806/208 4100/170 comman :Rv7man 2859/796 common :Rv7man 2859/796 commun :Rv7man 5616/176 comp :Rv7man 0/134 135/278 1806/208 4005/94 4100/170 4378/155 4684/171 4856/174 5879/193 7225/221 7447/337 compar :Rv7man 5879/193 compat :Rv7man 3880/124 compil :Rv7man 4271/106 4534/149 4856/174 7022/110 comput :Rv7man 1209/114 2859/796 concep :Rv7man 2859/796 conclu :Rv7man 6073/948 conf :Rv7man 589/164 5616/176 contro :Rbstjissue 2755/217 conven :Rv7man 2859/796 conver :Rbstjissue 3444/214 cooper :Rv7man 2125/140 cosgro :Rv7man 6073/948 cost :Rv7man 6073/948 crisma :Rv7man 3880/124 crowle :Rbstjissue 0/128 cstr :Rv7man 135/278 4378/155 4684/171 4856/174 5879/193 ctr127 :Rv7man 5616/176 ctss :Rv7man 3880/124 danger :Rv7man 6073/948 data :Rv7man 5616/176 datama :Rv7man 5793/85 decemb :Rv7man 0/134 4378/155 delive :Rv7man 6073/948 descri :Rv7man 2859/796 design :Rbstjissue 2973/139:Rv7man 2859/796 4271/106 6073/948 detail :Rv7man 2859/796 determ :Rv7man 4100/170 deutsc :Rv7man 0/134 1466/178 develo :Rbstjissue 2195/161:Rv7man 6073/948 diagno :Rbstjissue 3289/154 differ :Rv7man 5879/193 dijkst :Rv7man 2125/140 doc :Rv7man 1466/178 docume :Rbstjissue 1842/174:Rv7man 414/174 5222/86 dolott :Rbstjissue 2357/179:Rv7man 589/164 754/179 ed :Rv7man 3722/157 3880/124 editor :Rv7man 0/134 em :Rbstjissue 3444/214:Rv7man 4684/171 4856/174 5616/176 engine :Rv7man 589/164 6073/948 enviro :Rbstjissue 3113/175 3289/154 ess :Rbstjissue 3289/154 even :Rv7man 6073/948 every :Rv7man 6073/948 experi :Rbstjissue 2755/217:Rv7man 1209/114 5616/176 6073/948 expres :Rv7man 7225/221 7447/337 famili :Rv7man 2859/796 februa :Rv7man 5793/85 feiert :Rv7man 1645/160 file :Rv7man 2859/796 5879/193 files :Rv7man 2859/796 fill :Rv7man 2859/796 fixed :Rv7man 7447/337 forewo :Rbstjissue 129/160 fraser :Rbstjissue 2973/139:Rv7man 5616/176 5793/85 from :Rv7man 2859/796 6073/948 future :Rv7man 2859/796 gap :Rv7man 2859/796 gcos :Rv7man 5222/86 genera :Rv7man 4684/171 7225/221 7447/337 7785/195 genuys :Rv7man 2125/140 gramma :Rv7man 4100/170 griswo :Rv7man 2015/109 haight :Rbstjissue 2357/179:Rv7man 754/179 hanson :Rv7man 2015/109 hartle :Rv7man 3722/157 has :Rv7man 6073/948 have :Rv7man 2859/796 hawley :Rv7man 2266/173 hence :Rv7man 6073/948 his :Rv7man 2859/796 hookin :Rv7man 2859/796 hope :Rv7man 2859/796 hunt :Rv7man 5879/193 ieee :Rv7man 5616/176 if :Rv7man 6073/948 implem :Rbstjissue 429/145:Rv7man 2859/796 includ :Rv7man 2859/796 infote :Rv7man 2859/796 ingrai :Rv7man 2859/796 inputo :Rv7man 1645/160 int :Rv7man 589/164 intern :Rv7man 2859/796 introd :Rv7man 589/164 is :Rv7man 2859/796 6073/948 it :Rv7man 6073/948 jacm :Rv7man 7225/221 7447/337 januar :Rv7man 4534/149 7785/195 johnso :Rbstjissue 958/192 1151/190 2195/161:Rv7man 4005/94 4100/170 4378/155 4534/149 4856/174 5031/190 7133/91 7225/221 7785/195 jr :Rbstjissue 3659/174:Rv7man 6073/948 kaufel :Rbstjissue 3659/174 kernig :Rbstjissue 958/192 1842/174:Rv7man 135/278 414/174 1085/123 2682/49 labora :Rv7man 135/278 2732/126 3722/157 4684/171 4856/174 5309/125 5879/193 lampso :Rv7man 0/134 1466/178 langua :Rbstjissue 958/192 2195/161:Rv7man 1085/123 2125/140 2859/796 4534/149 7022/110 7133/91 7785/195 large :Rv7man 6073/948 lesk :Rbstjissue 958/192 1842/174 2195/161:Rv7man 414/174 4684/171 5222/86 7133/91 lex :Rv7man 4684/171 lexica :Rv7man 4684/171 like :Rv7man 2859/796 lint :Rv7man 4378/155 lr :Rv7man 4005/94 ltd :Rv7man 2859/796 ludere :Rbstjissue 2537/217 lyckla :Rbstjissue 1342/169 1512/150 1663/178:Rv7man 934/150 mac8 :Rbstjissue 3113/175 mach :Rv7man 0/134 135/278 1806/208 4100/170 7225/221 7447/337 machin :Rbstjissue 2755/217:Rv7man 7785/195 macros :Rv7man 5222/86 mainta :Rv7man 6073/948 man :Rv7man 2859/796 6073/948 manmon :Rv7man 6073/948 manual :Rv7man 1466/178 2732/126 3722/157 5309/125 manufa :Rv7man 2859/796 many :Rv7man 2859/796 maranz :Rbstjissue 2537/217 march :Rv7man 135/278 1806/208 2859/796 mashey :Rbstjissue 2357/179:Rv7man 589/164 754/179 3656/65 master :Rv7man 7022/110 mathem :Rv7man 135/278 3722/157 mcilro :Rbstjissue 129/160:Rv7man 5879/193 mcmaho :Rbstjissue 2017/177 mert :Rbstjissue 1342/169 method :Rv7man 2859/796 meyer :Rv7man 2266/173 microc :Rbstjissue 2755/217 microp :Rbstjissue 1512/150:Rv7man 934/150 minico :Rbstjissue 1663/178 missin :Rv7man 2859/796 mit :Rv7man 2579/102 3880/124 7022/110 more :Rv7man 6073/948 morris :Rbstjissue 2017/177 most :Rv7man 6073/948 ms :Rv7man 2266/173 5222/86 ms2acs :Rbstjissue 3113/175 ms2ert :Rbstjissue 1342/169 3444/214 ms2ult :Rv7man 2579/102 ms2uni :Rv7man 2266/173 much :Rv7man 2859/796 muchne :Rv7man 2859/796 multic :Rv7man 1645/160 2579/102 multip :Rv7man 2266/173 3722/157 multir :Rv7man 7785/195 munix :Rv7man 2266/173 murphy :Rv7man 1806/208 mythic :Rv7man 6073/948 nagelb :Rbstjissue 3444/214 naval :Rv7man 2266/173 need :Rv7man 6073/948 networ :Rbstjissue 3659/174:Rv7man 5435/180 5793/85 not :Rv7man 6073/948 notice :Rv7man 2015/109 notion :Rv7man 2859/796 number :Rv7man 7447/337 octobe :Rv7man 589/164 1645/160 4684/171 7447/337 one :Rv7man 6073/948 online :Rv7man 0/134 operat :Rbstjissue 1342/169 2537/217 3444/214 3659/174:Rv7man 1645/160 5435/180 7785/195 optima :Rv7man 7225/221 7447/337 or :Rv7man 6073/948 organi :Rv7man 1645/160 2579/102 ossann :Rbstjissue 1842/174:Rv7man 414/174 out :Rv7man 6073/948 overvi :Rv7man 2015/109 p116 :Rv7man 6073/948 p117 :Rv7man 6073/948 p121 :Rv7man 6073/948 p55 :Rv7man 6073/948 paged :Rv7man 1806/208 parsin :Rv7man 4005/94 4100/170 pekari :Rbstjissue 3289/154 percen :Rv7man 6073/948 percep :Rv7man 6073/948 pilla :Rbstjissue 3444/214 pinson :Rbstjissue 129/160 pipes :Rv7man 2859/796 plan :Rv7man 6073/948 pointe :Rv7man 6073/948 politi :Rv7man 2859/796 portab :Rbstjissue 1151/190:Rv7man 4534/149 5031/190 7022/110 postgr :Rv7man 2266/173 practi :Rv7man 1209/114 4534/149 prefac :Rbstjissue 0/128 prelim :Rv7man 1466/178 prenti :Rv7man 1085/123 prepar :Rbstjissue 1842/174:Rv7man 414/174 press :Rv7man 2125/140 2579/102 3880/124 princi :Rv7man 1645/160 4271/106 4534/149 7785/195 proble :Rv7man 6073/948 proc :Rv7man 589/164 1645/160 4534/149 5616/176 7785/195 proces :Rbstjissue 1663/178 2017/177:Rv7man 2125/140 produc :Rv7man 6073/948 progra :Rbstjissue 958/192 1151/190 2357/179:Rv7man 589/164 754/179 1085/123 2125/140 2732/126 2859/796 4378/155 4534/149 5031/190 5309/125 6073/948 7785/195 projec :Rv7man 1466/178 6073/948 prose :Rv7man 6073/948 pwbuni :Rv7man 3656/65 qed :Rv7man 0/134 rather :Rv7man 6073/948 readab :Rv7man 6073/948 readin :Rv7man 6073/948 record :Rv7man 2859/796 recrea :Rv7man 1209/114 reduce :Rv7man 6073/948 reexam :Rv7man 2859/796 refere :Rv7man 1466/178 3722/157 6073/948 regs :Rv7man 7447/337 rep :Rv7man 135/278 4378/155 4684/171 4856/174 5879/193 report :Rv7man 2859/796 requir :Rv7man 6073/948 retros :Rbstjissue 575/240 review :Rv7man 5435/180 revise :Rv7man 135/278 ritchi :Rbstjissue 290/138 575/240 958/192 1151/190:Rv7man 1085/123 2440/138 2732/126 5031/190 5309/125 7133/91 rovegn :Rbstjissue 3113/175 rs2bcs :Rbstjissue 3444/214 satell :Rbstjissue 1663/178 satisf :Rv7man 6073/948 school :Rv7man 2266/173 sci :Rv7man 135/278 4378/155 4684/171 4856/174 5879/193 second :Rv7man 6073/948 semant :Rv7man 2859/796 septem :Rv7man 3656/65 sequen :Rv7man 2125/140 7133/91 sermon :Rv7man 2859/796 sethi :Rv7man 7447/337 sgenie :Rv7man 1466/178 sharin :Rv7man 1806/208 shell :Rbstjissue 816/141:Rv7man 1324/141 2859/796 3656/65 shown :Rv7man 6073/948 sieber :Rbstjissue 2755/217 sigpla :Rv7man 2015/109 sincer :Rv7man 2859/796 sl5 :Rv7man 2015/109 snyder :Rv7man 7022/110 softwa :Rv7man 589/164 1209/114 6073/948 someon :Rv7man 6073/948 spdpn1 :Rv7man 1806/208 spider :Rv7man 5616/176 ssdsn :Rv7man 1466/178 state :Rv7man 2859/796 statis :Rbstjissue 2017/177 stenex :Rv7man 1806/208 storm :Rbstjissue 2755/217 straig :Rv7man 7447/337 struct :Rv7man 2859/796 suppor :Rbstjissue 3113/175 survey :Rv7man 4005/94 symp :Rv7man 4534/149 7785/195 sympos :Rv7man 1645/160 syntax :Rv7man 2859/796 sys :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 958/192 1151/190 1342/169 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 414/174 754/179 934/150 1324/141 2440/138 5031/190 system :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 958/192 1151/190 1342/169 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 135/278 414/174 754/179 934/150 1324/141 1466/178 1645/160 1806/208 2440/138 2579/102 2859/796 3722/157 3880/124 5031/190 5435/180 5616/176 6073/948 tague :Rbstjissue 129/160 2537/217 tangib :Rv7man 6073/948 tech :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 958/192 1151/190 1342/169 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 135/278 414/174 754/179 934/150 1324/141 2440/138 4378/155 4684/171 4856/174 5031/190 5879/193 tenex :Rv7man 1806/208 tested :Rv7man 6073/948 text :Rbstjissue 2017/177 than :Rv7man 6073/948 that :Rv7man 2859/796 6073/948 their :Rv7man 2859/796 them :Rv7man 6073/948 theory :Rv7man 4534/149 there :Rv7man 2859/796 these :Rv7man 2859/796 thesis :Rv7man 2266/173 7022/110 third :Rv7man 1645/160 thomps :Rbstjissue 290/138 429/145:Rv7man 2440/138 2732/126 2859/796 5309/125 throw :Rv7man 6073/948 time :Rv7man 1806/208 timesh :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 958/192 1151/190 1342/169 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 414/174 754/179 934/150 1324/141 1466/178 2440/138 3880/124 5031/190 togeth :Rv7man 2859/796 tomlin :Rv7man 1806/208 tools :Rbstjissue 2195/161 total :Rv7man 6073/948 trees :Rv7man 7225/221 troff :Rv7man 5222/86 tutori :Rv7man 3656/65 types :Rv7man 2859/796 typese :Rv7man 135/278 typica :Rv7man 6073/948 typing :Rv7man 5222/86 ullman :Rv7man 4100/170 4271/106 7447/337 7785/195 univer :Rv7man 3722/157 unix :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 1151/190 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 414/174 754/179 934/150 1324/141 2266/173 2440/138 2682/49 2732/126 2859/796 5031/190 5222/86 5309/125 5435/180 us2nix :Rbstjissue 0/128 129/160 290/138 429/145 575/240 816/141 958/192 1151/190 1342/169 1512/150 1663/178 1842/174 2017/177 2195/161 2357/179 2537/217 2755/217 2973/139 3113/175 3289/154 3444/214 3659/174:Rv7man 414/174 754/179 934/150 1324/141 2266/173 2440/138 2732/126 2859/796 5031/190 5309/125 5435/180 used :Rv7man 6073/948 user :Rv7man 2859/796 6073/948 users :Rv7man 3722/157 6073/948 value :Rv7man 2859/796 versio :Rv7man 2266/173 virtua :Rv7man 5793/85 when :Rv7man 2859/796 whole :Rv7man 3880/124 widely :Rv7man 6073/948 will :Rv7man 6073/948 withou :Rv7man 2859/796 wonsie :Rbstjissue 2755/217 workbe :Rbstjissue 2357/179:Rv7man 589/164 754/179 yacc :Rv7man 4856/174 yet :Rv7man 4856/174 you :Rv7man 6073/948 :Rv7man 5793/85 decemb :Rv7man 0/134 4378/155 delive :Rv7man 6073/948 descri :Rv7man 2859/796 design :Rbstjissue 2973/139:Rv7man 2859/796 4271/106 6073/dict/spellhist 751 0 12 0 6045320341 10361 2/dev/nulldict/web2 644 0 12 11371035 3526563420 5655 A a aa aal aalii aam Aani aardvark aardwolf Aaron Aaronic Aaronical Aaronite Aaronitic Aaru Ab aba Ababdeh Ababua abac abaca abacate abacay abacinate abacination abaciscus abacist aback abactinal abactinally abaction abactor abaculus abacus Abadite abaff abaft abaisance abaiser abaissed abalienate abalienation abalone Abama abampere abandon abandonable abandoned abandonedly abandonee abandoner abandonment Abanic Abantes abaptiston Abarambo Abaris abarthrosis abarticular abarticulation abas abase abased abasedly abasedness abasement abaser Abasgi abash abashed abashedly abashedness abashless abashlessly abashment abasia abasic abask Abassin abastardize abatable abate abatement abater abatis abatised abaton abator abattoir Abatua abature abave abaxial abaxile abaze abb Abba abbacomes abbacy Abbadide abbas abbasi abbassi Abbasside abbatial abbatical abbess abbey abbeystede Abbie abbot abbotcy abbotnullius abbotship abbreviate abbreviately abbreviation abbreviator abbreviatory abbreviature Abby abcoulomb abdal abdat Abderian Abderite abdest abdicable abdicant abdicate abdication abdicative abdicator Abdiel abditive abditory abdomen abdominal Abdominales abdominalian abdominally abdominoanterior abdominocardiac abdominocentesis abdominocystic abdominogenital abdominohysterectomy abdominohysterotomy abdominoposterior abdominoscope abdominoscopy abdominothoracic abdominous abdominovaginal abdominovesical abduce abducens abducent abduct abduction abductor Abe abeam abear abearance abecedarian abecedarium abecedary abed abeigh Abel abele Abelia Abelian Abelicea Abelite abelite Abelmoschus abelmosk Abelonian abeltree Abencerrages abenteric abepithymia Aberdeen aberdevine Aberdonian Aberia aberrance aberrancy aberrant aberrate aberration aberrational aberrator aberrometer aberroscope aberuncator abet abetment abettal abettor abevacuation abey abeyance abeyancy abeyant abfarad abhenry abhiseka abhominable abhor abhorrence abhorrency abhorrent abhorrently abhorrer abhorrible abhorring Abhorson abidal abidance abide abider abidi abiding abidingly abidingness Abie Abies abietate abietene abietic abietin Abietineae abietineous abietinic Abiezer Abigail abigail abigailship abigeat abigeus abilao ability abilla abilo abintestate abiogenesis abiogenesist abiogenetic abiogenetical abiogenetically abiogenist abiogenous abiogeny abiological abiologically abiology abiosis abiotic abiotrophic abiotrophy Abipon abir abirritant abirritate abirritation abirritative abiston Abitibi abiuret abject abjectedness abjection abjective abjectly abjectness abjoint abjudge abjudicate abjudication abjunction abjunctive abjuration abjuratory abjure abjurement abjurer abkar abkari Abkhas Abkhasian ablach ablactate ablactation ablare ablastemic ablastous ablate ablation ablatitious ablatival ablative ablator ablaut ablaze able ableeze ablegate ableness ablepharia ablepharon ablepharous Ablepharus ablepsia ableptical ableptically abler ablest ablewhackets ablins abloom ablow ablude abluent ablush ablution ablutionary abluvion ably abmho Abnaki abnegate abnegation abnegative abnegator Abner abnerval abnet abneural abnormal abnormalism abnormalist abnormality abnormalize abnormally abnormalness abnormity abnormous abnumerable Abo aboard Abobra abode abodement abody abohm aboil abolish abolisher abolishment abolition abolitionary abolitionism abolitionist abolitionize abolla aboma abomasum abomasus abominable abominableness abominably abominate abomination abominator abomine Abongo aboon aborad aboral aborally abord aboriginal aboriginality aboriginally aboriginary aborigine abort aborted aborticide abortient abortifacient abortin abortion abortional abortionist abortive abortively abortiveness abortus abouchement abound abounder abounding aboundingly about abouts above aboveboard abovedeck aboveground aboveproof abovestairs abox abracadabra abrachia abradant abrade abrader Abraham Abrahamic Abrahamidae Abrahamite Abrahamitic abraid Abram Abramis abranchial abranchialism abranchian Abranchiata abranchiate abranchious abrasax abrase abrash abrasiometer abrasion abrasive abrastol abraum abraxas abreact abreaction abreast abrenounce abret abrico abridge abridgeable abridged abridgedly abridger abridgment abrim abrin abristle abroach abroad Abrocoma abrocome abrogable abrogate abrogation abrogative abrogator Abroma Abronia abrook abrotanum abrotine abrupt abruptedly abruption abruptly abruptness Abrus Absalom absampere Absaroka absarokite abscess abscessed abscession abscessroot abscind abscise abscision absciss abscissa abscissae abscisse abscission absconce abscond absconded abscondedly abscondence absconder absconsa abscoulomb absence absent absentation absentee absenteeism absenteeship absenter absently absentment absentmindedly absentness absfarad abshenry Absi absinthe absinthial absinthian absinthiate absinthic absinthin absinthine absinthism absinthismic absinthium absinthol absit absmho absohm absolute absolutely absoluteness absolution absolutism absolutist absolutistic absolutistically absolutive absolutization absolutize absolutory absolvable absolvatory absolve absolvent absolver absolvitor absolvitory absonant absonous absorb absorbability absorbable absorbed absorbedly absorbedness absorbefacient absorbency absorbent absorber absorbing absorbingly absorbition absorpt absorptance absorptiometer absorptiometric absorption absorptive absorptively absorptiveness absorptivity absquatulate abstain abstainer abstainment abstemious abstemiously abstemiousness abstention abstentionist abstentious absterge abstergent abstersion abstersive abstersiveness abstinence abstinency abstinent abstinential abstinently abstract abstracted abstractedly abstractedness abstracter abstraction abstractional abstractionism abstractionist abstractitious abstractive abstractively abstractiveness abstractly abstractness abstractor abstrahent abstricted abstriction abstruse abstrusely abstruseness abstrusion abstrusity absume absumption absurd absurdity absurdly absurdness absvolt Absyrtus abterminal abthain abthainrie abthainry abthanage Abu abu abucco abulia abulic abulomania abuna abundance abundancy abundant Abundantia abundantly abura aburabozu aburban aburst aburton abusable abuse abusedly abusee abuseful abusefully abusefulness abuser abusion abusious abusive abusively abusiveness abut Abuta Abutilon abutment abuttal abutter abutting abuzz abvolt abwab aby abysm abysmal abysmally abyss abyssal Abyssinian abyssobenthonic abyssolith abyssopelagic acacatechin acacatechol acacetin Acacia Acacian acaciin acacin academe academial academian Academic academic academical academically academicals academician academicism academism academist academite academization academize Academus academy Acadia acadialite Acadian Acadie Acaena acajou acaleph Acalepha Acalephae acalephan acalephoid acalycal acalycine acalycinous acalyculate Acalypha Acalypterae Acalyptrata Acalyptratae acalyptrate Acamar acampsia acana acanaceous acanonical acanth acantha Acanthaceae acanthaceous acanthad Acantharia Acanthia acanthial acanthin acanthine acanthion acanthite acanthocarpous Acanthocephala acanthocephalan Acanthocephali acanthocephalous Acanthocereus acanthocladous Acanthodea acanthodean Acanthodei Acanthodes acanthodian Acanthodidae Acanthodii Acanthodini acanthoid Acantholimon acanthological acanthology acantholysis acanthoma Acanthomeridae acanthon Acanthopanax Acanthophis acanthophorous acanthopod acanthopodous acanthopomatous acanthopore acanthopteran Acanthopteri acanthopterous acanthopterygian Acanthopterygii acanthosis acanthous Acanthuridae Acanthurus acanthus acapnia acapnial acapsular acapu acapulco acara Acarapis acardia acardiac acari acarian acariasis acaricidal acaricide acarid Acarida Acaridea acaridean acaridomatium acariform Acarina acarine acarinosis acarocecidium acarodermatitis acaroid acarol acarologist acarology acarophilous acarophobia acarotoxic acarpelous acarpous Acarus Acastus acatalectic acatalepsia acatalepsy acataleptic acatallactic acatamathesia acataphasia acataposis acatastasia acatastatic acate acategorical acatery acatharsia acatharsy acatholic acaudal acaudate acaulescent acauline acaulose acaulous acca accede accedence acceder accelerable accelerando accelerant accelerate accelerated acceleratedly acceleration accelerative accelerator acceleratory accelerograph accelerometer accend accendibility accendible accension accensor accent accentless accentor accentuable accentual accentuality accentually accentuate accentuation accentuator accentus accept acceptability acceptable acceptableness acceptably acceptance acceptancy acceptant acceptation accepted acceptedly accepter acceptilate acceptilation acception acceptive acceptor acceptress accerse accersition accersitor access accessarily accessariness accessary accessaryship accessibility accessible accessibly accession accessional accessioner accessive accessively accessless accessorial accessorily accessoriness accessorius accessory accidence accidency accident accidental accidentalism accidentalist accidentality accidentally accidentalness accidented accidential accidentiality accidently accidia accidie accinge accipient Accipiter accipitral accipitrary Accipitres accipitrine accismus accite acclaim acclaimable acclaimer acclamation acclamator acclamatory acclimatable acclimatation acclimate acclimatement acclimation acclimatizable acclimatization acclimatize acclimatizer acclimature acclinal acclinate acclivitous acclivity acclivous accloy accoast accoil accolade accoladed accolated accolent accolle accombination accommodable accommodableness accommodate accommodately accommodateness accommodating accommodatingly accommodation accommodational accommodative accommodativeness accommodator accompanier accompaniment accompanimental accompanist accompany accompanyist accompletive accomplice accompliceship accomplicity accomplish accomplishable accomplished accomplisher accomplishment accomplisht accompt accord accordable accordance accordancy accordant accordantly accorder according accordingly accordion accordionist accorporate accorporation accost accostable accosted accouche accouchement accoucheur accoucheuse account accountability accountable accountableness accountably accountancy accountant accountantship accounting accountment accouple accouplement accouter accouterment accoy accredit accreditate accreditation accredited accreditment accrementitial accrementition accresce accrescence accrescent accretal accrete accretion accretionary accretive accroach accroides accrual accrue accruement accruer accubation accubitum accubitus accultural acculturate acculturation acculturize accumbency accumbent accumber accumulable accumulate accumulation accumulativ accumulative accumulatively accumulativeness accumulator accuracy accurate accurately accurateness accurse accursed accursedly accursedness accusable accusably accusal accusant accusation accusatival accusative accusatively accusatorial accusatorially accusatory accusatrix accuse accused accuser accusingly accusive accustom accustomed accustomedly accustomedness ace aceacenaphthene aceanthrene aceanthrenequinone acecaffine aceconitic acedia acediamine acediast acedy Aceldama Acemetae Acemetic acenaphthene acenaphthenyl acenaphthylene acentric acentrous aceologic aceology acephal Acephala acephalan Acephali acephalia Acephalina acephaline acephalism acephalist Acephalite acephalocyst acephalous acephalus Acer Aceraceae aceraceous Acerae Acerata acerate Acerates acerathere Aceratherium aceratosis acerb Acerbas acerbate acerbic acerbity acerdol acerin acerose acerous acerra acertannin acervate acervately acervation acervative acervose acervuline acervulus acescence acescency acescent aceship acesodyne Acestes acetabular Acetabularia acetabuliferous acetabuliform acetabulous acetabulum acetacetic acetal acetaldehydase acetaldehyde acetaldehydrase acetalization acetalize acetamide acetamidin acetamidine acetamido acetaminol acetanilid acetanilide acetanion acetaniside acetanisidide acetannin acetarious acetarsone acetate acetated acetation acetbromamide acetenyl acethydrazide acetic acetification acetifier acetify acetimeter acetimetry acetin acetize acetmethylanilide acetnaphthalide acetoacetanilide acetoacetate acetoacetic acetoamidophenol acetoarsenite Acetobacter acetobenzoic acetobromanilide acetochloral acetocinnamene acetoin acetol acetolysis acetolytic acetometer acetometrical acetometrically acetometry acetomorphine acetonaphthone acetonate acetonation acetone acetonemia acetonemic acetonic acetonitrile acetonization acetonize acetonuria acetonurometer acetonyl acetonylacetone acetonylidene acetophenetide acetophenin acetophenine acetophenone acetopiperone acetopyrin acetosalicylic acetose acetosity acetosoluble acetothienone acetotoluide acetotoluidine acetous acetoveratrone acetoxime acetoxyl acetoxyphthalide acetphenetid acetphenetidin acetract acettoluide acetum aceturic acetyl acetylacetonates acetylacetone acetylamine acetylate acetylation acetylator acetylbenzene acetylbenzoate acetylbenzoic acetylbiuret acetylcarbazole acetylcellulose acetylcholine acetylcyanide acetylenation acetylene acetylenediurein acetylenic acetylenyl acetylfluoride acetylglycine acetylhydrazine acetylic acetylide acetyliodide acetylizable acetylization acetylize acetylizer acetylmethylcarbinol acetylperoxide acetylphenol acetylphenylhydrazine acetylrosaniline acetylsalicylate acetylsalol acetyltannin acetylthymol acetyltropeine acetylurea ach Achaean Achaemenian Achaemenid Achaemenidae Achaemenidian Achaenodon Achaeta achaetous achage Achagua Achakzai achalasia Achamoth Achango achar Achariaceae Achariaceous achate Achates Achatina Achatinella Achatinidae ache acheilia acheilous acheiria acheirous acheirus Achen achene achenial achenium achenocarp achenodium acher Achernar Acheronian Acherontic Acherontical achete Achetidae Acheulean acheweed achievable achieve achievement achiever achigan achilary achill Achillea Achillean Achilleid achilleine Achillize achillobursitis achillodynia achime Achimenes Achinese aching achingly achira Achitophel achlamydate Achlamydeae achlamydeous achlorhydria achlorophyllous achloropsia Achmetha acholia acholic Acholoe acholous acholuria acholuric Achomawi achondrite achondritic achondroplasia achondroplastic achor achordal Achordata achordate Achorion Achras achree achroacyte Achroanthes achrodextrin achrodextrinase achroglobin achroiocythaemia achroiocythemia achroite achroma achromacyte achromasia achromat achromate Achromatiaceae achromatic achromatically achromaticity achromatin achromatinic achromatism Achromatium achromatizable achromatization achromatize achromatocyte achromatolysis achromatope achromatophile achromatopia achromatopsia achromatopsy achromatosis achromatous achromaturia achromia achromic Achromobacter Achromobacterieae achromoderma achromophilous achromotrichia achromous achronical achroodextrin achroodextrinase achroous achropsia achtehalber achtel achtelthaler Achuas achy achylia achylous achymia achymous Achyranthes Achyrodes acichloride acicula acicular acicularly aciculate aciculated aciculum acid Acidanthera Acidaspis acidemia acider acidic acidiferous acidifiable acidifiant acidific acidification acidifier acidify acidimeter acidimetric acidimetrical acidimetrically acidimetry acidite acidity acidize acidly acidness acidoid acidology acidometer acidometry acidophile acidophilic acidophilous acidoproteolytic acidosis acidosteophyte acidotic acidproof acidulate acidulent acidulous aciduric acidyl acier acierage Acieral acierate acieration aciform aciliate aciliated Acilius acinaceous acinaces acinacifolious acinaciform acinar acinarious acinary Acineta Acinetae acinetan Acinetaria acinetarian acinetic acinetiform Acinetina acinetinan acinic aciniform acinose acinotubular acinous acinus Acipenser Acipenseres acipenserid Acipenseridae acipenserine acipenseroid Acipenseroidei Acis aciurgy acker ackey ackman acknow acknowledge acknowledgeable acknowledged acknowledgedly acknowledger aclastic acle acleidian acleistous Aclemon aclidian aclinal aclinic acloud aclys Acmaea Acmaeidae acmatic acme acmesthesia acmic Acmispon acmite acne acneform acneiform acnemia Acnida acnodal acnode Acocanthera acocantherin acock acockbill acocotl Acoela Acoelomata acoelomate acoelomatous Acoelomi acoelomous acoelous Acoemetae Acoemeti Acoemetic acoin acoine Acolapissa acold Acolhua Acolhuan acologic acology acolous acoluthic acolyte acolythate Acoma acoma acomia acomous aconative acondylose acondylous acone aconic aconin aconine aconital aconite aconitia aconitic aconitin aconitine Aconitum Acontias acontium Acontius aconuresis acopic acopon acopyrin acopyrine acor acorea acoria acorn acorned Acorus acosmic acosmism acosmist acosmistic acotyledon acotyledonous acouasm acouchi acouchy acoumeter acoumetry acouometer acouophonia acoupa acousmata acousmatic acoustic acoustical acoustically acoustician acousticolateral Acousticon acoustics acquaint acquaintance acquaintanceship acquaintancy acquaintant acquainted acquaintedness acquest acquiesce acquiescement acquiescence acquiescency acquiescent acquiescently acquiescer acquiescingly acquirability acquirable acquire acquired acquirement acquirenda acquirer acquisible acquisite acquisited acquisition acquisitive acquisitively acquisitiveness acquisitor acquisitum acquist acquit acquitment acquittal acquittance acquitter Acrab acracy acraein Acraeinae acraldehyde Acrania acranial acraniate acrasia Acrasiaceae Acrasiales Acrasida Acrasieae Acraspeda acraspedote acratia acraturesis acrawl acraze acre acreable acreage acreak acream acred Acredula acreman acrestaff acrid acridan acridian acridic Acrididae Acridiidae acridine acridinic acridinium acridity Acridium acridly acridness acridone acridonium acridophagus acridyl acriflavin acriflavine acrimonious acrimoniously acrimoniousness acrimony acrindoline acrinyl acrisia Acrisius Acrita acritan acrite acritical acritol Acroa acroaesthesia acroama acroamatic acroamatics acroanesthesia acroarthritis acroasphyxia acroataxia acroatic acrobacy acrobat Acrobates acrobatholithic acrobatic acrobatical acrobatically acrobatics acrobatism acroblast acrobryous acrobystitis Acrocarpi acrocarpous acrocephalia acrocephalic acrocephalous acrocephaly Acrocera Acroceratidae Acroceraunian Acroceridae Acrochordidae Acrochordinae acrochordon Acroclinium Acrocomia acroconidium acrocontracture acrocoracoid acrocyanosis acrocyst acrodactylum acrodermatitis acrodont acrodontism acrodrome acrodromous Acrodus acrodynia acroesthesia acrogamous acrogamy acrogen acrogenic acrogenous acrogenously acrography Acrogynae acrogynae acrogynous acrolein acrolith acrolithan acrolithic acrologic acrologically acrologism acrologue acrology acromania acromastitis acromegalia acromegalic acromegaly acromelalgia acrometer acromial acromicria acromioclavicular acromiocoracoid acromiodeltoid acromiohumeral acromiohyoid acromion acromioscapular acromiosternal acromiothoracic acromonogrammatic acromphalus Acromyodi acromyodian acromyodic acromyodous acromyotonia acromyotonus acron acronarcotic acroneurosis acronical acronically acronyc acronych Acronycta acronyctous acronym acronymic acronymize acronymous acronyx acrook acroparalysis acroparesthesia acropathology acropathy acropetal acropetally acrophobia acrophonetic acrophonic acrophony acropodium acropoleis acropolis acropolitan Acropora acrorhagus acrorrheuma acrosarc acrosarcum acroscleriasis acroscleroderma acroscopic acrose acrosome acrosphacelus acrospire acrospore acrosporous across acrostic acrostical acrostically acrostichal Acrosticheae acrostichic acrostichoid Acrostichum acrosticism acrostolion acrostolium acrotarsial acrotarsium acroteleutic acroterial acroteric acroterium Acrothoracica acrotic acrotism acrotomous Acrotreta Acrotretidae acrotrophic acrotrophoneurosis Acrux Acrydium acryl acrylaldehyde acrylate acrylic acrylonitrile acrylyl act acta actability actable Actaea Actaeaceae Actaeon Actaeonidae Actiad Actian actification actifier actify actin actinal actinally actinautographic actinautography actine actinenchyma acting Actinia actinian Actiniaria actiniarian actinic actinically Actinidia Actinidiaceae actiniferous actiniform actinine actiniochrome actiniohematin Actiniomorpha actinism Actinistia actinium actinobacillosis Actinobacillus actinoblast actinobranch actinobranchia actinocarp actinocarpic actinocarpous actinochemistry actinocrinid Actinocrinidae actinocrinite Actinocrinus actinocutitis actinodermatitis actinodielectric actinodrome actinodromous actinoelectric actinoelectrically actinoelectricity actinogonidiate actinogram actinograph actinography actinoid Actinoida Actinoidea actinolite actinolitic actinologous actinologue actinology actinomere actinomeric actinometer actinometric actinometrical actinometry actinomorphic actinomorphous actinomorphy Actinomyces Actinomycetaceae Actinomycetales actinomycete actinomycetous actinomycin actinomycoma actinomycosis actinomycotic Actinomyxidia Actinomyxidiida actinon Actinonema actinoneuritis actinophone actinophonic actinophore actinophorous actinophryan Actinophrys Actinopoda actinopraxis actinopteran Actinopteri actinopterous actinopterygian Actinopterygii actinopterygious actinoscopy actinosoma actinosome Actinosphaerium actinost actinostereoscopy actinostomal actinostome actinotherapeutic actinotherapeutics actinotherapy actinotoxemia actinotrichium actinotrocha actinouranium Actinozoa actinozoal actinozoan actinozoon actinula action actionable actionably actional actionary actioner actionize actionless Actipylea Actium activable activate activation activator active actively activeness activin activism activist activital activity activize actless actomyosin acton actor actorship actress Acts actu actual actualism actualist actualistic actuality actualization actualize actually actualness actuarial actuarially actuarian actuary actuaryship actuation actuator acture acturience actutate acuaesthesia Acuan acuate acuation Acubens acuclosure acuductor acuesthesia acuity aculea Aculeata aculeate aculeated aculeiform aculeolate aculeolus aculeus acumen acuminate acumination acuminose acuminous acuminulate acupress acupressure acupunctuate acupunctuation acupuncturation acupuncturator acupuncture acurative acushla acutangular acutate acute acutely acutenaculum acuteness acutiator acutifoliate Acutilinguae acutilingual acutilobate acutiplantar acutish acutograve acutonodose acutorsion acyanoblepsia acyanopsia acyclic acyesis acyetic acyl acylamido acylamidobenzene acylamino acylate acylation acylogen acyloin acyloxy acyloxymethane acyrological acyrology acystia ad Ada adactyl adactylia adactylism adactylous Adad adad adage adagial adagietto adagio Adai Adaize Adam adamant adamantean adamantine adamantinoma adamantoblast adamantoblastoma adamantoid adamantoma adamas Adamastor adambulacral adamellite Adamhood Adamic Adamical Adamically adamine Adamite adamite Adamitic Adamitical Adamitism Adamsia adamsite adance adangle Adansonia Adapa adapid Adapis adapt adaptability adaptable adaptation adaptational adaptationally adaptative adaptedness adapter adaption adaptional adaptionism adaptitude adaptive adaptively adaptiveness adaptometer adaptor adaptorial Adar adarme adat adati adatom adaunt adaw adawe adawlut adawn adaxial aday adays adazzle adcraft add Adda adda addability addable addax addebted added addedly addend addenda addendum adder adderbolt adderfish adderspit adderwort addibility addible addicent addict addicted addictedness addiction Addie addiment Addisonian Addisoniana additament additamentary addition additional additionally additionary additionist addititious additive additively additivity additory addle addlebrain addlebrained addlehead addleheaded addleheadedly addleheadedness addlement addleness addlepate addlepated addlepatedness addleplot addlings addlins addorsed address addressee addresser addressful Addressograph addressor addrest Addu adduce adducent adducer adducible adduct adduction adductive adductor Addy Ade ade adead adeem adeep Adela Adelaide Adelarthra Adelarthrosomata adelarthrosomatous Adelbert Adelea Adeleidae Adelges Adelia Adelina Adeline adeling adelite Adeliza adelocerous Adelochorda adelocodonic adelomorphic adelomorphous adelopod Adelops Adelphi Adelphian adelphogamy Adelphoi adelpholite adelphophagy ademonist adempted ademption adenalgia adenalgy Adenanthera adenase adenasthenia adendric adendritic adenectomy adenectopia adenectopic adenemphractic adenemphraxis adenia adeniform adenine adenitis adenization adenoacanthoma adenoblast adenocancroid adenocarcinoma adenocarcinomatous adenocele adenocellulitis adenochondroma adenochondrosarcoma adenochrome adenocyst adenocystoma adenocystomatous adenodermia adenodiastasis adenodynia adenofibroma adenofibrosis adenogenesis adenogenous adenographer adenographic adenographical adenography adenohypersthenia adenoid adenoidal adenoidism adenoliomyofibroma adenolipoma adenolipomatosis adenologaditis adenological adenology adenolymphocele adenolymphoma adenoma adenomalacia adenomatome adenomatous adenomeningeal adenometritis adenomycosis adenomyofibroma adenomyoma adenomyxoma adenomyxosarcoma adenoncus adenoneural adenoneure adenopathy adenopharyngeal adenopharyngitis adenophlegmon Adenophora adenophore adenophorous adenophthalmia adenophyllous adenophyma adenopodous adenosarcoma adenosclerosis adenose adenosine adenosis adenostemonous Adenostoma adenotome adenotomic adenotomy adenotyphoid adenotyphus adenyl adenylic Adeodatus Adeona Adephaga adephagan adephagia adephagous adept adeptness adeptship adequacy adequate adequately adequateness adequation adequative adermia adermin Adessenarian adet adevism adfected adfix adfluxion adglutinate Adhafera adhaka adhamant Adhara adharma adhere adherence adherency adherent adherently adherer adherescence adherescent adhesion adhesional adhesive adhesively adhesivemeter adhesiveness adhibit adhibition adiabatic adiabatically adiabolist adiactinic adiadochokinesis adiagnostic adiantiform Adiantum adiaphon adiaphonon adiaphoral adiaphoresis adiaphoretic adiaphorism adiaphorist adiaphoristic adiaphorite adiaphoron adiaphorous adiate adiathermal adiathermancy adiathermanous adiathermic adiathetic adiation Adib Adicea adicity Adiel adieu adieux Adigei Adighe Adigranth adigranth Adin Adinida adinidan adinole adion adipate adipescent adipic adipinic adipocele adipocellulose adipocere adipoceriform adipocerous adipocyte adipofibroma adipogenic adipogenous adipoid adipolysis adipolytic adipoma adipomatous adipometer adipopexia adipopexis adipose adiposeness adiposis adiposity adiposogenital adiposuria adipous adipsia adipsic adipsous adipsy adipyl Adirondack adit adital aditus adjacency adjacent adjacently adjag adject adjection adjectional adjectival adjectivally adjective adjectively adjectivism adjectivitis adjiger adjoin adjoined adjoinedly adjoining adjoint adjourn adjournal adjournment adjudge adjudgeable adjudger adjudgment adjudicate adjudication adjudicative adjudicator adjudicature adjunct adjunction adjunctive adjunctively adjunctly adjuration adjuratory adjure adjurer adjust adjustable adjustably adjustage adjustation adjuster adjustive adjustment adjutage adjutancy adjutant adjutantship adjutorious adjutory adjutrice adjuvant adlay adless adlet Adlumia adlumidine adlumine adman admarginate admaxillary admeasure admeasurement admeasurer admedial admedian admensuration admi adminicle adminicula adminicular adminiculary adminiculate adminiculation adminiculum administer administerd administerial administrable administrant administrate administration administrational administrative administratively administrator administratorship administratress administratrices administratrix admirability admirable admirableness admirably admiral admiralship admiralty admiration admirative admirator admire admired admiredly admirer admiring admiringly admissibility admissible admissibleness admissibly admission admissive admissory admit admittable admittance admitted admittedly admittee admitter admittible admix admixtion admixture admonish admonisher admonishingly admonishment admonition admonitioner admonitionist admonitive admonitively admonitor admonitorial admonitorily admonitory admonitrix admortization adnascence adnascent adnate adnation adnephrine adnerval adneural adnex adnexal adnexed adnexitis adnexopexy adnominal adnominally adnomination adnoun ado adobe adolesce adolescence adolescency adolescent adolescently Adolph Adolphus Adonai Adonean Adonia Adoniad Adonian Adonic adonidin adonin Adoniram Adonis adonite adonitol adonize adoperate adoperation adopt adoptability adoptable adoptant adoptative adopted adoptedly adoptee adopter adoptian adoptianism adoptianist adoption adoptional adoptionism adoptionist adoptious adoptive adoptively adorability adorable adorableness adorably adoral adorally adorant Adorantes adoration adoratory adore adorer Adoretus adoringly adorn adorner adorningly adornment adosculation adossed adoulie adown Adoxa Adoxaceae adoxaceous adoxography adoxy adoze adpao adpress adpromission adradial adradially adradius Adramelech Adrammelech adread adream adreamed adreamt adrectal adrenal adrenalectomize adrenalectomy Adrenalin adrenaline adrenalize adrenalone adrenergic adrenin adrenine adrenochrome adrenocortical adrenocorticotropic adrenolysis adrenolytic adrenotropic Adrian Adriana Adriatic Adrienne adrift adrip adroit adroitly adroitness adroop adrop adrostral adrowse adrue adry adsbud adscendent adscititious adscititiously adscript adscripted adscription adscriptitious adscriptitius adscriptive adsessor adsheart adsignification adsignify adsmith adsmithing adsorb adsorbable adsorbate adsorbent adsorption adsorptive adstipulate adstipulation adstipulator adterminal adtevac adular adularescence adularia adulate adulation adulator adulatory adulatress Adullam Adullamite adult adulter adulterant adulterate adulterately adulterateness adulteration adulterator adulterer adulteress adulterine adulterize adulterous adulterously adultery adulthood adulticidal adulticide adultness adultoid adumbral adumbrant adumbrate adumbration adumbrative adumbratively adunc aduncate aduncated aduncity aduncous adusk adust adustion adustiosis Advaita advance advanceable advanced advancedness advancement advancer advancing advancingly advancive advantage advantageous advantageously advantageousness advection advectitious advective advehent advene advenience advenient Advent advential Adventism Adventist adventitia adventitious adventitiously adventitiousness adventive adventual adventure adventureful adventurement adventurer adventureship adventuresome adventuresomely adventuresomeness adventuress adventurish adventurous adventurously adventurousness adverb adverbial adverbiality adverbialize adverbially adverbiation adversant adversaria adversarious adversary adversative adversatively adverse adversely adverseness adversifoliate adversifolious adversity advert advertence advertency advertent advertently advertisable advertise advertisee advertisement advertiser advertising advice adviceful advisability advisable advisableness advisably advisal advisatory advise advised advisedly advisedness advisee advisement adviser advisership advisive advisiveness advisor advisorily advisory advocacy advocate advocateship advocatess advocation advocator advocatory advocatress advocatrice advocatrix advolution advowee advowson ady adynamia adynamic adynamy adyta adyton adytum adz adze adzer adzooks ae Aeacides Aeacus Aeaean Aechmophorus aecial Aecidiaceae aecidial aecidioform Aecidiomycetes aecidiospore aecidiostage aecidium aeciospore aeciostage aecioteliospore aeciotelium aecium aedeagus Aedes aedicula aedile aedileship aedilian aedilic aedilitian aedility aedoeagus aefald aefaldness aefaldy aefauld aegagropila aegagropile aegagrus Aegean aegerian aegeriid Aegeriidae Aegialitis aegicrania Aegina Aeginetan Aeginetic Aegipan aegirine aegirinolite aegirite aegis Aegisthus Aegithalos Aegithognathae aegithognathism aegithognathous Aegle Aegopodium aegrotant aegyptilla aegyrite aeluroid Aeluroidea aelurophobe aelurophobia aeluropodous aenach aenean aeneolithic aeneous aenigmatite aeolharmonica Aeolia Aeolian Aeolic Aeolicism aeolid Aeolidae Aeolididae aeolina aeoline aeolipile Aeolis Aeolism Aeolist aeolistic aeolodicon aeolodion aeolomelodicon aeolopantalon aeolotropic aeolotropism aeolotropy aeolsklavier aeon aeonial aeonian aeonist Aepyceros Aepyornis Aepyornithidae Aepyornithiformes Aequi Aequian Aequiculi Aequipalpia aequoreal aer aerage aerarian aerarium aerate aeration aerator aerenchyma aerenterectasia aerial aerialist aeriality aerially aerialness aeric aerical Aerides aerie aeried aerifaction aeriferous aerification aeriform aerify aero Aerobacter aerobate aerobatic aerobatics aerobe aerobian aerobic aerobically aerobiologic aerobiological aerobiologically aerobiologist aerobiology aerobion aerobiont aerobioscope aerobiosis aerobiotic aerobiotically aerobious aerobium aeroboat Aerobranchia aerobranchiate aerobus aerocamera aerocartograph Aerocharidae aerocolpos aerocraft aerocurve aerocyst aerodermectasia aerodone aerodonetic aerodonetics aerodrome aerodromics aerodynamic aerodynamical aerodynamicist aerodynamics aerodyne aeroembolism aeroenterectasia aerofoil aerogel aerogen aerogenes aerogenesis aerogenic aerogenically aerogenous aerogeologist aerogeology aerognosy aerogram aerograph aerographer aerographic aerographical aerographics aerography aerogun aerohydrodynamic aerohydropathy aerohydroplane aerohydrotherapy aerohydrous aeroides aerolite aerolith aerolithology aerolitic aerolitics aerologic aerological aerologist aerology aeromaechanic aeromancer aeromancy aeromantic aeromarine aeromechanical aeromechanics aerometeorograph aerometer aerometric aerometry aeromotor aeronat aeronaut aeronautic aeronautical aeronautically aeronautics aeronautism aeronef aeroneurosis aeropathy Aerope aeroperitoneum aeroperitonia aerophagia aerophagist aerophagy aerophane aerophilatelic aerophilatelist aerophilately aerophile aerophilic aerophilous aerophobia aerophobic aerophone aerophor aerophore aerophotography aerophysical aerophysics aerophyte aeroplane aeroplaner aeroplanist aeropleustic aeroporotomy aeroscepsis aeroscepsy aeroscope aeroscopic aeroscopically aeroscopy aerose aerosiderite aerosiderolite Aerosol aerosol aerosphere aerosporin aerostat aerostatic aerostatical aerostatics aerostation aerosteam aerotactic aerotaxis aerotechnical aerotherapeutics aerotherapy aerotonometer aerotonometric aerotonometry aerotropic aerotropism aeroyacht aeruginous aerugo aery aes Aeschylean Aeschynanthus Aeschynomene aeschynomenous Aesculaceae aesculaceous Aesculapian Aesculapius Aesculus Aesopian Aesopic aesthete aesthetic aesthetical aesthetically aesthetician aestheticism aestheticist aestheticize aesthetics aesthiology aesthophysiology Aestii aethalioid aethalium aetheogam aetheogamic aetheogamous aethered Aethionema aethogen aethrioscope Aethusa Aetian aetiogenic aetiotropic aetiotropically Aetobatidae Aetobatus Aetolian Aetomorphae aetosaur aetosaurian Aetosaurus aevia aface afaint Afar afar afara afear afeard afeared afebrile Afenil afernan afetal affa affability affable affableness affably affabrous affair affaite affect affectable affectate affectation affectationist affected affectedly affectedness affecter affectibility affectible affecting affectingly affection affectional affectionally affectionate affectionately affectionateness affectioned affectious affective affectively affectivity affeer affeerer affeerment affeir affenpinscher affenspalte afferent affettuoso affiance affiancer affiant affidation affidavit affidavy affiliable affiliate affiliation affinal affination affine affined affinely affinitative affinitatively affinite affinition affinitive affinity affirm affirmable affirmably affirmance affirmant affirmation affirmative affirmatively affirmatory affirmer affirmingly affix affixal affixation affixer affixion affixture afflation afflatus afflict afflicted afflictedness afflicter afflicting afflictingly affliction afflictionless afflictive afflictively affluence affluent affluently affluentness afflux affluxion afforce afforcement afford affordable afforest afforestable afforestation afforestment afformative affranchise affranchisement affray affrayer affreight affreighter affreightment affricate affricated affrication affricative affright affrighted affrightedly affrighter affrightful affrightfully affrightingly affrightment affront affronte affronted affrontedly affrontedness affronter affronting affrontingly affrontingness affrontive affrontiveness affrontment affuse affusion affy Afghan afghani afield Afifi afikomen afire aflagellar aflame aflare aflat aflaunt aflicker aflight afloat aflow aflower afluking aflush aflutter afoam afoot afore aforehand aforenamed aforesaid aforethought aforetime aforetimes afortiori afoul afraid afraidness Aframerican Afrasia Afrasian afreet afresh afret Afric African Africana Africanism Africanist Africanization Africanize Africanoid Africanthropus Afridi Afrikaans Afrikander Afrikanderdom Afrikanderism Afrikaner Afrogaea Afrogaean afront afrown Afshah Afshar aft aftaba after afteract afterage afterattack afterband afterbeat afterbirth afterblow afterbody afterbrain afterbreach afterbreast afterburner afterburning aftercare aftercareer aftercast aftercataract aftercause afterchance afterchrome afterchurch afterclap afterclause aftercome aftercomer aftercoming aftercooler aftercost aftercourse aftercrop aftercure afterdamp afterdate afterdays afterdeck afterdinner afterdrain afterdrops aftereffect afterend aftereye afterfall afterfame afterfeed afterfermentation afterform afterfriend afterfruits afterfuture aftergame aftergas afterglide afterglow aftergo aftergood aftergrass aftergrave aftergrief aftergrind aftergrowth afterguard afterguns afterhand afterharm afterhatch afterhelp afterhend afterhold afterhope afterhours afterimage afterimpression afterings afterking afterknowledge afterlife afterlifetime afterlight afterloss afterlove aftermark aftermarriage aftermass aftermast aftermath aftermatter aftermeal aftermilk aftermost afternight afternoon afternoons afternose afternote afteroar afterpain afterpart afterpast afterpeak afterpiece afterplanting afterplay afterpressure afterproof afterrake afterreckoning afterrider afterripening afterroll afterschool aftersend aftersensation aftershaft aftershafted aftershine aftership aftershock aftersong aftersound afterspeech afterspring afterstain afterstate afterstorm afterstrain afterstretch afterstudy afterswarm afterswarming afterswell aftertan aftertask aftertaste afterthinker afterthought afterthoughted afterthrift aftertime aftertimes aftertouch aftertreatment aftertrial afterturn aftervision afterwale afterwar afterward afterwards afterwash afterwhile afterwisdom afterwise afterwit afterwitted afterwork afterworking afterworld afterwrath afterwrist aftmost Aftonian aftosa aftward aftwards afunction afunctional afwillite Afzelia aga agabanee agacante agacella Agaces Agade Agag again against againstand agal agalactia agalactic agalactous agalawood agalaxia agalaxy Agalena Agalenidae Agalinis agalite agalloch agallochum agallop agalma agalmatolite agalwood Agama agama Agamae Agamemnon agamete agami agamian agamic agamically agamid Agamidae agamobium agamogenesis agamogenetic agamogenetically agamogony agamoid agamont agamospore agamous agamy aganglionic Aganice Aganippe Agao Agaonidae Agapanthus agape Agapemone Agapemonian Agapemonist Agapemonite agapetae agapeti agapetid Agapetidae Agapornis agar agaric agaricaceae agaricaceous Agaricales agaricic agariciform agaricin agaricine agaricoid Agaricus Agaristidae agarita Agarum agarwal agasp Agastache Agastreae agastric agastroneuria agate agateware Agatha Agathaea Agathaumas agathin Agathis agathism agathist agathodaemon agathodaemonic agathokakological agathology Agathosma agatiferous agatiform agatine agatize agatoid agaty Agau Agave agavose Agawam Agaz agaze agazed Agdistis age aged agedly agedness agee Agelacrinites Agelacrinitidae Agelaius Agelaus ageless agelessness agelong agen Agena agency agenda agendum agenesia agenesic agenesis agennetic agent agentess agential agentival agentive agentry agentship ageometrical ager Ageratum ageusia ageusic ageustia agger aggerate aggeration aggerose Aggie agglomerant agglomerate agglomerated agglomeratic agglomeration agglomerative agglomerator agglutinability agglutinable agglutinant agglutinate agglutination agglutinationist agglutinative agglutinator agglutinin agglutinize agglutinogen agglutinogenic agglutinoid agglutinoscope agglutogenic aggradation aggradational aggrade aggrandizable aggrandize aggrandizement aggrandizer aggrate aggravate aggravating aggravatingly aggravation aggravative aggravator aggregable aggregant Aggregata Aggregatae aggregate aggregately aggregateness aggregation aggregative aggregator aggregatory aggress aggressin aggression aggressionist aggressive aggressively aggressiveness aggressor aggrievance aggrieve aggrieved aggrievedly aggrievedness aggrievement aggroup aggroupment aggry aggur agha Aghan aghanee aghast aghastness Aghlabite Aghorapanthi Aghori Agialid Agib Agiel agilawood agile agilely agileness agility agillawood aging agio agiotage agist agistator agistment agistor agitable agitant agitate agitatedly agitation agitational agitationist agitative agitator agitatorial agitatrix agitprop Agkistrodon agla Aglaia aglance Aglaonema Aglaos aglaozonia aglare Aglaspis Aglauros agleaf agleam aglet aglethead agley aglimmer aglint Aglipayan Aglipayano aglitter aglobulia Aglossa aglossal aglossate aglossia aglow aglucon aglutition aglycosuric Aglypha aglyphodont Aglyphodonta Aglyphodontia aglyphous agmatine agmatology agminate agminated agnail agname agnamed agnate Agnatha agnathia agnathic Agnathostomata agnathostomatous agnathous agnatic agnatically agnation agnel Agnes agnification agnize Agnoetae Agnoete Agnoetism agnoiology Agnoite agnomen agnomical agnominal agnomination agnosia agnosis agnostic agnostically agnosticism Agnostus agnosy Agnotozoic agnus ago agog agoge agogic agogics agoho agoing agomensin agomphiasis agomphious agomphosis agon agonal agone agoniada agoniadin agoniatite Agoniatites agonic agonied agonist Agonista agonistarch agonistic agonistically agonistics agonium agonize agonizedly agonizer agonizingly Agonostomus agonothete agonothetic agony agora agoranome agoraphobia agouara agouta agouti agpaite agpaitic Agra agraffee agrah agral agrammatical agrammatism Agrania agranulocyte agranulocytosis agranuloplastic Agrapha agraphia agraphic agrarian agrarianism agrarianize agrarianly Agrauleum agre agree agreeability agreeable agreeableness agreeably agreed agreeing agreeingly agreement agreer agregation agrege agrestal agrestial agrestian agrestic agria agricere agricole agricolist agricolite agricolous agricultor agricultural agriculturalist agriculturally agriculture agriculturer agriculturist Agrilus Agrimonia agrimony agrimotor agrin Agriochoeridae Agriochoerus agriological agriologist agriology Agrionia agrionid Agrionidae Agriotes Agriotypidae Agriotypus agrise agrito agroan agrobiologic agrobiological agrobiologically agrobiologist agrobiology agrogeological agrogeologically agrogeology agrologic agrological agrologically agrology agrom Agromyza agromyzid Agromyzidae agronome agronomial agronomic agronomical agronomics agronomist agronomy agroof agrope Agropyron Agrostemma agrosteral Agrostis agrostographer agrostographic agrostographical agrostography agrostologic agrostological agrostologist agrostology agrotechny Agrotis aground agrufe agruif agrypnia agrypnotic agsam agua aguacate Aguacateca aguavina Agudist ague aguelike agueproof agueweed aguey aguilarite aguilawood aguinaldo aguirage aguish aguishly aguishness agunah agush agust agy Agyieus agynarious agynary agynous agyrate agyria Ah ah aha ahaaina ahankara Ahantchuyuk ahartalav ahaunch ahead aheap ahem Ahepatokla Ahet ahey ahimsa ahind ahint Ahir ahluwalia ahmadi Ahmadiya Ahnfeltia aho Ahom ahong ahorse ahorseback Ahousaht ahoy Ahrendahronon Ahriman Ahrimanian ahsan Aht Ahtena ahu ahuatle ahuehuete ahull ahum ahungered ahungry ahunt ahura ahush ahwal ahypnia ai Aias Aiawong aichmophobia aid aidable aidance aidant aide Aidenn aider Aides aidful aidless aiel aigialosaur Aigialosauridae Aigialosaurus aiglet aigremore aigrette aiguille aiguillesque aiguillette aiguilletted aikinite ail ailantery ailanthic Ailanthus ailantine ailanto aile Aileen aileron ailette Ailie ailing aillt ailment ailsyte Ailuridae ailuro ailuroid Ailuroidea Ailuropoda Ailuropus Ailurus ailweed aim Aimak aimara Aimee aimer aimful aimfully aiming aimless aimlessly aimlessness Aimore aimworthiness ainaleh ainhum ainoi ainsell aint Ainu aion aionial air Aira airable airampo airan airbound airbrained airbrush aircraft aircraftman aircraftsman aircraftswoman aircraftwoman aircrew aircrewman airdock airdrome airdrop aire Airedale airedale airer airfield airfoil airframe airfreight airfreighter airgraphics airhead airiferous airified airily airiness airing airish airless airlift airlike airliner airmail airman airmanship airmark airmarker airmonger airohydrogen airometer airpark airphobia airplane airplanist airport airproof airscape airscrew airship airsick airsickness airstrip airt airtight airtightly airtightness airward airwards airway airwayman airwoman airworthiness airworthy airy aischrolatreia aiseweed aisle aisled aisleless aisling Aissaoua Aissor aisteoir Aistopoda Aistopodes ait aitch aitchbone aitchless aitchpiece aitesis aithochroi aition aitiotropic Aitkenite Aitutakian aiwan Aix aizle Aizoaceae aizoaceous Aizoon Ajaja ajaja ajangle ajar ajari Ajatasatru ajava ajhar ajivika ajog ajoint ajowan Ajuga ajutment ak Aka aka Akal akala Akali akalimba akamatsu Akamnik Akan Akanekunik Akania Akaniaceae akaroa akasa Akawai akazga akazgine akcheh ake akeake akebi Akebia akee akeki akeley akenobeite akepiro akerite akey Akha Akhissar Akhlame Akhmimic akhoond akhrot akhyana akia Akim akimbo akin akindle akinesia akinesic akinesis akinete akinetic Akiskemikinik Akiyenik Akka Akkad Akkadian Akkadist akmudar akmuddar aknee ako akoasm akoasma akoluthia akonge Akontae Akoulalion akov akpek Akra akra Akrabattine akroasis akrochordite akroterion Aktistetae Aktistete Aktivismus Aktivist aku akuammine akule akund Akwapim Al al ala Alabama Alabaman Alabamian alabamide alabamine alabandite alabarch alabaster alabastos alabastrian alabastrine alabastrites alabastron alabastrum alacha alack alackaday alacreatine alacreatinine alacrify alacritous alacrity Alactaga alada Aladdin Aladdinize Aladfar Aladinist alaihi alaite Alaki Alala alala alalite alalonga alalunga alalus Alamanni Alamannian Alamannic alameda alamo alamodality alamonti alamosite alamoth Alan alan aland Alangiaceae alangin alangine Alangium alani alanine alannah Alans alantic alantin alantol alantolactone alantolic alanyl alar Alarbus alares Alaria Alaric alarm alarmable alarmed alarmedly alarming alarmingly alarmism alarmist Alarodian alarum alary alas Alascan Alaska alaskaite Alaskan alaskite Alaster alastrim alate alated alatern alaternus alation Alauda Alaudidae alaudine Alaunian Alawi Alb alb alba albacore albahaca Albainn Alban alban Albanenses Albanensian Albania Albanian albanite Albany albarco albardine albarello albarium albaspidin albata Albatros albatross albe albedo albedograph albee albeit Alberene Albert Alberta albertin Albertina Albertine Albertinian Albertist albertite albertustaler albertype albescence albescent albespine albetad Albi Albian albicans albicant albication albiculi albification albificative albiflorous albify Albigenses Albigensian Albigensianism Albin albinal albiness albinic albinism albinistic albino albinoism albinotic albinuria Albion Albireo albite albitic albitite albitization albitophyre Albizzia albocarbon albocinereous Albococcus albocracy Alboin albolite albolith albopannin albopruinose alboranite Albrecht Albright albronze Albruna Albuca Albuginaceae albuginea albugineous albuginitis albugo album albumean albumen albumenization albumenize albumenizer albumimeter albumin albuminate albuminaturia albuminiferous albuminiform albuminimeter albuminimetry albuminiparous albuminization albuminize albuminocholia albuminofibrin albuminogenous albuminoid albuminoidal albuminolysis albuminometer albuminometry albuminone albuminorrhea albuminoscope albuminose albuminosis albuminous albuminousness albuminuria albuminuric albumoid albumoscope albumose albumosuria alburn alburnous alburnum albus albutannin Albyn Alca Alcaaba Alcae Alcaic alcaide alcalde alcaldeship alcaldia Alcaligenes alcalizate Alcalzar alcamine alcanna Alcantara Alcantarines alcarraza alcatras alcazar Alcedines Alcedinidae Alcedininae Alcedo alcelaphine Alcelaphus Alces alchemic alchemical alchemically Alchemilla alchemist alchemistic alchemistical alchemistry alchemize alchemy alchera alcheringa alchimy alchitran alchochoden Alchornea alchymy Alcibiadean Alcicornium Alcidae alcidine alcine Alcippe alclad alco alcoate alcogel alcogene alcohate alcohol alcoholate alcoholature alcoholdom alcoholemia alcoholic alcoholically alcoholicity alcoholimeter alcoholism alcoholist alcoholizable alcoholization alcoholize alcoholmeter alcoholmetric alcoholomania alcoholometer alcoholometric alcoholometrical alcoholometry alcoholophilia alcoholuria alcoholysis alcoholytic Alcor Alcoran Alcoranic Alcoranist alcornoco alcornoque alcosol Alcotate alcove alcovinometer Alcuinian alcyon Alcyonacea alcyonacean Alcyonaria alcyonarian Alcyone Alcyones Alcyoniaceae alcyonic alcyoniform Alcyonium alcyonoid aldamine aldane aldazin aldazine aldeament Aldebaran aldebaranium aldehol aldehydase aldehyde aldehydic aldehydine aldehydrol alder Alderamin alderman aldermanate aldermancy aldermaness aldermanic aldermanical aldermanity aldermanlike aldermanly aldermanry aldermanship aldern Alderney alderwoman Aldhafara Aldhafera aldim aldime aldimine Aldine aldine aldoheptose aldohexose aldoketene aldol aldolization aldolize aldononose aldopentose aldose aldoside aldoxime Aldrovanda Aldus ale Alea aleak aleatory alebench aleberry Alebion alec alecithal alecize Aleck aleconner alecost Alectoria alectoria Alectorides alectoridine alectorioid Alectoris alectoromachy alectoromancy Alectoromorphae alectoromorphous Alectoropodes alectoropodous Alectrion Alectrionidae alectryomachy alectryomancy Alectryon alecup alee alef alefnull aleft alefzero alegar alehoof alehouse alem alemana Alemanni Alemannian Alemannic Alemannish alembic alembicate alembroth Alemite alemite alemmal alemonger alen Alencon Aleochara aleph alephs alephzero alepidote alepole alepot Aleppine Aleppo alerce alerse alert alertly alertness alesan alestake aletap aletaster Alethea alethiology alethopteis alethopteroid alethoscope aletocyte Aletris alette aleukemic Aleurites aleuritic Aleurobius Aleurodes Aleurodidae aleuromancy aleurometer aleuronat aleurone aleuronic aleuroscope Aleut Aleutian Aleutic aleutite alevin alewife Alexander alexanders Alexandra Alexandreid Alexandrian Alexandrianism Alexandrina Alexandrine alexandrite Alexas Alexia alexia Alexian alexic alexin alexinic alexipharmacon alexipharmacum alexipharmic alexipharmical alexipyretic Alexis alexiteric alexiterical Alexius aleyard Aleyrodes aleyrodid Aleyrodidae Alf alf alfa alfaje alfalfa alfaqui alfaquin alfenide alfet alfilaria alfileria alfilerilla alfilerillo alfiona Alfirk alfonsin alfonso alforja Alfred Alfreda alfresco alfridaric alfridary Alfur Alfurese Alfuro alga algae algaecide algaeological algaeologist algaeology algaesthesia algaesthesis algal algalia Algaroth algarroba algarrobilla algarrobin Algarsife Algarsyf algate Algebar algebra algebraic algebraical algebraically algebraist algebraization algebraize Algedi algedo algedonic algedonics algefacient Algenib Algerian Algerine algerine Algernon algesia algesic algesis algesthesis algetic Algic algic algid algidity algidness Algieba algific algin alginate algine alginic alginuresis algiomuscular algist algivorous algocyan algodoncillo algodonite algoesthesiometer algogenic algoid Algol algolagnia algolagnic algolagnist algolagny algological algologist algology Algoman algometer algometric algometrical algometrically algometry Algomian Algomic Algonkian Algonquian Algonquin algophilia algophilist algophobia algor Algorab Algores algorism algorismic algorist algoristic algorithm algorithmic algosis algous algovite algraphic algraphy alguazil algum Algy Alhagi Alhambra Alhambraic Alhambresque Alhena alhenna alias Alibamu alibangbang alibi alibility alible Alicant Alice alichel Alichino Alicia Alick alicoche alictisal alicyclic Alida alidade Alids alien alienability alienable alienage alienate alienation alienator aliency alienee aliener alienicola alienigenate alienism alienist alienize alienor alienship aliethmoid aliethmoidal alif aliferous aliform aligerous alight align aligner alignment aligreek aliipoe alike alikeness alikewise Alikuluf Alikulufan alilonghi alima aliment alimental alimentally alimentariness alimentary alimentation alimentative alimentatively alimentativeness alimenter alimentic alimentive alimentiveness alimentotherapy alimentum alimonied alimony alin alinasal Aline alineation alintatao aliofar Alioth alipata aliped aliphatic alipterion aliptes aliptic aliquant aliquot aliseptal alish alisier Alisma Alismaceae alismaceous alismad alismal Alismales Alismataceae alismoid aliso Alison alison alisonite alisp alisphenoid alisphenoidal alist Alister alit alite alitrunk aliturgic aliturgical aliunde alive aliveness alivincular Alix aliyah alizarate alizari alizarin aljoba alk alkahest alkahestic alkahestica alkahestical Alkaid alkalamide alkalemia alkalescence alkalescency alkalescent alkali alkalic alkaliferous alkalifiable alkalify alkaligen alkaligenous alkalimeter alkalimetric alkalimetrical alkalimetrically alkalimetry alkaline alkalinity alkalinization alkalinize alkalinuria alkalizable alkalizate alkalization alkalize alkalizer alkaloid alkaloidal alkalometry alkalosis alkalous Alkalurops alkamin alkamine alkane alkanet Alkanna alkannin Alkaphrah alkapton alkaptonuria alkaptonuric alkargen alkarsin alkekengi alkene alkenna alkenyl alkermes Alkes alkide alkine alkool Alkoran Alkoranic alkoxide alkoxy alkoxyl alky alkyd alkyl alkylamine alkylate alkylation alkylene alkylic alkylidene alkylize alkylogen alkyloxy alkyne allabuta allactite allaeanthus allagite allagophyllous allagostemonous Allah allalinite Allamanda allamotti allan allanite allanitic allantiasis allantochorion allantoic allantoid allantoidal Allantoidea allantoidean allantoidian allantoin allantoinase allantoinuria allantois allantoxaidin allanturic Allasch allassotonic allative allatrate allay allayer allayment allbone Alle allecret allectory allegate allegation allegator allege allegeable allegedly allegement alleger Alleghenian Allegheny allegiance allegiancy allegiant allegoric allegorical allegorically allegoricalness allegorism allegorist allegorister allegoristic allegorization allegorize allegorizer allegory allegretto allegro allele allelic allelism allelocatalytic allelomorph allelomorphic allelomorphism allelotropic allelotropism allelotropy alleluia alleluiatic allemand allemande allemontite allenarly allene Allentiac Allentiacan aller allergen allergenic allergia allergic allergin allergist allergy allerion allesthesia alleviate alleviatingly alleviation alleviative alleviator alleviatory alley alleyed alleyite alleyway allgood Allhallow Allhallowtide allheal alliable alliably Alliaceae alliaceous alliance alliancer Alliaria allicampane allice allicholly alliciency allicient Allie allied Allies allies alligate alligator alligatored allineate allineation Allionia Allioniaceae allision alliteral alliterate alliteration alliterational alliterationist alliterative alliteratively alliterativeness alliterator Allium allivalite allmouth allness Allobroges allocable allocaffeine allocatable allocate allocatee allocation allocator allochetia allochetite allochezia allochiral allochirally allochiria allochlorophyll allochroic allochroite allochromatic allochroous allochthonous allocinnamic alloclase alloclasite allocochick allocrotonic allocryptic allocute allocution allocutive allocyanine allodelphite allodesmism alloeosis alloeostropha alloeotic alloerotic alloerotism allogamous allogamy allogene allogeneity allogeneous allogenic allogenically allograph alloiogenesis alloisomer alloisomeric alloisomerism allokinesis allokinetic allokurtic allomerism allomerous allometric allometry allomorph allomorphic allomorphism allomorphite allomucic allonomous allonym allonymous allopalladium allopath allopathetic allopathetically allopathic allopathically allopathist allopathy allopatric allopatrically allopatry allopelagic allophanamide allophanates allophane allophanic allophone allophyle allophylian allophylic Allophylus allophytoid alloplasm alloplasmatic alloplasmic alloplast alloplastic alloplasty alloploidy allopolyploid allopsychic alloquial alloquialism alloquy allorhythmia allorrhyhmia allorrhythmic allosaur Allosaurus allose allosematic allosome allosyndesis allosyndetic allot allotee allotelluric allotheism Allotheria allothigene allothigenetic allothigenetically allothigenic allothigenous allothimorph allothimorphic allothogenic allothogenous allotment allotriodontia Allotriognathi allotriomorphic allotriophagia allotriophagy allotriuria allotrope allotrophic allotropic allotropical allotropically allotropicity allotropism allotropize allotropous allotropy allotrylic allottable allottee allotter allotype allotypical allover allow allowable allowableness allowably allowance allowedly allower alloxan alloxanate alloxanic alloxantin alloxuraemia alloxuremia alloxuric alloxyproteic alloy alloyage allozooid allseed allspice allthing allthorn alltud allude allure allurement allurer alluring alluringly alluringness allusion allusive allusively allusiveness alluvia alluvial alluviate alluviation alluvion alluvious alluvium allwhere allwhither allwork Allworthy Ally ally allyl allylamine allylate allylation allylene allylic allylthiourea Alma alma Almach almaciga almacigo almadia almadie almagest almagra Almain Alman almanac almandine almandite alme almeidina almemar Almerian almeriite Almida almightily almightiness almighty almique Almira almirah almochoden Almohad Almohade Almohades almoign Almon almon almond almondy almoner almonership almonry Almoravid Almoravide Almoravides almost almous alms almsdeed almsfolk almsful almsgiver almsgiving almshouse almsman almswoman almucantar almuce almud almude almug Almuredin almuten aln alnage alnager alnagership Alnaschar Alnascharism alnein alnico Alnilam alniresinol Alnitak Alnitham alniviridol alnoite alnuin Alnus alo Aloadae Alocasia alochia alod alodial alodialism alodialist alodiality alodially alodian alodiary alodification alodium alody aloe aloed aloelike aloemodin aloeroot aloesol aloeswood aloetic aloetical aloewood aloft alogia Alogian alogical alogically alogism alogy aloid aloin Alois aloisiite aloma alomancy alone aloneness along alongshore alongshoreman alongside alongst Alonso Alonsoa Alonzo aloof aloofly aloofness aloose alop alopecia Alopecias alopecist alopecoid Alopecurus alopeke Alopias Alopiidae Alosa alose Alouatta alouatte aloud alow alowe Aloxite Aloysia Aloysius alp alpaca alpasotes Alpax alpeen Alpen alpenglow alpenhorn alpenstock alpenstocker alpestral alpestrian alpestrine alpha alphabet alphabetarian alphabetic alphabetical alphabetically alphabetics alphabetiform alphabetism alphabetist alphabetization alphabetize alphabetizer Alphard alphatoluic Alphean Alphecca alphenic Alpheratz alphitomancy alphitomorphous alphol Alphonist Alphonse Alphonsine Alphonsism Alphonso alphorn alphos alphosis alphyl Alpian Alpid alpieu alpigene Alpine alpine alpinely alpinery alpinesque Alpinia Alpiniaceae Alpinism Alpinist alpist Alpujarra alqueire alquier alquifou alraun alreadiness already alright alrighty alroot alruna Alsatia Alsatian alsbachite Alshain Alsinaceae alsinaceous Alsine also alsoon Alsophila Alstonia alstonidine alstonine alstonite Alstroemeria alsweill alt Altaian Altaic Altaid Altair altaite Altamira altar altarage altared altarist altarlet altarpiece altarwise altazimuth alter alterability alterable alterableness alterably alterant alterate alteration alterative altercate altercation altercative alteregoism alteregoistic alterer alterity altern alternacy alternance alternant Alternanthera Alternaria alternariose alternate alternately alternateness alternating alternatingly alternation alternationist alternative alternatively alternativeness alternativity alternator alterne alternifoliate alternipetalous alternipinnate alternisepalous alternize alterocentric Althaea althaein Althea althea althein altheine althionic altho althorn although Altica Alticamelus altigraph altilik altiloquence altiloquent altimeter altimetrical altimetrically altimetry altin altincar Altingiaceae altingiaceous altininck altiplano altiscope altisonant altisonous altissimo altitude altitudinal altitudinarian alto altogether altogetherness altometer altoun altrices altricial altropathy altrose altruism altruist altruistic altruistically altschin altun Aluco Aluconidae Aluconinae aludel Aludra alula alular alulet Alulim alum alumbloom Alumel alumic alumiferous alumina aluminaphone aluminate alumine aluminic aluminide aluminiferous aluminiform aluminish aluminite aluminium aluminize aluminoferric aluminographic aluminography aluminose aluminosilicate aluminosis aluminosity aluminothermic aluminothermics aluminothermy aluminotype aluminous aluminum aluminyl alumish alumite alumium alumna alumnae alumnal alumni alumniate Alumnol alumnus alumohydrocalcite alumroot Alundum aluniferous alunite alunogen alupag Alur alure alurgite alushtite aluta alutaceous Alvah Alvan alvar alvearium alveary alveloz alveola alveolar alveolariform alveolary alveolate alveolated alveolation alveole alveolectomy alveoli alveoliform alveolite Alveolites alveolitis alveoloclasia alveolocondylean alveolodental alveololabial alveololingual alveolonasal alveolosubnasal alveolotomy alveolus alveus alviducous Alvin Alvina alvine Alvissmal alvite alvus alway always aly Alya alycompaine alymphia alymphopotent alypin alysson Alyssum alytarch Alytes am ama amaas Amabel amability amacratic amacrinal amacrine amadavat amadelphous Amadi Amadis amadou Amaethon Amafingo amaga amah Amahuaca amain amaister amakebe Amakosa amala amalaita amalaka Amalfian Amalfitan amalgam amalgamable amalgamate amalgamation amalgamationist amalgamative amalgamatize amalgamator amalgamist amalgamization amalgamize Amalings Amalrician amaltas amamau Amampondo Amanda amandin Amandus amang amani amania Amanist Amanita amanitin amanitine Amanitopsis amanori amanous amantillo amanuenses amanuensis amapa Amapondo amar Amara Amarantaceae amarantaceous amaranth Amaranthaceae amaranthaceous amaranthine amaranthoid Amaranthus amarantite Amarantus amarelle amarevole amargoso amarillo amarin amarine amaritude amarity amaroid amaroidal amarthritis amaryllid Amaryllidaceae amaryllidaceous amaryllideous Amaryllis amasesis amass amassable amasser amassment Amasta amasthenic amastia amasty Amatembu amaterialistic amateur amateurish amateurishly amateurishness amateurism amateurship Amati amative amatively amativeness amatol amatorial amatorially amatorian amatorious amatory amatrice amatungula amaurosis amaurotic amaze amazed amazedly amazedness amazeful amazement amazia Amazilia amazing amazingly Amazon Amazona Amazonian Amazonism amazonite Amazulu amba ambage ambagiosity ambagious ambagiously ambagiousness ambagitory ambalam amban ambar ambaree ambarella ambary ambash ambassade Ambassadeur ambassador ambassadorial ambassadorially ambassadorship ambassadress ambassage ambassy ambatch ambatoarinite ambay ambeer amber amberfish ambergris amberiferous amberite amberoid amberous ambery ambicolorate ambicoloration ambidexter ambidexterity ambidextral ambidextrous ambidextrously ambidextrousness ambience ambiency ambiens ambient ambier ambigenous ambiguity ambiguous ambiguously ambiguousness ambilateral ambilateralaterally ambilaterality ambilevous ambilian ambilogy ambiopia ambiparous ambisinister ambisinistrous ambisporangiate ambisyllabic ambit ambital ambitendency ambition ambitionist ambitionless ambitionlessly ambitious ambitiously ambitiousness ambitty ambitus ambivalence ambivalency ambivalent ambivert amble ambler ambling amblingly amblotic amblyacousia amblyaphia Amblycephalidae Amblycephalus amblychromatic Amblydactyla amblygeusia amblygon amblygonal amblygonite amblyocarpous Amblyomma amblyope amblyopia amblyopic Amblyopsidae Amblyopsis amblyoscope amblypod Amblypoda amblypodous Amblyrhynchus amblystegite Amblystoma ambo amboceptoid amboceptor Ambocoelia Amboina Amboinese ambomalleal ambon ambonite Ambonnay ambos ambosexous ambosexual ambrain ambrein ambrette Ambrica ambrite ambroid ambrology Ambrose ambrose ambrosia ambrosiac Ambrosiaceae ambrosiaceous ambrosial ambrosially Ambrosian ambrosian ambrosiate ambrosin ambrosine Ambrosio ambrosterol ambrotype ambry ambsace ambulacral ambulacriform ambulacrum ambulance ambulancer ambulant ambulate ambulatio ambulation ambulative ambulator Ambulatoria ambulatorial ambulatorium ambulatory ambuling ambulomancy amburbial ambury ambuscade ambuscader ambush ambusher ambushment Ambystoma Ambystomidae amchoor ame amebiform ameed ameen Ameiuridae Ameiurus Ameiva Amelanchier amelcorn Amelia amelia amelification ameliorable ameliorableness ameliorant ameliorate amelioration ameliorativ ameliorative ameliorator amellus ameloblast ameloblastic amelu amelus Amen amen amenability amenable amenableness amenably amend amendable amendableness amendatory amende amender amendment amends amene amenia Amenism Amenite amenity amenorrhea amenorrheal amenorrheic amenorrhoea ament amentaceous amental amentia Amentiferae amentiferous amentiform amentulum amentum amerce amerceable amercement amercer amerciament America American Americana Americanese Americanism Americanist Americanistic Americanitis Americanization Americanize Americanizer Americanly Americanoid Americaward Americawards americium Americomania Americophobe Amerimnon Amerind Amerindian Amerindic amerism ameristic amesite Ametabola ametabole ametabolia ametabolian ametabolic ametabolism ametabolous ametaboly ametallous amethodical amethodically amethyst amethystine ametoecious ametria ametrometer ametrope ametropia ametropic ametrous Amex amgarn amhar amherstite amhran ami Amia amiability amiable amiableness amiably amianth amianthiform amianthine Amianthium amianthoid amianthoidal amianthus amic amicability amicable amicableness amicably amical amice amiced amicicide amicrobic amicron amicronucleate amid amidase amidate amidation amide amidic amidid amidide amidin amidine Amidism Amidist amido amidoacetal amidoacetic amidoacetophenone amidoaldehyde amidoazo amidoazobenzene amidoazobenzol amidocaffeine amidocapric amidofluorid amidofluoride amidogen amidoguaiacol amidohexose amidoketone amidol amidomyelin amidon amidophenol amidophosphoric amidoplast amidoplastid amidopyrine amidosuccinamic amidosulphonal amidothiazole amidoxime amidoxy amidoxyl amidrazone amidship amidships amidst amidstream amidulin Amiidae amil Amiles Amiloun amimia amimide amin aminate amination amine amini aminic aminity aminization aminize amino aminoacetal aminoacetanilide aminoacetic aminoacetone aminoacetophenetidine aminoacetophenone aminoacidemia aminoaciduria aminoanthraquinone aminoazobenzene aminobarbituric aminobenzaldehyde aminobenzamide aminobenzene aminobenzoic aminocaproic aminodiphenyl aminoethionic aminoformic aminogen aminoglutaric aminoguanidine aminoid aminoketone aminolipin aminolysis aminolytic aminomalonic aminomyelin aminophenol aminoplast aminoplastic aminopropionic aminopurine aminopyrine aminoquinoline aminosis aminosuccinamic aminosulphonic aminothiophen aminovaleric aminoxylol Aminta Amintor Amioidei amir Amiranha amiray amirship Amish Amishgo amiss amissibility amissible amissness Amita Amitabha amitosis amitotic amitotically amity amixia Amizilis amla amli amlikar amlong Amma amma amman Ammanite ammelide ammelin ammeline ammer ammeter Ammi Ammiaceae ammiaceous ammine amminochloride amminolysis amminolytic ammiolite ammo Ammobium ammochaeta ammochryse ammocoete ammocoetes ammocoetid Ammocoetidae ammocoetiform ammocoetoid Ammodytes Ammodytidae ammodytoid ammonal ammonate ammonation Ammonea ammonia ammoniacal ammoniacum ammoniate ammoniation ammonic ammonical ammoniemia ammonification ammonifier ammonify ammoniojarosite ammonion ammonionitrate Ammonite ammonite Ammonites Ammonitess ammonitic ammoniticone ammonitiferous Ammonitish ammonitoid Ammonitoidea ammonium ammoniuria ammonization ammono ammonobasic ammonocarbonic ammonocarbonous ammonoid Ammonoidea ammonoidean ammonolysis ammonolytic ammonolyze Ammophila ammophilous ammoresinol ammotherapy ammu ammunition amnemonic amnesia amnesic amnestic amnesty amniac amniatic amnic Amnigenia amnioallantoic amniochorial amnioclepsis amniomancy amnion Amnionata amnionate amnionic amniorrhea Amniota amniote amniotitis amniotome amober amobyr amoeba amoebae Amoebaea amoebaean amoebaeum amoebalike amoeban amoebian amoebiasis amoebic amoebicide amoebid Amoebida Amoebidae amoebiform Amoebobacter Amoebobacterieae amoebocyte Amoebogeniae amoeboid amoeboidism amoebous amoebula amok amoke amole amolilla amomal Amomales Amomis amomum among amongst amontillado amor amorado amoraic amoraim amoral amoralism amoralist amorality amoralize Amores amoret amoretto Amoreuxia amorism amorist amoristic Amorite Amoritic Amoritish amorosity amoroso amorous amorously amorousness Amorpha amorphia amorphic amorphinism amorphism Amorphophallus amorphophyte amorphotae amorphous amorphously amorphousness amorphus amorphy amort amortisseur amortizable amortization amortize amortizement Amorua Amos Amoskeag amotion amotus amount amour amourette amovability amovable amove Amoy Amoyan Amoyese ampalaya ampalea ampangabeite ampasimenite Ampelidaceae ampelidaceous Ampelidae ampelideous Ampelis ampelite ampelitic ampelographist ampelography ampelopsidin ampelopsin Ampelopsis Ampelosicyos ampelotherapy amper amperage ampere amperemeter Amperian amperometer ampersand ampery amphanthium ampheclexis ampherotokous ampherotoky amphetamine amphiarthrodial amphiarthrosis amphiaster amphibalus Amphibia amphibial amphibian amphibichnite amphibiety amphibiological amphibiology amphibion amphibiotic Amphibiotica amphibious amphibiously amphibiousness amphibium amphiblastic amphiblastula amphiblestritis Amphibola amphibole amphibolia amphibolic amphiboliferous amphiboline amphibolite amphibolitic amphibological amphibologically amphibologism amphibology amphibolous amphiboly amphibrach amphibrachic amphibryous Amphicarpa Amphicarpaea amphicarpic amphicarpium amphicarpogenous amphicarpous amphicentric amphichroic amphichrom amphichromatic amphichrome amphicoelian amphicoelous Amphicondyla amphicondylous amphicrania amphicreatinine amphicribral amphictyon amphictyonian amphictyonic amphictyony Amphicyon Amphicyonidae amphicyrtic amphicyrtous amphicytula amphid amphide amphidesmous amphidetic amphidiarthrosis amphidiploid amphidiploidy amphidisc Amphidiscophora amphidiscophoran amphierotic amphierotism Amphigaea amphigam Amphigamae amphigamous amphigastrium amphigastrula amphigean amphigen amphigene amphigenesis amphigenetic amphigenous amphigenously amphigonic amphigonium amphigonous amphigony amphigoric amphigory amphigouri amphikaryon amphilogism amphilogy amphimacer amphimictic amphimictical amphimictically amphimixis amphimorula Amphinesian Amphineura amphineurous amphinucleus Amphion Amphionic Amphioxi Amphioxidae Amphioxides Amphioxididae amphioxus amphipeptone amphiphloic amphiplatyan Amphipleura amphiploid amphiploidy amphipneust Amphipneusta amphipneustic Amphipnous amphipod Amphipoda amphipodal amphipodan amphipodiform amphipodous amphiprostylar amphiprostyle amphiprotic amphipyrenin Amphirhina amphirhinal amphirhine amphisarca amphisbaena amphisbaenian amphisbaenic Amphisbaenidae amphisbaenoid amphisbaenous amphiscians amphiscii Amphisile Amphisilidae amphispermous amphisporangiate amphispore Amphistoma amphistomatic amphistome amphistomoid amphistomous Amphistomum amphistylar amphistylic amphistyly amphitene amphitheater amphitheatered amphitheatral amphitheatric amphitheatrical amphitheatrically amphithecial amphithecium amphithect amphithyron amphitokal amphitokous amphitoky amphitriaene amphitrichous Amphitrite amphitropal amphitropous Amphitruo Amphitryon Amphiuma Amphiumidae amphivasal amphivorous Amphizoidae amphodarch amphodelite amphodiplopia amphogenous ampholyte amphopeptone amphophil amphophile amphophilic amphophilous amphora amphoral amphore amphorette amphoric amphoricity amphoriloquy amphorophony amphorous amphoteric Amphrysian ample amplectant ampleness amplexation amplexicaudate amplexicaul amplexicauline amplexifoliate amplexus ampliate ampliation ampliative amplicative amplidyne amplification amplificative amplificator amplificatory amplifier amplify amplitude amply ampollosity ampongue ampoule ampul ampulla ampullaceous ampullar Ampullaria Ampullariidae ampullary ampullate ampullated ampulliform ampullitis ampullula amputate amputation amputational amputative amputator amputee ampyx amra amreeta amrita Amritsar amsath amsel Amsonia Amsterdamer amt amtman Amuchco amuck Amueixa amuguis amula amulet amuletic amulla amunam amurca amurcosity amurcous Amurru amusable amuse amused amusedly amusee amusement amuser amusette Amusgo amusia amusing amusingly amusingness amusive amusively amusiveness amutter amuyon amuyong amuze amvis Amy amy Amyclaean Amyclas amyelencephalia amyelencephalic amyelencephalous amyelia amyelic amyelinic amyelonic amyelous amygdal amygdala Amygdalaceae amygdalaceous amygdalase amygdalate amygdalectomy amygdalic amygdaliferous amygdaliform amygdalin amygdaline amygdalinic amygdalitis amygdaloid amygdaloidal amygdalolith amygdaloncus amygdalopathy amygdalothripsis amygdalotome amygdalotomy Amygdalus amygdonitrile amygdophenin amygdule amyl amylaceous amylamine amylan amylase amylate amylemia amylene amylenol amylic amylidene amyliferous amylin amylo amylocellulose amyloclastic amylocoagulase amylodextrin amylodyspepsia amylogen amylogenesis amylogenic amylohydrolysis amylohydrolytic amyloid amyloidal amyloidosis amyloleucite amylolysis amylolytic amylom amylometer amylon amylopectin amylophagia amylophosphate amylophosphoric amyloplast amyloplastic amyloplastid amylopsin amylose amylosis amylosynthesis amylum amyluria Amynodon amynodont amyosthenia amyosthenic amyotaxia amyotonia amyotrophia amyotrophic amyotrophy amyous Amyraldism Amyraldist Amyridaceae amyrin Amyris amyrol amyroot Amytal amyxorrhea amyxorrhoea an Ana ana Anabaena Anabantidae Anabaptism Anabaptist Anabaptistic Anabaptistical Anabaptistically Anabaptistry anabaptize Anabas anabasine anabasis anabasse anabata anabathmos anabatic anaberoga anabibazon anabiosis anabiotic Anablepidae Anableps anabo anabohitsite anabolic anabolin anabolism anabolite anabolize anabong anabranch anabrosis anabrotic anacahuita anacahuite anacalypsis anacampsis anacamptic anacamptically anacamptics anacamptometer anacanth anacanthine Anacanthini anacanthous anacara anacard Anacardiaceae anacardiaceous anacardic Anacardium anacatadidymus anacatharsis anacathartic anacephalaeosis anacephalize Anaces Anacharis anachorism anachromasis anachronic anachronical anachronically anachronism anachronismatical anachronist anachronistic anachronistical anachronistically anachronize anachronous anachronously anachueta anacid anacidity anaclasis anaclastic anaclastics Anaclete anacleticum anaclinal anaclisis anaclitic anacoenosis anacoluthia anacoluthic anacoluthically anacoluthon anaconda Anacreon Anacreontic Anacreontically anacrisis Anacrogynae anacrogynae anacrogynous anacromyodian anacrotic anacrotism anacrusis anacrustic anacrustically anaculture anacusia anacusic anacusis Anacyclus anadem anadenia anadicrotic anadicrotism anadidymus anadiplosis anadipsia anadipsic anadrom anadromous Anadyomene anaematosis anaemia anaemic anaeretic anaerobation anaerobe anaerobia anaerobian anaerobic anaerobically anaerobies anaerobion anaerobiont anaerobiosis anaerobiotic anaerobiotically anaerobious anaerobism anaerobium anaerophyte anaeroplastic anaeroplasty anaesthesia anaesthesiant anaesthetically anaesthetizer anaetiological anagalactic Anagallis anagap anagenesis anagenetic anagep anagignoskomena anaglyph anaglyphic anaglyphical anaglyphics anaglyphoscope anaglyphy anaglyptic anaglyptical anaglyptics anaglyptograph anaglyptographic anaglyptography anaglypton anagnorisis anagnost anagoge anagogic anagogical anagogically anagogics anagogy anagram anagrammatic anagrammatical anagrammatically anagrammatism anagrammatist anagrammatize anagrams anagraph anagua anagyrin anagyrine Anagyris anahau Anahita Anaitis Anakes anakinesis anakinetic anakinetomer anakinetomeric anakoluthia anakrousis anaktoron anal analabos analav analcime analcimite analcite analcitite analecta analectic analects analemma analemmatic analepsis analepsy analeptic analeptical analgen analgesia analgesic Analgesidae analgesis analgesist analgetic analgia analgic analgize analkalinity anallagmatic anallantoic Anallantoidea anallantoidean anallergic anally analogic analogical analogically analogicalness analogion analogism analogist analogistic analogize analogon analogous analogously analogousness analogue analogy analphabet analphabete analphabetic analphabetical analphabetism analysability analysable analysand analysation analyse analyser analyses analysis analyst analytic analytical analytically analytics analyzability analyzable analyzation analyze analyzer Anam anam anama anamesite anametadromous Anamirta anamirtin Anamite anamite anammonid anammonide anamnesis anamnestic anamnestically Anamnia Anamniata Anamnionata anamnionic Anamniota anamniote anamniotic anamorphic anamorphism anamorphoscope anamorphose anamorphosis anamorphote anamorphous anan anana ananaplas ananaples ananas ananda anandrarious anandria anandrous ananepionic anangioid anangular Ananias Ananism Ananite anankastic Anansi Ananta anantherate anantherous ananthous ananym anapaest anapaestic anapaestical anapaestically anapaganize anapaite anapanapa anapeiratic anaphalantiasis Anaphalis anaphase Anaphe anaphia anaphora anaphoral anaphoria anaphoric anaphorical anaphrodisia anaphrodisiac anaphroditic anaphroditous anaphylactic anaphylactin anaphylactogen anaphylactogenic anaphylactoid anaphylatoxin anaphylaxis anaphyte anaplasia anaplasis anaplasm Anaplasma anaplasmosis anaplastic anaplasty anaplerosis anaplerotic anapnea anapneic anapnoeic anapnograph anapnoic anapnometer anapodeictic anapophysial anapophysis anapsid Anapsida anapsidan Anapterygota anapterygote anapterygotism anapterygotous Anaptomorphidae Anaptomorphus anaptotic anaptychus anaptyctic anaptyctical anaptyxis anaqua anarcestean Anarcestes anarch anarchal anarchial anarchic anarchical anarchically anarchism anarchist anarchistic anarchize anarchoindividualist anarchosocialist anarchosyndicalism anarchosyndicalist anarchy anarcotin anareta anaretic anaretical anargyros anarthria anarthric anarthropod Anarthropoda anarthropodous anarthrosis anarthrous anarthrously anarthrousness anartismos anarya Anaryan Anas Anasa anasarca anasarcous Anasazi anaschistic anaseismic Anasitch anaspadias anaspalin Anaspida Anaspidacea Anaspides anastalsis anastaltic Anastasia Anastasian anastasimon anastasimos anastasis Anastasius anastate anastatic Anastatica Anastatus anastigmat anastigmatic anastomose anastomosis anastomotic Anastomus anastrophe Anastrophia Anat anatase anatexis anathema anathematic anathematical anathematically anathematism anathematization anathematize anathematizer anatheme anathemize Anatherum Anatidae anatifa Anatifae anatifer anatiferous Anatinacea Anatinae anatine anatocism Anatolian Anatolic anatomic anatomical anatomically anatomicobiological anatomicochirurgical anatomicomedical anatomicopathologic anatomicopathological anatomicophysiologic anatomicophysiological anatomicosurgical anatomism anatomist anatomization anatomize anatomizer anatomopathologic anatomopathological anatomy anatopism anatox anatoxin anatreptic anatripsis anatripsology anatriptic anatron anatropal anatropia anatropous Anatum anaudia anaunter anaunters Anax Anaxagorean Anaxagorize anaxial Anaximandrian anaxon anaxone Anaxonia anay anazoturia anba anbury Ancerata ancestor ancestorial ancestorially ancestral ancestrally ancestress ancestrial ancestrian ancestry Ancha Anchat Anchietea anchietin anchietine anchieutectic anchimonomineral Anchisaurus Anchises Anchistea Anchistopoda anchithere anchitherioid anchor anchorable anchorage anchorate anchored anchorer anchoress anchoret anchoretic anchoretical anchoretish anchoretism anchorhold anchorite anchoritess anchoritic anchoritical anchoritish anchoritism anchorless anchorlike anchorwise anchovy Anchtherium Anchusa anchusin anchusine anchylose anchylosis ancience anciency ancient ancientism anciently ancientness ancientry ancienty ancile ancilla ancillary ancipital ancipitous Ancistrocladaceae ancistrocladaceous Ancistrocladus ancistroid ancon Ancona anconad anconagra anconal ancone anconeal anconeous anconeus anconitis anconoid ancony ancora ancoral Ancyloceras Ancylocladus Ancylodactyla ancylopod Ancylopoda Ancylostoma ancylostome ancylostomiasis Ancylostomum Ancylus Ancyrean Ancyrene and anda andabatarian Andalusian andalusite Andaman Andamanese andante andantino Andaqui Andaquian Andarko Andaste Ande Andean Andesic andesine andesinite andesite andesitic Andevo Andhra Andi Andian Andine Andira andirin andirine andiroba andiron Andoke andorite Andorobo Andorran andouillet andradite andranatomy andrarchy Andre Andreaea Andreaeaceae Andreaeales Andrena andrenid Andrenidae Andrew andrewsite Andria Andriana Andrias andric androcentric androcephalous androcephalum androclinium Androclus androconium androcracy androcratic androcyte androdioecious androdioecism androdynamous androecial androecium androgametangium androgametophore androgen androgenesis androgenetic androgenic androgenous androginous androgone androgonia androgonial androgonidium androgonium Andrographis andrographolide androgynal androgynary androgyne androgyneity androgynia androgynism androgynous androgynus androgyny android androidal androkinin androl androlepsia androlepsy Andromache andromania Andromaque Andromeda Andromede andromedotoxin andromonoecious andromonoecism andromorphous andron Andronicus andronitis andropetalar andropetalous androphagous androphobia androphonomania androphore androphorous androphorum androphyll Andropogon Androsace Androscoggin androseme androsin androsphinx androsporangium androspore androsterone androtauric androtomy Andy anear aneath anecdota anecdotage anecdotal anecdotalism anecdote anecdotic anecdotical anecdotically anecdotist anele anelectric anelectrode anelectrotonic anelectrotonus anelytrous anematosis Anemia anemia anemic anemobiagraph anemochord anemoclastic anemogram anemograph anemographic anemographically anemography anemological anemology anemometer anemometric anemometrical anemometrically anemometrograph anemometrographic anemometrographically anemometry anemonal anemone Anemonella anemonin anemonol anemony anemopathy anemophile anemophilous anemophily Anemopsis anemoscope anemosis anemotaxis anemotropic anemotropism anencephalia anencephalic anencephalotrophia anencephalous anencephalus anencephaly anend anenergia anenst anent anenterous anepia anepigraphic anepigraphous anepiploic anepithymia anerethisia aneretic anergia anergic anergy anerly aneroid aneroidograph anerotic anerythroplasia anerythroplastic anes anesis anesthesia anesthesiant anesthesimeter anesthesiologist anesthesiology anesthesis anesthetic anesthetically anesthetist anesthetization anesthetize anesthetizer anesthyl anethole Anethum anetiological aneuploid aneuploidy aneuria aneuric aneurilemmic aneurin aneurism aneurismally aneurysm aneurysmal aneurysmally aneurysmatic anew Anezeh anfractuose anfractuosity anfractuous anfractuousness anfracture Angami Angara angaralite angaria angary Angdistis angekok angel Angela angelate angeldom Angeleno angelet angeleyes angelfish angelhood angelic Angelica angelica Angelical angelical angelically angelicalness Angelican angelicic angelicize angelico angelin Angelina angeline angelique angelize angellike Angelo angelocracy angelographer angelolater angelolatry angelologic angelological angelology angelomachy Angelonia angelophany angelot angelship Angelus anger angerly Angerona Angeronalia Angers Angetenar Angevin angeyok angiasthenia angico Angie angiectasis angiectopia angiemphraxis angiitis angild angili angina anginal anginiform anginoid anginose anginous angioasthenia angioataxia angioblast angioblastic angiocarditis angiocarp angiocarpian angiocarpic angiocarpous angiocavernous angiocholecystitis angiocholitis angiochondroma angioclast angiocyst angiodermatitis angiodiascopy angioelephantiasis angiofibroma angiogenesis angiogenic angiogeny angioglioma angiograph angiography angiohyalinosis angiohydrotomy angiohypertonia angiohypotonia angioid angiokeratoma angiokinesis angiokinetic angioleucitis angiolipoma angiolith angiology angiolymphitis angiolymphoma angioma angiomalacia angiomatosis angiomatous angiomegaly angiometer angiomyocardiac angiomyoma angiomyosarcoma angioneoplasm angioneurosis angioneurotic angionoma angionosis angioparalysis angioparalytic angioparesis angiopathy angiophorous angioplany angioplasty angioplerosis angiopoietic angiopressure angiorrhagia angiorrhaphy angiorrhea angiorrhexis angiosarcoma angiosclerosis angiosclerotic angioscope angiosis angiospasm angiospastic angiosperm Angiospermae angiospermal angiospermatous angiospermic angiospermous angiosporous angiostegnosis angiostenosis angiosteosis angiostomize angiostomy angiostrophy angiosymphysis angiotasis angiotelectasia angiothlipsis angiotome angiotomy angiotonic angiotonin angiotribe angiotripsy angiotrophic Angka anglaise angle angleberry angled anglehook anglepod angler Angles anglesite anglesmith angletouch angletwitch anglewing anglewise angleworm Anglian Anglic Anglican Anglicanism Anglicanize Anglicanly Anglicanum Anglicism Anglicist Anglicization anglicization Anglicize anglicize Anglification Anglify anglimaniac angling Anglish Anglist Anglistics Anglogaea Anglogaean angloid Angloman Anglomane Anglomania Anglomaniac Anglophile Anglophobe Anglophobia Anglophobiac Anglophobic Anglophobist ango Angola angolar Angolese angor Angora angostura Angouleme Angoumian Angraecum angrily angriness angrite angry angst angster Angstrom angstrom anguid Anguidae anguiform Anguilla Anguillaria Anguillidae anguilliform anguilloid Anguillula Anguillulidae Anguimorpha anguine anguineal anguineous Anguinidae anguiped Anguis anguis anguish anguished anguishful anguishous anguishously angula angular angulare angularity angularization angularize angularly angularness angulate angulated angulately angulateness angulation angulatogibbous angulatosinuous anguliferous angulinerved Anguloa angulodentate angulometer angulosity angulosplenial angulous anguria Angus angusticlave angustifoliate angustifolious angustirostrate angustisellate angustiseptal angustiseptate angwantibo anhalamine anhaline anhalonine Anhalonium anhalouidine anhang Anhanga anharmonic anhedonia anhedral anhedron anhelation anhelous anhematosis anhemolytic anhidrosis anhidrotic anhima Anhimae Anhimidae anhinga anhistic anhistous anhungered anhungry anhydrate anhydration anhydremia anhydremic anhydric anhydride anhydridization anhydridize anhydrite anhydrization anhydrize anhydroglocose anhydromyelia anhydrous anhydroxime anhysteretic ani Aniba Anice aniconic aniconism anicular anicut anidian anidiomatic anidiomatical anidrosis Aniellidae aniente anigh anight anights anil anilao anilau anile anileness anilic anilid anilide anilidic anilidoxime aniline anilinism anilinophile anilinophilous anility anilla anilopyrin anilopyrine anima animability animable animableness animadversion animadversional animadversive animadversiveness animadvert animadverter animal animalcula animalculae animalcular animalcule animalculine animalculism animalculist animalculous animalculum animalhood Animalia animalian animalic animalier animalish animalism animalist animalistic animality Animalivora animalivore animalivorous animalization animalize animally animastic animastical animate animated animatedly animately animateness animater animating animatingly animation animatism animatistic animative animatograph animator anime animi Animikean animikite animism animist animistic animize animosity animotheism animous animus anion anionic aniridia anis anisal anisalcohol anisaldehyde anisaldoxime anisamide anisandrous anisanilide anisate anischuria anise aniseed aniseikonia aniseikonic aniselike aniseroot anisette anisic anisidin anisidine anisil anisilic anisobranchiate anisocarpic anisocarpous anisocercal anisochromatic anisochromia anisocoria anisocotyledonous anisocotyly anisocratic anisocycle anisocytosis anisodactyl Anisodactyla Anisodactyli anisodactylic anisodactylous anisodont anisogamete anisogamous anisogamy anisogenous anisogeny anisognathism anisognathous anisogynous anisoin anisole anisoleucocytosis Anisomeles anisomelia anisomelus anisomeric anisomerous anisometric anisometrope anisometropia anisometropic anisomyarian Anisomyodi anisomyodian anisomyodous anisopetalous anisophyllous anisophylly anisopia anisopleural anisopleurous anisopod Anisopoda anisopodal anisopodous anisopogonous Anisoptera anisopterous anisosepalous anisospore anisostaminous anisostemonous anisosthenic anisostichous Anisostichus anisostomous anisotonic anisotropal anisotrope anisotropic anisotropical anisotropically anisotropism anisotropous anisotropy anisoyl anisum anisuria anisyl anisylidene Anita anither anitrogenous anjan Anjou ankaramite ankaratrite ankee anker ankerite ankh ankle anklebone anklejack anklet anklong Ankoli Ankou ankus ankusha ankylenteron ankyloblepharon ankylocheilia ankylodactylia ankylodontia ankyloglossia ankylomele ankylomerism ankylophobia ankylopodia ankylopoietic ankyloproctia ankylorrhinia Ankylosaurus ankylose ankylosis ankylostoma ankylotia ankylotic ankylotome ankylotomy ankylurethria ankyroid anlace anlaut Ann ann Anna anna Annabel annabergite annal annale annaline annalism annalist annalistic annalize annals Annam Annamese Annamite Annamitic Annapurna annat annates annatto anneal annealer annectent annection annelid Annelida annelidan Annelides annelidian annelidous annelism Annellata anneloid annerodite Anneslia annet Annette annex annexa annexable annexal annexation annexational annexationist annexer annexion annexionist annexitis annexive annexment annexure annidalin Annie Anniellidae annihilability annihilable annihilate annihilation annihilationism annihilationist annihilative annihilator annihilatory Annist annite anniversarily anniversariness anniversary anniverse annodated Annona annona Annonaceae annonaceous annotate annotater annotation annotative annotator annotatory annotine annotinous announce announceable announcement announcer annoy annoyance annoyancer annoyer annoyful annoying annoyingly annoyingness annoyment annual annualist annualize annually annuary annueler annuent annuitant annuity annul annular Annularia annularity annularly annulary Annulata annulate annulated annulation annulet annulettee annulism annullable annullate annullation annuller annulment annuloid Annuloida Annulosa annulosan annulose annulus annunciable annunciate annunciation annunciative annunciator annunciatory anoa Anobiidae anocarpous anociassociation anococcygeal anodal anode anodendron anodic anodically anodize Anodon Anodonta anodontia anodos anodyne anodynia anodynic anodynous anoegenetic anoesia anoesis anoestrous anoestrum anoestrus anoetic anogenic anogenital Anogra anoil anoine anoint anointer anointment anole anoli anolian Anolis Anolympiad anolyte Anomala anomaliflorous anomaliped anomalism anomalist anomalistic anomalistical anomalistically anomalocephalus anomaloflorous Anomalogonatae anomalogonatous Anomalon anomalonomy Anomalopteryx anomaloscope anomalotrophy anomalous anomalously anomalousness anomalure Anomaluridae Anomalurus anomaly Anomatheca Anomia Anomiacea Anomiidae anomite anomocarpous anomodont Anomodontia Anomoean Anomoeanism anomophyllous anomorhomboid anomorhomboidal anomphalous Anomura anomural anomuran anomurous anomy anon anonang anoncillo anonol anonychia anonym anonyma anonymity anonymous anonymously anonymousness anonymuncule anoopsia anoperineal anophele Anopheles Anophelinae anopheline anophoria anophthalmia anophthalmos Anophthalmus anophyte anopia anopisthographic Anopla Anoplanthus anoplocephalic anoplonemertean Anoplonemertini anoplothere Anoplotheriidae anoplotherioid Anoplotherium anoplotheroid Anoplura anopluriform anopsia anopubic anorak anorchia anorchism anorchous anorchus anorectal anorectic anorectous anorexia anorexy anorgana anorganic anorganism anorganology anormal anormality anorogenic anorth anorthic anorthite anorthitic anorthitite anorthoclase anorthographic anorthographical anorthographically anorthography anorthophyre anorthopia anorthoscope anorthose anorthosite anoscope anoscopy Anosia anosmatic anosmia anosmic anosphrasia anosphresia anospinal anostosis Anostraca anoterite another anotherkins anotia anotropia anotta anotto anotus anounou Anous anovesical anoxemia anoxemic anoxia anoxic anoxidative anoxybiosis anoxybiotic anoxyscope ansa ansar ansarian Ansarie ansate ansation Anseis Ansel Anselm Anselmian Anser anserated Anseres Anseriformes Anserinae anserine anserous anspessade ansu ansulate answer answerability answerable answerableness answerably answerer answeringly answerless answerlessly ant Anta anta antacid antacrid antadiform Antaean Antaeus antagonism antagonist antagonistic antagonistical antagonistically antagonization antagonize antagonizer antagony Antaimerina Antaios Antaiva antal antalgesic antalgol antalkali antalkaline antambulacral antanacathartic antanaclasis Antanandro antanemic antapex antaphrodisiac antaphroditic antapocha antapodosis antapology antapoplectic Antar Antara antarchism antarchist antarchistic antarchistical antarchy Antarctalia Antarctalian antarctic Antarctica antarctica antarctical antarctically Antarctogaea Antarctogaean Antares antarthritic antasphyctic antasthenic antasthmatic antatrophic antdom ante anteact anteal anteambulate anteambulation anteater antebaptismal antebath antebrachial antebrachium antebridal antecabinet antecaecal antecardium antecavern antecedaneous antecedaneously antecede antecedence antecedency antecedent antecedental antecedently antecessor antechamber antechapel Antechinomys antechoir antechurch anteclassical antecloset antecolic antecommunion anteconsonantal antecornu antecourt antecoxal antecubital antecurvature antedate antedawn antediluvial antediluvially antediluvian Antedon antedonin antedorsal antefebrile antefix antefixal anteflected anteflexed anteflexion antefurca antefurcal antefuture antegarden antegrade antehall antehistoric antehuman antehypophysis anteinitial antejentacular antejudiciary antejuramentum antelabium antelegal antelocation antelope antelopian antelucan antelude anteluminary antemarginal antemarital antemedial antemeridian antemetallic antemetic antemillennial antemingent antemortal antemundane antemural antenarial antenatal antenatalitial antenati antenave antenna antennae antennal Antennaria antennariid Antennariidae Antennarius antennary Antennata antennate antenniferous antenniform antennula antennular antennulary antennule antenodal antenoon Antenor antenumber anteoccupation anteocular anteopercle anteoperculum anteorbital antepagmenta antepagments antepalatal antepaschal antepast antepatriarchal antepectoral antepectus antependium antepenult antepenultima antepenultimate antephialtic antepileptic antepirrhema anteporch anteportico anteposition anteposthumous anteprandial antepredicament antepredicamental antepreterit antepretonic anteprohibition anteprostate anteprostatic antepyretic antequalm antereformation antereformational anteresurrection anterethic anterevolutional anterevolutionary anteriad anterior anteriority anteriorly anteriorness anteroclusion anterodorsal anteroexternal anterofixation anteroflexion anterofrontal anterograde anteroinferior anterointerior anterointernal anterolateral anterolaterally anteromedial anteromedian anteroom anteroparietal anteroposterior anteroposteriorly anteropygal anterospinal anterosuperior anteroventral anteroventrally antes antescript antesignanus antespring antestature antesternal antesternum antesunrise antesuperior antetemple antetype Anteva antevenient anteversion antevert antevocalic antewar anthecological anthecologist anthecology Antheia anthela anthelion anthelmintic anthem anthema anthemene anthemia Anthemideae anthemion Anthemis anthemwise anthemy anther Antheraea antheral Anthericum antherid antheridial antheridiophore antheridium antheriferous antheriform antherless antherogenous antheroid antherozoid antherozoidal antherozooid antherozooidal anthesis Anthesteria Anthesteriac anthesterin Anthesterion anthesterol antheximeter Anthicidae Anthidium anthill Anthinae anthine anthobiology anthocarp anthocarpous anthocephalous Anthoceros Anthocerotaceae Anthocerotales anthocerote anthochlor anthochlorine anthoclinium anthocyan anthocyanidin anthocyanin anthodium anthoecological anthoecologist anthoecology anthogenesis anthogenetic anthogenous anthography anthoid anthokyan antholite anthological anthologically anthologion anthologist anthologize anthology antholysis Antholyza anthomania anthomaniac Anthomedusae anthomedusan Anthomyia anthomyiid Anthomyiidae Anthonin Anthonomus Anthony anthood anthophagous Anthophila anthophile anthophilian anthophilous anthophobia Anthophora anthophore Anthophoridae anthophorous anthophyllite anthophyllitic Anthophyta anthophyte anthorine anthosiderite Anthospermum anthotaxis anthotaxy anthotropic anthotropism anthoxanthin Anthoxanthum Anthozoa anthozoan anthozoic anthozooid anthozoon anthracemia anthracene anthraceniferous anthrachrysone anthracia anthracic anthraciferous anthracin anthracite anthracitic anthracitiferous anthracitious anthracitism anthracitization anthracnose anthracnosis anthracocide anthracoid anthracolithic anthracomancy Anthracomarti anthracomartian Anthracomartus anthracometer anthracometric anthraconecrosis anthraconite Anthracosaurus anthracosis anthracothere Anthracotheriidae Anthracotherium anthracotic anthracyl anthradiol anthradiquinone anthraflavic anthragallol anthrahydroquinone anthramine anthranil anthranilate anthranilic anthranol anthranone anthranoyl anthranyl anthraphenone anthrapurpurin anthrapyridine anthraquinol anthraquinone anthraquinonyl anthrarufin anthratetrol anthrathiophene anthratriol anthrax anthraxolite anthraxylon Anthrenus anthribid Anthribidae Anthriscus anthrohopobiological anthroic anthrol anthrone anthropic anthropical Anthropidae anthropobiologist anthropobiology anthropocentric anthropocentrism anthropoclimatologist anthropoclimatology anthropocosmic anthropodeoxycholic Anthropodus anthropogenesis anthropogenetic anthropogenic anthropogenist anthropogenous anthropogeny anthropogeographer anthropogeographical anthropogeography anthropoglot anthropogony anthropography anthropoid anthropoidal Anthropoidea anthropoidean anthropolater anthropolatric anthropolatry anthropolite anthropolithic anthropolitic anthropological anthropologically anthropologist anthropology anthropomancy anthropomantic anthropomantist anthropometer anthropometric anthropometrical anthropometrically anthropometrist anthropometry anthropomorph Anthropomorpha anthropomorphic anthropomorphical anthropomorphically Anthropomorphidae anthropomorphism anthropomorphist anthropomorphite anthropomorphitic anthropomorphitical anthropomorphitism anthropomorphization anthropomorphize anthropomorphological anthropomorphologically anthropomorphology anthropomorphosis anthropomorphotheist anthropomorphous anthropomorphously anthroponomical anthroponomics anthroponomist anthroponomy anthropopathia anthropopathic anthropopathically anthropopathism anthropopathite anthropopathy anthropophagi anthropophagic anthropophagical anthropophaginian anthropophagism anthropophagist anthropophagistic anthropophagite anthropophagize anthropophagous anthropophagously anthropophagy anthropophilous anthropophobia anthropophuism anthropophuistic anthropophysiography anthropophysite Anthropopithecus anthropopsychic anthropopsychism Anthropos anthroposcopy anthroposociologist anthroposociology anthroposomatology anthroposophical anthroposophist anthroposophy anthropoteleoclogy anthropoteleological anthropotheism anthropotomical anthropotomist anthropotomy anthropotoxin Anthropozoic anthropurgic anthroropolith anthroxan anthroxanic anthryl anthrylene Anthurium Anthus Anthyllis anthypophora anthypophoretic Anti anti antiabolitionist antiabrasion antiabrin antiabsolutist antiacid antiadiaphorist antiaditis antiadministration antiae antiaesthetic antiager antiagglutinating antiagglutinin antiaggression antiaggressionist antiaggressive antiaircraft antialbumid antialbumin antialbumose antialcoholic antialcoholism antialcoholist antialdoxime antialexin antialien antiamboceptor antiamusement antiamylase antianaphylactogen antianaphylaxis antianarchic antianarchist antiangular antiannexation antiannexationist antianopheline antianthrax antianthropocentric antianthropomorphism antiantibody antiantidote antiantienzyme antiantitoxin antiaphrodisiac antiaphthic antiapoplectic antiapostle antiaquatic antiar Antiarcha Antiarchi antiarin Antiaris antiaristocrat antiarthritic antiascetic antiasthmatic antiastronomical antiatheism antiatheist antiatonement antiattrition antiautolysin antibacchic antibacchius antibacterial antibacteriolytic antiballooner antibalm antibank antibasilican antibenzaldoxime antiberiberin antibibliolatry antibigotry antibilious antibiont antibiosis antibiotic antibishop antiblastic antiblennorrhagic antiblock antiblue antibody antiboxing antibreakage antibridal antibromic antibubonic Antiburgher antic anticachectic antical anticalcimine anticalculous anticalligraphic anticancer anticapital anticapitalism anticapitalist anticardiac anticardium anticarious anticarnivorous anticaste anticatalase anticatalyst anticatalytic anticatalyzer anticatarrhal anticathexis anticathode anticaustic anticensorship anticentralization anticephalalgic anticeremonial anticeremonialism anticeremonialist anticheater antichlor antichlorine antichloristic antichlorotic anticholagogue anticholinergic antichoromanic antichorus antichresis antichretic antichrist antichristian antichristianity antichristianly antichrome antichronical antichronically antichthon antichurch antichurchian antichymosin anticipant anticipatable anticipate anticipation anticipative anticipatively anticipator anticipatorily anticipatory anticivic anticivism anticize anticker anticlactic anticlassical anticlassicist Anticlea anticlergy anticlerical anticlericalism anticlimactic anticlimax anticlinal anticline anticlinorium anticlockwise anticlogging anticly anticnemion anticness anticoagulant anticoagulating anticoagulative anticoagulin anticogitative anticolic anticombination anticomet anticomment anticommercial anticommunist anticomplement anticomplementary anticomplex anticonceptionist anticonductor anticonfederationist anticonformist anticonscience anticonscription anticonscriptive anticonstitutional anticonstitutionalist anticonstitutionally anticontagion anticontagionist anticontagious anticonventional anticonventionalism anticonvulsive anticor anticorn anticorrosion anticorrosive anticorset anticosine anticosmetic anticouncil anticourt anticourtier anticous anticovenanter anticovenanting anticreation anticreative anticreator anticreep anticreeper anticreeping anticrepuscular anticrepuscule anticrisis anticritic anticritique anticrochet anticrotalic anticryptic anticum anticyclic anticyclone anticyclonic anticyclonically anticynic anticytolysin anticytotoxin antidactyl antidancing antidecalogue antideflation antidemocrat antidemocratic antidemocratical antidemoniac antidetonant antidetonating antidiabetic antidiastase Antidicomarian Antidicomarianite antidictionary antidiffuser antidinic antidiphtheria antidiphtheric antidiphtherin antidiphtheritic antidisciplinarian antidivine antidivorce antidogmatic antidomestic antidominican Antidorcas antidoron antidotal antidotally antidotary antidote antidotical antidotically antidotism antidraft antidrag antidromal antidromic antidromically antidromous antidromy antidrug antiduke antidumping antidynamic antidynastic antidyscratic antidysenteric antidysuric antiecclesiastic antiecclesiastical antiedemic antieducation antieducational antiegotism antiejaculation antiemetic antiemperor antiempirical antiendotoxin antiendowment antienergistic antienthusiastic antienzyme antienzymic antiepicenter antiepileptic antiepiscopal antiepiscopist antiepithelial antierosion antierysipelas Antietam antiethnic antieugenic antievangelical antievolution antievolutionist antiexpansionist antiexporting antiextreme antieyestrain antiface antifaction antifame antifanatic antifat antifatigue antifebrile antifederal antifederalism antifederalist antifelon antifelony antifeminism antifeminist antiferment antifermentative antifertilizer antifeudal antifeudalism antifibrinolysin antifibrinolysis antifideism antifire antiflash antiflattering antiflatulent antiflux antifoam antifoaming antifogmatic antiforeign antiforeignism antiformin antifouler antifouling antifowl antifreeze antifreezing antifriction antifrictional antifrost antifundamentalist antifungin antigalactagogue antigalactic antigambling antiganting antigen antigenic antigenicity antighostism antigigmanic antiglare antiglyoxalase antigod Antigone antigonococcic Antigonon antigonorrheic Antigonus antigorite antigovernment antigraft antigrammatical antigraph antigravitate antigravitational antigropelos antigrowth Antiguan antiguggler antigyrous antihalation antiharmonist antihectic antihelix antihelminthic antihemagglutinin antihemisphere antihemoglobin antihemolysin antihemolytic antihemorrhagic antihemorrheidal antihero antiheroic antiheroism antiheterolysin antihidrotic antihierarchical antihierarchist antihistamine antihistaminic antiholiday antihormone antihuff antihum antihuman antihumbuggist antihunting antihydrophobic antihydropic antihydropin antihygienic antihylist antihypnotic antihypochondriac antihypophora antihysteric Antikamnia antikathode antikenotoxin antiketogen antiketogenesis antiketogenic antikinase antiking antiknock antilabor antilaborist antilacrosse antilacrosser antilactase antilapsarian antileague antilegalist antilegomena antilemic antilens antilepsis antileptic antilethargic antileveling Antilia antiliberal antilibration antilift antilipase antilipoid antiliquor antilithic antiliturgical antiliturgist Antillean antilobium Antilocapra Antilocapridae Antilochus antiloemic antilogarithm antilogic antilogical antilogism antilogous antilogy antiloimic Antilope Antilopinae antilottery antiluetin antilynching antilysin antilysis antilyssic antilytic antimacassar antimachine antimachinery antimagistratical antimalaria antimalarial antimallein antimaniac antimaniacal Antimarian antimark antimartyr antimask antimasker Antimason Antimasonic Antimasonry antimasque antimasquer antimasquerade antimaterialist antimaterialistic antimatrimonial antimatrimonialist antimedical antimedieval antimelancholic antimellin antimeningococcic antimension antimensium antimephitic antimere antimerger antimeric Antimerina antimerism antimeristem antimetabole antimetathesis antimetathetic antimeter antimethod antimetrical antimetropia antimetropic antimiasmatic antimicrobic antimilitarism antimilitarist antimilitary antiministerial antiministerialist antiminsion antimiscegenation antimission antimissionary antimissioner antimixing antimnemonic antimodel antimodern antimonarchial antimonarchic antimonarchical antimonarchically antimonarchicalness antimonarchist antimonate antimonial antimoniate antimoniated antimonic antimonid antimonide antimoniferous antimonious antimonite antimonium antimoniuret antimoniureted antimoniuretted antimonopolist antimonopoly antimonsoon antimony antimonyl antimoral antimoralism antimoralist antimosquito antimusical antimycotic antimythic antimythical antinarcotic antinarrative antinational antinationalist antinationalistic antinatural antinegro antinegroism antineologian antinephritic antinepotic antineuralgic antineuritic antineurotoxin antineutral antinial antinicotine antinion antinode antinoise antinome antinomian antinomianism antinomic antinomical antinomist antinomy antinormal antinosarian Antinous Antiochene Antiochian Antiochianism antiodont antiodontalgic Antiope antiopelmous antiophthalmic antiopium antiopiumist antiopiumite antioptimist antioptionist antiorgastic antiorthodox antioxidant antioxidase antioxidizer antioxidizing antioxygen antioxygenation antioxygenator antioxygenic antipacifist antipapacy antipapal antipapalist antipapism antipapist antipapistical antiparabema antiparagraphe antiparagraphic antiparallel antiparallelogram antiparalytic antiparalytical antiparasitic antiparastatitis antiparliament antiparliamental antiparliamentarist antiparliamentary antipart Antipasch Antipascha antipass antipastic Antipatharia antipatharian antipathetic antipathetical antipathetically antipatheticalness antipathic Antipathida antipathist antipathize antipathogen antipathy antipatriarch antipatriarchal antipatriot antipatriotic antipatriotism antipedal Antipedobaptism Antipedobaptist antipeduncular antipellagric antipepsin antipeptone antiperiodic antiperistalsis antiperistaltic antiperistasis antiperistatic antiperistatical antiperistatically antipersonnel antiperthite antipestilential antipetalous antipewism antiphagocytic antipharisaic antipharmic antiphase antiphilosophic antiphilosophical antiphlogistian antiphlogistic antiphon antiphonal antiphonally antiphonary antiphoner antiphonetic antiphonic antiphonical antiphonically antiphonon antiphony antiphrasis antiphrastic antiphrastical antiphrastically antiphthisic antiphthisical antiphylloxeric antiphysic antiphysical antiphysician antiplague antiplanet antiplastic antiplatelet antipleion antiplenist antiplethoric antipleuritic antiplurality antipneumococcic antipodagric antipodagron antipodal antipode antipodean antipodes antipodic antipodism antipodist antipoetic antipoints antipolar antipole antipolemist antipolitical antipollution antipolo antipolygamy antipolyneuritic antipool antipooling antipope antipopery antipopular antipopulationist antiportable antiposition antipoverty antipragmatic antipragmatist antiprecipitin antipredeterminant antiprelate antiprelatic antiprelatist antipreparedness antiprestidigitation antipriest antipriestcraft antiprime antiprimer antipriming antiprinciple antiprism antiproductionist antiprofiteering antiprohibition antiprohibitionist antiprojectivity antiprophet antiprostate antiprostatic antiprotease antiproteolysis antiprotozoal antiprudential antipruritic antipsalmist antipsoric antiptosis antipudic antipuritan antiputrefaction antiputrefactive antiputrescent antiputrid antipyic antipyonin antipyresis antipyretic Antipyrine antipyrotic antipyryl antiqua antiquarian antiquarianism antiquarianize antiquarianly antiquarism antiquartan antiquary antiquate antiquated antiquatedness antiquation antique antiquely antiqueness antiquer antiquing antiquist antiquitarian antiquity antirabic antirabies antiracemate antiracer antirachitic antirachitically antiracing antiradiating antiradiation antiradical antirailwayist antirational antirationalism antirationalist antirationalistic antirattler antireactive antirealism antirealistic antirebating antirecruiting antired antireducer antireform antireformer antireforming antireformist antireligion antireligious antiremonstrant antirennet antirennin antirent antirenter antirentism antirepublican antireservationist antirestoration antireticular antirevisionist antirevolutionary antirevolutionist antirheumatic antiricin antirickets antiritual antiritualistic antirobin antiromance antiromantic antiromanticism antiroyal antiroyalist Antirrhinum antirumor antirun antirust antisacerdotal antisacerdotalist antisaloon antisalooner antisavage antiscabious antiscale antischolastic antischool antiscians antiscientific antiscion antiscolic antiscorbutic antiscorbutical antiscrofulous antiseismic antiselene antisensitizer antisensuous antisensuousness antisepalous antisepsin antisepsis antiseptic antiseptical antiseptically antisepticism antisepticist antisepticize antiseption antiseptize antiserum antishipping Antisi antisialagogue antisialic antisiccative antisideric antisilverite antisimoniacal antisine antisiphon antisiphonal antiskeptical antiskid antiskidding antislavery antislaveryism antislickens antislip antismoking antisnapper antisocial antisocialist antisocialistic antisocialistically antisociality antisolar antisophist antisoporific antispace antispadix antispasis antispasmodic antispast antispastic antispectroscopic antispermotoxin antispiritual antispirochetic antisplasher antisplenetic antisplitting antispreader antispreading antisquama antisquatting antistadholder antistadholderian antistalling antistaphylococcic antistate antistatism antistatist antisteapsin antisterility antistes antistimulant antistock antistreptococcal antistreptococcic antistreptococcin antistreptococcus antistrike antistrophal antistrophe antistrophic antistrophically antistrophize antistrophon antistrumatic antistrumous antisubmarine antisubstance antisudoral antisudorific antisuffrage antisuffragist antisun antisupernaturalism antisupernaturalist antisurplician antisymmetrical antisyndicalism antisyndicalist antisynod antisyphilitic antitabetic antitabloid antitangent antitank antitarnish antitartaric antitax antiteetotalism antitegula antitemperance antitetanic antitetanolysin antithalian antitheft antitheism antitheist antitheistic antitheistical antitheistically antithenar antitheologian antitheological antithermic antithermin antitheses antithesis antithesism antithesize antithet antithetic antithetical antithetically antithetics antithrombic antithrombin antitintinnabularian antitobacco antitobacconal antitobacconist antitonic antitorpedo antitoxic antitoxin antitrade antitrades antitraditional antitragal antitragic antitragicus antitragus antitrismus antitrochanter antitropal antitrope antitropic antitropical antitropous antitropy antitrust antitrypsin antitryptic antituberculin antituberculosis antituberculotic antituberculous antiturnpikeism antitwilight antitypal antitype antityphoid antitypic antitypical antitypically antitypy antityrosinase antiunion antiunionist antiuratic antiurease antiusurious antiutilitarian antivaccination antivaccinationist antivaccinator antivaccinist antivariolous antivenefic antivenereal antivenin antivenom antivenomous antivermicular antivibrating antivibrator antivibratory antivice antiviral antivirus antivitalist antivitalistic antivitamin antivivisection antivivisectionist antivolition antiwar antiwarlike antiwaste antiwedge antiweed antiwit antixerophthalmic antizealot antizymic antizymotic antler antlered antlerite antlerless antlia antliate Antlid antling antluetic antodontalgic antoeci antoecian antoecians Antoinette Anton Antonia Antonina antoninianus Antonio antonomasia antonomastic antonomastical antonomastically antonomasy antonym antonymous antonymy antorbital antproof antra antral antralgia antre antrectomy antrin antritis antrocele antronasal antrophore antrophose antrorse antrorsely antroscope antroscopy Antrostomus antrotome antrotomy antrotympanic antrotympanitis antrum antrustion antrustionship antship Antu antu Antum Antwerp antwise anubing Anubis anucleate anukabiet Anukit anuloma Anura anuran anuresis anuretic anuria anuric anurous anury anus anusim anusvara anutraminosa anvasser anvil anvilsmith anxietude anxiety anxious anxiously anxiousness any anybody Anychia anyhow anyone anyplace Anystidae anything anythingarian anythingarianism anyway anyways anywhen anywhere anywhereness anywheres anywhy anywise anywither Anzac Anzanian Ao aogiri Aoife aonach Aonian aorist aoristic aoristically aorta aortal aortarctia aortectasia aortectasis aortic aorticorenal aortism aortitis aortoclasia aortoclasis aortolith aortomalacia aortomalaxis aortopathy aortoptosia aortoptosis aortorrhaphy aortosclerosis aortostenosis aortotomy aosmic Aotea Aotearoa Aotes Aotus aoudad Aouellimiden Aoul apa apabhramsa apace Apache apache Apachette apachism apachite apadana apagoge apagogic apagogical apagogically apaid Apalachee apalit Apama apandry Apanteles Apantesis apanthropia apanthropy apar Aparai aparaphysate aparejo Apargia aparithmesis apart apartheid aparthrosis apartment apartmental apartness apasote apastron apatan Apatela apatetic apathetic apathetical apathetically apathic apathism apathist apathistical apathogenic Apathus apathy apatite Apatornis Apatosaurus Apaturia Apayao ape apeak apectomy apedom apehood apeiron apelet apelike apeling apellous Apemantus Apennine apenteric apepsia apepsinia apepsy apeptic aper aperch aperea aperient aperiodic aperiodically aperiodicity aperispermic aperistalsis aperitive apert apertly apertness apertometer apertural aperture apertured Aperu apery apesthesia apesthetic apesthetize Apetalae apetaloid apetalose apetalous apetalousness apetaly apex apexed aphaeresis aphaeretic aphagia aphakia aphakial aphakic Aphanapteryx Aphanes aphanesite Aphaniptera aphanipterous aphanite aphanitic aphanitism Aphanomyces aphanophyre aphanozygous Apharsathacites aphasia aphasiac aphasic Aphelandra Aphelenchus aphelian Aphelinus aphelion apheliotropic apheliotropically apheliotropism Aphelops aphemia aphemic aphengescope aphengoscope aphenoscope apheresis apheretic aphesis apheta aphetic aphetically aphetism aphetize aphicidal aphicide aphid aphides aphidian aphidicide aphidicolous aphidid Aphididae Aphidiinae aphidious Aphidius aphidivorous aphidolysin aphidophagous aphidozer aphilanthropy Aphis aphlaston aphlebia aphlogistic aphnology aphodal aphodian Aphodius aphodus aphonia aphonic aphonous aphony aphoria aphorism aphorismatic aphorismer aphorismic aphorismical aphorismos aphorist aphoristic aphoristically aphorize aphorizer Aphoruridae aphotic aphototactic aphototaxis aphototropic aphototropism Aphra aphrasia aphrite aphrizite aphrodisia aphrodisiac aphrodisiacal aphrodisian Aphrodision Aphrodistic Aphrodite Aphroditeum aphroditic Aphroditidae aphroditous aphrolite aphronia aphrosiderite aphtha Aphthartodocetae Aphthartodocetic Aphthartodocetism aphthic aphthitalite aphthoid aphthong aphthongal aphthongia aphthous aphydrotropic aphydrotropism aphyllose aphyllous aphylly aphyric Apiaca Apiaceae apiaceous Apiales apian apiarian apiarist apiary apiator apicad apical apically apices Apician apicifixed apicilar apicillary apicitis apickaback apicoectomy apicolysis apicula apicular apiculate apiculated apiculation apicultural apiculture apiculturist apiculus Apidae apiece apieces apigenin apii apiin apikoros apilary Apina Apinae Apinage apinch aping apinoid apio Apioceridae apioid apioidal apiole apiolin apiologist apiology apionol Apios apiose Apiosoma apiphobia Apis apish apishamore apishly apishness apism apitong apitpat Apium apivorous apjohnite aplacental Aplacentalia Aplacentaria Aplacophora aplacophoran aplacophorous aplanat aplanatic aplanatically aplanatism Aplanobacter aplanogamete aplanospore aplasia aplastic Aplectrum aplenty aplite aplitic aplobasalt aplodiorite Aplodontia Aplodontiidae aplomb aplome Aplopappus aploperistomatous aplostemonous aplotaxene aplotomy Apluda aplustre Aplysia apnea apneal apneic apneumatic apneumatosis Apneumona apneumonous apneustic apoaconitine apoatropine apobiotic apoblast apocaffeine apocalypse apocalypst apocalypt apocalyptic apocalyptical apocalyptically apocalypticism apocalyptism apocalyptist apocamphoric apocarp apocarpous apocarpy apocatastasis apocatastatic apocatharsis apocenter apocentric apocentricity apocha apocholic apochromat apochromatic apochromatism apocinchonine apocodeine apocopate apocopated apocopation apocope apocopic apocrenic apocrisiary Apocrita apocrustic apocryph Apocrypha apocryphal apocryphalist apocryphally apocryphalness apocryphate apocryphon Apocynaceae apocynaceous apocyneous Apocynum apod Apoda apodal apodan apodeipnon apodeixis apodema apodemal apodematal apodeme Apodes Apodia apodia apodictic apodictical apodictically apodictive Apodidae apodixis apodosis apodous apodyterium apoembryony apofenchene apogaeic apogalacteum apogamic apogamically apogamous apogamously apogamy apogeal apogean apogee apogeic apogenous apogeny apogeotropic apogeotropically apogeotropism Apogon Apogonidae apograph apographal apoharmine apohyal Apoidea apoise apojove apokrea apokreos apolar apolarity apolaustic apolegamic Apolista Apolistan Apollinarian Apollinarianism Apolline Apollo Apollonia Apollonian Apollonic apollonicon Apollonistic Apolloship Apollyon apologal apologete apologetic apologetical apologetically apologetics apologia apologist apologize apologizer apologue apology apolousis Apolysin apolysis apolytikion apomecometer apomecometry apometabolic apometabolism apometabolous apometaboly apomictic apomictical apomixis apomorphia apomorphine aponeurology aponeurorrhaphy aponeurosis aponeurositis aponeurotic aponeurotome aponeurotomy aponia aponic Aponogeton Aponogetonaceae aponogetonaceous apoop apopenptic apopetalous apophantic apophasis apophatic Apophis apophlegmatic apophonia apophony apophorometer apophthegm apophthegmatist apophyge apophylactic apophylaxis apophyllite apophyllous apophysary apophysate apophyseal apophysis apophysitis apoplasmodial apoplastogamous apoplectic apoplectical apoplectically apoplectiform apoplectoid apoplex apoplexy apopyle apoquinamine apoquinine aporetic aporetical aporhyolite aporia Aporobranchia aporobranchian Aporobranchiata Aporocactus Aporosa aporose aporphin aporphine Aporrhaidae Aporrhais aporrhaoid aporrhegma aport aportoise aposafranine aposaturn aposaturnium aposematic aposematically aposepalous aposia aposiopesis aposiopetic apositia apositic aposoro aposporogony aposporous apospory apostasis apostasy apostate apostatic apostatical apostatically apostatism apostatize apostaxis apostemate apostematic apostemation apostematous aposteme aposteriori aposthia apostil apostle apostlehood apostleship apostolate apostoless apostoli Apostolian Apostolic apostolic apostolical apostolically apostolicalness Apostolici apostolicism apostolicity apostolize Apostolos apostrophal apostrophation apostrophe apostrophic apostrophied apostrophize apostrophus Apotactic Apotactici apotelesm apotelesmatic apotelesmatical apothecal apothecary apothecaryship apothece apothecial apothecium apothegm apothegmatic apothegmatical apothegmatically apothegmatist apothegmatize apothem apotheose apotheoses apotheosis apotheosize apothesine apothesis apotome apotracheal apotropaic apotropaion apotropaism apotropous apoturmeric apotype apotypic apout apoxesis Apoxyomenos apozem apozema apozemical apozymase Appalachia Appalachian appall appalling appallingly appallment appalment appanage appanagist apparatus apparel apparelment apparence apparency apparent apparently apparentness apparition apparitional apparitor appassionata appassionato appay appeal appealability appealable appealer appealing appealingly appealingness appear appearance appearanced appearer appeasable appeasableness appeasably appease appeasement appeaser appeasing appeasingly appeasive appellability appellable appellancy appellant appellate appellation appellational appellative appellatived appellatively appellativeness appellatory appellee appellor append appendage appendaged appendalgia appendance appendancy appendant appendectomy appendical appendicalgia appendice appendicectasis appendicectomy appendices appendicial appendicious appendicitis appendicle appendicocaecostomy appendicostomy appendicular Appendicularia appendicularian Appendiculariidae Appendiculata appendiculate appendiculated appenditious appendix appendorontgenography appendotome appentice apperceive apperception apperceptionism apperceptionist apperceptionistic apperceptive apperceptively appercipient appersonation appertain appertainment appertinent appet appete appetence appetency appetent appetently appetibility appetible appetibleness appetite appetition appetitional appetitious appetitive appetize appetizement appetizer appetizingly appinite Appius applanate applanation applaud applaudable applaudably applauder applaudingly applause applausive applausively apple appleberry appleblossom applecart appledrane applegrower applejack applejohn applemonger applenut appleringy appleroot applesauce applewife applewoman appliable appliableness appliably appliance appliant applicability applicable applicableness applicably applicancy applicant applicate application applicative applicatively applicator applicatorily applicatory applied appliedly applier applique applosion applosive applot applotment apply applyingly applyment appoggiatura appoint appointable appointe appointee appointer appointive appointment appointor Appomatox Appomattoc apport apportion apportionable apportioner apportionment apposability apposable appose apposer apposiopestic apposite appositely appositeness apposition appositional appositionally appositive appositively appraisable appraisal appraise appraisement appraiser appraising appraisingly appraisive appreciable appreciably appreciant appreciate appreciatingly appreciation appreciational appreciativ appreciative appreciatively appreciativeness appreciator appreciatorily appreciatory appredicate apprehend apprehender apprehendingly apprehensibility apprehensible apprehensibly apprehension apprehensive apprehensively apprehensiveness apprend apprense apprentice apprenticehood apprenticement apprenticeship appressed appressor appressorial appressorium appreteur apprise apprize apprizement apprizer approach approachability approachabl approachable approachableness approacher approaching approachless approachment approbate approbation approbative approbativeness approbator approbatory approof appropinquate appropinquation appropinquity appropre appropriable appropriate appropriately appropriateness appropriation appropriative appropriativeness appropriator approvable approvableness approval approvance approve approvedly approvedness approvement approver approvingly approximal approximate approximately approximation approximative approximatively approximativeness approximator appulse appulsion appulsive appulsively appurtenance appurtenant apractic apraxia apraxic apricate aprication aprickle apricot April Aprilesque Apriline Aprilis apriori apriorism apriorist aprioristic apriority Aprocta aproctia aproctous apron aproneer apronful apronless apronlike apropos aprosexia aprosopia aprosopous aproterodont apse apselaphesia apselaphesis apsidal apsidally apsides apsidiole apsis apsychia apsychical apt Aptal Aptenodytes Aptera apteral apteran apterial apterium apteroid apterous Apteryges apterygial Apterygidae Apterygiformes Apterygogenea Apterygota apterygote apterygotous Apteryx Aptian Aptiana aptitude aptitudinal aptitudinally aptly aptness aptote aptotic aptyalia aptyalism aptychus Apulian apulmonic apulse apurpose Apus apyonin apyrene apyretic apyrexia apyrexial apyrexy apyrotype apyrous aqua aquabelle aquabib aquacade aquacultural aquaculture aquaemanale aquafortist aquage aquagreen aquamarine aquameter aquaplane aquapuncture aquarelle aquarellist aquaria aquarial Aquarian aquarian Aquarid Aquarii aquariist aquarium Aquarius aquarter aquascutum aquatic aquatical aquatically aquatile aquatint aquatinta aquatinter aquation aquativeness aquatone aquavalent aquavit aqueduct aqueoglacial aqueoigneous aqueomercurial aqueous aqueously aqueousness aquicolous aquicultural aquiculture aquiculturist aquifer aquiferous Aquifoliaceae aquifoliaceous aquiform Aquila Aquilaria aquilawood aquilege Aquilegia Aquilian Aquilid aquiline aquilino aquincubital aquincubitalism Aquinist aquintocubital aquintocubitalism aquiparous Aquitanian aquiver aquo aquocapsulitis aquocarbonic aquocellolitis aquopentamminecobaltic aquose aquosity aquotization aquotize ar ara Arab araba araban arabana Arabella arabesque arabesquely arabesquerie Arabian Arabianize Arabic Arabicism Arabicize Arabidopsis arability arabin arabinic arabinose arabinosic Arabis Arabism Arabist arabit arabitol arabiyeh Arabize arable Arabophil Araby araca Aracana aracanga aracari Araceae araceous arachic arachidonic arachin Arachis arachnactis Arachne arachnean arachnid Arachnida arachnidan arachnidial arachnidism arachnidium arachnism Arachnites arachnitis arachnoid arachnoidal Arachnoidea arachnoidea arachnoidean arachnoiditis arachnological arachnologist arachnology Arachnomorphae arachnophagous arachnopia arad Aradidae arado araeostyle araeosystyle Aragallus Aragonese Aragonian aragonite araguato arain Arains Arakanese arakawaite arake Arales Aralia Araliaceae araliaceous araliad Araliaephyllum aralie Araliophyllum aralkyl aralkylated Aramaean Aramaic Aramaicize Aramaism aramayoite Aramidae aramina Araminta Aramis Aramitess Aramu Aramus Aranea Araneae araneid Araneida araneidan araneiform Araneiformes Araneiformia aranein Araneina Araneoidea araneologist araneology araneous aranga arango Aranyaka aranzada arapahite Arapaho arapaima araphorostic arapunga Araquaju arar Arara arara araracanga ararao ararauna arariba araroba arati aration aratory Araua Arauan Araucan Araucanian Araucano Araucaria Araucariaceae araucarian Araucarioxylon Araujia Arauna Arawa Arawak Arawakan Arawakian arba Arbacia arbacin arbalest arbalester arbalestre arbalestrier arbalist arbalister arbalo Arbela arbiter arbitrable arbitrager arbitragist arbitral arbitrament arbitrarily arbitrariness arbitrary arbitrate arbitration arbitrational arbitrationist arbitrative arbitrator arbitratorship arbitratrix arbitrement arbitrer arbitress arboloco arbor arboraceous arboral arborary arborator arboreal arboreally arborean arbored arboreous arborescence arborescent arborescently arboresque arboret arboreta arboretum arborical arboricole arboricoline arboricolous arboricultural arboriculture arboriculturist arboriform arborist arborization arborize arboroid arborolatry arborous arborvitae arborway arbuscle arbuscula arbuscular arbuscule arbusterol arbustum arbutase arbute arbutean arbutin arbutinase arbutus arc arca Arcacea arcade Arcadia Arcadian arcadian Arcadianism Arcadianly Arcadic Arcady arcana arcanal arcane arcanite arcanum arcate arcature Arcella Arceuthobium arch archabomination archae archaecraniate Archaeoceti Archaeocyathidae Archaeocyathus archaeogeology archaeographic archaeographical archaeography archaeolatry archaeolith archaeolithic archaeologer archaeologian archaeologic archaeological archaeologically archaeologist archaeology Archaeopithecus Archaeopteris Archaeopterygiformes Archaeopteryx Archaeornis Archaeornithes archaeostoma Archaeostomata archaeostomatous archagitator archaic archaical archaically archaicism archaism archaist archaistic archaize archaizer archangel archangelic Archangelica archangelical archangelship archantagonist archantiquary archapostate archapostle archarchitect archarios archartist archband archbeacon archbeadle archbishop archbishopess archbishopric archbishopry archbotcher archboutefeu archbuffoon archbuilder archchampion archchaplain archcharlatan archcheater archchemic archchief archchronicler archcity archconfraternity archconsoler archconspirator archcorrupter archcorsair archcount archcozener archcriminal archcritic archcrown archcupbearer archdapifer archdapifership archdeacon archdeaconate archdeaconess archdeaconry archdeaconship archdean archdeanery archdeceiver archdefender archdemon archdepredator archdespot archdetective archdevil archdiocesan archdiocese archdiplomatist archdissembler archdisturber archdivine archdogmatist archdolt archdruid archducal archduchess archduchy archduke archdukedom arche archeal Archean archearl archebiosis archecclesiastic archecentric arched archegone archegonial Archegoniata Archegoniatae archegoniate archegoniophore archegonium archegony Archegosaurus archeion Archelaus Archelenis archelogy Archelon archemperor Archencephala archencephalic archenemy archengineer archenteric archenteron archeocyte Archeozoic Archer archer archeress archerfish archership archery arches archespore archesporial archesporium archetypal archetypally archetype archetypic archetypical archetypically archetypist archeunuch archeus archexorcist archfelon archfiend archfire archflamen archflatterer archfoe archfool archform archfounder archfriend archgenethliac archgod archgomeral archgovernor archgunner archhead archheart archheresy archheretic archhost archhouse archhumbug archhypocrisy archhypocrite Archiannelida archiater Archibald archibenthal archibenthic archibenthos archiblast archiblastic archiblastoma archiblastula Archibuteo archicantor archicarp archicerebrum Archichlamydeae archichlamydeous archicleistogamous archicleistogamy archicoele archicontinent archicyte archicytula Archidamus Archidiaceae archidiaconal archidiaconate archididascalian archididascalos Archidiskodon Archidium archidome Archie archiepiscopacy archiepiscopal archiepiscopally archiepiscopate archiereus archigaster archigastrula archigenesis archigonic archigonocyte archigony archiheretical archikaryon archil archilithic Archilochian archilowe archimage Archimago archimagus archimandrite Archimedean Archimedes archimime archimorphic archimorula archimperial archimperialism archimperialist archimperialistic archimpressionist Archimycetes archineuron archinfamy archinformer arching archipallial archipallium archipelagian archipelagic archipelago archipin archiplasm archiplasmic Archiplata archiprelatical archipresbyter archipterygial archipterygium archisperm Archispermae archisphere archispore archistome archisupreme archisymbolical architect architective architectonic Architectonica architectonically architectonics architectress architectural architecturalist architecturally architecture architecturesque Architeuthis architis architraval architrave architraved architypographer archival archive archivist archivolt archizoic archjockey archking archknave archleader archlecher archleveler archlexicographer archliar archlute archly archmachine archmagician archmagirist archmarshal archmediocrity archmessenger archmilitarist archmime archminister archmock archmocker archmockery archmonarch archmonarchist archmonarchy archmugwump archmurderer archmystagogue archness archocele archocystosyrinx archology archon archonship archont archontate Archontia archontic archoplasm archoplasmic archoptoma archoptosis archorrhagia archorrhea archostegnosis archostenosis archosyrinx archoverseer archpall archpapist archpastor archpatriarch archpatron archphilosopher archphylarch archpiece archpilferer archpillar archpirate archplagiarist archplagiary archplayer archplotter archplunderer archplutocrat archpoet archpolitician archpontiff archpractice archprelate archprelatic archprelatical archpresbyter archpresbyterate archpresbytery archpretender archpriest archpriesthood archpriestship archprimate archprince archprophet archprotopope archprototype archpublican archpuritan archradical archrascal archreactionary archrebel archregent archrepresentative archrobber archrogue archruler archsacrificator archsacrificer archsaint archsatrap archscoundrel archseducer archsee archsewer archshepherd archsin archsnob archspirit archspy archsteward archswindler archsynagogue archtempter archthief archtraitor archtreasurer archtreasurership archturncoat archtyrant archurger archvagabond archvampire archvestryman archvillain archvillainy archvisitor archwag archway archwench archwise archworker archworkmaster Archy archy Arcidae Arcifera arciferous arcifinious arciform arcing Arcite arcked arcking arcocentrous arcocentrum arcograph Arcos Arctalia Arctalian Arctamerican arctation Arctia arctian arctic arctically arctician arcticize arcticward arcticwards arctiid Arctiidae Arctisca Arctium Arctocephalus Arctogaea Arctogaeal Arctogaean arctoid Arctoidea arctoidean Arctomys Arctos Arctosis Arctostaphylos Arcturia Arcturus arcual arcuale arcuate arcuated arcuately arcuation arcubalist arcubalister arcula arculite ardassine Ardea Ardeae ardeb Ardeidae Ardelia ardella ardency ardennite ardent ardently ardentness Ardhamagadhi Ardhanari ardish Ardisia Ardisiaceae ardoise ardor ardri ardu arduinite arduous arduously arduousness ardurous are area areach aread areal areality Arean arear areasoner areaway Areca Arecaceae arecaceous arecaidin arecaidine arecain arecaine Arecales arecolidin arecolidine arecolin arecoline Arecuna ared areek areel arefact arefaction aregenerative aregeneratory areito arena arenaceous arenae Arenaria arenariae arenarious arenation arend arendalite areng Arenga Arenicola arenicole arenicolite arenicolous Arenig arenilitic arenoid arenose arenosity arent areocentric areographer areographic areographical areographically areography areola areolar areolate areolated areolation areole areolet areologic areological areologically areologist areology areometer areometric areometrical areometry Areopagist Areopagite Areopagitic Areopagitica Areopagus areotectonics areroscope aretaics arete Arethusa Arethuse Aretinian arfvedsonite argal argala argali argans Argante Argas argasid Argasidae Argean argeers argel Argemone argemony argenol argent argental argentamid argentamide argentamin argentamine argentate argentation argenteous argenter argenteum argentic argenticyanide argentide argentiferous Argentina Argentine argentine Argentinean Argentinian Argentinidae argentinitrate Argentinize Argentino argention argentite argentojarosite argentol argentometric argentometrically argentometry argenton argentoproteinum argentose argentous argentum Argestes arghan arghel arghool Argid argil argillaceous argilliferous argillite argillitic argilloarenaceous argillocalcareous argillocalcite argilloferruginous argilloid argillomagnesian argillous arginine argininephosphoric Argiope Argiopidae Argiopoidea Argive Argo argo Argoan argol argolet Argolian Argolic Argolid argon Argonaut Argonauta Argonautic Argonne argosy argot argotic Argovian arguable argue arguer argufier argufy Argulus argument argumental argumentation argumentatious argumentative argumentatively argumentativeness argumentator argumentatory Argus argusfish Argusianus Arguslike argute argutely arguteness Argyle Argyll Argynnis argyranthemous argyranthous Argyraspides argyria argyric argyrite argyrocephalous argyrodite Argyrol Argyroneta Argyropelecus argyrose argyrosis Argyrosomus argyrythrose arhar arhat arhatship Arhauaco arhythmic aria Ariadne Arian Ariana Arianism Arianistic Arianistical Arianize Arianizer Arianrhod aribine Arician aricine arid Arided aridge aridian aridity aridly aridness ariegite Ariel ariel arienzo Aries arietation Arietid arietinous arietta aright arightly arigue Ariidae Arikara aril ariled arillary arillate arillated arilliform arillode arillodium arilloid arillus Arimasp Arimaspian Arimathaean Ariocarpus Arioi Arioian Arion ariose arioso ariot aripple Arisaema arisard arise arisen arist arista Aristarch Aristarchian aristarchy aristate Aristeas Aristida Aristides Aristippus aristocracy aristocrat aristocratic aristocratical aristocratically aristocraticalness aristocraticism aristocraticness aristocratism aristodemocracy aristodemocratical aristogenesis aristogenetic aristogenic aristogenics Aristol Aristolochia Aristolochiaceae aristolochiaceous Aristolochiales aristolochin aristolochine aristological aristologist aristology aristomonarchy Aristophanic aristorepublicanism Aristotelian Aristotelianism Aristotelic Aristotelism aristotype aristulate arite arithmetic arithmetical arithmetically arithmetician arithmetization arithmetize arithmic arithmocracy arithmocratic arithmogram arithmograph arithmography arithmomania arithmometer Arius Arivaipa Arizona Arizonan Arizonian arizonite arjun ark Arkab Arkansan Arkansas Arkansawyer arkansite Arkite arkite arkose arkosic arksutite Arleng arles Arline arm armada armadilla Armadillididae Armadillidium armadillo Armado Armageddon Armageddonist armagnac armament armamentarium armamentary armangite armariolum armarium Armata Armatoles Armatoli armature armbone armchair armchaired armed armeniaceous Armenian Armenic Armenize Armenoid armer Armeria Armeriaceae armet armful armgaunt armhole armhoop Armida armied armiferous armiger armigeral armigerous armil armilla Armillaria armillary armillate armillated arming Arminian Arminianism Arminianize Arminianizer armipotence armipotent armisonant armisonous armistice armless armlet armload armoire armonica armor Armoracia armored armorer armorial Armoric Armorican Armorician armoried armorist armorproof armorwise armory Armouchiquois armozeen armpiece armpit armplate armrack armrest arms armscye armure army arn arna Arnaut arnberry Arneb Arnebia arnee arni arnica Arnold Arnoldist Arnoseris arnotta arnotto Arnusian arnut Aro aroar aroast arock aroeira aroid aroideous Aroides aroint arolium arolla aroma aromacity aromadendrin aromatic aromatically aromaticness aromatite aromatites aromatization aromatize aromatizer aromatophor aromatophore Aronia aroon Aroras Arosaguntacook arose around arousal arouse arousement arouser arow aroxyl arpeggiando arpeggiated arpeggiation arpeggio arpeggioed arpen arpent arquerite arquifoux arracach arracacha Arracacia arrack arrah arraign arraigner arraignment arrame arrange arrangeable arrangement arranger arrant arrantly Arras arras arrased arrasene arrastra arrastre arratel arrau array arrayal arrayer arrayment arrear arrearage arrect arrector arrendation arrenotokous arrenotoky arrent arrentable arrentation arreptitious arrest arrestable arrestation arrestee arrester arresting arrestingly arrestive arrestment arrestor Arretine arrhenal Arrhenatherum arrhenoid arrhenotokous arrhenotoky arrhinia arrhizal arrhizous arrhythmia arrhythmic arrhythmical arrhythmically arrhythmous arrhythmy arriage arriba arride arridge arrie arriere Arriet arrimby arris arrish arrisways arriswise arrival arrive arriver arroba arrogance arrogancy arrogant arrogantly arrogantness arrogate arrogatingly arrogation arrogative arrogator arrojadite arrope arrosive arrow arrowbush arrowed arrowhead arrowheaded arrowleaf arrowless arrowlet arrowlike arrowplate arrowroot arrowsmith arrowstone arrowweed arrowwood arrowworm arrowy arroyo Arruague Arry Arryish Arsacid Arsacidan arsanilic arse arsedine arsenal arsenate arsenation arseneted arsenetted arsenfast arsenferratose arsenhemol arseniasis arseniate arsenic arsenical arsenicalism arsenicate arsenicism arsenicize arsenicophagy arsenide arseniferous arsenillo arseniopleite arseniosiderite arsenious arsenism arsenite arsenium arseniuret arseniureted arsenization arseno arsenobenzene arsenobenzol arsenobismite arsenoferratin arsenofuran arsenohemol arsenolite arsenophagy arsenophen arsenophenol arsenophenylglycin arsenopyrite arsenostyracol arsenotherapy arsenotungstates arsenotungstic arsenous arsenoxide arsenyl arses arsesmart arsheen arshin arshine arsine arsinic arsino Arsinoitherium arsis arsle arsmetrik arsmetrike arsnicker arsoite arson arsonate arsonation arsonic arsonist arsonite arsonium arsono arsonvalization arsphenamine arsyl arsylene Art art artaba artabe artal Artamidae Artamus artar artarine artcraft artefact artel Artemas Artemia Artemis Artemisia artemisic artemisin Artemision Artemisium arteriagra arterial arterialization arterialize arterially arteriarctia arteriasis arteriectasia arteriectasis arteriectopia arterin arterioarctia arteriocapillary arteriococcygeal arteriodialysis arteriodiastasis arteriofibrosis arteriogenesis arteriogram arteriograph arteriography arteriole arteriolith arteriology arteriolosclerosis arteriomalacia arteriometer arteriomotor arterionecrosis arteriopalmus arteriopathy arteriophlebotomy arterioplania arterioplasty arteriopressor arteriorenal arteriorrhagia arteriorrhaphy arteriorrhexis arteriosclerosis arteriosclerotic arteriospasm arteriostenosis arteriostosis arteriostrepsis arteriosympathectomy arteriotome arteriotomy arteriotrepsis arterious arteriovenous arterioversion arterioverter arteritis artery Artesian artesian artful artfully artfulness Artgum artha arthel arthemis arthragra arthral arthralgia arthralgic arthrectomy arthredema arthrempyesis arthresthesia arthritic arthritical arthriticine arthritis arthritism arthrobacterium arthrobranch arthrobranchia arthrocace arthrocarcinoma arthrocele arthrochondritis arthroclasia arthrocleisis arthroclisis arthroderm arthrodesis arthrodia arthrodial arthrodic Arthrodira arthrodiran arthrodire arthrodirous Arthrodonteae arthrodynia arthrodynic arthroempyema arthroempyesis arthroendoscopy Arthrogastra arthrogastran arthrogenous arthrography arthrogryposis arthrolite arthrolith arthrolithiasis arthrology arthromeningitis arthromere arthromeric arthrometer arthrometry arthroncus arthroneuralgia arthropathic arthropathology arthropathy arthrophlogosis arthrophyma arthroplastic arthroplasty arthropleura arthropleure arthropod Arthropoda arthropodal arthropodan arthropodous Arthropomata arthropomatous arthropterous arthropyosis arthrorheumatism arthrorrhagia arthrosclerosis arthrosia arthrosis arthrospore arthrosporic arthrosporous arthrosteitis arthrosterigma arthrostome arthrostomy Arthrostraca arthrosynovitis arthrosyrinx arthrotome arthrotomy arthrotrauma arthrotropic arthrotyphoid arthrous arthroxerosis Arthrozoa arthrozoan arthrozoic Arthur Arthurian Arthuriana artiad artichoke article articled articulability articulable articulacy articulant articular articulare articularly articulary Articulata articulate articulated articulately articulateness articulation articulationist articulative articulator articulatory articulite articulus Artie artifact artifactitious artifice artificer artificership artificial artificialism artificiality artificialize artificially artificialness artiller artillerist artillery artilleryman artilleryship artiness artinite Artinskian artiodactyl Artiodactyla artiodactylous artiphyllous artisan artisanship artist artistdom artiste artistic artistical artistically artistry artless artlessly artlessness artlet artlike Artocarpaceae artocarpad artocarpeous artocarpous Artocarpus artolater artophagous artophorion artotype artotypy Artotyrite artware arty aru Aruac arui aruke Arulo Arum arumin Aruncus arundiferous arundinaceous Arundinaria arundineous Arundo Arunta arupa arusa arusha arustle arval arvel Arverni Arvicola arvicole Arvicolinae arvicoline arvicolous arviculture arx ary Arya Aryan Aryanism Aryanization Aryanize aryballoid aryballus aryepiglottic aryl arylamine arylamino arylate arytenoid arytenoidal arzan Arzava Arzawa arzrunite arzun As as Asa asaddle asafetida Asahel asak asale asana Asaph asaphia Asaphic asaphid Asaphidae Asaphus asaprol asarabacca Asaraceae Asarh asarite asaron asarone asarotum Asarum asbest asbestic asbestiform asbestine asbestinize asbestoid asbestoidal asbestos asbestosis asbestous asbestus asbolin asbolite Ascabart Ascalabota ascan Ascanian Ascanius ascare ascariasis ascaricidal ascaricide ascarid Ascaridae ascarides Ascaridia ascaridiasis ascaridole Ascaris ascaron Ascella ascellus ascend ascendable ascendance ascendancy ascendant ascendence ascendency ascendent ascender ascendible ascending ascendingly ascension ascensional ascensionist Ascensiontide ascensive ascent ascertain ascertainable ascertainableness ascertainably ascertainer ascertainment ascescency ascescent ascetic ascetical ascetically asceticism Ascetta aschaffite ascham aschistic asci ascian Ascidia Ascidiacea Ascidiae ascidian ascidiate ascidicolous ascidiferous ascidiform ascidioid Ascidioida Ascidioidea Ascidiozoa ascidiozooid ascidium asciferous ascigerous ascii ascites ascitic ascitical ascititious asclent Asclepiad asclepiad Asclepiadaceae asclepiadaceous Asclepiadae Asclepiadean asclepiadeous Asclepiadic Asclepian Asclepias asclepidin asclepidoid Asclepieion asclepin Asclepius ascocarp ascocarpous Ascochyta ascogenous ascogone ascogonial ascogonidium ascogonium ascolichen Ascolichenes ascoma ascomycetal ascomycete Ascomycetes ascomycetous ascon Ascones ascophore ascophorous Ascophyllum ascorbic ascospore ascosporic ascosporous Ascot ascot Ascothoracica ascribable ascribe ascript ascription ascriptitii ascriptitious ascriptitius ascry ascula Ascupart ascus ascyphous Ascyrum asdic ase asearch asecretory aseethe aseismatic aseismic aseismicity aseity aselgeia asellate Aselli Asellidae Aselline Asellus asem asemasia asemia asepsis aseptate aseptic aseptically asepticism asepticize aseptify aseptol aseptolin asexual asexuality asexualization asexualize asexually asfetida ash Asha ashake ashame ashamed ashamedly ashamedness ashamnu Ashangos Ashantee Ashanti Asharasi ashberry ashcake ashen Asher asherah Asherites ashery ashes ashet ashily ashimmer ashine ashiness ashipboard Ashir ashiver Ashkenazic Ashkenazim ashkoko ashlar ashlared ashlaring ashless ashling Ashluslay ashman Ashmolean Ashochimi ashore ashpan ashpit ashplant ashraf ashrafi ashthroat Ashur ashur ashweed ashwort ashy asialia Asian Asianic Asianism Asiarch Asiarchate Asiatic Asiatical Asiatically Asiatican Asiaticism Asiaticization Asiaticize Asiatize aside asidehand asideness asiderite asideu asiento asilid Asilidae Asilus asimen Asimina asimmer asinego asinine asininely asininity asiphonate asiphonogama asitia ask askable askance askant askar askari asker askew askingly askip asklent Asklepios askos Askr aslant aslantwise aslaver asleep aslop aslope aslumber asmack asmalte asmear asmile asmoke asmolder asniffle asnort asoak asocial asok asoka asomatophyte asomatous asonant asonia asop asor asouth asp aspace aspalathus Aspalax asparagic asparagine asparaginic asparaginous asparagus asparagyl asparkle aspartate aspartic aspartyl Aspasia Aspatia aspect aspectable aspectant aspection aspectual aspen asper asperate asperation aspergation asperge asperger Asperges aspergil aspergill Aspergillaceae Aspergillales aspergilliform aspergillin aspergillosis aspergillum aspergillus Asperifoliae asperifoliate asperifolious asperite asperity aspermatic aspermatism aspermatous aspermia aspermic aspermous asperous asperously asperse aspersed asperser aspersion aspersive aspersively aspersor aspersorium aspersory Asperugo Asperula asperuloside asperulous asphalt asphaltene asphalter asphaltic asphaltite asphaltum aspheterism aspheterize asphodel Asphodelaceae Asphodeline Asphodelus asphyctic asphyctous asphyxia asphyxial asphyxiant asphyxiate asphyxiation asphyxiative asphyxiator asphyxied asphyxy aspic aspiculate aspiculous aspidate aspidiaria aspidinol Aspidiotus Aspidiske Aspidistra aspidium Aspidobranchia Aspidobranchiata aspidobranchiate Aspidocephali Aspidochirota Aspidoganoidei aspidomancy Aspidosperma aspidospermine aspirant aspirata aspirate aspiration aspirator aspiratory aspire aspirer aspirin aspiring aspiringly aspiringness aspish asplanchnic Asplenieae asplenioid Asplenium asporogenic asporogenous asporous asport asportation asporulate aspout asprawl aspread Aspredinidae Aspredo aspring asprout asquare asquat asqueal asquint asquirm ass assacu assagai assai assail assailable assailableness assailant assailer assailment Assam Assamese Assamites assapan assapanic assarion assart assary assassin assassinate assassination assassinative assassinator assassinatress assassinist assate assation assault assaultable assaulter assaut assay assayable assayer assaying assbaa asse assecuration assecurator assedation assegai asself assemblable assemblage assemble assembler assembly assemblyman assent assentaneous assentation assentatious assentator assentatorily assentatory assented assenter assentient assenting assentingly assentive assentiveness assentor assert assertable assertative asserter assertible assertion assertional assertive assertively assertiveness assertor assertorial assertorially assertoric assertorical assertorically assertorily assertory assertress assertrix assertum assess assessable assessably assessed assessee assession assessionary assessment assessor assessorial assessorship assessory asset assets assever asseverate asseveratingly asseveration asseverative asseveratively asseveratory asshead assi assibilate assibilation Assidean assident assidual assidually assiduity assiduous assiduously assiduousness assientist assiento assify assign assignability assignable assignably assignat assignation assigned assignee assigneeship assigner assignment assignor assilag assimilability assimilable assimilate assimilation assimilationist assimilative assimilativeness assimilator assimilatory Assiniboin assis Assisan assise assish assishly assishness assist assistance assistant assistanted assistantship assistency assister assistful assistive assistless assistor assize assizement assizer assizes asslike assman Assmannshauser assmanship associability associable associableness associate associated associatedness associateship association associational associationalism associationalist associationism associationist associationistic associative associatively associativeness associator associatory assoil assoilment assoilzie assonance assonanced assonant assonantal assonantic assonate Assonia assort assortative assorted assortedness assorter assortive assortment assuade assuage assuagement assuager assuasive assubjugate assuetude assumable assumably assume assumed assumedly assumer assuming assumingly assumingness assumpsit assumption Assumptionist assumptious assumptiousness assumptive assumptively assurable assurance assurant assure assured assuredly assuredness assurer assurge assurgency assurgent assuring assuringly assyntite Assyrian Assyrianize Assyriological Assyriologist Assyriologue Assyriology Assyroid assythment ast asta Astacidae Astacus Astakiwi astalk astarboard astare astart Astarte Astartian Astartidae astasia astatic astatically astaticism astatine astatize astatizer astay asteam asteatosis asteep asteer asteism astelic astely aster Asteraceae asteraceous Asterales Asterella astereognosis asteria asterial Asterias asteriated Asteriidae asterikos asterin Asterina Asterinidae asterioid Asterion asterion Asterionella asterisk asterism asterismal astern asternal Asternata asternia Asterochiton asteroid asteroidal Asteroidea asteroidean Asterolepidae Asterolepis Asterope asterophyllite Asterophyllites Asterospondyli asterospondylic asterospondylous Asteroxylaceae Asteroxylon Asterozoa asterwort asthenia asthenic asthenical asthenobiosis asthenobiotic asthenolith asthenology asthenopia asthenopic asthenosphere astheny asthma asthmatic asthmatical asthmatically asthmatoid asthmogenic asthore asthorin Astian astichous astigmatic astigmatical astigmatically astigmatism astigmatizer astigmatometer astigmatoscope astigmatoscopy astigmia astigmism astigmometer astigmometry Astilbe astilbe astint astipulate astir astite astomatal astomatous astomia astomous astonied astonish astonishedly astonisher astonishing astonishingly astonishingness astonishment astony astoop astor astound astoundable astounding astoundingly astoundment Astrachan astraddle Astraea Astraean astraean astraeid Astraeidae astraeiform astragal astragalar astragalectomy astragali astragalocalcaneal astragalocentral astragalomancy astragalonavicular astragaloscaphoid astragalotibial Astragalus astragalus astrain astrakanite astrakhan astral astrally astrand Astrantia astraphobia astrapophobia astray astream astrer astrict astriction astrictive astrictively astrictiveness Astrid astride astrier astriferous astrild astringe astringency astringent astringently astringer astroalchemist astroblast Astrocaryum astrochemist astrochemistry astrochronological astrocyte astrocytoma astrocytomata astrodiagnosis astrodome astrofel astrogeny astroglia astrognosy astrogonic astrogony astrograph astrographic astrography astroid astroite astrolabe astrolabical astrolater astrolatry astrolithology astrologaster astrologer astrologian astrologic astrological astrologically astrologistic astrologize astrologous astrology astromancer astromancy astromantic astrometeorological astrometeorologist astrometeorology astrometer astrometrical astrometry astronaut astronautics astronomer astronomic astronomical astronomically astronomics astronomize astronomy Astropecten Astropectinidae astrophil astrophobia astrophotographic astrophotography astrophotometer astrophotometrical astrophotometry astrophyllite astrophysical astrophysicist astrophysics Astrophyton astroscope Astroscopus astroscopy astrospectral astrospectroscopic astrosphere astrotheology astrut astucious astuciously astucity Astur Asturian astute astutely astuteness astylar Astylospongia Astylosternus asudden asunder Asuri aswail aswarm asway asweat aswell aswim aswing aswirl aswoon aswooned asyla asyllabia asyllabic asyllabical asylum asymbiotic asymbolia asymbolic asymbolical asymmetric asymmetrical asymmetrically Asymmetron asymmetry asymptomatic asymptote asymptotic asymptotical asymptotically asynapsis asynaptic asynartete asynartetic asynchronism asynchronous asyndesis asyndetic asyndetically asyndeton asynergia asynergy asyngamic asyngamy asyntactic asyntrophy asystole asystolic asystolism asyzygetic at Ata atabal atabeg atabek Atabrine Atacaman Atacamenan Atacamenian Atacameno atacamite atactic atactiform Ataentsic atafter Ataigal Ataiyal Atalan ataman atamasco Atamosco atangle atap ataraxia ataraxy atatschite ataunt atavi atavic atavism atavist atavistic atavistically atavus ataxaphasia ataxia ataxiagram ataxiagraph ataxiameter ataxiaphasia ataxic ataxinomic ataxite ataxonomic ataxophemia ataxy atazir atbash atchison ate Ateba atebrin atechnic atechnical atechny ateeter atef atelectasis atelectatic ateleological Ateles atelestite atelets atelier ateliosis Atellan atelo atelocardia atelocephalous ateloglossia atelognathia atelomitic atelomyelia atelopodia ateloprosopia atelorachidia atelostomia atemporal Aten Atenism Atenist Aterian ates Atestine ateuchi ateuchus Atfalati Athabasca Athabascan athalamous athalline Athamantid athanasia Athanasian Athanasianism Athanasianist athanasy athanor Athapascan athar Atharvan Athecae Athecata athecate atheism atheist atheistic atheistical atheistically atheisticalness atheize atheizer athelia atheling athematic Athenaea athenaeum athenee Athenian Athenianly athenor Athens atheological atheologically atheology atheous Athericera athericeran athericerous atherine Atherinidae Atheriogaea Atheriogaean Atheris athermancy athermanous athermic athermous atheroma atheromasia atheromata atheromatosis atheromatous atherosclerosis Atherosperma Atherurus athetesis athetize athetoid athetosic athetosis athing athirst athlete athletehood athletic athletical athletically athleticism athletics athletism athletocracy athlothete athlothetes athodyd athort athrepsia athreptic athrill athrive athrob athrocyte athrocytosis athrogenic athrong athrough athwart athwarthawse athwartship athwartships athwartwise athymia athymic athymy athyreosis athyria athyrid Athyridae Athyris Athyrium athyroid athyroidism athyrosis Ati Atik Atikokania atilt atimon atinga atingle atinkle atip atis Atka Atlanta atlantad atlantal Atlantean atlantes Atlantic atlantic Atlantica Atlantid Atlantides atlantite atlantoaxial atlantodidymus atlantomastoid atlantoodontoid Atlantosaurus Atlas atlas Atlaslike atlatl atle atlee atloaxoid atloid atloidean atloidoaxoid atma atman atmiatrics atmiatry atmid atmidalbumin atmidometer atmidometry atmo atmocausis atmocautery atmoclastic atmogenic atmograph atmologic atmological atmologist atmology atmolysis atmolyzation atmolyze atmolyzer atmometer atmometric atmometry atmos atmosphere atmosphereful atmosphereless atmospheric atmospherical atmospherically atmospherics atmospherology atmostea atmosteal atmosteon Atnah atocha atocia atokal atoke atokous atoll atom atomatic atomechanics atomerg atomic atomical atomically atomician atomicism atomicity atomics atomiferous atomism atomist atomistic atomistical atomistically atomistics atomity atomization atomize atomizer atomology atomy atonable atonal atonalism atonalistic atonality atonally atone atonement atoneness atoner atonia atonic atonicity atoningly atony atop Atophan atophan atopic atopite atopy Atorai Atossa atour atoxic Atoxyl atoxyl atrabilarian atrabilarious atrabiliar atrabiliarious atrabiliary atrabilious atrabiliousness atracheate Atractaspis Atragene atragene atrail atrament atramental atramentary atramentous atraumatic Atrebates Atremata atrematous atremble atrepsy atreptic atresia atresic atresy atretic atria atrial atrichia atrichosis atrichous atrickle Atridean atrienses atriensis atriocoelomic atrioporal atriopore atrioventricular atrip Atriplex atrium atrocha atrochal atrochous atrocious atrociously atrociousness atrocity atrolactic Atropa atropaceous atropal atropamine atrophia atrophiated atrophic atrophied atrophoderma atrophy atropia atropic Atropidae atropine atropinism atropinization atropinize atropism atropous atrorubent atrosanguineous atroscine atrous atry Atrypa Atta atta Attacapan attacco attach attachable attachableness attache attached attachedly attacher attacheship attachment attack attackable attacker attacolite Attacus attacus attagen attaghan attain attainability attainable attainableness attainder attainer attainment attaint attaintment attainture Attalea attaleh Attalid attar attargul attask attemper attemperament attemperance attemperate attemperately attemperation attemperator attempt attemptability attemptable attempter attemptless attend attendance attendancy attendant attendantly attender attendingly attendment attendress attensity attent attention attentional attentive attentively attentiveness attently attenuable attenuant attenuate attenuation attenuative attenuator atter attercop attercrop atterminal attermine atterminement attern attery attest attestable attestant attestation attestative attestator attester attestive Attic attic Attical Atticism atticism Atticist Atticize atticize atticomastoid attid Attidae attinge attingence attingency attingent attire attired attirement attirer attitude attitudinal attitudinarian attitudinarianism attitudinize attitudinizer Attiwendaronk attorn attorney attorneydom attorneyism attorneyship attornment attract attractability attractable attractableness attractant attracter attractile attractingly attraction attractionally attractive attractively attractiveness attractivity attractor attrahent attrap attributable attributal attribute attributer attribution attributive attributively attributiveness attrist attrite attrited attriteness attrition attritive attritus attune attunely attunement Atuami atule atumble atune atwain atweel atween atwin atwirl atwist atwitch atwitter atwixt atwo atypic atypical atypically atypy auantic aube aubepine Aubrey Aubrietia aubrietia aubrite auburn aubusson Auca auca Aucan Aucaner Aucanian Auchenia auchenia auchenium auchlet auction auctionary auctioneer auctorial Aucuba aucuba aucupate audacious audaciously audaciousness audacity Audaean Audian Audibertia audibility audible audibleness audibly audience audiencier audient audile audio audiogenic audiogram audiologist audiology audiometer audiometric audiometry Audion audion audiophile audiphone audit audition auditive auditor auditoria auditorial auditorially auditorily auditorium auditorship auditory auditress auditual audivise audiviser audivision Audrey Audubonistic Aueto auganite auge Augean augelite augen augend auger augerer augh aught aughtlins augite augitic augitite augitophyre augment augmentable augmentation augmentationer augmentative augmentatively augmented augmentedly augmenter augmentive augur augural augurate augurial augurous augurship augury August august Augusta augustal Augustan Augusti Augustin Augustinian Augustinianism Augustinism augustly augustness Augustus auh auhuhu Auk auk auklet aula aulacocarpous Aulacodus Aulacomniaceae Aulacomnium aulae aularian auld auldfarrantlike auletai aulete auletes auletic auletrides auletris aulic aulicism auloi aulophyte aulos Aulostoma Aulostomatidae Aulostomi aulostomid Aulostomidae Aulostomus aulu aum aumaga aumail aumbry aumery aumil aumildar aumous aumrie auncel aune Aunjetitz aunt aunthood auntie auntish auntlike auntly auntsary auntship aupaka aura aurae aural aurally auramine Aurantiaceae aurantiaceous Aurantium aurantium aurar aurate aurated aureate aureately aureateness aureation aureity Aurelia aurelia aurelian Aurelius Aureocasidium aureola aureole aureolin aureoline aureomycin aureous aureously auresca aureus auribromide auric aurichalcite aurichalcum aurichloride aurichlorohydric auricle auricled auricomous Auricula auricula auriculae auricular auriculare auriculares Auricularia auricularia Auriculariaceae auriculariae Auriculariales auricularian auricularis auricularly auriculate auriculated auriculately Auriculidae auriculocranial auriculoparietal auriculotemporal auriculoventricular auriculovertical auricyanhydric auricyanic auricyanide auride auriferous aurific aurification auriform aurify Auriga aurigal aurigation aurigerous Aurigid Aurignacian aurilave aurin aurinasal auriphone auriphrygia auriphrygiate auripuncture aurir auriscalp auriscalpia auriscalpium auriscope auriscopy aurist aurite aurivorous auroauric aurobromide aurochloride aurochs aurocyanide aurodiamine auronal aurophobia aurophore aurora aurorae auroral aurorally aurore aurorean Aurorian aurorium aurotellurite aurothiosulphate aurothiosulphuric aurous aurrescu aurulent aurum aurure auryl Aus auscult auscultascope auscultate auscultation auscultative auscultator auscultatory Auscultoscope auscultoscope Aushar auslaut auslaute Ausones Ausonian auspex auspicate auspice auspices auspicial auspicious auspiciously auspiciousness auspicy Aussie Austafrican austenite austenitic Auster austere austerely austereness austerity Austerlitz Austin Austral austral Australasian australene Australian Australianism Australianize Australic Australioid australite Australoid Australopithecinae australopithecine Australopithecus Australorp Austrasian Austrian Austrianize Austric austrium Austroasiatic Austrogaea Austrogaean austromancy Austronesian Austrophil Austrophile Austrophilism Austroriparian ausu ausubo autacoid autacoidal autallotriomorphic autantitypy autarch autarchic autarchical Autarchoglossa autarchy autarkic autarkical autarkist autarky aute autechoscope autecious auteciously auteciousness autecism autecologic autecological autecologically autecologist autecology autecy autem authentic authentical authentically authenticalness authenticate authentication authenticator authenticity authenticly authenticness authigene authigenetic authigenic authigenous author authorcraft authoress authorhood authorial authorially authorish authorism authoritarian authoritarianism authoritative authoritatively authoritativeness authority authorizable authorization authorize authorized authorizer authorless authorling authorly authorship authotype autism autist autistic auto autoabstract autoactivation autoactive autoaddress autoagglutinating autoagglutination autoagglutinin autoalarm autoalkylation autoallogamous autoallogamy autoanalysis autoanalytic autoantibody autoanticomplement autoantitoxin autoasphyxiation autoaspiration autoassimilation autobahn autobasidia Autobasidiomycetes autobasidiomycetous autobasidium Autobasisii autobiographal autobiographer autobiographic autobiographical autobiographically autobiographist autobiography autobiology autoblast autoboat autoboating autobolide autobus autocab autocade autocall autocamp autocamper autocamping autocar autocarist autocarpian autocarpic autocarpous autocatalepsy autocatalysis autocatalytic autocatalytically autocatalyze autocatheterism autocephalia autocephality autocephalous autocephaly autoceptive autochemical autocholecystectomy autochrome autochromy autochronograph autochthon autochthonal autochthonic autochthonism autochthonous autochthonously autochthonousness autochthony autocide autocinesis autoclasis autoclastic autoclave autocoenobium autocoherer autocoid autocollimation autocollimator autocolony autocombustible autocombustion autocomplexes autocondensation autoconduction autoconvection autoconverter autocopist autocoprophagous autocorrosion autocracy autocrat autocratic autocratical autocratically autocrator autocratoric autocratorical autocratrix autocratship autocremation autocriticism autocystoplasty autocytolysis autocytolytic autodecomposition autodepolymerization autodermic autodestruction autodetector autodiagnosis autodiagnostic autodiagrammatic autodidact autodidactic autodifferentiation autodiffusion autodigestion autodigestive autodrainage autodrome autodynamic autodyne autoecholalia autoecic autoecious autoeciously autoeciousness autoecism autoecous autoecy autoeducation autoeducative autoelectrolysis autoelectrolytic autoelectronic autoelevation autoepigraph autoepilation autoerotic autoerotically autoeroticism autoerotism autoexcitation autofecundation autofermentation autoformation autofrettage autogamic autogamous autogamy autogauge autogeneal autogenesis autogenetic autogenetically autogenic autogenous autogenously autogeny Autogiro autogiro autognosis autognostic autograft autografting autogram autograph autographal autographer autographic autographical autographically autographism autographist autographometer autography autogravure Autoharp autoharp autoheader autohemic autohemolysin autohemolysis autohemolytic autohemorrhage autohemotherapy autoheterodyne autoheterosis autohexaploid autohybridization autohypnosis autohypnotic autohypnotism autohypnotization autoicous autoignition autoimmunity autoimmunization autoinduction autoinductive autoinfection autoinfusion autoinhibited autoinoculable autoinoculation autointellectual autointoxicant autointoxication autoirrigation autoist autojigger autojuggernaut autokinesis autokinetic autokrator autolaryngoscope autolaryngoscopic autolaryngoscopy autolater autolatry autolavage autolesion autolimnetic autolith autoloading autological autologist autologous autology autoluminescence autoluminescent autolysate autolysin autolysis autolytic Autolytus autolyzate autolyze automa automacy automanual automat automata automatic automatical automatically automaticity automatin automatism automatist automatization automatize automatograph automaton automatonlike automatous automechanical automelon autometamorphosis autometric autometry automobile automobilism automobilist automobilistic automobility automolite automonstration automorph automorphic automorphically automorphism automotive automotor automower automysophobia autonegation autonephrectomy autonephrotoxin autoneurotoxin autonitridation autonoetic autonomasy autonomic autonomical autonomically autonomist autonomize autonomous autonomously autonomy autonym autoparasitism autopathic autopathography autopathy autopelagic autopepsia autophagi autophagia autophagous autophagy autophobia autophoby autophon autophone autophonoscope autophonous autophony autophotoelectric autophotograph autophotometry autophthalmoscope autophyllogeny autophyte autophytic autophytically autophytograph autophytography autopilot autoplagiarism autoplasmotherapy autoplast autoplastic autoplasty autopneumatic autopoint autopoisonous autopolar autopolo autopoloist autopolyploid autopore autoportrait autoportraiture autopositive autopotent autoprogressive autoproteolysis autoprothesis autopsic autopsical autopsy autopsychic autopsychoanalysis autopsychology autopsychorhythmia autopsychosis autoptic autoptical autoptically autopticity autopyotherapy autoracemization autoradiograph autoradiographic autoradiography autoreduction autoregenerator autoregulation autoreinfusion autoretardation autorhythmic autorhythmus autoriser autorotation autorrhaphy Autosauri Autosauria autoschediasm autoschediastic autoschediastical autoschediastically autoschediaze autoscience autoscope autoscopic autoscopy autosender autosensitization autosensitized autosepticemia autoserotherapy autoserum autosexing autosight autosign autosite autositic autoskeleton autosled autoslip autosomal autosomatognosis autosomatognostic autosome autosoteric autosoterism autospore autosporic autospray autostability autostage autostandardization autostarter autostethoscope autostylic autostylism autostyly autosuggestibility autosuggestible autosuggestion autosuggestionist autosuggestive autosuppression autosymbiontic autosymbolic autosymbolical autosymbolically autosymnoia Autosyn autosyndesis autotelegraph autotelic autotetraploid autotetraploidy autothaumaturgist autotheater autotheism autotheist autotherapeutic autotherapy autothermy autotomic autotomize autotomous autotomy autotoxaemia autotoxic autotoxication autotoxicity autotoxicosis autotoxin autotoxis autotractor autotransformer autotransfusion autotransplant autotransplantation autotrepanation autotriploid autotriploidy autotroph autotrophic autotrophy autotropic autotropically autotropism autotruck autotuberculin autoturning autotype autotyphization autotypic autotypography autotypy autourine autovaccination autovaccine autovalet autovalve autovivisection autoxeny autoxidation autoxidator autoxidizability autoxidizable autoxidize autoxidizer autozooid autrefois autumn autumnal autumnally autumnian autumnity Autunian autunite auxamylase auxanogram auxanology auxanometer auxesis auxetic auxetical auxetically auxiliar auxiliarly auxiliary auxiliate auxiliation auxiliator auxiliatory auxilium auximone auxin auxinic auxinically auxoaction auxoamylase auxoblast auxobody auxocardia auxochrome auxochromic auxochromism auxochromous auxocyte auxoflore auxofluor auxograph auxographic auxohormone auxology auxometer auxospore auxosubstance auxotonic auxotox ava avadana avadavat avadhuta avahi avail availability available availableness availably availingly availment aval avalanche avalent avalvular Avanguardisti avania avanious Avanti avanturine Avar Avaradrano avaremotemo Avarian avarice avaricious avariciously avariciousness Avarish Avars avascular avast avaunt Ave ave avellan avellane avellaneous avellano avelonge aveloz Avena avenaceous avenage avenalin avener avenge avengeful avengement avenger avengeress avenging avengingly avenin avenolith avenous avens aventail Aventine aventurine avenue aver avera average averagely averager averah averil averin averment Avernal Avernus averrable averral Averrhoa Averroism Averroist Averroistic averruncate averruncation averruncator aversant aversation averse aversely averseness aversion aversive avert avertable averted avertedly averter avertible Avertin Aves Avesta Avestan avian avianization avianize aviarist aviary aviate aviatic aviation aviator aviatorial aviatoriality aviatory aviatress aviatrices aviatrix Avicennia Avicenniaceae Avicennism avichi avicide avick avicolous Avicula avicular Avicularia avicularia avicularian Aviculariidae Avicularimorphae avicularium Aviculidae aviculture aviculturist avid avidious avidiously avidity avidly avidous avidya avifauna avifaunal avigate avigation avigator Avignonese avijja Avikom avine aviolite avirulence avirulent Avis aviso avital avitaminosis avitaminotic avitic avives avizandum avo avocado avocate avocation avocative avocatory avocet avodire avogadrite avoid avoidable avoidably avoidance avoider avoidless avoidment avoirdupois avolate avolation avolitional avondbloem avouch avouchable avoucher avouchment avourneen avow avowable avowableness avowably avowal avowance avowant avowed avowedly avowedness avower avowry avoyer avoyership Avshar avulse avulsion avuncular avunculate aw awa Awabakal awabi Awadhi awaft awag await awaiter Awaitlala awakable awake awaken awakenable awakener awakening awakeningly awakenment awald awalim awalt Awan awane awanting awapuhi award awardable awarder awardment aware awaredom awareness awaruite awash awaste awat awatch awater awave away awayness awber awd awe awearied aweary aweather aweband awedness awee aweek aweel aweigh Awellimiden awesome awesomely awesomeness awest aweto awfu awful awfully awfulness awheel awheft awhet awhile awhir awhirl awide awiggle awikiwiki awin awing awink awiwi awkward awkwardish awkwardly awkwardness awl awless awlessness awlwort awmous awn awned awner awning awninged awnless awnlike awny awoke Awol awork awreck awrist awrong awry Awshar ax axal axbreaker axe axed axenic axes axfetch axhammer axhammered axhead axial axiality axially axiate axiation Axifera axiform axifugal axil axile axilemma axilemmata axilla axillae axillant axillar axillary axine axinite axinomancy axiolite axiolitic axiological axiologically axiologist axiology axiom axiomatic axiomatical axiomatically axiomatization axiomatize axion axiopisty Axis axis axised axisymmetric axisymmetrical axite axle axled axlesmith axletree axmaker axmaking axman axmanship axmaster Axminster axodendrite axofugal axogamy axoid axoidean axolemma axolotl axolysis axometer axometric axometry axon axonal axoneure axoneuron Axonia Axonolipa axonolipous axonometric axonometry Axonophora axonophorous Axonopus axonost axopetal axophyte axoplasm axopodia axopodium axospermous axostyle axseed axstone axtree Axumite axunge axweed axwise axwort Ay ay ayacahuite ayah Ayahuca Aydendron aye ayegreen ayelp ayenbite ayin Aylesbury ayless aylet ayllu Aymara Aymaran Aymoro ayond ayont ayous Ayrshire Aythya ayu Ayubite Ayyubid azadrachta azafrin Azalea azalea Azande azarole azedarach azelaic azelate Azelfafage azeotrope azeotropic azeotropism azeotropy Azerbaijanese Azerbaijani Azerbaijanian Azha azide aziethane Azilian azilut Azimech azimene azimethylene azimide azimine azimino aziminobenzene azimuth azimuthal azimuthally azine aziola azlactone azo azobacter azobenzene azobenzil azobenzoic azobenzol azoblack azoch azocochineal azocoralline azocorinth azocyanide azocyclic azodicarboxylic azodiphenyl azodisulphonic azoeosin azoerythrin azofication azofier azoflavine azoformamide azoformic azofy azogallein azogreen azogrenadine azohumic azoic azoimide azoisobutyronitrile azole azolitmin Azolla azomethine azon azonal azonaphthalene azonic azonium azoospermia azoparaffin azophen azophenetole azophenine azophenol azophenyl azophenylene azophosphin azophosphore azoprotein Azorian azorite azorubine azosulphine azosulphonic azotate azote azoted azotemia azotenesis azotetrazole azoth azothionium azotic azotine azotite azotize Azotobacter Azotobacterieae azotoluene azotometer azotorrhoea azotous azoturia azovernine azox azoxazole azoxime azoxine azoxonium azoxy azoxyanisole azoxybenzene azoxybenzoic azoxynaphthalene azoxyphenetole azoxytoluidine Aztec Azteca azteca Aztecan azthionium azulene azulite azulmic azumbre azure azurean azured azureous azurine azurite azurmalachite azurous azury Azygobranchia Azygobranchiata azygobranchiate azygomatous azygos azygosperm azygospore azygous azyme azymite azymous B b ba baa baahling Baal baal Baalath Baalish Baalism Baalist Baalite Baalitical Baalize Baalshem baar Bab baba babacoote babai babasco babassu babaylan Babbie Babbitt babbitt babbitter Babbittess Babbittian Babbittism Babbittry babblative babble babblement babbler babblesome babbling babblingly babblish babblishly babbly babby Babcock babe babehood Babel Babeldom babelet Babelic babelike Babelish Babelism Babelize babery babeship Babesia babesiasis Babhan Babi Babiana babiche babied Babiism babillard Babine babingtonite babirusa babish babished babishly babishness Babism Babist Babite bablah babloh baboen Babongo baboo baboodom babooism baboon baboonery baboonish baboonroot baboot babouche Babouvism Babouvist babroot Babs babu Babua babudom babuina babuism babul Babuma Babungera babushka baby babydom babyfied babyhood babyhouse babyish babyishly babyishness babyism babylike Babylon Babylonian Babylonic Babylonish Babylonism Babylonite Babylonize babyolatry babyship bac bacaba bacach bacalao bacao bacbakiri bacca baccaceous baccae baccalaurean baccalaureate baccara baccarat baccate baccated Bacchae bacchanal Bacchanalia bacchanalian bacchanalianism bacchanalianly bacchanalism bacchanalization bacchanalize bacchant bacchante bacchantes bacchantic bacchar baccharis baccharoid baccheion bacchiac bacchian Bacchic bacchic Bacchical Bacchides bacchii bacchius Bacchus Bacchuslike bacciferous bacciform baccivorous bach Bacharach bache bachel bachelor bachelordom bachelorhood bachelorism bachelorize bachelorlike bachelorly bachelorship bachelorwise bachelry Bachichi Bacillaceae bacillar Bacillariaceae bacillariaceous Bacillariales Bacillarieae Bacillariophyta bacillary bacillemia bacilli bacillian bacillicidal bacillicide bacillicidic bacilliculture bacilliform bacilligenic bacilliparous bacillite bacillogenic bacillogenous bacillophobia bacillosis bacilluria bacillus Bacis bacitracin back backache backaching backachy backage backband backbearing backbencher backbite backbiter backbitingly backblow backboard backbone backboned backboneless backbonelessness backbrand backbreaker backbreaking backcap backcast backchain backchat backcourt backcross backdoor backdown backdrop backed backen backer backet backfall backfatter backfield backfill backfiller backfilling backfire backfiring backflap backflash backflow backfold backframe backfriend backfurrow backgame backgammon background backhand backhanded backhandedly backhandedness backhander backhatch backheel backhooker backhouse backie backiebird backing backjaw backjoint backlands backlash backlashing backless backlet backlings backlog backlotter backmost backpedal backpiece backplate backrope backrun backsaw backscraper backset backsetting backsettler backshift backside backsight backslap backslapper backslapping backslide backslider backslidingness backspace backspacer backspang backspier backspierer backspin backspread backspringing backstaff backstage backstamp backstay backster backstick backstitch backstone backstop backstrap backstretch backstring backstrip backstroke backstromite backswept backswing backsword backswording backswordman backswordsman backtack backtender backtenter backtrack backtracker backtrick backup backveld backvelder backwall backward backwardation backwardly backwardness backwards backwash backwasher backwashing backwater backwatered backway backwood backwoods backwoodsiness backwoodsman backwoodsy backword backworm backwort backyarder baclin bacon baconer Baconian Baconianism Baconic Baconism Baconist baconize baconweed bacony Bacopa bacteremia bacteria Bacteriaceae bacteriaceous bacterial bacterially bacterian bacteric bactericholia bactericidal bactericide bactericidin bacterid bacteriemia bacteriform bacterin bacterioagglutinin bacterioblast bacteriocyte bacteriodiagnosis bacteriofluorescin bacteriogenic bacteriogenous bacteriohemolysin bacterioid bacterioidal bacteriologic bacteriological bacteriologically bacteriologist bacteriology bacteriolysin bacteriolysis bacteriolytic bacteriolyze bacteriopathology bacteriophage bacteriophagia bacteriophagic bacteriophagous bacteriophagy bacteriophobia bacterioprecipitin bacterioprotein bacteriopsonic bacteriopsonin bacteriopurpurin bacterioscopic bacterioscopical bacterioscopically bacterioscopist bacterioscopy bacteriosis bacteriosolvent bacteriostasis bacteriostat bacteriostatic bacteriotherapeutic bacteriotherapy bacteriotoxic bacteriotoxin bacteriotropic bacteriotropin bacteriotrypsin bacterious bacteritic bacterium bacteriuria bacterization bacterize bacteroid bacteroidal Bacteroideae Bacteroides Bactrian Bactris Bactrites bactriticone bactritoid bacula bacule baculi baculiferous baculiform baculine baculite Baculites baculitic baculiticone baculoid baculum baculus bacury bad Badaga badan Badarian badarrah Badawi baddeleyite badderlocks baddish baddishly baddishness baddock bade badenite badge badgeless badgeman badger badgerbrush badgerer badgeringly badgerlike badgerly badgerweed badiaga badian badigeon badinage badious badland badlands badly badminton badness Badon Baduhenna bae Baedeker Baedekerian Baeria baetuli baetulus baetyl baetylic baetylus baetzner bafaro baff baffeta baffle bafflement baffler baffling bafflingly bafflingness baffy baft bafta Bafyot bag baga Baganda bagani bagasse bagataway bagatelle bagatine bagattini bagattino Bagaudae Bagdad Bagdi bagel bagful baggage baggageman baggagemaster baggager baggala bagganet Baggara bagged bagger baggie baggily bagginess bagging baggit baggy Bagheli baghouse Baginda Bagirmi bagleaves baglike bagmaker bagmaking bagman bagnio bagnut bago Bagobo bagonet bagpipe bagpiper bagpipes bagplant bagrationite bagre bagreef bagroom baguette bagwig bagwigged bagworm bagwyn bah Bahai Bahaism Bahaist Baham Bahama Bahamian bahan bahar Bahaullah bahawder bahay bahera bahiaite Bahima bahisti Bahmani Bahmanid bahnung baho bahoe bahoo baht Bahuma bahur bahut Bahutu bahuvrihi Baianism baidarka Baidya Baiera baiginet baignet baikalite baikerinite baikerite baikie bail bailable bailage bailee bailer bailey bailie bailiery bailieship bailiff bailiffry bailiffship bailiwick bailliage baillone Baillonella bailment bailor bailpiece bailsman bailwood bain bainie Baining baioc baiocchi baiocco bairagi Bairam bairn bairnie bairnish bairnishness bairnliness bairnly bairnteam bairntime bairnwort Bais Baisakh baister bait baiter baith baittle baitylos baize bajada bajan Bajardo bajarigar Bajau Bajocian bajra bajree bajri bajury baka Bakairi bakal Bakalai Bakalei Bakatan bake bakeboard baked bakehouse Bakelite bakelite bakelize baken bakeoven bakepan baker bakerdom bakeress bakerite bakerless bakerly bakership bakery bakeshop bakestone Bakhtiari bakie baking bakingly bakli Bakongo Bakshaish baksheesh baktun Baku baku Bakuba bakula Bakunda Bakuninism Bakuninist bakupari Bakutu Bakwiri Bal bal Bala Balaam Balaamite Balaamitical balachong balaclava baladine Balaena Balaenicipites balaenid Balaenidae balaenoid Balaenoidea balaenoidean Balaenoptera Balaenopteridae balafo balagan balaghat balai Balaic Balak Balaklava balalaika Balan balance balanceable balanced balancedness balancelle balanceman balancement balancer balancewise balancing balander balandra balandrana balaneutics balangay balanic balanid Balanidae balaniferous balanism balanite Balanites balanitis balanoblennorrhea balanocele Balanoglossida Balanoglossus balanoid Balanophora Balanophoraceae balanophoraceous balanophore balanophorin balanoplasty balanoposthitis balanopreputial Balanops Balanopsidaceae Balanopsidales balanorrhagia Balanta Balante balantidial balantidiasis balantidic balantidiosis Balantidium Balanus Balao balao Balarama balas balata balatong balatron balatronic balausta balaustine balaustre Balawa Balawu balboa balbriggan balbutiate balbutient balbuties balconet balconied balcony bald baldachin baldachined baldachini baldachino baldberry baldcrown balden balder balderdash baldhead baldicoot Baldie baldish baldling baldly baldmoney baldness baldpate baldrib baldric baldricked baldricwise balductum Baldwin baldy bale Balearian Balearic Balearica baleen balefire baleful balefully balefulness balei baleise baleless baler balete Bali bali balibago Balija Balilla baline Balinese balinger balinghasay balisaur balistarius Balistes balistid Balistidae balistraria balita balk Balkan Balkanic Balkanization Balkanize Balkar balker balkingly Balkis balky ball ballad ballade balladeer ballader balladeroyal balladic balladical balladier balladism balladist balladize balladlike balladling balladmonger balladmongering balladry balladwise ballahoo ballam ballan ballant ballast ballastage ballaster ballasting ballata ballate ballatoon balldom balled baller ballerina ballet balletic balletomane Ballhausplatz balli ballist ballista ballistae ballistic ballistically ballistician ballistics Ballistite ballistocardiograph ballium ballmine ballogan ballonet balloon balloonation ballooner balloonery balloonet balloonfish balloonflower balloonful ballooning balloonish balloonist balloonlike ballot Ballota ballotade ballotage balloter balloting ballotist ballottement ballow Ballplatz ballplayer ballproof ballroom ballstock ballup ballweed bally ballyhack ballyhoo ballyhooer ballywack ballywrack balm balmacaan Balmarcodes Balmawhapple balmily balminess balmlike balmony Balmoral balmy balneal balneary balneation balneatory balneographer balneography balneologic balneological balneologist balneology balneophysiology balneotechnics balneotherapeutics balneotherapia balneotherapy Balnibarbi Baloch Baloghia Balolo balonea baloney baloo Balopticon Balor Baloskion Baloskionaceae balow balsa balsam balsamation Balsamea Balsameaceae balsameaceous balsamer balsamic balsamical balsamically balsamiferous balsamina Balsaminaceae balsaminaceous balsamine balsamitic balsamiticness balsamize balsamo Balsamodendron Balsamorrhiza balsamous balsamroot balsamum balsamweed balsamy Balt baltei balter balteus Balthasar Balti Baltic Baltimore Baltimorean baltimorite Baltis balu Baluba Baluch Baluchi Baluchistan baluchithere baluchitheria Baluchitherium baluchitherium Baluga Balunda balushai baluster balustered balustrade balustraded balustrading balut balwarra balza Balzacian balzarine bam Bamalip Bamangwato bamban Bambara bambini bambino bambocciade bamboo bamboozle bamboozlement bamboozler Bambos bamboula Bambuba Bambusa Bambuseae Bambute bamoth Ban ban Bana banaba banago banak banakite banal banality banally banana Bananaland Bananalander Banande bananist bananivorous banat Banate banatite banausic Banba Banbury banc banca bancal banchi banco bancus band Banda banda bandage bandager bandagist bandaite bandaka bandala bandalore bandanna bandannaed bandar bandarlog bandbox bandboxical bandboxy bandcase bandcutter bande bandeau banded bandelet bander Banderma banderole bandersnatch bandfish bandhava bandhook Bandhor bandhu bandi bandicoot bandicoy bandie bandikai bandiness banding bandit banditism banditry banditti bandle bandless bandlessly bandlessness bandlet bandman bandmaster bando bandog bandoleer bandoleered bandoline bandonion Bandor bandore bandrol bandsman bandstand bandster bandstring Bandusia Bandusian bandwork bandy bandyball bandyman bane baneberry baneful banefully banefulness banewort Banff bang banga Bangala bangalay bangalow Bangash bangboard bange banger banghy Bangia Bangiaceae bangiaceous Bangiales banging bangkok bangle bangled bangling bangster bangtail Bangwaketsi bani banian banig banilad banish banisher banishment banister Baniva baniwa baniya banjo banjoist banjore banjorine banjuke bank bankable Bankalachi bankbook banked banker bankera bankerdom bankeress banket bankfull banking bankman bankrider bankrupt bankruptcy bankruptism bankruptlike bankruptly bankruptship bankrupture bankshall Banksia Banksian bankside banksman bankweed banky banner bannered bannerer banneret bannerfish bannerless bannerlike bannerman bannerol bannerwise bannet banning bannister Bannock bannock Bannockburn banns bannut banovina banquet banqueteer banqueteering banqueter banquette bansalague banshee banstickle bant Bantam bantam bantamize bantamweight bantay bantayan banteng banter banterer banteringly bantery Bantingism bantingize bantling Bantoid Bantu banty banuyo banxring banya Banyai banyan Banyoro Banyuls banzai baobab bap Baphia Baphomet Baphometic Baptanodon Baptisia baptisin baptism baptismal baptismally Baptist baptistery baptistic baptizable baptize baptizee baptizement baptizer Baptornis bar bara barabara barabora Barabra Baraca barad baragnosis baragouin baragouinish Baraithas barajillo Baralipton Baramika barandos barangay barasingha barathea barathra barathrum barauna barb Barbacoa Barbacoan barbacou Barbadian Barbados barbal barbaloin Barbara barbaralalia Barbarea barbaresque Barbarian barbarian barbarianism barbarianize barbaric barbarical barbarically barbarious barbariousness barbarism barbarity barbarization barbarize barbarous barbarously barbarousness Barbary barbary barbas barbasco barbastel barbate barbated barbatimao barbe barbecue barbed barbeiro barbel barbellate barbellula barbellulate barber barberess barberfish barberish barberry barbershop barbet barbette Barbeyaceae barbican barbicel barbigerous barbion barbital barbitalism barbiton barbitone barbitos barbiturate barbituric barbless barblet barbone barbotine barbudo Barbula barbulate barbule barbulyie barbwire Barcan barcarole barcella barcelona Barcoo bard bardane bardash bardcraft bardel Bardesanism Bardesanist Bardesanite bardess bardic bardie bardiglio bardily bardiness barding bardish bardism bardlet bardlike bardling bardo Bardolater Bardolatry Bardolph Bardolphian bardship Bardulph bardy Bare bare bareback barebacked bareboat barebone bareboned bareca barefaced barefacedly barefacedness barefit barefoot barefooted barehanded barehead bareheaded bareheadedness barelegged barely barenecked bareness barer baresark baresma baretta barff barfish barfly barful bargain bargainee bargainer bargainor bargainwise bargander barge bargeboard bargee bargeer bargeese bargehouse bargelike bargeload bargeman bargemaster barger bargh bargham barghest bargoose Bari bari baria baric barid barie barile barilla baring baris barish barit barite baritone barium bark barkbound barkcutter barkeeper barken barkentine barker barkery barkevikite barkevikitic barkey barkhan barking barkingly Barkinji barkle barkless barklyite barkometer barkpeel barkpeeler barkpeeling barksome barky barlafumble barlafummil barless barley barleybird barleybreak barleycorn barleyhood barleymow barleysick barling barlock barlow barm barmaid barman barmaster barmbrack barmcloth Barmecidal Barmecide barmkin barmote barmskin barmy barmybrained barn Barnabas Barnabite Barnaby barnacle Barnard barnard barnbrack Barnburner Barney barney barnful barnhardtite barnman barnstorm barnstormer barnstorming Barnumism Barnumize barny barnyard Baroco barocyclonometer barodynamic barodynamics barognosis barogram barograph barographic baroi barolo barology Barolong barometer barometric barometrical barometrically barometrograph barometrography barometry barometz baromotor baron baronage baroness baronet baronetage baronetcy baronethood baronetical baronetship barong Baronga baronial baronize baronry baronship barony Baroque baroque baroscope baroscopic baroscopical Barosma barosmin barotactic barotaxis barotaxy barothermograph barothermohygrograph baroto Barotse barouche barouchet Barouni baroxyton barpost barquantine barra barrabkie barrable barrabora barracan barrack barracker barraclade barracoon barracouta barracuda barrad barragan barrage barragon barramunda barramundi barranca barrandite barras barrator barratrous barratrously barratry barred barrel barrelage barreled barreler barrelet barrelful barrelhead barrelmaker barrelmaking barrelwise barren barrenly barrenness barrenwort barrer barret barrette barretter barricade barricader barricado barrico barrier barriguda barrigudo barrikin barriness barring Barrington Barringtonia barrio barrister barristerial barristership barristress barroom barrow barrowful Barrowist barrowman barrulee barrulet barrulety barruly barry Barsac barse barsom Bart bartender bartending barter barterer barth barthite bartholinitis Bartholomean Bartholomew Bartholomewtide Bartholomite bartizan bartizaned Bartlemy Bartlett barton Bartonella Bartonia Bartram Bartramia Bartramiaceae Bartramian Bartsia baru Baruch Barundi baruria barvel barwal barway barways barwise barwood barycenter barycentric barye baryecoia baryglossia barylalia barylite baryphonia baryphonic baryphony barysilite barysphere baryta barytes barythymia barytic barytine barytocalcite barytocelestine barytocelestite baryton barytone barytophyllite barytostrontianite barytosulphate bas basal basale basalia basally basalt basaltes basaltic basaltiform basaltine basaltoid basanite basaree Bascology bascule base baseball baseballdom baseballer baseboard baseborn basebred based basehearted baseheartedness baselard baseless baselessly baselessness baselike baseliner Basella Basellaceae basellaceous basely baseman basement basementward baseness basenji bases bash bashaw bashawdom bashawism bashawship bashful bashfully bashfulness Bashilange Bashkir bashlyk Bashmuric basial basialveolar basiarachnitis basiarachnoiditis basiate basiation Basibracteolate basibranchial basibranchiate basibregmatic basic basically basichromatic basichromatin basichromatinic basichromiole basicity basicranial basicytoparaplastin basidia basidial basidigital basidigitale basidiogenetic basidiolichen Basidiolichenes basidiomycete Basidiomycetes basidiomycetous basidiophore basidiospore basidiosporous basidium basidorsal basifacial basification basifier basifixed basifugal basify basigamous basigamy basigenic basigenous basiglandular basigynium basihyal basihyoid Basil basil basilar Basilarchia basilary basilateral basilemma basileus Basilian basilic Basilica basilica Basilicae basilical basilican basilicate basilicon Basilics Basilidian Basilidianism basilinna basiliscan basiliscine Basiliscus basilisk basilissa Basilosauridae Basilosaurus basilweed basilysis basilyst basimesostasis basin basinasal basinasial basined basinerved basinet basinlike basioccipital basion basiophitic basiophthalmite basiophthalmous basiotribe basiotripsy basiparachromatin basiparaplastin basipetal basiphobia basipodite basipoditic basipterygial basipterygium basipterygoid basiradial basirhinal basirostral basis basiscopic basisphenoid basisphenoidal basitemporal basiventral basivertebral bask basker Baskerville basket basketball basketballer basketful basketing basketmaker basketmaking basketry basketware basketwoman basketwood basketwork basketworm Baskish Baskonize Basoche Basoga basoid Basoko Basommatophora basommatophorous bason Basongo basophile basophilia basophilic basophilous basophobia basos basote Basque basque basqued basquine bass Bassa Bassalia Bassalian bassan bassanello bassanite bassara bassarid Bassaris Bassariscus bassarisk basset bassetite bassetta Bassia bassie bassine bassinet bassist bassness basso bassoon bassoonist bassorin bassus basswood Bast bast basta Bastaard Bastard bastard bastardism bastardization bastardize bastardliness bastardly bastardy baste basten baster bastide bastille bastinade bastinado basting bastion bastionary bastioned bastionet bastite bastnasite basto baston basurale Basuto Bat bat bataan batad Batak batakan bataleur Batan batara batata Batatas batatilla Batavi Batavian batch batcher bate batea bateau bateaux bated Batekes batel bateman batement bater Batetela batfish batfowl batfowler batfowling Bath bath Bathala bathe batheable bather bathetic bathflower bathhouse bathic bathing bathless bathman bathmic bathmism bathmotropic bathmotropism bathochromatic bathochromatism bathochrome bathochromic bathochromy bathoflore bathofloric batholite batholith batholithic batholitic bathometer Bathonian bathophobia bathorse bathos bathrobe bathroom bathroomed bathroot bathtub bathukolpian bathukolpic bathvillite bathwort bathyal bathyanesthesia bathybian bathybic bathybius bathycentesis bathychrome bathycolpian bathycolpic bathycurrent bathyesthesia bathygraphic bathyhyperesthesia bathyhypesthesia bathylimnetic bathylite bathylith bathylithic bathylitic bathymeter bathymetric bathymetrical bathymetrically bathymetry bathyorographical bathypelagic bathyplankton bathyseism bathysmal bathysophic bathysophical bathysphere bathythermograph Batidaceae batidaceous batik batiker batikulin batikuling bating batino Batis batiste batitinan batlan batlike batling batlon batman Batocrinidae Batocrinus Batodendron batoid Batoidei Batoka baton Batonga batonistic batonne batophobia Batrachia batrachian batrachiate Batrachidae Batrachium batrachoid Batrachoididae batrachophagous Batrachophidia batrachophobia batrachoplasty Batrachospermum bats batsman batsmanship batster batswing batt Batta batta battailous Battak Battakhin battalia battalion battarism battarismus battel batteler batten battener battening batter batterable battercake batterdock battered batterer batterfang batteried batterman battery batteryman battik batting battish battle battled battledore battlefield battleful battleground battlement battlemented battleplane battler battleship battlesome battlestead battlewagon battleward battlewise battological battologist battologize battology battue batty batukite batule Batussi Batwa batwing batyphone batz batzen bauble baublery baubling Baubo bauch bauchle bauckie bauckiebird baud baudekin baudrons Bauera Bauhinia baul bauleah Baume baumhauerite baun bauno Baure bauson bausond bauta bauxite bauxitite Bavarian bavaroy bavary bavenite baviaantje Bavian bavian baviere bavin Bavius bavoso baw bawarchi bawbee bawcock bawd bawdily bawdiness bawdry bawdship bawdyhouse bawl bawler bawley bawn Bawra bawtie baxter Baxterian Baxterianism baxtone bay Baya baya bayadere bayal bayamo Bayard bayard bayardly bayberry baybolt baybush baycuru bayed bayeta baygall bayhead bayish bayldonite baylet baylike bayman bayness Bayogoula bayok bayonet bayoneted bayoneteer bayou baywood bazaar baze Bazigar bazoo bazooka bazzite bdellid Bdellidae bdellium bdelloid Bdelloida Bdellostoma Bdellostomatidae Bdellostomidae bdellotomy Bdelloura Bdellouridae be beach beachcomb beachcomber beachcombing beached beachhead beachlamar beachless beachman beachmaster beachward beachy beacon beaconage beaconless beaconwise bead beaded beader beadflush beadhouse beadily beadiness beading beadle beadledom beadlehood beadleism beadlery beadleship beadlet beadlike beadman beadroll beadrow beadsman beadswoman beadwork beady Beagle beagle beagling beak beaked beaker beakerful beakerman beakermen beakful beakhead beakiron beaklike beaky beal beala bealing beallach bealtared Bealtine Bealtuinn beam beamage beambird beamed beamer beamfilling beamful beamhouse beamily beaminess beaming beamingly beamish beamless beamlet beamlike beamman beamsman beamster beamwork beamy bean beanbag beanbags beancod beanery beanfeast beanfeaster beanfield beanie beano beansetter beanshooter beanstalk beant beanweed beany beaproned bear bearable bearableness bearably bearance bearbaiter bearbaiting bearbane bearberry bearbind bearbine bearcoot beard bearded bearder beardie bearding beardless beardlessness beardom beardtongue beardy bearer bearess bearfoot bearherd bearhide bearhound bearing bearish bearishly bearishness bearlet bearlike bearm bearship bearskin beartongue bearward bearwood bearwort beast beastbane beastdom beasthood beastie beastily beastish beastishness beastlike beastlily beastliness beastling beastlings beastly beastman beastship beat Beata beata beatable beatae beatee beaten beater beaterman beath beatific beatifical beatifically beatificate beatification beatify beatinest beating beatitude Beatrice Beatrix beatster beatus beau Beauclerc beaufin Beaufort beauish beauism Beaujolais Beaumontia Beaune beaupere beauseant beauship beauteous beauteously beauteousness beauti beautician beautied beautification beautifier beautiful beautifully beautifulness beautify beautihood beauty beautydom beautyship beaux beaver Beaverboard beaverboard beavered beaverette beaverish beaverism beaverite beaverize Beaverkill beaverkin beaverlike beaverpelt beaverroot beaverteen beaverwood beavery beback bebait beballed bebang bebannered bebar bebaron bebaste bebat bebathe bebatter bebay bebeast bebed bebeerine bebeeru bebelted bebilya bebite bebization beblain beblear bebled bebless beblister beblood bebloom beblotch beblubber bebog bebop beboss bebotch bebothered bebouldered bebrave bebreech bebrine bebrother bebrush bebump bebusy bebuttoned becall becalm becalmment becap becard becarpet becarve becassocked becater because beccafico becense bechained bechalk bechance becharm bechase bechatter bechauffeur becheck becher bechern bechignoned bechirp Bechtler Bechuana becircled becivet Beck beck beckelite becker becket beckiron beckon beckoner beckoning beckoningly Becky beclad beclamor beclamour beclang beclart beclasp beclatter beclaw becloak beclog beclothe becloud beclout beclown becluster becobweb becoiffed becollier becolme becolor becombed become becomes becoming becomingly becomingness becomma becompass becompliment becoom becoresh becost becousined becovet becoward becquerelite becram becramp becrampon becrawl becreep becrime becrimson becrinolined becripple becroak becross becrowd becrown becrush becrust becry becudgel becuffed becuiba becumber becuna becurl becurry becurse becurtained becushioned becut bed bedabble bedad bedaggered bedamn bedamp bedangled bedare bedark bedarken bedash bedaub bedawn beday bedaze bedazement bedazzle bedazzlement bedazzling bedazzlingly bedboard bedbug bedcap bedcase bedchair bedchamber bedclothes bedcord bedcover bedded bedder bedding bedead bedeaf bedeafen bedebt bedeck bedecorate bedeguar bedel beden bedene bedesman bedevil bedevilment bedew bedewer bedewoman bedfast bedfellow bedfellowship bedflower bedfoot Bedford bedframe bedgery bedgoer bedgown bediademed bediamonded bediaper bedight bedikah bedim bedimple bedin bedip bedirt bedirter bedirty bedismal bedizen bedizenment bedkey bedlam bedlamer Bedlamic bedlamism bedlamite bedlamitish bedlamize bedlar bedless bedlids bedmaker bedmaking bedman bedmate bedoctor bedog bedolt bedot bedote Bedouin Bedouinism bedouse bedown bedoyo bedpan bedplate bedpost bedquilt bedrabble bedraggle bedragglement bedrail bedral bedrape bedravel bedrench bedress bedribble bedrid bedridden bedriddenness bedrift bedright bedrip bedrivel bedrizzle bedrock bedroll bedroom bedrop bedrown bedrowse bedrug bedscrew bedsick bedside bedsite bedsock bedsore bedspread bedspring bedstaff bedstand bedstaves bedstead bedstock bedstraw bedstring bedtick bedticking bedtime bedub beduchess beduck beduke bedull bedumb bedunce bedunch bedung bedur bedusk bedust bedwarf bedway bedways bedwell bedye Bee bee beearn beebread beech beechdrops beechen beechnut beechwood beechwoods beechy beedged beedom beef beefeater beefer beefhead beefheaded beefily beefin beefiness beefish beefishness beefless beeflower beefsteak beeftongue beefwood beefy beegerite beehead beeheaded beeherd beehive beehouse beeish beeishness beek beekeeper beekeeping beekite Beekmantown beelbow beelike beeline beelol Beelzebub Beelzebubian Beelzebul beeman beemaster been beennut beer beerage beerbachite beerbibber beerhouse beerily beeriness beerish beerishly beermaker beermaking beermonger beerocracy Beerothite beerpull beery bees beest beestings beeswax beeswing beeswinged beet beeth Beethovenian Beethovenish Beethovian beetle beetled beetlehead beetleheaded beetler beetlestock beetlestone beetleweed beetmister beetrave beetroot beetrooty beety beeve beevish beeware beeway beeweed beewise beewort befall befame befamilied befamine befan befancy befanned befathered befavor befavour befeather beferned befetished befetter befezzed befiddle befilch befile befilleted befilmed befilth befinger befire befist befit befitting befittingly befittingness beflag beflannel beflap beflatter beflea befleck beflounce beflour beflout beflower beflum befluster befoam befog befool befoolment befop before beforehand beforeness beforested beforetime beforetimes befortune befoul befouler befoulment befountained befraught befreckle befreeze befreight befret befriend befriender befriendment befrill befringe befriz befrocked befrogged befrounce befrumple befuddle befuddlement befuddler befume befurbelowed befurred beg begabled begad begall begani begar begari begarlanded begarnish begartered begash begat begaud begaudy begay begaze begeck begem beget begettal begetter beggable beggar beggardom beggarer beggaress beggarhood beggarism beggarlike beggarliness beggarly beggarman beggarweed beggarwise beggarwoman beggary Beggiatoa Beggiatoaceae beggiatoaceous begging beggingly beggingwise Beghard begift begiggle begild begin beginger beginner beginning begird begirdle beglad beglamour beglare beglerbeg beglerbeglic beglerbegluc beglerbegship beglerbey beglic beglide beglitter beglobed begloom begloze begluc beglue begnaw bego begob begobs begoggled begohm begone begonia Begoniaceae begoniaceous Begoniales begorra begorry begotten begottenness begoud begowk begowned begrace begrain begrave begray begrease begreen begrett begrim begrime begrimer begroan begrown begrudge begrudgingly begruntle begrutch begrutten beguard beguess beguile beguileful beguilement beguiler beguiling beguilingly Beguin Beguine beguine begulf begum begun begunk begut behale behalf behallow behammer behap behatted behave behavior behavioral behaviored behaviorism behaviorist behavioristic behavioristically behead beheadal beheader beheadlined behear behears behearse behedge beheld behelp behemoth behen behenate behenic behest behind behinder behindhand behindsight behint behn behold beholdable beholden beholder beholding beholdingness behoney behoof behooped behoot behoove behooveful behoovefully behoovefulness behooves behooving behoovingly behorn behorror behowl behung behusband behymn behypocrite beice Beid beige being beingless beingness beinked beira beisa Beja bejabers bejade bejan bejant bejaundice bejazz bejel bejewel bejezebel bejig bejuggle bejumble bekah bekerchief bekick bekilted beking bekinkinite bekiss bekko beknave beknight beknit beknived beknotted beknottedly beknottedness beknow beknown Bel bel bela belabor belaced beladle belady belage belah Belait Belaites belam Belamcanda belanda belar belard belash belate belated belatedly belatedness belatticed belaud belauder belavendered belay belayer belch belcher beld beldam beldamship belderroot belduque beleaf beleaguer beleaguerer beleaguerment beleap beleave belecture beledgered belee belemnid belemnite Belemnites belemnitic Belemnitidae belemnoid Belemnoidea beletter belfried belfry belga Belgae Belgian Belgic Belgophile Belgrade Belgravia Belgravian Belial Belialic Belialist belibel belick belie belief beliefful belieffulness beliefless belier believability believable believableness believe believer believing believingly belight beliked Belili belimousined Belinda Belinuridae Belinurus belion beliquor Belis belite belitter belittle belittlement belittler belive bell Bella Bellabella Bellacoola belladonna bellarmine Bellatrix bellbind bellbird bellbottle bellboy belle belled belledom Belleek bellehood belleric Bellerophon Bellerophontidae belletrist belletristic bellflower bellhanger bellhanging bellhop bellhouse bellicism bellicose bellicosely bellicoseness bellicosity bellied belliferous belligerence belligerency belligerent belligerently belling bellipotent Bellis bellite bellmaker bellmaking bellman bellmanship bellmaster bellmouth bellmouthed Bellona Bellonian bellonion bellote Bellovaci bellow bellower bellows bellowsful bellowslike bellowsmaker bellowsmaking bellowsman bellpull belltail belltopper belltopperdom bellware bellwaver bellweed bellwether bellwind bellwine bellwood bellwort belly bellyache bellyband bellyer bellyfish bellyflaught bellyful bellying bellyland bellylike bellyman bellypiece bellypinch beloam beloeilite beloid belomancy Belone belonesite belong belonger belonging belonid Belonidae belonite belonoid belonosphaerite belord Belostoma Belostomatidae Belostomidae belout belove beloved below belowstairs belozenged Belshazzar Belshazzaresque belsire belt Beltane belted Beltene belter Beltian beltie beltine belting Beltir Beltis beltmaker beltmaking beltman belton beltwise Beluchi Belucki beluga belugite belute belve belvedere Belverdian bely belying belyingly belzebuth bema bemad bemadam bemaddening bemail bemaim bemajesty beman bemangle bemantle bemar bemartyr bemask bemaster bemat bemata bemaul bemazed Bemba Bembecidae Bembex bemeal bemean bemedaled bemedalled bementite bemercy bemingle beminstrel bemire bemirement bemirror bemirrorment bemist bemistress bemitered bemitred bemix bemoan bemoanable bemoaner bemoaning bemoaningly bemoat bemock bemoil bemoisten bemole bemolt bemonster bemoon bemotto bemoult bemouth bemuck bemud bemuddle bemuddlement bemuddy bemuffle bemurmur bemuse bemused bemusedly bemusement bemusk bemuslined bemuzzle Ben ben bena benab Benacus bename benami benamidar benasty benben bench benchboard bencher benchership benchfellow benchful benching benchland benchlet benchman benchwork benchy bencite bend benda bendability bendable bended bender bending bendingly bendlet bendsome bendwise bendy bene beneaped beneath beneception beneceptive beneceptor benedicite Benedict benedict Benedicta Benedictine Benedictinism benediction benedictional benedictionary benedictive benedictively benedictory Benedictus benedight benefaction benefactive benefactor benefactorship benefactory benefactress benefic benefice beneficed beneficeless beneficence beneficent beneficential beneficently beneficial beneficially beneficialness beneficiary beneficiaryship beneficiate beneficiation benefit benefiter beneighbored Benelux benempt benempted beneplacito benet Benetnasch benettle Beneventan Beneventana benevolence benevolent benevolently benevolentness benevolist beng Bengal Bengalese Bengali Bengalic bengaline Bengola Beni beni benight benighted benightedness benighten benighter benightmare benightment benign benignancy benignant benignantly benignity benignly Benin Benincasa benison benitoite benj Benjamin benjamin benjaminite Benjamite Benjy benjy Benkulen benmost benn benne bennel Bennet bennet Bennettitaceae bennettitaceous Bennettitales Bennettites bennetweed Benny benny beno benorth benote bensel bensh benshea benshee benshi bent bentang benthal Benthamic Benthamism Benthamite benthic benthon benthonic benthos Bentincks bentiness benting Benton bentonite bentstar bentwood benty Benu benumb benumbed benumbedness benumbing benumbingly benumbment benward benweed benzacridine benzal benzalacetone benzalacetophenone benzalaniline benzalazine benzalcohol benzalcyanhydrin benzaldehyde benzaldiphenyl benzaldoxime benzalethylamine benzalhydrazine benzalphenylhydrazone benzalphthalide benzamide benzamido benzamine benzaminic benzamino benzanalgen benzanilide benzanthrone benzantialdoxime benzazide benzazimide benzazine benzazole benzbitriazole benzdiazine benzdifuran benzdioxazine benzdioxdiazine benzdioxtriazine Benzedrine benzein benzene benzenediazonium benzenoid benzenyl benzhydrol benzhydroxamic benzidine benzidino benzil benzilic benzimidazole benziminazole benzinduline benzine benzo benzoate benzoated benzoazurine benzobis benzocaine benzocoumaran benzodiazine benzodiazole benzoflavine benzofluorene benzofulvene benzofuran benzofuroquinoxaline benzofuryl benzoglycolic benzoglyoxaline benzohydrol benzoic benzoid benzoin benzoinated benzoiodohydrin benzol benzolate benzole benzolize benzomorpholine benzonaphthol benzonitrile benzonitrol benzoperoxide benzophenanthrazine benzophenanthroline benzophenazine benzophenol benzophenone benzophenothiazine benzophenoxazine benzophloroglucinol benzophosphinic benzophthalazine benzopinacone benzopyran benzopyranyl benzopyrazolone benzopyrylium benzoquinoline benzoquinone benzoquinoxaline benzosulphimide benzotetrazine benzotetrazole benzothiazine benzothiazole benzothiazoline benzothiodiazole benzothiofuran benzothiophene benzothiopyran benzotoluide benzotriazine benzotriazole benzotrichloride benzotrifuran benzoxate benzoxy benzoxyacetic benzoxycamphor benzoxyphenanthrene benzoyl benzoylate benzoylation benzoylformic benzoylglycine benzpinacone benzthiophen benztrioxazine benzyl benzylamine benzylic benzylidene benzylpenicillin beode Beothuk Beothukan Beowulf bepaid Bepaint bepale bepaper beparch beparody beparse bepart bepaste bepastured bepat bepatched bepaw bepearl bepelt bepen bepepper beperiwigged bepester bepewed bephilter bephrase bepicture bepiece bepierce bepile bepill bepillared bepimple bepinch bepistoled bepity beplague beplaided beplaster beplumed bepommel bepowder bepraise bepraisement bepraiser beprank bepray bepreach bepress bepretty bepride beprose bepuddle bepuff bepun bepurple bepuzzle bepuzzlement bequalm bequeath bequeathable bequeathal bequeather bequeathment bequest bequirtle bequote ber berain berairou berakah berake berakoth berapt berascal berat berate berattle beraunite beray berbamine Berber Berberi Berberian berberid Berberidaceae berberidaceous berberine Berberis berberry Berchemia Berchta berdache bere Berean bereason bereave bereavement bereaven bereaver bereft berend Berengaria Berengarian Berengarianism berengelite Berenice Bereshith beresite beret berewick berg bergalith Bergama Bergamask bergamiol Bergamo Bergamot bergamot bergander bergaptene berger berghaan berginization berginize berglet bergschrund Bergsonian Bergsonism bergut bergy bergylt berhyme Beri beribanded beribboned beriberi beriberic beride berigora beringed beringite beringleted berinse berith Berkeleian Berkeleianism Berkeleyism Berkeleyite berkelium berkovets berkowitz Berkshire berley berlin berline Berliner berlinite Berlinize berm Bermuda Bermudian bermudite Bern Bernard Bernardina Bernardine berne Bernese Bernice Bernicia bernicle Berninesque Bernoullian berobed Beroe Beroida Beroidae beroll Berossos berouged beround berrendo berret berri berried berrier berrigan berrugate berry berrybush berryless berrylike berrypicker berrypicking berseem berserk berserker Bersiamite Bersil Bert Bertat Berteroa berth Bertha berthage berthed berther berthierite berthing Berthold Bertholletia Bertie Bertolonia Bertram bertram bertrandite bertrum beruffed beruffled berust bervie berycid Berycidae beryciform berycine berycoid Berycoidea berycoidean Berycoidei Berycomorphi beryl berylate beryllia berylline berylliosis beryllium berylloid beryllonate beryllonite beryllosis Berytidae Beryx berzelianite berzeliite bes besa besagne besaiel besaint besan besanctify besauce bescab bescarf bescatter bescent bescorch bescorn bescoundrel bescour bescourge bescramble bescrape bescratch bescrawl bescreen bescribble bescurf bescurvy bescutcheon beseam besee beseech beseecher beseeching beseechingly beseechingness beseechment beseem beseeming beseemingly beseemingness beseemliness beseemly beseen beset besetment besetter besetting beshackle beshade beshadow beshag beshake beshame beshawled beshear beshell beshield beshine beshiver beshlik beshod beshout beshow beshower beshrew beshriek beshrivel beshroud besiclometer beside besides besiege besieged besiegement besieger besieging besiegingly besigh besilver besin besing besiren besit beslab beslap beslash beslave beslaver besleeve beslime beslimer beslings beslipper beslobber beslow beslubber beslur beslushed besmear besmearer besmell besmile besmirch besmircher besmirchment besmoke besmooth besmother besmouch besmudge besmut besmutch besnare besneer besnivel besnow besnuff besodden besogne besognier besoil besom besomer besonnet besoot besoothe besoothement besot besotment besotted besottedly besottedness besotting besottingly besought besoul besour bespangle bespate bespatter bespatterer bespatterment bespawl bespeak bespeakable bespeaker bespecked bespeckle bespecklement bespectacled besped bespeech bespeed bespell bespelled bespend bespete bespew bespice bespill bespin bespirit bespit besplash besplatter besplit bespoke bespoken bespot bespottedness bespouse bespout bespray bespread besprent besprinkle besprinkler bespurred besputter bespy besqueeze besquib besra Bess Bessarabian Besselian Bessemer bessemer Bessemerize bessemerize Bessera Bessi Bessie Bessy best bestab bestain bestamp bestar bestare bestarve bestatued bestay bestayed bestead besteer bestench bester bestial bestialism bestialist bestiality bestialize bestially bestiarian bestiarianism bestiary bestick bestill bestink bestir bestness bestock bestore bestorm bestove bestow bestowable bestowage bestowal bestower bestowing bestowment bestraddle bestrapped bestraught bestraw bestreak bestream bestrew bestrewment bestride bestripe bestrode bestubbled bestuck bestud besugar besuit besully beswarm besweatered besweeten beswelter beswim beswinge beswitch bet Beta beta betacism betacismus betafite betag betail betailor betaine betainogen betalk betallow betangle betanglement betask betassel betatron betattered betaxed betear beteela beteem betel Betelgeuse Beth beth bethabara bethankit bethel Bethesda bethflower bethink Bethlehem Bethlehemite bethought bethrall bethreaten bethroot Bethuel bethumb bethump bethunder bethwack Bethylidae betide betimber betimes betinge betipple betire betis betitle betocsin betoil betoken betokener betone betongue Betonica betony betorcin betorcinol betoss betowel betowered Betoya Betoyan betrace betrail betrample betrap betravel betray betrayal betrayer betrayment betread betrend betrim betrinket betroth betrothal betrothed betrothment betrough betrousered betrumpet betrunk Betsey Betsileos Betsimisaraka betso Betsy Betta betted better betterer bettergates bettering betterly betterment bettermost betterness betters Bettina Bettine betting bettong bettonga Bettongia bettor Betty betty betuckered Betula Betulaceae betulaceous betulin betulinamaric betulinic betulinol Betulites beturbaned betusked betutor betutored betwattled between betweenbrain betweenity betweenmaid betweenness betweenwhiles betwine betwit betwixen betwixt beudantite Beulah beuniformed bevatron beveil bevel beveled beveler bevelled bevelment bevenom bever beverage beverse bevesseled bevesselled beveto bevillain bevined bevoiled bevomit bevue bevy bewail bewailable bewailer bewailing bewailingly bewailment bewaitered bewall beware bewash bewaste bewater beweary beweep beweeper bewelcome bewelter bewept bewest bewet bewhig bewhiskered bewhisper bewhistle bewhite bewhiten bewidow bewig bewigged bewilder bewildered bewilderedly bewilderedness bewildering bewilderingly bewilderment bewimple bewinged bewinter bewired bewitch bewitchedness bewitcher bewitchery bewitchful bewitching bewitchingly bewitchingness bewitchment bewith bewizard bework beworm beworn beworry beworship bewrap bewrathed bewray bewrayer bewrayingly bewrayment bewreath bewreck bewrite bey beydom beylic beylical beyond beyrichite beyship Bezaleel Bezaleelian bezant bezantee bezanty bezel bezesteen bezetta bezique bezoar bezoardic bezonian Bezpopovets bezzi bezzle bezzo bhabar Bhadon Bhaga bhagavat bhagavata bhaiachari bhaiyachara bhakta bhakti bhalu bhandar bhandari bhang bhangi Bhar bhara bharal Bharata bhat bhava Bhavani bheesty bhikku bhikshu Bhil Bhili Bhima Bhojpuri bhoosa Bhotia Bhotiya Bhowani bhoy Bhumij bhungi bhungini bhut Bhutanese Bhutani bhutatathata Bhutia biabo biacetyl biacetylene biacid biacromial biacuminate biacuru bialate biallyl bialveolar Bianca Bianchi bianchite bianco biangular biangulate biangulated biangulous bianisidine biannual biannually biannulate biarchy biarcuate biarcuated biarticular biarticulate biarticulated bias biasness biasteric biaswise biatomic biauricular biauriculate biaxal biaxial biaxiality biaxially biaxillary bib bibacious bibacity bibasic bibation bibb bibber bibble bibbler bibbons bibcock bibenzyl bibi Bibio bibionid Bibionidae bibiri bibitory Bible bibless Biblic Biblical Biblicality Biblically Biblicism Biblicist Biblicistic Biblicolegal Biblicoliterary Biblicopsychological biblioclasm biblioclast bibliofilm bibliogenesis bibliognost bibliognostic bibliogony bibliograph bibliographer bibliographic bibliographical bibliographically bibliographize bibliography biblioklept bibliokleptomania bibliokleptomaniac bibliolater bibliolatrous bibliolatry bibliological bibliologist bibliology bibliomancy bibliomane bibliomania bibliomaniac bibliomaniacal bibliomanian bibliomanianism bibliomanism bibliomanist bibliopegic bibliopegist bibliopegistic bibliopegy bibliophage bibliophagic bibliophagist bibliophagous bibliophile bibliophilic bibliophilism bibliophilist bibliophilistic bibliophily bibliophobia bibliopolar bibliopole bibliopolery bibliopolic bibliopolical bibliopolically bibliopolism bibliopolist bibliopolistic bibliopoly bibliosoph bibliotaph bibliotaphic bibliothec bibliotheca bibliothecal bibliothecarial bibliothecarian bibliothecary bibliotherapeutic bibliotherapist bibliotherapy bibliothetic bibliotic bibliotics bibliotist Biblism Biblist biblus biborate bibracteate bibracteolate bibulosity bibulous bibulously bibulousness Bibulus bicalcarate bicameral bicameralism bicamerist bicapitate bicapsular bicarbonate bicarbureted bicarinate bicarpellary bicarpellate bicaudal bicaudate Bice bice bicellular bicentenary bicentennial bicephalic bicephalous biceps bicetyl bichir bichloride bichord bichromate bichromatic bichromatize bichrome bichromic bichy biciliate biciliated bicipital bicipitous bicircular bicirrose bick bicker bickerer bickern biclavate biclinium bicollateral bicollaterality bicolligate bicolor bicolored bicolorous biconcave biconcavity bicondylar bicone biconic biconical biconically biconjugate biconsonantal biconvex bicorn bicornate bicorne bicorned bicornous bicornuate bicornuous bicornute bicorporal bicorporate bicorporeal bicostate bicrenate bicrescentic bicrofarad bicron bicrural bicursal bicuspid bicuspidate bicyanide bicycle bicycler bicyclic bicyclism bicyclist bicyclo bicycloheptane bicylindrical bid bidactyl bidactyle bidactylous bidar bidarka bidcock biddable biddableness biddably biddance Biddelian bidder bidding Biddulphia Biddulphiaceae Biddy biddy bide Bidens bident bidental bidentate bidented bidential bidenticulate bider bidet bidigitate bidimensional biding bidirectional bidiurnal Bidpai bidri biduous bieberite Biedermeier bield bieldy bielectrolysis bielenite Bielid Bielorouss bien bienly bienness biennia biennial biennially biennium bier bierbalk biethnic bietle bifacial bifanged bifara bifarious bifariously bifer biferous biff biffin bifid bifidate bifidated bifidity bifidly bifilar bifilarly bifistular biflabellate biflagellate biflecnode biflected biflex biflorate biflorous bifluoride bifocal bifoil bifold bifolia bifoliate bifoliolate bifolium biforked biform biformed biformity biforous bifront bifrontal bifronted bifurcal bifurcate bifurcated bifurcately bifurcation big biga bigamic bigamist bigamistic bigamize bigamous bigamously bigamy bigarade bigaroon bigarreau bigbloom bigemina bigeminal bigeminate bigeminated bigeminum bigener bigeneric bigential bigeye bigg biggah biggen bigger biggest biggin biggish biggonet bigha bighead bighearted bigheartedness bighorn bight biglandular biglenoid biglot bigmouth bigmouthed bigness Bignonia Bignoniaceae bignoniaceous bignoniad bignou bigoniac bigonial bigot bigoted bigotedly bigotish bigotry bigotty bigroot bigthatch biguanide biguttate biguttulate bigwig bigwigged bigwiggedness bigwiggery bigwiggism Bihai Biham bihamate Bihari biharmonic bihourly bihydrazine bija bijasal bijou bijouterie bijoux bijugate bijugular bike bikh bikhaconitine bikini Bikol Bikram Bikukulla Bilaan bilabe bilabial bilabiate bilalo bilamellar bilamellate bilamellated bilaminar bilaminate bilaminated bilander bilateral bilateralism bilaterality bilaterally bilateralness Bilati bilberry bilbie bilbo bilboquet bilby bilch bilcock bildar bilders bile bilestone bilge bilgy Bilharzia bilharzial bilharziasis bilharzic bilharziosis bilianic biliary biliate biliation bilic bilicyanin bilifaction biliferous bilification bilifuscin bilify bilihumin bilimbi bilimbing biliment Bilin bilinear bilineate bilingual bilingualism bilingually bilinguar bilinguist bilinigrin bilinite bilio bilious biliously biliousness biliprasin bilipurpurin bilipyrrhin bilirubin bilirubinemia bilirubinic bilirubinuria biliteral biliteralism bilith bilithon biliverdic biliverdin bilixanthin bilk bilker Bill bill billa billable billabong billback billbeetle Billbergia billboard billbroking billbug billed biller billet billeter billethead billeting billetwood billety billfish billfold billhead billheading billholder billhook billian billiard billiardist billiardly billiards Billiken billikin billing billingsgate billion billionaire billionism billionth billitonite Billjim billman billon billot billow billowiness billowy billposter billposting billsticker billsticking Billy billy billyboy billycan billycock billyer billyhood billywix bilo bilobated bilobe bilobed bilobiate bilobular bilocation bilocellate bilocular biloculate Biloculina biloculine bilophodont Biloxi bilsh Bilskirnir bilsted biltong biltongue Bim bimaculate bimaculated bimalar Bimana bimanal bimane bimanous bimanual bimanually bimarginate bimarine bimastic bimastism bimastoid bimasty bimaxillary bimbil Bimbisara bimeby bimensal bimester bimestrial bimetalic bimetallism bimetallist bimetallistic bimillenary bimillennium bimillionaire Bimini Bimmeler bimodal bimodality bimolecular bimonthly bimotored bimotors bimucronate bimuscular bin binal binaphthyl binarium binary binate binately bination binational binaural binauricular binbashi bind binder bindery bindheimite binding bindingly bindingness bindle bindlet bindoree bindweb bindweed bindwith bindwood bine binervate bineweed bing binge bingey binghi bingle bingo bingy binh Bini biniodide Binitarian Binitarianism bink binman binna binnacle binning binnite binnogue bino binocle binocular binocularity binocularly binoculate binodal binode binodose binodous binomenclature binomial binomialism binomially binominal binominated binominous binormal binotic binotonous binous binoxalate binoxide bint bintangor binturong binuclear binucleate binucleated binucleolate binukau Binzuru biobibliographical biobibliography bioblast bioblastic biocatalyst biocellate biocentric biochemic biochemical biochemically biochemics biochemist biochemistry biochemy biochore bioclimatic bioclimatology biocoenose biocoenosis biocoenotic biocycle biod biodynamic biodynamical biodynamics biodyne bioecologic bioecological bioecologically bioecologist bioecology biogen biogenase biogenesis biogenesist biogenetic biogenetical biogenetically biogenetics biogenous biogeny biogeochemistry biogeographic biogeographical biogeographically biogeography biognosis biograph biographee biographer biographic biographical biographically biographist biographize biography bioherm biokinetics biolinguistics biolith biologese biologic biological biologically biologicohumanistic biologism biologist biologize biology bioluminescence bioluminescent biolysis biolytic biomagnetic biomagnetism biomathematics biome biomechanical biomechanics biometeorology biometer biometric biometrical biometrically biometrician biometricist biometrics biometry biomicroscopy bion bionergy bionomic bionomical bionomically bionomics bionomist bionomy biophagism biophagous biophagy biophilous biophore biophotophone biophysical biophysicochemical biophysics biophysiography biophysiological biophysiologist biophysiology biophyte bioplasm bioplasmic bioplast bioplastic bioprecipitation biopsic biopsy biopsychic biopsychical biopsychological biopsychologist biopsychology biopyribole bioral biorbital biordinal bioreaction biorgan bios bioscope bioscopic bioscopy biose biosis biosocial biosociological biosphere biostatic biostatical biostatics biostatistics biosterin biosterol biostratigraphy biosynthesis biosynthetic biosystematic biosystematics biosystematist biosystematy Biota biota biotaxy biotechnics biotic biotical biotics biotin biotite biotitic biotome biotomy biotope biotype biotypic biovular biovulate bioxalate bioxide bipack bipaleolate Bipaliidae Bipalium bipalmate biparasitic biparental biparietal biparous biparted bipartible bipartient bipartile bipartisan bipartisanship bipartite bipartitely bipartition biparty bipaschal bipectinate bipectinated biped bipedal bipedality bipedism bipeltate bipennate bipennated bipenniform biperforate bipersonal bipetalous biphase biphasic biphenol biphenyl biphenylene bipinnaria bipinnate bipinnated bipinnately bipinnatifid bipinnatiparted bipinnatipartite bipinnatisect bipinnatisected biplanal biplanar biplane biplicate biplicity biplosion biplosive bipod bipolar bipolarity bipolarize Bipont Bipontine biporose biporous biprism biprong bipunctal bipunctate bipunctual bipupillate bipyramid bipyramidal bipyridine bipyridyl biquadrantal biquadrate biquadratic biquarterly biquartz biquintile biracial biracialism biradial biradiate biradiated biramous birational birch birchbark birchen birching birchman birchwood bird birdbander birdbanding birdbath birdberry birdcall birdcatcher birdcatching birdclapper birdcraft birddom birdeen birder birdglue birdhood birdhouse birdie birdikin birding birdland birdless birdlet birdlike birdlime birdling birdlore birdman birdmouthed birdnest birdnester birdseed birdstone birdweed birdwise birdwoman birdy birectangular birefracting birefraction birefractive birefringence birefringent bireme biretta Birgus biri biriba birimose birk birken Birkenhead Birkenia Birkeniidae birkie birkremite birl birle birler birlie birlieman birlinn birma Birmingham Birminghamize birn birny Biron birostrate birostrated birotation birotatory birr birse birsle birsy birth birthbed birthday birthland birthless birthmark birthmate birthnight birthplace birthright birthroot birthstone birthstool birthwort birthy bis bisabol bisaccate bisacromial bisalt Bisaltae bisantler bisaxillary bisbeeite biscacha Biscanism Biscayan Biscayanism biscayen Biscayner bischofite biscotin biscuit biscuiting biscuitlike biscuitmaker biscuitmaking biscuitroot biscuitry bisdiapason bisdimethylamino bisect bisection bisectional bisectionally bisector bisectrices bisectrix bisegment biseptate biserial biserially biseriate biseriately biserrate bisetose bisetous bisexed bisext bisexual bisexualism bisexuality bisexually bisexuous bisglyoxaline Bishareen Bishari Bisharin bishop bishopdom bishopess bishopful bishophood bishopless bishoplet bishoplike bishopling bishopric bishopship bishopweed bisiliac bisilicate bisiliquous bisimine bisinuate bisinuation bisischiadic bisischiatic Bisley bislings bismar Bismarck Bismarckian Bismarckianism bismarine bismerpund bismillah bismite Bismosol bismuth bismuthal bismuthate bismuthic bismuthide bismuthiferous bismuthine bismuthinite bismuthite bismuthous bismuthyl bismutite bismutoplagionite bismutosmaltite bismutosphaerite bisnaga bison bisonant bisontine bisphenoid bispinose bispinous bispore bisporous bisque bisquette bissext bissextile bisson bistate bistephanic bister bistered bistetrazole bisti bistipular bistipulate bistipuled bistort Bistorta bistournage bistoury bistratal bistratose bistriate bistriazole bistro bisubstituted bisubstitution bisulcate bisulfid bisulphate bisulphide bisulphite bisyllabic bisyllabism bisymmetric bisymmetrical bisymmetrically bisymmetry bit bitable bitangent bitangential bitanhol bitartrate bitbrace bitch bite bitemporal bitentaculate biter biternate biternately bitesheep bitewing bitheism Bithynian biti biting bitingly bitingness Bitis bitless bito bitolyl bitonality bitreadle bitripartite bitripinnatifid bitriseptate bitrochanteric bitstock bitstone bitt bitted bitten bitter bitterbark bitterblain bitterbloom bitterbur bitterbush bitterful bitterhead bitterhearted bitterheartedness bittering bitterish bitterishness bitterless bitterling bitterly bittern bitterness bitternut bitterroot bitters bittersweet bitterweed bitterwood bitterworm bitterwort bitthead bittie Bittium bittock bitty bitubercular bituberculate bituberculated Bitulithic bitulithic bitume bitumed bitumen bituminate bituminiferous bituminization bituminize bituminoid bituminous bitwise bityite bitypic biune biunial biunity biunivocal biurate biurea biuret bivalence bivalency bivalent bivalve bivalved Bivalvia bivalvian bivalvous bivalvular bivariant bivariate bivascular bivaulted bivector biventer biventral biverbal bivinyl bivious bivittate bivocal bivocalized bivoltine bivoluminous bivouac biwa biweekly biwinter Bixa Bixaceae bixaceous bixbyite bixin biyearly biz bizardite bizarre bizarrely bizarreness Bizen bizet bizonal bizone Bizonia bizygomatic bizz blab blabber blabberer blachong black blackacre blackamoor blackback blackball blackballer blackband Blackbeard blackbelly blackberry blackbine blackbird blackbirder blackbirding blackboard blackboy blackbreast blackbush blackbutt blackcap blackcoat blackcock blackdamp blacken blackener blackening blacker blacketeer blackey blackeyes blackface Blackfeet blackfellow blackfellows blackfin blackfire blackfish blackfisher blackfishing Blackfoot blackfoot Blackfriars blackguard blackguardism blackguardize blackguardly blackguardry Blackhander blackhead blackheads blackheart blackhearted blackheartedness blackie blacking blackish blackishly blackishness blackit blackjack blackland blackleg blackleggery blacklegism blacklegs blackly blackmail blackmailer blackneb blackneck blackness blacknob blackout blackpoll blackroot blackseed blackshirted blacksmith blacksmithing blackstick blackstrap blacktail blackthorn blacktongue blacktree blackwash blackwasher blackwater blackwood blackwork blackwort blacky blad bladder bladderet bladderless bladderlike bladdernose bladdernut bladderpod bladderseed bladderweed bladderwort bladdery blade bladebone bladed bladelet bladelike blader bladesmith bladewise blading bladish blady bladygrass blae blaeberry blaeness blaewort blaff blaffert blaflum blah blahlaut blain blair blairmorite Blake blake blakeberyed blamable blamableness blamably blame blamed blameful blamefully blamefulness blameless blamelessly blamelessness blamer blameworthiness blameworthy blaming blamingly blan blanc blanca blancard Blanch blanch blancher blanching blanchingly blancmange blancmanger blanco bland blanda Blandfordia blandiloquence blandiloquious blandiloquous blandish blandisher blandishing blandishingly blandishment blandly blandness blank blankard blankbook blanked blankeel blanket blanketed blanketeer blanketflower blanketing blanketless blanketmaker blanketmaking blanketry blanketweed blankety blanking blankish Blankit blankite blankly blankness blanky blanque blanquillo blare Blarina blarney blarneyer blarnid blarny blart blas blase blash blashy Blasia blaspheme blasphemer blasphemous blasphemously blasphemousness blasphemy blast blasted blastema blastemal blastematic blastemic blaster blastful blasthole blastid blastie blasting blastment blastocarpous blastocheme blastochyle blastocoele blastocolla blastocyst blastocyte blastoderm blastodermatic blastodermic blastodisk blastogenesis blastogenetic blastogenic blastogeny blastogranitic blastoid Blastoidea blastoma blastomata blastomere blastomeric Blastomyces blastomycete Blastomycetes blastomycetic blastomycetous blastomycosis blastomycotic blastoneuropore Blastophaga blastophitic blastophoral blastophore blastophoric blastophthoria blastophthoric blastophyllum blastoporal blastopore blastoporic blastoporphyritic blastosphere blastospheric blastostylar blastostyle blastozooid blastplate blastula blastulae blastular blastulation blastule blasty blat blatancy blatant blatantly blate blately blateness blather blatherer blatherskite blathery blatjang Blatta blatta Blattariae blatter blatterer blatti blattid Blattidae blattiform Blattodea blattoid Blattoidea blaubok Blaugas blauwbok blaver blaw blawort blay blaze blazer blazing blazingly blazon blazoner blazoning blazonment blazonry blazy bleaberry bleach bleachability bleachable bleached bleacher bleacherite bleacherman bleachery bleachfield bleachground bleachhouse bleaching bleachman bleachworks bleachyard bleak bleakish bleakly bleakness bleaky blear bleared blearedness bleareye bleariness blearness bleary bleat bleater bleating bleatingly bleaty bleb blebby blechnoid Blechnum bleck blee bleed bleeder bleeding bleekbok bleery bleeze bleezy blellum blemish blemisher blemishment Blemmyes blench blencher blenching blenchingly blencorn blend blendcorn blende blended blender blending blendor blendure blendwater blennadenitis blennemesis blennenteria blennenteritis blenniid Blenniidae blenniiform Blenniiformes blennioid Blennioidea blennocele blennocystitis blennoemesis blennogenic blennogenous blennoid blennoma blennometritis blennophlogisma blennophlogosis blennophthalmia blennoptysis blennorrhagia blennorrhagic blennorrhea blennorrheal blennorrhinia blennosis blennostasis blennostatic blennothorax blennotorrhea blennuria blenny blennymenitis blent bleo blephara blepharadenitis blepharal blepharanthracosis blepharedema blepharelcosis blepharemphysema Blephariglottis blepharism blepharitic blepharitis blepharoadenitis blepharoadenoma blepharoatheroma blepharoblennorrhea blepharocarcinoma Blepharocera Blepharoceridae blepharochalasis blepharochromidrosis blepharoclonus blepharocoloboma blepharoconjunctivitis blepharodiastasis blepharodyschroia blepharohematidrosis blepharolithiasis blepharomelasma blepharoncosis blepharoncus blepharophimosis blepharophryplasty blepharophthalmia blepharophyma blepharoplast blepharoplastic blepharoplasty blepharoplegia blepharoptosis blepharopyorrhea blepharorrhaphy blepharospasm blepharospath blepharosphincterectomy blepharostat blepharostenosis blepharosymphysis blepharosyndesmitis blepharosynechia blepharotomy blepharydatis Blephillia blesbok blesbuck bless blessed blessedly blessedness blesser blessing blessingly blest blet bletheration Bletia Bletilla blewits blibe blick blickey Blighia blight blightbird blighted blighter blighting blightingly blighty blimbing blimp blimy blind blindage blindball blinded blindedly blinder blindeyes blindfast blindfish blindfold blindfolded blindfoldedness blindfolder blindfoldly blinding blindingly blindish blindless blindling blindly blindness blindstory blindweed blindworm blink blinkard blinked blinker blinkered blinking blinkingly blinks blinky blinter blintze blip bliss blissful blissfully blissfulness blissless blissom blister blistered blistering blisteringly blisterweed blisterwort blistery blite blithe blithebread blitheful blithefully blithehearted blithelike blithely blithemeat blithen blitheness blither blithering blithesome blithesomely blithesomeness blitter Blitum blitz blitzbuggy blitzkrieg blizz blizzard blizzardly blizzardous blizzardy blo bloat bloated bloatedness bloater bloating blob blobbed blobber blobby bloc block blockade blockader blockage blockbuster blocked blocker blockhead blockheaded blockheadedly blockheadedness blockheadish blockheadishness blockheadism blockholer blockhouse blockiness blocking blockish blockishly blockishness blocklayer blocklike blockmaker blockmaking blockman blockpate blockship blocky blodite bloke blolly blomstrandine blonde blondeness blondine blood bloodalley bloodalp bloodbeat bloodberry bloodbird bloodcurdler bloodcurdling blooddrop blooddrops blooded bloodfin bloodflower bloodguilt bloodguiltiness bloodguiltless bloodguilty bloodhound bloodied bloodily bloodiness bloodleaf bloodless bloodlessly bloodlessness bloodletter bloodletting bloodline bloodmobile bloodmonger bloodnoun bloodripe bloodripeness bloodroot bloodshed bloodshedder bloodshedding bloodshot bloodshotten bloodspiller bloodspilling bloodstain bloodstained bloodstainedness bloodstanch bloodstock bloodstone bloodstroke bloodsuck bloodsucker bloodsucking bloodthirst bloodthirster bloodthirstily bloodthirstiness bloodthirsting bloodthirsty bloodweed bloodwite bloodwood bloodworm bloodwort bloodworthy bloody bloodybones blooey bloom bloomage bloomer Bloomeria bloomerism bloomers bloomery bloomfell blooming bloomingly bloomingness bloomkin bloomless Bloomsburian Bloomsbury bloomy bloop blooper blooping blore blosmy blossom blossombill blossomed blossomhead blossomless blossomry blossomtime blossomy blot blotch blotched blotchy blotless blotter blottesque blottesquely blotting blottingly blotto blotty bloubiskop blouse bloused blousing blout blow blowback blowball blowcock blowdown blowen blower blowfish blowfly blowgun blowhard blowhole blowiness blowing blowings blowiron blowlamp blowline blown blowoff blowout blowpipe blowpoint blowproof blowspray blowth blowtorch blowtube blowup blowy blowze blowzed blowzing blowzy blub blubber blubberer blubbering blubberingly blubberman blubberous blubbery blucher bludgeon bludgeoned bludgeoneer bludgeoner blue blueback bluebead Bluebeard bluebeard Bluebeardism bluebell bluebelled blueberry bluebill bluebird blueblaw bluebonnet bluebook bluebottle bluebreast bluebuck bluebush bluebutton bluecap bluecoat bluecup bluefish bluegill bluegown bluegrass bluehearted bluehearts blueing bluejack bluejacket bluejoint blueleg bluelegs bluely blueness bluenose Bluenoser blueprint blueprinter bluer blues bluesides bluestem bluestocking bluestockingish bluestockingism bluestone bluestoner bluet bluethroat bluetongue bluetop blueweed bluewing bluewood bluey bluff bluffable bluffer bluffly bluffness bluffy bluggy bluing bluish bluishness bluism Blumea blunder blunderbuss blunderer blunderful blunderhead blunderheaded blunderheadedness blundering blunderingly blundersome blunge blunger blunk blunker blunks blunnen blunt blunter blunthead blunthearted bluntie bluntish bluntly bluntness blup blur blurb blurbist blurred blurredness blurrer blurry blurt blush blusher blushful blushfully blushfulness blushiness blushing blushingly blushless blushwort blushy bluster blusteration blusterer blustering blusteringly blusterous blusterously blustery blype bo boa Boaedon boagane Boanbura Boanerges boanergism boar boarcite board boardable boarder boarding boardinghouse boardlike boardly boardman boardwalk boardy boarfish boarhound boarish boarishly boarishness boarship boarskin boarspear boarstaff boarwood boast boaster boastful boastfully boastfulness boasting boastive boastless boat boatable boatage boatbill boatbuilder boatbuilding boater boatfalls boatful boathead boatheader boathouse boatie boating boatkeeper boatless boatlike boatlip boatload boatloader boatloading boatly boatman boatmanship boatmaster boatowner boatsetter boatshop boatside boatsman boatswain boattail boatward boatwise boatwoman boatwright Bob bob boba bobac Bobadil Bobadilian Bobadilish Bobadilism bobbed bobber bobbery bobbin bobbiner bobbinet bobbing Bobbinite bobbinwork bobbish bobbishly bobble bobby bobcat bobcoat bobeche bobfly bobierrite bobization bobjerom bobo bobolink bobotie bobsled bobsleigh bobstay bobtail bobtailed bobwhite bobwood bocaccio bocal bocardo bocasine bocca boccale boccarella boccaro bocce Bocconia boce bocedization Boche bocher Bochism bock bockerel bockeret bocking bocoy bod bodach bodacious bodaciously bode bodeful bodega bodement boden bodenbenderite boder bodewash bodge bodger bodgery bodhi bodhisattva bodice bodiced bodicemaker bodicemaking bodied bodier bodieron bodikin bodiless bodilessness bodiliness bodily bodiment boding bodingly bodkin bodkinwise bodle Bodleian Bodo bodock Bodoni body bodybending bodybuilder bodyguard bodyhood bodyless bodymaker bodymaking bodyplate bodywise bodywood bodywork Boebera Boedromion Boehmenism Boehmenist Boehmenite Boehmeria boeotarch Boeotian Boeotic Boer Boerdom Boerhavia Boethian Boethusian bog boga bogan bogard bogart bogberry bogey bogeyman boggart boggin bogginess boggish boggle bogglebo boggler boggy boghole bogie bogieman bogier Bogijiab bogland boglander bogle bogledom boglet bogman bogmire Bogo bogo Bogomil Bogomile Bogomilian bogong Bogota bogsucker bogtrot bogtrotter bogtrotting bogue bogum bogus bogusness bogway bogwood bogwort bogy bogydom bogyism bogyland Bohairic bohawn bohea Bohemia Bohemian Bohemianism bohemium bohereen bohireen boho bohor bohunk boid Boidae Boii Boiko boil boilable boildown boiled boiler boilerful boilerhouse boilerless boilermaker boilermaking boilerman boilersmith boilerworks boilery boiling boilinglike boilingly boilover boily Bois boist boisterous boisterously boisterousness bojite bojo bokadam bokard bokark boke Bokhara Bokharan bokom bola Bolag bolar Bolboxalis bold bolden Bolderian boldhearted boldine boldly boldness boldo Boldu bole bolection bolectioned boled boleite Bolelia bolelike bolero Boletaceae boletaceous bolete Boletus boleweed bolewort bolide bolimba bolis bolivar bolivarite bolivia Bolivian boliviano bolk boll Bollandist bollard bolled boller bolling bollock bollworm bolly Bolo bolo Bologna Bolognan Bolognese bolograph bolographic bolographically bolography Boloism boloman bolometer bolometric boloney boloroot Bolshevik Bolsheviki Bolshevikian Bolshevism Bolshevist Bolshevistic Bolshevistically Bolshevize Bolshie bolson bolster bolsterer bolsterwork bolt boltage boltant boltcutter boltel bolter bolthead boltheader boltheading bolthole bolti bolting boltless boltlike boltmaker boltmaking Boltonia boltonite boltrope boltsmith boltstrake boltuprightness boltwork bolus Bolyaian bom boma Bomarea bomb bombable Bombacaceae bombacaceous bombard bombarde bombardelle bombarder bombardier bombardment bombardon bombast bombaster bombastic bombastically bombastry Bombax Bombay bombazet bombazine bombed bomber bombiccite Bombidae bombilate bombilation Bombinae bombinate bombination bombo bombola bombonne bombous bombproof bombshell bombsight Bombus bombycid Bombycidae bombyciform Bombycilla Bombycillidae Bombycina bombycine Bombyliidae Bombyx Bon bon bonaci bonagh bonaght bonair bonairly bonairness bonally bonang bonanza Bonapartean Bonapartism Bonapartist Bonasa bonasus bonaventure Bonaveria bonavist Bonbo bonbon bonce bond bondage bondager bondar bonded Bondelswarts bonder bonderman bondfolk bondholder bondholding bonding bondless bondman bondmanship bondsman bondstone bondswoman bonduc bondwoman bone boneache bonebinder boneblack bonebreaker boned bonedog bonefish boneflower bonehead boneheaded boneless bonelessly bonelessness bonelet bonelike Bonellia boner boneset bonesetter bonesetting boneshaker boneshaw bonetail bonewood bonework bonewort Boney bonfire bong Bongo bongo bonhomie Boni boniata Boniface bonification boniform bonify boniness boninite bonitarian bonitary bonito bonk bonnaz bonnet bonneted bonneter bonnethead bonnetless bonnetlike bonnetman bonnibel bonnily bonniness Bonny bonny bonnyclabber bonnyish bonnyvis Bononian bonsai bonspiel bontebok bontebuck bontequagga Bontok bonus bonxie bony bonyfish bonze bonzer bonzery bonzian boo boob boobery boobily boobook booby boobyalla boobyish boobyism bood boodie boodle boodledom boodleism boodleize boodler boody boof booger boogiewoogie boohoo boojum book bookable bookbinder bookbindery bookbinding bookboard bookcase bookcraft bookdealer bookdom booked booker bookery bookfold bookful bookholder bookhood bookie bookiness booking bookish bookishly bookishness bookism bookkeeper bookkeeping bookland bookless booklet booklike bookling booklore booklover bookmaker bookmaking Bookman bookman bookmark bookmarker bookmate bookmobile bookmonger bookplate bookpress bookrack bookrest bookroom bookseller booksellerish booksellerism bookselling bookshelf bookshop bookstack bookstall bookstand bookstore bookward bookwards bookways bookwise bookwork bookworm bookwright booky bool Boolian booly boolya boom boomable boomage boomah boomboat boomdas boomer boomerang booming boomingly boomless boomlet boomorah boomslang boomslange boomster boomy boon boondock boondocks boondoggle boondoggler Boone boonfellow boongary boonk boonless Boophilus boopis boor boorish boorishly boorishness boort boose boost booster boosterism boosy boot bootblack bootboy booted bootee booter bootery Bootes bootful booth boother Boothian boothite bootholder boothose Bootid bootied bootikin booting bootjack bootlace bootleg bootlegger bootlegging bootless bootlessly bootlessness bootlick bootlicker bootmaker bootmaking boots bootstrap booty bootyless booze boozed boozer boozily booziness boozy bop bopeep boppist bopyrid Bopyridae bopyridian Bopyrus bor bora borable borachio boracic boraciferous boracous borage Boraginaceae boraginaceous Borago Borak borak boral Boran Borana Borani borasca borasque Borassus borate borax Borboridae Borborus borborygmic borborygmus bord bordage bordar bordarius Bordeaux bordel bordello border bordered borderer Borderies bordering borderism borderland borderlander borderless borderline bordermark Borderside bordroom bordure bordured bore boreable boread Boreades boreal borealis borean Boreas borecole boredom boree boreen boregat borehole Boreiad boreism borele borer boresome Boreus borg borgh borghalpenny Borghese borh boric borickite boride borine boring boringly boringness Borinqueno Boris borish borism bority borize borlase born borne Bornean Borneo borneol borning bornite bornitic bornyl Boro boro Borocaine borocalcite borocarbide borocitrate borofluohydric borofluoric borofluoride borofluorin boroglycerate boroglyceride boroglycerine borolanite boron boronatrocalcite Boronia boronic borophenol borophenylic Bororo Bororoan borosalicylate borosalicylic borosilicate borosilicic borotungstate borotungstic borough boroughlet boroughmaster boroughmonger boroughmongering boroughmongery boroughship borowolframic borracha borrel Borrelia Borrelomycetaceae Borreria Borrichia Borromean Borrovian borrow borrowable borrower borrowing borsch borscht borsholder borsht borstall bort bortsch borty bortz Boruca Borussian borwort boryl Borzicactus borzoi Bos Bosc boscage bosch boschbok Boschneger boschvark boschveld bose Boselaphus boser bosh Boshas bosher Bosjesman bosjesman bosk bosker bosket boskiness bosky bosn Bosniac Bosniak Bosnian Bosnisch bosom bosomed bosomer bosomy Bosporan Bosporanic Bosporian bosporus boss bossage bossdom bossed bosselated bosselation bosser bosset bossiness bossing bossism bosslet bossship bossy bostangi bostanji bosthoon Boston boston Bostonese Bostonian bostonite bostrychid Bostrychidae bostrychoid bostrychoidal bostryx bosun Boswellia Boswellian Boswelliana Boswellism Boswellize bot bota botanic botanical botanically botanist botanize botanizer botanomancy botanophile botanophilist botany botargo Botaurinae Botaurus botch botched botchedly botcher botcherly botchery botchily botchiness botchka botchy bote Botein botella boterol botfly both bother botheration botherer botherheaded botherment bothersome bothlike Bothnian Bothnic bothrenchyma Bothriocephalus Bothriocidaris Bothriolepis bothrium Bothrodendron bothropic Bothrops bothros bothsided bothsidedness bothway bothy Botocudo botonee botong Botrychium Botrydium Botryllidae Botryllus botryogen botryoid botryoidal botryoidally botryolite Botryomyces botryomycoma botryomycosis botryomycotic Botryopteriaceae botryopterid Botryopteris botryose botryotherapy Botrytis bott bottekin Botticellian bottine bottle bottlebird bottled bottleflower bottleful bottlehead bottleholder bottlelike bottlemaker bottlemaking bottleman bottleneck bottlenest bottlenose bottler bottling bottom bottomchrome bottomed bottomer bottoming bottomless bottomlessly bottomlessness bottommost bottomry bottstick botuliform botulin botulinum botulism botulismus bouchal bouchaleen boucharde bouche boucher boucherism boucherize bouchette boud boudoir bouffancy bouffant Bougainvillaea Bougainvillea Bougainvillia Bougainvilliidae bougar bouge bouget bough boughed boughless boughpot bought boughten boughy bougie bouillabaisse bouillon bouk boukit boulangerite Boulangism Boulangist boulder boulderhead bouldering bouldery boule boulevard boulevardize boultel boulter boulterer boun bounce bounceable bounceably bouncer bouncing bouncingly bound boundable boundary bounded boundedly boundedness bounden bounder bounding boundingly boundless boundlessly boundlessness boundly boundness bounteous bounteously bounteousness bountied bountiful bountifully bountifulness bountith bountree bounty bountyless bouquet bourasque Bourbon bourbon Bourbonesque Bourbonian Bourbonism Bourbonist bourbonize bourd bourder bourdon bourette bourg bourgeois bourgeoise bourgeoisie bourgeoisitic Bourignian Bourignianism Bourignianist Bourignonism Bourignonist bourn bournless bournonite bourock Bourout bourse bourtree bouse bouser Boussingaultia boussingaultite boustrophedon boustrophedonic bousy bout boutade Bouteloua bouto boutonniere boutylka Bouvardia bouw bovarism bovarysm bovate bovenland bovicide boviculture bovid Bovidae boviform bovine bovinely bovinity Bovista bovoid bovovaccination bovovaccine bow bowable bowback bowbells bowbent bowboy Bowdichia bowdlerism bowdlerization bowdlerize bowed bowedness bowel boweled bowelless bowellike bowels bowenite bower bowerbird bowerlet bowermaiden bowermay bowerwoman Bowery bowery Boweryish bowet bowfin bowgrace bowhead bowie bowieful bowing bowingly bowk bowkail bowker bowknot bowl bowla bowleg bowlegged bowleggedness bowler bowless bowlful bowlike bowline bowling bowllike bowlmaker bowls bowly bowmaker bowmaking bowman bowpin bowralite bowshot bowsprit bowstave bowstring bowstringed bowwoman bowwood bowwort bowwow bowyer boxberry boxboard boxbush boxcar boxen Boxer boxer Boxerism boxfish boxful boxhaul boxhead boxing boxkeeper boxlike boxmaker boxmaking boxman boxthorn boxty boxwallah boxwood boxwork boxy boy boyang boyar boyard boyardism boyardom boyarism boycott boycottage boycotter boycottism boydom boyer boyhood boyish boyishly boyishness boyism boyla boylike boyology boysenberry boyship boza bozal bozo bozze bra brab brabagious brabant Brabanter Brabantine brabble brabblement brabbler brabblingly Brabejum braca braccate braccia bracciale braccianite braccio brace braced bracelet braceleted bracer bracero braces brach Brachelytra brachelytrous bracherer brachering brachet brachial brachialgia brachialis Brachiata brachiate brachiation brachiator brachiferous brachigerous Brachinus brachiocephalic brachiocrural brachiocubital brachiocyllosis brachiofacial brachiofaciolingual brachioganoid Brachioganoidei brachiolaria brachiolarian brachiopod Brachiopoda brachiopode brachiopodist brachiopodous brachioradial brachioradialis brachiorrhachidian brachiorrheuma brachiosaur Brachiosaurus brachiostrophosis brachiotomy brachistocephali brachistocephalic brachistocephalous brachistocephaly brachistochrone brachistochronic brachistochronous brachium brachtmema brachyaxis brachycardia brachycatalectic brachycephal brachycephalic brachycephalism brachycephalization brachycephalize brachycephalous brachycephaly Brachycera brachyceral brachyceric brachycerous brachychronic brachycnemic Brachycome brachycranial brachydactyl brachydactylic brachydactylism brachydactylous brachydactyly brachydiagonal brachydodrome brachydodromous brachydomal brachydomatic brachydome brachydont brachydontism brachyfacial brachyglossal brachygnathia brachygnathism brachygnathous brachygrapher brachygraphic brachygraphical brachygraphy brachyhieric brachylogy brachymetropia brachymetropic Brachyoura brachyphalangia Brachyphyllum brachypinacoid brachypinacoidal brachypleural brachypnea brachypodine brachypodous brachyprism brachyprosopic brachypterous brachypyramid brachyrrhinia brachysclereid brachyskelic brachysm brachystaphylic Brachystegia brachystochrone Brachystomata brachystomatous brachystomous brachytic brachytypous Brachyura brachyural brachyuran brachyuranic brachyure brachyurous Brachyurus bracing bracingly bracingness brack brackebuschite bracken brackened bracker bracket bracketing bracketwise brackish brackishness brackmard bracky Bracon braconid Braconidae bract bractea bracteal bracteate bracted bracteiform bracteolate bracteole bracteose bractless bractlet brad bradawl Bradbury Bradburya bradenhead bradmaker Bradshaw bradsot bradyacousia bradycardia bradycauma bradycinesia bradycrotic bradydactylia bradyesthesia bradyglossia bradykinesia bradykinetic bradylalia bradylexia bradylogia bradynosus bradypepsia bradypeptic bradyphagia bradyphasia bradyphemia bradyphrasia bradyphrenia bradypnea bradypnoea bradypod bradypode Bradypodidae bradypodoid Bradypus bradyseism bradyseismal bradyseismic bradyseismical bradyseismism bradyspermatism bradysphygmia bradystalsis bradyteleocinesia bradyteleokinesis bradytocia bradytrophic bradyuria brae braeface braehead braeman braeside brag braggardism braggart braggartism braggartly braggartry braggat bragger braggery bragget bragging braggingly braggish braggishly Bragi bragite bragless braguette Brahm Brahma brahmachari Brahmahood Brahmaic Brahman Brahmana Brahmanaspati Brahmanda Brahmaness Brahmanhood Brahmani Brahmanic Brahmanical Brahmanism Brahmanist Brahmanistic Brahmanize Brahmany Brahmi Brahmic Brahmin Brahminic Brahminism Brahmoism Brahmsian Brahmsite Brahui braid braided braider braiding Braidism Braidist brail Braille Braillist brain brainache braincap braincraft brainer brainfag brainge braininess brainless brainlessly brainlessness brainlike brainpan brains brainsick brainsickly brainsickness brainstone brainward brainwash brainwasher brainwashing brainwater brainwood brainwork brainworker brainy braird braireau brairo braise brake brakeage brakehand brakehead brakeless brakeload brakemaker brakemaking brakeman braker brakeroot brakesman brakie braky Bram Bramantesque Bramantip bramble brambleberry bramblebush brambled brambling brambly brambrack Bramia bran brancard branch branchage branched Branchellion brancher branchery branchful branchi branchia branchiae branchial Branchiata branchiate branchicolous branchiferous branchiform branchihyal branchiness branching Branchiobdella branchiocardiac branchiogenous branchiomere branchiomeric branchiomerism branchiopallial branchiopod Branchiopoda branchiopodan branchiopodous Branchiopulmonata branchiopulmonate branchiosaur Branchiosauria branchiosaurian Branchiosaurus branchiostegal Branchiostegidae branchiostegite branchiostegous Branchiostoma branchiostomid Branchiostomidae Branchipodidae Branchipus branchireme Branchiura branchiurous branchless branchlet branchlike branchling branchman branchstand branchway branchy brand branded Brandenburg Brandenburger brander brandering brandied brandify brandise brandish brandisher brandisite brandless brandling brandreth brandy brandyball brandyman brandywine brangle brangled branglement brangler brangling branial brank brankie brankursine branle branner brannerite branny bransle bransolder brant Branta brantail brantness Brasenia brash brashiness brashness brashy brasiletto brasque brass brassage brassard brassart Brassavola brassbound brassbounder brasse brasser brasset Brassia brassic Brassica Brassicaceae brassicaceous brassidic brassie brassiere brassily brassiness brassish brasslike brassware brasswork brassworker brassworks brassy brassylic brat bratling bratstvo brattach brattice bratticer bratticing brattie brattish brattishing brattle brauna Brauneberger Brauneria braunite Brauronia Brauronian Brava bravade bravado bravadoism brave bravehearted bravely braveness braver bravery braving bravish bravo bravoite bravura bravuraish braw brawl brawler brawling brawlingly brawlsome brawly brawlys brawn brawned brawnedness brawner brawnily brawniness brawny braws braxy bray brayer brayera brayerin braystone braza braze brazen brazenface brazenfaced brazenfacedly brazenly brazenness brazer brazera brazier braziery brazil brazilein brazilette Brazilian brazilin brazilite brazilwood breach breacher breachful breachy bread breadbasket breadberry breadboard breadbox breadearner breadearning breaden breadfruit breadless breadlessness breadmaker breadmaking breadman breadnut breadroot breadseller breadstuff breadth breadthen breadthless breadthriders breadthways breadthwise breadwinner breadwinning breaghe break breakable breakableness breakably breakage breakaway breakax breakback breakbones breakdown breaker breakerman breakfast breakfaster breakfastless breaking breakless breakneck breakoff breakout breakover breakshugh breakstone breakthrough breakup breakwater breakwind bream breards breast breastband breastbeam breastbone breasted breaster breastfeeding breastful breastheight breasthook breastie breasting breastless breastmark breastpiece breastpin breastplate breastplow breastrail breastrope breastsummer breastweed breastwise breastwood breastwork breath breathable breathableness breathe breathed breather breathful breathiness breathing breathingly breathless breathlessly breathlessness breathseller breathy breba breccia breccial brecciated brecciation brecham Brechites breck brecken bred bredbergite brede bredi bree breech breechblock breechcloth breechclout breeched breeches breechesflower breechesless breeching breechless breechloader breed breedable breedbate breeder breediness breeding breedy breek breekless breekums breeze breezeful breezeless breezelike breezeway breezily breeziness breezy bregma bregmata bregmate bregmatic brehon brehonship brei breislakite breithauptite brekkle brelaw breloque breme bremely bremeness Bremia bremsstrahlung brennage brent Brenthis brephic Brescian bret bretelle bretesse breth brethren Breton Bretonian Bretschneideraceae brett brettice Bretwalda Bretwaldadom Bretwaldaship breunnerite breva breve brevet brevetcy breviary breviate breviature brevicaudate brevicipitid Brevicipitidae breviconic brevier brevifoliate breviger brevilingual breviloquence breviloquent breviped brevipen brevipennate breviradiate brevirostral brevirostrate Brevirostrines brevit brevity brew brewage brewer brewership brewery brewhouse brewing brewis brewmaster brewst brewster brewsterite brey Brian briar briarberry Briard Briarean Briareus briarroot bribe bribee bribegiver bribegiving bribemonger briber bribery bribetaker bribetaking bribeworthy Bribri brichen brichette brick brickbat brickcroft brickel bricken brickfield brickfielder brickhood bricking brickish brickkiln bricklayer bricklaying brickle brickleness bricklike brickliner bricklining brickly brickmaker brickmaking brickmason brickset bricksetter bricktimber brickwise brickwork bricky brickyard bricole bridal bridale bridaler bridally Bride bride bridebed bridebowl bridecake bridechamber bridecup bridegod bridegroom bridegroomship bridehead bridehood brideknot bridelace brideless bridelike bridely bridemaid bridemaiden bridemaidship brideship bridesmaid bridesmaiding bridesman bridestake bridewain brideweed bridewell bridewort bridge bridgeable bridgeboard bridgebote bridgebuilder bridgebuilding bridged bridgehead bridgekeeper bridgeless bridgelike bridgemaker bridgemaking bridgeman bridgemaster bridgepot Bridger bridger Bridget bridgetree bridgeward bridgewards bridgeway bridgework bridging bridle bridled bridleless bridleman bridler bridling bridoon brief briefing briefless brieflessly brieflessness briefly briefness briefs brier brierberry briered brierroot brierwood briery brieve brig brigade brigadier brigadiership brigalow brigand brigandage brigander brigandine brigandish brigandishly brigandism Brigantes Brigantia brigantine brigatry brigbote brigetty Briggsian Brighella Brighid bright brighten brightener brightening Brighteyes brighteyes brightish brightly brightness brightsmith brightsome brightsomeness brightwork Brigid Brigittine brill brilliance brilliancy brilliandeer brilliant brilliantine brilliantly brilliantness brilliantwise brilliolette brillolette brills brim brimborion brimborium brimful brimfully brimfulness briming brimless brimmed brimmer brimming brimmingly brimstone brimstonewort brimstony brin brindlish brine brinehouse brineless brineman briner bring bringal bringall bringer brininess brinish brinishness brinjal brinjarry brink brinkless briny brioche briolette brique briquette brisk brisken brisket briskish briskly briskness brisling brisque briss Brissotin Brissotine bristle bristlebird bristlecone bristled bristleless bristlelike bristler bristletail bristlewort bristliness bristly Bristol brisure brit Britain Britannia Britannian Britannic Britannically britchka brith brither Briticism British Britisher Britishhood Britishism Britishly Britishness Briton Britoness britska Brittany britten brittle brittlebush brittlely brittleness brittlestem brittlewood brittlewort brittling Briza brizz broach broacher broad broadacre broadax broadbill Broadbrim broadbrim broadcast broadcaster broadcloth broaden broadhead broadhearted broadhorn broadish broadleaf broadloom broadly broadmouth broadness broadpiece broadshare broadsheet broadside broadspread broadsword broadtail broadthroat Broadway broadway Broadwayite broadways broadwife broadwise brob Brobdingnag Brobdingnagian brocade brocaded brocard brocardic brocatel brocatello broccoli broch brochan brochant brochantite broche brochette brochidodromous brocho brochure brock brockage brocked brocket brockle brod brodder brodeglass brodequin broderer Brodiaea brog brogan brogger broggerite broggle brogue brogueful brogueneer broguer broguery broguish broider broiderer broideress broidery broigne broil broiler broiling broilingly brokage broke broken brokenhearted brokenheartedly brokenheartedness brokenly brokenness broker brokerage brokeress brokership broking brolga broll brolly broma bromacetanilide bromacetate bromacetic bromacetone bromal bromalbumin bromamide bromargyrite bromate bromaurate bromauric brombenzamide brombenzene brombenzyl bromcamphor bromcresol brome bromeigon Bromeikon bromeikon Bromelia Bromeliaceae bromeliaceous bromeliad bromelin bromellite bromethyl bromethylene bromgelatin bromhidrosis bromhydrate bromhydric Bromian bromic bromide bromidic bromidically bromidrosis brominate bromination bromindigo bromine brominism brominize bromiodide Bromios bromism bromite Bromius bromization bromize bromizer bromlite bromoacetone bromoaurate bromoauric bromobenzene bromobenzyl bromocamphor bromochlorophenol bromocresol bromocyanidation bromocyanide bromocyanogen bromoethylene bromoform bromogelatin bromohydrate bromohydrin bromoil bromoiodide bromoiodism bromoiodized bromoketone bromol bromomania bromomenorrhea bromomethane bromometric bromometrical bromometrically bromometry bromonaphthalene bromophenol bromopicrin bromopnea bromoprotein bromothymol bromous bromphenol brompicrin bromthymol bromuret Bromus bromvogel bromyrite bronc bronchadenitis bronchi bronchia bronchial bronchially bronchiarctia bronchiectasis bronchiectatic bronchiloquy bronchiocele bronchiocrisis bronchiogenic bronchiolar bronchiole bronchioli bronchiolitis bronchiolus bronchiospasm bronchiostenosis bronchitic bronchitis bronchium bronchoadenitis bronchoalveolar bronchoaspergillosis bronchoblennorrhea bronchocavernous bronchocele bronchocephalitis bronchoconstriction bronchoconstrictor bronchodilatation bronchodilator bronchoegophony bronchoesophagoscopy bronchogenic bronchohemorrhagia broncholemmitis broncholith broncholithiasis bronchomotor bronchomucormycosis bronchomycosis bronchopathy bronchophonic bronchophony bronchophthisis bronchoplasty bronchoplegia bronchopleurisy bronchopneumonia bronchopneumonic bronchopulmonary bronchorrhagia bronchorrhaphy bronchorrhea bronchoscope bronchoscopic bronchoscopist bronchoscopy bronchospasm bronchostenosis bronchostomy bronchotetany bronchotome bronchotomist bronchotomy bronchotracheal bronchotyphoid bronchotyphus bronchovesicular bronchus bronco broncobuster brongniardite bronk Bronteana bronteon brontephobia Brontesque bronteum brontide brontogram brontograph brontolite brontology brontometer brontophobia Brontops Brontosaurus brontoscopy Brontotherium Brontozoum Bronx bronze bronzed bronzelike bronzen bronzer bronzesmith bronzewing bronzify bronzine bronzing bronzite bronzitite bronzy broo brooch brood brooder broodiness brooding broodingly broodless broodlet broodling broody brook brookable brooked brookflower brookie brookite brookless brooklet brooklike brooklime Brooklynite brookside brookweed brooky brool broom broombush broomcorn broomer broommaker broommaking broomrape broomroot broomshank broomstaff broomstick broomstraw broomtail broomweed broomwood broomwort broomy broon broose broozled brose Brosimum brosot brosy brot brotan brotany broth brothel brotheler brothellike brothelry brother brotherhood brotherless brotherlike brotherliness brotherly brothership Brotherton brotherwort brothy brotocrystal Brotula brotulid Brotulidae brotuliform brough brougham brought Broussonetia brow browache Browallia browallia browband browbeat browbeater browbound browden browed browis browless browman brown brownback browner Brownian brownie browniness browning Browningesque brownish Brownism Brownist Brownistic Brownistical brownly brownness brownout brownstone browntail browntop brownweed brownwort browny browpiece browpost browse browser browsick browsing browst bruang Brucella brucellosis Bruchidae Bruchus brucia brucina brucine brucite bruckle bruckled bruckleness Bructeri brugh brugnatellite bruin bruise bruiser bruisewort bruising bruit bruiter bruke Brule brulee brulyie brulyiement brumal Brumalia brumby brume Brummagem brummagem brumous brumstane brumstone brunch Brunella Brunellia Brunelliaceae brunelliaceous brunet brunetness brunette brunetteness Brunfelsia brunissure Brunistic brunneous Brunnichia Bruno Brunonia Brunoniaceae Brunonian Brunonism Brunswick brunswick brunt bruscus brush brushable brushball brushbird brushbush brushed brusher brushes brushet brushful brushiness brushing brushite brushland brushless brushlessness brushlet brushlike brushmaker brushmaking brushman brushoff brushproof brushwood brushwork brushy brusque brusquely brusqueness Brussels brustle brut Bruta brutage brutal brutalism brutalist brutalitarian brutality brutalization brutalize brutally brute brutedom brutelike brutely bruteness brutification brutify bruting brutish brutishly brutishness brutism brutter Brutus bruzz Bryaceae bryaceous Bryales Bryanism Bryanite Bryanthus bryogenin bryological bryologist bryology Bryonia bryonidin bryonin bryony Bryophyllum Bryophyta bryophyte bryophytic Bryozoa bryozoan bryozoon bryozoum Brython Brythonic Bryum Bu bu bual buaze bub buba bubal bubaline Bubalis bubalis Bubastid Bubastite bubble bubbleless bubblement bubbler bubbling bubblingly bubblish bubbly bubby bubbybush Bube bubinga Bubo bubo buboed bubonalgia bubonic Bubonidae bubonocele bubukle bucare bucca buccal buccally buccan buccaneer buccaneerish buccate Buccellarius buccina buccinal buccinator buccinatory Buccinidae bucciniform buccinoid Buccinum Bucco buccobranchial buccocervical buccogingival buccolabial buccolingual bucconasal Bucconidae Bucconinae buccopharyngeal buccula Bucculatrix bucentaur Bucephala Bucephalus Buceros Bucerotes Bucerotidae Bucerotinae Buchanan Buchanite buchite Buchloe Buchmanism Buchmanite Buchnera buchnerite buchonite buchu buck buckaroo buckberry buckboard buckbrush buckbush bucked buckeen bucker bucket bucketer bucketful bucketing bucketmaker bucketmaking bucketman buckety buckeye buckhorn buckhound buckie bucking buckish buckishly buckishness buckjump buckjumper bucklandite buckle buckled buckleless buckler Buckleya buckling bucklum bucko buckplate buckpot buckra buckram bucksaw buckshee buckshot buckskin buckskinned buckstall buckstay buckstone bucktail buckthorn bucktooth buckwagon buckwash buckwasher buckwashing buckwheat buckwheater buckwheatlike bucky bucoliast bucolic bucolical bucolically bucolicism Bucorvinae Bucorvus bucrane bucranium bud buda buddage budder Buddh Buddha Buddhahood Buddhaship buddhi Buddhic Buddhism Buddhist Buddhistic Buddhistical Buddhology budding buddle Buddleia buddleman buddler buddy budge budger budgeree budgereegah budgerigar budgerow budget budgetary budgeteer budgeter budgetful Budh budless budlet budlike budmash Budorcas budtime Budukha Buduma budwood budworm budzat Buettneria Buettneriaceae bufagin buff buffable buffalo buffaloback buffball buffcoat buffed buffer buffet buffeter buffing buffle bufflehead bufflehorn buffont buffoon buffoonery buffoonesque buffoonish buffoonism buffware buffy bufidin bufo Bufonidae bufonite bufotalin bug bugaboo bugan bugbane bugbear bugbeardom bugbearish bugbite bugdom bugfish bugger buggery bugginess buggy buggyman bughead bughouse Bugi Buginese Buginvillaea bugle bugled bugler buglet bugleweed buglewort bugloss bugologist bugology bugproof bugre bugseed bugweed bugwort buhl buhr buhrstone build buildable builder building buildingless buildress buildup built buirdly buisson buist Bukat Bukeyef bukh Bukidnon bukshi bulak Bulanda bulb bulbaceous bulbar bulbed bulbiferous bulbiform bulbil Bulbilis bulbilla bulbless bulblet bulblike bulbocapnin bulbocapnine bulbocavernosus bulbocavernous Bulbochaete Bulbocodium bulbomedullary bulbomembranous bulbonuclear Bulbophyllum bulborectal bulbose bulbospinal bulbotuber bulbous bulbul bulbule bulby bulchin Bulgar Bulgari Bulgarian Bulgaric Bulgarophil bulge bulger bulginess bulgy bulimia bulimiac bulimic bulimiform bulimoid Bulimulidae Bulimus bulimy bulk bulked bulker bulkhead bulkheaded bulkily bulkiness bulkish bulky bull bulla bullace bullamacow bullan bullary bullate bullated bullation bullback bullbaiting bullbat bullbeggar bullberry bullbird bullboat bullcart bullcomber bulldog bulldogged bulldoggedness bulldoggy bulldogism bulldoze bulldozer buller bullet bulleted bullethead bulletheaded bulletheadedness bulletin bulletless bulletlike bulletmaker bulletmaking bulletproof bulletwood bullety bullfeast bullfight bullfighter bullfighting bullfinch bullfist bullflower bullfoot bullfrog bullhead bullheaded bullheadedly bullheadedness bullhide bullhoof bullhorn Bullidae bulliform bullimong bulling bullion bullionism bullionist bullionless bullish bullishly bullishness bullism bullit bullneck bullnose bullnut bullock bullocker Bullockite bullockman bullocky Bullom bullous bullpates bullpoll bullpout bullskin bullsticker bullsucker bullswool bulltoad bullule bullweed bullwhack bullwhacker bullwhip bullwort bully bullyable bullydom bullyhuff bullying bullyism bullyrag bullyragger bullyragging bullyrook bulrush bulrushlike bulrushy bulse bult bulter bultey bultong bultow bulwand bulwark bum bumbailiff bumbailiffship bumbarge bumbaste bumbaze bumbee bumbershoot bumble bumblebee bumbleberry Bumbledom bumblefoot bumblekite bumblepuppy bumbler bumbo bumboat bumboatman bumboatwoman bumclock Bumelia bumicky bummalo bummaree bummed bummer bummerish bummie bumming bummler bummock bump bumpee bumper bumperette bumpily bumpiness bumping bumpingly bumpkin bumpkinet bumpkinish bumpkinly bumpology bumptious bumptiously bumptiousness bumpy bumtrap bumwood bun Buna buna buncal bunce bunch bunchberry buncher bunchflower bunchily bunchiness bunchy buncombe bund Bunda Bundahish Bundeli bunder Bundestag bundle bundler bundlerooted bundlet bundobust bundook Bundu bundweed bundy bunemost bung Bunga bungaloid bungalow bungarum Bungarus bungee bungerly bungey bungfu bungfull bunghole bungle bungler bunglesome bungling bunglingly bungmaker bungo bungwall bungy Buninahua bunion bunk bunker bunkerman bunkery bunkhouse bunkie bunkload bunko bunkum bunnell bunny bunnymouth bunodont Bunodonta bunolophodont Bunomastodontidae bunoselenodont bunsenite bunt buntal bunted Bunter bunter bunting buntline bunton bunty bunya bunyah bunyip Bunyoro buoy buoyage buoyance buoyancy buoyant buoyantly buoyantness Buphaga buphthalmia buphthalmic Buphthalmum bupleurol Bupleurum buplever buprestid Buprestidae buprestidan Buprestis bur buran burao Burbank burbank burbankian Burbankism burbark Burberry burble burbler burbly burbot burbush burd burdalone burden burdener burdenless burdenous burdensome burdensomely burdensomeness burdie Burdigalian burdock burdon bure bureau bureaucracy bureaucrat bureaucratic bureaucratical bureaucratically bureaucratism bureaucratist bureaucratization bureaucratize bureaux burel burele buret burette burfish burg burgage burgality burgall burgee burgensic burgeon burgess burgessdom burggrave burgh burghal burghalpenny burghbote burghemot burgher burgherage burgherdom burgheress burgherhood burghermaster burghership burghmaster burghmoot burglar burglarious burglariously burglarize burglarproof burglary burgle burgomaster burgomastership burgonet burgoo burgoyne burgrave burgraviate burgul Burgundian Burgundy burgus burgware burhead Burhinidae Burhinus Buri buri burial burian Buriat buried burier burin burinist burion buriti burka burke burker burkundaz burl burlap burled burler burlesque burlesquely burlesquer burlet burletta Burley burlily burliness Burlington burly Burman Burmannia Burmanniaceae burmanniaceous Burmese burmite burn burnable burnbeat burned burner burnet burnetize burnfire burnie burniebee burning burningly burnish burnishable burnisher burnishing burnishment burnoose burnoosed burnous burnout burnover Burnsian burnside burnsides burnt burntweed burnut burnwood burny buro burp burr burrah burrawang burred burrel burrer burrgrailer burring burrish burrito burrknot burro burrobrush burrow burroweed burrower burrowstown burry bursa bursal bursar bursarial bursarship bursary bursate bursattee bursautee burse burseed Bursera Burseraceae Burseraceous bursicle bursiculate bursiform bursitis burst burster burstwort burt burthenman burton burtonization burtonize burucha Burushaski Burut burweed bury burying bus Busaos busby buscarl buscarle bush bushbeater bushbuck bushcraft bushed bushel busheler bushelful bushelman bushelwoman busher bushfighter bushfighting bushful bushhammer bushi bushily bushiness bushing bushland bushless bushlet bushlike bushmaker bushmaking Bushman bushmanship bushmaster bushment Bushongo bushranger bushranging bushrope bushveld bushwa bushwhack bushwhacker bushwhacking bushwife bushwoman bushwood bushy busied busily busine business businesslike businesslikeness businessman businesswoman busk busked busker busket buskin buskined buskle busky busman buss busser bussock bussu bust bustard busted bustee buster busthead bustic busticate bustle bustled bustler bustling bustlingly busy busybodied busybody busybodyish busybodyism busybodyness Busycon busyhead busying busyish busyness busywork but butadiene butadiyne butanal butane butanoic butanol butanolid butanolide butanone butch butcher butcherbird butcherdom butcherer butcheress butchering butcherless butcherliness butcherly butcherous butchery Bute Butea butein butene butenyl Buteo buteonine butic butine butler butlerage butlerdom butleress butlerism butlerlike butlership butlery butment Butomaceae butomaceous Butomus butoxy butoxyl Butsu butt butte butter butteraceous butterback butterball butterbill butterbird butterbox butterbump butterbur butterbush buttercup buttered butterfat butterfingered butterfingers butterfish butterflower butterfly butterflylike butterhead butterine butteriness butteris butterjags butterless butterlike buttermaker buttermaking butterman buttermilk buttermonger buttermouth butternose butternut butterroot butterscotch butterweed butterwife butterwoman butterworker butterwort butterwright buttery butteryfingered buttgenbachite butting buttinsky buttle buttock buttocked buttocker button buttonball buttonbur buttonbush buttoned buttoner buttonhold buttonholder buttonhole buttonholer buttonhook buttonless buttonlike buttonmold buttons buttonweed buttonwood buttony buttress buttressless buttresslike buttstock buttwoman buttwood butty buttyman butyl butylamine butylation butylene butylic Butyn butyne butyr butyraceous butyral butyraldehyde butyrate butyric butyrically butyrin butyrinase butyrochloral butyrolactone butyrometer butyrometric butyrone butyrous butyrousness butyryl Buxaceae buxaceous Buxbaumia Buxbaumiaceae buxerry buxom buxomly buxomness Buxus buy buyable buyer Buyides buzane buzylene buzz buzzard buzzardlike buzzardly buzzer buzzerphone buzzgloak buzzies buzzing buzzingly buzzle buzzwig buzzy by Byblidaceae Byblis bycoket bye byee byegaein byeman byepath byerite byerlite byestreet byeworker byeworkman bygane byganging bygo bygoing bygone byhand bylaw bylawman byname bynedestin Bynin byon byordinar byordinary byous byously bypass bypasser bypast bypath byplay byre byreman byrewards byrewoman byrlaw byrlawman byrnie byroad Byronesque Byronian Byroniana Byronic Byronically Byronics Byronish Byronism Byronist Byronite Byronize byrrus Byrsonima byrthynsak Bysacki bysen bysmalith byspell byssaceous byssal byssiferous byssin byssine byssinosis byssogenous byssoid byssolite byssus bystander bystreet byth bytime bytownite bytownitite bywalk bywalker byway bywoner byword bywork Byzantian Byzantine Byzantinesque Byzantinism Byzantinize C c ca caam caama caaming caapeba caatinga cab caba cabaan caback cabaho cabal cabala cabalassou cabaletta cabalic cabalism cabalist cabalistic cabalistical cabalistically caballer caballine caban cabana cabaret cabas cabasset cabassou cabbage cabbagehead cabbagewood cabbagy cabber cabble cabbler cabby cabda cabdriver cabdriving cabellerote caber cabernet cabestro cabezon cabilliau cabin Cabinda cabinet cabinetmaker cabinetmaking cabinetry cabinetwork cabinetworker cabinetworking cabio Cabirean Cabiri Cabiria Cabirian Cabiric Cabiritic cable cabled cablegram cableless cablelike cableman cabler cablet cableway cabling cabman cabob caboceer cabochon cabocle Cabomba Cabombaceae caboodle cabook caboose caboshed cabot cabotage cabree cabrerite cabreuva cabrilla cabriole cabriolet cabrit cabstand cabureiba cabuya Caca Cacajao Cacalia cacam Cacan Cacana cacanthrax cacao Cacara Cacatua Cacatuidae Cacatuinae Caccabis cacesthesia cacesthesis cachalot cachaza cache cachectic cachemia cachemic cachet cachexia cachexic cachexy cachibou cachinnate cachinnation cachinnator cachinnatory cacholong cachou cachrys cachucha cachunde Cacicus cacidrosis caciocavallo cacique caciqueship caciquism cack cackerel cackle cackler cacocholia cacochroia cacochylia cacochymia cacochymic cacochymical cacochymy cacocnemia cacodaemoniac cacodaemonial cacodaemonic cacodemon cacodemonia cacodemoniac cacodemonial cacodemonic cacodemonize cacodemonomania cacodontia cacodorous cacodoxian cacodoxical cacodoxy cacodyl cacodylate cacodylic cacoeconomy cacoepist cacoepistic cacoepy cacoethes cacoethic cacogalactia cacogastric cacogenesis cacogenic cacogenics cacogeusia cacoglossia cacographer cacographic cacographical cacography cacology cacomagician cacomelia cacomistle cacomixl cacomixle cacomorphia cacomorphosis caconychia caconym caconymic cacoon cacopathy cacopharyngia cacophonia cacophonic cacophonical cacophonically cacophonist cacophonize cacophonous cacophonously cacophony cacophthalmia cacoplasia cacoplastic cacoproctia cacorhythmic cacorrhachis cacorrhinia cacosmia cacospermia cacosplanchnia cacostomia cacothansia cacotheline cacothesis cacothymia cacotrichia cacotrophia cacotrophic cacotrophy cacotype cacoxene cacoxenite cacozeal cacozealous cacozyme Cactaceae cactaceous Cactales cacti cactiform cactoid Cactus cacuminal cacuminate cacumination cacuminous cacur cad cadalene cadamba cadastral cadastration cadastre cadaver cadaveric cadaverine cadaverize cadaverous cadaverously cadaverousness cadbait cadbit cadbote caddice caddiced Caddie caddie caddis caddised caddish caddishly caddishness caddle Caddo Caddoan caddow caddy cade cadelle cadence cadenced cadency cadent cadential cadenza cader caderas Cadet cadet cadetcy cadetship cadette cadew cadge cadger cadgily cadginess cadgy cadi cadilesker cadinene cadism cadiueio cadjan cadlock Cadmean cadmia cadmic cadmide cadmiferous cadmium cadmiumize Cadmopone Cadmus cados cadrans cadre cadua caduac caduca caducary caducean caduceus caduciary caducibranch Caducibranchiata caducibranchiate caducicorn caducity caducous cadus Cadwal Cadwallader cadweed caeca caecal caecally caecectomy caeciform Caecilia Caeciliae caecilian Caeciliidae caecitis caecocolic caecostomy caecotomy caecum Caedmonian Caedmonic Caelian caelometer Caelum Caelus Caenogaea Caenogaean Caenolestes caenostylic caenostyly caeoma caeremoniarius Caerphilly Caesalpinia Caesalpiniaceae caesalpiniaceous Caesar Caesardom Caesarean Caesareanize Caesarian Caesarism Caesarist Caesarize caesaropapacy caesaropapism caesaropopism Caesarotomy Caesarship caesious caesura caesural caesuric cafeneh cafenet cafeteria caffa caffeate caffeic caffeina caffeine caffeinic caffeinism caffeism caffeol caffeone caffetannic caffetannin caffiso caffle caffoline caffoy cafh cafiz caftan caftaned cag Cagayan cage caged cageful cageless cagelike cageling cageman cager cagester cagework cagey caggy cagily cagit cagmag Cagn Cahenslyism Cahill cahincic Cahita cahiz Cahnite Cahokia cahoot cahot cahow Cahuapana Cahuilla caickle caid cailcedra cailleach caimacam caimakam caiman caimitillo caimito Cain cain Caingang Caingua Cainian Cainish Cainism Cainite Cainitic caique caiquejee Cairba caird Cairene cairn cairned cairngorm cairngorum cairny Cairo caisson caissoned Caitanyas Caite caitiff Cajan Cajanus cajeput cajole cajolement cajoler cajolery cajoling cajolingly cajuela Cajun cajun cajuput cajuputene cajuputol Cakavci Cakchikel cake cakebox cakebread cakehouse cakemaker cakemaking caker cakette cakewalk cakewalker cakey Cakile caky cal calaba Calabar Calabari calabash calabaza calabazilla calaber calaboose calabrasella Calabrese calabrese Calabrian calade Caladium calais calalu Calamagrostis calamanco calamansi Calamariaceae calamariaceous Calamariales calamarian calamarioid calamaroid calamary calambac calambour calamiferous calamiform calaminary calamine calamint Calamintha calamistral calamistrum calamite calamitean Calamites calamitoid calamitous calamitously calamitousness calamity Calamodendron calamondin Calamopitys Calamospermae Calamostachys calamus calander Calandra calandria Calandridae Calandrinae Calandrinia calangay calantas Calanthe calapite Calappa Calappidae Calas calascione calash Calathea calathian calathidium calathiform calathiscus calathus Calatrava calaverite calbroben calcaneal calcaneoastragalar calcaneoastragaloid calcaneocuboid calcaneofibular calcaneonavicular calcaneoplantar calcaneoscaphoid calcaneotibial calcaneum calcaneus calcar calcarate Calcarea calcareoargillaceous calcareobituminous calcareocorneous calcareosiliceous calcareosulphurous calcareous calcareously calcareousness calcariferous calcariform calcarine calced calceiform calcemia Calceolaria calceolate Calchaqui Calchaquian calcic calciclase calcicole calcicolous calcicosis calciferol Calciferous calciferous calcific calcification calcified calciform calcifugal calcifuge calcifugous calcify calcigenous calcigerous calcimeter calcimine calciminer calcinable calcination calcinatory calcine calcined calciner calcinize calciobiotite calciocarnotite calcioferrite calcioscheelite calciovolborthite calcipexy calciphile calciphilia calciphilous calciphobe calciphobous calciphyre calciprivic calcisponge Calcispongiae calcite calcitestaceous calcitic calcitrant calcitrate calcitreation calcium calcivorous calcographer calcographic calcography calcrete calculability calculable Calculagraph calculary calculate calculated calculatedly calculating calculatingly calculation calculational calculative calculator calculatory calculi calculiform calculist calculous calculus Calcydon calden caldron calean Caleb Caledonia Caledonian caledonite calefacient calefaction calefactive calefactor calefactory calelectric calelectrical calelectricity Calemes calendal calendar calendarer calendarial calendarian calendaric calender calenderer calendric calendrical calendry calends Calendula calendulin calentural calenture calenturist calepin calescence calescent calf calfbound calfhood calfish calfkill calfless calflike calfling calfskin Caliban Calibanism caliber calibered calibogus calibrate calibration calibrator calibre Caliburn Caliburno calicate calices caliciform calicle calico calicoback calicoed calicular caliculate Calicut calid calidity caliduct California Californian californite californium caliga caligated caliginous caliginously caligo Calimeris Calinago calinda calinut caliological caliologist caliology calipash calipee caliper caliperer calipers caliph caliphal caliphate caliphship Calista calistheneum calisthenic calisthenical calisthenics Calite caliver calix Calixtin Calixtus calk calkage calker calkin calking call Calla callable callainite callant callboy caller callet calli Callianassa Callianassidae Calliandra Callicarpa Callicebus callid callidity callidness calligraph calligrapha calligrapher calligraphic calligraphical calligraphically calligraphist calligraphy calling Callionymidae Callionymus Calliope calliophone Calliopsis calliper calliperer Calliphora calliphorid Calliphoridae calliphorine callipygian callipygous Callirrhoe Callisaurus callisection callisteia Callistemon Callistephus Callithrix callithump callithumpian Callitrichaceae callitrichaceous Callitriche Callitrichidae Callitris callitype callo Callorhynchidae Callorhynchus callosal callose callosity callosomarginal callosum callous callously callousness Callovian callow callower callowman callowness Calluna callus Callynteria calm calmant calmative calmer calmierer calmingly calmly calmness calmy Calocarpum Calochortaceae Calochortus calodemon calography calomba calomel calomorphic Calonectria Calonyction calool Calophyllum Calopogon calor calorescence calorescent caloric caloricity calorie calorifacient calorific calorifical calorifically calorification calorifics calorifier calorify calorigenic calorimeter calorimetric calorimetrical calorimetrically calorimetry calorimotor caloris calorisator calorist Calorite calorize calorizer Calosoma Calotermes calotermitid Calotermitidae Calothrix calotte calotype calotypic calotypist caloyer calp calpac calpack calpacked calpulli Caltha caltrap caltrop calumba calumet calumniate calumniation calumniative calumniator calumniatory calumnious calumniously calumniousness calumny Calusa calutron Calvados calvaria calvarium Calvary Calvatia calve calved calver calves Calvin Calvinian Calvinism Calvinist Calvinistic Calvinistical Calvinistically Calvinize calvish calvities calvity calvous calx calycanth Calycanthaceae calycanthaceous calycanthemous calycanthemy calycanthine Calycanthus calycate Calyceraceae calyceraceous calyces calyciferous calycifloral calyciflorate calyciflorous calyciform calycinal calycine calycle calycled Calycocarpum calycoid calycoideous Calycophora Calycophorae calycophoran Calycozoa calycozoan calycozoic calycozoon calycular calyculate calyculated calycule calyculus Calydon Calydonian Calymene calymma calyphyomy calypsist Calypso calypso calypsonian calypter Calypterae Calyptoblastea calyptoblastic Calyptorhynchus calyptra Calyptraea Calyptranthes Calyptrata Calyptratae calyptrate calyptriform calyptrimorphous calyptro calyptrogen Calyptrogyne Calystegia calyx cam camaca Camacan camagon camail camailed Camaldolensian Camaldolese Camaldolesian Camaldolite Camaldule Camaldulian camalote caman camansi camara camaraderie Camarasaurus camarilla camass Camassia camata camatina Camaxtli camb Camball Cambalo Cambarus cambaye camber Cambeva cambial cambiform cambiogenetic cambism cambist cambistry cambium Cambodian cambogia cambrel cambresine Cambrian Cambric cambricleaf cambuca Cambuscan Cambyuskan Came came cameist camel camelback cameleer Camelid Camelidae Camelina cameline camelish camelishness camelkeeper Camellia Camelliaceae camellike camellin Camellus camelman cameloid Cameloidea camelopard Camelopardalis Camelopardid Camelopardidae Camelopardus camelry Camelus Camembert Camenae Camenes cameo cameograph cameography camera cameral cameralism cameralist cameralistic cameralistics cameraman Camerata camerate camerated cameration camerier Camerina Camerinidae camerist camerlingo Cameronian Camestres camilla camillus camion camisado Camisard camise camisia camisole camlet camleteen Cammarum cammed cammock cammocky camomile camoodi camoodie Camorra Camorrism Camorrist Camorrista camouflage camouflager camp Campa campagna campagnol campaign campaigner campana campane campanero Campanian campaniform campanile campaniliform campanilla campanini campanist campanistic campanologer campanological campanologically campanologist campanology Campanula Campanulaceae campanulaceous Campanulales campanular Campanularia Campanulariae campanularian Campanularidae Campanulatae campanulate campanulated campanulous Campaspe Campbellism Campbellite campbellite campcraft Campe Campephagidae campephagine Campephilus camper campestral campfight campfire campground camphane camphanic camphanone camphanyl camphene camphine camphire campho camphocarboxylic camphoid camphol campholic campholide campholytic camphor camphoraceous camphorate camphoric camphorize camphorone camphoronic camphoroyl camphorphorone camphorwood camphory camphoryl camphylene Campignian campimeter campimetrical campimetry Campine campion cample campmaster campo Campodea campodeid Campodeidae campodeiform campodeoid campody Camponotus campoo camporee campshed campshedding campsheeting campshot campstool camptodrome camptonite Camptosorus campulitropal campulitropous campus campward campylite campylodrome campylometer Campyloneuron campylospermous campylotropal campylotropous camshach camshachle camshaft camstane camstone camuning camus camused camwood can Cana Canaan Canaanite Canaanitess Canaanitic Canaanitish canaba Canacee Canada canada Canadian Canadianism Canadianization Canadianize canadine canadite canadol canaigre canaille canajong canal canalage canalboat canalicular canaliculate canaliculated canaliculation canaliculi canaliculization canaliculus canaliferous canaliform canalization canalize canaller canalling canalman canalside Canamary canamo Cananaean Cananga Canangium canape canapina canard Canari canari Canarian canarin Canariote Canarium Canarsee canary canasta canaster canaut Canavali Canavalia canavalin Canberra cancan cancel cancelable cancelation canceleer canceler cancellarian cancellate cancellated cancellation cancelli cancellous cancellus cancelment cancer cancerate canceration cancerdrops cancered cancerigenic cancerism cancerophobe cancerophobia cancerous cancerously cancerousness cancerroot cancerweed cancerwort canch canchalagua Canchi Cancri Cancrid cancriform cancrinite cancrisocial cancrivorous cancrizans cancroid cancrophagous cancrum cand Candace candareen candela candelabra candelabrum candelilla candent candescence candescent candescently candid candidacy candidate candidateship candidature candidly candidness candied candier candify Candiot candiru candle candleball candlebeam candleberry candlebomb candlebox candlefish candleholder candlelight candlelighted candlelighter candlelighting candlelit candlemaker candlemaking Candlemas candlenut candlepin candler candlerent candleshine candleshrift candlestand candlestick candlesticked candlestickward candlewaster candlewasting candlewick candlewood candlewright candock Candollea Candolleaceae candolleaceous candor candroy candy candymaker candymaking candys candystick candytuft candyweed cane canebrake canel canelike canella Canellaceae canellaceous Canelo canelo caneology canephor canephore canephoros canephroi caner canescence canescent canette canewise canework Canfield canfieldite canful cangan cangia cangle cangler cangue canhoop Canichana Canichanan canicola Canicula canicular canicule canid Canidae Canidia canille caninal canine caniniform caninity caninus canioned canions Canis Canisiana canistel canister canities canjac cank canker cankerberry cankerbird cankereat cankered cankeredly cankeredness cankerflower cankerous cankerroot cankerweed cankerworm cankerwort cankery canmaker canmaking canman Canna canna cannabic Cannabinaceae cannabinaceous cannabine cannabinol Cannabis cannabism Cannaceae cannaceous cannach canned cannel cannelated cannelure cannelured cannequin canner cannery cannet cannibal cannibalean cannibalic cannibalish cannibalism cannibalistic cannibalistically cannibality cannibalization cannibalize cannibally cannikin cannily canniness canning cannon cannonade cannoned cannoneer cannoneering Cannonism cannonproof cannonry cannot Cannstatt cannula cannular cannulate cannulated canny canoe canoeing Canoeiro canoeist canoeload canoeman canoewood canon canoncito canoness canonic canonical canonically canonicalness canonicals canonicate canonicity canonics canonist canonistic canonistical canonizant canonization canonize canonizer canonlike canonry canonship canoodle canoodler Canopic canopic Canopus canopy canorous canorously canorousness Canossa canroy canroyer canso cant Cantab cantabank cantabile Cantabri Cantabrian Cantabrigian Cantabrize cantala cantalite cantaloupe cantankerous cantankerously cantankerousness cantar cantara cantaro cantata Cantate cantation cantative cantatory cantboard canted canteen cantefable canter Canterburian Canterburianism Canterbury canterer canthal Cantharellus Cantharidae cantharidal cantharidate cantharides cantharidian cantharidin cantharidism cantharidize cantharis cantharophilous cantharus canthectomy canthitis cantholysis canthoplasty canthorrhaphy canthotomy canthus cantic canticle cantico cantilena cantilene cantilever cantilevered cantillate cantillation cantily cantina cantiness canting cantingly cantingness cantion cantish cantle cantlet canto Canton canton cantonal cantonalism cantoned cantoner Cantonese cantonment cantoon cantor cantoral Cantorian cantoris cantorous cantorship cantred cantref cantrip cantus cantwise canty Canuck canun canvas canvasback canvasman canvass canvassy cany canyon canzon canzonet caoba Caodaism Caodaist caoutchouc caoutchoucin cap capability capable capableness capably capacious capaciously capaciousness capacitance capacitate capacitation capacitative capacitativly capacitive capacitor capacity capanna capanne caparison capax capcase Cape cape caped capel capelet capelin capeline Capella capellet caper caperbush capercaillie capercally capercut caperer capering caperingly Capernaism Capernaite Capernaitic Capernaitical Capernaitically Capernaitish capernoited capernoitie capernoity capersome caperwort capes capeskin Capetian Capetonian capeweed capewise capful Caph caph caphar caphite Caphtor Caphtorim capias capicha capillaceous capillaire capillament capillarectasia capillarily capillarimeter capillariness capillariomotor capillarity capillary capillation capilliculture capilliform capillitial capillitium capillose capistrate capital capitaldom capitaled capitalism capitalist capitalistic capitalistically capitalizable capitalization capitalize capitally capitalness capitan capitate capitated capitatim capitation capitative capitatum capitellar capitellate capitelliform capitellum Capito Capitol Capitolian Capitoline Capitolium Capitonidae Capitoninae capitoul capitoulate capitulant capitular capitularly capitulary capitulate capitulation capitulator capitulatory capituliform capitulum capivi capkin capless caplin capmaker capmaking capman capmint Capnodium Capnoides capnomancy capocchia capomo capon caponier caponize caponizer caporal capot capote cappadine Cappadocian Capparidaceae capparidaceous Capparis capped cappelenite capper cappie capping capple cappy Capra caprate Caprella Caprellidae caprelline capreol capreolar capreolary capreolate capreoline Capreolus Capri capric capriccetto capricci capriccio caprice capricious capriciously capriciousness Capricorn Capricornid Capricornus caprid caprificate caprification caprificator caprifig Caprifoliaceae caprifoliaceous Caprifolium caprifolium capriform caprigenous Caprimulgi Caprimulgidae Caprimulgiformes caprimulgine Caprimulgus caprin caprine caprinic Capriola capriole Capriote capriped capripede caprizant caproate caproic caproin Capromys caprone capronic capronyl caproyl capryl caprylate caprylene caprylic caprylin caprylone caprylyl capsa capsaicin Capsella capsheaf capshore Capsian capsicin Capsicum capsicum capsid Capsidae capsizal capsize capstan capstone capsula capsulae capsular capsulate capsulated capsulation capsule capsulectomy capsuler capsuliferous capsuliform capsuligerous capsulitis capsulociliary capsulogenous capsulolenticular capsulopupillary capsulorrhaphy capsulotome capsulotomy capsumin captaculum captain captaincy captainess captainly captainry captainship captance captation caption captious captiously captiousness captivate captivately captivating captivatingly captivation captivative captivator captivatrix captive captivity captor captress capturable capture capturer Capuan capuche capuched Capuchin capuchin capucine capulet capulin capybara Caquetio car Cara carabao carabeen carabid Carabidae carabidan carabideous carabidoid carabin carabineer Carabini caraboid Carabus carabus caracal caracara caracol caracole caracoler caracoli caracolite caracoller caracore caract Caractacus caracter Caradoc carafe Caragana Caraguata caraguata Caraho caraibe Caraipa caraipi Caraja Carajas carajura caramba carambola carambole caramel caramelan caramelen caramelin caramelization caramelize caramoussal carancha caranda Carandas caranday carane Caranga carangid Carangidae carangoid Carangus caranna Caranx Carapa carapace carapaced Carapache Carapacho carapacic carapato carapax Carapidae carapine carapo Carapus Carara carat caratch caraunda caravan caravaneer caravanist caravanner caravansary caravanserai caravanserial caravel caraway Carayan carbacidometer carbamate carbamic carbamide carbamido carbamine carbamino carbamyl carbanil carbanilic carbanilide carbarn carbasus carbazic carbazide carbazine carbazole carbazylic carbeen carbene carberry carbethoxy carbethoxyl carbide carbimide carbine carbinol carbinyl carbo carboazotine carbocinchomeronic carbodiimide carbodynamite carbogelatin carbohemoglobin carbohydrase carbohydrate carbohydraturia carbohydrazide carbohydride carbohydrogen carbolate carbolated carbolfuchsin carbolic carbolineate Carbolineum carbolize Carboloy carboluria carbolxylol carbomethene carbomethoxy carbomethoxyl carbon carbona carbonaceous carbonade carbonado Carbonari Carbonarism Carbonarist carbonatation carbonate carbonation carbonatization carbonator carbonemia carbonero carbonic carbonide Carboniferous carboniferous carbonification carbonify carbonigenous carbonimeter carbonimide carbonite carbonitride carbonium carbonizable carbonization carbonize carbonizer carbonless Carbonnieux carbonometer carbonometry carbonous carbonuria carbonyl carbonylene carbonylic carbophilous carbora Carborundum carborundum carbosilicate carbostyril carboxide carboxy Carboxydomonas carboxyhemoglobin carboxyl carboxylase carboxylate carboxylation carboxylic carboy carboyed carbro carbromal carbuilder carbuncle carbuncled carbuncular carbungi carburant carburate carburation carburator carbure carburet carburetant carburetor carburization carburize carburizer carburometer carbyl carbylamine carcajou carcake carcanet carcaneted carcass Carcavelhos carceag carcel carceral carcerate carceration Carcharhinus Carcharias carchariid Carchariidae carcharioid Carcharodon carcharodont carcinemia carcinogen carcinogenesis carcinogenic carcinoid carcinological carcinologist carcinology carcinolysin carcinolytic carcinoma carcinomata carcinomatoid carcinomatosis carcinomatous carcinomorphic carcinophagous carcinopolypus carcinosarcoma carcinosarcomata Carcinoscorpius carcinosis carcoon card cardaissin Cardamine cardamom Cardanic cardboard cardcase cardecu carded cardel carder cardholder cardia cardiac cardiacal Cardiacea cardiacean cardiagra cardiagram cardiagraph cardiagraphy cardial cardialgia cardialgy cardiameter cardiamorphia cardianesthesia cardianeuria cardiant cardiaplegia cardiarctia cardiasthenia cardiasthma cardiataxia cardiatomy cardiatrophia cardiauxe Cardiazol cardicentesis cardiectasis cardiectomize cardiectomy cardielcosis cardiemphraxia cardiform Cardigan cardigan Cardiidae cardin cardinal cardinalate cardinalic Cardinalis cardinalism cardinalist cardinalitial cardinalitian cardinally cardinalship cardines carding cardioaccelerator cardioarterial cardioblast cardiocarpum cardiocele cardiocentesis cardiocirrhosis cardioclasia cardioclasis cardiodilator cardiodynamics cardiodynia cardiodysesthesia cardiodysneuria cardiogenesis cardiogenic cardiogram cardiograph cardiographic cardiography cardiohepatic cardioid cardiokinetic cardiolith cardiological cardiologist cardiology cardiolysis cardiomalacia cardiomegaly cardiomelanosis cardiometer cardiometric cardiometry cardiomotility cardiomyoliposis cardiomyomalacia cardioncus cardionecrosis cardionephric cardioneural cardioneurosis cardionosus cardioparplasis cardiopathic cardiopathy cardiopericarditis cardiophobe cardiophobia cardiophrenia cardioplasty cardioplegia cardiopneumatic cardiopneumograph cardioptosis cardiopulmonary cardiopuncture cardiopyloric cardiorenal cardiorespiratory cardiorrhaphy cardiorrheuma cardiorrhexis cardioschisis cardiosclerosis cardioscope cardiospasm Cardiospermum cardiosphygmogram cardiosphygmograph cardiosymphysis cardiotherapy cardiotomy cardiotonic cardiotoxic cardiotrophia cardiotrophotherapy cardiovascular cardiovisceral cardipaludism cardipericarditis cardisophistical carditic carditis Cardium cardlike cardmaker cardmaking cardo cardol cardon cardona cardoncillo cardooer cardoon cardophagus cardplayer cardroom cardsharp cardsharping cardstock Carduaceae carduaceous Carduelis Carduus care carecloth careen careenage careener career careerer careering careeringly careerist carefree careful carefully carefulness careless carelessly carelessness carene carer caress caressant caresser caressing caressingly caressive caressively carest caret caretaker caretaking Caretta Carettochelydidae careworn Carex carfare carfax carfuffle carful carga cargo cargoose carhop carhouse cariacine Cariacus cariama Cariamae Carian Carib Caribal Cariban Caribbean Caribbee Caribi Caribisi caribou Carica Caricaceae caricaceous caricatura caricaturable caricatural caricature caricaturist caricetum caricographer caricography caricologist caricology caricous carid Carida Caridea caridean caridoid Caridomorpha caries Carijona carillon carillonneur carina carinal Carinaria Carinatae carinate carinated carination Cariniana cariniform Carinthian cariole carioling cariosity carious cariousness Caripuna Cariri Caririan Carissa caritative caritive Cariyo cark carking carkingly carkled Carl carl carless carlet carlie carlin Carlina carline carling carlings carlish carlishness Carlisle Carlism Carlist carload carloading carloadings carlot Carlovingian carls Carludovica Carlylean Carlyleian Carlylese Carlylesque Carlylian Carlylism carmagnole carmalum Carman carman Carmanians Carmel Carmela carmele Carmelite Carmelitess carmeloite Carmen carminative Carmine carmine carminette carminic carminite carminophilous carmoisin carmot Carnacian carnage carnaged carnal carnalism carnalite carnality carnalize carnallite carnally carnalness carnaptious Carnaria carnassial carnate carnation carnationed carnationist carnauba carnaubic carnaubyl Carnegie Carnegiea carnelian carneol carneole carneous carney carnic carniferous carniferrin carnifex carnification carnifices carnificial carniform carnify Carniolan carnival carnivaler carnivalesque Carnivora carnivoracity carnivoral carnivore carnivorism carnivorous carnivorously carnivorousness carnose carnosine carnosity carnotite carnous Caro caroa carob caroba caroche Caroid Carol carol Carolan Carolean caroler caroli carolin Carolina Caroline caroline Caroling Carolingian Carolinian carolus carom carombolette carone caronic caroome caroon carotene carotenoid carotic carotid carotidal carotidean carotin carotinemia carotinoid caroubier carousal carouse carouser carousing carousingly carp carpaine carpal carpale carpalia Carpathian carpel carpellary carpellate carpent carpenter Carpenteria carpentering carpentership carpentry carper carpet carpetbag carpetbagger carpetbaggery carpetbaggism carpetbagism carpetbeater carpeting carpetlayer carpetless carpetmaker carpetmaking carpetmonger carpetweb carpetweed carpetwork carpetwoven Carphiophiops carpholite Carphophis carphosiderite carpid carpidium carpincho carping carpingly carpintero Carpinus Carpiodes carpitis carpium carpocace Carpocapsa carpocarpal carpocephala carpocephalum carpocerite carpocervical Carpocratian Carpodacus Carpodetus carpogam carpogamy carpogenic carpogenous carpogone carpogonial carpogonium Carpoidea carpolite carpolith carpological carpologically carpologist carpology carpomania carpometacarpal carpometacarpus carpopedal Carpophaga carpophagous carpophalangeal carpophore carpophyll carpophyte carpopodite carpopoditic carpoptosia carpoptosis carport carpos carposperm carposporangia carposporangial carposporangium carpospore carposporic carposporous carpostome carpus carquaise carr carrack carrageen carrageenin Carrara Carraran carrel carriable carriage carriageable carriageful carriageless carriagesmith carriageway Carrick carrick Carrie carried carrier carrion carritch carritches carriwitchet Carrizo carrizo carroch carrollite carronade carrot carrotage carroter carrotiness carrottop carrotweed carrotwood carroty carrousel carrow Carry carry carryall carrying carrytale carse carshop carsick carsmith cart cartable cartaceous cartage cartboot cartbote carte cartel cartelism cartelist cartelization cartelize carter Cartesian Cartesianism cartful Carthaginian carthame carthamic carthamin Carthamus Carthusian Cartier cartilage cartilaginean Cartilaginei cartilagineous Cartilagines cartilaginification cartilaginoid cartilaginous cartisane Cartist cartload cartmaker cartmaking cartman cartobibliography cartogram cartograph cartographer cartographic cartographical cartographically cartography cartomancy carton cartonnage cartoon cartoonist cartouche cartridge cartsale cartulary cartway cartwright cartwrighting carty carua carucage carucal carucate carucated Carum caruncle caruncula carunculae caruncular carunculate carunculated carunculous carvacrol carvacryl carval carve carvel carven carvene carver carvership carvestrene carving carvoepra carvol carvomenthene carvone carvyl carwitchet Carya caryatic caryatid caryatidal caryatidean caryatidic caryl Caryocar Caryocaraceae caryocaraceous Caryophyllaceae caryophyllaceous caryophyllene caryophylleous caryophyllin caryophyllous Caryophyllus caryopilite caryopses caryopsides caryopsis Caryopteris Caryota casaba casabe casal casalty Casamarca Casanovanic Casasia casate casaun casava casave casavi casbah cascabel cascade Cascadia Cascadian cascadite cascado cascalho cascalote cascara cascarilla cascaron casco cascol case Casearia casease caseate caseation casebook casebox cased caseful casefy caseharden caseic casein caseinate caseinogen casekeeper Casel caseless caselessly casemaker casemaking casemate casemated casement casemented caseolysis caseose caseous caser casern caseum caseweed casewood casework caseworker caseworm cash casha cashable cashableness cashaw cashbook cashbox cashboy cashcuttee cashel cashew cashgirl Cashibo cashier cashierer cashierment cashkeeper cashment Cashmere cashmere cashmerette Cashmirian Casimir Casimiroa casing casino casiri cask casket casking casklike Caslon Caspar Casparian Caspian casque casqued casquet casquetel casquette cass cassabanana cassabully cassady Cassandra cassareep cassation casse Cassegrain Cassegrainian casselty cassena casserole Cassia cassia Cassiaceae Cassian cassican Cassicus Cassida cassideous cassidid Cassididae Cassidinae cassidony Cassidulina cassiduloid Cassiduloidea Cassie cassie Cassiepeia cassimere cassina cassine Cassinese cassinette Cassinian cassino cassinoid cassioberry Cassiope Cassiopeia Cassiopeian Cassiopeid cassiopeium Cassis cassis cassiterite Cassius cassock cassolette casson cassonade cassoon cassowary cassumunar Cassytha Cassythaceae cast castable castagnole Castalia Castalian Castalides Castalio Castanea castanean castaneous castanet Castanopsis Castanospermum castaway caste casteless castelet castellan castellano castellanship castellany castellar castellate castellated castellation caster casterless casthouse castice castigable castigate castigation castigative castigator castigatory Castilian Castilla Castilleja Castilloa casting castle castled castlelike castlet castlewards castlewise castling castock castoff Castor castor Castores castoreum castorial Castoridae castorin castorite castorized Castoroides castory castra castral castrametation castrate castrater castration castrator castrensial castrensian castrum castuli casual casualism casualist casuality casually casualness casualty Casuariidae Casuariiformes Casuarina Casuarinaceae casuarinaceous Casuarinales Casuarius casuary casuist casuistess casuistic casuistical casuistically casuistry casula caswellite Casziel Cat cat catabaptist catabases catabasis catabatic catabibazon catabiotic catabolic catabolically catabolin catabolism catabolite catabolize catacaustic catachreses catachresis catachrestic catachrestical catachrestically catachthonian cataclasm cataclasmic cataclastic cataclinal cataclysm cataclysmal cataclysmatic cataclysmatist cataclysmic cataclysmically cataclysmist catacomb catacorolla catacoustics catacromyodian catacrotic catacrotism catacumbal catadicrotic catadicrotism catadioptric catadioptrical catadioptrics catadromous catafalco catafalque catagenesis catagenetic catagmatic Cataian catakinesis catakinetic catakinetomer catakinomeric Catalan Catalanganes Catalanist catalase Catalaunian catalecta catalectic catalecticant catalepsis catalepsy cataleptic cataleptiform cataleptize cataleptoid catalexis catalina catalineta catalinite catallactic catallactically catallactics catallum catalogia catalogic catalogical catalogist catalogistic catalogue cataloguer cataloguish cataloguist cataloguize Catalonian catalowne Catalpa catalpa catalufa catalyses catalysis catalyst catalyte catalytic catalytical catalytically catalyzator catalyze catalyzer catamaran Catamarcan Catamarenan catamenia catamenial catamite catamited catamiting catamount catamountain catan Catananche catapan catapasm catapetalous cataphasia cataphatic cataphora cataphoresis cataphoretic cataphoria cataphoric cataphract Cataphracta Cataphracti cataphrenia cataphrenic Cataphrygian cataphrygianism cataphyll cataphylla cataphyllary cataphyllum cataphysical cataplasia cataplasis cataplasm catapleiite cataplexy catapult catapultic catapultier cataract cataractal cataracted cataractine cataractous cataractwise cataria catarinite catarrh catarrhal catarrhally catarrhed Catarrhina catarrhine catarrhinian catarrhous catasarka Catasetum catasta catastaltic catastasis catastate catastatic catasterism catastrophal catastrophe catastrophic catastrophical catastrophically catastrophism catastrophist catathymic catatonia catatoniac catatonic catawampous catawampously catawamptious catawamptiously catawampus Catawba catberry catbird catboat catcall catch catchable catchall catchcry catcher catchfly catchiness catching catchingly catchingness catchland catchment catchpenny catchplate catchpole catchpolery catchpoleship catchpoll catchpollery catchup catchwater catchweed catchweight catchword catchwork catchy catclaw catdom cate catechesis catechetic catechetical catechetically catechin catechism catechismal catechist catechistic catechistical catechistically catechizable catechization catechize catechizer catechol catechu catechumen catechumenal catechumenate catechumenical catechumenically catechumenism catechumenship catechutannic categorem categorematic categorematical categorematically categorial categoric categorical categorically categoricalness categorist categorization categorize category catelectrotonic catelectrotonus catella catena catenae catenarian catenary catenate catenated catenation catenoid catenulate catepuce cater cateran catercap catercorner caterer caterership cateress caterpillar caterpillared caterpillarlike caterva caterwaul caterwauler caterwauling Catesbaea cateye catface catfaced catfacing catfall catfish catfoot catfooted catgut Catha Cathari Catharina Catharine Catharism Catharist Catharistic catharization catharize catharpin catharping Cathars catharsis Cathartae Cathartes cathartic cathartical cathartically catharticalness Cathartidae Cathartides Cathartolinum Cathay Cathayan cathead cathect cathectic cathection cathedra cathedral cathedraled cathedralesque cathedralic cathedrallike cathedralwise cathedratic cathedratica cathedratical cathedratically cathedraticum cathepsin Catherine catheter catheterism catheterization catheterize catheti cathetometer cathetometric cathetus cathexion cathexis cathidine cathin cathine cathinine cathion cathisma cathodal cathode cathodic cathodical cathodically cathodofluorescence cathodograph cathodography cathodoluminescence cathograph cathography cathole catholic catholical catholically catholicalness catholicate catholicism catholicist catholicity catholicize catholicizer catholicly catholicness catholicon catholicos catholicus catholyte cathood cathop cathro Catilinarian cation cationic cativo catjang catkin catkinate catlap catlike catlin catling catlinite catmalison catmint catnip catoblepas Catocala catocalid catocathartic catoctin Catodon catodont catogene catogenic Catoism Catonian Catonic Catonically Catonism catoptric catoptrical catoptrically catoptrics catoptrite catoptromancy catoptromantic Catoquina catostomid Catostomidae catostomoid Catostomus catpiece catpipe catproof Catskill catskin catstep catstick catstitch catstitcher catstone catsup cattabu cattail cattalo cattery Catti cattily cattimandoo cattiness catting cattish cattishly cattishness cattle cattlebush cattlegate cattleless cattleman Cattleya cattleya cattleyak Catty catty cattyman Catullian catvine catwalk catwise catwood catwort caubeen cauboge Caucasian Caucasic Caucasoid cauch cauchillo caucho caucus cauda caudad caudae caudal caudally caudalward Caudata caudata caudate caudated caudation caudatolenticular caudatory caudatum caudex caudices caudicle caudiform caudillism caudle caudocephalad caudodorsal caudofemoral caudolateral caudotibial caudotibialis Caughnawaga caught cauk caul cauld cauldrife cauldrifeness Caulerpa Caulerpaceae caulerpaceous caules caulescent caulicle caulicole caulicolous caulicule cauliculus cauliferous cauliflorous cauliflory cauliflower cauliform cauligenous caulinar caulinary cauline caulis Caulite caulivorous caulocarpic caulocarpous caulome caulomer caulomic caulophylline Caulophyllum Caulopteris caulopteris caulosarc caulotaxis caulotaxy caulote caum cauma caumatic caunch Caunos Caunus caup caupo caupones Cauqui caurale Caurus causability causable causal causalgia causality causally causate causation causational causationism causationist causative causatively causativeness causativity cause causeful causeless causelessly causelessness causer causerie causeway causewayman causey causidical causing causingness causse causson caustic caustical caustically causticiser causticism causticity causticization causticize causticizer causticly causticness caustification caustify Causus cautel cautelous cautelously cautelousness cauter cauterant cauterization cauterize cautery caution cautionary cautioner cautionry cautious cautiously cautiousness cautivo cava cavae caval cavalcade cavalero cavalier cavalierish cavalierishness cavalierism cavalierly cavalierness cavaliero cavaliership cavalla cavalry cavalryman cavascope cavate cavatina cave caveat caveator cavekeeper cavel cavelet cavelike cavendish cavern cavernal caverned cavernicolous cavernitis cavernlike cavernoma cavernous cavernously cavernulous cavesson cavetto Cavia caviar cavicorn Cavicornia Cavidae cavie cavil caviler caviling cavilingly cavilingness cavillation Cavina caving cavings cavish cavitary cavitate cavitation cavitied cavity caviya cavort cavus cavy caw cawk cawky cawney cawquaw caxiri caxon Caxton Caxtonian cay Cayapa Cayapo Cayenne cayenne cayenned Cayleyan cayman Cayubaba Cayubaban Cayuga Cayugan Cayuse Cayuvava caza cazimi Ccoya ce Ceanothus cearin cease ceaseless ceaselessly ceaselessness ceasmic Cebalrai Cebatha cebell cebian cebid Cebidae cebil cebine ceboid cebollite cebur Cebus cecidiologist cecidiology cecidium cecidogenous cecidologist cecidology cecidomyian cecidomyiid Cecidomyiidae cecidomyiidous Cecil Cecile Cecilia cecilite cecils Cecily cecity cecograph Cecomorphae cecomorphic cecostomy Cecropia Cecrops cecutiency cedar cedarbird cedared cedarn cedarware cedarwood cedary cede cedent ceder cedilla cedrat cedrate cedre Cedrela cedrene Cedric cedrin cedrine cedriret cedrium cedrol cedron Cedrus cedry cedula cee Ceiba ceibo ceil ceile ceiler ceilidh ceiling ceilinged ceilingward ceilingwards ceilometer Celadon celadon celadonite Celaeno celandine Celanese Celarent Celastraceae celastraceous Celastrus celation celative celature Celebesian celebrant celebrate celebrated celebratedness celebrater celebration celebrative celebrator celebratory celebrity celemin celemines celeomorph Celeomorphae celeomorphic celeriac celerity celery celesta Celeste celeste celestial celestiality celestialize celestially celestialness celestina Celestine celestine Celestinian celestite celestitude Celia celiac celiadelphus celiagra celialgia celibacy celibatarian celibate celibatic celibatist celibatory celidographer celidography celiectasia celiectomy celiemia celiitis celiocele celiocentesis celiocolpotomy celiocyesis celiodynia celioelytrotomy celioenterotomy celiogastrotomy celiohysterotomy celiolymph celiomyalgia celiomyodynia celiomyomectomy celiomyomotomy celiomyositis celioncus celioparacentesis celiopyosis celiorrhaphy celiorrhea celiosalpingectomy celiosalpingotomy celioschisis celioscope celioscopy celiotomy celite cell cella cellae cellar cellarage cellarer cellaress cellaret cellaring cellarless cellarman cellarous cellarway cellarwoman cellated celled Cellepora cellepore Cellfalcicula celliferous celliform cellifugal cellipetal cellist Cellite cello cellobiose celloid celloidin celloist cellophane cellose Cellucotton cellular cellularity cellularly cellulase cellulate cellulated cellulation cellule cellulicidal celluliferous cellulifugal cellulifugally cellulin cellulipetal cellulipetally cellulitis cellulocutaneous cellulofibrous Celluloid celluloid celluloided Cellulomonadeae Cellulomonas cellulose cellulosic cellulosity cellulotoxic cellulous Cellvibrio Celosia Celotex celotomy Celsia celsian Celsius Celt celt Celtdom Celtiberi Celtiberian Celtic Celtically Celticism Celticist Celticize Celtidaceae celtiform Celtillyrians Celtis Celtish Celtism Celtist celtium Celtization Celtologist Celtologue Celtomaniac Celtophil Celtophobe Celtophobia celtuce cembalist cembalo cement cemental cementation cementatory cementer cementification cementin cementite cementitious cementless cementmaker cementmaking cementoblast cementoma cementum cemeterial cemetery cenacle cenaculum cenanthous cenanthy cencerro Cenchrus cendre cenobian cenobite cenobitic cenobitical cenobitically cenobitism cenobium cenoby cenogenesis cenogenetic cenogenetically cenogonous Cenomanian cenosite cenosity cenospecies cenospecific cenospecifically cenotaph cenotaphic cenotaphy Cenozoic cenozoology cense censer censerless censive censor censorable censorate censorial censorious censoriously censoriousness censorship censual censurability censurable censurableness censurably censure censureless censurer censureship census cent centage cental centare centaur centaurdom Centaurea centauress centauri centaurial centaurian centauric Centaurid Centauridium Centaurium centauromachia centauromachy Centaurus centaurus centaury centavo centena centenar centenarian centenarianism centenary centenier centenionalis centennial centennially center centerable centerboard centered centerer centering centerless centermost centerpiece centervelic centerward centerwise centesimal centesimally centesimate centesimation centesimi centesimo centesis Centetes centetid Centetidae centgener centiar centiare centibar centifolious centigrade centigram centile centiliter centillion centillionth Centiloquy centime centimeter centimo centimolar centinormal centipedal centipede centiplume centipoise centistere centistoke centner cento centonical centonism centrad central centrale Centrales centralism centralist centralistic centrality centralization centralize centralizer centrally centralness centranth Centranthus centrarchid Centrarchidae centrarchoid Centraxonia centraxonial Centrechinoida centric Centricae centrical centricality centrically centricalness centricipital centriciput centricity centriffed centrifugal centrifugalization centrifugalize centrifugaller centrifugally centrifugate centrifugation centrifuge centrifugence centriole centripetal centripetalism centripetally centripetence centripetency centriscid Centriscidae centrisciform centriscoid Centriscus centrist centroacinar centrobaric centrobarical centroclinal centrode centrodesmose centrodesmus centrodorsal centrodorsally centroid centroidal centrolecithal Centrolepidaceae centrolepidaceous centrolinead centrolineal centromere centronucleus centroplasm Centropomidae Centropomus Centrosema centrosome centrosomic Centrosoyus Centrospermae centrosphere centrosymmetric centrosymmetry Centrotus centrum centry centum centumvir centumviral centumvirate Centunculus centuple centuplicate centuplication centuply centuria centurial centuriate centuriation centuriator centuried centurion century ceorl ceorlish cep cepa cepaceous cepe cephaeline Cephaelis Cephalacanthidae Cephalacanthus cephalad cephalagra cephalalgia cephalalgic cephalalgy cephalanthium cephalanthous Cephalanthus Cephalaspis Cephalata cephalate cephaldemae cephalemia cephaletron Cephaleuros cephalhematoma cephalhydrocele cephalic cephalin Cephalina cephaline cephalism cephalitis cephalization cephaloauricular Cephalobranchiata cephalobranchiate cephalocathartic cephalocaudal cephalocele cephalocentesis cephalocercal Cephalocereus cephalochord Cephalochorda cephalochordal Cephalochordata cephalochordate cephaloclasia cephaloclast cephalocone cephaloconic cephalocyst cephalodiscid Cephalodiscida Cephalodiscus cephalodymia cephalodymus cephalodynia cephalofacial cephalogenesis cephalogram cephalograph cephalohumeral cephalohumeralis cephaloid cephalology cephalomancy cephalomant cephalomelus cephalomenia cephalomeningitis cephalomere cephalometer cephalometric cephalometry cephalomotor cephalomyitis cephalon cephalonasal cephalopagus cephalopathy cephalopharyngeal cephalophine cephalophorous Cephalophus cephalophyma cephaloplegia cephaloplegic cephalopod Cephalopoda cephalopodan cephalopodic cephalopodous Cephalopterus cephalorachidian cephalorhachidian cephalosome cephalospinal Cephalosporium cephalostyle Cephalotaceae cephalotaceous Cephalotaxus cephalotheca cephalothecal cephalothoracic cephalothoracopagus cephalothorax cephalotome cephalotomy cephalotractor cephalotribe cephalotripsy cephalotrocha Cephalotus cephalous Cephas Cepheid cephid Cephidae Cephus Cepolidae ceps ceptor cequi ceraceous cerago ceral ceramal cerambycid Cerambycidae Ceramiaceae ceramiaceous ceramic ceramicite ceramics ceramidium ceramist Ceramium ceramographic ceramography cerargyrite ceras cerasein cerasin cerastes Cerastium Cerasus cerata cerate ceratectomy cerated ceratiasis ceratiid Ceratiidae ceratioid ceration ceratite Ceratites ceratitic Ceratitidae Ceratitis ceratitoid Ceratitoidea Ceratium Ceratobatrachinae ceratoblast ceratobranchial ceratocricoid Ceratodidae Ceratodontidae Ceratodus ceratofibrous ceratoglossal ceratoglossus ceratohyal ceratohyoid ceratoid ceratomandibular ceratomania Ceratonia Ceratophrys Ceratophyllaceae ceratophyllaceous Ceratophyllum Ceratophyta ceratophyte Ceratops Ceratopsia ceratopsian ceratopsid Ceratopsidae Ceratopteridaceae ceratopteridaceous Ceratopteris ceratorhine Ceratosa Ceratosaurus Ceratospongiae ceratospongian Ceratostomataceae Ceratostomella ceratotheca ceratothecal Ceratozamia ceraunia ceraunics ceraunogram ceraunograph ceraunomancy ceraunophone ceraunoscope ceraunoscopy Cerberean Cerberic Cerberus cercal cercaria cercarial cercarian cercariform cercelee cerci Cercidiphyllaceae Cercis Cercocebus Cercolabes Cercolabidae cercomonad Cercomonadidae Cercomonas cercopid Cercopidae cercopithecid Cercopithecidae cercopithecoid Cercopithecus cercopod Cercospora Cercosporella cercus Cerdonian cere cereal cerealian cerealin cerealism cerealist cerealose cerebella cerebellar cerebellifugal cerebellipetal cerebellocortex cerebellopontile cerebellopontine cerebellorubral cerebellospinal cerebellum cerebra cerebral cerebralgia cerebralism cerebralist cerebralization cerebralize cerebrally cerebrasthenia cerebrasthenic cerebrate cerebration cerebrational Cerebratulus cerebric cerebricity cerebriform cerebriformly cerebrifugal cerebrin cerebripetal cerebritis cerebrize cerebrocardiac cerebrogalactose cerebroganglion cerebroganglionic cerebroid cerebrology cerebroma cerebromalacia cerebromedullary cerebromeningeal cerebromeningitis cerebrometer cerebron cerebronic cerebroparietal cerebropathy cerebropedal cerebrophysiology cerebropontile cerebropsychosis cerebrorachidian cerebrosclerosis cerebroscope cerebroscopy cerebrose cerebrosensorial cerebroside cerebrosis cerebrospinal cerebrospinant cerebrosuria cerebrotomy cerebrotonia cerebrotonic cerebrovisceral cerebrum cerecloth cered cereless cerement ceremonial ceremonialism ceremonialist ceremonialize ceremonially ceremonious ceremoniously ceremoniousness ceremony cereous cerer ceresin Cereus cerevis ceria Cerialia cerianthid Cerianthidae cerianthoid Cerianthus ceric ceride ceriferous cerigerous cerillo ceriman cerin cerine Cerinthe Cerinthian Ceriomyces Cerion Cerionidae ceriops Ceriornis cerise cerite Cerithiidae cerithioid Cerithium cerium cermet cern cerniture cernuous cero cerograph cerographic cerographist cerography ceroline cerolite ceroma ceromancy cerophilous ceroplast ceroplastic ceroplastics ceroplasty cerotate cerote cerotene cerotic cerotin cerotype cerous ceroxyle Ceroxylon cerrero cerrial cerris certain certainly certainty Certhia Certhiidae certie certifiable certifiableness certifiably certificate certification certificative certificator certificatory certified certifier certify certiorari certiorate certioration certis certitude certosina certosino certy cerule cerulean cerulein ceruleite ceruleolactite ceruleous cerulescent ceruleum cerulignol cerulignone cerumen ceruminal ceruminiferous ceruminous cerumniparous ceruse cerussite Cervantist cervantite cervical Cervicapra cervicaprine cervicectomy cervicicardiac cervicide cerviciplex cervicispinal cervicitis cervicoauricular cervicoaxillary cervicobasilar cervicobrachial cervicobregmatic cervicobuccal cervicodorsal cervicodynia cervicofacial cervicohumeral cervicolabial cervicolingual cervicolumbar cervicomuscular cerviconasal cervicorn cervicoscapular cervicothoracic cervicovaginal cervicovesical cervid Cervidae Cervinae cervine cervisia cervisial cervix cervoid cervuline Cervulus Cervus ceryl Cerynean Cesare cesarevitch cesarolite cesious cesium cespititous cespitose cespitosely cespitulose cess cessantly cessation cessative cessavit cesser cession cessionaire cessionary cessor cesspipe cesspit cesspool cest Cestida Cestidae Cestoda Cestodaria cestode cestoid Cestoidea cestoidean Cestracion cestraciont Cestraciontes Cestraciontidae Cestrian Cestrum cestrum cestus Cetacea cetacean cetaceous cetaceum cetane Cete cetene ceterach ceti cetic ceticide Cetid cetin Cetiosauria cetiosaurian Cetiosaurus cetological cetologist cetology Cetomorpha cetomorphic Cetonia cetonian Cetoniides Cetoniinae cetorhinid Cetorhinidae cetorhinoid Cetorhinus cetotolite Cetraria cetraric cetrarin Cetus cetyl cetylene cetylic cevadilla cevadilline cevadine Cevennian Cevenol Cevenole cevine cevitamic ceylanite Ceylon Ceylonese ceylonite ceyssatite Ceyx Cezannesque cha chaa chab chabasie chabazite Chablis chabot chabouk chabuk chabutra Chac chacate chachalaca Chachapuya chack Chackchiuma chacker chackle chackler chacma Chaco chacona chacte chad chadacryst Chaenactis Chaenolobus Chaenomeles chaeta Chaetangiaceae Chaetangium Chaetetes Chaetetidae Chaetifera chaetiferous Chaetites Chaetitidae Chaetochloa Chaetodon chaetodont chaetodontid Chaetodontidae chaetognath Chaetognatha chaetognathan chaetognathous Chaetophora Chaetophoraceae chaetophoraceous Chaetophorales chaetophorous chaetopod Chaetopoda chaetopodan chaetopodous chaetopterin Chaetopterus chaetosema Chaetosoma Chaetosomatidae Chaetosomidae chaetotactic chaetotaxy Chaetura chafe chafer chafery chafewax chafeweed chaff chaffcutter chaffer chafferer chaffinch chaffiness chaffing chaffingly chaffless chafflike chaffman chaffseed chaffwax chaffweed chaffy chaft chafted Chaga chagan Chagga chagrin chaguar chagul chahar chai Chailletiaceae chain chainage chained chainer chainette chainless chainlet chainmaker chainmaking chainman chainon chainsmith chainwale chainwork chair chairer chairless chairmaker chairmaking chairman chairmanship chairmender chairmending chairwarmer chairwoman chais chaise chaiseless Chait chaitya chaja chaka chakar chakari Chakavski chakazi chakdar chakobu chakra chakram chakravartin chaksi chal chalaco chalana chalastic Chalastogastra chalaza chalazal chalaze chalazian chalaziferous chalazion chalazogam chalazogamic chalazogamy chalazoidite chalcanthite Chalcedonian chalcedonic chalcedonous chalcedony chalcedonyx chalchuite chalcid Chalcidian Chalcidic chalcidicum chalcidid Chalcididae chalcidiform chalcidoid Chalcidoidea Chalcioecus Chalcis chalcites chalcocite chalcograph chalcographer chalcographic chalcographical chalcographist chalcography chalcolite chalcolithic chalcomancy chalcomenite chalcon chalcone chalcophanite chalcophyllite chalcopyrite chalcosiderite chalcosine chalcostibite chalcotrichite chalcotript chalcus Chaldaei Chaldaic Chaldaical Chaldaism Chaldean Chaldee chalder chaldron chalet chalice chaliced chalicosis chalicothere chalicotheriid Chalicotheriidae chalicotherioid Chalicotherium Chalina Chalinidae chalinine Chalinitis chalk chalkcutter chalker chalkiness chalklike chalkography chalkosideric chalkstone chalkstony chalkworker chalky challah challenge challengeable challengee challengeful challenger challengingly challie challis challote chalmer chalon chalone Chalons chalque chalta Chalukya Chalukyan chalumeau chalutz chalutzim Chalybean chalybeate chalybeous Chalybes chalybite Cham cham Chama Chamacea Chamacoco Chamaebatia Chamaecistus chamaecranial Chamaecrista Chamaecyparis Chamaedaphne Chamaeleo Chamaeleon Chamaeleontidae Chamaelirium Chamaenerion Chamaepericlymenum chamaeprosopic Chamaerops chamaerrhine Chamaesaura Chamaesiphon Chamaesiphonaceae Chamaesiphonaceous Chamaesiphonales Chamaesyce chamal Chamar chamar chamber chamberdeacon chambered chamberer chambering chamberlain chamberlainry chamberlainship chamberlet chamberleted chamberletted chambermaid Chambertin chamberwoman Chambioa chambray chambrel chambul chamecephalic chamecephalous chamecephalus chamecephaly chameleon chameleonic chameleonize chameleonlike chamfer chamferer chamfron Chamian Chamicuro Chamidae chamisal chamiso Chamite chamite Chamkanni chamma chamois Chamoisette chamoisite chamoline Chamomilla Chamorro Chamos champ Champa champac champaca champacol champagne champagneless champagnize champaign champain champaka champer champertor champertous champerty champignon champion championess championize championless championlike championship Champlain Champlainic champleve champy Chanabal Chanca chance chanceful chancefully chancefulness chancel chanceled chanceless chancellery chancellor chancellorate chancelloress chancellorism chancellorship chancer chancery chancewise chanche chanchito chanco chancre chancriform chancroid chancroidal chancrous chancy chandala chandam chandelier Chandi chandi chandler chandleress chandlering chandlery chandoo chandu chandul Chane chanfrin Chang chang changa changar change changeability changeable changeableness changeably changedale changedness changeful changefully changefulness changeless changelessly changelessness changeling changement changer Changoan Changos Changuina Changuinan Chanidae chank chankings channel channelbill channeled channeler channeling channelization channelize channelled channeller channelling channelwards channer chanson chansonnette chanst chant chantable chanter chanterelle chantership chantey chanteyman chanticleer chanting chantingly chantlate chantress chantry chao chaogenous chaology chaos chaotic chaotical chaotically chaoticness Chaouia chap Chapacura Chapacuran chapah Chapanec chaparral chaparro chapatty chapbook chape chapeau chapeaux chaped chapel chapeless chapelet chapelgoer chapelgoing chapellage chapellany chapelman chapelmaster chapelry chapelward chaperno chaperon chaperonage chaperone chaperonless chapfallen chapin chapiter chapitral chaplain chaplaincy chaplainry chaplainship chapless chaplet chapleted chapman chapmanship chapournet chapournetted chappaul chapped chapper chappie chappin chapping chappow chappy chaps chapt chaptalization chaptalize chapter chapteral chapterful chapwoman char Chara charabanc charabancer charac Characeae characeous characetum characin characine characinid Characinidae characinoid character characterful characterial characterical characterism characterist characteristic characteristical characteristically characteristicalness characteristicness characterizable characterization characterize characterizer characterless characterlessness characterological characterologist characterology charactery charade Charadrii Charadriidae charadriiform Charadriiformes charadrine charadrioid Charadriomorphae Charadrius Charales charas charbon Charca charcoal charcoaly charcutier chard chardock chare charer charet charette charge chargeability chargeable chargeableness chargeably chargee chargeless chargeling chargeman charger chargeship charging Charicleia charier charily chariness chariot charioted chariotee charioteer charioteership chariotlike chariotman chariotry chariotway charism charisma charismatic Charissa charisticary charitable charitableness charitably Charites charity charityless charivari chark charka charkha charkhana charlady charlatan charlatanic charlatanical charlatanically charlatanish charlatanism charlatanistic charlatanry charlatanship Charles Charleston Charley Charlie charlock Charlotte charm charmedly charmel charmer charmful charmfully charmfulness charming charmingly charmingness charmless charmlessly charmwise charnel charnockite Charon Charonian Charonic Charontas Charophyta charpit charpoy charqued charqui charr Charruan Charruas charry charshaf charsingha chart chartaceous charter charterable charterage chartered charterer charterhouse Charterist charterless chartermaster charthouse charting Chartism Chartist chartist chartless chartographist chartology chartometer chartophylax chartreuse Chartreux chartroom chartula chartulary charuk charwoman chary Charybdian Charybdis chasable chase chaseable chaser Chasidim chasing chasm chasma chasmal chasmed chasmic chasmogamic chasmogamous chasmogamy chasmophyte chasmy chasse Chasselas chassepot chasseur chassignite chassis Chastacosta chaste chastely chasten chastener chasteness chasteningly chastenment chasteweed chastisable chastise chastisement chastiser chastity chasuble chasubled chat chataka Chateau chateau chateaux chatelain chatelaine chatelainry chatellany chathamite chati Chatillon Chatino Chatot chatoyance chatoyancy chatoyant chatsome chatta chattable Chattanooga Chattanoogan chattation chattel chattelhood chattelism chattelization chattelize chattelship chatter chatteration chatterbag chatterbox chatterer chattering chatteringly chattermag chattermagging Chattertonian chattery Chatti chattily chattiness chatting chattingly chatty chatwood Chaucerian Chauceriana Chaucerianism Chaucerism Chauchat chaudron chauffer chauffeur chauffeurship Chaui chauk chaukidari Chauliodes chaulmoogra chaulmoograte chaulmoogric Chauna chaus chausseemeile Chautauqua Chautauquan chaute chauth chauvinism chauvinist chauvinistic chauvinistically Chavante Chavantean chavender chavibetol chavicin chavicine chavicol chavish chaw chawan chawbacon chawer Chawia chawk chawl chawstick chay chaya chayaroot Chayma Chayota chayote chayroot chazan Chazy che cheap cheapen cheapener cheapery cheaping cheapish cheaply cheapness Cheapside cheat cheatable cheatableness cheatee cheater cheatery cheating cheatingly cheatrie Chebacco chebec chebel chebog chebule chebulinic Chechehet Chechen check checkable checkage checkbird checkbite checkbook checked checker checkerbelly checkerberry checkerbloom checkerboard checkerbreast checkered checkerist checkers checkerwise checkerwork checkhook checkless checkman checkmate checkoff checkrack checkrein checkroll checkroom checkrope checkrow checkrowed checkrower checkstone checkstrap checkstring checkup checkweigher checkwork checky cheddaring cheddite cheder chedlock chee cheecha cheechako cheek cheekbone cheeker cheekily cheekiness cheekish cheekless cheekpiece cheeky cheep cheeper cheepily cheepiness cheepy cheer cheered cheerer cheerful cheerfulize cheerfully cheerfulness cheerfulsome cheerily cheeriness cheering cheeringly cheerio cheerleader cheerless cheerlessly cheerlessness cheerly cheery cheese cheeseboard cheesebox cheeseburger cheesecake cheesecloth cheesecurd cheesecutter cheeseflower cheeselip cheesemonger cheesemongering cheesemongerly cheesemongery cheeseparer cheeseparing cheeser cheesery cheesewood cheesiness cheesy cheet cheetah cheeter cheetie chef Chefrinia chegoe chegre Chehalis Cheilanthes cheilitis Cheilodipteridae Cheilodipterus Cheilostomata cheilostomatous cheir cheiragra Cheiranthus Cheirogaleus Cheiroglossa cheirognomy cheirography cheirolin cheirology cheiromancy cheiromegaly cheiropatagium cheiropodist cheiropody cheiropompholyx Cheiroptera cheiropterygium cheirosophy cheirospasm Cheirotherium Cheka chekan cheke cheki Chekist chekmak chela chelaship chelate chelation chelem chelerythrine chelicer chelicera cheliceral chelicerate chelicere chelide chelidon chelidonate chelidonian chelidonic chelidonine Chelidonium Chelidosaurus Cheliferidea cheliferous cheliform chelingo cheliped Chellean chello Chelodina chelodine chelone Chelonia chelonian chelonid Chelonidae cheloniid Cheloniidae chelonin chelophore chelp Cheltenham Chelura Chelydidae Chelydra Chelydridae chelydroid chelys Chemakuan chemasthenia chemawinite Chemehuevi chemesthesis chemiatric chemiatrist chemiatry chemic chemical chemicalization chemicalize chemically chemicker chemicoastrological chemicobiologic chemicobiology chemicocautery chemicodynamic chemicoengineering chemicoluminescence chemicomechanical chemicomineralogical chemicopharmaceutical chemicophysical chemicophysics chemicophysiological chemicovital chemigraph chemigraphic chemigraphy chemiloon chemiluminescence chemiotactic chemiotaxic chemiotaxis chemiotropic chemiotropism chemiphotic chemis chemise chemisette chemism chemisorb chemisorption chemist chemistry chemitype chemitypy chemoceptor chemokinesis chemokinetic chemolysis chemolytic chemolyze chemoreception chemoreceptor chemoreflex chemoresistance chemoserotherapy chemosis chemosmosis chemosmotic chemosynthesis chemosynthetic chemotactic chemotactically chemotaxis chemotaxy chemotherapeutic chemotherapeutics chemotherapist chemotherapy chemotic chemotropic chemotropically chemotropism Chemung chemurgic chemurgical chemurgy Chen chena chende chenevixite Cheney cheng chenica chenille cheniller chenopod Chenopodiaceae chenopodiaceous Chenopodiales Chenopodium cheoplastic chepster cheque Chequers Chera chercock cherem Cheremiss Cheremissian cherimoya cherish cherishable cherisher cherishing cherishingly cherishment Cherkess Cherkesser Chermes Chermidae Chermish Chernomorish chernozem Cherokee cheroot cherried cherry cherryblossom cherrylike chersonese Chersydridae chert cherte cherty cherub cherubic cherubical cherubically cherubim cherubimic cherubimical cherubin Cherusci Chervante chervil chervonets Chesapeake Cheshire cheson chess chessboard chessdom chessel chesser chessist chessman chessmen chesstree chessylite chest Chester chester chesterfield Chesterfieldian chesterlite chestful chestily chestiness chestnut chestnutty chesty cheth chettik chetty chetverik chetvert chevage cheval chevalier chevaline chevance cheve cheven chevener chevesaile chevin Cheviot chevisance chevise chevon chevrette chevron chevrone chevronel chevronelly chevronwise chevrony chevrotain chevy chew chewbark chewer chewink chewstick chewy Cheyenne cheyney chhatri chi chia Chiam Chian Chianti Chiapanec Chiapanecan chiaroscurist chiaroscuro chiasm chiasma chiasmal chiasmatype chiasmatypy chiasmic Chiasmodon chiasmodontid Chiasmodontidae chiasmus chiastic chiastolite chiastoneural chiastoneurous chiastoneury chiaus Chibcha Chibchan chibinite chibouk chibrit chic chicane chicaner chicanery chicaric chicayote Chicha chichi chichicaste Chichimec chichimecan chichipate chichipe chichituna chick chickabiddy chickadee Chickahominy Chickamauga chickaree Chickasaw chickasaw chickell chicken chickenberry chickenbill chickenbreasted chickenhearted chickenheartedly chickenheartedness chickenhood chickenweed chickenwort chicker chickhood chickling chickstone chickweed chickwit chicky chicle chicness Chico chico Chicomecoatl chicory chicot chicote chicqued chicquer chicquest chicquing chid chidden chide chider chiding chidingly chidingness chidra chief chiefdom chiefery chiefess chiefest chiefish chiefless chiefling chiefly chiefship chieftain chieftaincy chieftainess chieftainry chieftainship chieftess chield Chien chien chiffer chiffon chiffonade chiffonier chiffony chifforobe chigetai chiggak chigger chiggerweed chignon chignoned chigoe chih chihfu Chihuahua chikara chil chilacavote chilalgia chilarium chilblain Chilcat child childbearing childbed childbirth childcrowing childe childed Childermas childhood childing childish childishly childishness childkind childless childlessness childlike childlikeness childly childness childrenite childridden childship childward chile Chilean Chileanization Chileanize chilectropion chilenite chili chiliad chiliadal chiliadic chiliagon chiliahedron chiliarch chiliarchia chiliarchy chiliasm chiliast chiliastic chilicote chilicothe chilidium Chilina Chilinidae chiliomb Chilion chilitis Chilkat chill chilla chillagite chilled chiller chillily chilliness chilling chillingly chillish Chilliwack chillness chillo chillroom chillsome chillum chillumchee chilly chilognath Chilognatha chilognathan chilognathous chilogrammo chiloma Chilomastix chiloncus chiloplasty chilopod Chilopoda chilopodan chilopodous Chilopsis Chilostoma Chilostomata chilostomatous chilostome chilotomy Chiltern chilver chimaera chimaerid Chimaeridae chimaeroid Chimaeroidei Chimakuan Chimakum Chimalakwe Chimalapa Chimane chimango Chimaphila Chimarikan Chimariko chimble chime chimer chimera chimeric chimerical chimerically chimericalness chimesmaster chiminage Chimmesyan chimney chimneyhead chimneyless chimneyman Chimonanthus chimopeelagic chimpanzee Chimu Chin chin china chinaberry chinalike Chinaman chinamania chinamaniac chinampa chinanta Chinantecan Chinantecs chinaphthol chinar chinaroot Chinatown chinaware chinawoman chinband chinch chincha Chinchasuyu chinchayote chinche chincherinchee chinchilla chinching chincloth chincough chine chined Chinee Chinese Chinesery ching chingma Chingpaw Chinhwan chinik chinin Chink chink chinkara chinker chinkerinchee chinking chinkle chinks chinky chinless chinnam chinned chinny chino chinoa chinol Chinook Chinookan chinotoxine chinotti chinpiece chinquapin chinse chint chintz chinwood Chiococca chiococcine Chiogenes chiolite chionablepsia Chionanthus Chionaspis Chionididae Chionis Chionodoxa Chiot chiotilla chip chipchap chipchop Chipewyan chiplet chipling chipmunk chippable chippage chipped Chippendale chipper chipping chippy chips chipwood Chiquitan Chiquito chiragra chiral chiralgia chirality chirapsia chirarthritis chirata Chiriana Chiricahua Chiriguano chirimen Chirino chirinola chiripa chirivita chirk chirm chiro chirocosmetics chirogale chirognomic chirognomically chirognomist chirognomy chirognostic chirograph chirographary chirographer chirographic chirographical chirography chirogymnast chirological chirologically chirologist chirology chiromance chiromancer chiromancist chiromancy chiromant chiromantic chiromantical Chiromantis chiromegaly chirometer Chiromyidae Chiromys Chiron chironomic chironomid Chironomidae Chironomus chironomy chironym chiropatagium chiroplasty chiropod chiropodial chiropodic chiropodical chiropodist chiropodistry chiropodous chiropody chiropompholyx chiropractic chiropractor chiropraxis chiropter Chiroptera chiropteran chiropterite chiropterophilous chiropterous chiropterygian chiropterygious chiropterygium chirosophist chirospasm Chirotes chirotherian Chirotherium chirothesia chirotonsor chirotonsory chirotony chirotype chirp chirper chirpily chirpiness chirping chirpingly chirpling chirpy chirr chirrup chirruper chirrupy chirurgeon chirurgery Chisedec chisel chiseled chiseler chisellike chiselly chiselmouth chit Chita chitak chital chitchat chitchatty Chitimacha Chitimachan chitin chitinization chitinized chitinocalcareous chitinogenous chitinoid chitinous chiton chitosamine chitosan chitose chitra Chitrali chittamwood chitter chitterling chitty chivalresque chivalric chivalrous chivalrously chivalrousness chivalry chive chivey chiviatite Chiwere chkalik chladnite chlamyd chlamydate chlamydeous Chlamydobacteriaceae chlamydobacteriaceous Chlamydobacteriales Chlamydomonadaceae Chlamydomonadidae Chlamydomonas Chlamydosaurus Chlamydoselachidae Chlamydoselachus chlamydospore Chlamydozoa chlamydozoan chlamyphore Chlamyphorus chlamys Chleuh chloanthite chloasma Chloe chlor chloracetate chloragogen chloral chloralformamide chloralide chloralism chloralization chloralize chloralose chloralum chloramide chloramine chloramphenicol chloranemia chloranemic chloranhydride chloranil Chloranthaceae chloranthaceous Chloranthus chloranthy chlorapatite chlorastrolite chlorate chlorazide chlorcosane chlordan chlordane chlore Chlorella Chlorellaceae chlorellaceous chloremia chlorenchyma chlorhydrate chlorhydric chloric chloridate chloridation chloride Chloridella Chloridellidae chlorider chloridize chlorimeter chlorimetric chlorimetry chlorinate chlorination chlorinator chlorine chlorinize chlorinous chloriodide Chlorion Chlorioninae chlorite chloritic chloritization chloritize chloritoid chlorize chlormethane chlormethylic chloroacetate chloroacetic chloroacetone chloroacetophenone chloroamide chloroamine chloroanaemia chloroanemia chloroaurate chloroauric chloroaurite chlorobenzene chlorobromide chlorocalcite chlorocarbonate chlorochromates chlorochromic chlorochrous Chlorococcaceae Chlorococcales Chlorococcum Chlorococcus chlorocresol chlorocruorin chlorodize chloroform chloroformate chloroformic chloroformism chloroformist chloroformization chloroformize chlorogenic chlorogenine chlorohydrin chlorohydrocarbon chloroiodide chloroleucite chloroma chloromelanite chlorometer chloromethane chlorometric chlorometry Chloromycetin chloronitrate chloropal chloropalladates chloropalladic chlorophane chlorophenol chlorophoenicite Chlorophora Chlorophyceae chlorophyceous chlorophyl chlorophyll chlorophyllaceous chlorophyllan chlorophyllase chlorophyllian chlorophyllide chlorophylliferous chlorophylligenous chlorophylligerous chlorophyllin chlorophyllite chlorophylloid chlorophyllose chlorophyllous chloropia chloropicrin chloroplast chloroplastic chloroplastid chloroplatinate chloroplatinic chloroplatinite chloroplatinous chloroprene chloropsia chloroquine chlorosilicate chlorosis chlorospinel chlorosulphonic chlorotic chlorous chlorozincate chlorsalol chloryl Chnuphis cho choachyte choana choanate Choanephora choanocytal choanocyte Choanoflagellata choanoflagellate Choanoflagellida Choanoflagellidae choanoid choanophorous choanosomal choanosome choate choaty chob choca chocard Chocho chocho chock chockablock chocker chockler chockman Choco Chocoan chocolate Choctaw choel choenix Choeropsis Choes choffer choga chogak chogset Choiak choice choiceful choiceless choicelessness choicely choiceness choicy choil choiler choir choirboy choirlike choirman choirmaster choirwise Choisya chokage choke chokeberry chokebore chokecherry chokedamp choker chokered chokerman chokestrap chokeweed chokidar choking chokingly chokra choky Chol chol Chola chola cholagogic cholagogue cholalic cholane cholangioitis cholangitis cholanic cholanthrene cholate chold choleate cholecyanine cholecyst cholecystalgia cholecystectasia cholecystectomy cholecystenterorrhaphy cholecystenterostomy cholecystgastrostomy cholecystic cholecystitis cholecystnephrostomy cholecystocolostomy cholecystocolotomy cholecystoduodenostomy cholecystogastrostomy cholecystogram cholecystography cholecystoileostomy cholecystojejunostomy cholecystokinin cholecystolithiasis cholecystolithotripsy cholecystonephrostomy cholecystopexy cholecystorrhaphy cholecystostomy cholecystotomy choledoch choledochal choledochectomy choledochitis choledochoduodenostomy choledochoenterostomy choledocholithiasis choledocholithotomy choledocholithotripsy choledochoplasty choledochorrhaphy choledochostomy choledochotomy cholehematin choleic choleine choleinic cholelith cholelithiasis cholelithic cholelithotomy cholelithotripsy cholelithotrity cholemia choleokinase cholepoietic choler cholera choleraic choleric cholericly cholericness choleriform cholerigenous cholerine choleroid choleromania cholerophobia cholerrhagia cholestane cholestanol cholesteatoma cholesteatomatous cholestene cholesterate cholesteremia cholesteric cholesterin cholesterinemia cholesterinic cholesterinuria cholesterol cholesterolemia cholesteroluria cholesterosis cholesteryl choletelin choletherapy choleuria choli choliamb choliambic choliambist cholic choline cholinergic cholinesterase cholinic cholla choller Cholo cholochrome cholocyanine Choloepus chologenetic choloidic choloidinic chololith chololithic Cholonan Cholones cholophein cholorrhea choloscopy cholterheaded cholum choluria Choluteca chomp chondral chondralgia chondrarsenite chondre chondrectomy chondrenchyma chondric chondrification chondrify chondrigen chondrigenous Chondrilla chondrin chondrinous chondriocont chondriome chondriomere chondriomite chondriosomal chondriosome chondriosphere chondrite chondritic chondritis chondroadenoma chondroalbuminoid chondroangioma chondroarthritis chondroblast chondroblastoma chondrocarcinoma chondrocele chondroclasis chondroclast chondrocoracoid chondrocostal chondrocranial chondrocranium chondrocyte chondrodite chondroditic chondrodynia chondrodystrophia chondrodystrophy chondroendothelioma chondroepiphysis chondrofetal chondrofibroma chondrofibromatous Chondroganoidei chondrogen chondrogenesis chondrogenetic chondrogenous chondrogeny chondroglossal chondroglossus chondrography chondroid chondroitic chondroitin chondrolipoma chondrology chondroma chondromalacia chondromatous chondromucoid Chondromyces chondromyoma chondromyxoma chondromyxosarcoma chondropharyngeal chondropharyngeus chondrophore chondrophyte chondroplast chondroplastic chondroplasty chondroprotein chondropterygian Chondropterygii chondropterygious chondrosamine chondrosarcoma chondrosarcomatous chondroseptum chondrosin chondrosis chondroskeleton chondrostean Chondrostei chondrosteoma chondrosteous chondrosternal chondrotome chondrotomy chondroxiphoid chondrule chondrus chonolith chonta Chontal Chontalan Chontaquiro chontawood choop choosable choosableness choose chooser choosing choosingly choosy chop chopa chopboat chopfallen chophouse chopin chopine choplogic chopped chopper choppered chopping choppy chopstick Chopunnish Chora choragic choragion choragium choragus choragy Chorai choral choralcelo choraleon choralist chorally Chorasmian chord chorda Chordaceae chordacentrous chordacentrum chordaceous chordal chordally chordamesoderm Chordata chordate chorded Chordeiles chorditis chordoid chordomesoderm chordotomy chordotonal chore chorea choreal choreatic choree choregic choregus choregy choreic choreiform choreograph choreographer choreographic choreographical choreography choreoid choreomania chorepiscopal chorepiscopus choreus choreutic chorial choriamb choriambic choriambize choriambus choric chorine chorioadenoma chorioallantoic chorioallantoid chorioallantois choriocapillaris choriocapillary choriocarcinoma choriocele chorioepithelioma chorioid chorioidal chorioiditis chorioidocyclitis chorioidoiritis chorioidoretinitis chorioma chorion chorionepithelioma chorionic Chorioptes chorioptic chorioretinal chorioretinitis Choripetalae choripetalous choriphyllous chorisepalous chorisis chorism chorist choristate chorister choristership choristic choristoblastoma choristoma choristry chorization chorizont chorizontal chorizontes chorizontic chorizontist chorogi chorograph chorographer chorographic chorographical chorographically chorography choroid choroidal choroidea choroiditis choroidocyclitis choroidoiritis choroidoretinitis chorological chorologist chorology choromania choromanic chorometry chorook Chorotega Choroti chort chorten Chorti chortle chortler chortosterol chorus choruser choruslike Chorwat choryos chose chosen chott Chou Chouan Chouanize chouette chough chouka choultry choup chouquette chous chouse chouser chousingha chow Chowanoc chowchow chowder chowderhead chowderheaded chowk chowry choya choyroot Chozar chrematheism chrematist chrematistic chrematistics chreotechnics chresmology chrestomathic chrestomathics chrestomathy chria chrimsel Chris chrism chrisma chrismal chrismary chrismatine chrismation chrismatite chrismatize chrismatory chrismon chrisom chrisomloosing chrisroot Chrissie Christ Christabel Christadelphian Christadelphianism christcross Christdom Christed christen Christendie Christendom christened christener christening Christenmas Christhood Christiad Christian Christiana Christiania Christianiadeal Christianism christianite Christianity Christianization Christianize Christianizer Christianlike Christianly Christianness Christianogentilism Christianography Christianomastix Christianopaganism Christicide Christie Christiform Christina Christine Christless Christlessness Christlike Christlikeness Christliness Christly Christmas Christmasberry Christmasing Christmastide Christmasy Christocentric Christogram Christolatry Christological Christologist Christology Christophany Christopher Christos chroatol Chrobat chroma chromaffin chromaffinic chromammine chromaphil chromaphore chromascope chromate chromatic chromatical chromatically chromatician chromaticism chromaticity chromatics chromatid chromatin chromatinic Chromatioideae chromatism chromatist Chromatium chromatize chromatocyte chromatodysopia chromatogenous chromatogram chromatograph chromatographic chromatography chromatoid chromatology chromatolysis chromatolytic chromatometer chromatone chromatopathia chromatopathic chromatopathy chromatophil chromatophile chromatophilia chromatophilic chromatophilous chromatophobia chromatophore chromatophoric chromatophorous chromatoplasm chromatopsia chromatoptometer chromatoptometry chromatoscope chromatoscopy chromatosis chromatosphere chromatospheric chromatrope chromaturia chromatype chromazurine chromdiagnosis chrome chromene chromesthesia chromic chromicize chromid Chromidae Chromides chromidial Chromididae chromidiogamy chromidiosome chromidium chromidrosis chromiferous chromiole chromism chromite chromitite chromium chromo Chromobacterieae Chromobacterium chromoblast chromocenter chromocentral chromochalcographic chromochalcography chromocollograph chromocollographic chromocollography chromocollotype chromocollotypy chromocratic chromocyte chromocytometer chromodermatosis chromodiascope chromogen chromogene chromogenesis chromogenetic chromogenic chromogenous chromogram chromograph chromoisomer chromoisomeric chromoisomerism chromoleucite chromolipoid chromolith chromolithic chromolithograph chromolithographer chromolithographic chromolithography chromolysis chromomere chromometer chromone chromonema chromoparous chromophage chromophane chromophile chromophilic chromophilous chromophobic chromophore chromophoric chromophorous chromophotograph chromophotographic chromophotography chromophotolithograph chromophyll chromoplasm chromoplasmic chromoplast chromoplastid chromoprotein chromopsia chromoptometer chromoptometrical chromosantonin chromoscope chromoscopic chromoscopy chromosomal chromosome chromosphere chromospheric chromotherapist chromotherapy chromotrope chromotropic chromotropism chromotropy chromotype chromotypic chromotypographic chromotypography chromotypy chromous chromoxylograph chromoxylography chromule chromy chromyl chronal chronanagram chronaxia chronaxie chronaxy chronic chronical chronically chronicity chronicle chronicler chronicon chronisotherm chronist chronobarometer chronocinematography chronocrator chronocyclegraph chronodeik chronogeneous chronogenesis chronogenetic chronogram chronogrammatic chronogrammatical chronogrammatically chronogrammatist chronogrammic chronograph chronographer chronographic chronographical chronographically chronography chronoisothermal chronologer chronologic chronological chronologically chronologist chronologize chronology chronomancy chronomantic chronometer chronometric chronometrical chronometrically chronometry chrononomy chronopher chronophotograph chronophotographic chronophotography Chronos chronoscope chronoscopic chronoscopically chronoscopy chronosemic chronostichon chronothermal chronothermometer chronotropic chronotropism Chroococcaceae chroococcaceous Chroococcales chroococcoid Chroococcus Chrosperma chrotta chrysal chrysalid chrysalidal chrysalides chrysalidian chrysaline chrysalis chrysaloid chrysamine chrysammic chrysamminic Chrysamphora chrysaniline chrysanisic chrysanthemin chrysanthemum chrysanthous Chrysaor chrysarobin chrysatropic chrysazin chrysazol chryselectrum chryselephantine Chrysemys chrysene chrysenic chrysid Chrysidella chrysidid Chrysididae chrysin Chrysippus Chrysis chrysoaristocracy Chrysobalanaceae Chrysobalanus chrysoberyl chrysobull chrysocarpous chrysochlore Chrysochloridae Chrysochloris chrysochlorous chrysochrous chrysocolla chrysocracy chrysoeriol chrysogen chrysograph chrysographer chrysography chrysohermidin chrysoidine chrysolite chrysolitic chrysology Chrysolophus chrysomelid Chrysomelidae chrysomonad Chrysomonadales Chrysomonadina chrysomonadine Chrysomyia Chrysopa chrysopal chrysopee chrysophan chrysophanic Chrysophanus chrysophenine chrysophilist chrysophilite Chrysophlyctis chrysophyll Chrysophyllum chrysopid Chrysopidae chrysopoeia chrysopoetic chrysopoetics chrysoprase Chrysops Chrysopsis chrysorin chrysosperm Chrysosplenium Chrysothamnus Chrysothrix chrysotile Chrysotis chrystocrene chthonian chthonic chthonophagia chthonophagy chub chubbed chubbedness chubbily chubbiness chubby Chuchona chuck chucker chuckhole chuckies chucking chuckingly chuckle chucklehead chuckleheaded chuckler chucklingly chuckrum chuckstone chuckwalla chucky Chud chuddar Chude Chudic Chueta chufa chuff chuffy chug chugger chuhra Chuje chukar Chukchi chukker chukor chulan chullpa chum Chumashan Chumawi chummage chummer chummery chummily chummy chump chumpaka chumpish chumpishness Chumpivilca chumpy chumship Chumulu Chun chun chunari Chuncho chunga chunk chunkhead chunkily chunkiness chunky chunner chunnia chunter chupak chupon chuprassie chuprassy church churchanity churchcraft churchdom churchful churchgoer churchgoing churchgrith churchianity churchified churchiness churching churchish churchism churchite churchless churchlet churchlike churchliness churchly churchman churchmanly churchmanship churchmaster churchscot churchward churchwarden churchwardenism churchwardenize churchwardenship churchwards churchway churchwise churchwoman churchy churchyard churel churinga churl churled churlhood churlish churlishly churlishness churly churm churn churnability churnful churning churnmilk churnstaff Churoya Churoyan churr Churrigueresque churruck churrus churrworm chut chute chuter chutney Chuvash Chwana chyack chyak chylaceous chylangioma chylaqueous chyle chylemia chylidrosis chylifaction chylifactive chylifactory chyliferous chylific chylification chylificatory chyliform chylify chylocaulous chylocauly chylocele chylocyst chyloid chylomicron chylopericardium chylophyllous chylophylly chylopoiesis chylopoietic chylosis chylothorax chylous chyluria chymaqueous chymase chyme chymia chymic chymiferous chymification chymify chymosin chymosinogen chymotrypsin chymotrypsinogen chymous chypre chytra chytrid Chytridiaceae chytridiaceous chytridial Chytridiales chytridiose chytridiosis Chytridium Chytroi cibarial cibarian cibarious cibation cibol Cibola Cibolan Ciboney cibophobia ciborium cibory ciboule cicad cicada Cicadellidae cicadid Cicadidae cicala cicatrice cicatrices cicatricial cicatricle cicatricose cicatricula cicatricule cicatrisive cicatrix cicatrizant cicatrizate cicatrization cicatrize cicatrizer cicatrose Cicely cicely cicer ciceronage cicerone ciceroni Ciceronian Ciceronianism Ciceronianize Ciceronic Ciceronically ciceronism ciceronize cichlid Cichlidae cichloid cichoraceous Cichoriaceae cichoriaceous Cichorium Cicindela cicindelid cicindelidae cicisbeism ciclatoun Ciconia Ciconiae ciconian ciconiid Ciconiidae ciconiiform Ciconiiformes ciconine ciconioid Cicuta cicutoxin Cid cidarid Cidaridae cidaris Cidaroida cider ciderish ciderist ciderkin cig cigala cigar cigaresque cigarette cigarfish cigarillo cigarito cigarless cigua ciguatera cilectomy cilia ciliary Ciliata ciliate ciliated ciliately ciliation cilice Cilician cilicious Cilicism ciliella ciliferous ciliform ciliiferous ciliiform Cilioflagellata cilioflagellate ciliograde ciliolate ciliolum Ciliophora cilioretinal cilioscleral ciliospinal ciliotomy cilium cillosis cimbia Cimbri Cimbrian Cimbric cimelia cimex cimicid Cimicidae cimicide cimiciform Cimicifuga cimicifugin cimicoid ciminite cimline Cimmeria Cimmerian Cimmerianism cimolite cinch cincher cincholoipon cincholoiponic cinchomeronic Cinchona Cinchonaceae cinchonaceous cinchonamine cinchonate cinchonia cinchonic cinchonicine cinchonidia cinchonidine cinchonine cinchoninic cinchonism cinchonization cinchonize cinchonology cinchophen cinchotine cinchotoxine cincinnal Cincinnati Cincinnatia Cincinnatian cincinnus Cinclidae Cinclidotus cinclis Cinclus cinct cincture cinder Cinderella cinderlike cinderman cinderous cindery cine cinecamera cinefilm cinel cinema Cinemascope cinematic cinematical cinematically cinematize cinematograph cinematographer cinematographic cinematographical cinematographically cinematographist cinematography cinemelodrama cinemize cinemograph cinenchyma cinenchymatous cinene cinenegative cineole cineolic cinephone cinephotomicrography cineplastics cineplasty cineraceous Cinerama Cineraria cinerarium cinerary cineration cinerator cinerea cinereal cinereous cineritious cinevariety cingle cingular cingulate cingulated cingulum cinnabar cinnabaric cinnabarine cinnamal cinnamaldehyde cinnamate cinnamein cinnamene cinnamenyl cinnamic Cinnamodendron cinnamol cinnamomic Cinnamomum cinnamon cinnamoned cinnamonic cinnamonlike cinnamonroot cinnamonwood cinnamyl cinnamylidene cinnoline cinnyl cinquain cinque cinquecentism cinquecentist cinquecento cinquefoil cinquefoiled cinquepace cinter Cinura cinuran cinurous cion cionectomy cionitis cionocranial cionocranian cionoptosis cionorrhaphia cionotome cionotomy Cipango cipher cipherable cipherdom cipherer cipherhood cipo cipolin cippus circa Circaea Circaeaceae Circaetus Circassian Circassic Circe Circean Circensian circinal circinate circinately circination Circinus circiter circle circled circler circlet circlewise circling circovarian circuit circuitable circuital circuiteer circuiter circuition circuitman circuitor circuitous circuitously circuitousness circuity circulable circulant circular circularism circularity circularization circularize circularizer circularly circularness circularwise circulate circulation circulative circulator circulatory circumagitate circumagitation circumambages circumambagious circumambience circumambiency circumambient circumambulate circumambulation circumambulator circumambulatory circumanal circumantarctic circumarctic circumarticular circumaviate circumaviation circumaviator circumaxial circumaxile circumaxillary circumbasal circumbendibus circumboreal circumbuccal circumbulbar circumcallosal Circumcellion circumcenter circumcentral circumcinct circumcincture circumcircle circumcise circumciser circumcision circumclude circumclusion circumcolumnar circumcone circumconic circumcorneal circumcrescence circumcrescent circumdenudation circumdiction circumduce circumduct circumduction circumesophagal circumesophageal circumference circumferential circumferentially circumferentor circumflant circumflect circumflex circumflexion circumfluence circumfluent circumfluous circumforaneous circumfulgent circumfuse circumfusile circumfusion circumgenital circumgyrate circumgyration circumgyratory circumhorizontal circumincession circuminsession circuminsular circumintestinal circumitineration circumjacence circumjacency circumjacent circumlental circumlitio circumlittoral circumlocute circumlocution circumlocutional circumlocutionary circumlocutionist circumlocutory circummeridian circummeridional circummigration circummundane circummure circumnatant circumnavigable circumnavigate circumnavigation circumnavigator circumnavigatory circumneutral circumnuclear circumnutate circumnutation circumnutatory circumocular circumoesophagal circumoral circumorbital circumpacific circumpallial circumparallelogram circumpentagon circumplicate circumplication circumpolar circumpolygon circumpose circumposition circumradius circumrenal circumrotate circumrotation circumrotatory circumsail circumscissile circumscribable circumscribe circumscribed circumscriber circumscript circumscription circumscriptive circumscriptively circumscriptly circumsinous circumspangle circumspatial circumspect circumspection circumspective circumspectively circumspectly circumspectness circumspheral circumstance circumstanced circumstantiability circumstantiable circumstantial circumstantiality circumstantially circumstantialness circumstantiate circumstantiation circumtabular circumterraneous circumterrestrial circumtonsillar circumtropical circumumbilical circumundulate circumundulation circumvallate circumvallation circumvascular circumvent circumventer circumvention circumventive circumventor circumviate circumvolant circumvolute circumvolution circumvolutory circumvolve circumzenithal circus circusy cirque cirrate cirrated Cirratulidae Cirratulus Cirrhopetalum cirrhosed cirrhosis cirrhotic cirrhous cirri cirribranch cirriferous cirriform cirrigerous cirrigrade cirriped Cirripedia cirripedial cirrolite cirropodous cirrose Cirrostomi cirrous cirrus cirsectomy Cirsium cirsocele cirsoid cirsomphalos cirsophthalmia cirsotome cirsotomy ciruela cirurgian Cisalpine cisalpine Cisalpinism cisandine cisatlantic cisco cise cisele cisgangetic cisjurane cisleithan cismarine Cismontane cismontane Cismontanism cisoceanic cispadane cisplatine cispontine cisrhenane Cissampelos cissing cissoid cissoidal Cissus cist cista Cistaceae cistaceous cistae cisted Cistercian Cistercianism cistern cisterna cisternal cistic cistophoric cistophorus Cistudo Cistus cistvaen cit citable citadel citation citator citatory cite citee Citellus citer citess cithara Citharexylum citharist citharista citharoedi citharoedic citharoedus cither citied citification citified citify Citigradae citigrade citizen citizendom citizeness citizenhood citizenish citizenism citizenize citizenly citizenry citizenship citole citraconate citraconic citral citramide citramontane citrange citrangeade citrate citrated citrean citrene citreous citric citriculture citriculturist citril citrin citrination citrine citrinin citrinous citrometer Citromyces citron citronade citronella citronellal citronelle citronellic citronellol citronin citronwood Citropsis citropten citrous citrullin Citrullus Citrus citrus citrylidene cittern citua city citycism citydom cityfolk cityful cityish cityless cityness cityscape cityward citywards cive civet civetlike civetone civic civically civicism civics civil civilian civility civilizable civilization civilizational civilizatory civilize civilized civilizedness civilizee civilizer civilly civilness civism Civitan civvy cixiid Cixiidae Cixo clabber clabbery clachan clack Clackama clackdish clacker clacket clackety clad cladanthous cladautoicous cladding cladine cladocarpous Cladocera cladoceran cladocerous cladode cladodial cladodont cladodontid Cladodontidae Cladodus cladogenous Cladonia Cladoniaceae cladoniaceous cladonioid Cladophora Cladophoraceae cladophoraceous Cladophorales cladophyll cladophyllum cladoptosis cladose Cladoselache Cladoselachea cladoselachian Cladoselachidae cladosiphonic Cladosporium Cladothrix Cladrastis cladus clag claggum claggy Claiborne Claibornian claim claimable claimant claimer claimless clairaudience clairaudient clairaudiently clairce clairecole clairecolle clairschach clairschacher clairsentience clairsentient clairvoyance clairvoyancy clairvoyant clairvoyantly claith claithes claiver Clallam clam clamant clamantly clamative Clamatores clamatorial clamatory clamb clambake clamber clamberer clamcracker clame clamer clammed clammer clammily clamminess clamming clammish clammy clammyweed clamor clamorer clamorist clamorous clamorously clamorousness clamorsome clamp clamper clamshell clamworm clan clancular clancularly clandestine clandestinely clandestineness clandestinity clanfellow clang clangful clangingly clangor clangorous clangorously Clangula clanjamfray clanjamfrey clanjamfrie clanjamphrey clank clankety clanking clankingly clankingness clankless clanless clanned clanning clannishly clannishness clansfolk clanship clansman clansmanship clanswoman Claosaurus clap clapboard clapbread clapmatch clapnet clapped clapper clapperclaw clapperclawer clapperdudgeon clappermaclaw clapping clapt claptrap clapwort claque claquer Clara clarabella clarain Clare Clarence Clarenceux Clarenceuxship Clarencieux clarendon claret Claretian Claribel claribella Clarice clarifiant clarification clarifier clarify clarigation clarin Clarinda clarinet clarinetist clarinettist clarion clarionet Clarissa Clarisse Clarist clarity clark clarkeite Clarkia claro Claromontane clarshech clart clarty clary clash clasher clashingly clashy clasmatocyte clasmatosis clasp clasper clasping claspt class classable classbook classed classer classes classfellow classic classical classicalism classicalist classicality classicalize classically classicalness classicism classicist classicistic classicize classicolatry classifiable classific classifically classification classificational classificator classificatory classified classifier classis classism classman classmanship classmate classroom classwise classwork classy clastic clat clatch Clathraceae clathraceous Clathraria clathrarian clathrate Clathrina Clathrinidae clathroid clathrose clathrulate Clathrus Clatsop clatter clatterer clatteringly clattertrap clattery clatty Claude claudent claudetite Claudia Claudian claudicant claudicate claudication Claudio Claudius claught clausal clause Clausilia Clausiliidae clausthalite claustra claustral claustration claustrophobia claustrum clausula clausular clausule clausure claut clava clavacin claval Clavaria Clavariaceae clavariaceous clavate clavated clavately clavation clave clavecin clavecinist clavel clavelization clavelize clavellate clavellated claver clavial claviature clavicembalo Claviceps clavichord clavichordist clavicithern clavicle clavicorn clavicornate Clavicornes Clavicornia clavicotomy clavicular clavicularium claviculate claviculus clavicylinder clavicymbal clavicytherium clavier clavierist claviform claviger clavigerous claviharp clavilux claviol clavipectoral clavis clavodeltoid clavodeltoideus clavola clavolae clavolet clavus clavy claw clawed clawer clawk clawker clawless clay claybank claybrained clayen clayer clayey clayiness clayish claylike clayman claymore Clayoquot claypan Claytonia clayware clayweed cleach clead cleaded cleading cleam cleamer clean cleanable cleaner cleanhanded cleanhandedness cleanhearted cleaning cleanish cleanlily cleanliness cleanly cleanness cleanout cleansable cleanse cleanser cleansing cleanskins cleanup clear clearable clearage clearance clearcole clearedness clearer clearheaded clearheadedly clearheadedness clearhearted clearing clearinghouse clearish clearly clearness clearskins clearstarch clearweed clearwing cleat cleavability cleavable cleavage cleave cleaveful cleavelandite cleaver cleavers cleaverwort cleaving cleavingly cleche cleck cled cledge cledgy cledonism clee cleek cleeked cleeky clef cleft clefted cleg cleidagra cleidarthritis cleidocostal cleidocranial cleidohyoid cleidomancy cleidomastoid cleidorrhexis cleidoscapular cleidosternal cleidotomy cleidotripsy cleistocarp cleistocarpous cleistogamic cleistogamically cleistogamous cleistogamously cleistogamy cleistogene cleistogenous cleistogeny cleistothecium Cleistothecopsis cleithral cleithrum clem Clematis clematite Clemclemalats clemence clemency Clement clement Clementina Clementine clemently clench cleoid Cleome Cleopatra clep Clepsine clepsydra cleptobiosis cleptobiotic clerestoried clerestory clergy clergyable clergylike clergyman clergywoman cleric clerical clericalism clericalist clericality clericalize clerically clericate clericature clericism clericity clerid Cleridae clerihew clerisy clerk clerkage clerkdom clerkery clerkess clerkhood clerking clerkish clerkless clerklike clerkliness clerkly clerkship Clerodendron cleromancy cleronomy cleruch cleruchial cleruchic cleruchy Clerus cletch Clethra Clethraceae clethraceous cleuch cleve cleveite clever cleverality cleverish cleverishly cleverly cleverness clevis clew cliack clianthus cliche click clicker clicket clickless clicky Clidastes cliency client clientage cliental cliented clientelage clientele clientless clientry clientship cliff cliffed cliffless clifflet clifflike cliffside cliffsman cliffweed cliffy clift Cliftonia cliftonite clifty clima Climaciaceae climaciaceous Climacium climacteric climacterical climacterically climactic climactical climactically climacus climata climatal climate climath climatic climatical climatically Climatius climatize climatographical climatography climatologic climatological climatologically climatologist climatology climatometer climatotherapeutics climatotherapy climature climax climb climbable climber climbing clime climograph clinal clinamen clinamina clinandria clinandrium clinanthia clinanthium clinch clincher clinchingly clinchingness cline cling clinger clingfish clinging clingingly clingingness clingstone clingy clinia clinic clinical clinically clinician clinicist clinicopathological clinium clink clinker clinkerer clinkery clinking clinkstone clinkum clinoaxis clinocephalic clinocephalism clinocephalous clinocephalus clinocephaly clinochlore clinoclase clinoclasite clinodiagonal clinodomatic clinodome clinograph clinographic clinohedral clinohedrite clinohumite clinoid clinologic clinology clinometer clinometric clinometrical clinometry clinopinacoid clinopinacoidal Clinopodium clinoprism clinopyramid clinopyroxene clinorhombic clinospore clinostat clinquant clint clinting Clinton Clintonia clintonite clinty Clio Cliona Clione clip clipei clipeus clippable clipped clipper clipperman clipping clips clipse clipsheet clipsome clipt clique cliquedom cliqueless cliquish cliquishly cliquishness cliquism cliquy cliseometer clisere clishmaclaver Clisiocampa Clistogastra clit clitch clite clitella clitellar clitelliferous clitelline clitellum clitellus clites clithe clithral clithridiate clitia clition Clitocybe Clitoria clitoridauxe clitoridean clitoridectomy clitoriditis clitoridotomy clitoris clitorism clitoritis clitter clitterclatter clival clive clivers Clivia clivis clivus cloaca cloacal cloacaline cloacean cloacinal cloacinean cloacitis cloak cloakage cloaked cloakedly cloaking cloakless cloaklet cloakmaker cloakmaking cloakroom cloakwise cloam cloamen cloamer clobber clobberer clochan cloche clocher clochette clock clockbird clockcase clocked clocker clockface clockhouse clockkeeper clockless clocklike clockmaker clockmaking clockmutch clockroom clocksmith clockwise clockwork clod clodbreaker clodder cloddily cloddiness cloddish cloddishly cloddishness cloddy clodhead clodhopper clodhopping clodlet clodpate clodpated clodpoll cloff clog clogdogdo clogger cloggily clogginess cloggy cloghad cloglike clogmaker clogmaking clogwood clogwyn cloiochoanitic cloisonless cloisonne cloister cloisteral cloistered cloisterer cloisterless cloisterlike cloisterliness cloisterly cloisterwise cloistral cloistress cloit clomb clomben clonal clone clonic clonicity clonicotonic clonism clonorchiasis Clonorchis Clonothrix clonus cloof cloop cloot clootie clop cloragen clorargyrite cloriodid closable close closecross closed closefisted closefistedly closefistedness closehanded closehearted closely closemouth closemouthed closen closeness closer closestool closet closewing closh closish closter Closterium clostridial Clostridium closure clot clotbur clote cloth clothbound clothe clothes clothesbag clothesbasket clothesbrush clotheshorse clothesline clothesman clothesmonger clothespin clothespress clothesyard clothier clothify Clothilda clothing clothmaker clothmaking Clotho clothworker clothy clottage clottedness clotter clotty cloture clotweed cloud cloudage cloudberry cloudburst cloudcap clouded cloudful cloudily cloudiness clouding cloudland cloudless cloudlessly cloudlessness cloudlet cloudlike cloudling cloudology cloudscape cloudship cloudward cloudwards cloudy clough clour clout clouted clouter clouterly clouty clove cloven clovene clover clovered cloverlay cloverleaf cloveroot cloverroot clovery clow clown clownade clownage clownery clownheal clownish clownishly clownishness clownship clowring cloy cloyedness cloyer cloying cloyingly cloyingness cloyless cloysome club clubbability clubbable clubbed clubber clubbily clubbing clubbish clubbism clubbist clubby clubdom clubfellow clubfisted clubfoot clubfooted clubhand clubhaul clubhouse clubionid Clubionidae clubland clubman clubmate clubmobile clubmonger clubridden clubroom clubroot clubstart clubster clubweed clubwoman clubwood cluck clue cluff clump clumpish clumproot clumpy clumse clumsily clumsiness clumsy clunch clung Cluniac Cluniacensian Clunisian Clunist clunk clupanodonic Clupea clupeid Clupeidae clupeiform clupeine Clupeodei clupeoid cluricaune Clusia Clusiaceae clusiaceous cluster clusterberry clustered clusterfist clustering clusteringly clustery clutch clutchman cluther clutter clutterer clutterment cluttery cly Clydesdale Clydeside Clydesider clyer clyfaker clyfaking Clymenia clype clypeal Clypeaster Clypeastridea Clypeastrina clypeastroid Clypeastroida Clypeastroidea clypeate clypeiform clypeolar clypeolate clypeole clypeus clysis clysma clysmian clysmic clyster clysterize Clytemnestra cnemapophysis cnemial cnemidium Cnemidophorus cnemis Cneoraceae cneoraceous Cneorum cnicin Cnicus cnida Cnidaria cnidarian Cnidian cnidoblast cnidocell cnidocil cnidocyst cnidophore cnidophorous cnidopod cnidosac Cnidoscolus cnidosis coabode coabound coabsume coacceptor coacervate coacervation coach coachability coachable coachbuilder coachbuilding coachee coacher coachfellow coachful coaching coachlet coachmaker coachmaking coachman coachmanship coachmaster coachsmith coachsmithing coachway coachwhip coachwise coachwoman coachwork coachwright coachy coact coaction coactive coactively coactivity coactor coadamite coadapt coadaptation coadequate coadjacence coadjacency coadjacent coadjacently coadjudicator coadjust coadjustment coadjutant coadjutator coadjute coadjutement coadjutive coadjutor coadjutorship coadjutress coadjutrix coadjuvancy coadjuvant coadjuvate coadminister coadministration coadministrator coadministratrix coadmiration coadmire coadmit coadnate coadore coadsorbent coadunate coadunation coadunative coadunatively coadunite coadventure coadventurer coadvice coaffirmation coafforest coaged coagency coagent coaggregate coaggregated coaggregation coagitate coagitator coagment coagonize coagriculturist coagula coagulability coagulable coagulant coagulase coagulate coagulation coagulative coagulator coagulatory coagulin coagulometer coagulose coagulum Coahuiltecan coaid coaita coak coakum coal coalbag coalbagger coalbin coalbox coaldealer coaler coalesce coalescence coalescency coalescent coalfish coalfitter coalhole coalification coalify Coalite coalition coalitional coalitioner coalitionist coalize coalizer coalless coalmonger coalmouse coalpit coalrake coalsack coalternate coalternation coalternative coaltitude coaly coalyard coambassador coambulant coamiable coaming Coan coanimate coannex coannihilate coapostate coapparition coappear coappearance coapprehend coapprentice coappriser coapprover coapt coaptate coaptation coaration coarb coarbiter coarbitrator coarctate coarctation coardent coarrange coarrangement coarse coarsely coarsen coarseness coarsish coascend coassert coasserter coassession coassessor coassignee coassist coassistance coassistant coassume coast coastal coastally coaster Coastguard coastguardman coasting coastland coastman coastside coastwaiter coastward coastwards coastways coastwise coat coated coatee coater coati coatie coatimondie coatimundi coating coatless coatroom coattail coattailed coattend coattest coattestation coattestator coaudience coauditor coaugment coauthor coauthority coauthorship coawareness coax coaxal coaxation coaxer coaxial coaxially coaxing coaxingly coaxy cob cobaea cobalt cobaltammine cobaltic cobalticyanic cobalticyanides cobaltiferous cobaltinitrite cobaltite cobaltocyanic cobaltocyanide cobaltous cobang cobbed cobber cobberer cobbing cobble cobbler cobblerfish cobblerism cobblerless cobblership cobblery cobblestone cobbling cobbly cobbra cobby cobcab Cobdenism Cobdenite cobego cobelief cobeliever cobelligerent cobenignity coberger cobewail cobhead cobia cobiron cobishop Cobitidae Cobitis coble cobleman Coblentzian Cobleskill cobless cobloaf cobnut cobola coboundless cobourg cobra cobreathe cobridgehead cobriform cobrother cobstone coburg coburgess coburgher coburghership Cobus cobweb cobwebbery cobwebbing cobwebby cobwork coca cocaceous cocaine cocainism cocainist cocainization cocainize cocainomania cocainomaniac Cocama Cocamama cocamine Cocanucos cocarboxylase cocash cocashweed cocause cocautioner Coccaceae coccagee coccal Cocceian Cocceianism coccerin cocci coccid Coccidae coccidia coccidial coccidian Coccidiidea coccidioidal Coccidioides Coccidiomorpha coccidiosis coccidium coccidology cocciferous cocciform coccigenic coccinella coccinellid Coccinellidae coccionella cocco coccobacillus coccochromatic Coccogonales coccogone Coccogoneae coccogonium coccoid coccolite coccolith coccolithophorid Coccolithophoridae Coccoloba Coccolobis Coccomyces coccosphere coccostean coccosteid Coccosteidae Coccosteus Coccothraustes coccothraustine Coccothrinax coccous coccule cocculiferous Cocculus cocculus coccus coccydynia coccygalgia coccygeal coccygean coccygectomy coccygerector coccyges coccygeus coccygine coccygodynia coccygomorph Coccygomorphae coccygomorphic coccygotomy coccyodynia coccyx Coccyzus cocentric cochairman cochal cochief Cochin cochineal cochlea cochlear cochleare Cochlearia cochlearifoliate cochleariform cochleate cochleated cochleiform cochleitis cochleous cochlidiid Cochlidiidae cochliodont Cochliodontidae Cochliodus Cochlospermaceae cochlospermaceous Cochlospermum Cochranea cochurchwarden cocillana cocircular cocircularity cocitizen cocitizenship cock cockade cockaded Cockaigne cockal cockalorum cockamaroo cockarouse cockateel cockatoo cockatrice cockawee cockbell cockbill cockbird cockboat cockbrain cockchafer cockcrow cockcrower cockcrowing cocked Cocker cocker cockerel cockermeg cockernony cocket cockeye cockeyed cockfight cockfighting cockhead cockhorse cockieleekie cockily cockiness cocking cockish cockle cockleboat cocklebur cockled cockler cockleshell cocklet cocklewife cocklight cockling cockloft cockly cockmaster cockmatch cockmate cockneian cockneity cockney cockneybred cockneydom cockneyese cockneyess cockneyfication cockneyfy cockneyish cockneyishly cockneyism cockneyize cockneyland cockneyship cockpit cockroach cockscomb cockscombed cocksfoot cockshead cockshot cockshut cockshy cockshying cockspur cockstone cocksure cocksuredom cocksureism cocksurely cocksureness cocksurety cocktail cockthrowing cockup cockweed cocky Cocle coco cocoa cocoach cocobolo Coconino coconnection coconqueror coconscious coconsciously coconsciousness coconsecrator coconspirator coconstituent cocontractor Coconucan Coconuco coconut cocoon cocoonery cocorico cocoroot Cocos cocotte cocovenantor cocowood cocowort cocozelle cocreate cocreator cocreatorship cocreditor cocrucify coctile coction coctoantigen coctoprecipitin cocuisa cocullo cocurator cocurrent cocuswood cocuyo Cocytean Cocytus cod coda codamine codbank codder codding coddle coddler code codebtor codeclination codecree codefendant codeine codeless codelight codelinquency codelinquent codenization codeposit coder coderive codescendant codespairer codex codfish codfisher codfishery codger codhead codheaded Codiaceae codiaceous Codiaeum Codiales codical codices codicil codicilic codicillary codictatorship codification codifier codify codilla codille codiniac codirectional codirector codiscoverer codisjunct codist Codium codivine codling codman codo codol codomestication codominant codon codpiece codpitchings Codrus codshead codworm coe coecal coecum coed coeditor coeditorship coeducate coeducation coeducational coeducationalism coeducationalize coeducationally coeffect coefficacy coefficient coefficiently coeffluent coeffluential coelacanth coelacanthid Coelacanthidae coelacanthine Coelacanthini coelacanthoid coelacanthous coelanaglyphic coelar coelarium Coelastraceae coelastraceous Coelastrum Coelata coelder coeldership Coelebogyne coelect coelection coelector coelectron coelelminth Coelelminthes coelelminthic Coelentera Coelenterata coelenterate coelenteric coelenteron coelestine coelevate coelho coelia coeliac coelialgia coelian Coelicolae Coelicolist coeligenous coelin coeline coeliomyalgia coeliorrhea coeliorrhoea coelioscopy coeliotomy coeloblastic coeloblastula Coelococcus coelodont coelogastrula Coeloglossum Coelogyne coelom coeloma Coelomata coelomate coelomatic coelomatous coelomesoblast coelomic Coelomocoela coelomopore coelonavigation coelongated coeloplanula coelosperm coelospermous coelostat coelozoic coemanate coembedded coembody coembrace coeminency coemperor coemploy coemployee coemployment coempt coemption coemptional coemptionator coemptive coemptor coenact coenactor coenaculous coenamor coenamorment coenamourment coenanthium coendear Coendidae Coendou coendure coenenchym coenenchyma coenenchymal coenenchymatous coenenchyme coenesthesia coenesthesis coenflame coengage coengager coenjoy coenobe coenobiar coenobic coenobioid coenobium coenoblast coenoblastic coenocentrum coenocyte coenocytic coenodioecism coenoecial coenoecic coenoecium coenogamete coenomonoecism coenosarc coenosarcal coenosarcous coenosite coenospecies coenospecific coenospecifically coenosteal coenosteum coenotrope coenotype coenotypic coenthrone coenurus coenzyme coequal coequality coequalize coequally coequalness coequate coequated coequation coerce coercement coercer coercibility coercible coercibleness coercibly coercion coercionary coercionist coercitive coercive coercively coerciveness coercivity Coerebidae coeruleolactite coessential coessentiality coessentially coessentialness coestablishment coestate coetaneity coetaneous coetaneously coetaneousness coeternal coeternally coeternity coetus coeval coevality coevally coexchangeable coexclusive coexecutant coexecutor coexecutrix coexert coexertion coexist coexistence coexistency coexistent coexpand coexpanded coexperiencer coexpire coexplosion coextend coextension coextensive coextensively coextensiveness coextent cofactor Cofane cofaster cofather cofathership cofeature cofeoffee coferment cofermentation coff Coffea coffee coffeebush coffeecake coffeegrower coffeegrowing coffeehouse coffeeleaf coffeepot coffeeroom coffeetime coffeeweed coffeewood coffer cofferdam cofferer cofferfish coffering cofferlike cofferwork coffin coffinless coffinmaker coffinmaking coffle coffret cofighter coforeknown coformulator cofounder cofoundress cofreighter coft cofunction cog cogence cogency cogener cogeneric cogent cogently cogged cogger coggie cogging coggle coggledy cogglety coggly coghle cogitability cogitable cogitabund cogitabundity cogitabundly cogitabundous cogitant cogitantly cogitate cogitatingly cogitation cogitative cogitatively cogitativeness cogitativity cogitator coglorify coglorious cogman cognac cognate cognateness cognatic cognatical cognation cognisable cognisance cognition cognitional cognitive cognitively cognitum cognizability cognizable cognizableness cognizably cognizance cognizant cognize cognizee cognizer cognizor cognomen cognominal cognominate cognomination cognosce cognoscent cognoscibility cognoscible cognoscitive cognoscitively cogon cogonal cogovernment cogovernor cogracious cograil cogrediency cogredient cogroad Cogswellia coguarantor coguardian cogue cogway cogwheel cogwood cohabit cohabitancy cohabitant cohabitation coharmonious coharmoniously coharmonize coheartedness coheir coheiress coheirship cohelper cohelpership Cohen cohenite coherald cohere coherence coherency coherent coherently coherer coheretic coheritage coheritor cohesibility cohesible cohesion cohesive cohesively cohesiveness cohibit cohibition cohibitive cohibitor coho cohoba cohobate cohobation cohobator cohol cohort cohortation cohortative cohosh cohune cohusband coidentity coif coifed coiffure coign coigue coil coiled coiler coiling coilsmith coimmense coimplicant coimplicate coimplore coin coinable coinage coincide coincidence coincidency coincident coincidental coincidentally coincidently coincider coinclination coincline coinclude coincorporate coindicant coindicate coindication coindwelling coiner coinfeftment coinfer coinfinite coinfinity coinhabit coinhabitant coinhabitor coinhere coinherence coinherent coinheritance coinheritor coining coinitial coinmaker coinmaking coinmate coinspire coinstantaneity coinstantaneous coinstantaneously coinstantaneousness coinsurance coinsure cointense cointension cointensity cointer cointerest cointersecting cointise Cointreau coinventor coinvolve coiny coir coislander coistrel coistril coital coition coiture coitus Coix cojudge cojuror cojusticiar coke cokelike cokeman coker cokernut cokery coking coky col Cola cola colaborer Colada colalgia Colan colander colane colarin colate colation colatitude colatorium colature colauxe colback colberter colbertine Colbertism colcannon Colchian Colchicaceae colchicine Colchicum Colchis colchyte Colcine colcothar cold colder coldfinch coldhearted coldheartedly coldheartedness coldish coldly coldness coldproof coldslaw cole coleader colecannon colectomy colegatee colegislator colemanite colemouse Coleochaetaceae coleochaetaceous Coleochaete Coleophora Coleophoridae coleopter Coleoptera coleopteral coleopteran coleopterist coleopteroid coleopterological coleopterology coleopteron coleopterous coleoptile coleoptilum coleorhiza Coleosporiaceae Coleosporium coleplant coleseed coleslaw colessee colessor coletit coleur Coleus colewort coli Colias colibacillosis colibacterin colibri colic colical colichemarde colicky colicolitis colicroot colicweed colicwort colicystitis colicystopyelitis coliform Coliidae Coliiformes colilysin Colima colima colin colinear colinephritis coling Colinus coliplication colipuncture colipyelitis colipyuria colisepsis Coliseum coliseum colitic colitis colitoxemia coliuria Colius colk coll Colla collaborate collaboration collaborationism collaborationist collaborative collaboratively collaborator collage collagen collagenic collagenous collapse collapsibility collapsible collar collarband collarbird collarbone collard collare collared collaret collarino collarless collarman collatable collate collatee collateral collaterality collaterally collateralness collation collationer collatitious collative collator collatress collaud collaudation colleague colleagueship collect collectability collectable collectanea collectarium collected collectedly collectedness collectibility collectible collection collectional collectioner collective collectively collectiveness collectivism collectivist collectivistic collectivistically collectivity collectivization collectivize collector collectorate collectorship collectress colleen collegatary college colleger collegial collegialism collegiality collegian collegianer Collegiant collegiate collegiately collegiateness collegiation collegium Collembola collembolan collembole collembolic collembolous collenchyma collenchymatic collenchymatous collenchyme collencytal collencyte Colleri Colleries Collery collery collet colleter colleterial colleterium Colletes Colletia colletic Colletidae colletin Colletotrichum colletside colley collibert colliculate colliculus collide collidine collie collied collier colliery collieshangie colliform colligate colligation colligative colligible collimate collimation collimator collin collinal colline collinear collinearity collinearly collineate collineation colling collingly collingual Collins collins Collinsia collinsite Collinsonia colliquate colliquation colliquative colliquativeness collision collisional collisive colloblast collobrierite collocal Collocalia collocate collocation collocationable collocative collocatory collochemistry collochromate collock collocution collocutor collocutory collodiochloride collodion collodionization collodionize collodiotype collodium collogue colloid colloidal colloidality colloidize colloidochemical Collomia collop colloped collophanite collophore colloque colloquia colloquial colloquialism colloquialist colloquiality colloquialize colloquially colloquialness colloquist colloquium colloquize colloquy collothun collotype collotypic collotypy colloxylin colluctation collude colluder collum collumelliaceous collusion collusive collusively collusiveness collutorium collutory colluvial colluvies colly collyba Collybia Collyridian collyrite collyrium collywest collyweston collywobbles colmar colobin colobium coloboma Colobus Colocasia colocentesis Colocephali colocephalous coloclysis colocola colocolic colocynth colocynthin colodyspepsia coloenteritis cologarithm Cologne cololite Colombian colombier colombin Colombina colometric colometrically colometry colon colonalgia colonate colonel colonelcy colonelship colongitude colonial colonialism colonialist colonialize colonially colonialness colonic colonist colonitis colonizability colonizable colonization colonizationist colonize colonizer colonnade colonnaded colonnette colonopathy colonopexy colonoscope colonoscopy colony colopexia colopexotomy colopexy colophane colophany colophene colophenic colophon colophonate Colophonian colophonic colophonist colophonite colophonium colophony coloplication coloproctitis coloptosis colopuncture coloquintid coloquintida color colorability colorable colorableness colorably Coloradan Colorado colorado coloradoite colorant colorate coloration colorational colorationally colorative coloratura colorature colorcast colorectitis colorectostomy colored colorer colorfast colorful colorfully colorfulness colorific colorifics colorimeter colorimetric colorimetrical colorimetrically colorimetrics colorimetrist colorimetry colorin coloring colorist coloristic colorization colorize colorless colorlessly colorlessness colormaker colormaking colorman colorrhaphy colors colortype Colorum colory coloss colossal colossality colossally colossean Colosseum colossi Colossian Colossochelys colossus Colossuswise colostomy colostral colostration colostric colostrous colostrum colotomy colotyphoid colove colp colpenchyma colpeo colpeurynter colpeurysis colpindach colpitis colpocele colpocystocele colpohyperplasia colpohysterotomy colpoperineoplasty colpoperineorrhaphy colpoplastic colpoplasty colpoptosis colporrhagia colporrhaphy colporrhea colporrhexis colport colportage colporter colporteur colposcope colposcopy colpotomy colpus Colt colt colter colthood coltish coltishly coltishness coltpixie coltpixy coltsfoot coltskin Coluber colubrid Colubridae colubriform Colubriformes Colubriformia Colubrina Colubrinae colubrine colubroid colugo Columba columbaceous Columbae Columban Columbanian columbarium columbary columbate columbeion Columbella Columbia columbiad Columbian columbic Columbid Columbidae columbier columbiferous Columbiformes columbin Columbine columbine columbite columbium columbo columboid columbotantalate columbotitanate columella columellar columellate Columellia Columelliaceae columelliform column columnal columnar columnarian columnarity columnated columned columner columniation columniferous columniform columning columnist columnization columnwise colunar colure Colutea Colville coly Colymbidae colymbiform colymbion Colymbriformes Colymbus colyone colyonic colytic colyum colyumist colza coma comacine comagistracy comagmatic comaker comal comamie Coman Comanche Comanchean Comandra comanic comart Comarum comate comatose comatosely comatoseness comatosity comatous comatula comatulid comb combaron combat combatable combatant combater combative combatively combativeness combativity combed comber combfish combflower combinable combinableness combinant combinantive combinate combination combinational combinative combinator combinatorial combinatory combine combined combinedly combinedness combinement combiner combing combining comble combless comblessness combmaker combmaking comboloio comboy Combretaceae combretaceous Combretum combure comburendo comburent comburgess comburimeter comburimetry comburivorous combust combustibility combustible combustibleness combustibly combustion combustive combustor combwise combwright comby come comeback Comecrudo comedial comedian comediant comedic comedical comedienne comedietta comedist comedo comedown comedy comelily comeliness comeling comely comendite comenic comephorous comer comes comestible comet cometarium cometary comether cometic cometical cometlike cometographer cometographical cometography cometoid cometology cometwise comeuppance comfit comfiture comfort comfortable comfortableness comfortably comforter comfortful comforting comfortingly comfortless comfortlessly comfortlessness comfortress comfortroot comfrey comfy Comiakin comic comical comicality comically comicalness comicocratic comicocynical comicodidactic comicography comicoprosaic comicotragedy comicotragic comicotragical comicry Comid comiferous Cominform coming comingle comino Comintern comism comital comitant comitatensian comitative comitatus comitia comitial Comitium comitragedy comity comma command commandable commandant commandedness commandeer commander commandership commandery commanding commandingly commandingness commandless commandment commando commandoman commandress commassation commassee commatic commation commatism commeasurable commeasure commeddle Commelina Commelinaceae commelinaceous commemorable commemorate commemoration commemorational commemorative commemoratively commemorativeness commemorator commemoratory commemorize commence commenceable commencement commencer commend commendable commendableness commendably commendador commendam commendatary commendation commendator commendatory commender commendingly commendment commensal commensalism commensalist commensalistic commensality commensally commensurability commensurable commensurableness commensurably commensurate commensurately commensurateness commensuration comment commentarial commentarialism commentary commentate commentation commentator commentatorial commentatorially commentatorship commenter commerce commerceless commercer commerciable commercial commercialism commercialist commercialistic commerciality commercialization commercialize commercially commercium commerge commie comminate commination comminative comminator comminatory commingle comminglement commingler comminister comminuate comminute comminution comminutor Commiphora commiserable commiserate commiseratingly commiseration commiserative commiseratively commiserator commissar commissarial commissariat commissary commissaryship commission commissionaire commissional commissionate commissioner commissionership commissionship commissive commissively commissural commissure commissurotomy commit commitment committable committal committee committeeism committeeman committeeship committeewoman committent committer committible committor commix commixt commixtion commixture commodatary commodate commodation commodatum commode commodious commodiously commodiousness commoditable commodity commodore common commonable commonage commonality commonalty commoner commonership commoney commonish commonition commonize commonly commonness commonplace commonplaceism commonplacely commonplaceness commonplacer commons commonsensible commonsensibly commonsensical commonsensically commonty commonweal commonwealth commonwealthism commorancy commorant commorient commorth commot commotion commotional commotive commove communa communal communalism communalist communalistic communality communalization communalize communalizer communally communard commune communer communicability communicable communicableness communicably communicant communicate communicatee communicating communication communicative communicatively communicativeness communicator communicatory communion communionist communique communism communist communistery communistic communistically communital communitarian communitary communitive communitorium community communization communize commutability commutable commutableness commutant commutate commutation commutative commutatively commutator commute commuter commuting commutual commutuality Comnenian comoid comolecule comortgagee comose comourn comourner comournful comous Comox compact compacted compactedly compactedness compacter compactible compaction compactly compactness compactor compacture compages compaginate compagination companator companion companionability companionable companionableness companionably companionage companionate companionize companionless companionship companionway company comparability comparable comparableness comparably comparascope comparate comparatival comparative comparatively comparativeness comparativist comparator compare comparer comparison comparition comparograph compart compartition compartment compartmental compartmentalization compartmentalize compartmentally compartmentize compass compassable compasser compasses compassing compassion compassionable compassionate compassionately compassionateness compassionless compassive compassivity compassless compaternity compatibility compatible compatibleness compatibly compatriot compatriotic compatriotism compear compearance compearant compeer compel compellable compellably compellation compellative compellent compeller compelling compellingly compend compendency compendent compendia compendiary compendiate compendious compendiously compendiousness compendium compenetrate compenetration compensable compensate compensating compensatingly compensation compensational compensative compensativeness compensator compensatory compense compenser compesce compete competence competency competent competently competentness competition competitioner competitive competitively competitiveness competitor competitorship competitory competitress competitrix compilation compilator compilatory compile compilement compiler compital Compitalia compitum complacence complacency complacent complacential complacentially complacently complain complainable complainant complainer complainingly complainingness complaint complaintive complaintiveness complaisance complaisant complaisantly complaisantness complanar complanate complanation complect complected complement complemental complementally complementalness complementariness complementarism complementary complementation complementative complementer complementoid complete completedness completely completement completeness completer completion completive completively completory complex complexedness complexification complexify complexion complexionably complexional complexionally complexioned complexionist complexionless complexity complexively complexly complexness complexus compliable compliableness compliably compliance compliancy compliant compliantly complicacy complicant complicate complicated complicatedly complicatedness complication complicative complice complicitous complicity complier compliment complimentable complimental complimentally complimentalness complimentarily complimentariness complimentary complimentation complimentative complimenter complimentingly complin complot complotter Complutensian compluvium comply compo compoer compole compone componed componency componendo component componental componented compony comport comportment compos compose composed composedly composedness composer composita Compositae composite compositely compositeness composition compositional compositionally compositive compositively compositor compositorial compositous composograph compossibility compossible compost composture composure compotation compotationship compotator compotatory compote compotor compound compoundable compoundedness compounder compounding compoundness comprachico comprador comprecation compreg compregnate comprehend comprehender comprehendible comprehendingly comprehense comprehensibility comprehensible comprehensibleness comprehensibly comprehension comprehensive comprehensively comprehensiveness comprehensor compresbyter compresbyterial compresence compresent compress compressed compressedly compressibility compressible compressibleness compressingly compression compressional compressive compressively compressometer compressor compressure comprest compriest comprisable comprisal comprise comprised compromise compromiser compromising compromisingly compromissary compromission compromissorial compromit compromitment comprovincial Compsilura Compsoa Compsognathus Compsothlypidae compter Comptometer Comptonia comptroller comptrollership compulsative compulsatively compulsatorily compulsatory compulsed compulsion compulsitor compulsive compulsively compulsiveness compulsorily compulsoriness compulsory compunction compunctionary compunctionless compunctious compunctiously compunctive compurgation compurgator compurgatorial compurgatory compursion computability computable computably computation computational computative computativeness compute computer computist computus comrade comradely comradery comradeship Comsomol comstockery Comtian Comtism Comtist comurmurer Comus con conacaste conacre conal conalbumin conamed Conant conarial conarium conation conational conationalistic conative conatus conaxial concamerate concamerated concameration concanavalin concaptive concassation concatenary concatenate concatenation concatenator concausal concause concavation concave concavely concaveness concaver concavity conceal concealable concealed concealedly concealedness concealer concealment concede conceded concededly conceder conceit conceited conceitedly conceitedness conceitless conceity conceivability conceivable conceivableness conceivably conceive conceiver concelebrate concelebration concent concenter concentive concentralization concentrate concentrated concentration concentrative concentrativeness concentrator concentric concentrically concentricity concentual concentus concept conceptacle conceptacular conceptaculum conception conceptional conceptionist conceptism conceptive conceptiveness conceptual conceptualism conceptualist conceptualistic conceptuality conceptualization conceptualize conceptually conceptus concern concerned concernedly concernedness concerning concerningly concerningness concernment concert concerted concertedly concertgoer concertina concertinist concertist concertize concertizer concertmaster concertmeister concertment concerto concertstuck concessible concession concessionaire concessional concessionary concessioner concessionist concessive concessively concessiveness concessor concettism concettist conch concha conchal conchate conche conched concher Conchifera conchiferous conchiform conchinine conchiolin conchitic conchitis Conchobor conchoid conchoidal conchoidally conchological conchologically conchologist conchologize conchology conchometer conchometry Conchostraca conchotome Conchubar Conchucu conchuela conchy conchyliated conchyliferous conchylium concierge concile conciliable conciliabule conciliabulum conciliar conciliate conciliating conciliatingly conciliation conciliationist conciliative conciliator conciliatorily conciliatoriness conciliatory concilium concinnity concinnous concionator concipiency concipient concise concisely conciseness concision conclamant conclamation conclave conclavist concludable conclude concluder concluding concludingly conclusion conclusional conclusionally conclusive conclusively conclusiveness conclusory concoagulate concoagulation concoct concocter concoction concoctive concoctor concolor concolorous concomitance concomitancy concomitant concomitantly conconscious Concord concord concordal concordance concordancer concordant concordantial concordantly concordat concordatory concorder concordial concordist concordity concorporate Concorrezanes concourse concreate concremation concrement concresce concrescence concrescible concrescive concrete concretely concreteness concreter concretion concretional concretionary concretism concretive concretively concretize concretor concubinage concubinal concubinarian concubinary concubinate concubine concubinehood concubitancy concubitant concubitous concubitus concupiscence concupiscent concupiscible concupiscibleness concupy concur concurrence concurrency concurrent concurrently concurrentness concurring concurringly concursion concurso concursus concuss concussant concussion concussional concussive concutient concyclic concyclically cond Condalia condemn condemnable condemnably condemnate condemnation condemnatory condemned condemner condemning condemningly condensability condensable condensance condensary condensate condensation condensational condensative condensator condense condensed condensedly condensedness condenser condensery condensity condescend condescendence condescendent condescender condescending condescendingly condescendingness condescension condescensive condescensively condescensiveness condiction condictious condiddle condiddlement condign condigness condignity condignly condiment condimental condimentary condisciple condistillation condite condition conditional conditionalism conditionalist conditionality conditionalize conditionally conditionate conditioned conditioner condivision condolatory condole condolement condolence condolent condoler condoling condolingly condominate condominium condonable condonance condonation condonative condone condonement condoner condor conduce conducer conducing conducingly conducive conduciveness conduct conductance conductibility conductible conductility conductimeter conductio conduction conductional conductitious conductive conductively conductivity conductometer conductometric conductor conductorial conductorless conductorship conductory conductress conductus conduit conduplicate conduplicated conduplication condurangin condurango condylar condylarth Condylarthra condylarthrosis condylarthrous condyle condylectomy condylion condyloid condyloma condylomatous condylome condylopod Condylopoda condylopodous condylos condylotomy Condylura condylure cone coned coneen coneflower conehead coneighboring coneine conelet conemaker conemaking Conemaugh conenose conepate coner cones conessine Conestoga confab confabular confabulate confabulation confabulator confabulatory confact confarreate confarreation confated confect confection confectionary confectioner confectionery Confed confederacy confederal confederalist confederate confederater confederatio confederation confederationist confederatism confederative confederatize confederator confelicity conferee conference conferential conferment conferrable conferral conferrer conferruminate conferted Conferva Confervaceae confervaceous conferval Confervales confervoid Confervoideae confervous confess confessable confessant confessarius confessary confessedly confesser confessing confessingly confession confessional confessionalian confessionalism confessionalist confessionary confessionist confessor confessorship confessory confidant confide confidence confidency confident confidential confidentiality confidentially confidentialness confidentiary confidently confidentness confider confiding confidingly confidingness configural configurate configuration configurational configurationally configurationism configurationist configurative configure confinable confine confineable confined confinedly confinedness confineless confinement confiner confining confinity confirm confirmable confirmand confirmation confirmative confirmatively confirmatorily confirmatory confirmed confirmedly confirmedness confirmee confirmer confirming confirmingly confirmity confirmment confirmor confiscable confiscatable confiscate confiscation confiscator confiscatory confitent confiteor confiture confix conflagrant conflagrate conflagration conflagrative conflagrator conflagratory conflate conflated conflation conflict conflicting conflictingly confliction conflictive conflictory conflow confluence confluent confluently conflux confluxibility confluxible confluxibleness confocal conform conformability conformable conformableness conformably conformal conformance conformant conformate conformation conformator conformer conformist conformity confound confoundable confounded confoundedly confoundedness confounder confounding confoundingly confrater confraternal confraternity confraternization confrere confriar confrication confront confrontal confrontation confronte confronter confrontment Confucian Confucianism Confucianist confusability confusable confusably confuse confused confusedly confusedness confusingly confusion confusional confusticate confustication confutable confutation confutative confutator confute confuter conga congeable congeal congealability congealable congealableness congealedness congealer congealment congee congelation congelative congelifraction congeliturbate congeliturbation congener congeneracy congeneric congenerical congenerous congenerousness congenetic congenial congeniality congenialize congenially congenialness congenital congenitally congenitalness conger congeree congest congested congestible congestion congestive congiary congius conglobate conglobately conglobation conglobe conglobulate conglomerate conglomeratic conglomeration conglutin conglutinant conglutinate conglutination conglutinative Congo Congoese Congolese Congoleum congou congratulable congratulant congratulate congratulation congratulational congratulator congratulatory congredient congreet congregable congreganist congregant congregate congregation congregational congregationalism Congregationalist congregationalize congregationally Congregationer congregationist congregative congregativeness congregator Congreso congress congresser congressional congressionalist congressionally congressionist congressist congressive congressman Congresso congresswoman Congreve Congridae congroid congruence congruency congruent congruential congruently congruism congruist congruistic congruity congruous congruously congruousness conhydrine Coniacian conic conical conicality conically conicalness coniceine conichalcite conicine conicity conicle conicoid conicopoly conics Conidae conidia conidial conidian conidiiferous conidioid conidiophore conidiophorous conidiospore conidium conifer Coniferae coniferin coniferophyte coniferous conification coniform Conilurus conima conimene conin conine Coniogramme Coniophora Coniopterygidae Conioselinum coniosis Coniothyrium coniroster conirostral Conirostres Conium conject conjective conjecturable conjecturably conjectural conjecturalist conjecturality conjecturally conjecture conjecturer conjobble conjoin conjoined conjoinedly conjoiner conjoint conjointly conjointment conjointness conjubilant conjugable conjugacy conjugal Conjugales conjugality conjugally conjugant conjugata Conjugatae conjugate conjugated conjugately conjugateness conjugation conjugational conjugationally conjugative conjugator conjugial conjugium conjunct conjunction conjunctional conjunctionally conjunctiva conjunctival conjunctive conjunctively conjunctiveness conjunctivitis conjunctly conjunctur conjunctural conjuncture conjuration conjurator conjure conjurement conjurer conjurership conjuror conjury conk conkanee conker conkers conky conn connach Connaraceae connaraceous connarite Connarus connascency connascent connatal connate connately connateness connation connatural connaturality connaturalize connaturally connaturalness connature connaught connect connectable connectant connected connectedly connectedness connectible connection connectional connectival connective connectively connectivity connector connellite conner connex connexion connexionalism connexity connexive connexivum connexus Connie conning conniption connivance connivancy connivant connivantly connive connivent conniver Connochaetes connoissance connoisseur connoisseurship connotation connotative connotatively connote connotive connotively connubial connubiality connubially connubiate connubium connumerate connumeration Conocarpus Conocephalum Conocephalus conoclinium conocuneus conodont conoid conoidal conoidally conoidic conoidical conoidically Conolophus conominee cononintelligent Conopholis conopid Conopidae conoplain conopodium Conopophaga Conopophagidae Conor Conorhinus conormal conoscope conourish Conoy conphaseolin conplane conquedle conquer conquerable conquerableness conqueress conquering conqueringly conquerment conqueror conquest conquian conquinamine conquinine conquistador Conrad conrector conrectorship conred Conringia consanguine consanguineal consanguinean consanguineous consanguineously consanguinity conscience conscienceless consciencelessly consciencelessness consciencewise conscient conscientious conscientiously conscientiousness conscionable conscionableness conscionably conscious consciously consciousness conscribe conscript conscription conscriptional conscriptionist conscriptive consecrate consecrated consecratedness consecrater consecration consecrative consecrator consecratory consectary consecute consecution consecutive consecutively consecutiveness consecutives consenescence consenescency consension consensual consensually consensus consent consentable consentaneity consentaneous consentaneously consentaneousness consentant consenter consentful consentfully consentience consentient consentiently consenting consentingly consentingness consentive consentively consentment consequence consequency consequent consequential consequentiality consequentially consequentialness consequently consertal conservable conservacy conservancy conservant conservate conservation conservational conservationist conservatism conservatist conservative conservatively conservativeness conservatize conservatoire conservator conservatorio conservatorium conservatorship conservatory conservatrix conserve conserver consider considerability considerable considerableness considerably considerance considerate considerately considerateness consideration considerative consideratively considerativeness considerator considered considerer considering consideringly consign consignable consignatary consignation consignatory consignee consigneeship consigner consignificant consignificate consignification consignificative consignificator consignify consignment consignor consiliary consilience consilient consimilar consimilarity consimilate consist consistence consistency consistent consistently consistorial consistorian consistory consociate consociation consociational consociationism consociative consocies consol consolable consolableness consolably Consolamentum consolation Consolato consolatorily consolatoriness consolatory consolatrix console consolement consoler consolidant consolidate consolidated consolidation consolidationist consolidative consolidator consoling consolingly consolute consomme consonance consonancy consonant consonantal consonantic consonantism consonantize consonantly consonantness consonate consonous consort consortable consorter consortial consortion consortism consortium consortship consound conspecies conspecific conspectus consperse conspersion conspicuity conspicuous conspicuously conspicuousness conspiracy conspirant conspiration conspirative conspirator conspiratorial conspiratorially conspiratory conspiratress conspire conspirer conspiring conspiringly conspue constable constablery constableship constabless constablewick constabular constabulary Constance constancy constant constantan Constantine Constantinian Constantinopolitan constantly constantness constat constatation constate constatory constellate constellation constellatory consternate consternation constipate constipation constituency constituent constituently constitute constituter constitution constitutional constitutionalism constitutionalist constitutionality constitutionalization constitutionalize constitutionally constitutionary constitutioner constitutionist constitutive constitutively constitutiveness constitutor constrain constrainable constrained constrainedly constrainedness constrainer constraining constrainingly constrainment constraint constrict constricted constriction constrictive constrictor constringe constringency constringent construability construable construct constructer constructible construction constructional constructionally constructionism constructionist constructive constructively constructiveness constructivism constructivist constructor constructorship constructure construe construer constuprate constupration consubsist consubsistency consubstantial consubstantialism consubstantialist consubstantiality consubstantially consubstantiate consubstantiation consubstantiationist consubstantive consuete consuetitude consuetude consuetudinal consuetudinary consul consulage consular consularity consulary consulate consulship consult consultable consultant consultary consultation consultative consultatory consultee consulter consulting consultive consultively consultor consultory consumable consume consumedly consumeless consumer consuming consumingly consumingness consummate consummately consummation consummative consummatively consummativeness consummator consummatory consumpt consumpted consumptible consumption consumptional consumptive consumptively consumptiveness consumptivity consute contabescence contabescent contact contactor contactual contactually contagion contagioned contagionist contagiosity contagious contagiously contagiousness contagium contain containable container containment contakion contaminable contaminant contaminate contamination contaminative contaminator contaminous contangential contango conte contect contection contemn contemner contemnible contemnibly contemning contemningly contemnor contemper contemperate contemperature contemplable contemplamen contemplant contemplate contemplatingly contemplation contemplatist contemplative contemplatively contemplativeness contemplator contemplature contemporanean contemporaneity contemporaneous contemporaneously contemporaneousness contemporarily contemporariness contemporary contemporize contempt contemptful contemptibility contemptible contemptibleness contemptibly contemptuous contemptuously contemptuousness contendent contender contending contendingly contendress content contentable contented contentedly contentedness contentful contention contentional contentious contentiously contentiousness contentless contently contentment contentness contents conter conterminal conterminant contermine conterminous conterminously conterminousness contest contestable contestableness contestably contestant contestation contestee contester contestingly contestless context contextive contextual contextually contextural contexture contextured conticent contignation contiguity contiguous contiguously contiguousness continence continency continent continental Continentaler continentalism continentalist continentality Continentalize continentally continently contingence contingency contingent contingential contingentialness contingently contingentness continuable continual continuality continually continualness continuance continuancy continuando continuant continuantly continuate continuately continuateness continuation continuative continuatively continuativeness continuator continue continued continuedly continuedness continuer continuingly continuist continuity continuous continuously continuousness continuum contise contline conto contorniate contorsive contort Contortae contorted contortedly contortedness contortion contortional contortionate contortioned contortionist contortionistic contortive contour contourne contra contraband contrabandage contrabandery contrabandism contrabandist contrabandista contrabass contrabassist contrabasso contracapitalist contraception contraceptionist contraceptive contracivil contraclockwise contract contractable contractant contractation contracted contractedly contractedness contractee contracter contractibility contractible contractibleness contractibly contractile contractility contraction contractional contractionist contractive contractively contractiveness contractor contractual contractually contracture contractured contradebt contradict contradictable contradictedness contradicter contradiction contradictional contradictious contradictiously contradictiousness contradictive contradictively contradictiveness contradictor contradictorily contradictoriness contradictory contradiscriminate contradistinct contradistinction contradistinctive contradistinctively contradistinctly contradistinguish contradivide contrafacture contrafagotto contrafissura contraflexure contraflow contrafocal contragredience contragredient contrahent contrail contraindicate contraindication contraindicative contralateral contralto contramarque contranatural contrantiscion contraoctave contraparallelogram contraplex contrapolarization contrapone contraponend Contraposaune contrapose contraposit contraposita contraposition contrapositive contraprogressist contraprop contraproposal contraption contraptious contrapuntal contrapuntalist contrapuntally contrapuntist contrapunto contrarational contraregular contraregularity contraremonstrance contraremonstrant contrarevolutionary contrariant contrariantly contrariety contrarily contrariness contrarious contrariously contrariousness contrariwise contrarotation contrary contrascriptural contrast contrastable contrastably contrastedly contrastimulant contrastimulation contrastimulus contrastingly contrastive contrastively contrastment contrasty contrasuggestible contratabular contrate contratempo contratenor contravalence contravallation contravariant contravene contravener contravention contraversion contravindicate contravindication contrawise contrayerva contrectation contreface contrefort contretemps contributable contribute contribution contributional contributive contributively contributiveness contributor contributorial contributorship contributory contrite contritely contriteness contrition contriturate contrivance contrivancy contrive contrivement contriver control controllability controllable controllableness controllably controller controllership controlless controllingly controlment controversial controversialism controversialist controversialize controversially controversion controversional controversionalism controversionalist controversy controvert controverter controvertible controvertibly controvertist contubernal contubernial contubernium contumacious contumaciously contumaciousness contumacity contumacy contumelious contumeliously contumeliousness contumely contund conturbation contuse contusion contusioned contusive conubium Conularia conumerary conumerous conundrum conundrumize conurbation conure Conuropsis Conurus conus conusable conusance conusant conusee conusor conutrition conuzee conuzor convalesce convalescence convalescency convalescent convalescently convallamarin Convallaria Convallariaceae convallariaceous convallarin convect convection convectional convective convectively convector convenable convenably convene convenee convener convenership convenience conveniency convenient conveniently convenientness convent conventical conventically conventicle conventicler conventicular convention conventional conventionalism conventionalist conventionality conventionalization conventionalize conventionally conventionary conventioner conventionism conventionist conventionize conventual conventually converge convergement convergence convergency convergent convergescence converging conversable conversableness conversably conversance conversancy conversant conversantly conversation conversationable conversational conversationalist conversationally conversationism conversationist conversationize conversative converse conversely converser conversibility conversible conversion conversional conversionism conversionist conversive convert converted convertend converter convertibility convertible convertibleness convertibly converting convertingness convertise convertism convertite convertive convertor conveth convex convexed convexedly convexedness convexity convexly convexness convey conveyable conveyal conveyance conveyancer conveyancing conveyer convict convictable conviction convictional convictism convictive convictively convictiveness convictment convictor convince convinced convincedly convincedness convincement convincer convincibility convincible convincing convincingly convincingness convival convive convivial convivialist conviviality convivialize convivially convocant convocate convocation convocational convocationally convocationist convocative convocator convoke convoker Convoluta convolute convoluted convolutely convolution convolutional convolutionary convolutive convolve convolvement Convolvulaceae convolvulaceous convolvulad convolvuli convolvulic convolvulin convolvulinic convolvulinolic Convolvulus convoy convulsant convulse convulsedly convulsibility convulsible convulsion convulsional convulsionary convulsionism convulsionist convulsive convulsively convulsiveness cony conycatcher conyrine coo cooba coodle cooee cooer coof Coohee cooing cooingly cooja cook cookable cookbook cookdom cookee cookeite cooker cookery cookhouse cooking cookish cookishly cookless cookmaid cookout cookroom cookshack cookshop cookstove cooky cool coolant coolen cooler coolerman coolheaded coolheadedly coolheadedness coolhouse coolibah coolie cooling coolingly coolingness coolish coolly coolness coolth coolung coolweed coolwort cooly coom coomb coomy coon cooncan coonily cooniness coonroot coonskin coontail coontie coony coop cooper cooperage Cooperia coopering coopery cooree Coorg coorie cooruptibly Coos cooser coost Coosuc coot cooter cootfoot coothay cootie cop copa copable copacetic copaene copaiba copaibic Copaifera Copaiva copaivic copaiye copal copalche copalcocote copaliferous copalite copalm coparallel coparcenary coparcener coparceny coparent copart copartaker copartner copartnership copartnery coparty copassionate copastor copastorate copatain copatentee copatriot copatron copatroness cope Copehan copei Copelata Copelatae copelate copellidine copeman copemate copen copending copenetrate Copeognatha copepod Copepoda copepodan copepodous coper coperception coperiodic Copernican Copernicanism Copernicia coperta copesman copesmate copestone copetitioner cophasal Cophetua cophosis copiability copiable copiapite copied copier copilot coping copiopia copiopsia copiosity copious copiously copiousness copis copist copita coplaintiff coplanar coplanarity copleased coplotter coploughing coplowing copolar copolymer copolymerization copolymerize coppaelite copped copper copperas copperbottom copperer copperhead copperheadism coppering copperish copperization copperize copperleaf coppernose coppernosed copperplate copperproof coppersidesman copperskin coppersmith coppersmithing copperware copperwing copperworks coppery copperytailed coppet coppice coppiced coppicing coppin copping copple copplecrown coppled coppy copr copra coprecipitate coprecipitation copremia copremic copresbyter copresence copresent Coprides Coprinae coprincipal coprincipate Coprinus coprisoner coprodaeum coproduce coproducer coprojector coprolagnia coprolagnist coprolalia coprolaliac coprolite coprolith coprolitic coprology copromisor copromoter coprophagan coprophagia coprophagist coprophagous coprophagy coprophilia coprophiliac coprophilic coprophilism coprophilous coprophyte coproprietor coproprietorship coprose Coprosma coprostasis coprosterol coprozoic copse copsewood copsewooded copsing copsy Copt copter Coptic Coptis copula copulable copular copularium copulate copulation copulative copulatively copulatory copunctal copurchaser copus copy copybook copycat copygraph copygraphed copyhold copyholder copyholding copyism copyist copyman copyreader copyright copyrightable copyrighter copywise coque coquecigrue coquelicot coqueluche coquet coquetoon coquetry coquette coquettish coquettishly coquettishness coquicken coquilla Coquille coquille coquimbite coquina coquita Coquitlam coquito cor Cora cora Corabeca Corabecan corach Coraciae coracial Coracias Coracii Coraciidae coraciiform Coraciiformes coracine coracle coracler coracoacromial coracobrachial coracobrachialis coracoclavicular coracocostal coracohumeral coracohyoid coracoid coracoidal coracomandibular coracomorph Coracomorphae coracomorphic coracopectoral coracoprocoracoid coracoradialis coracoscapular coracovertebral coradical coradicate corah coraise coral coralberry coralbush coraled coralflower coralist corallet Corallian corallic Corallidae corallidomous coralliferous coralliform Coralligena coralligenous coralligerous corallike Corallina Corallinaceae corallinaceous coralline corallite Corallium coralloid coralloidal Corallorhiza corallum Corallus coralroot coralwort coram Corambis coranto corban corbeau corbeil corbel corbeling corbicula corbiculate corbiculum corbie corbiestep corbovinum corbula corcass Corchorus corcir corcopali Corcyraean cord cordage Cordaitaceae cordaitaceous cordaitalean Cordaitales cordaitean Cordaites cordant cordate cordately cordax Cordeau corded cordel Cordelia Cordelier cordeliere cordelle corder Cordery cordewane Cordia cordial cordiality cordialize cordially cordialness cordiceps cordicole cordierite cordies cordiform cordigeri cordillera cordilleran cordiner cording cordite corditis cordleaf cordmaker cordoba cordon cordonnet Cordovan Cordula corduroy corduroyed cordwain cordwainer cordwainery cordwood cordy Cordyceps cordyl Cordylanthus Cordyline core corebel coreceiver coreciprocal corectome corectomy corector cored coredeem coredeemer coredemptress coreductase Coree coreflexed coregence coregency coregent coregnancy coregnant coregonid Coregonidae coregonine coregonoid Coregonus coreid Coreidae coreign coreigner corejoice corelate corelated corelation corelative corelatively coreless coreligionist corella corelysis Corema coremaker coremaking coremium coremorphosis corenounce coreometer Coreopsis coreplastic coreplasty corer coresidence coresidual coresign coresonant coresort corespect corespondency corespondent coretomy coreveler coreveller corevolve corf Corfiote Corflambo corge corgi coriaceous corial coriamyrtin coriander coriandrol Coriandrum Coriaria Coriariaceae coriariaceous coriin Corimelaena Corimelaenidae Corin corindon Corineus coring Corinna corinne Corinth Corinthian Corinthianesque Corinthianism Corinthianize Coriolanus coriparian corium Corixa Corixidae cork corkage corkboard corke corked corker corkiness corking corkish corkite corkmaker corkmaking corkscrew corkscrewy corkwing corkwood corky corm Cormac cormel cormidium cormoid Cormophyta cormophyte cormophytic cormorant cormous cormus corn Cornaceae cornaceous cornage cornbell cornberry cornbin cornbinks cornbird cornbole cornbottle cornbrash corncake corncob corncracker corncrib corncrusher corndodger cornea corneagen corneal cornein corneitis cornel Cornelia cornelian Cornelius cornemuse corneocalcareous corneosclerotic corneosiliceous corneous corner cornerbind cornered cornerer cornerpiece cornerstone cornerways cornerwise cornet cornetcy cornettino cornettist corneule corneum cornfield cornfloor cornflower corngrower cornhouse cornhusk cornhusker cornhusking cornic cornice cornicle corniculate corniculer corniculum Corniferous cornific cornification cornified corniform cornigerous cornin corning corniplume Cornish Cornishman cornland cornless cornloft cornmaster cornmonger cornopean cornpipe cornrick cornroot cornstalk cornstarch cornstook cornu cornual cornuate cornuated cornubianite cornucopia Cornucopiae cornucopian cornucopiate cornule cornulite Cornulites cornupete Cornus cornute cornuted cornutine cornuto cornwallis cornwallite corny coroa Coroado corocleisis corodiary corodiastasis corodiastole corody corol corolla corollaceous corollarial corollarially corollary corollate corollated corolliferous corolliform corollike corolline corollitic corometer corona coronach coronad coronadite coronae coronagraph coronagraphic coronal coronale coronaled coronally coronamen coronary coronate coronated coronation coronatorial coroner coronership coronet coroneted coronetted coronetty coroniform Coronilla coronillin coronion coronitis coronium coronize coronobasilar coronofacial coronofrontal coronoid Coronopus coronule coroparelcysis coroplast coroplasta coroplastic Coropo coroscopy corotomy corozo corp corpora corporal corporalism corporality corporally corporalship corporas corporate corporately corporateness corporation corporational corporationer corporationism corporative corporator corporature corporeal corporealist corporeality corporealization corporealize corporeally corporealness corporeals corporeity corporeous corporification corporify corporosity corposant corps corpsbruder corpse corpsman corpulence corpulency corpulent corpulently corpulentness corpus corpuscle corpuscular corpuscularian corpuscularity corpusculated corpuscule corpusculous corpusculum corrade corradial corradiate corradiation corral corrasion corrasive Correa correal correality correct correctable correctant corrected correctedness correctible correcting correctingly correction correctional correctionalist correctioner correctitude corrective correctively correctiveness correctly correctness corrector correctorship correctress correctrice corregidor correlatable correlate correlated correlation correlational correlative correlatively correlativeness correlativism correlativity correligionist corrente correption corresol correspond correspondence correspondency correspondent correspondential correspondentially correspondently correspondentship corresponder corresponding correspondingly corresponsion corresponsive corresponsively corridor corridored corrie Corriedale corrige corrigenda corrigendum corrigent corrigibility corrigible corrigibleness corrigibly Corrigiola Corrigiolaceae corrival corrivality corrivalry corrivalship corrivate corrivation corrobboree corroborant corroborate corroboration corroborative corroboratively corroborator corroboratorily corroboratory corroboree corrode corrodent Corrodentia corroder corrodiary corrodibility corrodible corrodier corroding corrosibility corrosible corrosibleness corrosion corrosional corrosive corrosively corrosiveness corrosivity corrugate corrugated corrugation corrugator corrupt corrupted corruptedly corruptedness corrupter corruptful corruptibility corruptible corruptibleness corrupting corruptingly corruption corruptionist corruptive corruptively corruptly corruptness corruptor corruptress corsac corsage corsaint corsair corse corselet corsepresent corsesque corset corseting corsetless corsetry Corsican corsie corsite corta Cortaderia cortege Cortes cortex cortez cortical cortically corticate corticated corticating cortication cortices corticiferous corticiform corticifugal corticifugally corticipetal corticipetally Corticium corticoafferent corticoefferent corticoline corticopeduncular corticose corticospinal corticosterone corticostriate corticous cortin cortina cortinarious Cortinarius cortinate cortisone cortlandtite Corton coruco coruler Coruminacan corundophilite corundum corupay coruscant coruscate coruscation corver corvette corvetto Corvidae corviform corvillosum corvina Corvinae corvine corvoid Corvus Corybant Corybantian corybantiasm Corybantic corybantic Corybantine corybantish corybulbin corybulbine corycavamine corycavidin corycavidine corycavine Corycia Corycian corydalin corydaline Corydalis corydine Corydon coryl Corylaceae corylaceous corylin Corylopsis Corylus corymb corymbed corymbiate corymbiated corymbiferous corymbiform corymbose corymbous corynebacterial Corynebacterium Coryneum corynine Corynocarpaceae corynocarpaceous Corynocarpus Corypha Coryphaena coryphaenid Coryphaenidae coryphaenoid Coryphaenoididae coryphaeus coryphee coryphene Coryphodon coryphodont coryphylly corytuberine coryza cos cosalite cosaque cosavior coscet Coscinodiscaceae Coscinodiscus coscinomancy coscoroba coseasonal coseat cosec cosecant cosech cosectarian cosectional cosegment coseism coseismal coseismic cosenator cosentiency cosentient coservant cosession coset cosettler cosh cosharer cosheath cosher cosherer coshering coshery cosignatory cosigner cosignitary cosily cosinage cosine cosiness cosingular cosinusoid Cosmati cosmecology cosmesis cosmetic cosmetical cosmetically cosmetician cosmetiste cosmetological cosmetologist cosmetology cosmic cosmical cosmicality cosmically cosmism cosmist cosmocracy cosmocrat cosmocratic cosmogenesis cosmogenetic cosmogenic cosmogeny cosmogonal cosmogoner cosmogonic cosmogonical cosmogonist cosmogonize cosmogony cosmographer cosmographic cosmographical cosmographically cosmographist cosmography cosmolabe cosmolatry cosmologic cosmological cosmologically cosmologist cosmology cosmometry cosmopathic cosmoplastic cosmopoietic cosmopolicy cosmopolis cosmopolitan cosmopolitanism cosmopolitanization cosmopolitanize cosmopolitanly cosmopolite cosmopolitic cosmopolitical cosmopolitics cosmopolitism cosmorama cosmoramic cosmorganic cosmos cosmoscope cosmosophy cosmosphere cosmotellurian cosmotheism cosmotheist cosmotheistic cosmothetic cosmotron cosmozoan cosmozoic cosmozoism cosonant cosounding cosovereign cosovereignty cospecies cospecific cosphered cosplendor cosplendour coss Cossack Cossaean cossas cosse cosset cossette cossid Cossidae cossnent cossyrite cost costa Costaea costal costalgia costally costander Costanoan costar costard Costata costate costated costean costeaning costectomy costellate coster costerdom costermonger costicartilage costicartilaginous costicervical costiferous costiform costing costipulator costispinal costive costively costiveness costless costlessness costliness costly costmary costoabdominal costoapical costocentral costochondral costoclavicular costocolic costocoracoid costodiaphragmatic costogenic costoinferior costophrenic costopleural costopneumopexy costopulmonary costoscapular costosternal costosuperior costothoracic costotome costotomy costotrachelian costotransversal costotransverse costovertebral costoxiphoid costraight costrel costula costulation costume costumer costumery costumic costumier costumiere costuming costumist costusroot cosubject cosubordinate cosuffer cosufferer cosuggestion cosuitor cosurety cosustain coswearer cosy cosymmedian cot cotangent cotangential cotarius cotarnine cotch cote coteful coteline coteller cotemporane cotemporanean cotemporaneous cotemporaneously cotemporary cotenancy cotenant cotenure coterell coterie coterminous Cotesian coth cothamore cothe cotheorist cothish cothon cothurn cothurnal cothurnate cothurned cothurnian cothurnus cothy cotidal cotillage cotillion Cotinga cotingid Cotingidae cotingoid Cotinus cotise cotitular cotland cotman coto cotoin Cotonam Cotoneaster cotonier cotorment cotoro cotorture Cotoxo cotquean cotraitor cotransfuse cotranslator cotranspire cotransubstantiate cotrine cotripper cotrustee cotset cotsetla cotsetle cotta cottabus cottage cottaged cottager cottagers cottagey cotte cotted cotter cotterel cotterite cotterway cottid Cottidae cottier cottierism cottiform cottoid cotton cottonade cottonbush cottonee cottoneer cottoner Cottonian cottonization cottonize cottonless cottonmouth cottonocracy Cottonopolis cottonseed cottontail cottontop cottonweed cottonwood cottony Cottus cotty cotuit cotula cotunnite Coturnix cotutor cotwin cotwinned cotwist cotyla cotylar cotyledon cotyledonal cotyledonar cotyledonary cotyledonous cotyliform cotyligerous cotyliscus cotyloid Cotylophora cotylophorous cotylopubic cotylosacral cotylosaur Cotylosauria cotylosaurian cotype Cotys Cotyttia couac coucal couch couchancy couchant couched couchee coucher couching couchmaker couchmaking couchmate couchy coude coudee coue Coueism cougar cough cougher coughroot coughweed coughwort cougnar coul could couldron coulee coulisse coulomb coulometer coulterneb coulure couma coumalic coumalin coumara coumaran coumarate coumaric coumarilic coumarin coumarinic coumarone coumarou Coumarouna council councilist councilman councilmanic councilor councilorship councilwoman counderstand counite couniversal counsel counselable counselee counselful counselor counselorship count countable countableness countably countdom countenance countenancer counter counterabut counteraccusation counteracquittance counteract counteractant counteracter counteracting counteractingly counteraction counteractive counteractively counteractivity counteractor counteraddress counteradvance counteradvantage counteradvice counteradvise counteraffirm counteraffirmation counteragency counteragent counteragitate counteragitation counteralliance counterambush counterannouncement counteranswer counterappeal counterappellant counterapproach counterapse counterarch counterargue counterargument counterartillery counterassertion counterassociation counterassurance counterattack counterattestation counterattired counterattraction counterattractive counterattractively counteraverment counteravouch counteravouchment counterbalance counterbarrage counterbase counterbattery counterbeating counterbend counterbewitch counterbid counterblast counterblow counterbond counterborder counterbore counterboycott counterbrace counterbranch counterbrand counterbreastwork counterbuff counterbuilding countercampaign countercarte countercause counterchange counterchanged countercharge countercharm countercheck countercheer counterclaim counterclaimant counterclockwise countercolored countercommand countercompetition countercomplaint countercompony countercondemnation counterconquest counterconversion countercouchant countercoupe countercourant countercraft countercriticism countercross countercry countercurrent countercurrently countercurrentwise counterdance counterdash counterdecision counterdeclaration counterdecree counterdefender counterdemand counterdemonstration counterdeputation counterdesire counterdevelopment counterdifficulty counterdigged counterdike counterdiscipline counterdisengage counterdisengagement counterdistinction counterdistinguish counterdoctrine counterdogmatism counterdraft counterdrain counterdrive counterearth counterefficiency countereffort counterembattled counterembowed counterenamel counterend counterenergy counterengagement counterengine counterenthusiasm counterentry counterequivalent counterermine counterespionage counterestablishment counterevidence counterexaggeration counterexcitement counterexcommunication counterexercise counterexplanation counterexposition counterexpostulation counterextend counterextension counterfact counterfallacy counterfaller counterfeit counterfeiter counterfeitly counterfeitment counterfeitness counterferment counterfessed counterfire counterfix counterflange counterflashing counterflight counterflory counterflow counterflux counterfoil counterforce counterformula counterfort counterfugue countergabble countergabion countergambit countergarrison countergauge countergauger countergift countergirded counterglow counterguard counterhaft counterhammering counterhypothesis counteridea counterideal counterimagination counterimitate counterimitation counterimpulse counterindentation counterindented counterindicate counterindication counterinfluence counterinsult counterintelligence counterinterest counterinterpretation counterintrigue counterinvective counterirritant counterirritate counterirritation counterjudging counterjumper counterlath counterlathing counterlatration counterlaw counterleague counterlegislation counterlife counterlocking counterlode counterlove counterly countermachination counterman countermand countermandable countermaneuver countermanifesto countermarch countermark countermarriage countermeasure countermeet countermessage countermigration countermine countermission countermotion countermount countermove countermovement countermure countermutiny counternaiant counternarrative counternatural counternecromancy counternoise counternotice counterobjection counterobligation counteroffensive counteroffer counteropening counteropponent counteropposite counterorator counterorder counterorganization counterpaled counterpaly counterpane counterpaned counterparadox counterparallel counterparole counterparry counterpart counterpassant counterpassion counterpenalty counterpendent counterpetition counterpicture counterpillar counterplan counterplay counterplayer counterplea counterplead counterpleading counterplease counterplot counterpoint counterpointe counterpointed counterpoise counterpoison counterpole counterponderate counterpose counterposition counterposting counterpotence counterpotency counterpotent counterpractice counterpray counterpreach counterpreparation counterpressure counterprick counterprinciple counterprocess counterproject counterpronunciamento counterproof counterpropaganda counterpropagandize counterprophet counterproposal counterproposition counterprotection counterprotest counterprove counterpull counterpunch counterpuncture counterpush counterquartered counterquarterly counterquery counterquestion counterquip counterradiation counterraid counterraising counterrampant counterrate counterreaction counterreason counterreckoning counterrecoil counterreconnaissance counterrefer counterreflected counterreform counterreformation counterreligion counterremonstrant counterreply counterreprisal counterresolution counterrestoration counterretreat counterrevolution counterrevolutionary counterrevolutionist counterrevolutionize counterriposte counterroll counterround counterruin countersale countersalient counterscale counterscalloped counterscarp counterscoff countersconce counterscrutiny countersea counterseal countersecure countersecurity counterselection countersense counterservice countershade countershaft countershafting countershear countershine countershout counterside countersiege countersign countersignal countersignature countersink countersleight counterslope countersmile countersnarl counterspying counterstain counterstamp counterstand counterstatant counterstatement counterstatute counterstep counterstimulate counterstimulation counterstimulus counterstock counterstratagem counterstream counterstrike counterstroke counterstruggle countersubject countersuggestion countersuit countersun countersunk countersurprise counterswing countersworn countersympathy countersynod countertack countertail countertally countertaste countertechnicality countertendency countertenor counterterm counterterror countertheme countertheory counterthought counterthreat counterthrust counterthwarting countertierce countertime countertouch countertraction countertrades countertransference countertranslation countertraverse countertreason countertree countertrench countertrespass countertrippant countertripping countertruth countertug counterturn counterturned countertype countervail countervair countervairy countervallation countervaunt countervene countervengeance countervenom countervibration counterview countervindication countervolition countervolley countervote counterwager counterwall counterwarmth counterwave counterweigh counterweight counterweighted counterwheel counterwill counterwilling counterwind counterwitness counterword counterwork counterworker counterwrite countess countfish counting countinghouse countless countor countrified countrifiedness country countryfolk countryman countrypeople countryseat countryside countryward countrywoman countship county coup coupage coupe couped coupee coupelet couper couple coupled couplement coupler coupleress couplet coupleteer coupling coupon couponed couponless coupstick coupure courage courageous courageously courageousness courager courant courante courap couratari courb courbache courbaril courbash courge courida courier couril courlan Cours course coursed courser coursing court courtbred courtcraft courteous courteously courteousness courtepy courter courtesan courtesanry courtesanship courtesy courtezanry courtezanship courthouse courtier courtierism courtierly courtiership courtin courtless courtlet courtlike courtliness courtling courtly courtman courtroom courtship courtyard courtzilite couscous couscousou couseranite cousin cousinage cousiness cousinhood cousinly cousinry cousinship cousiny coussinet coustumier coutel coutelle couter Coutet couth couthie couthily couthiness couthless coutil coutumier couvade couxia covado covalence covalent Covarecan Covarecas covariable covariance covariant covariation covassal cove coved covelline covellite covenant covenantal covenanted covenantee Covenanter covenanter covenanting covenantor covent coventrate coventrize Coventry cover coverage coveralls coverchief covercle covered coverer covering coverless coverlet coverlid coversed coverside coversine coverslut covert covertical covertly covertness coverture covet covetable coveter coveting covetingly covetiveness covetous covetously covetousness covey covibrate covibration covid Coviello covillager Covillea covin coving covinous covinously covisit covisitor covite covolume covotary cow cowal Cowan coward cowardice cowardliness cowardly cowardness cowardy cowbane cowbell cowberry cowbind cowbird cowboy cowcatcher cowdie coween cower cowfish cowgate cowgram cowhage cowheart cowhearted cowheel cowherb cowherd cowhide cowhiding cowhorn Cowichan cowish cowitch cowkeeper cowl cowle cowled cowleech cowleeching cowlick cowlicks cowlike cowling Cowlitz cowlstaff cowman cowpath cowpea cowpen Cowperian cowperitis cowpock cowpox cowpuncher cowquake cowrie cowroid cowshed cowskin cowslip cowslipped cowsucker cowtail cowthwort cowtongue cowweed cowwheat cowy cowyard cox coxa coxal coxalgia coxalgic coxankylometer coxarthritis coxarthrocace coxarthropathy coxbones coxcomb coxcombess coxcombhood coxcombic coxcombical coxcombicality coxcombically coxcombity coxcombry coxcomby coxcomical coxcomically coxite coxitis coxocerite coxoceritic coxodynia coxofemoral coxopodite coxswain coxy coy coyan coydog coyish coyishness coyly coyness coynye coyo coyol coyote Coyotero coyotillo coyoting coypu coyure coz coze cozen cozenage cozener cozening cozeningly cozier cozily coziness cozy crab crabbed crabbedly crabbedness crabber crabbery crabbing crabby crabcatcher crabeater craber crabhole crablet crablike crabman crabmill crabsidle crabstick crabweed crabwise crabwood Cracca Cracidae Cracinae crack crackable crackajack crackbrain crackbrained crackbrainedness crackdown cracked crackedness cracker crackerberry crackerjack crackers crackhemp crackiness cracking crackjaw crackle crackled crackless crackleware crackling crackly crackmans cracknel crackpot crackskull cracksman cracky cracovienne craddy cradge cradle cradleboard cradlechild cradlefellow cradleland cradlelike cradlemaker cradlemaking cradleman cradlemate cradler cradleside cradlesong cradletime cradling Cradock craft craftily craftiness craftless craftsman craftsmanship craftsmaster craftswoman craftwork craftworker crafty crag craggan cragged craggedness craggily cragginess craggy craglike cragsman cragwork craichy craigmontite crain craisey craizey crajuru crake crakefeet crakow cram cramasie crambambulee crambambuli Crambe crambe cramberry crambid Crambidae Crambinae cramble crambly crambo Crambus crammer cramp cramped crampedness cramper crampet crampfish cramping crampingly crampon cramponnee crampy cran cranage cranberry crance crandall crandallite crane cranelike craneman craner cranesman craneway craney Crania crania craniacromial craniad cranial cranially cranian Craniata craniate cranic craniectomy craniocele craniocerebral cranioclasis cranioclasm cranioclast cranioclasty craniodidymus craniofacial craniognomic craniognomy craniognosy craniograph craniographer craniography craniological craniologically craniologist craniology craniomalacia craniomaxillary craniometer craniometric craniometrical craniometrically craniometrist craniometry craniopagus craniopathic craniopathy craniopharyngeal craniophore cranioplasty craniopuncture craniorhachischisis craniosacral cranioschisis cranioscopical cranioscopist cranioscopy craniospinal craniostenosis craniostosis Craniota craniotabes craniotome craniotomy craniotopography craniotympanic craniovertebral cranium crank crankbird crankcase cranked cranker crankery crankily crankiness crankle crankless crankly crankman crankous crankpin crankshaft crankum cranky crannage crannied crannock crannog crannoger cranny cranreuch crantara crants crap crapaud crapaudine crape crapefish crapehanger crapelike crappie crappin crapple crappo craps crapshooter crapulate crapulence crapulent crapulous crapulously crapulousness crapy craquelure crare crash crasher crasis craspedal craspedodromous craspedon Craspedota craspedotal craspedote crass crassamentum crassier crassilingual Crassina crassitude crassly crassness Crassula Crassulaceae crassulaceous Crataegus Crataeva cratch cratchens cratches crate crateful cratemaker cratemaking crateman crater crateral cratered Craterellus Craterid crateriform crateris craterkin craterless craterlet craterlike craterous craticular Cratinean cratometer cratometric cratometry craunch craunching craunchingly cravat crave craven Cravenette cravenette cravenhearted cravenly cravenness craver craving cravingly cravingness cravo craw crawberry crawdad crawfish crawfoot crawful crawl crawler crawlerize crawley crawleyroot crawling crawlingly crawlsome crawly crawm crawtae Crawthumper Crax crayer crayfish crayon crayonist crayonstone craze crazed crazedly crazedness crazily craziness crazingmill crazy crazycat crazyweed crea creagh creaght creak creaker creakily creakiness creakingly creaky cream creambush creamcake creamcup creamer creamery creameryman creamfruit creamily creaminess creamless creamlike creammaker creammaking creamometer creamsacs creamware creamy creance creancer creant crease creaseless creaser creashaks creasing creasy creat creatable create createdness creatic creatine creatinephosphoric creatinine creatininemia creatinuria creation creational creationary creationism creationist creationistic creative creatively creativeness creativity creatophagous creator creatorhood creatorrhea creatorship creatotoxism creatress creatrix creatural creature creaturehood creatureless creatureliness creatureling creaturely creatureship creaturize crebricostate crebrisulcate crebrity crebrous creche creddock credence credencive credenciveness credenda credensive credensiveness credent credential credently credenza credibility credible credibleness credibly credit creditability creditable creditableness creditably creditive creditless creditor creditorship creditress creditrix crednerite Credo credulity credulous credulously credulousness Cree cree creed creedal creedalism creedalist creeded creedist creedite creedless creedlessness creedmore creedsman Creek creek creeker creekfish creekside creekstuff creeky creel creeler creem creen creep creepage creeper creepered creeperless creephole creepie creepiness creeping creepingly creepmouse creepmousy creepy creese creesh creeshie creeshy creirgist cremaster cremasterial cremasteric cremate cremation cremationism cremationist cremator crematorial crematorium crematory crembalum cremnophobia cremocarp cremometer cremone cremor cremorne cremule crena crenate crenated crenately crenation crenature crenel crenelate crenelated crenelation crenele creneled crenelet crenellate crenellation crenic crenitic crenology crenotherapy Crenothrix crenula crenulate crenulated crenulation creodont Creodonta creole creoleize creolian Creolin creolism creolization creolize creophagia creophagism creophagist creophagous creophagy creosol creosote creosoter creosotic crepance crepe crepehanger Crepidula crepine crepiness Crepis crepitaculum crepitant crepitate crepitation crepitous crepitus crepon crept crepuscle crepuscular crepuscule crepusculine crepusculum crepy cresamine crescendo crescent crescentade crescentader Crescentia crescentic crescentiform crescentlike crescentoid crescentwise crescive crescograph crescographic cresegol cresol cresolin cresorcinol cresotate cresotic cresotinic cresoxide cresoxy cresphontes cress cressed cresselle cresset Cressida cresson cressweed cresswort cressy crest crested crestfallen crestfallenly crestfallenness cresting crestless crestline crestmoreite cresyl cresylate cresylene cresylic cresylite creta Cretaceous cretaceous cretaceously Cretacic Cretan Crete cretefaction Cretic cretic cretification cretify cretin cretinic cretinism cretinization cretinize cretinoid cretinous cretion cretionary Cretism cretonne crevalle crevasse crevice creviced crew crewel crewelist crewellery crewelwork crewer crewless crewman Crex crib cribbage cribber cribbing cribble cribellum cribo cribral cribrate cribrately cribration cribriform cribrose cribwork cric Cricetidae cricetine Cricetus crick cricket cricketer cricketing crickety crickey crickle cricoarytenoid cricoid cricopharyngeal cricothyreoid cricothyreotomy cricothyroid cricothyroidean cricotomy cricotracheotomy Cricotus cried crier criey crig crile crime Crimean crimeful crimeless crimelessness crimeproof criminal criminaldom criminalese criminalism criminalist criminalistic criminalistician criminalistics criminality criminally criminalness criminaloid criminate crimination criminative criminator criminatory crimine criminogenesis criminogenic criminologic criminological criminologist criminology criminosis criminous criminously criminousness crimogenic crimp crimpage crimper crimping crimple crimpness crimpy crimson crimsonly crimsonness crimsony crin crinal crinanite crinated crinatory crine crined crinet cringe cringeling cringer cringing cringingly cringingness cringle crinicultural criniculture criniferous Criniger crinigerous criniparous crinite crinitory crinivorous crink crinkle crinkleroot crinkly crinoid crinoidal Crinoidea crinoidean crinoline crinose crinosity crinula Crinum criobolium criocephalus Crioceras crioceratite crioceratitic Crioceris criophore Criophoros criosphinx cripes crippingly cripple crippledom crippleness crippler crippling cripply crises crisic crisis crisp crispate crispated crispation crispature crisped crisper crispily Crispin crispine crispiness crisping crisply crispness crispy criss crissal crisscross crissum crista cristate Cristatella cristiform Cristineaux Cristino Cristispira Cristivomer cristobalite critch criteria criteriology criterion criterional criterium crith Crithidia crithmene crithomancy critic critical criticality critically criticalness criticaster criticasterism criticastry criticisable criticism criticist criticizable criticize criticizer criticizingly critickin criticship criticule critique critling crizzle cro croak Croaker croaker croakily croakiness croaky Croat Croatan Croatian croc Crocanthemum crocard croceic crocein croceine croceous crocetin croche crochet crocheter crocheting croci crocidolite Crocidura crocin crock crocker crockery crockeryware crocket crocketed crocky crocodile Crocodilia crocodilian Crocodilidae crocodiline crocodilite crocodiloid Crocodilus Crocodylidae Crocodylus crocoisite crocoite croconate croconic Crocosmia Crocus crocus crocused croft crofter crofterization crofterize crofting croftland croisette croissante Crokinole Crom cromaltite crome Cromer Cromerian cromfordite cromlech cromorna cromorne Cromwell Cromwellian Cronartium crone croneberry cronet Cronian cronish cronk cronkness cronstedtite crony crood croodle crook crookback crookbacked crookbill crookbilled crooked crookedly crookedness crooken crookesite crookfingered crookheaded crookkneed crookle crooklegged crookneck crooknecked crooknosed crookshouldered crooksided crooksterned crooktoothed crool Croomia croon crooner crooning crooningly crop crophead cropland cropman croppa cropper croppie cropplecrown croppy cropshin cropsick cropsickness cropweed croquet croquette crore crosa Crosby crosier crosiered crosnes cross crossability crossable crossarm crossband crossbar crossbeak crossbeam crossbelt crossbill crossbolt crossbolted crossbones crossbow crossbowman crossbred crossbreed crosscurrent crosscurrented crosscut crosscutter crosscutting crosse crossed crosser crossette crossfall crossfish crossflow crossflower crossfoot crosshackle crosshand crosshatch crosshaul crosshauling crosshead crossing crossite crossjack crosslegs crosslet crossleted crosslight crosslighted crossline crossly crossness crossopodia crossopterygian Crossopterygii Crossosoma Crossosomataceae crossosomataceous crossover crosspatch crosspath crosspiece crosspoint crossrail crossroad crossroads crossrow crossruff crosstail crosstie crosstied crosstoes crosstrack crosstree crosswalk crossway crossways crossweb crossweed crosswise crossword crosswort crostarie crotal Crotalaria crotalic Crotalidae crotaliform Crotalinae crotaline crotalism crotalo crotaloid crotalum Crotalus crotaphic crotaphion crotaphite crotaphitic Crotaphytus crotch crotched crotchet crotcheteer crotchetiness crotchety crotchy crotin Croton crotonaldehyde crotonate crotonic crotonization crotonyl crotonylene Crotophaga crottels crottle crotyl crouch crouchant crouched croucher crouching crouchingly crounotherapy croup croupade croupal croupe crouperbush croupier croupily croupiness croupous croupy crouse crousely crout croute crouton crow crowbait crowbar crowberry crowbill crowd crowded crowdedly crowdedness crowder crowdweed crowdy crower crowflower crowfoot crowfooted crowhop crowing crowingly crowkeeper crowl crown crownbeard crowned crowner crownless crownlet crownling crownmaker crownwork crownwort crowshay crowstep crowstepped crowstick crowstone crowtoe croy croyden croydon croze crozer crozzle crozzly crubeen cruce cruces crucethouse cruche crucial cruciality crucially crucian Crucianella cruciate cruciately cruciation crucible Crucibulum crucifer Cruciferae cruciferous crucificial crucified crucifier crucifix crucifixion cruciform cruciformity cruciformly crucify crucigerous crucilly crucily cruck crude crudely crudeness crudity crudwort cruel cruelhearted cruelize cruelly cruelness cruels cruelty cruent cruentation cruet cruety cruise cruiser cruisken cruive cruller crum crumb crumbable crumbcloth crumber crumble crumblement crumblet crumbliness crumblingness crumblings crumbly crumby crumen crumenal crumlet crummie crummier crummiest crummock crummy crump crumper crumpet crumple crumpled crumpler crumpling crumply crumpy crunch crunchable crunchiness crunching crunchingly crunchingness crunchweed crunchy crunk crunkle crunodal crunode crunt cruor crupper crural crureus crurogenital cruroinguinal crurotarsal crus crusade crusader crusado Crusca cruse crush crushability crushable crushed crusher crushing crushingly crusie crusily crust crusta Crustacea crustaceal crustacean crustaceological crustaceologist crustaceology crustaceous crustade crustal crustalogical crustalogist crustalogy crustate crustated crustation crusted crustedly cruster crustific crustification crustily crustiness crustless crustose crustosis crusty crutch crutched crutcher crutching crutchlike cruth crutter crux cruzeiro cry cryable cryaesthesia cryalgesia cryanesthesia crybaby cryesthesia crying cryingly crymodynia crymotherapy cryoconite cryogen cryogenic cryogenics cryogeny cryohydrate cryohydric cryolite cryometer cryophile cryophilic cryophoric cryophorus cryophyllite cryophyte cryoplankton cryoscope cryoscopic cryoscopy cryosel cryostase cryostat crypt crypta cryptal cryptamnesia cryptamnesic cryptanalysis cryptanalyst cryptarch cryptarchy crypted Crypteronia Crypteroniaceae cryptesthesia cryptesthetic cryptic cryptical cryptically cryptoagnostic cryptobatholithic cryptobranch Cryptobranchia Cryptobranchiata cryptobranchiate Cryptobranchidae Cryptobranchus cryptocarp cryptocarpic cryptocarpous Cryptocarya Cryptocephala cryptocephalous Cryptocerata cryptocerous cryptoclastic Cryptocleidus cryptococci cryptococcic Cryptococcus cryptococcus cryptocommercial cryptocrystalline cryptocrystallization cryptodeist Cryptodira cryptodiran cryptodire cryptodirous cryptodouble cryptodynamic cryptogam Cryptogamia cryptogamian cryptogamic cryptogamical cryptogamist cryptogamous cryptogamy cryptogenetic cryptogenic cryptogenous Cryptoglaux cryptoglioma cryptogram Cryptogramma cryptogrammatic cryptogrammatical cryptogrammatist cryptogrammic cryptograph cryptographal cryptographer cryptographic cryptographical cryptographically cryptographist cryptography cryptoheresy cryptoheretic cryptoinflationist cryptolite cryptologist cryptology cryptolunatic cryptomere Cryptomeria cryptomerous cryptomnesia cryptomnesic cryptomonad Cryptomonadales Cryptomonadina cryptonema Cryptonemiales cryptoneurous cryptonym cryptonymous cryptopapist cryptoperthite Cryptophagidae cryptophthalmos Cryptophyceae cryptophyte cryptopine cryptoporticus Cryptoprocta cryptoproselyte cryptoproselytism cryptopyic cryptopyrrole cryptorchid cryptorchidism cryptorchis Cryptorhynchus cryptorrhesis cryptorrhetic cryptoscope cryptoscopy cryptosplenetic Cryptostegia cryptostoma Cryptostomata cryptostomate cryptostome Cryptotaenia cryptous cryptovalence cryptovalency cryptozonate Cryptozonia cryptozygosity cryptozygous Crypturi Crypturidae crystal crystallic crystalliferous crystalliform crystalligerous crystallin crystalline crystallinity crystallite crystallitic crystallitis crystallizability crystallizable crystallization crystallize crystallized crystallizer crystalloblastic crystallochemical crystallochemistry crystallogenesis crystallogenetic crystallogenic crystallogenical crystallogeny crystallogram crystallographer crystallographic crystallographical crystallographically crystallography crystalloid crystalloidal crystallology crystalloluminescence crystallomagnetic crystallomancy crystallometric crystallometry crystallophyllian crystallose crystallurgy crystalwort crystic crystograph crystoleum Crystolon crystosphene csardas Ctenacanthus ctene ctenidial ctenidium cteniform Ctenocephalus ctenocyst ctenodactyl Ctenodipterini ctenodont Ctenodontidae Ctenodus ctenoid ctenoidean Ctenoidei ctenoidian ctenolium Ctenophora ctenophoral ctenophoran ctenophore ctenophoric ctenophorous Ctenoplana Ctenostomata ctenostomatous ctenostome ctetology cuadra Cuailnge cuapinole cuarenta cuarta cuarteron cuartilla cuartillo cub Cuba cubage Cuban cubangle cubanite Cubanize cubatory cubature cubbing cubbish cubbishly cubbishness cubby cubbyhole cubbyhouse cubbyyew cubdom cube cubeb cubelet Cubelium cuber cubhood cubi cubic cubica cubical cubically cubicalness cubicity cubicle cubicly cubicone cubicontravariant cubicovariant cubicular cubiculum cubiform cubism cubist cubit cubital cubitale cubited cubitiere cubito cubitocarpal cubitocutaneous cubitodigital cubitometacarpal cubitopalmar cubitoplantar cubitoradial cubitus cubmaster cubocalcaneal cuboctahedron cubocube cubocuneiform cubododecahedral cuboid cuboidal cuboides cubomancy Cubomedusae cubomedusan cubometatarsal cubonavicular Cuchan Cuchulainn cuck cuckhold cuckold cuckoldom cuckoldry cuckoldy cuckoo cuckooflower cuckoomaid cuckoopint cuckoopintle cuckstool cucoline Cucujid Cucujidae Cucujus Cuculi Cuculidae cuculiform Cuculiformes cuculine cuculla cucullaris cucullate cucullately cuculliform cucullus cuculoid Cuculus Cucumaria Cucumariidae cucumber cucumiform Cucumis cucurbit Cucurbita Cucurbitaceae cucurbitaceous cucurbite cucurbitine cud cudava cudbear cudden cuddle cuddleable cuddlesome cuddly Cuddy cuddy cuddyhole cudgel cudgeler cudgerie cudweed cue cueball cueca cueist cueman cuemanship cuerda cuesta Cueva cuff cuffer cuffin cuffy cuffyism cuggermugger cuichunchulli cuinage cuir cuirass cuirassed cuirassier cuisinary cuisine cuissard cuissart cuisse cuissen cuisten Cuitlateco cuittikin Cujam cuke Culavamsa culbut Culdee culebra culet culeus Culex culgee culicid Culicidae culicidal culicide culiciform culicifugal culicifuge Culicinae culicine Culicoides culilawan culinarily culinary cull culla cullage Cullen culler cullet culling cullion cullis cully culm culmen culmicolous culmiferous culmigenous culminal culminant culminate culmination culmy culotte culottes culottic culottism culpa culpability culpable culpableness culpably culpatory culpose culprit cult cultch cultellation cultellus culteranismo cultic cultigen cultirostral Cultirostres cultish cultism cultismo cultist cultivability cultivable cultivably cultivar cultivatability cultivatable cultivate cultivated cultivation cultivator cultrate cultrated cultriform cultrirostral Cultrirostres cultual culturable cultural culturally culture cultured culturine culturist culturization culturize culturological culturologically culturologist culturology cultus culver culverfoot culverhouse culverin culverineer culverkey culvert culvertage culverwort cum Cumacea cumacean cumaceous Cumaean cumal cumaldehyde Cumanagoto cumaphyte cumaphytic cumaphytism Cumar cumay cumbent cumber cumberer cumberlandite cumberless cumberment cumbersome cumbersomely cumbersomeness cumberworld cumbha cumbly cumbraite cumbrance cumbre Cumbrian cumbrous cumbrously cumbrousness cumbu cumene cumengite cumenyl cumflutter cumhal cumic cumidin cumidine cumin cuminal cuminic cuminoin cuminol cuminole cuminseed cuminyl cummer cummerbund cummin cummingtonite cumol cump cumshaw cumulant cumular cumulate cumulately cumulation cumulatist cumulative cumulatively cumulativeness cumuli cumuliform cumulite cumulophyric cumulose cumulous cumulus cumyl Cuna cunabular Cunan Cunarder Cunas cunctation cunctatious cunctative cunctator cunctatorship cunctatury cunctipotent cundeamor cuneal cuneate cuneately cuneatic cuneator cuneiform cuneiformist cuneocuboid cuneonavicular cuneoscaphoid cunette cuneus cungeboi cunicular cuniculus cunila cunjah cunjer cunjevoi cunner cunnilinctus cunnilingus cunning Cunninghamia cunningly cunningness Cunonia Cunoniaceae cunoniaceous cunye Cunza Cuon cuorin cup Cupania cupay cupbearer cupboard cupcake cupel cupeler cupellation cupflower cupful Cuphea cuphead cupholder Cupid cupidinous cupidity cupidon cupidone cupless cupmaker cupmaking cupman cupmate cupola cupolaman cupolar cupolated cupped cupper cupping cuppy cuprammonia cuprammonium cupreine cuprene cupreous Cupressaceae cupressineous Cupressinoxylon Cupressus cupric cupride cupriferous cuprite cuproammonium cuprobismutite cuprocyanide cuprodescloizite cuproid cuproiodargyrite cupromanganese cupronickel cuproplumbite cuproscheelite cuprose cuprosilicon cuprotungstite cuprous cuprum cupseed cupstone cupula cupulate cupule Cupuliferae cupuliferous cupuliform cur curability curable curableness curably curacao curacy curare curarine curarization curarize curassow curatage curate curatel curateship curatess curatial curatic curation curative curatively curativeness curatize curatolatry curator curatorial curatorium curatorship curatory curatrix Curavecan curb curbable curber curbing curbless curblike curbstone curbstoner curby curcas curch curcuddoch Curculio curculionid Curculionidae curculionist Curcuma curcumin curd curdiness curdle curdler curdly curdwort curdy cure cureless curelessly curemaster curer curettage curette curettement curfew curial curialism curialist curialistic curiality curiate Curiatii curiboca curie curiescopy curietherapy curin curine curing curio curiologic curiologically curiologics curiology curiomaniac curiosa curiosity curioso curious curiously curiousness curite Curitis curium curl curled curledly curledness curler curlew curlewberry curlicue curliewurly curlike curlily curliness curling curlingly curlpaper curly curlycue curlyhead curlylocks curmudgeon curmudgeonery curmudgeonish curmudgeonly curmurring curn curney curnock curple curr currach currack curragh currant curratow currawang currency current currently currentness currentwise curricle curricula curricular curricularization curricularize curriculum curried currier curriery currish currishly currishness curry currycomb curryfavel Cursa cursal curse cursed cursedly cursedness curser curship cursitor cursive cursively cursiveness cursor cursorary Cursores Cursoria cursorial Cursoriidae cursorily cursoriness cursorious Cursorius cursory curst curstful curstfully curstly curstness cursus curt curtail curtailed curtailedly curtailer curtailment curtain curtaining curtainless curtainwise curtal Curtana curtate curtation curtesy curtilage Curtise curtly curtness curtsy curua curuba Curucaneca Curucanecan curucucu curule Curuminaca Curuminacan Curupira cururo curvaceous curvaceousness curvacious curvant curvate curvation curvature curve curved curvedly curvedness curver curvesome curvesomeness curvet curvicaudate curvicostate curvidentate curvifoliate curviform curvilineal curvilinear curvilinearity curvilinearly curvimeter curvinervate curvinerved curvirostral Curvirostres curviserial curvital curvity curvograph curvometer curvous curvulate curvy curwhibble curwillet cuscohygrine cusconine Cuscus cuscus Cuscuta Cuscutaceae cuscutaceous cusec cuselite cush cushag cushat cushaw cushewbird cushion cushioned cushionflower cushionless cushionlike cushiony Cushite Cushitic cushlamochree cushy cusie cusinero cusk cusp cuspal cusparidine cusparine cuspate cusped cuspid cuspidal cuspidate cuspidation cuspidine cuspidor cuspule cuss cussed cussedly cussedness cusser cusso custard custerite custodee custodes custodial custodiam custodian custodianship custodier custody custom customable customarily customariness customary customer customhouse customs custumal cut cutaneal cutaneous cutaneously cutaway cutback cutch cutcher cutcherry cute cutely cuteness Cuterebra Cuthbert cutheal cuticle cuticolor cuticula cuticular cuticularization cuticularize cuticulate cutidure cutie cutification cutigeral cutin cutinization cutinize cutireaction cutis cutisector Cutiterebra cutitis cutization cutlass cutler cutleress Cutleria Cutleriaceae cutleriaceous Cutleriales cutlery cutlet cutling cutlips cutocellulose cutoff cutout cutover cutpurse cuttable cuttage cuttail cuttanee cutted cutter cutterhead cutterman cutthroat cutting cuttingly cuttingness cuttle cuttlebone cuttlefish cuttler cuttoo cutty cuttyhunk cutup cutwater cutweed cutwork cutworm cuvette Cuvierian cuvy cuya Cuzceno cwierc cwm cyamelide Cyamus cyan cyanacetic cyanamide cyananthrol Cyanastraceae Cyanastrum cyanate cyanaurate cyanauric cyanbenzyl cyancarbonic Cyanea cyanean cyanemia cyaneous cyanephidrosis cyanformate cyanformic cyanhidrosis cyanhydrate cyanhydric cyanhydrin cyanic cyanicide cyanidation cyanide cyanidin cyanidine cyanidrosis cyanimide cyanin cyanine cyanite cyanize cyanmethemoglobin cyanoacetate cyanoacetic cyanoaurate cyanoauric cyanobenzene cyanocarbonic cyanochlorous cyanochroia cyanochroic Cyanocitta cyanocrystallin cyanoderma cyanogen cyanogenesis cyanogenetic cyanogenic cyanoguanidine cyanohermidin cyanohydrin cyanol cyanole cyanomaclurin cyanometer cyanomethaemoglobin cyanomethemoglobin cyanometric cyanometry cyanopathic cyanopathy cyanophile cyanophilous cyanophoric cyanophose Cyanophyceae cyanophycean cyanophyceous cyanophycin cyanopia cyanoplastid cyanoplatinite cyanoplatinous cyanopsia cyanose cyanosed cyanosis Cyanospiza cyanotic cyanotrichite cyanotype cyanuramide cyanurate cyanuret cyanuric cyanurine cyanus cyaphenine cyath Cyathaspis Cyathea Cyatheaceae cyatheaceous cyathiform cyathium cyathoid cyatholith Cyathophyllidae cyathophylline cyathophylloid Cyathophyllum cyathos cyathozooid cyathus cybernetic cyberneticist cybernetics Cybister cycad Cycadaceae cycadaceous Cycadales cycadean cycadeoid Cycadeoidea cycadeous cycadiform cycadlike cycadofilicale Cycadofilicales Cycadofilices cycadofilicinean Cycadophyta Cycas Cycladic cyclamen cyclamin cyclamine cyclammonium cyclane Cyclanthaceae cyclanthaceous Cyclanthales Cyclanthus cyclar cyclarthrodial cyclarthrsis cyclas cycle cyclecar cycledom cyclene cycler cyclesmith Cycliae cyclian cyclic cyclical cyclically cyclicism cyclide cycling cyclism cyclist cyclistic cyclitic cyclitis cyclization cyclize cycloalkane Cyclobothra cyclobutane cyclocoelic cyclocoelous Cycloconium cyclodiolefin cycloganoid Cycloganoidei cyclogram cyclograph cyclographer cycloheptane cycloheptanone cyclohexane cyclohexanol cyclohexanone cyclohexene cyclohexyl cycloid cycloidal cycloidally cycloidean Cycloidei cycloidian cycloidotrope cyclolith Cycloloma cyclomania cyclometer cyclometric cyclometrical cyclometry Cyclomyaria cyclomyarian cyclonal cyclone cyclonic cyclonical cyclonically cyclonist cyclonite cyclonologist cyclonology cyclonometer cyclonoscope cycloolefin cycloparaffin cyclope Cyclopean cyclopean cyclopedia cyclopedic cyclopedical cyclopedically cyclopedist cyclopentadiene cyclopentane cyclopentanone cyclopentene Cyclopes cyclopes cyclophoria cyclophoric Cyclophorus cyclophrenia cyclopia Cyclopic cyclopism cyclopite cycloplegia cycloplegic cyclopoid cyclopropane Cyclops Cyclopteridae cyclopteroid cyclopterous cyclopy cyclorama cycloramic Cyclorrhapha cyclorrhaphous cycloscope cyclose cyclosis cyclospermous Cyclospondyli cyclospondylic cyclospondylous Cyclosporales Cyclosporeae Cyclosporinae cyclosporous Cyclostoma Cyclostomata cyclostomate Cyclostomatidae cyclostomatous cyclostome Cyclostomes Cyclostomi Cyclostomidae cyclostomous cyclostrophic cyclostyle Cyclotella cyclothem cyclothure cyclothurine Cyclothurus cyclothyme cyclothymia cyclothymiac cyclothymic cyclotome cyclotomic cyclotomy Cyclotosaurus cyclotron cyclovertebral cyclus Cydippe cydippian cydippid Cydippida Cydonia Cydonian cydonium cyesiology cyesis cygneous cygnet Cygnid Cygninae cygnine Cygnus cyke cylinder cylindered cylinderer cylinderlike cylindraceous cylindrarthrosis Cylindrella cylindrelloid cylindrenchyma cylindric cylindrical cylindricality cylindrically cylindricalness cylindricity cylindricule cylindriform cylindrite cylindrocellular cylindrocephalic cylindroconical cylindroconoidal cylindrocylindric cylindrodendrite cylindrograph cylindroid cylindroidal cylindroma cylindromatous cylindrometric cylindroogival Cylindrophis Cylindrosporium cylindruria cylix Cyllenian Cyllenius cyllosis cyma cymagraph cymaphen cymaphyte cymaphytic cymaphytism cymar cymation cymatium cymba cymbaeform cymbal Cymbalaria cymbaleer cymbaler cymbaline cymbalist cymballike cymbalo cymbalon cymbate Cymbella cymbiform Cymbium cymbling cymbocephalic cymbocephalous cymbocephaly Cymbopogon cyme cymelet cymene cymiferous cymling Cymodoceaceae cymogene cymograph cymographic cymoid Cymoidium cymometer cymophane cymophanous cymophenol cymoscope cymose cymosely cymotrichous cymotrichy cymous Cymraeg Cymric Cymry cymule cymulose cynanche Cynanchum cynanthropy Cynara cynaraceous cynarctomachy cynareous cynaroid cynebot cynegetic cynegetics cynegild cynhyena Cynias cyniatria cyniatrics cynic cynical cynically cynicalness cynicism cynicist cynipid Cynipidae cynipidous cynipoid Cynipoidea Cynips cynism cynocephalic cynocephalous cynocephalus cynoclept Cynocrambaceae cynocrambaceous Cynocrambe Cynodon cynodont Cynodontia Cynogale cynogenealogist cynogenealogy Cynoglossum Cynognathus cynography cynoid Cynoidea cynology Cynomoriaceae cynomoriaceous Cynomorium Cynomorpha cynomorphic cynomorphous Cynomys cynophile cynophilic cynophilist cynophobe cynophobia Cynopithecidae cynopithecoid cynopodous cynorrhodon Cynosarges Cynoscion Cynosura cynosural cynosure Cynosurus cynotherapy Cynoxylon Cynthia Cynthian Cynthiidae Cynthius cyp Cyperaceae cyperaceous Cyperus cyphella cyphellate Cyphomandra cyphonautes cyphonism Cypraea cypraeid Cypraeidae cypraeiform cypraeoid cypre cypres cypress cypressed cypressroot Cypria Cyprian Cyprididae Cypridina Cypridinidae cypridinoid Cyprina cyprine cyprinid Cyprinidae cypriniform cyprinine cyprinodont Cyprinodontes Cyprinodontidae cyprinodontoid cyprinoid Cyprinoidea cyprinoidean Cyprinus Cypriote Cypripedium Cypris cypsela Cypseli Cypselid Cypselidae cypseliform Cypseliformes cypseline cypseloid cypselomorph Cypselomorphae cypselomorphic cypselous Cypselus cyptozoic Cyrano Cyrenaic Cyrenaicism Cyrenian Cyril Cyrilla Cyrillaceae cyrillaceous Cyrillian Cyrillianism Cyrillic cyriologic cyriological Cyrtandraceae Cyrtidae cyrtoceracone Cyrtoceras cyrtoceratite cyrtoceratitic cyrtograph cyrtolite cyrtometer Cyrtomium cyrtopia cyrtosis Cyrus cyrus cyst cystadenoma cystadenosarcoma cystal cystalgia cystamine cystaster cystatrophia cystatrophy cystectasia cystectasy cystectomy cysted cysteine cysteinic cystelcosis cystenchyma cystenchymatous cystencyte cysterethism cystic cysticarpic cysticarpium cysticercoid cysticercoidal cysticercosis cysticercus cysticolous cystid Cystidea cystidean cystidicolous cystidium cystiferous cystiform cystigerous Cystignathidae cystignathine cystine cystinuria cystirrhea cystis cystitis cystitome cystoadenoma cystocarcinoma cystocarp cystocarpic cystocele cystocolostomy cystocyte cystodynia cystoelytroplasty cystoenterocele cystoepiplocele cystoepithelioma cystofibroma Cystoflagellata cystoflagellate cystogenesis cystogenous cystogram cystoid Cystoidea cystoidean cystolith cystolithectomy cystolithiasis cystolithic cystoma cystomatous cystomorphous cystomyoma cystomyxoma Cystonectae cystonectous cystonephrosis cystoneuralgia cystoparalysis Cystophora cystophore cystophotography cystophthisis cystoplasty cystoplegia cystoproctostomy Cystopteris cystoptosis Cystopus cystopyelitis cystopyelography cystopyelonephritis cystoradiography cystorrhagia cystorrhaphy cystorrhea cystosarcoma cystoschisis cystoscope cystoscopic cystoscopy cystose cystospasm cystospastic cystospore cystostomy cystosyrinx cystotome cystotomy cystotrachelotomy cystoureteritis cystourethritis cystous cytase cytasic Cytherea Cytherean Cytherella Cytherellidae Cytinaceae cytinaceous Cytinus cytioderm cytisine Cytisus cytitis cytoblast cytoblastema cytoblastemal cytoblastematous cytoblastemic cytoblastemous cytochemistry cytochrome cytochylema cytocide cytoclasis cytoclastic cytococcus cytocyst cytode cytodendrite cytoderm cytodiagnosis cytodieresis cytodieretic cytogamy cytogene cytogenesis cytogenetic cytogenetical cytogenetically cytogeneticist cytogenetics cytogenic cytogenous cytogeny cytoglobin cytohyaloplasm cytoid cytokinesis cytolist cytologic cytological cytologically cytologist cytology cytolymph cytolysin cytolysis cytolytic cytoma cytomere cytometer cytomicrosome cytomitome cytomorphosis cyton cytoparaplastin cytopathologic cytopathological cytopathologically cytopathology Cytophaga cytophagous cytophagy cytopharynx cytophil cytophysics cytophysiology cytoplasm cytoplasmic cytoplast cytoplastic cytoproct cytopyge cytoreticulum cytoryctes cytosine cytosome Cytospora Cytosporina cytost cytostomal cytostome cytostroma cytostromatic cytotactic cytotaxis cytotoxic cytotoxin cytotrophoblast cytotrophy cytotropic cytotropism cytozoic cytozoon cytozymase cytozyme cytula Cyzicene cyzicene czar czardas czardom czarevitch czarevna czarian czaric czarina czarinian czarish czarism czarist czaristic czaritza czarowitch czarowitz czarship Czech Czechic Czechish Czechization Czechoslovak Czechoslovakian D d da daalder dab dabb dabba dabber dabble dabbler dabbling dabblingly dabblingness dabby dabchick Dabih Dabitis dablet daboia daboya dabster dace Dacelo Daceloninae dacelonine dachshound dachshund Dacian dacite dacitic dacker dacoit dacoitage dacoity dacryadenalgia dacryadenitis dacryagogue dacrycystalgia Dacrydium dacryelcosis dacryoadenalgia dacryoadenitis dacryoblenorrhea dacryocele dacryocyst dacryocystalgia dacryocystitis dacryocystoblennorrhea dacryocystocele dacryocystoptosis dacryocystorhinostomy dacryocystosyringotomy dacryocystotome dacryocystotomy dacryohelcosis dacryohemorrhea dacryolite dacryolith dacryolithiasis dacryoma dacryon dacryops dacryopyorrhea dacryopyosis dacryosolenitis dacryostenosis dacryosyrinx dacryuria Dactyl dactyl dactylar dactylate dactylic dactylically dactylioglyph dactylioglyphic dactylioglyphist dactylioglyphtic dactylioglyphy dactyliographer dactyliographic dactyliography dactyliology dactyliomancy dactylion dactyliotheca Dactylis dactylist dactylitic dactylitis dactylogram dactylograph dactylographic dactylography dactyloid dactylology dactylomegaly dactylonomy dactylopatagium Dactylopius dactylopodite dactylopore Dactylopteridae Dactylopterus dactylorhiza dactyloscopic dactyloscopy dactylose dactylosternal dactylosymphysis dactylotheca dactylous dactylozooid dactylus Dacus dacyorrhea dad Dada dada Dadaism Dadaist dadap Dadayag dadder daddle daddock daddocky daddy daddynut dade dadenhudd dado Dadoxylon Dadu daduchus Dadupanthi dae Daedal daedal Daedalea Daedalean Daedalian Daedalic Daedalidae Daedalist daedaloid Daedalus daemon Daemonelix daemonic daemonurgist daemonurgy daemony daer daff daffery daffing daffish daffle daffodil daffodilly daffy daffydowndilly Dafla daft daftberry daftlike daftly daftness dag dagaba dagame dagassa Dagbamba Dagbane dagesh Dagestan dagga dagger daggerbush daggered daggerlike daggerproof daggers daggle daggletail daggletailed daggly daggy daghesh daglock Dagmar Dago dagoba Dagomba dags Daguerrean daguerreotype daguerreotyper daguerreotypic daguerreotypist daguerreotypy dah dahabeah Dahlia Dahoman Dahomeyan dahoon Daibutsu daidle daidly Daijo daiker daikon Dail Dailamite dailiness daily daimen daimiate daimio daimon daimonic daimonion daimonistic daimonology dain daincha dainteth daintify daintihood daintily daintiness daintith dainty Daira daira dairi dairy dairying dairymaid dairyman dairywoman dais daisied daisy daisybush daitya daiva dak daker Dakhini dakir Dakota daktylon daktylos dal dalar Dalarnian Dalbergia Dalcassian dale Dalea Dalecarlian daleman daler dalesfolk dalesman dalespeople daleswoman daleth dali Dalibarda dalk dallack dalle dalles dalliance dallier dally dallying dallyingly Dalmania Dalmanites Dalmatian Dalmatic dalmatic Dalradian dalt dalteen dalton Daltonian Daltonic Daltonism Daltonist dam dama damage damageability damageable damageableness damageably damagement damager damages damagingly daman Damara Damascene damascene damascened damascener damascenine Damascus damask damaskeen damasse damassin Damayanti dambonitol dambose dambrod dame damenization damewort Damgalnunna Damia damiana Damianist damie damier damine damkjernite damlike dammar Dammara damme dammer dammish damn damnability damnable damnableness damnably damnation damnatory damned damner damnification damnify Damnii damning damningly damningness damnonians Damnonii damnous damnously Damoclean Damocles Damoetas damoiseau Damon damonico damourite damp dampang damped dampen dampener damper damping dampish dampishly dampishness damply dampness dampproof dampproofer dampproofing dampy damsel damselfish damselhood damson Dan dan Danaan Danagla Danai Danaid danaid Danaidae danaide Danaidean Danainae danaine Danais danaite Danakil danalite danburite dancalite dance dancer danceress dancery dancette dancing dancingly dand danda dandelion dander dandiacal dandiacally dandically dandification dandify dandilly dandily dandiprat dandizette dandle dandler dandling dandlingly dandruff dandruffy dandy dandydom dandyish dandyism dandyize dandyling Dane Daneball Daneflower Danegeld Danelaw Daneweed Danewort dang danger dangerful dangerfully dangerless dangerous dangerously dangerousness dangersome dangle dangleberry danglement dangler danglin dangling danglingly Danian Danic danicism Daniel Danielic Daniglacial danio Danish Danism Danite Danization Danize dank Dankali dankish dankishness dankly dankness danli Dannebrog dannemorite danner dannock danoranja dansant danseuse danta Dantean Dantesque Danthonia Dantist Dantology Dantomania danton Dantonesque Dantonist Dantophilist Dantophily Danube Danubian Danuri Danzig Danziger dao daoine dap Dapedium Dapedius Daphnaceae Daphne Daphnean Daphnephoria daphnetin Daphnia daphnin daphnioid Daphnis daphnoid dapicho dapico dapifer dapper dapperling dapperly dapperness dapple dappled dar darabukka darac daraf Darapti darat darbha darby Darbyism Darbyite Dard Dardan dardanarius Dardani dardanium dardaol Dardic Dardistan dare dareall daredevil daredevilism daredevilry daredeviltry dareful darer Dares daresay darg dargah darger Darghin Dargo dargsman dargue dari daribah daric Darien Darii daring daringly daringness dariole Darius Darjeeling dark darken darkener darkening darkful darkhearted darkheartedness darkish darkishness darkle darkling darklings darkly darkmans darkness darkroom darkskin darksome darksomeness darky darling darlingly darlingness Darlingtonia darn darnation darned darnel darner darnex darning daroga daroo darr darrein darshana Darsonval Darsonvalism darst dart Dartagnan dartars dartboard darter darting dartingly dartingness dartle dartlike dartman Dartmoor dartoic dartoid dartos dartre dartrose dartrous darts dartsman Darwinian Darwinical Darwinically Darwinism Darwinist Darwinistic Darwinite Darwinize darzee das Daschagga dash dashboard dashed dashedly dashee dasheen dasher dashing dashingly dashmaker Dashnak Dashnakist Dashnaktzutiun dashplate dashpot dashwheel dashy dasi Dasiphora dasnt dassie dassy dastard dastardize dastardliness dastardly dastur dasturi Dasya Dasyatidae Dasyatis Dasycladaceae dasycladaceous Dasylirion dasymeter dasypaedal dasypaedes dasypaedic Dasypeltis dasyphyllous Dasypodidae dasypodoid Dasyprocta Dasyproctidae dasyproctine Dasypus Dasystephana dasyure Dasyuridae dasyurine dasyuroid Dasyurus Dasyus data datable datableness datably dataria datary datch datcha date dateless datemark dater datil dating dation Datisca Datiscaceae datiscaceous datiscetin datiscin datiscoside Datisi Datism datival dative datively dativogerundial datolite datolitic dattock datum Datura daturic daturism daub daube Daubentonia Daubentoniidae dauber daubery daubing daubingly daubreeite daubreelite daubster dauby Daucus daud daughter daughterhood daughterkin daughterless daughterlike daughterliness daughterling daughterly daughtership Daulias daunch dauncy Daunii daunt daunter daunting dauntingly dauntingness dauntless dauntlessly dauntlessness daunton dauphin dauphine dauphiness Daur Dauri daut dautie dauw davach Davallia Dave daven davenport daver daverdy David Davidian Davidic Davidical Davidist davidsonite Daviesia daviesite davit davoch Davy davy davyne daw dawdle dawdler dawdling dawdlingly dawdy dawish dawkin dawn dawning dawnlight dawnlike dawnstreak dawnward dawny Dawsonia Dawsoniaceae dawsoniaceous dawsonite dawtet dawtit dawut day dayabhaga Dayakker dayal daybeam dayberry dayblush daybook daybreak daydawn daydream daydreamer daydreamy daydrudge dayflower dayfly daygoing dayless daylight daylit daylong dayman daymare daymark dayroom days dayshine daysman dayspring daystar daystreak daytale daytide daytime daytimes dayward daywork dayworker daywrit Daza daze dazed dazedly dazedness dazement dazingly dazy dazzle dazzlement dazzler dazzlingly de deacetylate deacetylation deacidification deacidify deacon deaconal deaconate deaconess deaconhood deaconize deaconry deaconship deactivate deactivation dead deadbeat deadborn deadcenter deaden deadener deadening deader deadeye deadfall deadhead deadheadism deadhearted deadheartedly deadheartedness deadhouse deading deadish deadishly deadishness deadlatch deadlight deadlily deadline deadliness deadlock deadly deadman deadmelt deadness deadpan deadpay deadtongue deadwood deadwort deaerate deaeration deaerator deaf deafen deafening deafeningly deafforest deafforestation deafish deafly deafness deair deal dealable dealate dealated dealation dealbate dealbation dealbuminize dealcoholist dealcoholization dealcoholize dealer dealerdom dealership dealfish dealing dealkalize dealkylate dealkylation dealt deambulation deambulatory deamidase deamidate deamidation deamidization deamidize deaminase deaminate deamination deaminization deaminize deammonation dean deanathematize deaner deanery deaness deanimalize deanship deanthropomorphic deanthropomorphism deanthropomorphization deanthropomorphize deappetizing deaquation dear dearborn dearie dearly dearness dearomatize dearsenicate dearsenicator dearsenicize dearth dearthfu dearticulation dearworth dearworthily dearworthiness deary deash deasil deaspirate deaspiration deassimilation death deathbed deathblow deathday deathful deathfully deathfulness deathify deathin deathiness deathless deathlessly deathlessness deathlike deathliness deathling deathly deathroot deathshot deathsman deathtrap deathward deathwards deathwatch deathweed deathworm deathy deave deavely Deb deb debacle debadge debamboozle debar debarbarization debarbarize debark debarkation debarkment debarment debarrance debarrass debarration debase debasedness debasement debaser debasingly debatable debate debateful debatefully debatement debater debating debatingly debauch debauched debauchedly debauchedness debauchee debaucher debauchery debauchment Debby debby debeige debellate debellation debellator deben debenture debentured debenzolize debile debilissima debilitant debilitate debilitated debilitation debilitative debility debind debit debiteuse debituminization debituminize deblaterate deblateration deboistly deboistness debonair debonaire debonairity debonairly debonairness debonnaire Deborah debord debordment debosh deboshed debouch debouchment debride debrief debris debrominate debromination debruise debt debtee debtful debtless debtor debtorship debullition debunk debunker debunkment debus Debussyan Debussyanize debut debutant debutante decachord decad decadactylous decadal decadally decadarch decadarchy decadary decadation decade decadence decadency decadent decadentism decadently decadescent decadianome decadic decadist decadrachm decadrachma decaesarize decaffeinate decaffeinize decafid decagon decagonal decagram decagramme decahedral decahedron decahydrate decahydrated decahydronaphthalene Decaisnea decal decalcification decalcifier decalcify decalcomania decalcomaniac decalescence decalescent Decalin decaliter decalitre decalobate Decalogist Decalogue decalvant decalvation decameral Decameron Decameronic decamerous decameter decametre decamp decampment decan decanal decanally decanate decane decangular decani decanically decannulation decanonization decanonize decant decantate decantation decanter decantherous decap decapetalous decaphyllous decapitable decapitalization decapitalize decapitate decapitation decapitator decapod Decapoda decapodal decapodan decapodiform decapodous decapper decapsulate decapsulation decarbonate decarbonator decarbonization decarbonize decarbonized decarbonizer decarboxylate decarboxylation decarboxylization decarboxylize decarburation decarburization decarburize decarch decarchy decardinalize decare decarhinus decarnate decarnated decart decasemic decasepalous decaspermal decaspermous decast decastellate decastere decastich decastyle decasualization decasualize decasyllabic decasyllable decasyllabon decate decathlon decatholicize decatize decatizer decatoic decator decatyl decaudate decaudation decay decayable decayed decayedness decayer decayless decease deceased decedent deceit deceitful deceitfully deceitfulness deceivability deceivable deceivableness deceivably deceive deceiver deceiving deceivingly decelerate deceleration decelerator decelerometer December Decemberish Decemberly Decembrist decemcostate decemdentate decemfid decemflorous decemfoliate decemfoliolate decemjugate decemlocular decempartite decempeda decempedal decempedate decempennate decemplex decemplicate decempunctate decemstriate decemuiri decemvir decemviral decemvirate decemvirship decenary decence decency decene decennal decennary decennia decenniad decennial decennially decennium decennoval decent decenter decently decentness decentralism decentralist decentralization decentralize decentration decentre decenyl decephalization deceptibility deceptible deception deceptious deceptiously deceptitious deceptive deceptively deceptiveness deceptivity decerebrate decerebration decerebrize decern decerniture decernment decess decession dechemicalization dechemicalize dechenite Dechlog dechlore dechlorination dechoralize dechristianization dechristianize Decian deciare deciatine decibel deciceronize decidable decide decided decidedly decidedness decider decidingly decidua decidual deciduary Deciduata deciduate deciduitis deciduoma deciduous deciduously deciduousness decigram decigramme decil decile deciliter decillion decillionth decima decimal decimalism decimalist decimalization decimalize decimally decimate decimation decimator decimestrial decimeter decimolar decimole decimosexto Decimus decinormal decipher decipherability decipherable decipherably decipherer decipherment decipium decipolar decision decisional decisive decisively decisiveness decistere decitizenize Decius decivilization decivilize deck decke decked deckel decker deckhead deckhouse deckie decking deckle deckload deckswabber declaim declaimant declaimer declamation declamatoriness declamatory declarable declarant declaration declarative declaratively declarator declaratorily declaratory declare declared declaredly declaredness declarer declass declassicize declassify declension declensional declensionally declericalize declimatize declinable declinal declinate declination declinational declinatory declinature decline declined declinedness decliner declinograph declinometer declivate declive declivitous declivity declivous declutch decoagulate decoagulation decoat decocainize decoct decoctible decoction decoctive decoctum decode Decodon decohere decoherence decoherer decohesion decoic decoke decollate decollated decollation decollator decolletage decollete decolor decolorant decolorate decoloration decolorimeter decolorization decolorize decolorizer decolour decommission decompensate decompensation decomplex decomponible decomposability decomposable decompose decomposed decomposer decomposite decomposition decomposure decompound decompoundable decompoundly decompress decompressing decompression decompressive deconcatenate deconcentrate deconcentration deconcentrator decongestive deconsecrate deconsecration deconsider deconsideration decontaminate decontamination decontrol deconventionalize decopperization decopperize decorability decorable decorably decorament decorate decorated decoration decorationist decorative decoratively decorativeness decorator decoratory decorist decorous decorously decorousness decorrugative decorticate decortication decorticator decorticosis decorum decostate decoy decoyer decoyman decrassify decream decrease decreaseless decreasing decreasingly decreation decreative decree decreeable decreement decreer decreet decrement decrementless decremeter decrepit decrepitate decrepitation decrepitly decrepitness decrepitude decrescence decrescendo decrescent decretal decretalist decrete decretist decretive decretively decretorial decretorily decretory decretum decrew decrial decried decrier decrown decrudescence decrustation decry decrystallization decubital decubitus decultivate deculturate decuman decumana decumanus Decumaria decumary decumbence decumbency decumbent decumbently decumbiture decuple decuplet decuria decurion decurionate decurrence decurrency decurrent decurrently decurring decursion decursive decursively decurtate decurvation decurvature decurve decury decus decussate decussated decussately decussation decussis decussorium decyl decylene decylenic decylic decyne Dedan Dedanim Dedanite dedecorate dedecoration dedecorous dedendum dedentition dedicant dedicate dedicatee dedication dedicational dedicative dedicator dedicatorial dedicatorily dedicatory dedicature dedifferentiate dedifferentiation dedimus deditician dediticiancy dedition dedo dedoggerelize dedogmatize dedolation deduce deducement deducibility deducible deducibleness deducibly deducive deduct deductible deduction deductive deductively deductory deduplication dee deed deedbox deedeed deedful deedfully deedily deediness deedless deedy deem deemer deemie deemster deemstership deep deepen deepener deepening deepeningly Deepfreeze deeping deepish deeplier deeply deepmost deepmouthed deepness deepsome deepwater deepwaterman deer deerberry deerdog deerdrive deerfood deerhair deerherd deerhorn deerhound deerlet deermeat deerskin deerstalker deerstalking deerstand deerstealer deertongue deerweed deerwood deeryard deevey deevilick deface defaceable defacement defacer defacing defacingly defalcate defalcation defalcator defalk defamation defamatory defame defamed defamer defamingly defassa defat default defaultant defaulter defaultless defaulture defeasance defeasanced defease defeasibility defeasible defeasibleness defeat defeater defeatism defeatist defeatment defeature defecant defecate defecation defecator defect defectibility defectible defection defectionist defectious defective defectively defectiveness defectless defectology defector defectoscope defedation defeminize defence defend defendable defendant defender defendress defenestration defensative defense defenseless defenselessly defenselessness defensibility defensible defensibleness defensibly defension defensive defensively defensiveness defensor defensorship defensory defer deferable deference deferent deferentectomy deferential deferentiality deferentially deferentitis deferment deferrable deferral deferred deferrer deferrization deferrize defervesce defervescence defervescent defeudalize defiable defial defiance defiant defiantly defiantness defiber defibrinate defibrination defibrinize deficience deficiency deficient deficiently deficit defier defiguration defilade defile defiled defiledness defilement defiler defiliation defiling defilingly definability definable definably define defined definedly definement definer definiendum definiens definite definitely definiteness definition definitional definitiones definitive definitively definitiveness definitization definitize definitor definitude deflagrability deflagrable deflagrate deflagration deflagrator deflate deflation deflationary deflationist deflator deflect deflectable deflected deflection deflectionization deflectionize deflective deflectometer deflector deflesh deflex deflexibility deflexible deflexion deflexure deflocculant deflocculate deflocculation deflocculator deflorate defloration deflorescence deflower deflowerer defluent defluous defluvium defluxion defoedation defog defoliage defoliate defoliated defoliation defoliator deforce deforcement deforceor deforcer deforciant deforest deforestation deforester deform deformability deformable deformalize deformation deformational deformative deformed deformedly deformedness deformer deformeter deformism deformity defortify defoul defraud defraudation defrauder defraudment defray defrayable defrayal defrayer defrayment defreeze defrication defrock defrost defroster deft defterdar deftly deftness defunct defunction defunctionalization defunctionalize defunctness defuse defusion defy defyingly deg deganglionate degarnish degas degasification degasifier degasify degasser degauss degelatinize degelation degeneracy degeneralize degenerate degenerately degenerateness degeneration degenerationist degenerative degenerescence degenerescent degentilize degerm degerminate degerminator degged degger deglaciation deglaze deglutinate deglutination deglutition deglutitious deglutitive deglutitory deglycerin deglycerine degorge degradable degradand degradation degradational degradative degrade degraded degradedly degradedness degradement degrader degrading degradingly degradingness degraduate degraduation degrain degrease degreaser degree degreeless degreewise degression degressive degressively degu Deguelia deguelin degum degummer degust degustation dehair dehairer Dehaites deheathenize dehematize dehepatize Dehgan dehisce dehiscence dehiscent dehistoricize Dehkan dehnstufe dehonestate dehonestation dehorn dehorner dehors dehort dehortation dehortative dehortatory dehorter dehull dehumanization dehumanize dehumidification dehumidifier dehumidify dehusk Dehwar dehydrant dehydrase dehydrate dehydration dehydrator dehydroascorbic dehydrocorydaline dehydrofreezing dehydrogenase dehydrogenate dehydrogenation dehydrogenization dehydrogenize dehydromucic dehydrosparteine dehypnotize deice deicer deicidal deicide deictic deictical deictically deidealize Deidesheimer deific deifical deification deificatory deifier deiform deiformity deify deign Deimos deincrustant deindividualization deindividualize deindividuate deindustrialization deindustrialize deink Deino Deinocephalia Deinoceras Deinodon Deinodontidae deinos Deinosauria Deinotherium deinsularize deintellectualization deintellectualize deionize Deipara deiparous Deiphobus deipnodiplomatic deipnophobia deipnosophism deipnosophist deipnosophistic deipotent deiseal deisidaimonia deism deist deistic deistical deistically deisticalness deity deityship deject dejecta dejected dejectedly dejectedness dejectile dejection dejectly dejectory dejecture dejerate dejeration dejerator dejeune dejeuner dejunkerize Dekabrist dekaparsec dekapode dekko dekle deknight delabialization delabialize delacrimation delactation delaine delaminate delamination delapse delapsion delate delater delatinization delatinize delation delator delatorian Delaware Delawarean delawn delay delayable delayage delayer delayful delaying delayingly dele delead delectability delectable delectableness delectably delectate delectation delectus delegable delegacy delegalize delegant delegate delegatee delegateship delegation delegative delegator delegatory delenda Delesseria Delesseriaceae delesseriaceous delete deleterious deleteriously deleteriousness deletion deletive deletory delf delft delftware Delhi Delia Delian deliberalization deliberalize deliberant deliberate deliberately deliberateness deliberation deliberative deliberatively deliberativeness deliberator delible delicacy delicate delicately delicateness delicatesse delicatessen delicense Delichon delicioso Delicious delicious deliciously deliciousness delict delictum deligated deligation delight delightable delighted delightedly delightedness delighter delightful delightfully delightfulness delighting delightingly delightless delightsome delightsomely delightsomeness delignate delignification Delilah delime delimit delimitate delimitation delimitative delimiter delimitize delineable delineament delineate delineation delineative delineator delineatory delineature delinquence delinquency delinquent delinquently delint delinter deliquesce deliquescence deliquescent deliquium deliracy delirament deliration deliriant delirifacient delirious deliriously deliriousness delirium delitescence delitescency delitescent deliver deliverable deliverance deliverer deliveress deliveror delivery deliveryman dell Della dellenite Delobranchiata delocalization delocalize delomorphic delomorphous deloul delouse delphacid Delphacidae Delphian Delphin Delphinapterus delphine delphinic Delphinid Delphinidae delphinin delphinine delphinite Delphinium Delphinius delphinoid Delphinoidea delphinoidine Delphinus delphocurarine Delsarte Delsartean Delsartian Delta delta deltafication deltaic deltal deltarium deltation delthyrial delthyrium deltic deltidial deltidium deltiology deltohedron deltoid deltoidal delubrum deludable delude deluder deludher deluding deludingly deluge deluminize delundung delusion delusional delusionist delusive delusively delusiveness delusory deluster deluxe delve delver demagnetizable demagnetization demagnetize demagnetizer demagog demagogic demagogical demagogically demagogism demagogue demagoguery demagogy demal demand demandable demandant demander demanding demandingly demanganization demanganize demantoid demarcate demarcation demarcator demarch demarchy demargarinate demark demarkation demast dematerialization dematerialize Dematiaceae dematiaceous deme demean demeanor demegoric demency dement dementate dementation demented dementedly dementedness dementholize dementia demephitize demerit demeritorious demeritoriously Demerol demersal demersed demersion demesman demesmerize demesne demesnial demetallize demethylate demethylation Demetrian demetricize demi demiadult demiangel demiassignation demiatheism demiatheist demibarrel demibastion demibastioned demibath demibeast demibelt demibob demibombard demibrassart demibrigade demibrute demibuckram demicadence demicannon demicanon demicanton demicaponier demichamfron demicircle demicircular demicivilized demicolumn demicoronal demicritic demicuirass demiculverin demicylinder demicylindrical demidandiprat demideify demideity demidevil demidigested demidistance demiditone demidoctor demidog demidolmen demidome demieagle demifarthing demifigure demiflouncing demifusion demigardebras demigauntlet demigentleman demiglobe demigod demigoddess demigoddessship demigorge demigriffin demigroat demihag demihearse demiheavenly demihigh demihogshead demihorse demihuman demijambe demijohn demikindred demiking demilance demilancer demilawyer demilegato demilion demilitarization demilitarize demiliterate demilune demiluster demilustre demiman demimark demimentoniere demimetope demimillionaire demimondaine demimonde demimonk deminatured demineralization demineralize deminude deminudity demioctagonal demioctangular demiofficial demiorbit demiourgoi demiowl demiox demipagan demiparallel demipauldron demipectinate demipesade demipike demipillar demipique demiplacate demiplate demipomada demipremise demipremiss demipriest demipronation demipuppet demiquaver demiracle demiram demirelief demirep demirevetment demirhumb demirilievo demirobe demisability demisable demisacrilege demisang demisangue demisavage demise demiseason demisecond demisemiquaver demisemitone demisheath demishirt demisovereign demisphere demiss demission demissionary demissly demissness demissory demisuit demit demitasse demitint demitoilet demitone demitrain demitranslucence demitube demiturned demiurge demiurgeous demiurgic demiurgical demiurgically demiurgism demivambrace demivirgin demivoice demivol demivolt demivotary demiwivern demiwolf demnition demob demobilization demobilize democracy democrat democratian democratic democratical democratically democratifiable democratism democratist democratization democratize demodectic demoded Demodex Demodicidae Demodocus demodulation demodulator demogenic Demogorgon demographer demographic demographical demographically demographist demography demoid demoiselle demolish demolisher demolishment demolition demolitionary demolitionist demological demology Demon demon demonastery demoness demonetization demonetize demoniac demoniacal demoniacally demoniacism demonial demonian demonianism demoniast demonic demonical demonifuge demonish demonism demonist demonize demonkind demonland demonlike demonocracy demonograph demonographer demonography demonolater demonolatrous demonolatrously demonolatry demonologer demonologic demonological demonologically demonologist demonology demonomancy demonophobia demonry demonship demonstrability demonstrable demonstrableness demonstrably demonstrant demonstratable demonstrate demonstratedly demonstrater demonstration demonstrational demonstrationist demonstrative demonstratively demonstrativeness demonstrator demonstratorship demonstratory demophil demophilism demophobe Demophon Demophoon demoralization demoralize demoralizer demorphinization demorphism demos Demospongiae Demosthenean Demosthenic demote demotic demotics demotion demotist demount demountability demountable dempster demulce demulcent demulsibility demulsify demulsion demure demurely demureness demurity demurrable demurrage demurral demurrant demurrer demurring demurringly demutization demy demyship den denarcotization denarcotize denarius denaro denary denat denationalization denationalize denaturalization denaturalize denaturant denaturate denaturation denature denaturization denaturize denaturizer denazify denda dendrachate dendral Dendraspis dendraxon dendric dendriform dendrite Dendrites dendritic dendritical dendritically dendritiform Dendrium Dendrobates Dendrobatinae dendrobe Dendrobium Dendrocalamus Dendroceratina dendroceratine Dendrochirota dendrochronological dendrochronologist dendrochronology dendroclastic Dendrocoela dendrocoelan dendrocoele dendrocoelous Dendrocolaptidae dendrocolaptine Dendroctonus Dendrocygna dendrodont Dendrodus Dendroeca Dendrogaea Dendrogaean dendrograph dendrography Dendrohyrax Dendroica dendroid dendroidal Dendroidea Dendrolagus dendrolatry Dendrolene dendrolite dendrologic dendrological dendrologist dendrologous dendrology Dendromecon dendrometer dendron dendrophil dendrophile dendrophilous Dendropogon Dene dene Deneb Denebola denegate denegation denehole denervate denervation deneutralization dengue deniable denial denicotinize denier denierage denierer denigrate denigration denigrator denim Denis denitrate denitration denitrator denitrificant denitrification denitrificator denitrifier denitrify denitrize denization denizen denizenation denizenize denizenship dennet Dennis Dennstaedtia denominable denominate denomination denominational denominationalism denominationalist denominationalize denominationally denominative denominatively denominator denotable denotation denotative denotatively denotativeness denotatum denote denotement denotive denouement denounce denouncement denouncer dense densely densen denseness denshare densher denshire densification densifier densify densimeter densimetric densimetrically densimetry densitometer density dent dentagra dental dentale dentalgia Dentaliidae dentalism dentality Dentalium dentalization dentalize dentally dentaphone Dentaria dentary dentata dentate dentated dentately dentation dentatoangulate dentatocillitate dentatocostate dentatocrenate dentatoserrate dentatosetaceous dentatosinuate dentel dentelated dentelle dentelure denter dentex dentical denticate Denticeti denticle denticular denticulate denticulately denticulation denticule dentiferous dentification dentiform dentifrice dentigerous dentil dentilabial dentilated dentilation dentile dentilingual dentiloquist dentiloquy dentimeter dentin dentinal dentinalgia dentinasal dentine dentinitis dentinoblast dentinocemental dentinoid dentinoma dentiparous dentiphone dentiroster dentirostral dentirostrate Dentirostres dentiscalp dentist dentistic dentistical dentistry dentition dentoid dentolabial dentolingual dentonasal dentosurgical dentural denture denty denucleate denudant denudate denudation denudative denude denuder denumerable denumerably denumeral denumerant denumerantive denumeration denumerative denunciable denunciant denunciate denunciation denunciative denunciatively denunciator denunciatory denutrition deny denyingly deobstruct deobstruent deoccidentalize deoculate deodand deodara deodorant deodorization deodorize deodorizer deontological deontologist deontology deoperculate deoppilant deoppilate deoppilation deoppilative deordination deorganization deorganize deorientalize deorsumvergence deorsumversion deorusumduction deossification deossify deota deoxidant deoxidate deoxidation deoxidative deoxidator deoxidization deoxidize deoxidizer deoxygenate deoxygenation deoxygenization deozonization deozonize deozonizer depa depaganize depaint depancreatization depancreatize depark deparliament depart departed departer departisanize departition department departmental departmentalism departmentalization departmentalize departmentally departmentization departmentize departure depas depascent depass depasturable depasturage depasturation depasture depatriate depauperate depauperation depauperization depauperize depencil depend dependability dependable dependableness dependably dependence dependency dependent dependently depender depending dependingly depeople deperdite deperditely deperition depersonalization depersonalize depersonize depetalize depeter depetticoat dephase dephilosophize dephlegmate dephlegmation dephlegmatize dephlegmator dephlegmatory dephlegmedness dephlogisticate dephlogisticated dephlogistication dephosphorization dephosphorize dephysicalization dephysicalize depickle depict depicter depiction depictive depicture depiedmontize depigment depigmentate depigmentation depigmentize depilate depilation depilator depilatory depilitant depilous deplaceable deplane deplasmolysis deplaster deplenish deplete deplethoric depletion depletive depletory deploitation deplorability deplorable deplorableness deplorably deploration deplore deplored deploredly deploredness deplorer deploringly deploy deployment deplumate deplumated deplumation deplume deplump depoetize depoh depolarization depolarize depolarizer depolish depolishing depolymerization depolymerize depone deponent depopularize depopulate depopulation depopulative depopulator deport deportable deportation deportee deporter deportment deposable deposal depose deposer deposit depositary depositation depositee deposition depositional depositive depositor depository depositum depositure depot depotentiate depotentiation depravation deprave depraved depravedly depravedness depraver depravingly depravity deprecable deprecate deprecatingly deprecation deprecative deprecator deprecatorily deprecatoriness deprecatory depreciable depreciant depreciate depreciatingly depreciation depreciative depreciatively depreciator depreciatoriness depreciatory depredate depredation depredationist depredator depredatory depress depressant depressed depressibility depressible depressing depressingly depressingness depression depressive depressively depressiveness depressomotor depressor depreter deprint depriorize deprivable deprival deprivate deprivation deprivative deprive deprivement depriver deprovincialize depside depth depthen depthing depthless depthometer depthwise depullulation depurant depurate depuration depurative depurator depuratory depursement deputable deputation deputational deputationist deputationize deputative deputatively deputator depute deputize deputy deputyship dequeen derabbinize deracialize deracinate deracination deradelphus deradenitis deradenoncus derah deraign derail derailer derailment derange derangeable deranged derangement deranger derat derate derater derationalization derationalize deratization deray Derbend Derby derby derbylite dere deregister deregulationize dereism dereistic dereistically derelict dereliction derelictly derelictness dereligion dereligionize derencephalocele derencephalus deresinate deresinize deric deride derider deridingly Deringa Deripia derisible derision derisive derisively derisiveness derisory derivability derivable derivably derival derivant derivate derivately derivation derivational derivationally derivationist derivatist derivative derivatively derivativeness derive derived derivedly derivedness deriver derm derma Dermacentor dermad dermahemia dermal dermalgia dermalith dermamyiasis dermanaplasty dermapostasis Dermaptera dermapteran dermapterous dermaskeleton dermasurgery dermatagra dermatalgia dermataneuria dermatatrophia dermatauxe dermathemia dermatic dermatine dermatitis Dermatobia dermatocele dermatocellulitis dermatoconiosis Dermatocoptes dermatocoptic dermatocyst dermatodynia dermatogen dermatoglyphics dermatograph dermatographia dermatography dermatoheteroplasty dermatoid dermatological dermatologist dermatology dermatolysis dermatoma dermatome dermatomere dermatomic dermatomuscular dermatomyces dermatomycosis dermatomyoma dermatoneural dermatoneurology dermatoneurosis dermatonosus dermatopathia dermatopathic dermatopathology dermatopathophobia Dermatophagus dermatophobia dermatophone dermatophony dermatophyte dermatophytic dermatophytosis dermatoplasm dermatoplast dermatoplastic dermatoplasty dermatopnagic dermatopsy Dermatoptera dermatoptic dermatorrhagia dermatorrhea dermatorrhoea dermatosclerosis dermatoscopy dermatosis dermatoskeleton dermatotherapy dermatotome dermatotomy dermatotropic dermatoxerasia dermatozoon dermatozoonosis dermatrophia dermatrophy dermenchysis Dermestes dermestid Dermestidae dermestoid dermic dermis dermitis dermoblast Dermobranchia dermobranchiata dermobranchiate Dermochelys dermochrome dermococcus dermogastric dermographia dermographic dermographism dermography dermohemal dermohemia dermohumeral dermoid dermoidal dermoidectomy dermol dermolysis dermomuscular dermomycosis dermoneural dermoneurosis dermonosology dermoosseous dermoossification dermopathic dermopathy dermophlebitis dermophobe dermophyte dermophytic dermoplasty Dermoptera dermopteran dermopterous dermoreaction Dermorhynchi dermorhynchous dermosclerite dermoskeletal dermoskeleton dermostenosis dermostosis dermosynovitis dermotropic dermovaccine dermutation dern dernier derodidymus derogate derogately derogation derogative derogatively derogator derogatorily derogatoriness derogatory Derotrema Derotremata derotremate derotrematous derotreme derout Derrick derrick derricking derrickman derride derries derringer Derris derry dertrotheca dertrum deruinate deruralize derust dervish dervishhood dervishism dervishlike desaccharification desacralization desacralize desalt desamidization desand desaturate desaturation desaurin descale descant descanter descantist descend descendable descendance descendant descendence descendent descendental descendentalism descendentalist descendentalistic descender descendibility descendible descending descendingly descension descensional descensionist descensive descent Deschampsia descloizite descort describability describable describably describe describer descrier descript description descriptionist descriptionless descriptive descriptively descriptiveness descriptory descrive descry deseasonalize desecrate desecrater desecration desectionalize deseed desegmentation desegmented desensitization desensitize desensitizer desentimentalize deseret desert deserted desertedly desertedness deserter desertful desertfully desertic deserticolous desertion desertism desertless desertlessly desertlike desertness desertress desertrice desertward deserve deserved deservedly deservedness deserveless deserver deserving deservingly deservingness desex desexualization desexualize deshabille desi desiccant desiccate desiccation desiccative desiccator desiccatory desiderant desiderata desiderate desideration desiderative desideratum desight desightment design designable designate designation designative designator designatory designatum designed designedly designedness designee designer designful designfully designfulness designing designingly designless designlessly designlessness desilicate desilicification desilicify desiliconization desiliconize desilver desilverization desilverize desilverizer desinence desinent desiodothyroxine desipience desipiency desipient desirability desirable desirableness desirably desire desired desiredly desiredness desireful desirefulness desireless desirer desiringly desirous desirously desirousness desist desistance desistive desition desize desk desklike deslime desma desmachymatous desmachyme desmacyte desman Desmanthus Desmarestia Desmarestiaceae desmarestiaceous Desmatippus desmectasia desmepithelium desmic desmid Desmidiaceae desmidiaceous Desmidiales desmidiologist desmidiology desmine desmitis desmocyte desmocytoma Desmodactyli Desmodium desmodont Desmodontidae Desmodus desmodynia desmogen desmogenous Desmognathae desmognathism desmognathous desmography desmohemoblast desmoid desmology desmoma Desmomyaria desmon Desmoncus desmoneoplasm desmonosology desmopathologist desmopathology desmopathy desmopelmous desmopexia desmopyknosis desmorrhexis Desmoscolecidae Desmoscolex desmosis desmosite Desmothoraca desmotomy desmotrope desmotropic desmotropism desocialization desocialize desolate desolately desolateness desolater desolating desolatingly desolation desolative desonation desophisticate desophistication desorption desoxalate desoxyanisoin desoxybenzoin desoxycinchonine desoxycorticosterone desoxymorphine desoxyribonucleic despair despairer despairful despairfully despairfulness despairing despairingly despairingness despecialization despecialize despecificate despecification despect desperacy desperado desperadoism desperate desperately desperateness desperation despicability despicable despicableness despicably despiritualization despiritualize despisable despisableness despisal despise despisedness despisement despiser despisingly despite despiteful despitefully despitefulness despiteous despiteously despoil despoiler despoilment despoliation despond despondence despondency despondent despondently desponder desponding despondingly despot despotat Despotes despotic despotically despoticalness despoticly despotism despotist despotize despumate despumation desquamate desquamation desquamative desquamatory dess dessa dessert dessertspoon dessertspoonful dessiatine dessil destabilize destain destandardize desterilization desterilize destinate destination destine destinezite destinism destinist destiny destitute destitutely destituteness destitution destour destress destrier destroy destroyable destroyer destroyingly destructibility destructible destructibleness destruction destructional destructionism destructionist destructive destructively destructiveness destructivism destructivity destructor destructuralize desubstantiate desucration desuete desuetude desugar desugarize Desulfovibrio desulphur desulphurate desulphuration desulphurization desulphurize desulphurizer desultor desultorily desultoriness desultorious desultory desuperheater desyatin desyl desynapsis desynaptic desynonymization desynonymize detach detachability detachable detachableness detachably detached detachedly detachedness detacher detachment detail detailed detailedly detailedness detailer detailism detailist detain detainable detainal detainer detainingly detainment detar detassel detax detect detectability detectable detectably detectaphone detecter detectible detection detective detectivism detector detenant detent detention detentive deter deterge detergence detergency detergent detergible deteriorate deterioration deteriorationist deteriorative deteriorator deteriorism deteriority determent determinability determinable determinableness determinably determinacy determinant determinantal determinate determinately determinateness determination determinative determinatively determinativeness determinator determine determined determinedly determinedness determiner determinism determinist deterministic determinoid deterrence deterrent detersion detersive detersively detersiveness detest detestability detestable detestableness detestably detestation detester dethronable dethrone dethronement dethroner dethyroidism detin detinet detinue detonable detonate detonation detonative detonator detorsion detour detoxicant detoxicate detoxication detoxicator detoxification detoxify detract detracter detractingly detraction detractive detractively detractiveness detractor detractory detractress detrain detrainment detribalization detribalize detriment detrimental detrimentality detrimentally detrimentalness detrital detrited detrition detritus Detroiter detrude detruncate detruncation detrusion detrusive detrusor detubation detumescence detune detur deuce deuced deucedly deul deurbanize deutencephalic deutencephalon deuteragonist deuteranomal deuteranomalous deuteranope deuteranopia deuteranopic deuteric deuteride deuterium deuteroalbumose deuterocanonical deuterocasease deuterocone deuteroconid deuterodome deuteroelastose deuterofibrinose deuterogamist deuterogamy deuterogelatose deuterogenic deuteroglobulose deuteromorphic Deuteromycetes deuteromyosinose deuteron Deuteronomic Deuteronomical Deuteronomist Deuteronomistic Deuteronomy deuteropathic deuteropathy deuteroplasm deuteroprism deuteroproteose deuteroscopic deuteroscopy deuterostoma Deuterostomata deuterostomatous deuterotokous deuterotoky deuterotype deuterovitellose deuterozooid deutobromide deutocarbonate deutochloride deutomala deutomalal deutomalar deutomerite deuton deutonephron deutonymph deutonymphal deutoplasm deutoplasmic deutoplastic deutoscolex deutoxide Deutzia dev deva devachan devadasi devall devaloka devalorize devaluate devaluation devalue devance devaporate devaporation devast devastate devastating devastatingly devastation devastative devastator devastavit devaster devata develin develop developability developable developedness developer developist development developmental developmentalist developmentally developmentarian developmentary developmentist developoid devertebrated devest deviability deviable deviancy deviant deviate deviation deviationism deviationist deviative deviator deviatory device deviceful devicefully devicefulness devil devilbird devildom deviled deviler deviless devilet devilfish devilhood deviling devilish devilishly devilishness devilism devilize devilkin devillike devilman devilment devilmonger devilry devilship deviltry devilward devilwise devilwood devily devious deviously deviousness devirginate devirgination devirginator devirilize devisable devisal deviscerate devisceration devise devisee deviser devisor devitalization devitalize devitalized devitaminize devitrification devitrify devocalization devocalize devoice devoid devoir devolatilize devolute devolution devolutionary devolutionist devolve devolvement Devon Devonian Devonic devonite devonport devonshire devorative devote devoted devotedly devotedness devotee devoteeism devotement devoter devotion devotional devotionalism devotionalist devotionality devotionally devotionalness devotionate devotionist devour devourable devourer devouress devouring devouringly devouringness devourment devout devoutless devoutlessly devoutlessness devoutly devoutness devow devulcanization devulcanize devulgarize devvel dew dewan dewanee dewanship dewater dewaterer dewax dewbeam dewberry dewclaw dewclawed dewcup dewdamp dewdrop dewdropper dewer deweylite dewfall dewflower dewily dewiness dewlap dewlapped dewless dewlight dewlike dewool deworm dewret dewtry dewworm dewy dexiocardia dexiotrope dexiotropic dexiotropism dexiotropous Dexter dexter dexterical dexterity dexterous dexterously dexterousness dextrad dextral dextrality dextrally dextran dextraural dextrin dextrinase dextrinate dextrinize dextrinous dextro dextroaural dextrocardia dextrocardial dextrocerebral dextrocular dextrocularity dextroduction dextroglucose dextrogyrate dextrogyration dextrogyratory dextrogyrous dextrolactic dextrolimonene dextropinene dextrorotary dextrorotatary dextrorotation dextrorsal dextrorse dextrorsely dextrosazone dextrose dextrosinistral dextrosinistrally dextrosuria dextrotartaric dextrotropic dextrotropous dextrous dextrously dextrousness dextroversion dey deyhouse deyship deywoman Dezaley dezinc dezincation dezincification dezincify dezymotize dha dhabb dhai dhak dhamnoo dhan dhangar dhanuk dhanush Dhanvantari dharana dharani dharma dharmakaya dharmashastra dharmasmriti dharmasutra dharmsala dharna dhaura dhauri dhava dhaw Dheneb dheri dhobi dhole dhoni dhoon dhoti dhoul dhow Dhritarashtra dhu dhunchee dhunchi Dhundia dhurra dhyal dhyana di diabase diabasic diabetes diabetic diabetogenic diabetogenous diabetometer diablerie diabolarch diabolarchy diabolatry diabolepsy diaboleptic diabolic diabolical diabolically diabolicalness diabolification diabolify diabolism diabolist diabolization diabolize diabological diabology diabolology diabrosis diabrotic Diabrotica diacanthous diacaustic diacetamide diacetate diacetic diacetin diacetine diacetonuria diaceturia diacetyl diacetylene diachoretic diachronic diachylon diachylum diacid diacipiperazine diaclase diaclasis diaclastic diacle diaclinal diacodion diacoele diacoelia diaconal diaconate diaconia diaconicon diaconicum diacope diacranterian diacranteric diacrisis diacritic diacritical diacritically Diacromyodi diacromyodian diact diactin diactinal diactinic diactinism Diadelphia diadelphian diadelphic diadelphous diadem Diadema Diadematoida diaderm diadermic diadoche Diadochi Diadochian diadochite diadochokinesia diadochokinetic diadromous diadumenus diaene diaereses diaeresis diaeretic diaetetae diagenesis diagenetic diageotropic diageotropism diaglyph diaglyphic diagnosable diagnose diagnoseable diagnoses diagnosis diagnostic diagnostically diagnosticate diagnostication diagnostician diagnostics diagometer diagonal diagonality diagonalize diagonally diagonalwise diagonic diagram diagrammatic diagrammatical diagrammatician diagrammatize diagrammeter diagrammitically diagraph diagraphic diagraphical diagraphics diagredium diagrydium Diaguitas Diaguite diaheliotropic diaheliotropically diaheliotropism diakinesis dial dialcohol dialdehyde dialect dialectal dialectalize dialectally dialectic dialectical dialectically dialectician dialecticism dialecticize dialectics dialectologer dialectological dialectologist dialectology dialector dialer dialin dialing dialist Dialister dialkyl dialkylamine diallage diallagic diallagite diallagoid diallel diallelon diallelus diallyl dialogic dialogical dialogically dialogism dialogist dialogistic dialogistical dialogistically dialogite dialogize dialogue dialoguer Dialonian dialuric dialycarpous Dialypetalae dialypetalous dialyphyllous dialysepalous dialysis dialystaminous dialystelic dialystely dialytic dialytically dialyzability dialyzable dialyzate dialyzation dialyzator dialyze dialyzer diamagnet diamagnetic diamagnetically diamagnetism diamantiferous diamantine diamantoid diamb diambic diamesogamous diameter diametral diametrally diametric diametrical diametrically diamicton diamide diamidogen diamine diaminogen diaminogene diammine diamminobromide diamminonitrate diammonium diamond diamondback diamonded diamondiferous diamondize diamondlike diamondwise diamondwork diamorphine diamylose Dian dian Diana Diancecht diander Diandria diandrian diandrous dianetics Dianil dianilid dianilide dianisidin dianisidine dianite dianodal dianoetic dianoetical dianoetically Dianthaceae Dianthera Dianthus diapalma diapase diapasm diapason diapasonal diapause diapedesis diapedetic Diapensia Diapensiaceae diapensiaceous diapente diaper diapering diaphane diaphaneity diaphanie diaphanometer diaphanometric diaphanometry diaphanoscope diaphanoscopy diaphanotype diaphanous diaphanously diaphanousness diaphany diaphone diaphonia diaphonic diaphonical diaphony diaphoresis diaphoretic diaphoretical diaphorite diaphote diaphototropic diaphototropism diaphragm diaphragmal diaphragmatic diaphragmatically diaphtherin diaphysial diaphysis diaplasma diaplex diaplexal diaplexus diapnoic diapnotic diapophysial diapophysis Diaporthe diapositive diapsid Diapsida diapsidan diapyesis diapyetic diarch diarchial diarchic diarchy diarhemia diarial diarian diarist diaristic diarize diarrhea diarrheal diarrheic diarrhetic diarsenide diarthric diarthrodial diarthrosis diarticular diary diaschisis diaschisma diaschistic Diascia diascope diascopy diascord diascordium diaskeuasis diaskeuast Diaspidinae diaspidine Diaspinae diaspine diaspirin Diaspora diaspore diastaltic diastase diastasic diastasimetry diastasis diastataxic diastataxy diastatic diastatically diastem diastema diastematic diastematomyelia diaster diastole diastolic diastomatic diastral diastrophe diastrophic diastrophism diastrophy diasynthesis diasyrm diatessaron diathermacy diathermal diathermancy diathermaneity diathermanous diathermic diathermize diathermometer diathermotherapy diathermous diathermy diathesic diathesis diathetic diatom Diatoma Diatomaceae diatomacean diatomaceoid diatomaceous Diatomales Diatomeae diatomean diatomic diatomicity diatomiferous diatomin diatomist diatomite diatomous diatonic diatonical diatonically diatonous diatoric diatreme diatribe diatribist diatropic diatropism Diatryma Diatrymiformes Diau diaulic diaulos diaxial diaxon diazenithal diazeuctic diazeuxis diazide diazine diazoamine diazoamino diazoaminobenzene diazoanhydride diazoate diazobenzene diazohydroxide diazoic diazoimide diazoimido diazole diazoma diazomethane diazonium diazotate diazotic diazotizability diazotizable diazotization diazotize diazotype dib dibase dibasic dibasicity dibatag Dibatis dibber dibble dibbler dibbuk dibenzophenazine dibenzopyrrole dibenzoyl dibenzyl dibhole diblastula diborate Dibothriocephalus dibrach dibranch Dibranchia Dibranchiata dibranchiate dibranchious dibrom dibromid dibromide dibromoacetaldehyde dibromobenzene dibs dibstone dibutyrate dibutyrin dicacodyl Dicaeidae dicaeology dicalcic dicalcium dicarbonate dicarbonic dicarboxylate dicarboxylic dicarpellary dicaryon dicaryophase dicaryophyte dicaryotic dicast dicastery dicastic dicatalectic dicatalexis Diccon dice diceboard dicebox dicecup dicellate diceman Dicentra dicentrine dicephalism dicephalous dicephalus diceplay dicer Diceras Diceratidae dicerion dicerous dicetyl dich Dichapetalaceae Dichapetalum dichas dichasial dichasium dichastic Dichelyma dichlamydeous dichloramine dichlorhydrin dichloride dichloroacetic dichlorohydrin dichloromethane dichocarpism dichocarpous dichogamous dichogamy Dichondra Dichondraceae dichopodial dichoptic dichord dichoree Dichorisandra dichotic dichotomal dichotomic dichotomically dichotomist dichotomistic dichotomization dichotomize dichotomous dichotomously dichotomy dichroic dichroiscope dichroism dichroite dichroitic dichromasy dichromat dichromate dichromatic dichromatism dichromic dichromism dichronous dichrooscope dichroous dichroscope dichroscopic Dichter dicing dick dickcissel dickens Dickensian Dickensiana dicker dickey dickeybird dickinsonite Dicksonia dicky Diclidantheraceae diclinic diclinism diclinous Diclytra dicoccous dicodeine dicoelious dicolic dicolon dicondylian dicot dicotyl dicotyledon dicotyledonary Dicotyledones dicotyledonous Dicotyles Dicotylidae dicotylous dicoumarin Dicranaceae dicranaceous dicranoid dicranterian Dicranum Dicrostonyx dicrotal dicrotic dicrotism dicrotous Dicruridae dicta Dictaen Dictamnus Dictaphone dictate dictatingly dictation dictational dictative dictator dictatorial dictatorialism dictatorially dictatorialness dictatorship dictatory dictatress dictatrix dictature dictic diction dictionary Dictograph dictum dictynid Dictynidae Dictyoceratina dictyoceratine dictyodromous dictyogen dictyogenous Dictyograptus dictyoid Dictyonema Dictyonina dictyonine Dictyophora dictyopteran Dictyopteris Dictyosiphon Dictyosiphonaceae dictyosiphonaceous dictyosome dictyostele dictyostelic Dictyota Dictyotaceae dictyotaceous Dictyotales dictyotic Dictyoxylon dicyanide dicyanine dicyanodiamide dicyanogen dicycle dicyclic Dicyclica dicyclist Dicyema Dicyemata dicyemid Dicyemida Dicyemidae Dicynodon dicynodont Dicynodontia Dicynodontidae did Didache Didachist didactic didactical didacticality didactically didactician didacticism didacticity didactics didactive didactyl didactylism didactylous didapper didascalar didascaliae didascalic didascalos didascaly didder diddle diddler diddy didelph Didelphia didelphian didelphic didelphid Didelphidae didelphine Didelphis didelphoid didelphous Didelphyidae didepsid didepside Dididae didie didine Didinium didle didna didnt Dido didodecahedral didodecahedron didrachma didrachmal didromy didst diductor Didunculidae Didunculinae Didunculus Didus didym didymate didymia didymitis didymium didymoid didymolite didymous didymus Didynamia didynamian didynamic didynamous didynamy die dieb dieback diectasis diedral diedric Dieffenbachia Diego Diegueno diehard dielectric dielectrically dielike Dielytra diem diemaker diemaking diencephalic diencephalon diene dier Dieri Diervilla diesel dieselization dieselize diesinker diesinking diesis diestock diet dietal dietarian dietary dieter dietetic dietetically dietetics dietetist diethanolamine diethyl diethylamine diethylenediamine diethylstilbestrol dietic dietician dietics dietine dietist dietitian dietotherapeutics dietotherapy dietotoxic dietotoxicity dietrichite dietzeite diewise Dieyerie diezeugmenon Difda diferrion diffame diffarreation differ difference differencingly different differentia differentiable differential differentialize differentially differentiant differentiate differentiation differentiator differently differentness differingly difficile difficileness difficult difficultly difficultness difficulty diffidation diffide diffidence diffident diffidently diffidentness diffinity diffluence diffluent Difflugia difform difformed difformity diffract diffraction diffractive diffractively diffractiveness diffractometer diffrangibility diffrangible diffugient diffusate diffuse diffused diffusedly diffusely diffuseness diffuser diffusibility diffusible diffusibleness diffusibly diffusimeter diffusiometer diffusion diffusionism diffusionist diffusive diffusively diffusiveness diffusivity diffusor diformin dig digallate digallic digametic digamist digamma digammated digammic digamous digamy digastric Digenea digeneous digenesis digenetic Digenetica digenic digenous digeny digerent digest digestant digested digestedly digestedness digester digestibility digestible digestibleness digestibly digestion digestional digestive digestively digestiveness digestment diggable digger digging diggings dight dighter digit digital digitalein digitalin digitalis digitalism digitalization digitalize digitally Digitaria digitate digitated digitately digitation digitiform Digitigrada digitigrade digitigradism digitinervate digitinerved digitipinnate digitize digitizer digitogenin digitonin digitoplantar digitorium digitoxin digitoxose digitule digitus digladiate digladiation digladiator diglossia diglot diglottic diglottism diglottist diglucoside diglyceride diglyph diglyphic digmeat dignification dignified dignifiedly dignifiedness dignify dignitarial dignitarian dignitary dignity digoneutic digoneutism digonoporous digonous Digor digram digraph digraphic digredience digrediency digredient digress digressingly digression digressional digressionary digressive digressively digressiveness digressory digs diguanide Digynia digynian digynous dihalide dihalo dihalogen dihedral dihedron dihexagonal dihexahedral dihexahedron dihybrid dihybridism dihydrate dihydrated dihydrazone dihydric dihydride dihydrite dihydrocupreine dihydrocuprin dihydrogen dihydrol dihydronaphthalene dihydronicotine dihydrotachysterol dihydroxy dihydroxysuccinic dihydroxytoluene dihysteria diiamb diiambus diiodide diiodo diiodoform diipenates Diipolia diisatogen dijudicate dijudication dika dikage dikamali dikaryon dikaryophase dikaryophasic dikaryophyte dikaryophytic dikaryotic Dike dike dikegrave dikelocephalid Dikelocephalus diker dikereeve dikeside diketo diketone dikkop diktyonite dilacerate dilaceration dilambdodont dilamination Dilantin dilapidate dilapidated dilapidation dilapidator dilatability dilatable dilatableness dilatably dilatancy dilatant dilatate dilatation dilatative dilatator dilatatory dilate dilated dilatedly dilatedness dilater dilatingly dilation dilative dilatometer dilatometric dilatometry dilator dilatorily dilatoriness dilatory dildo dilection Dilemi Dilemite dilemma dilemmatic dilemmatical dilemmatically dilettant dilettante dilettanteish dilettanteism dilettanteship dilettanti dilettantish dilettantism dilettantist diligence diligency diligent diligentia diligently diligentness dilker dill Dillenia Dilleniaceae dilleniaceous dilleniad dilli dillier dilligrout dilling dillseed dillue dilluer dillweed dilly dillydallier dillydally dillyman dilo dilogy diluent dilute diluted dilutedly dilutedness dilutee dilutely diluteness dilutent diluter dilution dilutive dilutor diluvia diluvial diluvialist diluvian diluvianism diluvion diluvium dim dimagnesic dimanganion dimanganous Dimaris dimastigate Dimatis dimber dimberdamber dimble dime dimensible dimension dimensional dimensionality dimensionally dimensioned dimensionless dimensive dimer Dimera dimeran dimercuric dimercurion dimercury dimeric dimeride dimerism dimerization dimerlie dimerous dimetallic dimeter dimethoxy dimethyl dimethylamine dimethylamino dimethylaniline dimethylbenzene dimetria dimetric dimication dimidiate dimidiation diminish diminishable diminishableness diminisher diminishingly diminishment diminuendo diminutal diminute diminution diminutival diminutive diminutively diminutiveness diminutivize dimiss dimission dimissorial dimissory dimit Dimittis dimity dimly dimmed dimmedness dimmer dimmest dimmet dimmish Dimna dimness dimolecular dimoric dimorph dimorphic dimorphism Dimorphotheca dimorphous dimple dimplement dimply dimps dimpsy Dimyaria dimyarian dimyaric din Dinah dinamode Dinantian dinaphthyl dinar Dinaric Dinarzade dinder dindle Dindymene Dindymus dine diner dinergate dineric dinero dinette dineuric ding dingar dingbat dingdong dinge dingee dinghee dinghy dingily dinginess dingle dingleberry dinglebird dingledangle dingly dingmaul dingo dingus Dingwall dingy dinheiro dinic dinical Dinichthys dining dinitrate dinitril dinitrile dinitro dinitrobenzene dinitrocellulose dinitrophenol dinitrotoluene dink Dinka dinkey dinkum dinky dinmont dinner dinnerless dinnerly dinnertime dinnerware dinnery Dinobryon Dinoceras Dinocerata dinoceratan dinoceratid Dinoceratidae Dinoflagellata Dinoflagellatae dinoflagellate Dinoflagellida dinomic Dinomys Dinophilea Dinophilus Dinophyceae Dinornis Dinornithes dinornithic dinornithid Dinornithidae Dinornithiformes dinornithine dinornithoid dinosaur Dinosauria dinosaurian dinothere Dinotheres dinotherian Dinotheriidae Dinotherium dinsome dint dintless dinus diobely diobol diocesan diocese Diocletian dioctahedral Dioctophyme diode Diodia Diodon diodont Diodontidae Dioecia dioecian dioeciodimorphous dioeciopolygamous dioecious dioeciously dioeciousness dioecism dioecy dioestrous dioestrum dioestrus Diogenean Diogenic diogenite dioicous diol diolefin diolefinic Diomedea Diomedeidae Dionaea Dionaeaceae Dione dionise dionym dionymal Dionysia Dionysiac Dionysiacal Dionysiacally Dioon Diophantine Diopsidae diopside Diopsis dioptase diopter Dioptidae dioptograph dioptometer dioptometry dioptoscopy dioptra dioptral dioptrate dioptric dioptrical dioptrically dioptrics dioptrometer dioptrometry dioptroscopy dioptry diorama dioramic diordinal diorite dioritic diorthosis diorthotic Dioscorea Dioscoreaceae dioscoreaceous dioscorein dioscorine Dioscuri Dioscurian diose Diosma diosmin diosmose diosmosis diosmotic diosphenol Diospyraceae diospyraceous Diospyros diota diotic Diotocardia diovular dioxane dioxide dioxime dioxindole dioxy dip Dipala diparentum dipartite dipartition dipaschal dipentene dipeptid dipeptide dipetalous dipetto diphase diphaser diphasic diphead diphenol diphenyl diphenylamine diphenylchloroarsine diphenylene diphenylenimide diphenylguanidine diphenylmethane diphenylquinomethane diphenylthiourea diphosgene diphosphate diphosphide diphosphoric diphosphothiamine diphrelatic diphtheria diphtherial diphtherian diphtheric diphtheritic diphtheritically diphtheritis diphtheroid diphtheroidal diphtherotoxin diphthong diphthongal diphthongalize diphthongally diphthongation diphthongic diphthongization diphthongize diphycercal diphycercy Diphyes diphygenic diphyletic Diphylla Diphylleia Diphyllobothrium diphyllous diphyodont diphyozooid Diphysite Diphysitism diphyzooid dipicrate dipicrylamin dipicrylamine Diplacanthidae Diplacanthus diplacusis Dipladenia diplanar diplanetic diplanetism diplantidian diplarthrism diplarthrous diplasiasmus diplasic diplasion diplegia dipleidoscope dipleura dipleural dipleurogenesis dipleurogenetic diplex diplobacillus diplobacterium diploblastic diplocardia diplocardiac Diplocarpon diplocaulescent diplocephalous diplocephalus diplocephaly diplochlamydeous diplococcal diplococcemia diplococcic diplococcoid diplococcus diploconical diplocoria Diplodia Diplodocus Diplodus diploe diploetic diplogangliate diplogenesis diplogenetic diplogenic Diploglossata diploglossate diplograph diplographic diplographical diplography diplohedral diplohedron diploic diploid diploidic diploidion diploidy diplois diplokaryon diploma diplomacy diplomat diplomate diplomatic diplomatical diplomatically diplomatics diplomatism diplomatist diplomatize diplomatology diplomyelia diplonema diplonephridia diploneural diplont diploperistomic diplophase diplophyte diplopia diplopic diploplacula diploplacular diploplaculate diplopod Diplopoda diplopodic Diploptera diplopterous Diplopteryga diplopy diplosis diplosome diplosphenal diplosphene Diplospondyli diplospondylic diplospondylism diplostemonous diplostemony diplostichous Diplotaxis diplotegia diplotene Diplozoon diplumbic Dipneumona Dipneumones dipneumonous dipneustal Dipneusti dipnoan Dipnoi dipnoid dipnoous dipode dipodic Dipodidae Dipodomyinae Dipodomys dipody dipolar dipolarization dipolarize dipole diporpa dipotassic dipotassium dipped dipper dipperful dipping diprimary diprismatic dipropargyl dipropyl Diprotodon diprotodont Diprotodontia Dipsacaceae dipsacaceous Dipsaceae dipsaceous Dipsacus Dipsadinae dipsas dipsetic dipsey dipsomania dipsomaniac dipsomaniacal Dipsosaurus dipsosis dipter Diptera Dipteraceae dipteraceous dipterad dipteral dipteran dipterist dipterocarp Dipterocarpaceae dipterocarpaceous dipterocarpous Dipterocarpus dipterocecidium dipterological dipterologist dipterology dipteron dipteros dipterous Dipteryx diptote diptych Dipus dipware dipygus dipylon dipyre dipyrenous dipyridyl Dirca Dircaean dird dirdum dire direct directable directed directer direction directional directionally directionless directitude directive directively directiveness directivity directly directness Directoire director directoral directorate directorial directorially directorship directory directress directrices directrix direful direfully direfulness direly dirempt diremption direness direption dirge dirgeful dirgelike dirgeman dirgler dirhem Dirian Dirichletian dirigent dirigibility dirigible dirigomotor diriment dirk dirl dirndl dirt dirtbird dirtboard dirten dirtily dirtiness dirtplate dirty dis Disa disability disable disabled disablement disabusal disabuse disacceptance disaccharide disaccharose disaccommodate disaccommodation disaccord disaccordance disaccordant disaccustom disaccustomed disaccustomedness disacidify disacknowledge disacknowledgement disacquaint disacquaintance disadjust disadorn disadvance disadvantage disadvantageous disadvantageously disadvantageousness disadventure disadventurous disadvise disaffect disaffectation disaffected disaffectedly disaffectedness disaffection disaffectionate disaffiliate disaffiliation disaffirm disaffirmance disaffirmation disaffirmative disafforest disafforestation disafforestment disagglomeration disaggregate disaggregation disaggregative disagio disagree disagreeability disagreeable disagreeableness disagreeably disagreed disagreement disagreer disalicylide disalign disalignment disalike disallow disallowable disallowableness disallowance disally disamenity Disamis disanagrammatize disanalogous disangularize disanimal disanimate disanimation disannex disannexation disannul disannuller disannulment disanoint disanswerable disapostle disapparel disappear disappearance disappearer disappearing disappoint disappointed disappointedly disappointer disappointing disappointingly disappointingness disappointment disappreciate disappreciation disapprobation disapprobative disapprobatory disappropriate disappropriation disapprovable disapproval disapprove disapprover disapprovingly disaproned disarchbishop disarm disarmament disarmature disarmed disarmer disarming disarmingly disarrange disarrangement disarray disarticulate disarticulation disarticulator disasinate disasinize disassemble disassembly disassimilate disassimilation disassimilative disassociate disassociation disaster disastimeter disastrous disastrously disastrousness disattaint disattire disattune disauthenticate disauthorize disavow disavowable disavowal disavowedly disavower disavowment disawa disazo disbalance disbalancement disband disbandment disbar disbark disbarment disbelief disbelieve disbeliever disbelieving disbelievingly disbench disbenchment disbloom disbody disbosom disbowel disbrain disbranch disbud disbudder disburden disburdenment disbursable disburse disbursement disburser disburthen disbury disbutton disc discage discal discalceate discalced discanonization discanonize discanter discantus discapacitate discard discardable discarder discardment discarnate discarnation discase discastle discept disceptation disceptator discern discerner discernible discernibleness discernibly discerning discerningly discernment discerp discerpibility discerpible discerpibleness discerptibility discerptible discerptibleness discerption discharacter discharge dischargeable dischargee discharger discharging discharity discharm dischase Disciflorae discifloral disciform discigerous Discina discinct discinoid disciple disciplelike discipleship disciplinability disciplinable disciplinableness disciplinal disciplinant disciplinarian disciplinarianism disciplinarily disciplinary disciplinative disciplinatory discipline discipliner discipular discircumspection discission discitis disclaim disclaimant disclaimer disclamation disclamatory disclass disclassify disclike disclimax discloister disclose disclosed discloser disclosive disclosure discloud discoach discoactine discoblastic discoblastula discobolus discocarp discocarpium discocarpous discocephalous discodactyl discodactylous discogastrula discoglossid Discoglossidae discoglossoid discographical discography discohexaster discoid discoidal Discoidea Discoideae discolichen discolith discolor discolorate discoloration discolored discoloredness discolorization discolorment discolourization Discomedusae discomedusan discomedusoid discomfit discomfiter discomfiture discomfort discomfortable discomfortableness discomforting discomfortingly discommend discommendable discommendableness discommendably discommendation discommender discommode discommodious discommodiously discommodiousness discommodity discommon discommons discommunity discomorula discompliance discompose discomposed discomposedly discomposedness discomposing discomposingly discomposure discomycete Discomycetes discomycetous Disconanthae disconanthous disconcert disconcerted disconcertedly disconcertedness disconcerting disconcertingly disconcertingness disconcertion disconcertment disconcord disconduce disconducive Disconectae disconform disconformable disconformity discongruity disconjure disconnect disconnected disconnectedly disconnectedness disconnecter disconnection disconnective disconnectiveness disconnector disconsider disconsideration disconsolate disconsolately disconsolateness disconsolation disconsonancy disconsonant discontent discontented discontentedly discontentedness discontentful discontenting discontentive discontentment discontiguity discontiguous discontiguousness discontinuable discontinuance discontinuation discontinue discontinuee discontinuer discontinuity discontinuor discontinuous discontinuously discontinuousness disconula disconvenience disconvenient disconventicle discophile Discophora discophoran discophore discophorous discoplacenta discoplacental Discoplacentalia discoplacentalian discoplasm discopodous discord discordance discordancy discordant discordantly discordantness discordful Discordia discording discorporate discorrespondency discorrespondent discount discountable discountenance discountenancer discounter discouple discourage discourageable discouragement discourager discouraging discouragingly discouragingness discourse discourseless discourser discoursive discoursively discoursiveness discourteous discourteously discourteousness discourtesy discous discovenant discover discoverability discoverable discoverably discovered discoverer discovert discoverture discovery discreate discreation discredence discredit discreditability discreditable discreet discreetly discreetness discrepance discrepancy discrepant discrepantly discrepate discrepation discrested discrete discretely discreteness discretion discretional discretionally discretionarily discretionary discretive discretively discretiveness discriminability discriminable discriminal discriminant discriminantal discriminate discriminately discriminateness discriminating discriminatingly discrimination discriminational discriminative discriminatively discriminator discriminatory discrown disculpate disculpation disculpatory discumber discursative discursativeness discursify discursion discursive discursively discursiveness discursory discursus discurtain discus discuss discussable discussant discusser discussible discussion discussional discussionism discussionist discussive discussment discutable discutient disdain disdainable disdainer disdainful disdainfully disdainfulness disdainly disdeceive disdenominationalize disdiaclast disdiaclastic disdiapason disdiazo disdiplomatize disdodecahedroid disdub disease diseased diseasedly diseasedness diseaseful diseasefulness disecondary disedge disedification disedify diseducate diselder diselectrification diselectrify diselenide disematism disembargo disembark disembarkation disembarkment disembarrass disembarrassment disembattle disembed disembellish disembitter disembocation disembodiment disembody disembogue disemboguement disembosom disembowel disembowelment disembower disembroil disemburden diseme disemic disemplane disemploy disemployment disempower disenable disenablement disenact disenactment disenamor disenamour disenchain disenchant disenchanter disenchantingly disenchantment disenchantress disencharm disenclose disencumber disencumberment disencumbrance disendow disendower disendowment disenfranchise disenfranchisement disengage disengaged disengagedness disengagement disengirdle disenjoy disenjoyment disenmesh disennoble disennui disenshroud disenslave disensoul disensure disentail disentailment disentangle disentanglement disentangler disenthral disenthrall disenthrallment disenthralment disenthrone disenthronement disentitle disentomb disentombment disentrain disentrainment disentrammel disentrance disentrancement disentwine disenvelop disepalous disequalize disequalizer disequilibrate disequilibration disequilibrium disestablish disestablisher disestablishment disestablishmentarian disesteem disesteemer disestimation disexcommunicate disfaith disfame disfashion disfavor disfavorer disfeature disfeaturement disfellowship disfen disfiguration disfigurative disfigure disfigurement disfigurer disfiguringly disflesh disfoliage disforest disforestation disfranchise disfranchisement disfranchiser disfrequent disfriar disfrock disfurnish disfurnishment disgarland disgarnish disgarrison disgavel disgeneric disgenius disgig disglorify disglut disgood disgorge disgorgement disgorger disgospel disgown disgrace disgraceful disgracefully disgracefulness disgracement disgracer disgracious disgradation disgrade disgregate disgregation disgruntle disgruntlement disguisable disguisal disguise disguised disguisedly disguisedness disguiseless disguisement disguiser disguising disgulf disgust disgusted disgustedly disgustedness disguster disgustful disgustfully disgustfulness disgusting disgustingly disgustingness dish dishabilitate dishabilitation dishabille dishabituate dishallow dishallucination disharmonic disharmonical disharmonious disharmonism disharmonize disharmony dishboard dishcloth dishclout disheart dishearten disheartener disheartening dishearteningly disheartenment disheaven dished dishellenize dishelm disher disherent disherison disherit disheritment dishevel disheveled dishevelment dishexecontahedroid dishful Dishley dishlike dishling dishmaker dishmaking dishmonger dishome dishonest dishonestly dishonor dishonorable dishonorableness dishonorably dishonorary dishonorer dishorn dishorner dishorse dishouse dishpan dishpanful dishrag dishumanize dishwasher dishwashing dishwashings dishwater dishwatery dishwiper dishwiping disidentify disilane disilicane disilicate disilicic disilicid disilicide disillude disilluminate disillusion disillusionist disillusionize disillusionizer disillusionment disillusive disimagine disimbitter disimitate disimitation disimmure disimpark disimpassioned disimprison disimprisonment disimprove disimprovement disincarcerate disincarceration disincarnate disincarnation disinclination disincline disincorporate disincorporation disincrust disincrustant disincrustion disindividualize disinfect disinfectant disinfecter disinfection disinfective disinfector disinfest disinfestation disinfeudation disinflame disinflate disinflation disingenuity disingenuous disingenuously disingenuousness disinherison disinherit disinheritable disinheritance disinhume disinsulation disinsure disintegrable disintegrant disintegrate disintegration disintegrationist disintegrative disintegrator disintegratory disintegrity disintegrous disintensify disinter disinterest disinterested disinterestedly disinterestedness disinteresting disinterment disintertwine disintrench disintricate disinvagination disinvest disinvestiture disinvigorate disinvite disinvolve disjasked disject disjection disjoin disjoinable disjoint disjointed disjointedly disjointedness disjointly disjointure disjunct disjunction disjunctive disjunctively disjunctor disjuncture disjune disk diskelion diskless disklike dislaurel disleaf dislegitimate dislevelment dislicense dislikable dislike dislikelihood disliker disliking dislimn dislink dislip disload dislocability dislocable dislocate dislocated dislocatedly dislocatedness dislocation dislocator dislocatory dislodge dislodgeable dislodgement dislove disloyal disloyalist disloyally disloyalty disluster dismain dismal dismality dismalize dismally dismalness disman dismantle dismantlement dismantler dismarble dismark dismarket dismask dismast dismastment dismay dismayable dismayed dismayedness dismayful dismayfully dismayingly disme dismember dismembered dismemberer dismemberment dismembrate dismembrator disminion disminister dismiss dismissable dismissal dismissible dismissingly dismission dismissive dismissory dismoded dismount dismountable dismutation disna disnaturalization disnaturalize disnature disnest disnew disniche disnosed disnumber disobedience disobedient disobediently disobey disobeyal disobeyer disobligation disoblige disobliger disobliging disobligingly disobligingness disoccupation disoccupy disodic disodium disomatic disomatous disomic disomus disoperculate disorb disorchard disordained disorder disordered disorderedly disorderedness disorderer disorderliness disorderly disordinated disordination disorganic disorganization disorganize disorganizer disorient disorientate disorientation disown disownable disownment disoxygenate disoxygenation disozonize dispapalize disparage disparageable disparagement disparager disparaging disparagingly disparate disparately disparateness disparation disparity dispark dispart dispartment dispassionate dispassionately dispassionateness dispassioned dispatch dispatcher dispatchful dispatriated dispauper dispauperize dispeace dispeaceful dispel dispeller dispend dispender dispendious dispendiously dispenditure dispensability dispensable dispensableness dispensary dispensate dispensation dispensational dispensative dispensatively dispensator dispensatorily dispensatory dispensatress dispensatrix dispense dispenser dispensingly dispeople dispeoplement dispeopler dispergate dispergation dispergator dispericraniate disperiwig dispermic dispermous dispermy dispersal dispersant disperse dispersed dispersedly dispersedness dispersement disperser dispersibility dispersible dispersion dispersity dispersive dispersively dispersiveness dispersoid dispersoidological dispersoidology dispersonalize dispersonate dispersonification dispersonify dispetal disphenoid dispiece dispireme dispirit dispirited dispiritedly dispiritedness dispiritingly dispiritment dispiteous dispiteously dispiteousness displace displaceability displaceable displacement displacency displacer displant display displayable displayed displayer displease displeased displeasedly displeaser displeasing displeasingly displeasingness displeasurable displeasurably displeasure displeasurement displenish displicency displume displuviate dispondaic dispondee dispone disponee disponent disponer dispope dispopularize disporous disport disportive disportment Disporum disposability disposable disposableness disposal dispose disposed disposedly disposedness disposer disposingly disposition dispositional dispositioned dispositive dispositively dispossess dispossession dispossessor dispossessory dispost disposure dispowder dispractice dispraise dispraiser dispraisingly dispread dispreader disprejudice disprepare disprince disprison disprivacied disprivilege disprize disprobabilization disprobabilize disprobative dispromise disproof disproportion disproportionable disproportionableness disproportionably disproportional disproportionality disproportionally disproportionalness disproportionate disproportionately disproportionateness disproportionation disprovable disproval disprove disprovement disproven disprover dispulp dispunct dispunishable dispunitive disputability disputable disputableness disputably disputant disputation disputatious disputatiously disputatiousness disputative disputatively disputativeness disputator dispute disputeless disputer disqualification disqualify disquantity disquiet disquieted disquietedly disquietedness disquieten disquieter disquieting disquietingly disquietly disquietness disquietude disquiparancy disquiparant disquiparation disquisite disquisition disquisitional disquisitionary disquisitive disquisitively disquisitor disquisitorial disquisitory disquixote disrank disrate disrealize disrecommendation disregard disregardable disregardance disregardant disregarder disregardful disregardfully disregardfulness disrelated disrelation disrelish disrelishable disremember disrepair disreputability disreputable disreputableness disreputably disreputation disrepute disrespect disrespecter disrespectful disrespectfully disrespectfulness disrestore disring disrobe disrobement disrober disroof disroost disroot disrudder disrump disrupt disruptability disruptable disrupter disruption disruptionist disruptive disruptively disruptiveness disruptment disruptor disrupture diss dissatisfaction dissatisfactoriness dissatisfactory dissatisfied dissatisfiedly dissatisfiedness dissatisfy dissaturate disscepter disseat dissect dissected dissectible dissecting dissection dissectional dissective dissector disseize disseizee disseizin disseizor disseizoress disselboom dissemblance dissemble dissembler dissemblingly dissembly dissemilative disseminate dissemination disseminative disseminator disseminule dissension dissensualize dissent dissentaneous dissentaneousness dissenter dissenterism dissentience dissentiency dissentient dissenting dissentingly dissentious dissentiously dissentism dissentment dissepiment dissepimental dissert dissertate dissertation dissertational dissertationist dissertative dissertator disserve disservice disserviceable disserviceableness disserviceably dissettlement dissever disseverance disseverment disshadow dissheathe disshroud dissidence dissident dissidently dissight dissightly dissiliency dissilient dissimilar dissimilarity dissimilarly dissimilars dissimilate dissimilation dissimilatory dissimile dissimilitude dissimulate dissimulation dissimulative dissimulator dissimule dissimuler dissipable dissipate dissipated dissipatedly dissipatedness dissipater dissipation dissipative dissipativity dissipator dissociability dissociable dissociableness dissocial dissociality dissocialize dissociant dissociate dissociation dissociative dissoconch dissogeny dissogony dissolubility dissoluble dissolubleness dissolute dissolutely dissoluteness dissolution dissolutional dissolutionism dissolutionist dissolutive dissolvable dissolvableness dissolve dissolveability dissolvent dissolver dissolving dissolvingly dissonance dissonancy dissonant dissonantly dissonous dissoul dissuade dissuader dissuasion dissuasive dissuasively dissuasiveness dissuasory dissuit dissuitable dissuited dissyllabic dissyllabification dissyllabify dissyllabism dissyllabize dissyllable dissymmetric dissymmetrical dissymmetrically dissymmetry dissympathize dissympathy distad distaff distain distal distale distally distalwards distance distanceless distancy distannic distant distantly distantness distaste distasted distasteful distastefully distastefulness distater distemonous distemper distemperature distempered distemperedly distemperedness distemperer distenant distend distendedly distender distensibility distensible distensive distent distention disthene disthrall disthrone distich Distichlis distichous distichously distill distillable distillage distilland distillate distillation distillatory distilled distiller distillery distilling distillmint distinct distinctify distinction distinctional distinctionless distinctive distinctively distinctiveness distinctly distinctness distingue distinguish distinguishability distinguishable distinguishableness distinguishably distinguished distinguishedly distinguisher distinguishing distinguishingly distinguishment distoclusion Distoma Distomatidae distomatosis distomatous distome distomian distomiasis Distomidae Distomum distort distorted distortedly distortedness distorter distortion distortional distortionist distortionless distortive distract distracted distractedly distractedness distracter distractibility distractible distractingly distraction distractive distractively distrain distrainable distrainee distrainer distrainment distrainor distraint distrait distraite distraught distress distressed distressedly distressedness distressful distressfully distressfulness distressing distressingly distributable distributary distribute distributed distributedly distributee distributer distribution distributional distributionist distributival distributive distributively distributiveness distributor distributress district distrouser distrust distruster distrustful distrustfully distrustfulness distrustingly distune disturb disturbance disturbative disturbed disturbedly disturber disturbing disturbingly disturn disturnpike disubstituted disubstitution disulfonic disulfuric disulphate disulphide disulphonate disulphone disulphonic disulphoxide disulphuret disulphuric disuniform disuniformity disunify disunion disunionism disunionist disunite disuniter disunity disusage disusance disuse disutility disutilize disvaluation disvalue disvertebrate disvisage disvoice disvulnerability diswarren diswench diswood disworth disyllabic disyllable disyoke dit dita dital ditch ditchbank ditchbur ditchdigger ditchdown ditcher ditchless ditchside ditchwater dite diter diterpene ditertiary ditetragonal dithalous dithecal ditheism ditheist ditheistic ditheistical dithematic dither dithery dithiobenzoic dithioglycol dithioic dithion dithionate dithionic dithionite dithionous dithymol dithyramb dithyrambic dithyrambically Dithyrambos Dithyrambus ditokous ditolyl ditone ditrematous ditremid Ditremidae ditrichotomous ditriglyph ditriglyphic ditrigonal ditrigonally Ditrocha ditrochean ditrochee ditrochous ditroite dittamy dittander dittany dittay dittied ditto dittogram dittograph dittographic dittography dittology ditty diumvirate diuranate diureide diuresis diuretic diuretically diureticalness Diurna diurnal diurnally diurnalness diurnation diurne diurnule diuturnal diuturnity div diva divagate divagation divalence divalent divan divariant divaricate divaricately divaricating divaricatingly divarication divaricator divata dive divekeeper divel divellent divellicate diver diverge divergement divergence divergency divergent divergently diverging divergingly divers diverse diversely diverseness diversicolored diversifiability diversifiable diversification diversified diversifier diversiflorate diversiflorous diversifoliate diversifolious diversiform diversify diversion diversional diversionary diversipedate diversisporous diversity diversly diversory divert divertedly diverter divertibility divertible diverticle diverticular diverticulate diverticulitis diverticulosis diverticulum diverting divertingly divertingness divertisement divertive divertor divest divestible divestitive divestiture divestment divesture dividable dividableness divide divided dividedly dividedness dividend divider dividing dividingly dividual dividualism dividually dividuity dividuous divinable divinail divination divinator divinatory divine divinely divineness diviner divineress diving divinify divining diviningly divinity divinityship divinization divinize divinyl divisibility divisible divisibleness divisibly division divisional divisionally divisionary divisionism divisionist divisionistic divisive divisively divisiveness divisor divisorial divisory divisural divorce divorceable divorcee divorcement divorcer divorcible divorcive divot divoto divulgate divulgater divulgation divulgatory divulge divulgement divulgence divulger divulse divulsion divulsive divulsor divus Divvers divvy diwata dixenite Dixie dixie Dixiecrat dixit dixy dizain dizen dizenment dizoic dizygotic dizzard dizzily dizziness dizzy Djagatay djasakid djave djehad djerib djersa Djuka do doab doable doarium doat doated doater doating doatish Dob dob dobbed dobber dobbin dobbing dobby dobe dobla doblon dobra dobrao dobson doby doc docent docentship Docetae Docetic Docetically Docetism Docetist Docetistic Docetize dochmiac dochmiacal dochmiasis dochmius docibility docible docibleness docile docilely docility docimasia docimastic docimastical docimasy docimology docity dock dockage docken docker docket dockhead dockhouse dockization dockize dockland dockmackie dockman dockmaster dockside dockyard dockyardman docmac Docoglossa docoglossan docoglossate docosane doctor doctoral doctorally doctorate doctorbird doctordom doctoress doctorfish doctorhood doctorial doctorially doctorization doctorize doctorless doctorlike doctorly doctorship doctress doctrinaire doctrinairism doctrinal doctrinalism doctrinalist doctrinality doctrinally doctrinarian doctrinarianism doctrinarily doctrinarity doctrinary doctrinate doctrine doctrinism doctrinist doctrinization doctrinize doctrix document documental documentalist documentarily documentary documentation documentize dod dodd doddart dodded dodder doddered dodderer doddering doddery doddie dodding doddle doddy doddypoll Dode dodecade dodecadrachm dodecafid dodecagon dodecagonal dodecahedral dodecahedric dodecahedron dodecahydrate dodecahydrated dodecamerous dodecane Dodecanesian dodecanoic dodecant dodecapartite dodecapetalous dodecarch dodecarchy dodecasemic dodecastyle dodecastylos dodecasyllabic dodecasyllable dodecatemory Dodecatheon dodecatoic dodecatyl dodecatylic dodecuplet dodecyl dodecylene dodecylic dodge dodgeful dodger dodgery dodgily dodginess dodgy dodkin dodlet dodman dodo dodoism Dodona Dodonaea Dodonaeaceae Dodonaean Dodonean Dodonian dodrans doe doebird Doedicurus Doeg doeglic doegling doer does doeskin doesnt doest doff doffer doftberry dog dogal dogate dogbane Dogberry dogberry Dogberrydom Dogberryism dogbite dogblow dogboat dogbolt dogbush dogcart dogcatcher dogdom doge dogedom dogeless dogeship dogface dogfall dogfight dogfish dogfoot dogged doggedly doggedness dogger doggerel doggereler doggerelism doggerelist doggerelize doggerelizer doggery doggess doggish doggishly doggishness doggo doggone doggoned doggrel doggrelize doggy doghead doghearted doghole doghood doghouse dogie dogless doglike dogly dogma dogman dogmata dogmatic dogmatical dogmatically dogmaticalness dogmatician dogmatics dogmatism dogmatist dogmatization dogmatize dogmatizer dogmouth dogplate dogproof Dogra Dogrib dogs dogship dogshore dogskin dogsleep dogstone dogtail dogtie dogtooth dogtoothing dogtrick dogtrot dogvane dogwatch dogwood dogy doigt doiled doily doina doing doings doit doited doitkin doitrified doke Doketic Doketism dokhma dokimastic Dokmarok Doko Dol dola dolabra dolabrate dolabriform dolcan dolcian dolciano dolcino doldrum doldrums dole dolefish doleful dolefully dolefulness dolefuls dolent dolently dolerite doleritic dolerophanite dolesman dolesome dolesomely dolesomeness doless doli dolia dolichoblond dolichocephal dolichocephali dolichocephalic dolichocephalism dolichocephalize dolichocephalous dolichocephaly dolichocercic dolichocnemic dolichocranial dolichofacial Dolichoglossus dolichohieric Dolicholus dolichopellic dolichopodous dolichoprosopic Dolichopsyllidae Dolichos dolichos dolichosaur Dolichosauri Dolichosauria Dolichosaurus Dolichosoma dolichostylous dolichotmema dolichuric dolichurus Doliidae dolina doline dolioform Doliolidae Doliolum dolium doll dollar dollarbird dollardee dollardom dollarfish dollarleaf dollbeer dolldom dollface dollfish dollhood dollhouse dollier dolliness dollish dollishly dollishness dollmaker dollmaking dollop dollship dolly dollyman dollyway dolman dolmen dolmenic Dolomedes dolomite dolomitic dolomitization dolomitize dolomization dolomize dolor Dolores doloriferous dolorific dolorifuge dolorous dolorously dolorousness dolose dolous Dolph dolphin dolphinlike Dolphus dolt dolthead doltish doltishly doltishness dom domain domainal domal domanial domatium domatophobia domba Dombeya Domdaniel dome domelike doment domer domesday domestic domesticable domesticality domestically domesticate domestication domesticative domesticator domesticity domesticize domett domeykite domic domical domically Domicella domicile domicilement domiciliar domiciliary domiciliate domiciliation dominance dominancy dominant dominantly dominate dominated dominatingly domination dominative dominator domine domineer domineerer domineering domineeringly domineeringness dominial Dominic dominical dominicale Dominican dominie dominion dominionism dominionist Dominique dominium domino dominus domitable domite Domitian domitic domn domnei domoid dompt domy Don don donable Donacidae donaciform Donald Donar donary donatary donate donated donatee Donatiaceae donation Donatism Donatist Donatistic Donatistical donative donatively donator donatory donatress donax doncella Dondia done donee Donet doney dong donga Dongola Dongolese dongon Donia donjon donkey donkeyback donkeyish donkeyism donkeyman donkeywork Donmeh donna donnered donnert donnish donnishness donnism donnot donor donorship donought donship donsie dont donum doob doocot doodab doodad Doodia doodle doodlebug doodler doodlesack doohickey doohickus doohinkey doohinkus dooja dook dooket dookit dool doolee dooley dooli doolie dooly doom doomage doombook doomer doomful dooms doomsday doomsman doomstead doon door doorba doorbell doorboy doorbrand doorcase doorcheek doored doorframe doorhead doorjamb doorkeeper doorknob doorless doorlike doormaid doormaker doormaking doorman doornail doorplate doorpost doorsill doorstead doorstep doorstone doorstop doorward doorway doorweed doorwise dooryard dop dopa dopamelanin dopaoxidase dopatta dope dopebook doper dopester dopey doppelkummel Dopper dopper doppia Doppler dopplerite Dor dor Dora dorab dorad Doradidae dorado doraphobia Dorask Doraskean dorbeetle Dorcas dorcastry Dorcatherium Dorcopsis doree dorestane dorhawk doria Dorian Doric Dorical Doricism Doricize Dorididae Dorine Doris Dorism Dorize dorje Dorking dorlach dorlot dorm dormancy dormant dormer dormered dormie dormient dormilona dormition dormitive dormitory dormouse dormy dorn dorneck dornic dornick dornock Dorobo Doronicum Dorosoma Dorothea Dorothy dorp dorsabdominal dorsabdominally dorsad dorsal dorsale dorsalgia dorsalis dorsally dorsalmost dorsalward dorsalwards dorsel dorser dorsibranch Dorsibranchiata dorsibranchiate dorsicollar dorsicolumn dorsicommissure dorsicornu dorsiduct dorsiferous dorsifixed dorsiflex dorsiflexion dorsiflexor dorsigrade dorsilateral dorsilumbar dorsimedian dorsimesal dorsimeson dorsiparous dorsispinal dorsiventral dorsiventrality dorsiventrally dorsoabdominal dorsoanterior dorsoapical Dorsobranchiata dorsocaudad dorsocaudal dorsocentral dorsocephalad dorsocephalic dorsocervical dorsocervically dorsodynia dorsoepitrochlear dorsointercostal dorsointestinal dorsolateral dorsolumbar dorsomedial dorsomedian dorsomesal dorsonasal dorsonuchal dorsopleural dorsoposteriad dorsoposterior dorsoradial dorsosacral dorsoscapular dorsosternal dorsothoracic dorsoventrad dorsoventral dorsoventrally Dorstenia dorsulum dorsum dorsumbonal dorter dortiness dortiship dorts dorty doruck dory Doryanthes Dorylinae doryphorus dos dosa dosadh dosage dose doser dosimeter dosimetric dosimetrician dosimetrist dosimetry Dosinia dosiology dosis Dositheans dosology doss dossal dossel dosser dosseret dossier dossil dossman Dot dot dotage dotal dotard dotardism dotardly dotardy dotate dotation dotchin dote doted doter Dothideacea dothideaceous Dothideales Dothidella dothienenteritis Dothiorella dotiness doting dotingly dotingness dotish dotishness dotkin dotless dotlike Doto Dotonidae dotriacontane dotted dotter dotterel dottily dottiness dotting dottle dottler Dottore Dotty dotty doty douar double doubled doubledamn doubleganger doublegear doublehanded doublehandedly doublehandedness doublehatching doublehearted doubleheartedness doublehorned doubleleaf doublelunged doubleness doubler doublet doubleted doubleton doubletone doubletree doublets doubling doubloon doubly doubt doubtable doubtably doubtedly doubter doubtful doubtfully doubtfulness doubting doubtingly doubtingness doubtless doubtlessly doubtlessness doubtmonger doubtous doubtsome douc douce doucely douceness doucet douche doucin doucine doudle dough doughbird doughboy doughface doughfaceism doughfoot doughhead doughiness doughlike doughmaker doughmaking doughman doughnut dought doughtily doughtiness doughty doughy doulocracy doum doundake doup douping dour dourine dourly dourness douse douser dout douter doutous douzepers douzieme dove dovecot doveflower dovefoot dovehouse dovekey dovekie dovelet dovelike doveling dover dovetail dovetailed dovetailer dovetailwise doveweed dovewood dovish Dovyalis dow dowable dowager dowagerism dowcet dowd dowdily dowdiness dowdy dowdyish dowdyism dowed dowel dower doweral doweress dowerless dowery dowf dowie Dowieism Dowieite dowily dowiness dowitch dowitcher dowl dowlas dowless down downbear downbeard downbeat downby downcast downcastly downcastness downcome downcomer downcoming downcry downcurved downcut downdale downdraft downer downface downfall downfallen downfalling downfeed downflow downfold downfolded downgate downgone downgrade downgrowth downhanging downhaul downheaded downhearted downheartedly downheartedness downhill downily downiness Downing Downingia downland downless downlie downlier downligging downlike downline downlooked downlooker downlying downmost downness downpour downpouring downright downrightly downrightness downrush downrushing downset downshare downshore downside downsinking downsitting downsliding downslip downslope downsman downspout downstage downstairs downstate downstater downstream downstreet downstroke downswing downtake downthrow downthrown downthrust Downton downtown downtrampling downtreading downtrend downtrodden downtroddenness downturn downward downwardly downwardness downway downweed downweigh downweight downweighted downwind downwith downy dowp dowry dowsabel dowse dowser dowset doxa Doxantha doxastic doxasticon doxographer doxographical doxography doxological doxologically doxologize doxology doxy doze dozed dozen dozener dozenth dozer dozily doziness dozy dozzled drab Draba drabbet drabbish drabble drabbler drabbletail drabbletailed drabby drably drabness Dracaena Dracaenaceae drachm drachma drachmae drachmai drachmal dracma Draco Dracocephalum Draconian Draconianism Draconic draconic Draconically Draconid Draconis Draconism draconites draconitic dracontian dracontiasis dracontic dracontine dracontites Dracontium dracunculus draegerman draff draffman draffy draft draftage draftee drafter draftily draftiness drafting draftman draftmanship draftproof draftsman draftsmanship draftswoman draftswomanship draftwoman drafty drag dragade dragbar dragbolt dragged dragger draggily dragginess dragging draggingly draggle draggletail draggletailed draggletailedly draggletailedness draggly draggy draghound dragline dragman dragnet drago dragoman dragomanate dragomanic dragomanish dragon dragonesque dragoness dragonet dragonfish dragonfly dragonhead dragonhood dragonish dragonism dragonize dragonkind dragonlike dragonnade dragonroot dragontail dragonwort dragoon dragoonable dragoonade dragoonage dragooner dragrope dragsaw dragsawing dragsman dragstaff drail drain drainable drainage drainboard draine drained drainer drainerman drainless drainman drainpipe draintile draisine drake drakestone drakonite dram drama dramalogue Dramamine dramatic dramatical dramatically dramaticism dramatics dramaticule dramatism dramatist dramatizable dramatization dramatize dramatizer dramaturge dramaturgic dramaturgical dramaturgist dramaturgy dramm drammage dramme drammed drammer dramming drammock dramseller dramshop drang drank drant drapable Draparnaldia drape drapeable draper draperess draperied drapery drapetomania drapping drassid Drassidae drastic drastically drat dratchell drate dratted dratting draught draughtboard draughthouse draughtman draughtmanship draughts draughtsman draughtsmanship draughtswoman draughtswomanship Dravida Dravidian Dravidic dravya draw drawable drawarm drawback drawbar drawbeam drawbench drawboard drawbolt drawbore drawboy drawbridge Drawcansir drawcut drawdown drawee drawer drawers drawfile drawfiling drawgate drawgear drawglove drawhead drawhorse drawing drawk drawknife drawknot drawl drawlatch drawler drawling drawlingly drawlingness drawlink drawloom drawly drawn drawnet drawoff drawout drawplate drawpoint drawrod drawshave drawsheet drawspan drawspring drawstop drawstring drawtongs drawtube dray drayage drayman drazel dread dreadable dreader dreadful dreadfully dreadfulness dreadingly dreadless dreadlessly dreadlessness dreadly dreadness dreadnought dream dreamage dreamer dreamery dreamful dreamfully dreamfulness dreamhole dreamily dreaminess dreamingly dreamish dreamland dreamless dreamlessly dreamlessness dreamlet dreamlike dreamlit dreamlore dreamsily dreamsiness dreamsy dreamt dreamtide dreamwhile dreamwise dreamworld dreamy drear drearfully drearily dreariment dreariness drearisome drearly drearness dreary dredge dredgeful dredger dredging dree dreep dreepiness dreepy dreg dreggily dregginess dreggish dreggy dregless dregs dreiling Dreissensia dreissiger drench drencher drenching drenchingly dreng drengage Drepanaspis Drepanidae Drepanididae drepaniform Drepanis drepanium drepanoid Dreparnaudia dress dressage dressed dresser dressership dressily dressiness dressing dressline dressmaker dressmakership dressmakery dressmaking dressy drest drew drewite Dreyfusism Dreyfusist drias drib dribble dribblement dribbler driblet driddle dried drier drierman driest drift driftage driftbolt drifter drifting driftingly driftland driftless driftlessness driftlet driftman driftpiece driftpin driftway driftweed driftwind driftwood drifty drightin drill driller drillet drilling drillman drillmaster drillstock Drimys dringle drink drinkability drinkable drinkableness drinkably drinker drinking drinkless drinkproof drinn drip dripper dripping dripple dripproof drippy dripstick dripstone drisheen drisk drivable drivage drive driveaway driveboat drivebolt drivehead drivel driveler drivelingly driven drivepipe driver driverless drivership drivescrew driveway drivewell driving drivingly drizzle drizzly drochuil droddum drofland drogh drogher drogherman drogue droit droitsman droitural droiturel Drokpa droll drollery drollingly drollish drollishness drollist drollness drolly Dromaeognathae dromaeognathism dromaeognathous Dromaeus drome dromedarian dromedarist dromedary drometer Dromiacea dromic Dromiceiidae Dromiceius Dromicia dromograph dromomania dromometer dromond Dromornis dromos dromotropic drona dronage drone dronepipe droner drongo droningly dronish dronishly dronishness dronkgrass drony drool droop drooper drooping droopingly droopingness droopt droopy drop dropberry dropcloth dropflower drophead droplet droplight droplike dropling dropman dropout dropper dropping droppingly droppy dropseed dropsical dropsically dropsicalness dropsied dropsy dropsywort dropt dropwise dropworm dropwort Droschken Drosera Droseraceae droseraceous droshky drosky drosograph drosometer Drosophila Drosophilidae Drosophyllum dross drossel drosser drossiness drossless drossy drostdy droud drought droughtiness droughty drouk drove drover drovy drow drown drowner drowningly drowse drowsily drowsiness drowsy drub drubber drubbing drubbly drucken drudge drudger drudgery drudgingly drudgism druery drug drugeteria drugger druggery drugget druggeting druggist druggister druggy drugless drugman drugshop drugstore druid druidess druidic druidical druidism druidry druith Drukpa drum drumbeat drumble drumbledore drumbler drumfire drumfish drumhead drumheads drumlike drumlin drumline drumlinoid drumloid drumloidal drumly drummer drumming drummy drumskin drumstick drumwood drung drungar drunk drunkard drunken drunkenly drunkenness drunkensome drunkenwise drunkery Drupa Drupaceae drupaceous drupal drupe drupel drupelet drupeole drupetum drupiferous Druse druse Drusean Drusedom drusy druxiness druxy dry dryad dryadetum dryadic dryas dryasdust drybeard drybrained drycoal Drydenian Drydenism dryfoot drygoodsman dryhouse drying dryish dryly Drynaria dryness Dryobalanops Dryope Dryopes Dryophyllum Dryopians dryopithecid Dryopithecinae dryopithecine Dryopithecus Dryops Dryopteris dryopteroid drysalter drysaltery dryster dryth dryworker Dschubba duad duadic dual Duala duali dualin dualism dualist dualistic dualistically duality dualization dualize dually Dualmutef dualogue duarch duarchy dub dubash dubb dubba dubbah dubbeltje dubber dubbing dubby Dubhe Dubhgall dubiety dubiocrystalline dubiosity dubious dubiously dubiousness dubitable dubitably dubitancy dubitant dubitate dubitatingly dubitation dubitative dubitatively Duboisia duboisin duboisine Dubonnet dubs ducal ducally ducamara ducape ducat ducato ducatoon ducdame duces Duchesnea Duchess duchess duchesse duchesslike duchy duck duckbill duckblind duckboard duckboat ducker duckery duckfoot duckhearted duckhood duckhouse duckhunting duckie ducking duckling ducklingship duckmeat duckpin duckpond duckstone duckweed duckwife duckwing Duco duct ducted ductibility ductible ductile ductilely ductileness ductilimeter ductility ductilize duction ductless ductor ductule Ducula Duculinae dud dudaim dudder duddery duddies dude dudeen dudgeon dudine dudish dudishness dudism dudler dudley Dudleya dudleyite dudman due duel dueler dueling duelist duelistic duello dueness duenna duennadom duennaship duer Duessa duet duettist duff duffadar duffel duffer dufferdom duffing dufoil dufrenite dufrenoysite dufter dufterdar duftery dug dugal dugdug duggler dugong Dugongidae dugout dugway duhat Duhr duiker duikerbok duim Duit duit dujan duke dukedom dukeling dukely dukery dukeship dukhn dukker dukkeripen Dulanganes Dulat dulbert dulcet dulcetly dulcetness dulcian dulciana dulcification dulcifluous dulcify dulcigenic dulcimer Dulcin Dulcinea Dulcinist dulcitol dulcitude dulcose duledge duler dulia dull dullard dullardism dullardness dullbrained duller dullery dullhead dullhearted dullification dullify dullish dullity dullness dullpate dullsome dully dulosis dulotic dulse dulseman dult dultie dulwilly duly dum duma dumaist dumb dumba dumbbell dumbbeller dumbcow dumbfounder dumbfounderment dumbhead dumbledore dumbly dumbness dumdum dumetose dumfound dumfounder dumfounderment dummel dummered dumminess dummy dummyism dummyweed Dumontia Dumontiaceae dumontite dumortierite dumose dumosity dump dumpage dumpcart dumper dumpily dumpiness dumping dumpish dumpishly dumpishness dumple dumpling dumpoke dumpy dumsola dun dunair dunal dunbird Duncan dunce duncedom duncehood duncery dunch Dunciad duncical duncify duncish duncishly duncishness dundasite dunder dunderhead dunderheaded dunderheadedness dunderpate dune dunelike dunfish dung Dungan dungannonite dungaree dungbeck dungbird dungbred dungeon dungeoner dungeonlike dunger dunghill dunghilly dungol dungon dungy dungyard dunite dunk dunkadoo Dunkard Dunker dunker Dunkirk Dunkirker Dunlap dunlin Dunlop dunnage dunne dunner dunness dunnish dunnite dunnock dunny dunpickle Duns dunst dunstable dunt duntle duny dunziekte duo duocosane duodecahedral duodecahedron duodecane duodecennial duodecillion duodecimal duodecimality duodecimally duodecimfid duodecimo duodecimole duodecuple duodena duodenal duodenary duodenate duodenation duodene duodenectomy duodenitis duodenocholangitis duodenocholecystostomy duodenocholedochotomy duodenocystostomy duodenoenterostomy duodenogram duodenojejunal duodenojejunostomy duodenopancreatectomy duodenoscopy duodenostomy duodenotomy duodenum duodrama duograph duogravure duole duoliteral duologue duomachy duopod duopolistic duopoly duopsonistic duopsony duosecant duotone duotriacontane duotype dup dupability dupable dupe dupedom duper dupery dupion dupla duplation duple duplet duplex duplexity duplicability duplicable duplicand duplicate duplication duplicative duplicator duplicature duplicia duplicident Duplicidentata duplicidentate duplicipennate duplicitas duplicity duplification duplify duplone dupondius duppy dura durability durable durableness durably durain dural Duralumin duramatral duramen durance Durandarte durangite Durango Durani durant Duranta duraplasty duraquara duraspinalis duration durational durationless durative durax durbachite Durban durbar durdenite dure durene durenol duress duressor durgan Durham durian duridine Durindana during duringly Durio durity durmast durn duro Duroc durometer duroquinone durra durrie durrin durry durst durukuli durwaun duryl Duryodhana Durzada dusack duscle dush dusio dusk dusken duskily duskiness duskingtide duskish duskishly duskishness duskly duskness dusky dust dustbin dustbox dustcloth dustee duster dusterman dustfall dustily dustiness dusting dustless dustlessness dustman dustpan dustproof dustuck dustwoman dusty dustyfoot Dusun Dutch dutch Dutcher Dutchify Dutchman Dutchy duteous duteously duteousness dutiability dutiable dutied dutiful dutifully dutifulness dutra duty dutymonger duumvir duumviral duumvirate duvet duvetyn dux duyker dvaita dvandva dwale dwalm Dwamish dwang dwarf dwarfish dwarfishly dwarfishness dwarfism dwarfling dwarfness dwarfy dwayberry dwell dwelled dweller dwelling dwelt dwindle dwindlement dwine Dwyka dyad dyadic Dyak dyakisdodecahedron Dyakish dyarchic dyarchical dyarchy Dyas Dyassic dyaster Dyaus dyce dye dyeable dyehouse dyeing dyeleaves dyemaker dyemaking dyer dyester dyestuff dyeware dyeweed dyewood dygogram dying dyingly dyingness dyke dykehopper dyker dykereeve dynagraph dynameter dynametric dynametrical dynamic dynamical dynamically dynamics dynamis dynamism dynamist dynamistic dynamitard dynamite dynamiter dynamitic dynamitical dynamitically dynamiting dynamitish dynamitism dynamitist dynamization dynamize dynamo dynamoelectric dynamoelectrical dynamogenesis dynamogenic dynamogenous dynamogenously dynamogeny dynamometamorphic dynamometamorphism dynamometamorphosed dynamometer dynamometric dynamometrical dynamometry dynamomorphic dynamoneure dynamophone dynamostatic dynamotor dynast Dynastes dynastical dynastically dynasticism dynastid dynastidan Dynastides Dynastinae dynasty dynatron dyne dyophone Dyophysite Dyophysitic Dyophysitical Dyophysitism dyotheism Dyothelete Dyotheletian Dyotheletic Dyotheletical Dyotheletism Dyothelism dyphone dysacousia dysacousis dysanalyte dysaphia dysarthria dysarthric dysarthrosis dysbulia dysbulic dyschiria dyschroa dyschroia dyschromatopsia dyschromatoptic dyschronous dyscrasia dyscrasial dyscrasic dyscrasite dyscratic dyscrystalline dysenteric dysenterical dysentery dysepulotic dysepulotical dyserethisia dysergasia dysergia dysesthesia dysesthetic dysfunction dysgenesic dysgenesis dysgenetic dysgenic dysgenical dysgenics dysgeogenous dysgnosia dysgraphia dysidrosis dyskeratosis dyskinesia dyskinetic dyslalia dyslexia dyslogia dyslogistic dyslogistically dyslogy dysluite dyslysin dysmenorrhea dysmenorrheal dysmerism dysmeristic dysmerogenesis dysmerogenetic dysmeromorph dysmeromorphic dysmetria dysmnesia dysmorphism dysmorphophobia dysneuria dysnomy dysodile dysodontiasis dysorexia dysorexy dysoxidation dysoxidizable dysoxidize dyspathetic dyspathy dyspepsia dyspepsy dyspeptic dyspeptical dyspeptically dysphagia dysphagic dysphasia dysphasic dysphemia dysphonia dysphonic dysphoria dysphoric dysphotic dysphrasia dysphrenia dyspituitarism dysplasia dysplastic dyspnea dyspneal dyspneic dyspnoic dysprosia dysprosium dysraphia dyssnite Dyssodia dysspermatism dyssynergia dyssystole dystaxia dystectic dysteleological dysteleologist dysteleology dysthyroidism dystocia dystocial dystome dystomic dystomous dystrophia dystrophic dystrophy dysuria dysuric dysyntribite dytiscid Dytiscidae Dytiscus dzeren Dzungar E e ea each eachwhere eager eagerly eagerness eagle eaglelike eagless eaglestone eaglet eaglewood eagre ean ear earache earbob earcap earcockle eardrop eardropper eardrum eared earflower earful earhole earing earjewel earl earlap earldom earless earlet earlike earliness earlish earlock earlship early earmark earn earner earnest earnestly earnestness earnful earning earnings earphone earpick earpiece earplug earreach earring earringed earscrew earshot earsore earsplitting eartab earth earthboard earthborn earthbred earthdrake earthed earthen earthenhearted earthenware earthfall earthfast earthgall earthgrubber earthian earthiness earthkin earthless earthlight earthlike earthliness earthling earthly earthmaker earthmaking earthnut earthpea earthquake earthquaked earthquaken earthquaking Earthshaker earthshine earthshock earthslide earthsmoke earthstar earthtongue earthwall earthward earthwards earthwork earthworm earthy earwax earwig earwigginess earwiggy earwitness earworm earwort ease easeful easefully easefulness easel easeless easement easer easier easiest easily easiness easing east eastabout eastbound Easter easter easterling easterly Eastern eastern easterner Easternism Easternly easternmost Eastertide easting Eastlake eastland eastmost Eastre eastward eastwardly easy easygoing easygoingness eat eatability eatable eatableness eatage Eatanswill eatberry eaten eater eatery eating eats eave eaved eavedrop eaver eaves eavesdrop eavesdropper eavesdropping ebb ebbman Eben Ebenaceae ebenaceous Ebenales ebeneous Ebenezer Eberthella Ebionism Ebionite Ebionitic Ebionitism Ebionize Eboe eboe ebon ebonist ebonite ebonize ebony ebracteate ebracteolate ebriate ebriety ebriosity ebrious ebriously ebullate ebullience ebulliency ebullient ebulliently ebulliometer ebullioscope ebullioscopic ebullioscopy ebullition ebullitive ebulus eburated eburine Eburna eburnated eburnation eburnean eburneoid eburneous eburnian eburnification ecad ecalcarate ecanda ecardinal Ecardines ecarinate ecarte Ecaudata ecaudate Ecballium ecbatic ecblastesis ecbole ecbolic Ecca eccaleobion eccentrate eccentric eccentrical eccentrically eccentricity eccentring eccentrometer ecchondroma ecchondrosis ecchondrotome ecchymoma ecchymose ecchymosis ecclesia ecclesial ecclesiarch ecclesiarchy ecclesiast Ecclesiastes ecclesiastic ecclesiastical ecclesiastically ecclesiasticism ecclesiasticize ecclesiastics Ecclesiasticus ecclesiastry ecclesioclastic ecclesiography ecclesiolater ecclesiolatry ecclesiologic ecclesiological ecclesiologically ecclesiologist ecclesiology ecclesiophobia eccoprotic eccoproticophoric eccrinology eccrisis eccritic eccyclema eccyesis ecdemic ecdemite ecderon ecderonic ecdysiast ecdysis ecesic ecesis ecgonine eche echea echelette echelon echelonment Echeloot Echeneidae echeneidid Echeneididae echeneidoid Echeneis Echeveria echidna Echidnidae Echimys Echinacea echinal echinate echinid Echinidea echinital echinite Echinocactus Echinocaris Echinocereus Echinochloa echinochrome echinococcus Echinoderes Echinoderidae echinoderm Echinoderma echinodermal Echinodermata echinodermatous echinodermic Echinodorus echinoid Echinoidea echinologist echinology Echinomys Echinopanax Echinops echinopsine Echinorhinidae Echinorhinus Echinorhynchus Echinospermum Echinosphaerites Echinosphaeritidae Echinostoma Echinostomatidae echinostome echinostomiasis Echinozoa echinulate echinulated echinulation echinuliform echinus Echis echitamine Echites Echium echiurid Echiurida echiuroid Echiuroidea Echiurus echo echoer echoic echoingly echoism echoist echoize echolalia echolalic echoless echometer echopractic echopraxia echowise Echuca eciliate Eciton ecize Eckehart ecklein eclair eclampsia eclamptic eclat eclectic eclectical eclectically eclecticism eclecticize Eclectics eclectism eclectist eclegm eclegma eclipsable eclipsareon eclipsation eclipse eclipser eclipsis ecliptic ecliptical ecliptically eclogite eclogue eclosion ecmnesia ecoid ecole ecologic ecological ecologically ecologist ecology econometer econometric econometrician econometrics economic economical economically economics economism economist Economite economization economize economizer economy ecophene ecophobia ecorticate ecospecies ecospecific ecospecifically ecostate ecosystem ecotonal ecotone ecotype ecotypic ecotypically ecphonesis ecphorable ecphore ecphoria ecphorization ecphorize ecphrasis ecrasite ecru ecrustaceous ecstasis ecstasize ecstasy ecstatic ecstatica ecstatical ecstatically ecstaticize ecstrophy ectad ectadenia ectal ectally ectasia ectasis ectatic ectene ectental ectepicondylar ectethmoid ectethmoidal Ecthesis ecthetically ecthlipsis ecthyma ectiris ectobatic ectoblast ectoblastic ectobronchium ectocardia Ectocarpaceae ectocarpaceous Ectocarpales ectocarpic ectocarpous Ectocarpus ectocinerea ectocinereal ectocoelic ectocondylar ectocondyle ectocondyloid ectocornea ectocranial ectocuneiform ectocuniform ectocyst ectodactylism ectoderm ectodermal ectodermic ectodermoidal ectodermosis ectodynamomorphic ectoentad ectoenzyme ectoethmoid ectogenesis ectogenic ectogenous ectoglia Ectognatha ectolecithal ectoloph ectomere ectomeric ectomesoblast ectomorph ectomorphic ectomorphy ectonephridium ectoparasite ectoparasitic Ectoparasitica ectopatagium ectophloic ectophyte ectophytic ectopia ectopic Ectopistes ectoplacenta ectoplasm ectoplasmatic ectoplasmic ectoplastic ectoplasy Ectoprocta ectoproctan ectoproctous ectopterygoid ectopy ectoretina ectorganism ectorhinal ectosarc ectosarcous ectoskeleton ectosomal ectosome ectosphenoid ectosphenotic ectosphere ectosteal ectosteally ectostosis ectotheca ectotoxin Ectotrophi ectotrophic ectozoa ectozoan ectozoic ectozoon ectrodactylia ectrodactylism ectrodactyly ectrogenic ectrogeny ectromelia ectromelian ectromelic ectromelus ectropion ectropium ectropometer ectrosyndactyly ectypal ectype ectypography Ecuadoran Ecuadorian ecuelling ecumenic ecumenical ecumenicalism ecumenicality ecumenically ecumenicity ecyphellate eczema eczematization eczematoid eczematosis eczematous Ed edacious edaciously edaciousness edacity Edana edaphic edaphology edaphon Edaphosauria Edaphosaurus Edda Eddaic edder Eddic Eddie eddish eddo eddy eddyroot edea edeagra edeitis edelweiss edema edematous edemic Eden Edenic edenite Edenization Edenize edental edentalous Edentata edentate edentulate edentulous edeodynia edeology edeomania edeoscopy edeotomy Edessan edestan edestin Edestosaurus Edgar edge edgebone edged edgeless edgemaker edgemaking edgeman edger edgerman edgeshot edgestone edgeways edgeweed edgewise edginess edging edgingly edgrew edgy edh edibility edible edibleness edict edictal edictally edicule edificable edification edificator edificatory edifice edificial edifier edify edifying edifyingly edifyingness edingtonite edit edital Edith edition editor editorial editorialize editorially editorship editress Ediya Edmund Edna Edo Edomite Edomitish Edoni Edriasteroidea Edrioasteroid Edrioasteroidea Edriophthalma edriophthalmatous edriophthalmian edriophthalmic edriophthalmous Educabilia educabilian educability educable educand educatable educate educated educatee education educationable educational educationalism educationalist educationally educationary educationist educative educator educatory educatress educe educement educible educive educt eduction eductive eductor edulcorate edulcoration edulcorative edulcorator Eduskunta Edward Edwardean Edwardeanism Edwardian Edwardine Edwardsia Edwardsiidae Edwin Edwina eegrass eel eelboat eelbob eelbobber eelcake eelcatcher eeler eelery eelfare eelfish eelgrass eellike eelpot eelpout eelshop eelskin eelspear eelware eelworm eely eer eerie eerily eeriness eerisome effable efface effaceable effacement effacer effect effecter effectful effectible effective effectively effectiveness effectivity effectless effector effects effectual effectuality effectualize effectually effectualness effectuate effectuation effeminacy effeminate effeminately effeminateness effemination effeminatize effeminization effeminize effendi efferent effervesce effervescence effervescency effervescent effervescible effervescingly effervescive effete effeteness effetman efficacious efficaciously efficaciousness efficacity efficacy efficience efficiency efficient efficiently Effie effigial effigiate effigiation effigurate effiguration effigy efflate efflation effloresce efflorescence efflorescency efflorescent efflower effluence effluency effluent effluvia effluvial effluviate effluviography effluvious effluvium efflux effluxion effodient Effodientia efform efformation efformative effort effortful effortless effortlessly effossion effraction effranchise effranchisement effrontery effulge effulgence effulgent effulgently effund effuse effusiometer effusion effusive effusively effusiveness Efik eflagelliferous efoliolate efoliose efoveolate eft eftest eftsoons egad egalitarian egalitarianism egality Egba Egbert Egbo egence egeran Egeria egest egesta egestion egestive egg eggberry eggcup eggcupful eggeater egger eggfish eggfruit egghead egghot egging eggler eggless egglike eggnog eggplant eggshell eggy egilops egipto Eglamore eglandular eglandulose eglantine eglatere eglestonite egma ego egocentric egocentricity egocentrism Egocerus egohood egoism egoist egoistic egoistical egoistically egoity egoize egoizer egol egolatrous egomania egomaniac egomaniacal egomism egophonic egophony egosyntonic egotheism egotism egotist egotistic egotistical egotistically egotize egregious egregiously egregiousness egress egression egressive egressor egret Egretta egrimony egueiite egurgitate eguttulate Egypt Egyptian Egyptianism Egyptianization Egyptianize Egyptize Egyptologer Egyptologic Egyptological Egyptologist Egyptology eh Ehatisaht eheu ehlite Ehretia Ehretiaceae ehrwaldite ehuawa eichbergite Eichhornia eichwaldite eicosane eident eidently eider eidetic eidograph eidolic eidolism eidology eidolology eidolon eidoptometry eidouranion eigenfunction eigenvalue eight eighteen eighteenfold eighteenmo eighteenth eighteenthly eightfoil eightfold eighth eighthly eightieth eightling eightpenny eightscore eightsman eightsome eighty eightyfold eigne Eikonogen eikonology Eileen Eimak eimer Eimeria einkorn Einsteinian Eireannach Eirene eiresione eisegesis eisegetical eisodic eisteddfod eisteddfodic eisteddfodism either ejaculate ejaculation ejaculative ejaculator ejaculatory Ejam eject ejecta ejectable ejection ejective ejectively ejectivity ejectment ejector ejicient ejoo ekaboron ekacaesium ekaha ekamanganese ekasilicon ekatantalum eke ekebergite eker ekerite eking ekka Ekoi ekphore Ekron Ekronite ektene ektenes ektodynamorphic el elaborate elaborately elaborateness elaboration elaborative elaborator elaboratory elabrate Elachista Elachistaceae elachistaceous Elaeagnaceae elaeagnaceous Elaeagnus Elaeis elaeoblast elaeoblastic Elaeocarpaceae elaeocarpaceous Elaeocarpus Elaeococca Elaeodendron elaeodochon elaeomargaric elaeometer elaeoptene elaeosaccharum elaeothesium elaidate elaidic elaidin elaidinic elain Elaine elaine elaioleucite elaioplast elaiosome Elamite Elamitic Elamitish elance eland elanet Elanus Elaphe Elaphebolion elaphine Elaphodus Elaphoglossum Elaphomyces Elaphomycetaceae Elaphrium elaphure elaphurine Elaphurus elapid Elapidae Elapinae elapine elapoid Elaps elapse Elapsoidea elasmobranch elasmobranchian elasmobranchiate Elasmobranchii elasmosaur Elasmosaurus elasmothere Elasmotherium elastance elastic elastica elastically elastician elasticin elasticity elasticize elasticizer elasticness elastin elastivity elastomer elastomeric elastometer elastometry elastose elatcha elate elated elatedly elatedness elater elaterid Elateridae elaterin elaterite elaterium elateroid Elatha Elatinaceae elatinaceous Elatine elation elative elator elatrometer elb Elbert Elberta elbow elbowboard elbowbush elbowchair elbowed elbower elbowpiece elbowroom elbowy elcaja elchee eld elder elderberry elderbrotherhood elderbrotherish elderbrotherly elderbush elderhood elderliness elderly elderman eldership eldersisterly elderwoman elderwood elderwort eldest eldin elding Eldred eldress eldritch Elean Eleanor Eleatic Eleaticism Eleazar elecampane elect electable electee electicism election electionary electioneer electioneerer elective electively electiveness electivism electivity electly elector electoral electorally electorate electorial electorship Electra electragist electragy electralize electrepeter electress electret electric electrical electricalize electrically electricalness electrician electricity electricize electrics electriferous electrifiable electrification electrifier electrify electrion electrionic electrizable electrization electrize electrizer electro electroacoustic electroaffinity electroamalgamation electroanalysis electroanalytic electroanalytical electroanesthesia electroballistic electroballistics electrobath electrobiological electrobiologist electrobiology electrobioscopy electroblasting electrobrasser electrobus electrocapillarity electrocapillary electrocardiogram electrocardiograph electrocardiographic electrocardiography electrocatalysis electrocatalytic electrocataphoresis electrocataphoretic electrocauterization electrocautery electroceramic electrochemical electrochemically electrochemist electrochemistry electrochronograph electrochronographic electrochronometer electrochronometric electrocoagulation electrocoating electrocolloidal electrocontractility electrocorticogram electroculture electrocute electrocution electrocutional electrocutioner electrocystoscope electrode electrodeless electrodentistry electrodeposit electrodepositable electrodeposition electrodepositor electrodesiccate electrodesiccation electrodiagnosis electrodialysis electrodialyze electrodialyzer electrodiplomatic electrodispersive electrodissolution electrodynamic electrodynamical electrodynamics electrodynamism electrodynamometer electroencephalogram electroencephalograph electroencephalography electroendosmose electroendosmosis electroendosmotic electroengrave electroengraving electroergometer electroetching electroethereal electroextraction electroform electroforming electrofuse electrofused electrofusion electrogalvanic electrogalvanize electrogenesis electrogenetic electrogild electrogilding electrogilt electrograph electrographic electrographite electrography electroharmonic electrohemostasis electrohomeopathy electrohorticulture electrohydraulic electroimpulse electroindustrial electroionic electroirrigation electrokinematics electrokinetic electrokinetics electrolier electrolithotrity electrologic electrological electrologist electrology electroluminescence electroluminescent electrolysis electrolyte electrolytic electrolytical electrolytically electrolyzability electrolyzable electrolyzation electrolyze electrolyzer electromagnet electromagnetic electromagnetical electromagnetically electromagnetics electromagnetism electromagnetist electromassage electromechanical electromechanics electromedical electromer electromeric electromerism electrometallurgical electrometallurgist electrometallurgy electrometer electrometric electrometrical electrometrically electrometry electromobile electromobilism electromotion electromotive electromotivity electromotograph electromotor electromuscular electromyographic electron electronarcosis electronegative electronervous electronic electronics electronographic electrooptic electrooptical electrooptically electrooptics electroosmosis electroosmotic electroosmotically electrootiatrics electropathic electropathology electropathy electropercussive electrophobia electrophone electrophore electrophoresis electrophoretic electrophoric Electrophoridae electrophorus electrophotometer electrophotometry electrophototherapy electrophrenic electrophysics electrophysiological electrophysiologist electrophysiology electropism electroplate electroplater electroplating electroplax electropneumatic electropneumatically electropoion electropolar electropositive electropotential electropower electropsychrometer electropult electropuncturation electropuncture electropuncturing electropyrometer electroreceptive electroreduction electrorefine electroscission electroscope electroscopic electrosherardizing electroshock electrosmosis electrostatic electrostatical electrostatically electrostatics electrosteel electrostenolysis electrostenolytic electrostereotype electrostriction electrosurgery electrosurgical electrosynthesis electrosynthetic electrosynthetically electrotactic electrotautomerism electrotaxis electrotechnic electrotechnical electrotechnician electrotechnics electrotechnology electrotelegraphic electrotelegraphy electrotelethermometer electrotellurograph electrotest electrothanasia electrothanatosis electrotherapeutic electrotherapeutical electrotherapeutics electrotherapeutist electrotherapist electrotherapy electrothermal electrothermancy electrothermic electrothermics electrothermometer electrothermostat electrothermostatic electrothermotic electrotitration electrotonic electrotonicity electrotonize electrotonus electrotrephine electrotropic electrotropism electrotype electrotyper electrotypic electrotyping electrotypist electrotypy electrovalence electrovalency electrovection electroviscous electrovital electrowin electrum electuary eleemosynarily eleemosynariness eleemosynary elegance elegancy elegant elegantly elegiac elegiacal elegiambic elegiambus elegiast elegist elegit elegize elegy eleidin element elemental elementalism elementalist elementalistic elementalistically elementality elementalize elementally elementarily elementariness elementary elementoid elemi elemicin elemin elench elenchi elenchic elenchical elenchically elenchize elenchtic elenchtical elenctic elenge eleoblast Eleocharis eleolite eleomargaric eleometer eleonorite eleoptene eleostearate eleostearic elephant elephanta elephantiac elephantiasic elephantiasis elephantic elephanticide Elephantidae elephantine elephantlike elephantoid elephantoidal Elephantopus elephantous elephantry Elephas Elettaria Eleusine Eleusinia Eleusinian Eleusinion Eleut eleutherarch Eleutheri Eleutheria Eleutherian Eleutherios eleutherism eleutherodactyl Eleutherodactyli Eleutherodactylus eleutheromania eleutheromaniac eleutheromorph eleutheropetalous eleutherophyllous eleutherosepalous Eleutherozoa eleutherozoan elevate elevated elevatedly elevatedness elevating elevatingly elevation elevational elevator elevatory eleven elevener elevenfold eleventh eleventhly elevon elf elfenfolk elfhood elfic elfin elfinwood elfish elfishly elfishness elfkin elfland elflike elflock elfship elfwife elfwort Eli Elia Elian Elianic Elias eliasite elicit elicitable elicitate elicitation elicitor elicitory elide elidible eligibility eligible eligibleness eligibly Elihu Elijah eliminable eliminand eliminant eliminate elimination eliminative eliminator eliminatory Elinor Elinvar Eliphalet eliquate eliquation Elisha Elishah elision elisor Elissa elite elixir Eliza Elizabeth Elizabethan Elizabethanism Elizabethanize elk Elkanah Elkdom Elkesaite elkhorn elkhound Elkoshite elkslip Elkuma elkwood ell Ella ellachick ellagate ellagic ellagitannin Ellasar elle elleck Ellen ellenyard Ellerian ellfish Ellice Ellick ellipse ellipses ellipsis ellipsograph ellipsoid ellipsoidal ellipsone ellipsonic elliptic elliptical elliptically ellipticalness ellipticity elliptograph elliptoid ellops ellwand elm Elmer elmy Eloah elocular elocute elocution elocutionary elocutioner elocutionist elocutionize elod Elodea Elodeaceae Elodes eloge elogium Elohim Elohimic Elohism Elohist Elohistic eloign eloigner eloignment Eloise Elon elongate elongated elongation elongative Elonite elope elopement eloper Elopidae elops eloquence eloquent eloquential eloquently eloquentness Elotherium elotillo elpasolite elpidite els Elsa else elsehow elsewards elseways elsewhen elsewhere elsewheres elsewhither elsewise Elsholtzia elsin elt eluate elucidate elucidation elucidative elucidator elucidatory elucubrate elucubration elude eluder elusion elusive elusively elusiveness elusoriness elusory elute elution elutor elutriate elutriation elutriator eluvial eluviate eluviation eluvium elvan elvanite elvanitic elver elves elvet Elvira elvish elvishly elydoric Elymi Elymus Elysee Elysia elysia Elysian Elysiidae Elysium elytral elytriferous elytriform elytrigerous elytrin elytrocele elytroclasia elytroid elytron elytroplastic elytropolypus elytroposis elytrorhagia elytrorrhagia elytrorrhaphy elytrostenosis elytrotomy elytrous elytrum Elzevir Elzevirian Em em emaciate emaciation emajagua emanant emanate emanation emanational emanationism emanationist emanatism emanatist emanatistic emanativ emanative emanatively emanator emanatory emancipate emancipation emancipationist emancipatist emancipative emancipator emancipatory emancipatress emancipist emandibulate emanium emarcid emarginate emarginately emargination Emarginula emasculate emasculation emasculative emasculator emasculatory Embadomonas emball emballonurid Emballonuridae emballonurine embalm embalmer embalmment embank embankment embannered embar embargo embargoist embark embarkation embarkment embarras embarrass embarrassed embarrassedly embarrassing embarrassingly embarrassment embarrel embassage embassy embastioned embathe embatholithic embattle embattled embattlement embay embayment Embden embed embedment embeggar Embelia embelic embellish embellisher embellishment ember embergoose Emberiza emberizidae Emberizinae emberizine embezzle embezzlement embezzler Embiidae Embiidina embind Embiodea Embioptera embiotocid Embiotocidae embiotocoid embira embitter embitterer embitterment emblaze emblazer emblazon emblazoner emblazonment emblazonry emblem emblema emblematic emblematical emblematically emblematicalness emblematicize emblematist emblematize emblematology emblement emblemist emblemize emblemology emblic emblossom embodier embodiment embody embog emboitement embolden emboldener embole embolectomy embolemia embolic emboliform embolism embolismic embolismus embolite embolium embolize embolo embololalia Embolomeri embolomerism embolomerous embolomycotic embolum embolus emboly emborder emboscata embosom emboss embossage embosser embossing embossman embossment embosture embottle embouchure embound embow embowed embowel emboweler embowelment embower embowerment embowment embox embrace embraceable embraceably embracement embraceor embracer embracery embracing embracingly embracingness embracive embrail embranchment embrangle embranglement embrasure embreathe embreathement Embrica embright embrittle embrittlement embroaden embrocate embrocation embroider embroiderer embroideress embroidery embroil embroiler embroilment embronze embrown embryectomy embryo embryocardia embryoctonic embryoctony embryoferous embryogenesis embryogenetic embryogenic embryogeny embryogony embryographer embryographic embryography embryoid embryoism embryologic embryological embryologically embryologist embryology embryoma embryon embryonal embryonary embryonate embryonated embryonic embryonically embryoniferous embryoniform embryony embryopathology embryophagous embryophore Embryophyta embryophyte embryoplastic embryoscope embryoscopic embryotega embryotic embryotome embryotomy embryotrophic embryotrophy embryous embryulcia embryulcus embubble embuia embus embusk embuskin emcee eme emeer emeership Emeline emend emendable emendandum emendate emendation emendator emendatory emender emerald emeraldine emeraude emerge emergence emergency emergent emergently emergentness Emerita emerited emeritus emerize emerse emersed emersion Emersonian Emersonianism Emery emery Emesa Emesidae emesis emetatrophia emetic emetically emetine emetocathartic emetology emetomorphine emgalla emication emiction emictory emigrant emigrate emigration emigrational emigrationist emigrative emigrator emigratory emigree Emil Emilia Emily Emim eminence eminency eminent eminently emir emirate emirship emissarium emissary emissaryship emissile emission emissive emissivity emit emittent emitter Emm Emma emma Emmanuel emmarble emmarvel emmenagogic emmenagogue emmenic emmeniopathy emmenology emmensite Emmental emmer emmergoose emmet emmetrope emmetropia emmetropic emmetropism emmetropy emodin emollescence emolliate emollient emoloa emolument emolumental emolumentary emote emotion emotionable emotional emotionalism emotionalist emotionality emotionalization emotionalize emotionally emotioned emotionist emotionize emotionless emotionlessness emotive emotively emotiveness emotivity empacket empaistic empall empanel empanelment empanoply empaper emparadise emparchment empark empasm empathic empathically empathize empathy Empedoclean empeirema Empeo emperor emperorship empery Empetraceae empetraceous Empetrum emphases emphasis emphasize emphatic emphatical emphatically emphaticalness emphlysis emphractic emphraxis emphysema emphysematous emphyteusis emphyteuta emphyteutic empicture Empididae Empidonax empiecement Empire empire empirema empiric empirical empiricalness empiricism empiricist empirics empiriocritcism empiriocritical empiriological empirism empiristic emplace emplacement emplane emplastic emplastration emplastrum emplectite empleomania employ employability employable employed employee employer employless employment emplume empocket empodium empoison empoisonment emporetic emporeutic emporia emporial emporium empower empowerment empress emprise emprosthotonic emprosthotonos emprosthotonus empt emptier emptily emptiness emptings emptins emption emptional emptor empty emptyhearted emptysis empurple Empusa empyema empyemic empyesis empyocele empyreal empyrean empyreuma empyreumatic empyreumatical empyreumatize empyromancy emu emulable emulant emulate emulation emulative emulatively emulator emulatory emulatress emulgence emulgent emulous emulously emulousness emulsibility emulsible emulsifiability emulsifiable emulsification emulsifier emulsify emulsin emulsion emulsionize emulsive emulsoid emulsor emunctory emundation emyd Emydea emydian Emydidae Emydinae Emydosauria emydosaurian Emys en enable enablement enabler enact enactable enaction enactive enactment enactor enactory enaena enage Enajim enalid Enaliornis enaliosaur Enaliosauria enaliosaurian enallachrome enallage enaluron enam enamber enambush enamdar enamel enameler enameling enamelist enamelless enamellist enameloma enamelware enamor enamorato enamored enamoredness enamorment enamourment enanguish enanthem enanthema enanthematous enanthesis enantiobiosis enantioblastic enantioblastous enantiomer enantiomeride enantiomorph enantiomorphic enantiomorphism enantiomorphous enantiomorphously enantiomorphy enantiopathia enantiopathic enantiopathy enantiosis enantiotropic enantiotropy enantobiosis enapt enarbor enarbour enarch enarched enargite enarm enarme enarthrodia enarthrodial enarthrosis enate enatic enation enbrave encaenia encage encake encalendar encallow encamp encampment encanker encanthis encapsulate encapsulation encapsule encarditis encarnadine encarnalize encarpium encarpus encase encasement encash encashable encashment encasserole encastage encatarrhaphy encauma encaustes encaustic encaustically encave encefalon Encelia encell encenter encephala encephalalgia Encephalartos encephalasthenia encephalic encephalin encephalitic encephalitis encephalocele encephalocoele encephalodialysis encephalogram encephalograph encephalography encephaloid encephalolith encephalology encephaloma encephalomalacia encephalomalacosis encephalomalaxis encephalomeningitis encephalomeningocele encephalomere encephalomeric encephalometer encephalometric encephalomyelitis encephalomyelopathy encephalon encephalonarcosis encephalopathia encephalopathic encephalopathy encephalophyma encephalopsychesis encephalopyosis encephalorrhagia encephalosclerosis encephaloscope encephaloscopy encephalosepsis encephalospinal encephalothlipsis encephalotome encephalotomy encephalous enchain enchainment enchair enchalice enchannel enchant enchanter enchanting enchantingly enchantingness enchantment enchantress encharge encharnel enchase enchaser enchasten Enchelycephali enchequer enchest enchilada enchiridion Enchodontid Enchodontidae Enchodontoid Enchodus enchondroma enchondromatous enchondrosis enchorial enchurch enchylema enchylematous enchymatous enchytrae enchytraeid Enchytraeidae Enchytraeus encina encinal encincture encinder encinillo encipher encircle encirclement encircler encist encitadel enclaret enclasp enclave enclavement enclisis enclitic enclitical enclitically encloak encloister enclose encloser enclosure enclothe encloud encoach encode encoffin encoignure encoil encolden encollar encolor encolpion encolumn encomendero encomia encomiast encomiastic encomiastical encomiastically encomic encomienda encomiologic encomium encommon encompass encompasser encompassment encoop encorbelment encore encoronal encoronate encoronet encounter encounterable encounterer encourage encouragement encourager encouraging encouragingly encowl encraal encradle encranial encratic Encratism Encratite encraty encreel encrimson encrinal encrinic Encrinidae encrinidae encrinital encrinite encrinitic encrinitical encrinoid Encrinoidea Encrinus encrisp encroach encroacher encroachingly encroachment encrotchet encrown encrownment encrust encrustment encrypt encryption encuirassed encumber encumberer encumberingly encumberment encumbrance encumbrancer encup encurl encurtain encushion encyclic encyclical encyclopedia encyclopediac encyclopediacal encyclopedial encyclopedian encyclopediast encyclopedic encyclopedically encyclopedism encyclopedist encyclopedize encyrtid Encyrtidae encyst encystation encystment end endable endamage endamageable endamagement endamask endameba endamebic Endamoeba endamoebiasis endamoebic Endamoebidae endanger endangerer endangerment endangium endaortic endaortitis endarch endarchy endarterial endarteritis endarterium endaspidean endaze endboard endbrain endear endearance endeared endearedly endearedness endearing endearingly endearingness endearment endeavor endeavorer ended endeictic endellionite endemial endemic endemically endemicity endemiological endemiology endemism endenizen ender endere endermatic endermic endermically enderon enderonic endevil endew endgate endiadem endiaper ending endite endive endless endlessly endlessness endlichite endlong endmatcher endmost endoabdominal endoangiitis endoaortitis endoappendicitis endoarteritis endoauscultation endobatholithic endobiotic endoblast endoblastic endobronchial endobronchially endobronchitis endocannibalism endocardiac endocardial endocarditic endocarditis endocardium endocarp endocarpal endocarpic endocarpoid endocellular endocentric Endoceras Endoceratidae endoceratite endoceratitic endocervical endocervicitis endochondral endochorion endochorionic endochrome endochylous endoclinal endocline endocoelar endocoele endocoeliac endocolitis endocolpitis endocondensation endocone endoconidium endocorpuscular endocortex endocranial endocranium endocrinal endocrine endocrinic endocrinism endocrinological endocrinologist endocrinology endocrinopathic endocrinopathy endocrinotherapy endocrinous endocritic endocycle endocyclic endocyemate endocyst endocystitis endoderm endodermal endodermic endodermis endodontia endodontic endodontist endodynamomorphic endoenteritis endoenzyme endoesophagitis endofaradism endogalvanism endogamic endogamous endogamy endogastric endogastrically endogastritis endogen Endogenae endogenesis endogenetic endogenic endogenous endogenously endogeny endoglobular endognath endognathal endognathion endogonidium endointoxication endokaryogamy endolabyrinthitis endolaryngeal endolemma endolumbar endolymph endolymphangial endolymphatic endolymphic endolysin endomastoiditis endome endomesoderm endometrial endometritis endometrium endometry endomitosis endomitotic endomixis endomorph endomorphic endomorphism endomorphy Endomyces Endomycetaceae endomysial endomysium endoneurial endoneurium endonuclear endonucleolus endoparasite endoparasitic Endoparasitica endopathic endopelvic endopericarditis endoperidial endoperidium endoperitonitis endophagous endophagy endophasia endophasic endophlebitis endophragm endophragmal Endophyllaceae endophyllous Endophyllum endophytal endophyte endophytic endophytically endophytous endoplasm endoplasma endoplasmic endoplast endoplastron endoplastular endoplastule endopleura endopleural endopleurite endopleuritic endopod endopodite endopoditic endoproct Endoprocta endoproctous endopsychic Endopterygota endopterygote endopterygotic endopterygotism endopterygotous endorachis endoral endore endorhinitis endorsable endorsation endorse endorsed endorsee endorsement endorser endorsingly endosalpingitis endosarc endosarcode endosarcous endosclerite endoscope endoscopic endoscopy endosecretory endosepsis endosiphon endosiphonal endosiphonate endosiphuncle endoskeletal endoskeleton endosmometer endosmometric endosmosic endosmosis endosmotic endosmotically endosome endosperm endospermic endospore endosporium endosporous endoss endosteal endosteally endosteitis endosteoma endosternite endosternum endosteum endostitis endostoma endostome endostosis endostracal endostracum endostylar endostyle endostylic endotheca endothecal endothecate endothecial endothecium endothelia endothelial endothelioblastoma endotheliocyte endothelioid endotheliolysin endotheliolytic endothelioma endotheliomyoma endotheliomyxoma endotheliotoxin endothelium endothermal endothermic endothermous endothermy Endothia endothoracic endothorax Endothrix endothys endotoxic endotoxin endotoxoid endotracheitis endotrachelitis Endotrophi endotrophic endotys endovaccination endovasculitis endovenous endow endower endowment endozoa endpiece Endromididae Endromis endue enduement endungeon endura endurability endurable endurableness endurably endurance endurant endure endurer enduring enduringly enduringness endways endwise endyma endymal Endymion endysis Eneas eneclann enema enemy enemylike enemyship enepidermic energeia energesis energetic energetical energetically energeticalness energeticist energetics energetistic energic energical energid energism energist energize energizer energumen energumenon energy enervate enervation enervative enervator eneuch eneugh enface enfacement enfamous enfasten enfatico enfeature enfeeble enfeeblement enfeebler enfelon enfeoff enfeoffment enfester enfetter enfever enfigure enfilade enfilading enfile enfiled enflagellate enflagellation enflesh enfleurage enflower enfoil enfold enfolden enfolder enfoldment enfonced enforce enforceability enforceable enforced enforcedly enforcement enforcer enforcibility enforcible enforcingly enfork enfoul enframe enframement enfranchisable enfranchise enfranchisement enfranchiser enfree enfrenzy enfuddle enfurrow engage engaged engagedly engagedness engagement engager engaging engagingly engagingness engaol engarb engarble engarland engarment engarrison engastrimyth engastrimythic engaud engaze Engelmannia engem engender engenderer engenderment engerminate enghosted engild engine engineer engineering engineership enginehouse engineless enginelike engineman enginery enginous engird engirdle engirt engjateigur englacial englacially englad engladden Englander Engler Englerophoenix Englifier Englify English Englishable Englisher Englishhood Englishism Englishize Englishly Englishman Englishness Englishry Englishwoman englobe englobement engloom englory englut englyn engnessang engobe engold engolden engore engorge engorgement engouled engrace engraff engraft engraftation engrafter engraftment engrail engrailed engrailment engrain engrained engrainedly engrainer engram engramma engrammatic engrammic engrandize engrandizement engraphia engraphic engraphically engraphy engrapple engrasp Engraulidae Engraulis engrave engraved engravement engraver engraving engreen engrieve engroove engross engrossed engrossedly engrosser engrossing engrossingly engrossingness engrossment enguard engulf engulfment engyscope engysseismology Engystomatidae enhallow enhalo enhamper enhance enhanced enhancement enhancer enhancive enharmonic enharmonical enharmonically enhat enhaunt enhearse enheart enhearten enhedge enhelm enhemospore enherit enheritage enheritance enhorror enhunger enhusk Enhydra Enhydrinae Enhydris enhydrite enhydritic enhydros enhydrous enhypostasia enhypostasis enhypostatic enhypostatize eniac Enicuridae Enid Enif enigma enigmatic enigmatical enigmatically enigmaticalness enigmatist enigmatization enigmatize enigmatographer enigmatography enigmatology enisle enjail enjamb enjambed enjambment enjelly enjeopard enjeopardy enjewel enjoin enjoinder enjoiner enjoinment enjoy enjoyable enjoyableness enjoyably enjoyer enjoying enjoyingly enjoyment enkerchief enkernel Enki Enkidu enkindle enkindler enkraal enlace enlacement enlard enlarge enlargeable enlargeableness enlarged enlargedly enlargedness enlargement enlarger enlarging enlargingly enlaurel enleaf enleague enlevement enlief enlife enlight enlighten enlightened enlightenedly enlightenedness enlightener enlightening enlighteningly enlightenment enlink enlinkment enlist enlisted enlister enlistment enliven enlivener enlivening enliveningly enlivenment enlock enlodge enlodgement enmarble enmask enmass enmesh enmeshment enmist enmity enmoss enmuffle enneacontahedral enneacontahedron ennead enneadianome enneadic enneagon enneagynous enneahedral enneahedria enneahedron enneapetalous enneaphyllous enneasemic enneasepalous enneaspermous enneastyle enneastylos enneasyllabic enneateric enneatic enneatical ennerve enniche ennoble ennoblement ennobler ennobling ennoblingly ennoic ennomic ennui Enoch Enochic enocyte enodal enodally enoil enol enolate enolic enolizable enolization enolize enomania enomaniac enomotarch enomoty enophthalmos enophthalmus Enopla enoplan enoptromancy enorganic enorm enormity enormous enormously enormousness Enos enostosis enough enounce enouncement enow enphytotic enplane enquicken enquire enquirer enquiry enrace enrage enraged enragedly enragement enrange enrank enrapt enrapture enrapturer enravish enravishingly enravishment enray enregiment enregister enregistration enregistry enrib enrich enricher enriching enrichingly enrichment enring enrive enrobe enrobement enrober enrockment enrol enroll enrolled enrollee enroller enrollment enrolment enroot enrough enruin enrut ens ensaffron ensaint ensample ensand ensandal ensanguine ensate enscene ensconce enscroll ensculpture ense enseam enseat enseem ensellure ensemble ensepulcher ensepulchre enseraph enserf ensete enshade enshadow enshawl ensheathe enshell enshelter enshield enshrine enshrinement enshroud Ensiferi ensiform ensign ensigncy ensignhood ensignment ensignry ensignship ensilage ensilate ensilation ensile ensilist ensilver ensisternum ensky enslave enslavedness enslavement enslaver ensmall ensnare ensnarement ensnarer ensnaring ensnaringly ensnarl ensnow ensorcelize ensorcell ensoul enspell ensphere enspirit enstamp enstar enstate enstatite enstatitic enstatolite ensteel enstool enstore enstrengthen ensuable ensuance ensuant ensue ensuer ensuingly ensulphur ensure ensurer enswathe enswathement ensweep entablature entablatured entablement entach entad Entada entail entailable entailer entailment ental entame Entamoeba entamoebiasis entamoebic entangle entangled entangledly entangledness entanglement entangler entangling entanglingly entapophysial entapophysis entarthrotic entasia entasis entelam entelechy entellus Entelodon entelodont entempest entemple entente Ententophil entepicondylar enter enterable enteraden enteradenographic enteradenography enteradenological enteradenology enteral enteralgia enterate enterauxe enterclose enterectomy enterer entergogenic enteria enteric entericoid entering enteritidis enteritis entermete enteroanastomosis enterobiliary enterocele enterocentesis enterochirurgia enterochlorophyll enterocholecystostomy enterocinesia enterocinetic enterocleisis enteroclisis enteroclysis Enterocoela enterocoele enterocoelic enterocoelous enterocolitis enterocolostomy enterocrinin enterocyst enterocystoma enterodynia enteroepiplocele enterogastritis enterogastrone enterogenous enterogram enterograph enterography enterohelcosis enterohemorrhage enterohepatitis enterohydrocele enteroid enterointestinal enteroischiocele enterokinase enterokinesia enterokinetic enterolith enterolithiasis Enterolobium enterology enteromegalia enteromegaly enteromere enteromesenteric Enteromorpha enteromycosis enteromyiasis enteron enteroneuritis enteroparalysis enteroparesis enteropathy enteropexia enteropexy enterophthisis enteroplasty enteroplegia enteropneust Enteropneusta enteropneustan enteroptosis enteroptotic enterorrhagia enterorrhaphy enterorrhea enteroscope enterosepsis enterospasm enterostasis enterostenosis enterostomy enterosyphilis enterotome enterotomy enterotoxemia enterotoxication enterozoa enterozoan enterozoic enterprise enterpriseless enterpriser enterprising enterprisingly enterritoriality entertain entertainable entertainer entertaining entertainingly entertainingness entertainment enthalpy entheal enthelmintha enthelminthes enthelminthic enthetic enthral enthraldom enthrall enthralldom enthraller enthralling enthrallingly enthrallment enthralment enthrone enthronement enthronization enthronize enthuse enthusiasm enthusiast enthusiastic enthusiastical enthusiastically enthusiastly enthymematic enthymematical enthymeme entia entice enticeable enticeful enticement enticer enticing enticingly enticingness entifical entification entify entincture entire entirely entireness entirety entiris entitative entitatively entitle entitlement entity entoblast entoblastic entobranchiate entobronchium entocalcaneal entocarotid entocele entocnemial entocoele entocoelic entocondylar entocondyle entocondyloid entocone entoconid entocornea entocranial entocuneiform entocuniform entocyemate entocyst entoderm entodermal entodermic entogastric entogenous entoglossal entohyal entoil entoilment Entoloma entomb entombment entomere entomeric entomic entomical entomion entomogenous entomoid entomologic entomological entomologically entomologist entomologize entomology Entomophaga entomophagan entomophagous Entomophila entomophilous entomophily Entomophthora Entomophthoraceae entomophthoraceous Entomophthorales entomophthorous entomophytous Entomosporium Entomostraca entomostracan entomostracous entomotaxy entomotomist entomotomy entone entonement entoolitic entoparasite entoparasitic entoperipheral entophytal entophyte entophytic entophytically entophytous entopic entopical entoplasm entoplastic entoplastral entoplastron entopopliteal Entoprocta entoproctous entopterygoid entoptic entoptical entoptically entoptics entoptoscope entoptoscopic entoptoscopy entoretina entorganism entosarc entosclerite entosphenal entosphenoid entosphere entosternal entosternite entosternum entothorax entotic Entotrophi entotympanic entourage entozoa entozoal entozoan entozoarian entozoic entozoological entozoologically entozoologist entozoology entozoon entracte entrail entrails entrain entrainer entrainment entrammel entrance entrancedly entrancement entranceway entrancing entrancingly entrant entrap entrapment entrapper entrappingly entreasure entreat entreating entreatingly entreatment entreaty entree entremets entrench entrenchment entrepas entrepot entrepreneur entrepreneurial entrepreneurship entresol entrochite entrochus entropion entropionize entropium entropy entrough entrust entrustment entry entryman entryway enturret entwine entwinement entwist Entyloma enucleate enucleation enucleator Enukki enumerable enumerate enumeration enumerative enumerator enunciability enunciable enunciate enunciation enunciative enunciatively enunciator enunciatory enure enuresis enuretic enurny envapor envapour envassal envassalage envault enveil envelop envelope enveloper envelopment envenom envenomation enverdure envermeil enviable enviableness enviably envied envier envineyard envious enviously enviousness environ environage environal environic environment environmental environmentalism environmentalist environmentally environs envisage envisagement envision envolume envoy envoyship envy envying envyingly enwallow enwiden enwind enwisen enwoman enwomb enwood enworthed enwound enwrap enwrapment enwreathe enwrite enwrought enzone enzootic enzooty enzym enzymatic enzyme enzymic enzymically enzymologist enzymology enzymolysis enzymolytic enzymosis enzymotic eoan Eoanthropus Eocarboniferous Eocene Eodevonian Eogaea Eogaean Eoghanacht Eohippus eolation eolith eolithic Eomecon eon eonism Eopalaeozoic Eopaleozoic eophyte eophytic eophyton eorhyolite eosate Eosaurus eoside eosin eosinate eosinic eosinoblast eosinophile eosinophilia eosinophilic eosinophilous eosphorite Eozoic eozoon eozoonal epacmaic epacme epacrid Epacridaceae epacridaceous Epacris epact epactal epagoge epagogic epagomenae epagomenal epagomenic epagomenous epaleaceous epalpate epanadiplosis Epanagoge epanalepsis epanaleptic epanaphora epanaphoral epanastrophe epanisognathism epanisognathous epanodos epanody Epanorthidae epanorthosis epanorthotic epanthous epapillate epappose eparch eparchate Eparchean eparchial eparchy eparcuale eparterial epaule epaulement epaulet epauleted epauletted epauliere epaxial epaxially epedaphic epee epeeist Epeira epeiric epeirid Epeiridae epeirogenesis epeirogenetic epeirogenic epeirogeny epeisodion epembryonic epencephal epencephalic epencephalon ependyma ependymal ependyme ependymitis ependymoma ependytes epenthesis epenthesize epenthetic epephragmal epepophysial epepophysis epergne eperotesis Eperua epexegesis epexegetic epexegetical epexegetically epha ephah epharmonic epharmony ephebe ephebeion ephebeum ephebic ephebos ephebus ephectic Ephedra Ephedraceae ephedrine ephelcystic ephelis Ephemera ephemera ephemerae ephemeral ephemerality ephemerally ephemeralness ephemeran ephemerid Ephemerida Ephemeridae ephemerides ephemeris ephemerist ephemeromorph ephemeromorphic ephemeron Ephemeroptera ephemerous Ephesian Ephesine ephetae ephete ephetic ephialtes ephidrosis ephippial ephippium ephod ephor ephoral ephoralty ephorate ephoric ephorship ephorus ephphatha Ephraim Ephraimite Ephraimitic Ephraimitish Ephraitic Ephrathite Ephthalite Ephthianura ephthianure Ephydra ephydriad ephydrid Ephydridae ephymnium ephyra ephyrula epibasal Epibaterium epibatholithic epibenthic epibenthos epiblast epiblastema epiblastic epiblema epibole epibolic epibolism epiboly epiboulangerite epibranchial epic epical epically epicalyx epicanthic epicanthus epicardia epicardiac epicardial epicardium epicarid epicaridan Epicaridea Epicarides epicarp Epicauta epicede epicedial epicedian epicedium epicele epicene epicenism epicenity epicenter epicentral epicentrum Epiceratodus epicerebral epicheirema epichil epichile epichilium epichindrotic epichirema epichondrosis epichordal epichorial epichoric epichorion epichoristic Epichristian epicism epicist epiclastic epicleidian epicleidium epiclesis epiclidal epiclinal epicly epicnemial Epicoela epicoelar epicoele epicoelia epicoeliac epicoelian epicoeloma epicoelous epicolic epicondylar epicondyle epicondylian epicondylic epicontinental epicoracohumeral epicoracoid epicoracoidal epicormic epicorolline epicortical epicostal epicotyl epicotyleal epicotyledonary epicranial epicranium epicranius Epicrates epicrisis epicritic epicrystalline Epictetian epicure Epicurean Epicureanism epicurish epicurishly Epicurism Epicurize epicycle epicyclic epicyclical epicycloid epicycloidal epicyemate epicyesis epicystotomy epicyte epideictic epideictical epideistic epidemic epidemical epidemically epidemicalness epidemicity epidemiographist epidemiography epidemiological epidemiologist epidemiology epidemy epidendral epidendric Epidendron Epidendrum epiderm epiderma epidermal epidermatic epidermatoid epidermatous epidermic epidermical epidermically epidermidalization epidermis epidermization epidermoid epidermoidal epidermolysis epidermomycosis Epidermophyton epidermophytosis epidermose epidermous epidesmine epidialogue epidiascope epidiascopic epidictic epidictical epididymal epididymectomy epididymis epididymite epididymitis epididymodeferentectomy epididymodeferential epididymovasostomy epidiorite epidiorthosis epidosite epidote epidotic epidotiferous epidotization epidural epidymides epifascial epifocal epifolliculitis Epigaea epigamic epigaster epigastraeum epigastral epigastrial epigastric epigastrical epigastriocele epigastrium epigastrocele epigeal epigean epigeic epigene epigenesis epigenesist epigenetic epigenetically epigenic epigenist epigenous epigeous epiglottal epiglottic epiglottidean epiglottiditis epiglottis epiglottitis epignathous epigonal epigonation epigone Epigoni epigonic Epigonichthyidae Epigonichthys epigonium epigonos epigonous Epigonus epigram epigrammatic epigrammatical epigrammatically epigrammatism epigrammatist epigrammatize epigrammatizer epigraph epigrapher epigraphic epigraphical epigraphically epigraphist epigraphy epiguanine epigyne epigynous epigynum epigyny Epihippus epihyal epihydric epihydrinic epikeia epiklesis Epikouros epilabrum Epilachna Epilachnides epilamellar epilaryngeal epilate epilation epilatory epilegomenon epilemma epilemmal epilepsy epileptic epileptically epileptiform epileptogenic epileptogenous epileptoid epileptologist epileptology epilimnion epilobe Epilobiaceae Epilobium epilogation epilogic epilogical epilogist epilogistic epilogize epilogue Epimachinae epimacus epimandibular epimanikia Epimedium Epimenidean epimer epimeral epimere epimeric epimeride epimerite epimeritic epimeron epimerum epimorphic epimorphosis epimysium epimyth epinaos epinastic epinastically epinasty epineolithic Epinephelidae Epinephelus epinephrine epinette epineural epineurial epineurium epinglette epinicial epinician epinicion epinine epiopticon epiotic Epipactis epipaleolithic epiparasite epiparodos epipastic epiperipheral epipetalous epiphanous Epiphany epipharyngeal epipharynx Epiphegus epiphenomenal epiphenomenalism epiphenomenalist epiphenomenon epiphloedal epiphloedic epiphloeum epiphonema epiphora epiphragm epiphylline epiphyllous Epiphyllum epiphysary epiphyseal epiphyseolysis epiphysial epiphysis epiphysitis epiphytal epiphyte epiphytic epiphytical epiphytically epiphytism epiphytology epiphytotic epiphytous epipial epiplankton epiplanktonic epiplasm epiplasmic epiplastral epiplastron epiplectic epipleura epipleural epiplexis epiploce epiplocele epiploic epiploitis epiploon epiplopexy epipodial epipodiale epipodite epipoditic epipodium epipolic epipolism epipolize epiprecoracoid Epipsychidion epipteric epipterous epipterygoid epipubic epipubis epirhizous epirogenic epirogeny Epirote Epirotic epirotulian epirrhema epirrhematic epirrheme episarcine episcenium episclera episcleral episcleritis episcopable episcopacy Episcopal episcopal episcopalian Episcopalianism Episcopalianize episcopalism episcopality Episcopally episcopally episcopate episcopature episcope episcopicide episcopization episcopize episcopolatry episcotister episematic episepalous episiocele episiohematoma episioplasty episiorrhagia episiorrhaphy episiostenosis episiotomy episkeletal episkotister episodal episode episodial episodic episodical episodically epispadiac epispadias epispastic episperm epispermic epispinal episplenitis episporangium epispore episporium epistapedial epistasis epistatic epistaxis epistemic epistemolog epistemological epistemologically epistemologist epistemology epistemonic epistemonical epistemophilia epistemophiliac epistemophilic episternal episternalia episternite episternum epistilbite epistlar epistle epistler epistolarian epistolarily epistolary epistolatory epistoler epistolet epistolic epistolical epistolist epistolizable epistolization epistolize epistolizer epistolographer epistolographic epistolographist epistolography epistoma epistomal epistome epistomian epistroma epistrophe epistropheal epistropheus epistrophic epistrophy epistylar epistyle Epistylis episyllogism episynaloephe episynthetic episyntheton epitactic epitaph epitapher epitaphial epitaphian epitaphic epitaphical epitaphist epitaphize epitaphless epitasis epitela epitendineum epitenon epithalamia epithalamial epithalamiast epithalamic epithalamion epithalamium epithalamize epithalamus epithalamy epithalline epitheca epithecal epithecate epithecium epithelia epithelial epithelioblastoma epithelioceptor epitheliogenetic epithelioglandular epithelioid epitheliolysin epitheliolysis epitheliolytic epithelioma epitheliomatous epitheliomuscular epitheliosis epitheliotoxin epithelium epithelization epithelize epitheloid epithem epithesis epithet epithetic epithetical epithetically epithetician epithetize epitheton epithumetic epithyme epithymetic epithymetical epitimesis epitoke epitomator epitomatory epitome epitomic epitomical epitomically epitomist epitomization epitomize epitomizer epitonic Epitoniidae epitonion Epitonium epitoxoid epitrachelion epitrichial epitrichium epitrite epitritic epitrochlea epitrochlear epitrochoid epitrochoidal epitrope epitrophic epitrophy epituberculosis epituberculous epitympanic epitympanum epityphlitis epityphlon epiural epivalve epixylous epizeuxis Epizoa epizoa epizoal epizoan epizoarian epizoic epizoicide epizoon epizootic epizootiology epoch epocha epochal epochally epochism epochist epode epodic epollicate Epomophorus eponychium eponym eponymic eponymism eponymist eponymize eponymous eponymus eponymy epoophoron epopee epopoean epopoeia epopoeist epopt epoptes epoptic epoptist epornitic epornitically epos Eppie Eppy Eproboscidea epruinose epsilon Epsom epsomite Eptatretidae Eptatretus epulary epulation epulis epulo epuloid epulosis epulotic epupillate epural epurate epuration epyllion equability equable equableness equably equaeval equal equalable equaling equalist equalitarian equalitarianism equality equalization equalize equalizer equalizing equalling equally equalness equangular equanimity equanimous equanimously equanimousness equant equatable equate equation equational equationally equationism equationist equator equatorial equatorially equatorward equatorwards equerry equerryship equestrial equestrian equestrianism equestrianize equestrianship equestrienne equianchorate equiangle equiangular equiangularity equianharmonic equiarticulate equiatomic equiaxed equiaxial equibalance equibiradiate equicellular equichangeable equicohesive equiconvex equicostate equicrural equicurve equid equidense equidensity equidiagonal equidifferent equidimensional equidistance equidistant equidistantial equidistantly equidistribution equidiurnal equidivision equidominant equidurable equielliptical equiexcellency equiform equiformal equiformity equiglacial equigranular equijacent equilateral equilaterally equilibrant equilibrate equilibration equilibrative equilibrator equilibratory equilibria equilibrial equilibriate equilibrio equilibrious equilibrist equilibristat equilibristic equilibrity equilibrium equilibrize equilobate equilobed equilocation equilucent equimodal equimolar equimolecular equimomental equimultiple equinate equine equinecessary equinely equinia equinity equinoctial equinoctially equinovarus equinox equinumerally equinus equiomnipotent equip equipaga equipage equiparant equiparate equiparation equipartile equipartisan equipartition equiped equipedal equiperiodic equipluve equipment equipoise equipollence equipollency equipollent equipollently equipollentness equiponderance equiponderancy equiponderant equiponderate equiponderation equipostile equipotent equipotential equipotentiality equipper equiprobabilism equiprobabilist equiprobability equiproducing equiproportional equiproportionality equiradial equiradiate equiradical equirotal equisegmented Equisetaceae equisetaceous Equisetales equisetic Equisetum equisided equisignal equisized equison equisonance equisonant equispaced equispatial equisufficiency equisurface equitable equitableness equitably equitangential equitant equitation equitative equitemporal equitemporaneous equites equitist equitriangular equity equivalence equivalenced equivalency equivalent equivalently equivaliant equivalue equivaluer equivalve equivalved equivalvular equivelocity equivocacy equivocal equivocality equivocally equivocalness equivocate equivocatingly equivocation equivocator equivocatory equivoluminal equivoque equivorous equivote equoid equoidean equuleus Equus er era erade eradiate eradiation eradicable eradicant eradicate eradication eradicative eradicator eradicatory eradiculose Eragrostis eral eranist Eranthemum Eranthis erasable erase erased erasement eraser erasion Erasmian Erasmus Erastian Erastianism Erastianize Erastus erasure Erava erbia erbium erd erdvark ere Erechtheum Erechtheus Erechtites erect erectable erecter erectile erectility erecting erection erective erectly erectness erectopatent erector erelong eremacausis Eremian eremic eremital eremite eremiteship eremitic eremitical eremitish eremitism Eremochaeta eremochaetous eremology eremophyte Eremopteris Eremurus erenach erenow erepsin erept ereptase ereptic ereption erethic erethisia erethism erethismic erethistic erethitic Erethizon Erethizontidae Eretrian erewhile erewhiles erg ergal ergamine Ergane ergasia ergasterion ergastic ergastoplasm ergastoplasmic ergastulum ergatandromorph ergatandromorphic ergatandrous ergatandry ergates ergatocracy ergatocrat ergatogyne ergatogynous ergatogyny ergatoid ergatomorph ergatomorphic ergatomorphism ergmeter ergodic ergogram ergograph ergographic ergoism ergology ergomaniac ergometer ergometric ergometrine ergon ergonovine ergophile ergophobia ergophobiac ergoplasm ergostat ergosterin ergosterol ergot ergotamine ergotaminine ergoted ergothioneine ergotic ergotin ergotinine ergotism ergotist ergotization ergotize ergotoxin ergotoxine ergusia eria Erian Erianthus Eric eric Erica Ericaceae ericaceous ericad erical Ericales ericetal ericeticolous ericetum erichthus erichtoid ericineous ericius ericoid ericolin ericophyte Eridanid Erie Erigenia Erigeron erigible Eriglossa eriglossate erika erikite Erinaceidae erinaceous Erinaceus erineum erinite Erinize erinose Eriobotrya Eriocaulaceae eriocaulaceous Eriocaulon Eriocomi Eriodendron Eriodictyon erioglaucine Eriogonum eriometer erionite Eriophorum Eriophyes Eriophyidae eriophyllous Eriosoma Eriphyle Eristalis eristic eristical eristically Erithacus Eritrean erizo erlking Erma Ermanaric Ermani Ermanrich ermelin ermine ermined erminee ermines erminites erminois erne Ernest Ernestine erode eroded erodent erodible Erodium erogeneity erogenesis erogenetic erogenic erogenous erogeny Eros eros erose erosely erosible erosion erosional erosionist erosive erostrate eroteme erotesis erotetic erotic erotica erotical erotically eroticism eroticize eroticomania erotism erotogenesis erotogenetic erotogenic erotogenicity erotomania erotomaniac erotopath erotopathic erotopathy Erotylidae Erpetoichthys erpetologist err errability errable errableness errabund errancy errand errant Errantia errantly errantness errantry errata erratic erratical erratically erraticalness erraticism erraticness erratum errhine erring erringly errite erroneous erroneously erroneousness error errorful errorist errorless ers Ersar ersatz Erse Ertebolle erth erthen erthling erthly erubescence erubescent erubescite eruc Eruca eruca erucic eruciform erucin erucivorous eruct eructance eructation eructative eruction erudit erudite eruditely eruditeness eruditical erudition eruditional eruditionist erugate erugation erugatory erumpent erupt eruption eruptional eruptive eruptively eruptiveness eruptivity ervenholder Ervipiame Ervum Erwinia eryhtrism Erymanthian Eryngium eryngo Eryon Eryops Erysibe Erysimum erysipelas erysipelatoid erysipelatous erysipeloid Erysipelothrix erysipelous Erysiphaceae Erysiphe Erythea erythema erythematic erythematous erythemic Erythraea Erythraean Erythraeidae erythrasma erythrean erythremia erythremomelalgia erythrene erythrin Erythrina erythrine Erythrinidae Erythrinus erythrismal erythristic erythrite erythritic erythritol erythroblast erythroblastic erythroblastosis erythrocarpous erythrocatalysis Erythrochaete erythrochroic erythrochroism erythroclasis erythroclastic erythrocyte erythrocytic erythrocytoblast erythrocytolysin erythrocytolysis erythrocytolytic erythrocytometer erythrocytorrhexis erythrocytoschisis erythrocytosis erythrodegenerative erythrodermia erythrodextrin erythrogenesis erythrogenic erythroglucin erythrogonium erythroid erythrol erythrolein erythrolitmin erythrolysin erythrolysis erythrolytic erythromelalgia erythron erythroneocytosis Erythronium erythronium erythropenia erythrophage erythrophagous erythrophilous erythrophleine erythrophobia erythrophore erythrophyll erythrophyllin erythropia erythroplastid erythropoiesis erythropoietic erythropsia erythropsin erythrorrhexis erythroscope erythrose erythrosiderite erythrosin erythrosinophile erythrosis Erythroxylaceae erythroxylaceous erythroxyline Erythroxylon Erythroxylum erythrozincite erythrozyme erythrulose Eryx es esca escadrille escalade escalader escalado escalan escalate Escalator escalator escalin Escallonia Escalloniaceae escalloniaceous escalop escaloped escambio escambron escapable escapade escapage escape escapee escapeful escapeless escapement escaper escapingly escapism escapist escarbuncle escargatoire escarole escarp escarpment eschalot eschar eschara escharine escharoid escharotic eschatocol eschatological eschatologist eschatology escheat escheatable escheatage escheatment escheator escheatorship Escherichia eschew eschewal eschewance eschewer Eschscholtzia eschynite esclavage escoba escobadura escobilla escobita escolar esconson escopette Escorial escort escortage escortee escortment escribe escritoire escritorial escrol escropulo escrow escruage escudo Esculapian esculent esculetin esculin escutcheon escutcheoned escutellate esdragol Esdras Esebrias esemplastic esemplasy eseptate esere eserine esexual eshin esiphonal esker Eskimauan Eskimo Eskimoic Eskimoid Eskimoized Eskualdun Eskuara Esmeralda Esmeraldan esmeraldite esne esoanhydride esocataphoria Esocidae esociform esocyclic esodic esoenteritis esoethmoiditis esogastritis esonarthex esoneural esophagal esophagalgia esophageal esophagean esophagectasia esophagectomy esophagi esophagism esophagismus esophagitis esophago esophagocele esophagodynia esophagogastroscopy esophagogastrostomy esophagomalacia esophagometer esophagomycosis esophagopathy esophagoplasty esophagoplegia esophagoplication esophagoptosis esophagorrhagia esophagoscope esophagoscopy esophagospasm esophagostenosis esophagostomy esophagotome esophagotomy esophagus esophoria esophoric Esopus esoteric esoterica esoterical esoterically esotericism esotericist esoterics esoterism esoterist esoterize esotery esothyropexy esotrope esotropia esotropic Esox espacement espadon espalier espantoon esparcet esparsette esparto espathate espave especial especially especialness esperance Esperantic Esperantidist Esperantido Esperantism Esperantist Esperanto espial espichellite espier espinal espingole espinillo espino espionage esplanade esplees esponton espousal espouse espousement espouser Espriella espringal espundia espy esquamate esquamulose Esquiline esquire esquirearchy esquiredom esquireship ess essang essay essayer essayette essayical essayish essayism essayist essayistic essayistical essaylet essed Essedones Esselen Esselenian essence essency Essene Essenian Essenianism Essenic Essenical Essenis Essenism Essenize essentia essential essentialism essentialist essentiality essentialize essentially essentialness essenwood Essex essexite Essie essling essoin essoinee essoiner essoinment essonite essorant establish establishable established establisher establishment establishmentarian establishmentarianism establishmentism estacade estadal estadio estado estafette estafetted estamene estamp estampage estampede estampedero estate estatesman esteem esteemable esteemer Estella ester esterase esterellite esteriferous esterification esterify esterization esterize esterlin esterling estevin Esth Esthacyte esthematology Esther Estheria estherian Estheriidae esthesia esthesio esthesioblast esthesiogen esthesiogenic esthesiogeny esthesiography esthesiology esthesiometer esthesiometric esthesiometry esthesioneurosis esthesiophysiology esthesis esthetology esthetophore esthiomene estimable estimableness estimably estimate estimatingly estimation estimative estimator estipulate estivage estival estivate estivation estivator estmark estoc estoile Estonian estop estoppage estoppel Estotiland estovers estrade estradiol estradiot estragole estrange estrangedness estrangement estranger estrapade estray estre estreat estrepe estrepement estriate estriche estrin estriol estrogen estrogenic estrone estrous estrual estruate estruation estuarial estuarine estuary estufa estuous estus esugarization esurience esurient esuriently eta etaballi etacism etacist etalon Etamin etamine etch Etchareottine etcher Etchimin etching Eteoclus Eteocretes Eteocreton eternal eternalism eternalist eternalization eternalize eternally eternalness eternity eternization eternize etesian ethal ethaldehyde Ethan ethanal ethanamide ethane ethanedial ethanediol ethanedithiol ethanethial ethanethiol Ethanim ethanol ethanolamine ethanolysis ethanoyl Ethel ethel ethene Etheneldeli ethenic ethenoid ethenoidal ethenol ethenyl Etheostoma Etheostomidae Etheostominae etheostomoid ether etherate ethereal etherealism ethereality etherealization etherealize ethereally etherealness etherean ethered ethereous Etheria etheric etherification etheriform etherify Etheriidae etherin etherion etherism etherization etherize etherizer etherolate etherous ethic ethical ethicalism ethicality ethically ethicalness ethician ethicism ethicist ethicize ethicoaesthetic ethicophysical ethicopolitical ethicoreligious ethicosocial ethics ethid ethide ethidene ethine ethiodide ethionic Ethiop Ethiopia Ethiopian Ethiopic ethiops ethmofrontal ethmoid ethmoidal ethmoiditis ethmolachrymal ethmolith ethmomaxillary ethmonasal ethmopalatal ethmopalatine ethmophysal ethmopresphenoidal ethmosphenoid ethmosphenoidal ethmoturbinal ethmoturbinate ethmovomer ethmovomerine ethmyphitis ethnal ethnarch ethnarchy ethnic ethnical ethnically ethnicism ethnicist ethnicize ethnicon ethnize ethnobiological ethnobiology ethnobotanic ethnobotanical ethnobotanist ethnobotany ethnocentric ethnocentrism ethnocracy ethnodicy ethnoflora ethnogenic ethnogeny ethnogeographer ethnogeographic ethnogeographical ethnogeographically ethnogeography ethnographer ethnographic ethnographical ethnographically ethnographist ethnography ethnologer ethnologic ethnological ethnologically ethnologist ethnology ethnomaniac ethnopsychic ethnopsychological ethnopsychology ethnos ethnotechnics ethnotechnography ethnozoological ethnozoology ethography etholide ethologic ethological ethology ethonomic ethonomics ethopoeia ethos ethoxide ethoxycaffeine ethoxyl ethrog ethyl ethylamide ethylamine ethylate ethylation ethylene ethylenediamine ethylenic ethylenimine ethylenoid ethylhydrocupreine ethylic ethylidene ethylidyne ethylin ethylmorphine ethylsulphuric ethyne ethynyl etiogenic etiolate etiolation etiolin etiolize etiological etiologically etiologist etiologue etiology etiophyllin etioporphyrin etiotropic etiotropically etiquette etiquettical etna Etnean Etonian Etrurian Etruscan Etruscologist Etruscology Etta Ettarre ettle etua etude etui etym etymic etymography etymologer etymologic etymological etymologically etymologicon etymologist etymologization etymologize etymology etymon etymonic etypic etypical etypically eu Euahlayi euangiotic Euascomycetes euaster Eubacteriales eubacterium Eubasidii Euboean Euboic Eubranchipus eucaine eucairite eucalypt eucalypteol eucalyptian eucalyptic eucalyptography eucalyptol eucalyptole Eucalyptus eucalyptus Eucarida eucatropine eucephalous Eucharis Eucharist eucharistial eucharistic eucharistical Eucharistically eucharistically eucharistize Eucharitidae Euchite Euchlaena euchlorhydria euchloric euchlorine Euchlorophyceae euchological euchologion euchology Euchorda euchre euchred euchroic euchroite euchromatic euchromatin euchrome euchromosome euchrone Eucirripedia euclase Euclea Eucleidae Euclid Euclidean Euclideanism Eucnemidae eucolite Eucommia Eucommiaceae eucone euconic Euconjugatae Eucopepoda Eucosia eucosmid Eucosmidae eucrasia eucrasite eucrasy eucrite Eucryphia Eucryphiaceae eucryphiaceous eucryptite eucrystalline euctical eucyclic eudaemon eudaemonia eudaemonic eudaemonical eudaemonics eudaemonism eudaemonist eudaemonistic eudaemonistical eudaemonistically eudaemonize eudaemony eudaimonia eudaimonism eudaimonist Eudemian Eudendrium Eudeve eudiagnostic eudialyte eudiaphoresis eudidymite eudiometer eudiometric eudiometrical eudiometrically eudiometry eudipleural Eudist Eudora Eudorina Eudoxian Eudromias Eudyptes Euergetes euge Eugene eugenesic eugenesis eugenetic Eugenia eugenic eugenical eugenically eugenicist eugenics Eugenie eugenism eugenist eugenol eugenolate eugeny Euglandina Euglena Euglenaceae Euglenales Euglenida Euglenidae Euglenineae euglenoid Euglenoidina euglobulin eugranitic Eugregarinida Eugubine Eugubium euharmonic euhedral euhemerism euhemerist euhemeristic euhemeristically euhemerize euhyostylic euhyostyly euktolite eulachon Eulalia eulalia eulamellibranch Eulamellibranchia Eulamellibranchiata Eulima Eulimidae eulogia eulogic eulogical eulogically eulogious eulogism eulogist eulogistic eulogistical eulogistically eulogium eulogization eulogize eulogizer eulogy eulysite eulytine eulytite Eumenes eumenid Eumenidae Eumenidean Eumenides eumenorrhea eumerism eumeristic eumerogenesis eumerogenetic eumeromorph eumeromorphic eumitosis eumitotic eumoiriety eumoirous Eumolpides Eumolpus eumorphous eumycete Eumycetes eumycetic Eunectes Eunice eunicid Eunicidae Eunomia Eunomian Eunomianism eunomy eunuch eunuchal eunuchism eunuchize eunuchoid eunuchoidism eunuchry euomphalid Euomphalus euonym euonymin euonymous Euonymus euonymy Euornithes euornithic Euorthoptera euosmite euouae eupad Eupanorthidae Eupanorthus eupathy eupatoriaceous eupatorin Eupatorium eupatory eupatrid eupatridae eupepsia eupepsy eupeptic eupepticism eupepticity Euphausia Euphausiacea euphausiid Euphausiidae Euphemia euphemian euphemious euphemiously euphemism euphemist euphemistic euphemistical euphemistically euphemize euphemizer euphemous euphemy euphon euphone euphonetic euphonetics euphonia euphonic euphonical euphonically euphonicalness euphonious euphoniously euphoniousness euphonism euphonium euphonize euphonon euphonous euphony euphonym Euphorbia Euphorbiaceae euphorbiaceous euphorbium euphoria euphoric euphory Euphrasia euphrasy Euphratean euphroe Euphrosyne Euphues euphuism euphuist euphuistic euphuistical euphuistically euphuize Euphyllopoda eupione eupittonic euplastic Euplectella Euplexoptera Euplocomi Euploeinae euploid euploidy eupnea Eupolidean Eupolyzoa eupolyzoan Eupomatia Eupomatiaceae eupractic eupraxia Euprepia Euproctis eupsychics Euptelea Eupterotidae eupyrchroite eupyrene eupyrion Eurafric Eurafrican Euraquilo Eurasian Eurasianism Eurasiatic eureka eurhodine eurhodol Eurindic Euripidean euripus eurite Euroaquilo eurobin Euroclydon Europa Europasian European Europeanism Europeanization Europeanize Europeanly Europeward europium Europocentric Eurus Euryalae Euryale Euryaleae euryalean Euryalida euryalidan Euryalus eurybathic eurybenthic eurycephalic eurycephalous Eurycerotidae Euryclea Eurydice Eurygaea Eurygaean eurygnathic eurygnathism eurygnathous euryhaline Eurylaimi Eurylaimidae eurylaimoid Eurylaimus Eurymus euryon Eurypelma Eurypharyngidae Eurypharynx euryprognathous euryprosopic eurypterid Eurypterida eurypteroid Eurypteroidea Eurypterus Eurypyga Eurypygae Eurypygidae eurypylous euryscope Eurystheus eurystomatous eurythermal eurythermic eurythmic eurythmical eurythmics eurythmy eurytomid Eurytomidae Eurytus euryzygous Euscaro Eusebian Euselachii Euskaldun Euskara Euskarian Euskaric Euskera eusol Euspongia eusporangiate Eustace Eustachian eustachium Eustathian eustatic Eusthenopteron eustomatous eustyle Eusuchia eusuchian eusynchite Eutaenia eutannin eutaxic eutaxite eutaxitic eutaxy eutechnic eutechnics eutectic eutectoid Euterpe Euterpean eutexia Euthamia euthanasia euthanasy euthenics euthenist Eutheria eutherian euthermic Euthycomi euthycomic Euthyneura euthyneural euthyneurous euthytatic euthytropic eutomous eutony Eutopia Eutopian eutrophic eutrophy eutropic eutropous Eutychian Eutychianism euxanthate euxanthic euxanthone euxenite Euxine Eva evacuant evacuate evacuation evacuative evacuator evacue evacuee evadable evade evader evadingly Evadne evagation evaginable evaginate evagination evaluable evaluate evaluation evaluative evalue Evan evanesce evanescence evanescency evanescent evanescently evanescible evangel evangelary evangelian evangeliarium evangeliary evangelical evangelicalism evangelicality evangelically evangelicalness evangelican evangelicism evangelicity Evangeline evangelion evangelism evangelist evangelistarion evangelistarium evangelistary evangelistic evangelistically evangelistics evangelistship evangelium evangelization evangelize evangelizer Evaniidae evanish evanishment evanition evansite evaporability evaporable evaporate evaporation evaporative evaporativity evaporator evaporimeter evaporize evaporometer evase evasible evasion evasional evasive evasively evasiveness Eve eve Evea evechurr evection evectional Evehood evejar Eveless evelight Evelina Eveline evelong Evelyn even evenblush evendown evener evenfall evenforth evenglow evenhanded evenhandedly evenhandedness evening evenlight evenlong evenly evenmete evenminded evenmindedness evenness evens evensong event eventful eventfully eventfulness eventide eventime eventless eventlessly eventlessness eventognath Eventognathi eventognathous eventration eventual eventuality eventualize eventually eventuate eventuation evenwise evenworthy eveque ever Everard everbearer everbearing everbloomer everblooming everduring everglade evergreen evergreenery evergreenite everlasting everlastingly everlastingness everliving evermore Evernia evernioid eversible eversion eversive eversporting evert evertebral Evertebrata evertebrate evertile evertor everwhich everwho every everybody everyday everydayness everyhow everylike Everyman everyman everyness everyone everything everywhen everywhence everywhere everywhereness everywheres everywhither evestar evetide eveweed evict eviction evictor evidence evidencive evident evidential evidentially evidentiary evidently evidentness evil evildoer evilhearted evilly evilmouthed evilness evilproof evilsayer evilspeaker evilspeaking evilwishing evince evincement evincible evincibly evincingly evincive evirate eviration eviscerate evisceration evisite evitable evitate evitation evittate evocable evocate evocation evocative evocatively evocator evocatory evocatrix Evodia evoe evoke evoker evolute evolution evolutional evolutionally evolutionary evolutionism evolutionist evolutionize evolutive evolutoid evolvable evolve evolvement evolvent evolver Evonymus evovae evulgate evulgation evulse evulsion evzone ewder Ewe ewe ewelease ewer ewerer ewery ewry ex exacerbate exacerbation exacerbescence exacerbescent exact exactable exacter exacting exactingly exactingness exaction exactitude exactive exactiveness exactly exactment exactness exactor exactress exadversum exaggerate exaggerated exaggeratedly exaggerating exaggeratingly exaggeration exaggerative exaggeratively exaggerativeness exaggerator exaggeratory exagitate exagitation exairesis exalate exalbuminose exalbuminous exallotriote exalt exaltation exaltative exalted exaltedly exaltedness exalter exam examen examinability examinable examinant examinate examination examinational examinationism examinationist examinative examinator examinatorial examinatory examine examinee examiner examinership examining examiningly example exampleless exampleship exanimate exanimation exanthem exanthema exanthematic exanthematous exappendiculate exarate exaration exarch exarchal exarchate exarchateship Exarchic Exarchist exarchist exarchy exareolate exarillate exaristate exarteritis exarticulate exarticulation exasperate exasperated exasperatedly exasperater exasperating exasperatingly exasperation exasperative exaspidean Exaudi exaugurate exauguration excalate excalation excalcarate excalceate excalceation Excalibur excamb excamber excambion excandescence excandescency excandescent excantation excarnate excarnation excathedral excaudate excavate excavation excavationist excavator excavatorial excavatory excave excecate excecation excedent exceed exceeder exceeding exceedingly exceedingness excel excelente excellence excellency excellent excellently excelsin Excelsior excelsior excelsitude excentral excentric excentrical excentricity except exceptant excepting exception exceptionable exceptionableness exceptionably exceptional exceptionality exceptionally exceptionalness exceptionary exceptionless exceptious exceptiousness exceptive exceptively exceptiveness exceptor excerebration excerpt excerptible excerption excerptive excerptor excess excessive excessively excessiveness excessman exchange exchangeability exchangeable exchangeably exchanger Exchangite Exchequer exchequer excide excipient exciple Excipulaceae excipular excipule excipuliform excipulum excircle excisable excise exciseman excisemanship excision excisor excitability excitable excitableness excitancy excitant excitation excitative excitator excitatory excite excited excitedly excitedness excitement exciter exciting excitingly excitive excitoglandular excitometabolic excitomotion excitomotor excitomotory excitomuscular excitonutrient excitor excitory excitosecretory excitovascular exclaim exclaimer exclaiming exclaimingly exclamation exclamational exclamative exclamatively exclamatorily exclamatory exclave exclosure excludable exclude excluder excluding excludingly exclusion exclusionary exclusioner exclusionism exclusionist exclusive exclusively exclusiveness exclusivism exclusivist exclusivity exclusory Excoecaria excogitable excogitate excogitation excogitative excogitator excommunicable excommunicant excommunicate excommunication excommunicative excommunicator excommunicatory exconjugant excoriable excoriate excoriation excoriator excorticate excortication excrement excremental excrementary excrementitial excrementitious excrementitiously excrementitiousness excrementive excresce excrescence excrescency excrescent excrescential excreta excretal excrete excreter excretes excretion excretionary excretitious excretive excretory excriminate excruciable excruciate excruciating excruciatingly excruciation excruciator excubant excudate exculpable exculpate exculpation exculpative exculpatorily exculpatory excurrent excurse excursion excursional excursionary excursioner excursionism excursionist excursionize excursive excursively excursiveness excursory excursus excurvate excurvated excurvation excurvature excurved excusability excusable excusableness excusably excusal excusative excusator excusatory excuse excuseful excusefully excuseless excuser excusing excusingly excusive excuss excyst excystation excysted excystment exdelicto exdie exeat execrable execrableness execrably execrate execration execrative execratively execrator execratory executable executancy executant execute executed executer execution executional executioneering executioner executioneress executionist executive executively executiveness executiveship executor executorial executorship executory executress executrices executrix executrixship executry exedent exedra exegeses exegesis exegesist exegete exegetic exegetical exegetically exegetics exegetist exemplar exemplaric exemplarily exemplariness exemplarism exemplarity exemplary exemplifiable exemplification exemplificational exemplificative exemplificator exemplifier exemplify exempt exemptible exemptile exemption exemptionist exemptive exencephalia exencephalic exencephalous exencephalus exendospermic exendospermous exenterate exenteration exequatur exequial exequy exercisable exercise exerciser exercitant exercitation exercitor exercitorial exercitorian exeresis exergual exergue exert exertion exertionless exertive exes exeunt exfiguration exfigure exfiltration exflagellate exflagellation exflect exfodiate exfodiation exfoliate exfoliation exfoliative exfoliatory exgorgitation exhalable exhalant exhalation exhalatory exhale exhaust exhausted exhaustedly exhaustedness exhauster exhaustibility exhaustible exhausting exhaustingly exhaustion exhaustive exhaustively exhaustiveness exhaustless exhaustlessly exhaustlessness exheredate exheredation exhibit exhibitable exhibitant exhibiter exhibition exhibitional exhibitioner exhibitionism exhibitionist exhibitionistic exhibitionize exhibitive exhibitively exhibitor exhibitorial exhibitorship exhibitory exhilarant exhilarate exhilarating exhilaratingly exhilaration exhilarative exhilarator exhilaratory exhort exhortation exhortative exhortatively exhortator exhortatory exhorter exhortingly exhumate exhumation exhumator exhumatory exhume exhumer exigence exigency exigent exigenter exigently exigible exiguity exiguous exiguously exiguousness exilarch exilarchate exile exiledom exilement exiler exilian exilic exility eximious eximiously eximiousness exinanite exinanition exindusiate exinguinal exist existability existence existent existential existentialism existentialist existentialistic existentialize existentially existently exister existibility existible existlessness exit exite exition exitus exlex exmeridian Exmoor exoarteritis Exoascaceae exoascaceous Exoascales Exoascus Exobasidiaceae Exobasidiales Exobasidium exocannibalism exocardia exocardiac exocardial exocarp exocataphoria exoccipital exocentric Exochorda exochorion exoclinal exocline exocoelar exocoele exocoelic exocoelom Exocoetidae Exocoetus exocolitis exocone exocrine exoculate exoculation exocyclic Exocyclica Exocycloida exode exoderm exodermis exodic exodist exodontia exodontist exodos exodromic exodromy exodus exody exoenzyme exoenzymic exoerythrocytic exogamic exogamous exogamy exogastric exogastrically exogastritis exogen Exogenae exogenetic exogenic exogenous exogenously exogeny exognathion exognathite Exogonium Exogyra exolemma exometritis exomion exomis exomologesis exomorphic exomorphism exomphalos exomphalous exomphalus Exon exon exonarthex exoner exonerate exoneration exonerative exonerator exoneural Exonian exonship exopathic exoperidium exophagous exophagy exophasia exophasic exophoria exophoric exophthalmic exophthalmos exoplasm exopod exopodite exopoditic Exopterygota exopterygotic exopterygotism exopterygotous exorability exorable exorableness exorbital exorbitance exorbitancy exorbitant exorbitantly exorbitate exorbitation exorcisation exorcise exorcisement exorciser exorcism exorcismal exorcisory exorcist exorcistic exorcistical exordia exordial exordium exordize exorganic exorhason exormia exornation exosepsis exoskeletal exoskeleton exosmic exosmose exosmosis exosmotic exosperm exosporal exospore exosporium exosporous Exostema exostome exostosed exostosis exostotic exostra exostracism exostracize exoteric exoterical exoterically exotericism exoterics exotheca exothecal exothecate exothecium exothermal exothermic exothermous exotic exotically exoticalness exoticism exoticist exoticity exoticness exotism exotospore exotoxic exotoxin exotropia exotropic exotropism expalpate expand expanded expandedly expandedness expander expanding expandingly expanse expansibility expansible expansibleness expansibly expansile expansion expansional expansionary expansionism expansionist expansive expansively expansiveness expansivity expansometer expansure expatiate expatiater expatiatingly expatiation expatiative expatiator expatiatory expatriate expatriation expect expectable expectance expectancy expectant expectantly expectation expectative expectedly expecter expectingly expective expectorant expectorate expectoration expectorative expectorator expede expediate expedience expediency expedient expediential expedientially expedientist expediently expeditate expeditation expedite expedited expeditely expediteness expediter expedition expeditionary expeditionist expeditious expeditiously expeditiousness expel expellable expellant expellee expeller expend expendability expendable expender expendible expenditor expenditrix expenditure expense expenseful expensefully expensefulness expenseless expensilation expensive expensively expensiveness expenthesis expergefacient expergefaction experience experienceable experienced experienceless experiencer experiencible experient experiential experientialism experientialist experientially experiment experimental experimentalism experimentalist experimentalize experimentally experimentarian experimentation experimentative experimentator experimented experimentee experimenter experimentist experimentize experimently expert expertism expertize expertly expertness expertship expiable expiate expiation expiational expiatist expiative expiator expiatoriness expiatory expilate expilation expilator expirable expirant expirate expiration expirator expiratory expire expiree expirer expiring expiringly expiry expiscate expiscation expiscator expiscatory explain explainable explainer explaining explainingly explanate explanation explanative explanatively explanator explanatorily explanatoriness explanatory explant explantation explement explemental expletive expletively expletiveness expletory explicable explicableness explicate explication explicative explicatively explicator explicatory explicit explicitly explicitness explodable explode exploded explodent exploder exploit exploitable exploitage exploitation exploitationist exploitative exploiter exploitive exploiture explorable exploration explorational explorative exploratively explorativeness explorator exploratory explore explorement explorer exploring exploringly explosibility explosible explosion explosionist explosive explosively explosiveness expone exponence exponency exponent exponential exponentially exponentiation exponible export exportability exportable exportation exporter exposal expose exposed exposedness exposer exposit exposition expositional expositionary expositive expositively expositor expositorial expositorially expositorily expositoriness expository expositress expostulate expostulating expostulatingly expostulation expostulative expostulatively expostulator expostulatory exposure expound expoundable expounder express expressable expressage expressed expresser expressibility expressible expressibly expression expressionable expressional expressionful expressionism expressionist expressionistic expressionless expressionlessly expressionlessness expressive expressively expressiveness expressivism expressivity expressless expressly expressman expressness expressway exprimable exprobrate exprobration exprobratory expromission expromissor expropriable expropriate expropriation expropriator expugn expugnable expuition expulsatory expulse expulser expulsion expulsionist expulsive expulsory expunction expunge expungeable expungement expunger expurgate expurgation expurgative expurgator expurgatorial expurgatory expurge exquisite exquisitely exquisiteness exquisitism exquisitively exradio exradius exrupeal exsanguinate exsanguination exsanguine exsanguineous exsanguinity exsanguinous exsanguious exscind exscissor exscriptural exsculptate exscutellate exsect exsectile exsection exsector exsequatur exsert exserted exsertile exsertion exship exsibilate exsibilation exsiccant exsiccatae exsiccate exsiccation exsiccative exsiccator exsiliency exsomatic exspuition exsputory exstipulate exstrophy exsuccous exsuction exsufflate exsufflation exsufflicate exsurge exsurgent extant extemporal extemporally extemporalness extemporaneity extemporaneous extemporaneously extemporaneousness extemporarily extemporariness extemporary extempore extemporization extemporize extemporizer extend extended extendedly extendedness extender extendibility extendible extending extense extensibility extensible extensibleness extensile extensimeter extension extensional extensionist extensity extensive extensively extensiveness extensometer extensor extensory extensum extent extenuate extenuating extenuatingly extenuation extenuative extenuator extenuatory exter exterior exteriorate exterioration exteriority exteriorization exteriorize exteriorly exteriorness exterminable exterminate extermination exterminative exterminator exterminatory exterminatress exterminatrix exterminist extern external externalism externalist externalistic externality externalization externalize externally externals externate externation externe externity externization externize externomedian externum exteroceptist exteroceptive exteroceptor exterraneous exterrestrial exterritorial exterritoriality exterritorialize exterritorially extima extinct extinction extinctionist extinctive extinctor extine extinguish extinguishable extinguishant extinguished extinguisher extinguishment extipulate extirpate extirpation extirpationist extirpative extirpator extirpatory extispex extispicious extispicy extogenous extol extoll extollation extoller extollingly extollment extolment extoolitic extorsive extorsively extort extorter extortion extortionary extortionate extortionately extortioner extortionist extortive extra extrabold extrabranchial extrabronchial extrabuccal extrabulbar extrabureau extraburghal extracalendar extracalicular extracanonical extracapsular extracardial extracarpal extracathedral extracellular extracellularly extracerebral extracivic extracivically extraclassroom extraclaustral extracloacal extracollegiate extracolumella extraconscious extraconstellated extraconstitutional extracorporeal extracorpuscular extracosmic extracosmical extracostal extracranial extract extractable extractant extracted extractible extractiform extraction extractive extractor extractorship extracultural extracurial extracurricular extracurriculum extracutaneous extracystic extradecretal extradialectal extraditable extradite extradition extradomestic extrados extradosed extradotal extraduction extradural extraembryonic extraenteric extraepiphyseal extraequilibrium extraessential extraessentially extrafascicular extrafloral extrafocal extrafoliaceous extraforaneous extraformal extragalactic extragastric extrait extrajudicial extrajudicially extralateral extralite extrality extramarginal extramatrical extramedullary extramental extrameridian extrameridional extrametaphysical extrametrical extrametropolitan extramodal extramolecular extramorainal extramorainic extramoral extramoralist extramundane extramural extramurally extramusical extranational extranatural extranean extraneity extraneous extraneously extraneousness extranidal extranormal extranuclear extraocular extraofficial extraoral extraorbital extraorbitally extraordinarily extraordinariness extraordinary extraorganismal extraovate extraovular extraparenchymal extraparental extraparietal extraparliamentary extraparochial extraparochially extrapatriarchal extrapelvic extraperineal extraperiodic extraperiosteal extraperitoneal extraphenomenal extraphysical extraphysiological extrapituitary extraplacental extraplanetary extrapleural extrapoetical extrapolar extrapolate extrapolation extrapolative extrapolator extrapopular extraprofessional extraprostatic extraprovincial extrapulmonary extrapyramidal extraquiz extrared extraregarding extraregular extraregularly extrarenal extraretinal extrarhythmical extrasacerdotal extrascholastic extraschool extrascientific extrascriptural extrascripturality extrasensible extrasensory extrasensuous extraserous extrasocial extrasolar extrasomatic extraspectral extraspherical extraspinal extrastapedial extrastate extrasterile extrastomachal extrasyllabic extrasyllogistic extrasyphilitic extrasystole extrasystolic extratabular extratarsal extratellurian extratelluric extratemporal extratension extratensive extraterrene extraterrestrial extraterritorial extraterritoriality extraterritorially extrathecal extratheistic extrathermodynamic extrathoracic extratorrid extratracheal extratribal extratropical extratubal extratympanic extrauterine extravagance extravagancy extravagant Extravagantes extravagantly extravagantness extravaganza extravagate extravaginal extravasate extravasation extravascular extraventricular extraversion extravert extravillar extraviolet extravisceral extrazodiacal extreme extremeless extremely extremeness extremism extremist extremistic extremital extremity extricable extricably extricate extricated extrication extrinsic extrinsical extrinsicality extrinsically extrinsicalness extrinsicate extrinsication extroitive extropical extrorsal extrorse extrorsely extrospect extrospection extrospective extroversion extroversive extrovert extrovertish extrude extruder extruding extrusile extrusion extrusive extrusory extubate extubation extumescence extund extusion exuberance exuberancy exuberant exuberantly exuberantness exuberate exuberation exudate exudation exudative exude exudence exulcerate exulceration exulcerative exulceratory exult exultance exultancy exultant exultantly exultation exultet exultingly exululate exumbral exumbrella exumbrellar exundance exundancy exundate exundation exuviability exuviable exuviae exuvial exuviate exuviation exzodiacal ey eyah eyalet eyas eye eyeball eyebalm eyebar eyebeam eyeberry eyeblink eyebolt eyebree eyebridled eyebright eyebrow eyecup eyed eyedness eyedot eyedrop eyeflap eyeful eyeglance eyeglass eyehole Eyeish eyelash eyeless eyelessness eyelet eyeleteer eyeletter eyelid eyelight eyelike eyeline eyemark eyen eyepiece eyepit eyepoint eyer eyereach eyeroot eyesalve eyeseed eyeservant eyeserver eyeservice eyeshade eyeshield eyeshot eyesight eyesome eyesore eyespot eyestalk eyestone eyestrain eyestring eyetooth eyewaiter eyewash eyewater eyewear eyewink eyewinker eyewitness eyewort eyey eying eyn eyne eyot eyoty eyra eyre eyrie eyrir ezba Ezekiel Ezra F f fa Faba Fabaceae fabaceous fabella fabes Fabian Fabianism Fabianist fabiform fable fabled fabledom fableist fableland fablemaker fablemonger fablemongering fabler fabliau fabling Fabraea fabric fabricant fabricate fabrication fabricative fabricator fabricatress Fabrikoid fabrikoid Fabronia Fabroniaceae fabular fabulist fabulosity fabulous fabulously fabulousness faburden facadal facade face faceable facebread facecloth faced faceless facellite facemaker facemaking faceman facemark facepiece faceplate facer facet facete faceted facetely faceteness facetiae facetiation facetious facetiously facetiousness facewise facework facia facial facially faciation faciend facient facies facile facilely facileness facilitate facilitation facilitative facilitator facility facing facingly facinorous facinorousness faciobrachial faciocervical faciolingual facioplegia facioscapulohumeral fack fackeltanz fackings fackins facks facsimile facsimilist facsimilize fact factable factabling factful Factice facticide faction factional factionalism factionary factioneer factionist factionistism factious factiously factiousness factish factitial factitious factitiously factitive factitively factitude factive factor factorability factorable factorage factordom factoress factorial factorially factorist factorization factorize factorship factory factoryship factotum factrix factual factuality factually factualness factum facture facty facula facular faculous facultate facultative facultatively facultied facultize faculty facund facy fad fadable faddiness faddish faddishness faddism faddist faddle faddy fade fadeaway faded fadedly fadedness fadeless faden fader fadge fading fadingly fadingness fadmonger fadmongering fadmongery fadridden fady fae faerie Faeroe faery faeryland faff faffle faffy fag Fagaceae fagaceous fagald Fagales Fagara fage Fagelia fager fagger faggery fagging faggingly fagine fagopyrism fagopyrismus Fagopyrum fagot fagoter fagoting fagottino fagottist fagoty Fagus faham fahlerz fahlore fahlunite Fahrenheit faience fail failing failingly failingness faille failure fain fainaigue fainaiguer faineance faineancy faineant faineantism fainly fainness fains faint fainter faintful faintheart fainthearted faintheartedly faintheartedness fainting faintingly faintish faintishness faintly faintness faints fainty faipule fair fairer fairfieldite fairgoer fairgoing fairgrass fairground fairily fairing fairish fairishly fairkeeper fairlike fairling fairly fairm fairness fairstead fairtime fairwater fairway fairy fairydom fairyfolk fairyhood fairyish fairyism fairyland fairylike fairyologist fairyology fairyship faith faithbreach faithbreaker faithful faithfully faithfulness faithless faithlessly faithlessness faithwise faithworthiness faithworthy faitour fake fakement faker fakery fakiness fakir fakirism Fakofo faky falanaka Falange Falangism Falangist Falasha falbala falcade Falcata falcate falcated falcation falcer falces falchion falcial Falcidian falciform Falcinellus falciparum Falco falcon falconbill falconelle falconer Falcones falconet Falconidae Falconiformes Falconinae falconine falconlike falconoid falconry falcopern falcula falcular falculate Falcunculus faldage falderal faldfee faldstool Falerian Falernian Falerno Faliscan Falisci Falkland fall fallace fallacious fallaciously fallaciousness fallacy fallage fallation fallaway fallback fallectomy fallen fallenness faller fallfish fallibility fallible fallibleness fallibly falling Fallopian fallostomy fallotomy fallow fallowist fallowness falltime fallway fally falsary false falsehearted falseheartedly falseheartedness falsehood falsely falsen falseness falser falsettist falsetto falsework falsidical falsie falsifiable falsificate falsification falsificator falsifier falsify falsism Falstaffian faltboat faltche falter falterer faltering falteringly Falunian Faluns falutin falx fam Fama famatinite famble fame fameflower fameful fameless famelessly famelessness Fameuse fameworthy familia familial familiar familiarism familiarity familiarization familiarize familiarizer familiarizingly familiarly familiarness familism familist familistery familistic familistical family familyish famine famish famishment famous famously famousness famulary famulus Fan fan fana fanal fanam fanatic fanatical fanatically fanaticalness fanaticism fanaticize fanback fanbearer fanciable fancical fancied fancier fanciful fancifully fancifulness fancify fanciless fancy fancymonger fancysick fancywork fand fandangle fandango fandom fanega fanegada fanfarade Fanfare fanfare fanfaron fanfaronade fanfaronading fanflower fanfoot fang fanged fangle fangled fanglement fangless fanglet fanglomerate fangot fangy fanhouse faniente fanion fanioned fanlight fanlike fanmaker fanmaking fanman fannel fanner Fannia fannier fanning Fanny fanon fant fantail fantasia fantasie fantasied fantasist fantasque fantassin fantast fantastic fantastical fantasticality fantastically fantasticalness fantasticate fantastication fantasticism fantasticly fantasticness fantastico fantastry fantasy Fanti fantigue fantoccini fantocine fantod fantoddish Fanwe fanweed fanwise fanwork fanwort fanwright Fany faon Fapesmo far farad faradaic faraday faradic faradism faradization faradize faradizer faradmeter faradocontractility faradomuscular faradonervous faradopalpation farandole farasula faraway farawayness farce farcelike farcer farcetta farcial farcialize farcical farcicality farcically farcicalness farcied farcify farcing farcinoma farcist farctate farcy farde fardel fardelet fardh fardo fare farer farewell farfara farfel farfetched farfetchedness Farfugium fargoing fargood farina farinaceous farinaceously faring farinometer farinose farinosely farinulent Farish farish farkleberry farl farleu farm farmable farmage farmer farmeress farmerette farmerlike farmership farmery farmhold farmhouse farmhousey farming farmost farmplace farmstead farmsteading farmtown farmy farmyard farmyardy farnesol farness Farnovian faro Faroeish Faroese farolito farraginous farrago farrand farrandly farrantly farreate farreation farrier farrierlike farriery farrisite farrow farruca farsalah farse farseeing farseeingness farseer farset Farsi farsighted farsightedly farsightedness farther farthermost farthest farthing farthingale farthingless farweltered fasces fascet fascia fascial fasciate fasciated fasciately fasciation fascicle fascicled fascicular fascicularly fasciculate fasciculated fasciculately fasciculation fascicule fasciculus fascinate fascinated fascinatedly fascinating fascinatingly fascination fascinative fascinator fascinatress fascine fascinery Fascio fasciodesis fasciola fasciolar Fasciolaria Fasciolariidae fasciole fasciolet fascioliasis Fasciolidae fascioloid fascioplasty fasciotomy fascis fascism fascist Fascista Fascisti fascisticization fascisticize fascistization fascistize fash fasher fashery fashion fashionability fashionable fashionableness fashionably fashioned fashioner fashionist fashionize fashionless fashionmonger fashionmonging fashious fashiousness fasibitikite fasinite fass fassalite fast fasten fastener fastening faster fastgoing fasthold fastidiosity fastidious fastidiously fastidiousness fastidium fastigate fastigated fastigiate fastigium fasting fastingly fastish fastland fastness fastuous fastuously fastuousness fastus fat Fatagaga fatal fatalism fatalist fatalistic fatalistically fatality fatalize fatally fatalness fatbird fatbrained fate fated fateful fatefully fatefulness fatelike fathead fatheaded fatheadedness fathearted father fathercraft fathered fatherhood fatherland fatherlandish fatherless fatherlessness fatherlike fatherliness fatherling fatherly fathership fathmur fathom fathomable fathomage fathomer Fathometer fathomless fathomlessly fathomlessness fatidic fatidical fatidically fatiferous fatigability fatigable fatigableness fatigue fatigueless fatiguesome fatiguing fatiguingly fatiha fatil fatiloquent Fatima Fatimid fatiscence fatiscent fatless fatling fatly fatness fatsia fattable fatten fattenable fattener fatter fattily fattiness fattish fattishness fattrels fatty fatuism fatuitous fatuitousness fatuity fatuoid fatuous fatuously fatuousness fatwood faucal faucalize fauces faucet fauchard faucial faucitis faucre faugh faujasite fauld Faulkland fault faultage faulter faultfind faultfinder faultfinding faultful faultfully faultily faultiness faulting faultless faultlessly faultlessness faultsman faulty faun Fauna faunal faunally faunated faunish faunist faunistic faunistical faunistically faunlike faunological faunology faunule fause faussebraie faussebrayed faust Faustian fauterer fautor fautorship fauve Fauvism Fauvist favaginous favella favellidium favelloid Faventine faveolate faveolus faviform favilla favillous favism favissa favn favonian Favonius favor favorable favorableness favorably favored favoredly favoredness favorer favoress favoring favoringly favorite favoritism favorless favose favosely favosite Favosites Favositidae favositoid favous favus fawn fawner fawnery fawning fawningly fawningness fawnlike fawnskin fawny fay Fayal fayalite Fayettism fayles Fayumic faze fazenda fe feaberry feague feak feal fealty fear fearable feared fearedly fearedness fearer fearful fearfully fearfulness fearingly fearless fearlessly fearlessness fearnought fearsome fearsomely fearsomeness feasance feasibility feasible feasibleness feasibly feasor feast feasten feaster feastful feastfully feastless feat feather featherback featherbed featherbedding featherbird featherbone featherbrain featherbrained featherdom feathered featheredge featheredged featherer featherfew featherfoil featherhead featherheaded featheriness feathering featherleaf featherless featherlessness featherlet featherlike featherman feathermonger featherpate featherpated featherstitch featherstitching feathertop featherway featherweed featherweight featherwing featherwise featherwood featherwork featherworker feathery featliness featly featness featous featural featurally feature featured featureful featureless featureliness featurely featy feaze feazings febricant febricide febricity febricula febrifacient febriferous febrific febrifugal febrifuge febrile febrility Febronian Febronianism Februarius February februation fecal fecalith fecaloid feces Fechnerian feck feckful feckfully feckless fecklessly fecklessness feckly fecula feculence feculency feculent fecund fecundate fecundation fecundative fecundator fecundatory fecundify fecundity fecundize fed feddan federacy Federal federal federalism federalist federalization federalize federally federalness federate federation federationist federatist federative federatively federator Fedia Fedora fee feeable feeble feeblebrained feeblehearted feebleheartedly feebleheartedness feebleness feebling feeblish feebly feed feedable feedback feedbin feedboard feedbox feeder feedhead feeding feedman feedsman feedstuff feedway feedy feel feelable feeler feeless feeling feelingful feelingless feelinglessly feelingly feelingness feer feere feering feetage feetless feeze fefnicute fegary Fegatella Fehmic fei feif feigher feign feigned feignedly feignedness feigner feigning feigningly Feijoa feil feint feis feist feisty Felapton feldsher feldspar feldsparphyre feldspathic feldspathization feldspathoid Felichthys felicide felicific felicitate felicitation felicitator felicitous felicitously felicitousness felicity felid Felidae feliform Felinae feline felinely felineness felinity felinophile felinophobe Felis Felix fell fellable fellage fellah fellaheen fellahin Fellani Fellata Fellatah fellatio fellation fellen feller fellic felliducous fellifluous felling fellingbird fellinic fellmonger fellmongering fellmongery fellness felloe fellow fellowcraft fellowess fellowheirship fellowless fellowlike fellowship fellside fellsman felly feloid felon feloness felonious feloniously feloniousness felonry felonsetter felonsetting felonweed felonwood felonwort felony fels felsite felsitic felsobanyite felsophyre felsophyric felsosphaerite felstone felt felted felter felting feltlike feltmaker feltmaking feltmonger feltness feltwork feltwort felty feltyfare felucca Felup felwort female femalely femaleness femality femalize Feme feme femerell femic femicide feminacy feminal feminality feminate femineity feminie feminility feminin feminine femininely feminineness femininism femininity feminism feminist feministic feministics feminity feminization feminize feminologist feminology feminophobe femora femoral femorocaudal femorocele femorococcygeal femorofibular femoropopliteal femororotulian femorotibial femur fen fenbank fenberry fence fenceful fenceless fencelessness fencelet fenceplay fencer fenceress fenchene fenchone fenchyl fencible fencing fend fendable fender fendering fenderless fendillate fendillation fendy feneration fenestella Fenestellidae fenestra fenestral fenestrate fenestrated fenestration fenestrato fenestrule Fenian Fenianism fenite fenks fenland fenlander fenman fennec fennel fennelflower fennig fennish Fennoman fenny fenouillet Fenrir fensive fent fenter fenugreek Fenzelia feod feodal feodality feodary feodatory feoff feoffee feoffeeship feoffment feoffor feower feracious feracity Ferae Ferahan feral feralin Feramorz ferash ferberite Ferdiad ferdwit feretory feretrum ferfathmur ferfet ferganite Fergus fergusite Ferguson fergusonite feria ferial feridgi ferie ferine ferinely ferineness Feringi Ferio Ferison ferity ferk ferling ferly fermail Fermatian ferme ferment fermentability fermentable fermentarian fermentation fermentative fermentatively fermentativeness fermentatory fermenter fermentescible fermentitious fermentive fermentology fermentor fermentum fermerer fermery fermila fermorite fern fernandinite Fernando fernbird fernbrake ferned fernery ferngale ferngrower fernland fernleaf fernless fernlike fernshaw fernsick ferntickle ferntickled fernwort ferny Ferocactus ferocious ferociously ferociousness ferocity feroher Feronia ferrado ferrament Ferrara Ferrarese ferrate ferrated ferrateen ferratin ferrean ferreous ferret ferreter ferreting ferretto ferrety ferri ferriage ferric ferrichloride ferricyanate ferricyanhydric ferricyanic ferricyanide ferricyanogen ferrier ferriferous ferrihydrocyanic ferriprussiate ferriprussic ferrite ferritization ferritungstite ferrivorous ferroalloy ferroaluminum ferroboron ferrocalcite ferrocerium ferrochrome ferrochromium ferroconcrete ferroconcretor ferrocyanate ferrocyanhydric ferrocyanic ferrocyanide ferrocyanogen ferroglass ferrogoslarite ferrohydrocyanic ferroinclave ferromagnesian ferromagnetic ferromagnetism ferromanganese ferromolybdenum ferronatrite ferronickel ferrophosphorus ferroprint ferroprussiate ferroprussic ferrosilicon ferrotitanium ferrotungsten ferrotype ferrotyper ferrous ferrovanadium ferrozirconium ferruginate ferrugination ferruginean ferruginous ferrule ferruler ferrum ferruminate ferrumination ferry ferryboat ferryhouse ferryman ferryway ferthumlungur Fertil fertile fertilely fertileness fertility fertilizable fertilization fertilizational fertilize fertilizer feru ferula ferulaceous ferule ferulic fervanite fervency fervent fervently ferventness fervescence fervescent fervid fervidity fervidly fervidness Fervidor fervor fervorless Fesapo Fescennine fescenninity fescue fess fessely fesswise fest festal festally Feste fester festerment festilogy festinance festinate festinately festination festine Festino festival festivally festive festively festiveness festivity festivous festology festoon festoonery festoony festuca festucine fet fetal fetalism fetalization fetation fetch fetched fetcher fetching fetchingly feteless feterita fetial fetiales fetichmonger feticidal feticide fetid fetidity fetidly fetidness fetiferous fetiparous fetish fetisheer fetishic fetishism fetishist fetishistic fetishization fetishize fetishmonger fetishry fetlock fetlocked fetlow fetography fetometry fetoplacental fetor fetter fetterbush fetterer fetterless fetterlock fetticus fettle fettler fettling fetus feu feuage feuar feucht feud feudal feudalism feudalist feudalistic feudality feudalizable feudalization feudalize feudally feudatorial feudatory feudee feudist feudovassalism feued Feuillants feuille feuilletonism feuilletonist feuilletonistic feulamort fever feverberry feverbush fevercup feveret feverfew fevergum feverish feverishly feverishness feverless feverlike feverous feverously feverroot fevertrap fevertwig fevertwitch feverweed feverwort few fewness fewsome fewter fewterer fewtrils fey feyness fez Fezzan fezzed Fezziwig fezzy fi fiacre fiance fiancee fianchetto Fianna fiar fiard fiasco fiat fiatconfirmatio fib fibber fibbery fibdom Fiber fiber fiberboard fibered Fiberglas fiberize fiberizer fiberless fiberware fibration fibreless fibreware fibriform fibril fibrilla fibrillar fibrillary fibrillate fibrillated fibrillation fibrilled fibrilliferous fibrilliform fibrillose fibrillous fibrin fibrinate fibrination fibrine fibrinemia fibrinoalbuminous fibrinocellular fibrinogen fibrinogenetic fibrinogenic fibrinogenous fibrinolysin fibrinolysis fibrinolytic fibrinoplastic fibrinoplastin fibrinopurulent fibrinose fibrinosis fibrinous fibrinuria fibroadenia fibroadenoma fibroadipose fibroangioma fibroareolar fibroblast fibroblastic fibrobronchitis fibrocalcareous fibrocarcinoma fibrocartilage fibrocartilaginous fibrocaseose fibrocaseous fibrocellular fibrochondritis fibrochondroma fibrochondrosteal fibrocrystalline fibrocyst fibrocystic fibrocystoma fibrocyte fibroelastic fibroenchondroma fibrofatty fibroferrite fibroglia fibroglioma fibrohemorrhagic fibroid fibroin fibrointestinal fibroligamentous fibrolipoma fibrolipomatous fibrolite fibrolitic fibroma fibromata fibromatoid fibromatosis fibromatous fibromembrane fibromembranous fibromucous fibromuscular fibromyectomy fibromyitis fibromyoma fibromyomatous fibromyomectomy fibromyositis fibromyotomy fibromyxoma fibromyxosarcoma fibroneuroma fibronuclear fibronucleated fibropapilloma fibropericarditis fibroplastic fibropolypus fibropsammoma fibropurulent fibroreticulate fibrosarcoma fibrose fibroserous fibrosis fibrositis Fibrospongiae fibrotic fibrotuberculosis fibrous fibrously fibrousness fibrovasal fibrovascular fibry fibster fibula fibulae fibular fibulare fibulocalcaneal Ficaria ficary fice ficelle fiche Fichtean Fichteanism fichtelite fichu ficiform fickle ficklehearted fickleness ficklety ficklewise fickly fico ficoid Ficoidaceae Ficoideae ficoides fictation fictile fictileness fictility fiction fictional fictionalize fictionally fictionary fictioneer fictioner fictionist fictionistic fictionization fictionize fictionmonger fictious fictitious fictitiously fictitiousness fictive fictively Ficula Ficus fid Fidac fidalgo fidate fidation fiddle fiddleback fiddlebrained fiddlecome fiddledeedee fiddlefaced fiddlehead fiddleheaded fiddler fiddlerfish fiddlery fiddlestick fiddlestring fiddlewood fiddley fiddling fide fideicommiss fideicommissary fideicommission fideicommissioner fideicommissor fideicommissum fideism fideist fidejussion fidejussionary fidejussor fidejussory Fidele Fidelia Fidelio fidelity fidepromission fidepromissor Fides Fidessa fidfad fidge fidget fidgeter fidgetily fidgetiness fidgeting fidgetingly fidgety Fidia fidicinal fidicinales fidicula Fido fiducia fiducial fiducially fiduciarily fiduciary fiducinales fie fiedlerite fiefdom field fieldball fieldbird fielded fielder fieldfare fieldish fieldman fieldpiece fieldsman fieldward fieldwards fieldwork fieldworker fieldwort fieldy fiend fiendful fiendfully fiendhead fiendish fiendishly fiendishness fiendism fiendlike fiendliness fiendly fiendship fient Fierabras Fierasfer fierasferid Fierasferidae fierasferoid fierce fiercehearted fiercely fiercen fierceness fierding fierily fieriness fiery fiesta fieulamort Fife fife fifer fifie fifish fifo fifteen fifteener fifteenfold fifteenth fifteenthly fifth fifthly fiftieth fifty fiftyfold fig figaro figbird figeater figent figged figgery figging figgle figgy fight fightable fighter fighteress fighting fightingly fightwite Figitidae figless figlike figment figmental figpecker figshell figulate figulated figuline figurability figurable figural figurant figurante figurate figurately figuration figurative figuratively figurativeness figure figured figuredly figurehead figureheadless figureheadship figureless figurer figuresome figurette figurial figurine figurism figurist figurize figury figworm figwort Fiji Fijian fike fikie filace filaceous filacer Filago filament filamentar filamentary filamented filamentiferous filamentoid filamentose filamentous filamentule filander filanders filao filar Filaria filaria filarial filarian filariasis filaricidal filariform filariid Filariidae filarious filasse filate filator filature filbert filch filcher filchery filching filchingly file filefish filelike filemaker filemaking filemot filer filesmith filet filial filiality filially filialness filiate filiation filibeg filibranch Filibranchia filibranchiate filibuster filibusterer filibusterism filibusterous filical Filicales filicauline Filices filicic filicidal filicide filiciform filicin Filicineae filicinean filicite Filicites filicologist filicology Filicornia filiety filiferous filiform filiformed Filigera filigerous filigree filing filings filionymic filiopietistic filioque Filipendula filipendulous Filipina Filipiniana Filipinization Filipinize Filipino filippo filipuncture filite Filix fill fillable filled fillemot filler fillercap fillet filleter filleting filletlike filletster filleul filling fillingly fillingness fillip fillipeen fillister fillmass fillock fillowite filly film filmable filmdom filmet filmgoer filmgoing filmic filmiform filmily filminess filmish filmist filmize filmland filmlike filmogen filmslide filmstrip filmy filo filoplumaceous filoplume filopodium Filosa filose filoselle fils filter filterability filterable filterableness filterer filtering filterman filth filthify filthily filthiness filthless filthy filtrability filtrable filtratable filtrate filtration fimble fimbria fimbrial fimbriate fimbriated fimbriation fimbriatum fimbricate fimbricated fimbrilla fimbrillate fimbrilliferous fimbrillose fimbriodentate Fimbristylis fimetarious fimicolous Fin fin finable finableness finagle finagler final finale finalism finalist finality finalize finally finance financial financialist financially financier financiery financist finback finch finchbacked finched finchery find findability findable findal finder findfault finding findjan fine fineable finebent fineish fineleaf fineless finely finement fineness finer finery finespun finesse finesser finestill finestiller finetop finfish finfoot Fingal Fingall Fingallian fingent finger fingerable fingerberry fingerbreadth fingered fingerer fingerfish fingerflower fingerhold fingerhook fingering fingerleaf fingerless fingerlet fingerlike fingerling fingernail fingerparted fingerprint fingerprinting fingerroot fingersmith fingerspin fingerstall fingerstone fingertip fingerwise fingerwork fingery fingrigo Fingu finial finialed finical finicality finically finicalness finicism finick finickily finickiness finicking finickingly finickingness finific finify Finiglacial finikin finiking fining finis finish finishable finished finisher finishing finite finitely finiteness finitesimal finitive finitude finity finjan fink finkel finland Finlander finless finlet finlike Finmark Finn finnac finned finner finnesko Finnic Finnicize finnip Finnish finny finochio Fionnuala fiord fiorded Fioretti fiorin fiorite Fiot fip fipenny fipple fique fir Firbolg firca fire fireable firearm firearmed fireback fireball firebird fireblende fireboard fireboat firebolt firebolted firebote firebox fireboy firebrand firebrat firebreak firebrick firebug fireburn firecoat firecracker firecrest fired firedamp firedog firedrake firefall firefang firefanged fireflaught fireflirt fireflower firefly fireguard firehouse fireless firelight firelike fireling firelit firelock fireman firemanship firemaster fireplace fireplug firepower fireproof fireproofing fireproofness firer fireroom firesafe firesafeness firesafety fireshaft fireshine fireside firesider firesideship firespout firestone firestopping firetail firetop firetrap firewarden firewater fireweed firewood firework fireworkless fireworky fireworm firing firk firker firkin firlot firm firmament firmamental firman firmance firmer firmhearted firmisternal Firmisternia firmisternial firmisternous firmly firmness firn Firnismalerei Firoloida firring firry first firstcomer firsthand firstling firstly firstness firstship firth fisc fiscal fiscalify fiscalism fiscalization fiscalize fiscally fischerite fise fisetin fish fishable fishback fishbed fishberry fishbolt fishbone fisheater fished fisher fisherboat fisherboy fisheress fisherfolk fishergirl fisherman fisherpeople fisherwoman fishery fishet fisheye fishfall fishful fishgarth fishgig fishhood fishhook fishhooks fishhouse fishify fishily fishiness fishing fishingly fishless fishlet fishlike fishline fishling fishman fishmonger fishmouth fishplate fishpond fishpool fishpot fishpotter fishpound fishskin fishtail fishway fishweed fishweir fishwife fishwoman fishwood fishworker fishworks fishworm fishy fishyard fisnoga fissate fissicostate fissidactyl Fissidens Fissidentaceae fissidentaceous fissile fissileness fissilingual Fissilinguia fissility fission fissionable fissipalmate fissipalmation fissiparation fissiparism fissiparity fissiparous fissiparously fissiparousness fissiped Fissipeda fissipedal fissipedate Fissipedia fissipedial Fissipes fissirostral fissirostrate Fissirostres fissive fissural fissuration fissure fissureless Fissurella Fissurellidae fissuriform fissury fist fisted fister fistful fistiana fistic fistical fisticuff fisticuffer fisticuffery fistify fistiness fisting fistlike fistmele fistnote fistuca fistula Fistulana fistular Fistularia Fistulariidae fistularioid fistulate fistulated fistulatome fistulatous fistule fistuliform Fistulina fistulize fistulose fistulous fistwise fisty fit fitch fitched fitchee fitcher fitchery fitchet fitchew fitful fitfully fitfulness fitly fitment fitness fitout fitroot fittable fittage fitted fittedness fitten fitter fitters fittily fittiness fitting fittingly fittingness Fittonia fitty fittyfied fittyways fittywise fitweed Fitzclarence Fitzroy Fitzroya Fiuman five fivebar fivefold fivefoldness fiveling fivepence fivepenny fivepins fiver fives fivescore fivesome fivestones fix fixable fixage fixate fixatif fixation fixative fixator fixature fixed fixedly fixedness fixer fixidity fixing fixity fixture fixtureless fixure fizelyite fizgig fizz fizzer fizzle fizzy fjarding fjeld fjerding Fjorgyn flabbergast flabbergastation flabbily flabbiness flabby flabellarium flabellate flabellation flabellifoliate flabelliform flabellinerved flabellum flabrum flaccid flaccidity flaccidly flaccidness flacherie Flacian Flacianism Flacianist flack flacked flacker flacket Flacourtia Flacourtiaceae flacourtiaceous flaff flaffer flag flagboat flagellant flagellantism flagellar Flagellaria Flagellariaceae flagellariaceous Flagellata Flagellatae flagellate flagellated flagellation flagellative flagellator flagellatory flagelliferous flagelliform flagellist flagellosis flagellula flagellum flageolet flagfall flagger flaggery flaggily flagginess flagging flaggingly flaggish flaggy flagitate flagitation flagitious flagitiously flagitiousness flagleaf flagless flaglet flaglike flagmaker flagmaking flagman flagon flagonet flagonless flagpole flagrance flagrancy flagrant flagrantly flagrantness flagroot flagship flagstaff flagstick flagstone flagworm flail flaillike flair flaith flaithship flajolotite flak flakage flake flakeless flakelet flaker flakily flakiness flaky flam Flamandization Flamandize flamant flamb flambeau flambeaux flamberg flamboyance flamboyancy flamboyant flamboyantism flamboyantize flamboyantly flamboyer flame flamed flameflower flameless flamelet flamelike flamen flamenco flamenship flameproof flamer flamfew flamineous flaming Flamingant flamingly flamingo Flaminian flaminica flaminical flammability flammable flammeous flammiferous flammulated flammulation flammule flamy flan flancard flanch flanched flanconade flandan flandowser flane flange flangeless flanger flangeway flank flankard flanked flanker flanking flankwise flanky flannel flannelbush flanneled flannelette flannelflower flannelleaf flannelly flannelmouth flannelmouthed flannels flanque flap flapcake flapdock flapdoodle flapdragon flapjack flapmouthed flapper flapperdom flapperhood flapperish flapperism flare flareback flareboard flareless flaring flaringly flary flaser flash flashboard flasher flashet flashily flashiness flashing flashingly flashlight flashlike flashly flashness flashover flashpan flashproof flashtester flashy flask flasker flasket flasklet flasque flat flatboat flatbottom flatcap flatcar flatdom flated flatfish flatfoot flathat flathead flatiron flatland flatlet flatling flatly flatman flatness flatnose flatten flattener flattening flatter flatterable flattercap flatterdock flatterer flattering flatteringly flatteringness flattery flattie flatting flattish flattop flatulence flatulency flatulent flatulently flatulentness flatus flatware flatway flatways flatweed flatwise flatwoods flatwork flatworm Flaubertian flaught flaughter flaunt flaunter flauntily flauntiness flaunting flauntingly flaunty flautino flautist flavanilin flavaniline flavanthrene flavanthrone flavedo Flaveria flavescence flavescent Flavia Flavian flavic flavicant flavid flavin flavine Flavius flavo Flavobacterium flavone flavoprotein flavopurpurin flavor flavored flavorer flavorful flavoring flavorless flavorous flavorsome flavory flavour flaw flawed flawflower flawful flawless flawlessly flawlessness flawn flawy flax flaxboard flaxbush flaxdrop flaxen flaxlike flaxman flaxseed flaxtail flaxweed flaxwench flaxwife flaxwoman flaxwort flaxy flay flayer flayflint flea fleabane fleabite fleadock fleam fleaseed fleaweed fleawood fleawort fleay flebile fleche flechette fleck flecken flecker fleckiness fleckled fleckless flecklessly flecky flecnodal flecnode flection flectional flectionless flector fled fledge fledgeless fledgling fledgy flee fleece fleeceable fleeced fleeceflower fleeceless fleecelike fleecer fleech fleechment fleecily fleeciness fleecy fleer fleerer fleering fleeringly fleet fleeter fleetful fleeting fleetingly fleetingness fleetings fleetly fleetness fleetwing Flem Fleming Flemish flemish flench flense flenser flerry flesh fleshbrush fleshed fleshen flesher fleshful fleshhood fleshhook fleshiness fleshing fleshings fleshless fleshlike fleshlily fleshliness fleshly fleshment fleshmonger fleshpot fleshy flet Fleta fletch fletcher Fletcherism Fletcherite Fletcherize flether fleuret fleurettee fleuronnee fleury flew flewed flewit flews flex flexanimous flexed flexibility flexible flexibleness flexibly flexile flexility flexion flexionless flexor flexuose flexuosity flexuous flexuously flexuousness flexural flexure flexured fley fleyedly fleyedness fleyland fleysome flibbertigibbet flicflac flick flicker flickering flickeringly flickerproof flickertail flickery flicky flidder flier fligger flight flighted flighter flightful flightily flightiness flighting flightless flightshot flighty flimflam flimflammer flimflammery flimmer flimp flimsily flimsiness flimsy flinch flincher flinching flinchingly flinder Flindersia flindosa flindosy fling flinger flingy flinkite flint flinter flinthearted flintify flintily flintiness flintless flintlike flintlock flintwood flintwork flintworker flinty flioma flip flipe flipjack flippancy flippant flippantly flippantness flipper flipperling flippery flirt flirtable flirtation flirtational flirtationless flirtatious flirtatiously flirtatiousness flirter flirtigig flirting flirtingly flirtish flirtishness flirtling flirty flisk flisky flit flitch flitchen flite flitfold fliting flitter flitterbat flittermouse flittern flitting flittingly flitwite flivver flix flixweed Flo float floatability floatable floatage floatation floatative floatboard floater floatiness floating floatingly floative floatless floatmaker floatman floatplane floatsman floatstone floaty flob flobby floc floccillation floccipend floccose floccosely flocculable flocculant floccular flocculate flocculation flocculator floccule flocculence flocculency flocculent flocculently flocculose flocculus floccus flock flocker flocking flockless flocklike flockman flockmaster flockowner flockwise flocky flocoon flodge floe floeberg Floerkea floey flog floggable flogger flogging floggingly flogmaster flogster flokite flong flood floodable floodage floodboard floodcock flooded flooder floodgate flooding floodless floodlet floodlight floodlighting floodlike floodmark floodometer floodproof floodtime floodwater floodway floodwood floody floor floorage floorcloth floorer floorhead flooring floorless floorman floorwalker floorward floorway floorwise floozy flop flophouse flopover flopper floppers floppily floppiness floppy flopwing Flora flora floral Floralia floralize florally floramor floran florate floreal floreate Florence florence florent Florentine Florentinism florentium flores florescence florescent floressence floret floreted floretum floriate floriated floriation florican floricin floricultural floriculturally floriculture floriculturist florid Florida Floridan Florideae floridean florideous Floridian floridity floridly floridness floriferous floriferously floriferousness florification floriform florigen florigenic florigraphy florikan floriken florilegium florimania florimanist florin Florinda floriparous floripondio floriscope Florissant florist floristic floristically floristics floristry florisugent florivorous floroon floroscope florula florulent flory floscular Floscularia floscularian Flosculariidae floscule flosculose flosculous flosh floss flosser flossflower Flossie flossification flossing flossy flot flota flotage flotant flotation flotative flotilla flotorial flotsam flounce flouncey flouncing flounder floundering flounderingly flour flourish flourishable flourisher flourishing flourishingly flourishment flourishy flourlike floury flouse flout flouter flouting floutingly flow flowable flowage flower flowerage flowered flowerer floweret flowerful flowerily floweriness flowering flowerist flowerless flowerlessness flowerlet flowerlike flowerpecker flowerpot flowerwork flowery flowing flowingly flowingness flowmanostat flowmeter flown flowoff flu fluate fluavil flub flubdub flubdubbery flucan fluctiferous fluctigerous fluctisonant fluctisonous fluctuability fluctuable fluctuant fluctuate fluctuation fluctuosity fluctuous flue flued flueless fluellen fluellite flueman fluency fluent fluently fluentness fluer fluework fluey fluff fluffer fluffily fluffiness fluffy Flugelhorn flugelman fluible fluid fluidacetextract fluidal fluidally fluidextract fluidglycerate fluidible fluidic fluidification fluidifier fluidify fluidimeter fluidism fluidist fluidity fluidization fluidize fluidly fluidness fluidram fluigram fluitant fluke fluked flukeless flukeworm flukewort flukily flukiness fluking fluky flumdiddle flume flumerin fluminose flummadiddle flummer flummery flummox flummydiddle flump flung flunk flunker flunkeydom flunkeyhood flunkeyish flunkeyize flunky flunkydom flunkyhood flunkyish flunkyism flunkyistic flunkyite flunkyize fluoaluminate fluoaluminic fluoarsenate fluoborate fluoboric fluoborid fluoboride fluoborite fluobromide fluocarbonate fluocerine fluocerite fluochloride fluohydric fluophosphate fluor fluoran fluoranthene fluorapatite fluorate fluorbenzene fluorene fluorenyl fluoresage fluoresce fluorescein fluorescence fluorescent fluorescigenic fluorescigenous fluorescin fluorhydric fluoric fluoridate fluoridation fluoride fluoridization fluoridize fluorimeter fluorinate fluorination fluorindine fluorine fluorite fluormeter fluorobenzene fluoroborate fluoroform fluoroformol fluorogen fluorogenic fluorography fluoroid fluorometer fluoroscope fluoroscopic fluoroscopy fluorosis fluorotype fluorspar fluoryl fluosilicate fluosilicic fluotantalate fluotantalic fluotitanate fluotitanic fluozirconic flurn flurr flurried flurriedly flurriment flurry flush flushboard flusher flusherman flushgate flushing flushingly flushness flushy flusk flusker fluster flusterate flusteration flusterer flusterment flustery Flustra flustrine flustroid flustrum flute flutebird fluted flutelike flutemouth fluter flutework Flutidae flutina fluting flutist flutter flutterable flutteration flutterer fluttering flutteringly flutterless flutterment fluttersome fluttery fluty fluvial fluvialist fluviatic fluviatile fluvicoline fluvioglacial fluviograph fluviolacustrine fluviology fluviomarine fluviometer fluviose fluvioterrestrial fluviovolcanic flux fluxation fluxer fluxibility fluxible fluxibleness fluxibly fluxile fluxility fluxion fluxional fluxionally fluxionary fluxionist fluxmeter fluxroot fluxweed fly flyable flyaway flyback flyball flybane flybelt flyblow flyblown flyboat flyboy flycatcher flyeater flyer flyflap flyflapper flyflower flying flyingly flyleaf flyless flyman flyness flypaper flype flyproof Flysch flyspeck flytail flytier flytrap flyway flyweight flywheel flywinch flywort Fo foal foalfoot foalhood foaly foam foambow foamer foamflower foamily foaminess foaming foamingly foamless foamlike foamy fob focal focalization focalize focally focaloid foci focimeter focimetry focoids focometer focometry focsle focus focusable focuser focusless fod fodda fodder fodderer foddering fodderless foder fodge fodgel fodient Fodientia foe foehn foehnlike foeish foeless foelike foeman foemanship Foeniculum foenngreek foeship foetalization fog fogbound fogbow fogdog fogdom fogeater fogey fogfruit foggage fogged fogger foggily fogginess foggish foggy foghorn fogle fogless fogman fogo fogon fogou fogproof fogram fogramite fogramity fogscoffer fogus fogy fogydom fogyish fogyism fohat foible foil foilable foiler foiling foilsman foining foiningly Foism foison foisonless Foist foist foister foistiness foisty foiter Fokker fold foldable foldage foldboat foldcourse folded foldedly folden folder folding foldless foldskirt foldure foldwards foldy fole folgerite folia foliaceous foliaceousness foliage foliaged foliageous folial foliar foliary foliate foliated foliation foliature folie foliicolous foliiferous foliiform folio foliobranch foliobranchiate foliocellosis foliolate foliole folioliferous foliolose foliose foliosity foliot folious foliously folium folk folkcraft folkfree folkland folklore folkloric folklorish folklorism folklorist folkloristic folkmoot folkmooter folkmot folkmote folkmoter folkright folksiness folksy Folkvang Folkvangr folkway folky folles folletage follicle follicular folliculate folliculated follicule folliculin Folliculina folliculitis folliculose folliculosis folliculous folliful follis follow followable follower followership following followingly folly follyproof Fomalhaut foment fomentation fomenter fomes fomites Fon fondak fondant fondish fondle fondler fondlesome fondlike fondling fondlingly fondly fondness fondu fondue fonduk fonly fonnish fono fons font Fontainea fontal fontally fontanel fontange fonted fontful fonticulus fontinal Fontinalaceae fontinalaceous Fontinalis fontlet foo Foochow Foochowese food fooder foodful foodless foodlessness foodstuff foody foofaraw fool fooldom foolery fooless foolfish foolhardihood foolhardily foolhardiness foolhardiship foolhardy fooling foolish foolishly foolishness foollike foolocracy foolproof foolproofness foolscap foolship fooner fooster foosterer foot footage footback football footballer footballist footband footblower footboard footboy footbreadth footbridge footcloth footed footeite footer footfall footfarer footfault footfolk footful footganger footgear footgeld foothalt foothill foothold foothook foothot footing footingly footings footle footler footless footlicker footlight footlights footling footlining footlock footmaker footman footmanhood footmanry footmanship footmark footnote footnoted footpace footpad footpaddery footpath footpick footplate footprint footrail footrest footrill footroom footrope foots footscald footslog footslogger footsore footsoreness footstalk footstall footstep footstick footstock footstone footstool footwalk footwall footway footwear footwork footworn footy fooyoung foozle foozler fop fopling foppery foppish foppishly foppishness foppy fopship For for fora forage foragement forager foralite foramen foraminated foramination foraminifer Foraminifera foraminiferal foraminiferan foraminiferous foraminose foraminous foraminulate foraminule foraminulose foraminulous forane foraneen foraneous forasmuch foray forayer forb forbade forbar forbathe forbear forbearable forbearance forbearant forbearantly forbearer forbearing forbearingly forbearingness forbesite forbid forbiddable forbiddal forbiddance forbidden forbiddenly forbiddenness forbidder forbidding forbiddingly forbiddingness forbit forbled forblow forbore forborne forbow forby force forceable forced forcedly forcedness forceful forcefully forcefulness forceless forcemeat forcement forceps forcepslike forcer forchase forche forcibility forcible forcibleness forcibly forcing forcingly forcipate forcipated forcipes forcipiform forcipressure Forcipulata forcipulate forcleave forconceit ford fordable fordableness fordays Fordicidia fording fordless fordo fordone fordwine fordy fore foreaccounting foreaccustom foreacquaint foreact foreadapt foreadmonish foreadvertise foreadvice foreadvise foreallege foreallot foreannounce foreannouncement foreanswer foreappoint foreappointment forearm foreassign foreassurance forebackwardly forebay forebear forebemoan forebemoaned forebespeak forebitt forebitten forebitter forebless foreboard forebode forebodement foreboder foreboding forebodingly forebodingness forebody foreboot forebowels forebowline forebrace forebrain forebreast forebridge foreburton forebush forecar forecarriage forecast forecaster forecasting forecastingly forecastle forecastlehead forecastleman forecatching forecatharping forechamber forechase forechoice forechoose forechurch forecited foreclaw foreclosable foreclose foreclosure forecome forecomingness forecommend foreconceive foreconclude forecondemn foreconscious foreconsent foreconsider forecontrive forecool forecooler forecounsel forecount forecourse forecourt forecover forecovert foredate foredawn foreday foredeck foredeclare foredecree foredeep foredefeated foredefine foredenounce foredescribe foredeserved foredesign foredesignment foredesk foredestine foredestiny foredetermination foredetermine foredevised foredevote forediscern foredispose foredivine foredone foredoom foredoomer foredoor foreface forefather forefatherly forefault forefeel forefeeling forefeelingly forefelt forefield forefigure forefin forefinger forefit foreflank foreflap foreflipper forefoot forefront foregallery foregame foreganger foregate foregift foregirth foreglance foregleam foreglimpse foreglow forego foregoer foregoing foregone foregoneness foreground foreguess foreguidance forehalf forehall forehammer forehand forehanded forehandedness forehandsel forehard forehatch forehatchway forehead foreheaded forehear forehearth foreheater forehill forehinting forehold forehood forehoof forehook foreign foreigneering foreigner foreignership foreignism foreignization foreignize foreignly foreignness foreimagination foreimagine foreimpressed foreimpression foreinclined foreinstruct foreintend foreiron forejudge forejudgment forekeel foreking foreknee foreknow foreknowable foreknower foreknowing foreknowingly foreknowledge forel forelady foreland forelay foreleech foreleg forelimb forelive forellenstein forelock forelook foreloop forelooper foreloper foremade foreman foremanship foremarch foremark foremartyr foremast foremasthand foremastman foremean foremeant foremelt foremention forementioned foremessenger foremilk foremisgiving foremistress foremost foremostly foremother forename forenamed forenews forenight forenoon forenote forenoted forenotice forenotion forensal forensic forensical forensicality forensically foreordain foreordainment foreorder foreordinate foreordination foreorlop forepad forepale foreparents forepart forepassed forepast forepaw forepayment forepeak foreperiod forepiece foreplace foreplan foreplanting forepole foreporch forepossessed forepost forepredicament forepreparation foreprepare forepretended foreproduct foreproffer forepromise forepromised foreprovided foreprovision forepurpose forequarter forequoted foreran forerank forereach forereaching foreread forereading forerecited forereckon forerehearsed foreremembered forereport forerequest forerevelation forerib forerigging foreright foreroom foreroyal forerun forerunner forerunnership forerunnings foresaddle foresaid foresail foresay forescene forescent foreschool foreschooling forescript foreseason foreseat foresee foreseeability foreseeable foreseeingly foreseer foreseize foresend foresense foresentence foreset foresettle foresettled foreshadow foreshadower foreshaft foreshank foreshape foresheet foreshift foreship foreshock foreshoe foreshop foreshore foreshorten foreshortening foreshot foreshoulder foreshow foreshower foreshroud foreside foresight foresighted foresightedness foresightful foresightless foresign foresignify foresin foresing foresinger foreskin foreskirt foresleeve foresound forespeak forespecified forespeed forespencer forest forestaff forestage forestair forestal forestall forestaller forestallment forestarling forestate forestation forestay forestaysail forestcraft forested foresteep forestem forestep forester forestership forestful forestial Forestian forestick Forestiera forestine forestish forestless forestlike forestology forestral forestress forestry forestside forestudy forestwards foresty foresummer foresummon foresweat foretack foretackle foretalk foretalking foretaste foretaster foretell foretellable foreteller forethink forethinker forethought forethoughted forethoughtful forethoughtfully forethoughtfulness forethoughtless forethrift foretime foretimed foretoken foretold foretop foretopman foretrace foretrysail foreturn foretype foretypified foreuse foreutter forevalue forever forevermore foreview forevision forevouch forevouched forevow forewarm forewarmer forewarn forewarner forewarning forewarningly forewaters foreween foreweep foreweigh forewing forewinning forewisdom forewish forewoman forewonted foreword foreworld foreworn forewritten forewrought foreyard foreyear forfairn forfar forfare forfars forfault forfaulture forfeit forfeiter forfeits forfeiture forfend forficate forficated forfication forficiform Forficula forficulate Forficulidae forfouchten forfoughen forfoughten forgainst forgather forge forgeability forgeable forged forgedly forgeful forgeman forger forgery forget forgetful forgetfully forgetfulness forgetive forgetness forgettable forgetter forgetting forgettingly forgie forging forgivable forgivableness forgivably forgive forgiveless forgiveness forgiver forgiving forgivingly forgivingness forgo forgoer forgot forgotten forgottenness forgrow forgrown forhoo forhooy forhow forinsec forint forisfamiliate forisfamiliation forjesket forjudge forjudger fork forkable forkbeard forked forkedly forkedness forker forkful forkhead forkiness forkless forklike forkman forksmith forktail forkwise forky forleft forlet forlorn forlornity forlornly forlornness form formability formable formably formagen formagenic formal formalazine formaldehyde formaldehydesulphoxylate formaldehydesulphoxylic formaldoxime formalesque Formalin formalism formalist formalistic formalith formality formalization formalize formalizer formally formalness formamide formamidine formamido formamidoxime formanilide formant format formate formation formational formative formatively formativeness formature formazyl forme formed formedon formee formel formene formenic former formeret formerly formerness formful formiate formic Formica formican Formicariae formicarian Formicariidae formicarioid formicarium formicaroid formicary formicate formication formicative formicicide formicid Formicidae formicide Formicina Formicinae formicine Formicivora formicivorous Formicoidea formidability formidable formidableness formidably formin forminate forming formless formlessly formlessness Formol formolite formonitrile Formosan formose formoxime formula formulable formulae formulaic formular formularism formularist formularistic formularization formularize formulary formulate formulation formulator formulatory formule formulism formulist formulistic formulization formulize formulizer formwork formy formyl formylal formylate formylation fornacic Fornax fornaxid fornenst fornent fornical fornicate fornicated fornication fornicator fornicatress fornicatrix forniciform forninst fornix forpet forpine forpit forprise forrad forrard forride forrit forritsome forrue forsake forsaken forsakenly forsakenness forsaker forset forslow forsooth forspeak forspend forspread Forst forsterite forswear forswearer forsworn forswornness Forsythia fort fortalice forte fortescue fortescure forth forthbring forthbringer forthcome forthcomer forthcoming forthcomingness forthcut forthfare forthfigured forthgaze forthgo forthgoing forthink forthputting forthright forthrightly forthrightness forthrights forthtell forthteller forthwith forthy forties fortieth fortifiable fortification fortifier fortify fortifying fortifyingly fortin fortis fortissimo fortitude fortitudinous fortlet fortnight fortnightly fortravail fortread fortress fortuitism fortuitist fortuitous fortuitously fortuitousness fortuity fortunate fortunately fortunateness fortune fortuned fortuneless Fortunella fortunetell fortuneteller fortunetelling fortunite forty fortyfold forum forumize forwander forward forwardal forwardation forwarder forwarding forwardly forwardness forwards forwean forweend forwent forwoden forworden fosh fosie Fosite fossa fossage fossane fossarian fosse fossed fossette fossick fossicker fossiform fossil fossilage fossilated fossilation fossildom fossiled fossiliferous fossilification fossilify fossilism fossilist fossilizable fossilization fossilize fossillike fossilogist fossilogy fossilological fossilologist fossilology fossor Fossores Fossoria fossorial fossorious fossula fossulate fossule fossulet fostell Foster foster fosterable fosterage fosterer fosterhood fostering fosteringly fosterite fosterland fosterling fostership fostress fot fotch fother Fothergilla fotmal fotui fou foud foudroyant fouette fougade fougasse fought foughten foughty foujdar foujdary foul foulage foulard fouler fouling foulish foully foulmouthed foulmouthedly foulmouthedness foulness foulsome foumart foun found foundation foundational foundationally foundationary foundationed foundationer foundationless foundationlessness founder founderous foundership foundery founding foundling foundress foundry foundryman fount fountain fountained fountaineer fountainhead fountainless fountainlet fountainous fountainously fountainwise fountful Fouquieria Fouquieriaceae fouquieriaceous four fourble fourche fourchee fourcher fourchette fourchite fourer fourflusher fourfold Fourierian Fourierism Fourierist Fourieristic Fourierite fourling fourpence fourpenny fourpounder fourre fourrier fourscore foursome foursquare foursquarely foursquareness fourstrand fourteen fourteener fourteenfold fourteenth fourteenthly fourth fourther fourthly foussa foute fouter fouth fovea foveal foveate foveated foveation foveiform foveola foveolarious foveolate foveolated foveole foveolet fow fowk fowl fowler fowlerite fowlery fowlfoot fowling fox foxbane foxberry foxchop foxer foxery foxfeet foxfinger foxfish foxglove foxhole foxhound foxily foxiness foxing foxish foxlike foxproof foxship foxskin foxtail foxtailed foxtongue foxwood foxy foy foyaite foyaitic foyboat foyer foziness fozy fra frab frabbit frabjous frabjously frabous fracas fracedinous frache frack fractable fractabling fracted Fracticipita fractile fraction fractional fractionalism fractionalize fractionally fractionary fractionate fractionating fractionation fractionator fractionization fractionize fractionlet fractious fractiously fractiousness fractocumulus fractonimbus fractostratus fractuosity fracturable fractural fracture fractureproof frae Fragaria fraghan Fragilaria Fragilariaceae fragile fragilely fragileness fragility fragment fragmental fragmentally fragmentarily fragmentariness fragmentary fragmentation fragmented fragmentist fragmentitious fragmentize fragrance fragrancy fragrant fragrantly fragrantness fraid fraik frail frailejon frailish frailly frailness frailty fraise fraiser Fram framable framableness frambesia frame framea frameable frameableness framed frameless framer framesmith framework framing frammit frampler frampold franc Frances franchisal franchise franchisement franchiser Francic Francis francisc francisca Franciscan Franciscanism francium Francize franco francolin francolite Francomania Franconian Francophile Francophilism Francophobe Francophobia frangent Frangi frangibility frangible frangibleness frangipane frangipani frangula Frangulaceae frangulic frangulin frangulinic Frank frank frankability frankable frankalmoign Frankenia Frankeniaceae frankeniaceous Frankenstein franker frankfurter frankhearted frankheartedly frankheartedness Frankify frankincense frankincensed franking Frankish Frankist franklandite Franklin franklin Franklinia Franklinian Frankliniana Franklinic Franklinism Franklinist franklinite Franklinization frankly frankmarriage frankness frankpledge frantic frantically franticly franticness franzy frap frappe frapping frasco frase Frasera frasier frass frat fratch fratched fratcheous fratcher fratchety fratchy frater Fratercula fraternal fraternalism fraternalist fraternality fraternally fraternate fraternation fraternism fraternity fraternization fraternize fraternizer fratery Fraticelli Fraticellian fratority Fratricelli fratricidal fratricide fratry fraud fraudful fraudfully fraudless fraudlessly fraudlessness fraudproof fraudulence fraudulency fraudulent fraudulently fraudulentness fraughan fraught frawn fraxetin fraxin fraxinella Fraxinus fray frayed frayedly frayedness fraying frayn frayproof fraze frazer frazil frazzle frazzling freak freakdom freakery freakful freakily freakiness freakish freakishly freakishness freaky fream freath freck frecken freckened frecket freckle freckled freckledness freckleproof freckling frecklish freckly Fred Freddie Freddy Frederic Frederica Frederick frederik fredricite free freeboard freeboot freebooter freebootery freebooting freeborn Freechurchism freed freedman freedom freedwoman freehand freehanded freehandedly freehandedness freehearted freeheartedly freeheartedness freehold freeholder freeholdership freeholding freeing freeish Freekirker freelage freeloving freelovism freely freeman freemanship freemartin freemason freemasonic freemasonical freemasonism freemasonry freen freend freeness freer Freesia freesilverism freesilverite freestanding freestone freet freethinker freethinking freetrader freety freeward freeway freewheel freewheeler freewheeling freewill freewoman freezable freeze freezer freezing freezingly Fregata Fregatae Fregatidae freibergite freieslebenite freight freightage freighter freightless freightment freir freit freity fremd fremdly fremdness fremescence fremescent fremitus Fremontia Fremontodendron frenal Frenatae frenate French frenched Frenchification frenchification Frenchify frenchify Frenchily Frenchiness frenching Frenchism Frenchize Frenchless Frenchly Frenchman Frenchness Frenchwise Frenchwoman Frenchy frenetic frenetical frenetically Frenghi frenular frenulum frenum frenzelite frenzied frenziedly frenzy Freon frequence frequency frequent frequentable frequentage frequentation frequentative frequenter frequently frequentness frescade fresco frescoer frescoist fresh freshen freshener freshet freshhearted freshish freshly freshman freshmanhood freshmanic freshmanship freshness freshwoman Fresison fresnel fresno fret fretful fretfully fretfulness fretless fretsome frett frettage frettation frette fretted fretter fretting frettingly fretty fretum fretways fretwise fretwork fretworked Freudian Freudianism Freudism Freudist Freya freyalite Freycinetia Freyja Freyr friability friable friableness friand friandise friar friarbird friarhood friarling friarly friary frib fribble fribbleism fribbler fribblery fribbling fribblish fribby fricandeau fricandel fricassee frication fricative fricatrice friction frictionable frictional frictionally frictionize frictionless frictionlessly frictionproof Friday Fridila fridstool fried Frieda friedcake friedelite friedrichsdor friend friended friendless friendlessness friendlike friendlily friendliness friendliwise friendly friendship frier frieseite Friesian Friesic Friesish frieze friezer friezy frig frigate frigatoon friggle fright frightable frighten frightenable frightened frightenedly frightenedness frightener frightening frighteningly frighter frightful frightfully frightfulness frightless frightment frighty frigid Frigidaire frigidarium frigidity frigidly frigidness frigiferous frigolabile frigoric frigorific frigorifical frigorify frigorimeter frigostable frigotherapy Frija frijol frijolillo frijolito frike frill frillback frilled friller frillery frillily frilliness frilling frilly frim Frimaire fringe fringed fringeflower fringeless fringelet fringent fringepod Fringetail Fringilla fringillaceous Fringillidae fringilliform Fringilliformes fringilline fringilloid fringing fringy fripperer frippery frisca Frisesomorum frisette Frisian Frisii frisk frisker frisket friskful friskily friskiness frisking friskingly frisky frisolee frison frist frisure frit frith frithborh frithbot frithles frithsoken frithstool frithwork Fritillaria fritillary fritt fritter fritterer Fritz Friulian frivol frivoler frivolism frivolist frivolity frivolize frivolous frivolously frivolousness frixion friz frize frizer frizz frizzer frizzily frizziness frizzing frizzle frizzler frizzly frizzy fro frock frocking frockless frocklike frockmaker froe Froebelian Froebelism Froebelist frog frogbit frogeater frogeye frogface frogfish frogflower frogfoot frogged froggery frogginess frogging froggish froggy froghood froghopper frogland frogleaf frogleg froglet froglike frogling frogman frogmouth frognose frogskin frogstool frogtongue frogwort froise frolic frolicful frolicker frolicky frolicly frolicness frolicsome frolicsomely frolicsomeness from fromward fromwards frond frondage fronded frondent frondesce frondescence frondescent frondiferous frondiform frondigerous frondivorous frondlet frondose frondosely frondous front frontad frontage frontager frontal frontalis frontality frontally frontbencher fronted fronter frontier frontierlike frontierman frontiersman Frontignan fronting frontingly Frontirostria frontispiece frontless frontlessly frontlessness frontlet frontoauricular frontoethmoid frontogenesis frontolysis frontomallar frontomaxillary frontomental frontonasal frontooccipital frontoorbital frontoparietal frontopontine frontosphenoidal frontosquamosal frontotemporal frontozygomatic frontpiece frontsman frontstall frontward frontways frontwise froom frore frory frosh frost frostation frostbird frostbite frostbow frosted froster frostfish frostflower frostily frostiness frosting frostless frostlike frostproof frostproofing frostroot frostweed frostwork frostwort frosty frot froth frother Frothi frothily frothiness frothing frothless frothsome frothy frotton froufrou frough froughy frounce frounceless frow froward frowardly frowardness frower frowl frown frowner frownful frowning frowningly frownless frowny frowst frowstily frowstiness frowsty frowy frowze frowzily frowziness frowzled frowzly frowzy froze frozen frozenhearted frozenly frozenness fruchtschiefer fructed fructescence fructescent fructicultural fructiculture Fructidor fructiferous fructiferously fructification fructificative fructifier fructiform fructify fructiparous fructivorous fructose fructoside fructuary fructuosity fructuous fructuously fructuousness frugal frugalism frugalist frugality frugally frugalness fruggan Frugivora frugivorous fruit fruitade fruitage fruitarian fruitarianism fruitcake fruited fruiter fruiterer fruiteress fruitery fruitful fruitfullness fruitfully fruitgrower fruitgrowing fruitiness fruiting fruition fruitist fruitive fruitless fruitlessly fruitlessness fruitlet fruitling fruitstalk fruittime fruitwise fruitwoman fruitwood fruitworm fruity frumentaceous frumentarious frumentation frumenty frump frumpery frumpily frumpiness frumpish frumpishly frumpishness frumple frumpy frush frustrate frustrately frustrater frustration frustrative frustratory frustule frustulent frustulose frustum frutescence frutescent fruticetum fruticose fruticous fruticulose frutify fry fryer fu fub fubby fubsy Fucaceae fucaceous Fucales fucate fucation fucatious Fuchsia Fuchsian fuchsin fuchsine fuchsinophil fuchsinophilous fuchsite fuchsone fuci fucinita fuciphagous fucoid fucoidal Fucoideae fucosan fucose fucous fucoxanthin fucus fud fuddle fuddler fuder fudge fudger fudgy Fuegian fuel fueler fuelizer fuerte fuff fuffy fugacious fugaciously fugaciousness fugacity fugal fugally fuggy fugient fugitate fugitation fugitive fugitively fugitiveness fugitivism fugitivity fugle fugleman fuglemanship fugler fugu fugue fuguist fuidhir fuirdays Fuirena fuji Fulah fulciform fulcral fulcrate fulcrum fulcrumage fulfill fulfiller fulfillment Fulfulde fulgent fulgently fulgentness fulgid fulgide fulgidity fulgor Fulgora fulgorid Fulgoridae Fulgoroidea fulgorous Fulgur fulgural fulgurant fulgurantly fulgurata fulgurate fulgurating fulguration fulgurator fulgurite fulgurous fulham Fulica Fulicinae fulicine fuliginosity fuliginous fuliginously fuliginousness Fuligula Fuligulinae fuliguline fulk full fullam fullback fuller fullering fullery fullface fullhearted fulling fullish fullmouth fullmouthed fullmouthedly fullness fullom Fullonian fully fulmar Fulmarus fulmicotton fulminancy fulminant fulminate fulminating fulmination fulminator fulminatory fulmine fulmineous fulminic fulminous fulminurate fulminuric fulsome fulsomely fulsomeness fulth Fultz Fulup fulvene fulvescent fulvid fulvidness fulvous fulwa fulyie fulzie fum fumacious fumado fumage fumagine Fumago fumarate Fumaria Fumariaceae fumariaceous fumaric fumarine fumarium fumaroid fumaroidal fumarole fumarolic fumaryl fumatorium fumatory fumble fumbler fumbling fume fumeless fumer fumeroot fumet fumette fumewort fumiduct fumiferous fumigant fumigate fumigation fumigator fumigatorium fumigatory fumily fuminess fuming fumingly fumistery fumitory fumose fumosity fumous fumously fumy fun funambulate funambulation funambulator funambulatory funambulic funambulism funambulist funambulo Funaria Funariaceae funariaceous function functional functionalism functionalist functionality functionalize functionally functionarism functionary functionate functionation functionize functionless fund fundable fundal fundament fundamental fundamentalism fundamentalist fundamentality fundamentally fundamentalness fundatorial fundatrix funded funder fundholder fundi fundic fundiform funditor fundless fundmonger fundmongering funds Fundulinae funduline Fundulus fundungi fundus funebrial funeral funeralize funerary funereal funereally funest fungaceous fungal Fungales fungate fungation fungi Fungia fungian fungibility fungible fungic fungicidal fungicide fungicolous fungiferous fungiform fungilliform fungin fungistatic fungivorous fungo fungoid fungoidal fungological fungologist fungology fungose fungosity fungous fungus fungused funguslike fungusy funicle funicular funiculate funicule funiculitis funiculus funiform funipendulous funis Funje funk funker Funkia funkiness funky funmaker funmaking funnel funneled funnelform funnellike funnelwise funnily funniment funniness funny funnyman funori funt Funtumia Fur fur furacious furaciousness furacity fural furaldehyde furan furanoid furazan furazane furbelow furbish furbishable furbisher furbishment furca furcal furcate furcately furcation Furcellaria furcellate furciferine furciferous furciform Furcraea furcula furcular furculum furdel Furfooz furfur furfuraceous furfuraceously furfural furfuralcohol furfuraldehyde furfuramide furfuran furfuration furfurine furfuroid furfurole furfurous furfuryl furfurylidene furiant furibund furied Furies furify furil furilic furiosa furiosity furioso furious furiously furiousness furison furl furlable Furlan furler furless furlong furlough furnace furnacelike furnaceman furnacer furnacite furnage Furnariidae Furnariides Furnarius furner furnish furnishable furnished furnisher furnishing furnishment furniture furnitureless furodiazole furoic furoid furoin furole furomethyl furomonazole furor furore furphy furred furrier furriered furriery furrily furriness furring furrow furrower furrowless furrowlike furrowy furry furstone further furtherance furtherer furtherest furtherly furthermore furthermost furthersome furthest furtive furtively furtiveness Furud furuncle furuncular furunculoid furunculosis furunculous fury furyl furze furzechat furzed furzeling furzery furzetop furzy fusain fusarial fusariose fusariosis Fusarium fusarole fusate fusc fuscescent fuscin fuscohyaline fuscous fuse fuseboard fused fusee fuselage fuseplug fusht fusibility fusible fusibleness fusibly Fusicladium Fusicoccum fusiform Fusiformis fusil fusilier fusillade fusilly fusinist fusion fusional fusionism fusionist fusionless fusoid fuss fusser fussification fussify fussily fussiness fussock fussy fust fustanella fustee fusteric fustet fustian fustianish fustianist fustianize fustic fustigate fustigation fustigator fustigatory fustilugs fustily fustin fustiness fustle fusty Fusulina fusuma fusure Fusus fut futchel fute futhorc futile futilely futileness futilitarian futilitarianism futility futilize futtermassel futtock futural future futureless futureness futuric futurism futurist futuristic futurition futurity futurize futwa fuye fuze fuzz fuzzball fuzzily fuzziness fuzzy fyke fylfot fyrd G g Ga ga gab gabardine gabbard gabber gabble gabblement gabbler gabbro gabbroic gabbroid gabbroitic gabby Gabe gabelle gabelled gabelleman gabeller gaberdine gaberlunzie gabgab gabi gabion gabionade gabionage gabioned gablatores gable gableboard gablelike gablet gablewise gablock Gaboon Gabriel Gabriella Gabrielrache Gabunese gaby Gad gad Gadaba gadabout Gadarene Gadaria gadbee gadbush Gaddang gadded gadder Gaddi gaddi gadding gaddingly gaddish gaddishness gade gadfly gadge gadger gadget gadid Gadidae gadinine Gaditan gadling gadman gadoid Gadoidea gadolinia gadolinic gadolinite gadolinium gadroon gadroonage Gadsbodikins Gadsbud Gadslid gadsman Gadswoons gaduin Gadus gadwall Gadzooks Gael Gaeldom Gaelic Gaelicism Gaelicist Gaelicization Gaelicize Gaeltacht gaen Gaertnerian gaet Gaetulan Gaetuli Gaetulian gaff gaffe gaffer Gaffkya gaffle gaffsman gag gagate gage gageable gagee gageite gagelike gager gagership gagger gaggery gaggle gaggler gagman gagor gagroot gagtooth gahnite Gahrwali Gaia gaiassa Gaidropsaridae gaiety Gail Gaillardia gaily gain gainable gainage gainbirth gaincall gaincome gaine gainer gainful gainfully gainfulness gaining gainless gainlessness gainliness gainly gains gainsay gainsayer gainset gainsome gainspeaker gainspeaking gainst gainstrive gainturn gaintwist gainyield gair gairfish gaisling gait gaited gaiter gaiterless gaiting gaize gaj gal gala Galacaceae galactagogue galactagoguic galactan galactase galactemia galacthidrosis Galactia galactic galactidrosis galactite galactocele galactodendron galactodensimeter galactogenetic galactohemia galactoid galactolipide galactolipin galactolysis galactolytic galactoma galactometer galactometry galactonic galactopathy galactophagist galactophagous galactophlebitis galactophlysis galactophore galactophoritis galactophorous galactophthysis galactophygous galactopoiesis galactopoietic galactopyra galactorrhea galactorrhoea galactoscope galactose galactoside galactosis galactostasis galactosuria galactotherapy galactotrophy galacturia galagala Galaginae Galago galah galanas galanga galangin galant Galanthus galantine galany galapago Galatae galatea Galatian Galatic galatotrophic Galax galaxian Galaxias Galaxiidae galaxy galban galbanum Galbula Galbulae Galbulidae Galbulinae galbulus Galcha Galchic gale galea galeage galeate galeated galee galeeny Galega galegine Galei galeid Galeidae galeiform galempung Galen galena Galenian Galenic galenic Galenical galenical Galenism Galenist galenite galenobismutite galenoid Galeodes Galeodidae galeoid Galeopithecus Galeopsis Galeorchis Galeorhinidae Galeorhinus galeproof galera galericulate galerum galerus Galesaurus galet Galeus galewort galey Galga galgal Galgulidae gali Galibi Galician Galictis Galidia Galidictis Galik Galilean galilee galimatias galingale Galinsoga galiongee galiot galipidine galipine galipoidin galipoidine galipoipin galipot Galium gall Galla galla gallacetophenone gallah gallanilide gallant gallantize gallantly gallantness gallantry gallate gallature gallberry gallbush galleass galled Gallegan gallein galleon galler Galleria gallerian galleried Galleriidae gallery gallerylike gallet galley galleylike galleyman galleyworm gallflower gallfly Galli galliambic galliambus Gallian galliard galliardise galliardly galliardness Gallic gallic Gallican Gallicanism Gallicism Gallicization Gallicize Gallicizer gallicola Gallicolae gallicole gallicolous galliferous Gallification gallification galliform Galliformes Gallify galligaskin gallimaufry Gallinaceae gallinacean Gallinacei gallinaceous Gallinae Gallinago gallinazo galline galling gallingly gallingness gallinipper Gallinula gallinule Gallinulinae gallinuline gallipot Gallirallus gallisin gallium gallivant gallivanter gallivat gallivorous galliwasp gallnut gallocyanin gallocyanine galloflavine galloglass Galloman Gallomania Gallomaniac gallon gallonage galloner galloon gallooned gallop gallopade galloper Galloperdix Gallophile Gallophilism Gallophobe Gallophobia galloping galloptious gallotannate gallotannic gallotannin gallous Gallovidian Galloway galloway gallowglass gallows gallowsmaker gallowsness gallowsward gallstone Gallus galluses gallweed gallwort gally gallybagger gallybeggar gallycrow Galoisian galoot galop galore galosh galp galravage galravitch galt Galtonia Galtonian galuchat galumph galumptious Galusha galuth galvanic galvanical galvanically galvanism galvanist galvanization galvanize galvanized galvanizer galvanocauterization galvanocautery galvanocontractility galvanofaradization galvanoglyph galvanoglyphy galvanograph galvanographic galvanography galvanologist galvanology galvanolysis galvanomagnet galvanomagnetic galvanomagnetism galvanometer galvanometric galvanometrical galvanometrically galvanometry galvanoplastic galvanoplastical galvanoplastically galvanoplastics galvanoplasty galvanopsychic galvanopuncture galvanoscope galvanoscopic galvanoscopy galvanosurgery galvanotactic galvanotaxis galvanotherapy galvanothermometer galvanothermy galvanotonic galvanotropic galvanotropism galvayne galvayning Galways Galwegian galyac galyak galziekte gam gamahe Gamaliel gamashes gamasid Gamasidae Gamasoidea gamb gamba gambade gambado gambang gambeer gambeson gambet gambette gambia gambier gambist gambit gamble gambler gamblesome gamblesomeness gambling gambodic gamboge gambogian gambogic gamboised gambol gambrel gambreled gambroon Gambusia gamdeboo game gamebag gameball gamecock gamecraft gameful gamekeeper gamekeeping gamelang gameless gamelike Gamelion gamelotte gamely gamene gameness gamesome gamesomely gamesomeness gamester gamestress gametal gametange gametangium gamete gametic gametically gametocyst gametocyte gametogenesis gametogenic gametogenous gametogeny gametogonium gametogony gametoid gametophagia gametophore gametophyll gametophyte gametophytic gamic gamily gamin gaminesque gaminess gaming gaminish gamma gammacism gammacismus gammadion gammarid Gammaridae gammarine gammaroid Gammarus gammation gammelost gammer gammerel gammerstang Gammexane gammick gammock gammon gammoner gammoning gammy gamobium gamodesmic gamodesmy gamogenesis gamogenetic gamogenetical gamogenetically gamogony Gamolepis gamomania gamont Gamopetalae gamopetalous gamophagia gamophagy gamophyllous gamori gamosepalous gamostele gamostelic gamostely gamotropic gamotropism gamp gamphrel gamut gamy gan ganam ganancial Ganapati ganch Ganda gander ganderess gandergoose gandermooner ganderteeth Gandhara Gandharva Gandhiism Gandhism Gandhist gandul gandum gandurah gane ganef gang Ganga ganga Gangamopteris gangan gangava gangboard gangdom gange ganger Gangetic ganggang ganging gangism gangland ganglander ganglia gangliac ganglial gangliar gangliasthenia gangliate gangliated gangliectomy gangliform gangliitis gangling ganglioblast gangliocyte ganglioform ganglioid ganglioma ganglion ganglionary ganglionate ganglionectomy ganglioneural ganglioneure ganglioneuroma ganglioneuron ganglionic ganglionitis ganglionless ganglioplexus gangly gangman gangmaster gangplank gangrel gangrene gangrenescent gangrenous gangsman gangster gangsterism gangtide gangue Ganguela gangway gangwayman ganister ganja ganner gannet Ganocephala ganocephalan ganocephalous ganodont Ganodonta Ganodus ganoid ganoidal ganoidean Ganoidei ganoidian ganoin ganomalite ganophyllite ganosis Ganowanian gansel gansey gansy gant ganta gantang gantlet gantline ganton gantries gantry gantryman gantsl Ganymede Ganymedes ganza ganzie gaol gaolbird gaoler Gaon Gaonate Gaonic gap Gapa gapa gape gaper gapes gapeseed gapeworm gaping gapingly gapingstock gapo gappy gapy gar gara garabato garad garage garageman Garamond garance garancine garapata garava garavance garawi garb garbage garbardine garbel garbell garbill garble garbleable garbler garbless garbling garboard garboil garbure garce Garcinia gardant gardeen garden gardenable gardencraft gardened gardener gardenership gardenesque gardenful gardenhood Gardenia gardenin gardening gardenize gardenless gardenlike gardenly gardenmaker gardenmaking gardenwards gardenwise gardeny garderobe gardevin gardy gardyloo gare garefowl gareh garetta garewaite garfish garganey Gargantua Gargantuan garget gargety gargle gargol gargoyle gargoyled gargoyley gargoylish gargoylishly gargoylism Garhwali garial gariba garibaldi Garibaldian garish garishly garishness garland garlandage garlandless garlandlike garlandry garlandwise garle garlic garlicky garliclike garlicmonger garlicwort garment garmentless garmentmaker garmenture garmentworker garn garnel garner garnerage garnet garnetberry garneter garnetiferous garnets garnett garnetter garnetwork garnetz garnice garniec garnierite garnish garnishable garnished garnishee garnisheement garnisher garnishment garnishry garniture Garo garoo garookuh garrafa garran Garret garret garreted garreteer garretmaster garrison Garrisonian Garrisonism garrot garrote garroter Garrulinae garruline garrulity garrulous garrulously garrulousness Garrulus garrupa Garrya Garryaceae garse Garshuni garsil garston garten garter gartered gartering garterless garth garthman Garuda garum garvanzo garvey garvock gas Gasan gasbag gascoigny Gascon gasconade gasconader Gasconism gascromh gaseity gaselier gaseosity gaseous gaseousness gasfiring gash gashes gashful gashliness gashly gasholder gashouse gashy gasifiable gasification gasifier gasiform gasify gasket gaskin gasking gaskins gasless gaslight gaslighted gaslighting gaslit gaslock gasmaker gasman gasogenic gasoliery gasoline gasolineless gasoliner gasometer gasometric gasometrical gasometry gasp Gaspar gasparillo gasper gaspereau gaspergou gaspiness gasping gaspingly gasproof gaspy gasser Gasserian gassiness gassing gassy gast gastaldite gastaldo gaster gasteralgia Gasterolichenes gasteromycete Gasteromycetes gasteromycetous Gasterophilus gasteropod Gasteropoda gasterosteid Gasterosteidae gasterosteiform gasterosteoid Gasterosteus gasterotheca gasterothecal Gasterotricha gasterotrichan gasterozooid gastight gastightness Gastornis Gastornithidae gastradenitis gastraea gastraead Gastraeadae gastraeal gastraeum gastral gastralgia gastralgic gastralgy gastraneuria gastrasthenia gastratrophia gastrectasia gastrectasis gastrectomy gastrelcosis gastric gastricism gastrilegous gastriloquial gastriloquism gastriloquist gastriloquous gastriloquy gastrin gastritic gastritis gastroadenitis gastroadynamic gastroalbuminorrhea gastroanastomosis gastroarthritis gastroatonia gastroatrophia gastroblennorrhea gastrocatarrhal gastrocele gastrocentrous Gastrochaena Gastrochaenidae gastrocnemial gastrocnemian gastrocnemius gastrocoel gastrocolic gastrocoloptosis gastrocolostomy gastrocolotomy gastrocolpotomy gastrocystic gastrocystis gastrodialysis gastrodiaphanoscopy gastrodidymus gastrodisk gastroduodenal gastroduodenitis gastroduodenoscopy gastroduodenotomy gastrodynia gastroelytrotomy gastroenteralgia gastroenteric gastroenteritic gastroenteritis gastroenteroanastomosis gastroenterocolitis gastroenterocolostomy gastroenterological gastroenterologist gastroenterology gastroenteroptosis gastroenterostomy gastroenterotomy gastroepiploic gastroesophageal gastroesophagostomy gastrogastrotomy gastrogenital gastrograph gastrohelcosis gastrohepatic gastrohepatitis gastrohydrorrhea gastrohyperneuria gastrohypertonic gastrohysterectomy gastrohysteropexy gastrohysterorrhaphy gastrohysterotomy gastroid gastrointestinal gastrojejunal gastrojejunostomy gastrolater gastrolatrous gastrolienal gastrolith Gastrolobium gastrologer gastrological gastrologist gastrology gastrolysis gastrolytic gastromalacia gastromancy gastromelus gastromenia gastromyces gastromycosis gastromyxorrhea gastronephritis gastronome gastronomer gastronomic gastronomical gastronomically gastronomist gastronomy gastronosus gastropancreatic gastropancreatitis gastroparalysis gastroparesis gastroparietal gastropathic gastropathy gastroperiodynia gastropexy gastrophile gastrophilism gastrophilist gastrophilite Gastrophilus gastrophrenic gastrophthisis gastroplasty gastroplenic gastropleuritis gastroplication gastropneumatic gastropneumonic gastropod Gastropoda gastropodan gastropodous gastropore gastroptosia gastroptosis gastropulmonary gastropulmonic gastropyloric gastrorrhagia gastrorrhaphy gastrorrhea gastroschisis gastroscope gastroscopic gastroscopy gastrosoph gastrosopher gastrosophy gastrospasm gastrosplenic gastrostaxis gastrostegal gastrostege gastrostenosis gastrostomize Gastrostomus gastrostomy gastrosuccorrhea gastrotheca gastrothecal gastrotome gastrotomic gastrotomy Gastrotricha gastrotrichan gastrotubotomy gastrotympanites gastrovascular gastroxynsis gastrozooid gastrula gastrular gastrulate gastrulation gasworker gasworks gat gata gatch gatchwork gate gateado gateage gated gatehouse gatekeeper gateless gatelike gatemaker gateman gatepost gater gatetender gateward gatewards gateway gatewayman gatewise gatewoman gateworks gatewright Gatha gather gatherable gatherer gathering Gathic gating gator gatter gatteridge gau gaub gauby gauche gauchely gaucheness gaucherie Gaucho gaud gaudery Gaudete gaudful gaudily gaudiness gaudless gaudsman gaudy gaufer gauffer gauffered gauffre gaufre gaufrette gauge gaugeable gauger gaugership gauging Gaul gaulding gauleiter Gaulic gaulin Gaulish Gaullism Gaullist Gault gault gaulter gaultherase Gaultheria gaultherin gaum gaumish gaumless gaumlike gaumy gaun gaunt gaunted gauntlet gauntleted gauntly gauntness gauntry gaunty gaup gaupus gaur Gaura Gaurian gaus gauss gaussage gaussbergite Gaussian gauster gausterer gaut gauteite gauze gauzelike gauzewing gauzily gauziness gauzy gavall gave gavel gaveler gavelkind gavelkinder gavelman gavelock Gavia Gaviae gavial Gavialis gavialoid Gaviiformes gavotte gavyuti gaw gawby gawcie gawk gawkhammer gawkihood gawkily gawkiness gawkish gawkishly gawkishness gawky gawm gawn gawney gawsie gay gayal gayatri gaybine gaycat gaydiang gayish Gaylussacia gaylussite gayment gayness Gaypoo gaysome gaywings gayyou gaz gazabo gazangabin Gazania gaze gazebo gazee gazehound gazel gazeless Gazella gazelle gazelline gazement gazer gazettal gazette gazetteer gazetteerage gazetteerish gazetteership gazi gazing gazingly gazingstock gazogene gazon gazophylacium gazy gazzetta Ge ge Geadephaga geadephagous geal gean geanticlinal geanticline gear gearbox geared gearing gearksutite gearless gearman gearset gearshift gearwheel gease geason Geaster Geat geat Geatas gebang gebanga gebbie gebur Gecarcinidae Gecarcinus geck gecko geckoid geckotian geckotid Geckotidae geckotoid Ged ged gedackt gedanite gedder gedeckt gedecktwork Gederathite Gederite gedrite Gee gee geebong geebung Geechee geejee geek geelbec geeldikkop geelhout geepound geerah geest geet Geez geezer Gegenschein gegg geggee gegger geggery Geheimrat Gehenna gehlenite Geikia geikielite gein geira Geisenheimer geisha geison geisotherm geisothermal Geissoloma Geissolomataceae Geissolomataceous Geissorhiza geissospermin geissospermine geitjie geitonogamous geitonogamy Gekko Gekkones gekkonid Gekkonidae gekkonoid Gekkota gel gelable gelada gelandejump gelandelaufer gelandesprung Gelasian Gelasimus gelastic Gelastocoridae gelatification gelatigenous gelatin gelatinate gelatination gelatined gelatiniferous gelatiniform gelatinify gelatinigerous gelatinity gelatinizability gelatinizable gelatinization gelatinize gelatinizer gelatinobromide gelatinochloride gelatinoid gelatinotype gelatinous gelatinously gelatinousness gelation gelatose geld geldability geldable geldant gelder gelding Gelechia gelechiid Gelechiidae Gelfomino gelid Gelidiaceae gelidity Gelidium gelidly gelidness gelignite gelilah gelinotte gell Gellert gelly gelogenic gelong geloscopy gelose gelosin gelotherapy gelotometer gelotoscopy gelototherapy gelsemic gelsemine gelseminic gelseminine Gelsemium gelt gem Gemara Gemaric Gemarist gematria gematrical gemauve gemel gemeled gemellione gemellus geminate geminated geminately gemination geminative Gemini Geminid geminiflorous geminiform geminous Gemitores gemitorial gemless gemlike Gemma gemma gemmaceous gemmae gemmate gemmation gemmative gemmeous gemmer gemmiferous gemmiferousness gemmification gemmiform gemmily gemminess Gemmingia gemmipara gemmipares gemmiparity gemmiparous gemmiparously gemmoid gemmology gemmula gemmulation gemmule gemmuliferous gemmy gemot gemsbok gemsbuck gemshorn gemul gemuti gemwork gen gena genal genapp genapper genarch genarcha genarchaship genarchship gendarme gendarmery gender genderer genderless Gene gene genealogic genealogical genealogically genealogist genealogize genealogizer genealogy genear geneat genecologic genecological genecologically genecologist genecology geneki genep genera generability generable generableness general generalate generalcy generale generalia Generalidad generalific generalism generalissima generalissimo generalist generalistic generality generalizable generalization generalize generalized generalizer generall generally generalness generalship generalty generant generate generating generation generational generationism generative generatively generativeness generator generatrix generic generical generically genericalness generification generosity generous generously generousness Genesee geneserine Genesiac Genesiacal genesial genesic genesiology genesis Genesitic genesiurgic genet genethliac genethliacal genethliacally genethliacon genethliacs genethlialogic genethlialogical genethlialogy genethlic genetic genetical genetically geneticism geneticist genetics genetmoil genetous Genetrix genetrix Genetta Geneura Geneva geneva Genevan Genevese Genevieve Genevois genevoise genial geniality genialize genially genialness genian genic genicular geniculate geniculated geniculately geniculation geniculum genie genii genin genioglossal genioglossi genioglossus geniohyoglossal geniohyoglossus geniohyoid geniolatry genion genioplasty genip Genipa genipa genipap genipapada genisaro Genista genista genistein genital genitalia genitals genitival genitivally genitive genitocrural genitofemoral genitor genitorial genitory genitourinary geniture genius genizah genizero Genny Genoa genoblast genoblastic genocidal genocide Genoese genoese genom genome genomic genonema genos genotype genotypic genotypical genotypically Genoveva genovino genre genro gens genson gent genteel genteelish genteelism genteelize genteelly genteelness gentes genthite gentian Gentiana Gentianaceae gentianaceous Gentianales gentianella gentianic gentianin gentianose gentianwort gentile gentiledom gentilesse gentilic gentilism gentilitial gentilitian gentilitious gentility gentilization gentilize gentiobiose gentiopicrin gentisein gentisic gentisin gentle gentlefolk gentlehearted gentleheartedly gentleheartedness gentlehood gentleman gentlemanhood gentlemanism gentlemanize gentlemanlike gentlemanlikeness gentlemanliness gentlemanly gentlemanship gentlemens gentlemouthed gentleness gentlepeople gentleship gentlewoman gentlewomanhood gentlewomanish gentlewomanlike gentlewomanliness gentlewomanly gently gentman Gentoo gentrice gentry genty genu genua genual genuclast genuflect genuflection genuflector genuflectory genuflex genuflexuous genuine genuinely genuineness genus genyantrum Genyophrynidae genyoplasty genys geo geoaesthesia geoagronomic geobiologic geobiology geobiont geobios geoblast geobotanic geobotanical geobotanist geobotany geocarpic geocentric geocentrical geocentrically geocentricism geocerite geochemical geochemist geochemistry geochronic geochronology geochrony Geococcyx geocoronium geocratic geocronite geocyclic geodaesia geodal geode geodesic geodesical geodesist geodesy geodete geodetic geodetical geodetically geodetician geodetics geodiatropism geodic geodiferous geodist geoduck geodynamic geodynamical geodynamics geoethnic Geoffrey geoffroyin geoffroyine geoform geogenesis geogenetic geogenic geogenous geogeny Geoglossaceae Geoglossum geoglyphic geognosis geognosist geognost geognostic geognostical geognostically geognosy geogonic geogonical geogony geographer geographic geographical geographically geographics geographism geographize geography geohydrologist geohydrology geoid geoidal geoisotherm geolatry geologer geologian geologic geological geologically geologician geologist geologize geology geomagnetic geomagnetician geomagnetics geomagnetist geomalic geomalism geomaly geomance geomancer geomancy geomant geomantic geomantical geomantically geometer geometric geometrical geometrically geometrician geometricize geometrid Geometridae geometriform Geometrina geometrine geometrize geometroid Geometroidea geometry geomoroi geomorphic geomorphist geomorphogenic geomorphogenist geomorphogeny geomorphological geomorphology geomorphy geomyid Geomyidae Geomys Geon geonavigation geonegative Geonic Geonim Geonoma geonoma geonyctinastic geonyctitropic geoparallelotropic geophagia geophagism geophagist geophagous geophagy Geophila geophilid Geophilidae geophilous Geophilus Geophone geophone geophysical geophysicist geophysics geophyte geophytic geoplagiotropism Geoplana Geoplanidae geopolar geopolitic geopolitical geopolitically geopolitician geopolitics Geopolitik geoponic geoponical geoponics geopony geopositive Geoprumnon georama Geordie George Georgemas Georgette Georgia georgiadesite Georgian Georgiana georgic Georgie geoscopic geoscopy geoselenic geosid geoside geosphere Geospiza geostatic geostatics geostrategic geostrategist geostrategy geostrophic geosynclinal geosyncline geotactic geotactically geotaxis geotaxy geotechnic geotechnics geotectology geotectonic geotectonics Geoteuthis geotherm geothermal geothermic geothermometer Geothlypis geotic geotical geotilla geotonic geotonus geotropic geotropically geotropism geotropy geoty Gepeoo Gephyrea gephyrean gephyrocercal gephyrocercy Gepidae ger gerah Gerald Geraldine Geraniaceae geraniaceous geranial Geraniales geranic geraniol Geranium geranium geranomorph Geranomorphae geranomorphic geranyl Gerard gerardia Gerasene gerastian gerate gerated geratic geratologic geratologous geratology geraty gerb gerbe Gerbera Gerberia gerbil Gerbillinae Gerbillus gercrow gereagle gerefa gerenda gerendum gerent gerenuk gerfalcon gerhardtite geriatric geriatrician geriatrics gerim gerip germ germal German german germander germane germanely germaneness Germanesque Germanhood Germania Germanic germanic Germanical Germanically Germanics Germanification Germanify germanious Germanish Germanism Germanist Germanistic germanite Germanity germanity germanium Germanization germanization Germanize germanize Germanizer Germanly Germanness Germanocentric Germanomania Germanomaniac Germanophile Germanophilist Germanophobe Germanophobia Germanophobic Germanophobist germanous Germantown germanyl germarium germen germfree germicidal germicide germifuge germigenous germin germina germinability germinable Germinal germinal germinally germinance germinancy germinant germinate germination germinative germinatively germinator germing germinogony germiparity germless germlike germling germon germproof germule germy gernitz gerocomia gerocomical gerocomy geromorphism Geronomite geront gerontal gerontes gerontic gerontine gerontism geronto gerontocracy gerontocrat gerontocratic gerontogeous gerontology gerontophilia gerontoxon Gerres gerrhosaurid Gerrhosauridae Gerridae gerrymander gerrymanderer gers gersdorffite Gershom Gershon Gershonite gersum Gertie Gertrude gerund gerundial gerundially gerundival gerundive gerundively gerusia Gervais gervao Gervas Gervase Gerygone gerygone Geryonia geryonid Geryonidae Geryoniidae Ges Gesan Geshurites gesith gesithcund gesithcundman Gesnera Gesneraceae gesneraceous Gesneria gesneria Gesneriaceae gesneriaceous Gesnerian gesning gessamine gesso gest Gestalt gestalter gestaltist gestant Gestapo gestate gestation gestational gestative gestatorial gestatorium gestatory geste gested gesten gestening gestic gestical gesticulacious gesticulant gesticular gesticularious gesticulate gesticulation gesticulative gesticulatively gesticulator gesticulatory gestion gestning gestural gesture gestureless gesturer get geta Getae getah getaway gether Gethsemane gethsemane Gethsemanic gethsemanic Getic getling getpenny Getsul gettable getter getting getup Geullah Geum geum gewgaw gewgawed gewgawish gewgawry gewgawy gey geyan geyerite geyser geyseral geyseric geyserine geyserish geyserite gez ghafir ghaist ghalva Ghan gharial gharnao gharry Ghassanid ghastily ghastlily ghastliness ghastly ghat ghatti ghatwal ghatwazi ghazi ghazism Ghaznevid Gheber ghebeta Ghedda ghee Gheg Ghegish gheleem Ghent gherkin ghetchoo ghetti ghetto ghettoization ghettoize Ghibelline Ghibellinism Ghilzai Ghiordes ghizite ghoom ghost ghostcraft ghostdom ghoster ghostess ghostfish ghostflower ghosthood ghostified ghostily ghostish ghostism ghostland ghostless ghostlet ghostlify ghostlike ghostlily ghostliness ghostly ghostmonger ghostology ghostship ghostweed ghostwrite ghosty ghoul ghoulery ghoulish ghoulishly ghoulishness ghrush ghurry Ghuz Gi Giansar giant giantesque giantess gianthood giantish giantism giantize giantkind giantlike giantly giantry giantship Giardia giardia giardiasis giarra giarre Gib gib gibaro gibbals gibbed gibber Gibberella gibbergunyah gibberish gibberose gibberosity gibbet gibbetwise Gibbi gibblegabble gibblegabbler gibbles gibbon gibbose gibbosity gibbous gibbously gibbousness gibbsite gibbus gibby gibe gibel gibelite Gibeonite giber gibing gibingly gibleh giblet giblets Gibraltar Gibson gibstaff gibus gid giddap giddea giddify giddily giddiness giddy giddyberry giddybrain giddyhead giddyish Gideon Gideonite gidgee gie gied gien Gienah gieseckite gif giffgaff Gifola gift gifted giftedly giftedness giftie giftless giftling giftware gig gigantean gigantesque gigantic gigantical gigantically giganticidal giganticide giganticness gigantism gigantize gigantoblast gigantocyte gigantolite gigantological gigantology gigantomachy Gigantopithecus Gigantosaurus Gigantostraca gigantostracan gigantostracous Gigartina Gigartinaceae gigartinaceous Gigartinales gigback gigelira gigeria gigerium gigful gigger giggish giggit giggle giggledom gigglement giggler gigglesome giggling gigglingly gigglish giggly giglet gigliato giglot gigman gigmaness gigmanhood gigmania gigmanic gigmanically gigmanism gigmanity gignate gignitive gigolo gigot gigsman gigster gigtree gigunu Gil Gila Gilaki Gilbert gilbert gilbertage Gilbertese Gilbertian Gilbertianism gilbertite gild gildable gilded gilden gilder gilding Gileadite Gileno Giles gilguy Gilia gilia Giliak gilim gill gillaroo gillbird gilled Gillenia giller gillflirt gillhooter Gillian gillie gilliflirt gilling gilliver gillotage gillotype gillstoup gilly gillyflower gillygaupus gilo gilpy gilravage gilravager gilse gilsonite gilt giltcup gilthead gilttail gim gimbal gimbaled gimbaljawed gimberjawed gimble gimcrack gimcrackery gimcrackiness gimcracky gimel Gimirrai gimlet gimleteyed gimlety gimmal gimmer gimmerpet gimmick gimp gimped gimper gimping gin ging ginger gingerade gingerberry gingerbread gingerbready gingerin gingerleaf gingerline gingerliness gingerly gingerness gingernut gingerol gingerous gingerroot gingersnap gingerspice gingerwork gingerwort gingery gingham ginghamed gingili gingiva gingivae gingival gingivalgia gingivectomy gingivitis gingivoglossitis gingivolabial ginglyform ginglymoarthrodia ginglymoarthrodial Ginglymodi ginglymodian ginglymoid ginglymoidal Ginglymostoma ginglymostomoid ginglymus ginglyni ginhouse gink Ginkgo ginkgo Ginkgoaceae ginkgoaceous Ginkgoales ginned ginner ginners ginnery ginney ginning ginnle ginny ginseng ginward gio giobertite giornata giornatate Giottesque Giovanni gip gipon gipper Gippy gipser gipsire gipsyweed Giraffa giraffe giraffesque Giraffidae giraffine giraffoid girandola girandole girasol girasole girba gird girder girderage girderless girding girdingly girdle girdlecake girdlelike girdler girdlestead girdling girdlingly Girella Girellidae Girgashite Girgasite girl girleen girlery girlfully girlhood girlie girliness girling girlish girlishly girlishness girlism girllike girly girn girny giro giroflore Girondin Girondism Girondist girouette girouettism girr girse girsh girsle girt girth girtline gisarme gish gisla gisler gismondine gismondite gist git gitaligenin gitalin Gitanemuck gith Gitksan gitonin gitoxigenin gitoxin gittern Gittite gittith Giuseppe giustina give giveable giveaway given givenness giver givey giving gizz gizzard gizzen gizzern glabella glabellae glabellar glabellous glabellum glabrate glabrescent glabrous glace glaceed glaceing glaciable glacial glacialism glacialist glacialize glacially glaciaria glaciarium glaciate glaciation glacier glaciered glacieret glacierist glacification glacioaqueous glaciolacustrine glaciological glaciologist glaciology glaciomarine glaciometer glacionatant glacis glack glad gladden gladdener gladdon gladdy glade gladelike gladeye gladful gladfully gladfulness gladhearted gladiate gladiator gladiatorial gladiatorism gladiatorship gladiatrix gladify gladii gladiola gladiolar gladiole gladioli gladiolus gladius gladkaite gladless gladly gladness gladsome gladsomely gladsomeness Gladstone Gladstonian Gladstonianism glady Gladys glaga Glagol Glagolic Glagolitic Glagolitsa glaieul glaik glaiket glaiketness glair glaireous glairiness glairy glaister glaive glaived glaked glaky glam glamberry glamorize glamorous glamorously glamour glamoury glance glancer glancing glancingly gland glandaceous glandarious glandered glanderous glanders glandes glandiferous glandiform glandless glandlike glandular glandularly glandule glanduliferous glanduliform glanduligerous glandulose glandulosity glandulous glandulousness Glaniostomi glans glar glare glareless Glareola glareole Glareolidae glareous glareproof glareworm glarily glariness glaring glaringly glaringness glarry glary Glaserian glaserite glashan glass glassen glasser glasses glassfish glassful glasshouse glassie glassily glassine glassiness Glassite glassless glasslike glassmaker glassmaking glassman glassophone glassrope glassteel glassware glassweed glasswork glassworker glassworking glassworks glasswort glassy Glaswegian Glathsheim Glathsheimr glauberite glaucescence glaucescent Glaucidium glaucin glaucine Glaucionetta Glaucium glaucochroite glaucodot glaucolite glaucoma glaucomatous Glaucomys Glauconia glauconiferous Glauconiidae glauconite glauconitic glauconitization glaucophane glaucophanite glaucophanization glaucophanize glaucophyllous Glaucopis glaucosuria glaucous glaucously Glauke glaum glaumrie glaur glaury Glaux glaver glaze glazed glazen glazer glazework glazier glaziery glazily glaziness glazing glazy gleam gleamily gleaminess gleaming gleamingly gleamless gleamy glean gleanable gleaner gleaning gleary gleba glebal glebe glebeless glebous Glecoma glede Gleditsia gledy glee gleed gleeful gleefully gleefulness gleeishly gleek gleemaiden gleeman gleesome gleesomely gleesomeness gleet gleety gleewoman gleg glegly glegness glen Glengarry glenohumeral glenoid glenoidal glent glessite gleyde glia gliadin glial glib glibbery glibly glibness glidder gliddery glide glideless glideness glider gliderport glidewort gliding glidingly gliff gliffing glime glimmer glimmering glimmeringly glimmerite glimmerous glimmery glimpse glimpser glink glint glioma gliomatous gliosa gliosis Glires Gliridae gliriform Gliriformia glirine Glis glisk glisky glissade glissader glissando glissette glisten glistening glisteningly glister glisteringly Glitnir glitter glitterance glittering glitteringly glittersome glittery gloam gloaming gloat gloater gloating gloatingly global globally globate globated globe globed globefish globeflower globeholder globelet Globicephala globiferous Globigerina globigerine Globigerinidae globin Globiocephalus globoid globose globosely globoseness globosite globosity globosphaerite globous globously globousness globular Globularia Globulariaceae globulariaceous globularity globularly globularness globule globulet globulicidal globulicide globuliferous globuliform globulimeter globulin globulinuria globulite globulitic globuloid globulolysis globulose globulous globulousness globulysis globy glochid glochideous glochidia glochidial glochidian glochidiate glochidium glochis glockenspiel gloea gloeal Gloeocapsa gloeocapsoid gloeosporiose Gloeosporium Gloiopeltis Gloiosiphonia Gloiosiphoniaceae glom glome glomerate glomeration Glomerella glomeroporphyritic glomerular glomerulate glomerule glomerulitis glomerulonephritis glomerulose glomerulus glommox glomus glonoin glonoine gloom gloomful gloomfully gloomily gloominess glooming gloomingly gloomless gloomth gloomy glop gloppen glor glore Gloria Gloriana gloriation gloriette glorifiable glorification glorifier glorify gloriole Gloriosa gloriosity glorious gloriously gloriousness glory gloryful glorying gloryingly gloryless gloss glossa glossagra glossal glossalgia glossalgy glossanthrax glossarial glossarially glossarian glossarist glossarize glossary Glossata glossate glossator glossatorial glossectomy glossed glosser glossic glossily Glossina glossiness glossing glossingly Glossiphonia Glossiphonidae glossist glossitic glossitis glossless glossmeter glossocarcinoma glossocele glossocoma glossocomon glossodynamometer glossodynia glossoepiglottic glossoepiglottidean glossograph glossographer glossographical glossography glossohyal glossoid glossokinesthetic glossolabial glossolabiolaryngeal glossolabiopharyngeal glossolalia glossolalist glossolaly glossolaryngeal glossological glossologist glossology glossolysis glossoncus glossopalatine glossopalatinus glossopathy glossopetra Glossophaga glossophagine glossopharyngeal glossopharyngeus Glossophora glossophorous glossophytia glossoplasty glossoplegia glossopode glossopodium Glossopteris glossoptosis glossopyrosis glossorrhaphy glossoscopia glossoscopy glossospasm glossosteresis Glossotherium glossotomy glossotype glossy glost glottal glottalite glottalize glottic glottid glottidean glottis glottiscope glottogonic glottogonist glottogony glottologic glottological glottologist glottology Gloucester glout glove gloveless glovelike glovemaker glovemaking glover gloveress glovey gloving glow glower glowerer glowering gloweringly glowfly glowing glowingly glowworm Gloxinia gloy gloze glozing glozingly glub glucase glucemia glucid glucide glucidic glucina glucine glucinic glucinium glucinum gluck glucofrangulin glucokinin glucolipid glucolipide glucolipin glucolipine glucolysis glucosaemia glucosamine glucosan glucosane glucosazone glucose glucosemia glucosic glucosid glucosidal glucosidase glucoside glucosidic glucosidically glucosin glucosine glucosone glucosuria glucuronic glue glued gluemaker gluemaking gluepot gluer gluey glueyness glug gluish gluishness glum gluma Glumaceae glumaceous glumal Glumales glume glumiferous Glumiflorae glumly glummy glumness glumose glumosity glump glumpily glumpiness glumpish glumpy glunch Gluneamie glusid gluside glut glutamic glutamine glutaminic glutaric glutathione glutch gluteal glutelin gluten glutenin glutenous gluteofemoral gluteoinguinal gluteoperineal gluteus glutin glutinate glutination glutinative glutinize glutinose glutinosity glutinous glutinously glutinousness glutition glutoid glutose glutter gluttery glutting gluttingly glutton gluttoness gluttonish gluttonism gluttonize gluttonous gluttonously gluttonousness gluttony glyceraldehyde glycerate Glyceria glyceric glyceride glycerin glycerinate glycerination glycerine glycerinize glycerite glycerize glycerizin glycerizine glycerogel glycerogelatin glycerol glycerolate glycerole glycerolize glycerophosphate glycerophosphoric glycerose glyceroxide glyceryl glycid glycide glycidic glycidol Glycine glycine glycinin glycocholate glycocholic glycocin glycocoll glycogelatin glycogen glycogenesis glycogenetic glycogenic glycogenize glycogenolysis glycogenous glycogeny glycohaemia glycohemia glycol glycolaldehyde glycolate glycolic glycolide glycolipid glycolipide glycolipin glycolipine glycoluric glycoluril glycolyl glycolylurea glycolysis glycolytic glycolytically Glyconian Glyconic glyconic glyconin glycoproteid glycoprotein glycosaemia glycose glycosemia glycosin glycosine glycosuria glycosuric glycuresis glycuronic glycyl glycyphyllin Glycyrrhiza glycyrrhizin glyoxal glyoxalase glyoxalic glyoxalin glyoxaline glyoxim glyoxime glyoxyl glyoxylic glyph glyphic glyphograph glyphographer glyphographic glyphography glyptic glyptical glyptician Glyptodon glyptodont Glyptodontidae glyptodontoid glyptograph glyptographer glyptographic glyptography glyptolith glyptological glyptologist glyptology glyptotheca Glyptotherium glyster Gmelina gmelinite gnabble Gnaeus gnaphalioid Gnaphalium gnar gnarl gnarled gnarliness gnarly gnash gnashingly gnat gnatcatcher gnatflower gnathal gnathalgia gnathic gnathidium gnathion gnathism gnathite gnathitis Gnatho gnathobase gnathobasic Gnathobdellae Gnathobdellida gnathometer gnathonic gnathonical gnathonically gnathonism gnathonize gnathophorous gnathoplasty gnathopod Gnathopoda gnathopodite gnathopodous gnathostegite Gnathostoma Gnathostomata gnathostomatous gnathostome Gnathostomi gnathostomous gnathotheca gnatling gnatproof gnatsnap gnatsnapper gnatter gnatty gnatworm gnaw gnawable gnawer gnawing gnawingly gnawn gneiss gneissic gneissitic gneissoid gneissose gneissy Gnetaceae gnetaceous Gnetales Gnetum gnocchetti gnome gnomed gnomesque gnomic gnomical gnomically gnomide gnomish gnomist gnomologic gnomological gnomologist gnomology gnomon Gnomonia Gnomoniaceae gnomonic gnomonical gnomonics gnomonological gnomonologically gnomonology gnosiological gnosiology gnosis Gnostic gnostic gnostical gnostically Gnosticism gnosticity gnosticize gnosticizer gnostology gnu go goa goad goadsman goadster goaf Goajiro goal Goala goalage goalee goalie goalkeeper goalkeeping goalless goalmouth Goan Goanese goanna Goasila goat goatbeard goatbrush goatbush goatee goateed goatfish goatherd goatherdess goatish goatishly goatishness goatland goatlike goatling goatly goatroot goatsbane goatsbeard goatsfoot goatskin goatstone goatsucker goatweed goaty goave gob goback goban gobang gobbe gobber gobbet gobbin gobbing gobble gobbledygook gobbler gobby Gobelin gobelin gobernadora gobi Gobia Gobian gobiesocid Gobiesocidae gobiesociform Gobiesox gobiid Gobiidae gobiiform Gobiiformes Gobinism Gobinist Gobio gobioid Gobioidea Gobioidei goblet gobleted gobletful goblin gobline goblinesque goblinish goblinism goblinize goblinry gobmouthed gobo gobonated gobony gobstick goburra goby gobylike gocart Goclenian God god godchild Goddam Goddard goddard goddaughter godded goddess goddesshood goddessship goddikin goddize gode godet Godetia godfather godfatherhood godfathership Godforsaken Godfrey Godful godhead godhood Godiva godkin godless godlessly godlessness godlet godlike godlikeness godlily godliness godling godly godmaker godmaking godmamma godmother godmotherhood godmothership godown godpapa godparent Godsake godsend godship godson godsonship Godspeed Godward Godwin Godwinian godwit goeduck goel goelism Goemagot Goemot goer goes Goetae Goethian goetia goetic goetical goety goff goffer goffered gofferer goffering goffle gog gogga goggan goggle goggled goggler gogglers goggly goglet Gogo gogo Gohila goi goiabada Goidel Goidelic going goitcho goiter goitered goitral goitrogen goitrogenic goitrous Gokuraku gol gola golach goladar golandaas golandause Golaseccan Golconda Gold gold goldbeater goldbeating Goldbird goldbrick goldbricker goldbug goldcrest goldcup golden goldenback goldeneye goldenfleece goldenhair goldenknop goldenlocks goldenly Goldenmouth goldenmouthed goldenness goldenpert goldenrod goldenseal goldentop goldenwing golder goldfielder goldfinch goldfinny goldfish goldflower goldhammer goldhead Goldi Goldic goldie goldilocks goldin goldish goldless goldlike Goldonian goldseed goldsinny goldsmith goldsmithery goldsmithing goldspink goldstone goldtail goldtit goldwater goldweed goldwork goldworker Goldy goldy golee golem golf golfdom golfer Golgi Golgotha goli goliard goliardery goliardic Goliath goliath goliathize golkakra Goll golland gollar golliwogg golly Golo goloe golpe Goma gomari Gomarian Gomarist Gomarite gomart gomashta gomavel gombay gombeen gombeenism gombroon Gomeisa gomer gomeral gomlah gommelin Gomontia Gomorrhean Gomphocarpus gomphodont Gompholobium gomphosis Gomphrena gomuti gon Gona gonad gonadal gonadial gonadic gonadotropic gonadotropin gonaduct gonagra gonakie gonal gonalgia gonangial gonangium gonapod gonapophysal gonapophysial gonapophysis gonarthritis Gond gondang Gondi gondite gondola gondolet gondolier gone goneness goneoclinic gonepoiesis gonepoietic goner Goneril gonesome gonfalcon gonfalonier gonfalonierate gonfaloniership gonfanon gong gongman Gongoresque Gongorism Gongorist gongoristic gonia goniac gonial goniale Goniaster goniatite Goniatites goniatitic goniatitid Goniatitidae goniatitoid gonid gonidangium gonidia gonidial gonidic gonidiferous gonidiogenous gonidioid gonidiophore gonidiose gonidiospore gonidium gonimic gonimium gonimolobe gonimous goniocraniometry Goniodoridae Goniodorididae Goniodoris goniometer goniometric goniometrical goniometrically goniometry gonion Goniopholidae Goniopholis goniostat goniotropous gonitis Gonium gonium gonnardite gonne gonoblast gonoblastic gonoblastidial gonoblastidium gonocalycine gonocalyx gonocheme gonochorism gonochorismal gonochorismus gonochoristic gonococcal gonococcic gonococcoid gonococcus gonocoel gonocyte gonoecium Gonolobus gonomere gonomery gonophore gonophoric gonophorous gonoplasm gonopoietic gonorrhea gonorrheal gonorrheic gonosomal gonosome gonosphere gonostyle gonotheca gonothecal gonotokont gonotome gonotype gonozooid gony gonyalgia gonydeal gonydial gonyocele gonyoncus gonys Gonystylaceae gonystylaceous Gonystylus gonytheca Gonzalo goo goober good Goodenia Goodeniaceae goodeniaceous Goodenoviaceae goodhearted goodheartedly goodheartedness gooding goodish goodishness goodlihead goodlike goodliness goodly goodman goodmanship goodness goods goodsome goodwife goodwill goodwillit goodwilly goody goodyear Goodyera goodyish goodyism goodyness goodyship goof goofer goofily goofiness goofy googly googol googolplex googul gook gool goolah gools gooma goon goondie goonie Goop goosander goose goosebeak gooseberry goosebill goosebird goosebone gooseboy goosecap goosefish gooseflower goosefoot goosegirl goosegog gooseherd goosehouse gooselike goosemouth gooseneck goosenecked gooserumped goosery goosetongue gooseweed goosewing goosewinged goosish goosishly goosishness goosy gopher gopherberry gopherroot gopherwood gopura Gor gor gora goracco goral goran gorb gorbal gorbellied gorbelly gorbet gorble gorblimy gorce gorcock gorcrow Gordiacea gordiacean gordiaceous Gordian Gordiidae Gordioidea Gordius gordolobo Gordonia gordunite Gordyaean gore gorer gorevan gorfly gorge gorgeable gorged gorgedly gorgelet gorgeous gorgeously gorgeousness gorger gorgerin gorget gorgeted gorglin Gorgon Gorgonacea gorgonacean gorgonaceous gorgonesque gorgoneum Gorgonia Gorgoniacea gorgoniacean gorgoniaceous Gorgonian gorgonian gorgonin gorgonize gorgonlike Gorgonzola Gorgosaurus gorhen goric gorilla gorillaship gorillian gorilline gorilloid gorily goriness goring Gorkhali Gorkiesque gorlin gorlois gormandize gormandizer gormaw gormed gorra gorraf gorry gorse gorsebird gorsechat gorsedd gorsehatch gorsy Gortonian Gortonite gory gos gosain goschen gosh goshawk Goshen goshenite goslarite goslet gosling gosmore gospel gospeler gospelist gospelize gospellike gospelly gospelmonger gospelwards Gosplan gospodar gosport gossamer gossamered gossamery gossampine gossan gossaniferous gossard gossip gossipdom gossipee gossiper gossiphood gossipiness gossiping gossipingly gossipmonger gossipred gossipry gossipy gossoon gossy gossypine Gossypium gossypol gossypose got gotch gote Goth Gotha Gotham Gothamite Gothic Gothically Gothicism Gothicist Gothicity Gothicize Gothicizer Gothicness Gothish Gothism gothite Gothlander Gothonic Gotiglacial gotra gotraja gotten Gottfried Gottlieb gouaree Gouda Goudy gouge gouger goujon goulash goumi goup Goura gourami gourd gourde gourdful gourdhead gourdiness gourdlike gourdworm gourdy Gourinae gourmand gourmander gourmanderie gourmandism gourmet gourmetism gourounut goustrous gousty gout goutify goutily goutiness goutish goutte goutweed goutwort gouty gove govern governability governable governableness governably governail governance governess governessdom governesshood governessy governing governingly government governmental governmentalism governmentalist governmentalize governmentally governmentish governor governorate governorship gowan gowdnie gowf gowfer gowiddie gowk gowked gowkedly gowkedness gowkit gowl gown gownlet gownsman gowpen goy Goyana goyazite Goyetian goyim goyin goyle gozell gozzard gra Graafian grab grabbable grabber grabble grabbler grabbling grabbots graben grabhook grabouche grace graceful gracefully gracefulness graceless gracelessly gracelessness gracelike gracer Gracilaria gracilariid Gracilariidae gracile gracileness gracilescent gracilis gracility graciosity gracioso gracious graciously graciousness grackle Graculus grad gradable gradal gradate gradation gradational gradationally gradationately gradative gradatively gradatory graddan grade graded gradefinder gradely grader Gradgrind gradgrind Gradgrindian Gradgrindish Gradgrindism gradient gradienter Gradientia gradin gradine grading gradiometer gradiometric gradometer gradual gradualism gradualist gradualistic graduality gradually gradualness graduand graduate graduated graduateship graduatical graduating graduation graduator gradus Graeae Graeculus graff graffage graffer Graffias graffito grafship graft graftage graftdom grafted grafter grafting graftonite graftproof graham grahamite Graian grail grailer grailing grain grainage grained grainedness grainer grainering grainery grainfield graininess graining grainland grainless grainman grainsick grainsickness grainsman grainways grainy graip graisse graith Grallae Grallatores grallatorial grallatory grallic Grallina gralline gralloch gram grama gramarye gramashes grame gramenite gramicidin Graminaceae graminaceous Gramineae gramineal gramineous gramineousness graminicolous graminiferous graminifolious graminiform graminin graminivore graminivorous graminological graminology graminous grammalogue grammar grammarian grammarianism grammarless grammatic grammatical grammatically grammaticalness grammaticaster grammaticism grammaticize grammatics grammatist grammatistical grammatite grammatolator grammatolatry Grammatophyllum gramme Grammontine gramoches Gramophone gramophone gramophonic gramophonical gramophonically gramophonist gramp grampa grampus granada granadilla granadillo Granadine granage granary granate granatum granch grand grandam grandame grandaunt grandchild granddad granddaddy granddaughter granddaughterly grandee grandeeism grandeeship grandesque grandeur grandeval grandfather grandfatherhood grandfatherish grandfatherless grandfatherly grandfathership grandfer grandfilial grandiloquence grandiloquent grandiloquently grandiloquous grandiose grandiosely grandiosity grandisonant Grandisonian Grandisonianism grandisonous grandly grandma grandmaternal Grandmontine grandmother grandmotherhood grandmotherism grandmotherliness grandmotherly grandnephew grandness grandniece grandpa grandparent grandparentage grandparental grandpaternal grandsire grandson grandsonship grandstand grandstander granduncle grane grange granger grangerism grangerite grangerization grangerize grangerizer Grangousier graniform granilla granite granitelike graniteware granitic granitical graniticoline granitiferous granitification granitiform granitite granitization granitize granitoid granivore granivorous granjeno grank grannom granny grannybush grano granoblastic granodiorite granogabbro granolite granolith granolithic granomerite granophyre granophyric granose granospherite grant grantable grantedly grantee granter Granth Grantha Grantia Grantiidae grantor granula granular granularity granularly granulary granulate granulated granulater granulation granulative granulator granule granulet granuliferous granuliform granulite granulitic granulitis granulitization granulitize granulize granuloadipose granulocyte granuloma granulomatous granulometric granulosa granulose granulous granza granzita grape graped grapeflower grapefruit grapeful grapeless grapelet grapelike grapenuts graperoot grapery grapeshot grapeskin grapestalk grapestone grapevine grapewise grapewort graph graphalloy graphic graphical graphically graphicalness graphicly graphicness graphics Graphidiaceae Graphiola graphiological graphiologist graphiology Graphis graphite graphiter graphitic graphitization graphitize graphitoid graphitoidal Graphium graphologic graphological graphologist graphology graphomania graphomaniac graphometer graphometric graphometrical graphometry graphomotor Graphophone graphophone graphophonic graphorrhea graphoscope graphospasm graphostatic graphostatical graphostatics graphotype graphotypic graphy graping grapnel grappa grapple grappler grappling Grapsidae grapsoid Grapsus Grapta graptolite Graptolitha Graptolithida Graptolithina graptolitic Graptolitoidea Graptoloidea graptomancy grapy grasp graspable grasper grasping graspingly graspingness graspless grass grassant grassation grassbird grasschat grasscut grasscutter grassed grasser grasset grassflat grassflower grasshop grasshopper grasshopperdom grasshopperish grasshouse grassiness grassing grassland grassless grasslike grassman grassnut grassplot grassquit grasswards grassweed grasswidowhood grasswork grassworm grassy grat grate grateful gratefully gratefulness grateless grateman grater gratewise grather Gratia Gratiano graticulate graticulation graticule gratification gratified gratifiedly gratifier gratify gratifying gratifyingly gratility gratillity gratinate grating Gratiola gratiolin gratiosolin gratis gratitude gratten grattoir gratuitant gratuitous gratuitously gratuitousness gratuity gratulant gratulate gratulation gratulatorily gratulatory graupel gravamen gravamina grave graveclod gravecloth graveclothes graved gravedigger gravegarth gravel graveless gravelike graveling gravelish gravelliness gravelly gravelroot gravelstone gravelweed gravely gravemaker gravemaking graveman gravemaster graven graveness Gravenstein graveolence graveolency graveolent graver Graves graveship graveside gravestead gravestone graveward gravewards graveyard gravic gravicembalo gravid gravidity gravidly gravidness Gravigrada gravigrade gravimeter gravimetric gravimetrical gravimetrically gravimetry graving gravitate gravitater gravitation gravitational gravitationally gravitative gravitometer gravity gravure gravy grawls gray grayback graybeard graycoat grayfish grayfly grayhead grayish graylag grayling grayly graymalkin graymill grayness graypate graywacke grayware graywether grazable graze grazeable grazer grazier grazierdom graziery grazing grazingly grease greasebush greasehorn greaseless greaselessness greaseproof greaseproofness greaser greasewood greasily greasiness greasy great greatcoat greatcoated greaten greater greathead greatheart greathearted greatheartedness greatish greatly greatmouthed greatness greave greaved greaves grebe Grebo grece Grecian Grecianize Grecism Grecize Grecomania Grecomaniac Grecophil gree greed greedily greediness greedless greedsome greedy greedygut greedyguts Greek Greekdom Greekery Greekess Greekish Greekism Greekist Greekize Greekless Greekling green greenable greenage greenalite greenback Greenbacker Greenbackism greenbark greenbone greenbrier Greencloth greencoat greener greenery greeney greenfinch greenfish greengage greengill greengrocer greengrocery greenhead greenheaded greenheart greenhearted greenhew greenhide greenhood greenhorn greenhornism greenhouse greening greenish greenishness greenkeeper greenkeeping Greenland Greenlander Greenlandic Greenlandish greenlandite Greenlandman greenleek greenless greenlet greenling greenly greenness greenockite greenovite greenroom greensand greensauce greenshank greensick greensickness greenside greenstone greenstuff greensward greenswarded greentail greenth greenuk greenweed Greenwich greenwing greenwithe greenwood greenwort greeny greenyard greet greeter greeting greetingless greetingly greffier greffotome gregal gregale gregaloid gregarian gregarianism Gregarina Gregarinae Gregarinaria gregarine Gregarinida gregarinidal gregariniform Gregarinina Gregarinoidea gregarinosis gregarinous gregarious gregariously gregariousness gregaritic grege greggle grego Gregorian Gregorianist Gregorianize Gregorianizer Gregory greige grein greisen gremial gremlin grenade Grenadian grenadier grenadierial grenadierly grenadiership grenadin grenadine Grendel Grenelle Gressoria gressorial gressorious Greta Gretchen Gretel greund Grevillea grew grewhound Grewia grey greyhound Greyiaceae greyly greyness gribble grice grid griddle griddlecake griddler gride gridelin gridiron griece grieced grief griefful grieffully griefless grieflessness grieshoch grievance grieve grieved grievedly griever grieveship grieving grievingly grievous grievously grievousness griff griffade griffado griffaun griffe griffin griffinage griffinesque griffinhood griffinish griffinism Griffith griffithite Griffon griffon griffonage griffonne grift grifter grig griggles grignet grigri grihastha grihyasutra grike grill grillade grillage grille grilled griller grillroom grillwork grilse grim grimace grimacer grimacier grimacing grimacingly grimalkin grime grimful grimgribber grimily griminess grimliness grimly grimme Grimmia Grimmiaceae grimmiaceous grimmish grimness grimp grimy grin grinagog grinch grind grindable Grindelia grinder grinderman grindery grinding grindingly grindle grindstone gringo gringolee gringophobia Grinnellia grinner grinning grinningly grinny grintern grip gripe gripeful griper gripgrass griphite Griphosaurus griping gripingly gripless gripman gripment grippal grippe gripper grippiness gripping grippingly grippingness gripple grippleness grippotoxin grippy gripsack gripy Griqua griquaite Griqualander gris grisaille grisard Griselda griseous grisette grisettish grisgris griskin grisliness grisly Grison grison grisounite grisoutine Grissel grissens grissons grist gristbite grister Gristhorbia gristle gristliness gristly gristmill gristmiller gristmilling gristy grit grith grithbreach grithman gritless gritrock grits gritstone gritten gritter grittily grittiness grittle gritty grivet grivna Grizel Grizzel grizzle grizzled grizzler grizzly grizzlyman groan groaner groanful groaning groaningly groat groats groatsworth grobian grobianism grocer grocerdom groceress grocerly grocerwise grocery groceryman Groenendael groff grog groggery groggily grogginess groggy grogram grogshop groin groined groinery groining Grolier Grolieresque gromatic gromatics Gromia grommet gromwell groom groomer groomish groomishly groomlet groomling groomsman groomy groop groose groot grooty groove grooveless groovelike groover grooverhead grooviness grooving groovy grope groper groping gropingly gropple grorudite gros grosbeak groschen groser groset grosgrain grosgrained gross grossart grossen grosser grossification grossify grossly grossness grosso grossulaceous grossular Grossularia grossularia Grossulariaceae grossulariaceous grossularious grossularite grosz groszy grot grotesque grotesquely grotesqueness grotesquerie grothine grothite Grotian Grotianism grottesco grotto grottoed grottolike grottowork grouch grouchily grouchiness grouchingly grouchy grouf grough ground groundable groundably groundage groundberry groundbird grounded groundedly groundedness groundenell grounder groundflower grounding groundless groundlessly groundlessness groundliness groundling groundly groundman groundmass groundneedle groundnut groundplot grounds groundsel groundsill groundsman groundward groundwood groundwork groundy group groupage groupageness grouped grouper grouping groupist grouplet groupment groupwise grouse grouseberry grouseless grouser grouseward grousewards grousy grout grouter grouthead grouts grouty grouze grove groved grovel groveler groveless groveling grovelingly grovelings grovy grow growable growan growed grower growing growingly growingupness growl growler growlery growling growlingly growly grown grownup growse growsome growth growthful growthiness growthless growthy grozart grozet grr grub grubbed grubber grubbery grubbily grubbiness grubby grubhood grubless grubroot grubs grubstake grubstaker Grubstreet grubstreet grubworm grudge grudgeful grudgefully grudgekin grudgeless grudger grudgery grudging grudgingly grudgingness grudgment grue gruel grueler grueling gruelly Grues gruesome gruesomely gruesomeness gruff gruffily gruffiness gruffish gruffly gruffness gruffs gruffy grufted grugru Gruidae gruiform Gruiformes gruine Gruis grum grumble grumbler grumblesome Grumbletonian grumbling grumblingly grumbly grume Grumium grumly grummel grummels grummet grummeter grumness grumose grumous grumousness grump grumph grumphie grumphy grumpily grumpiness grumpish grumpy grun Grundified Grundlov grundy Grundyism Grundyist Grundyite grunerite gruneritization grunion grunt grunter Grunth grunting gruntingly gruntle gruntled gruntling Grus grush grushie Grusian Grusinian gruss grutch grutten gryde grylli gryllid Gryllidae gryllos Gryllotalpa Gryllus gryllus grypanian Gryphaea Gryphosaurus gryposis Grypotherium grysbok guaba guacacoa guachamaca guacharo guachipilin Guacho Guacico guacimo guacin guaco guaconize Guadagnini guadalcazarite Guaharibo Guahiban Guahibo Guahivo guaiac guaiacol guaiacolize guaiaconic guaiacum guaiaretic guaiasanol guaiol guaka Gualaca guama guan Guana guana guanabana guanabano guanaco guanajuatite guanamine guanase guanay Guanche guaneide guango guanidine guanidopropionic guaniferous guanine guanize guano guanophore guanosine guanyl guanylic guao guapena guapilla guapinol Guaque guar guara guarabu guaracha guaraguao guarana Guarani guarani Guaranian guaranine guarantee guaranteeship guarantor guarantorship guaranty guarapucu Guaraunan Guarauno guard guardable guardant guarded guardedly guardedness guardeen guarder guardfish guardful guardfully guardhouse guardian guardiancy guardianess guardianless guardianly guardianship guarding guardingly guardless guardlike guardo guardrail guardroom guardship guardsman guardstone Guarea guariba guarinite guarneri Guarnerius Guarnieri Guarrau guarri Guaruan guasa Guastalline guatambu Guatemalan Guatemaltecan guativere Guato Guatoan Guatusan Guatuso Guauaenok guava guavaberry guavina guayaba guayabi guayabo guayacan Guayaqui Guaycuru Guaycuruan Guaymie guayroto guayule guaza Guazuma gubbertush Gubbin gubbo gubernacula gubernacular gubernaculum gubernative gubernator gubernatorial gubernatrix guberniya gucki gud gudame guddle gude gudebrother gudefather gudemother gudesake gudesakes gudesire gudewife gudge gudgeon gudget gudok gue guebucu guejarite Guelph Guelphic Guelphish Guelphism guemal guenepe guenon guepard guerdon guerdonable guerdoner guerdonless guereza Guerickian Guerinet Guernsey guernsey guernseyed guerrilla guerrillaism guerrillaship Guesdism Guesdist guess guessable guesser guessing guessingly guesswork guessworker guest guestchamber guesten guester guesthouse guesting guestive guestless Guestling guestling guestmaster guestship guestwise Guetar Guetare gufa guff guffaw guffer guffin guffy gugal guggle gugglet guglet guglia guglio gugu Guha Guhayna guhr Guiana Guianan Guianese guib guiba guidable guidage guidance guide guideboard guidebook guidebookish guidecraft guideless guideline guidepost guider guideress guidership guideship guideway guidman guidon Guidonian guidwilly guige Guignardia guignol guijo Guilandina guild guilder guildhall guildic guildry guildship guildsman guile guileful guilefully guilefulness guileless guilelessly guilelessness guilery guillemet guillemot guillevat guilloche guillochee guillotinade guillotine guillotinement guillotiner guillotinism guillotinist guilt guiltily guiltiness guiltless guiltlessly guiltlessness guiltsick guilty guily guimbard guimpe Guinea guinea Guineaman Guinean Guinevere guipure Guisard guisard guise guiser Guisian guising guitar guitarfish guitarist guitermanite guitguit Guittonian Gujar Gujarati Gujrati gul gula gulae gulaman gulancha Gulanganes gular gularis gulch gulden guldengroschen gule gules Gulf gulf gulflike gulfside gulfwards gulfweed gulfy gulgul gulinula gulinulae gulinular gulix gull Gullah gullery gullet gulleting gullibility gullible gullibly gullion gullish gullishly gullishness gully gullyhole Gulo gulonic gulose gulosity gulp gulper gulpin gulping gulpingly gulpy gulravage gulsach Gum gum gumbo gumboil gumbotil gumby gumchewer gumdigger gumdigging gumdrop gumfield gumflower gumihan gumless gumlike gumly gumma gummage gummaker gummaking gummata gummatous gummed gummer gummiferous gumminess gumming gummite gummose gummosis gummosity gummous gummy gump gumphion gumption gumptionless gumptious gumpus gumshoe gumweed gumwood gun guna gunate gunation gunbearer gunboat gunbright gunbuilder guncotton gundi gundy gunebo gunfire gunflint gunge gunhouse Gunite gunite gunj gunk gunl gunless gunlock gunmaker gunmaking gunman gunmanship gunnage gunne gunnel gunner Gunnera Gunneraceae gunneress gunnership gunnery gunnies gunning gunnung gunny gunocracy gunong gunpaper gunplay gunpowder gunpowderous gunpowdery gunpower gunrack gunreach gunrunner gunrunning gunsel gunshop gunshot gunsman gunsmith gunsmithery gunsmithing gunster gunstick gunstock gunstocker gunstocking gunstone gunter Gunther gunwale gunyah gunyang gunyeh Gunz Gunzian gup guppy guptavidya gur Guran gurdfish gurdle gurdwara gurge gurgeon gurgeons gurges gurgitation gurgle gurglet gurgling gurglingly gurgly gurgoyle gurgulation Gurian Guric Gurish Gurjara gurjun gurk Gurkha gurl gurly Gurmukhi gurnard gurnet gurnetty Gurneyite gurniad gurr gurrah gurry gurt guru guruship Gus gush gusher gushet gushily gushiness gushing gushingly gushingness gushy gusla gusle guss gusset Gussie gussie gust gustable gustation gustative gustativeness gustatory Gustavus gustful gustfully gustfulness gustily gustiness gustless gusto gustoish Gustus gusty gut Guti Gutium gutless gutlike gutling Gutnic Gutnish gutt gutta guttable guttate guttated guttatim guttation gutte gutter Guttera gutterblood guttering gutterlike gutterling gutterman guttersnipe guttersnipish gutterspout gutterwise guttery gutti guttide guttie Guttiferae guttiferal Guttiferales guttiferous guttiform guttiness guttle guttler guttula guttulae guttular guttulate guttule guttural gutturalism gutturality gutturalization gutturalize gutturally gutturalness gutturize gutturonasal gutturopalatal gutturopalatine gutturotetany guttus gutty gutweed gutwise gutwort guvacine guvacoline Guy guy Guyandot guydom guyer guytrash guz guze Guzmania guzmania Guzul guzzle guzzledom guzzler gwag gweduc gweed gweeon gwely Gwen Gwendolen gwine gwyniad Gyarung gyascutus Gyges Gygis gyle gym gymel gymkhana Gymnadenia Gymnadeniopsis Gymnanthes gymnanthous Gymnarchidae Gymnarchus gymnasia gymnasial gymnasiarch gymnasiarchy gymnasiast gymnasic gymnasium gymnast gymnastic gymnastically gymnastics gymnemic gymnetrous gymnic gymnical gymnics gymnite Gymnoblastea gymnoblastic Gymnocalycium gymnocarpic gymnocarpous Gymnocerata gymnoceratous gymnocidium Gymnocladus Gymnoconia Gymnoderinae Gymnodiniaceae gymnodiniaceous Gymnodiniidae Gymnodinium gymnodont Gymnodontes gymnogen gymnogenous Gymnoglossa gymnoglossate gymnogynous Gymnogyps Gymnolaema Gymnolaemata gymnolaematous Gymnonoti Gymnopaedes gymnopaedic gymnophiona gymnoplast Gymnorhina gymnorhinal Gymnorhininae gymnosoph gymnosophist gymnosophy gymnosperm Gymnospermae gymnospermal gymnospermic gymnospermism Gymnospermous gymnospermy Gymnosporangium gymnospore gymnosporous Gymnostomata Gymnostomina gymnostomous Gymnothorax gymnotid Gymnotidae Gymnotoka gymnotokous Gymnotus Gymnura gymnure Gymnurinae gymnurine gympie gyn gynaecea gynaeceum gynaecocoenic gynander gynandrarchic gynandrarchy Gynandria gynandria gynandrian gynandrism gynandroid gynandromorph gynandromorphic gynandromorphism gynandromorphous gynandromorphy gynandrophore gynandrosporous gynandrous gynandry gynantherous gynarchic gynarchy gyne gynecic gynecidal gynecide gynecocentric gynecocracy gynecocrat gynecocratic gynecocratical gynecoid gynecolatry gynecologic gynecological gynecologist gynecology gynecomania gynecomastia gynecomastism gynecomasty gynecomazia gynecomorphous gyneconitis gynecopathic gynecopathy gynecophore gynecophoric gynecophorous gynecotelic gynecratic gyneocracy gyneolater gyneolatry gynephobia Gynerium gynethusia gyniatrics gyniatry gynic gynics gynobase gynobaseous gynobasic gynocardia gynocardic gynocracy gynocratic gynodioecious gynodioeciously gynodioecism gynoecia gynoecium gynogenesis gynomonecious gynomonoeciously gynomonoecism gynophagite gynophore gynophoric gynosporangium gynospore gynostegia gynostegium gynostemium Gynura gyp Gypaetus gype gypper Gyppo Gyps gyps gypseian gypseous gypsiferous gypsine gypsiologist gypsite gypsography gypsologist gypsology Gypsophila gypsophila gypsophilous gypsophily gypsoplast gypsous gypster gypsum Gypsy gypsy gypsydom gypsyesque gypsyfy gypsyhead gypsyhood gypsyish gypsyism gypsylike gypsyry gypsyweed gypsywise gypsywort Gyracanthus gyral gyrally gyrant gyrate gyration gyrational gyrator gyratory gyre Gyrencephala gyrencephalate gyrencephalic gyrencephalous gyrene gyrfalcon gyri gyric gyrinid Gyrinidae Gyrinus gyro gyrocar gyroceracone gyroceran Gyroceras gyrochrome gyrocompass Gyrodactylidae Gyrodactylus gyrogonite gyrograph gyroidal gyroidally gyrolite gyrolith gyroma gyromagnetic gyromancy gyromele gyrometer Gyromitra gyron gyronny Gyrophora Gyrophoraceae Gyrophoraceous gyrophoric gyropigeon gyroplane gyroscope gyroscopic gyroscopically gyroscopics gyrose gyrostabilizer Gyrostachys gyrostat gyrostatic gyrostatically gyrostatics Gyrotheca gyrous gyrovagi gyrovagues gyrowheel gyrus gyte gytling gyve H h ha haab haaf Habab habanera Habbe habble habdalah Habe habeas habena habenal habenar Habenaria habendum habenula habenular haberdash haberdasher haberdasheress haberdashery haberdine habergeon habilable habilatory habile habiliment habilimentation habilimented habilitate habilitation habilitator hability habille Habiri Habiru habit habitability habitable habitableness habitably habitacle habitacule habitally habitan habitance habitancy habitant habitat habitate habitation habitational habitative habited habitual habituality habitualize habitually habitualness habituate habituation habitude habitudinal habitue habitus habnab haboob Habronema habronemiasis habronemic habu habutai habutaye hache Hachiman hachure hacienda hack hackamatak hackamore hackbarrow hackberry hackbolt hackbush hackbut hackbuteer hacked hackee hacker hackery hackin hacking hackingly hackle hackleback hackler hacklog hackly hackmack hackman hackmatack hackney hackneyed hackneyer hackneyism hackneyman hacksaw hacksilber hackster hackthorn hacktree hackwood hacky had Hadassah hadbot hadden haddie haddo haddock haddocker hade Hadean Hadendoa Hadendowa hadentomoid Hadentomoidea Hades Hadhramautian hading Hadith hadj Hadjemi hadji hadland Hadramautian hadrome Hadromerina hadromycosis hadrosaur Hadrosaurus haec haecceity Haeckelian Haeckelism haem Haemamoeba Haemanthus Haemaphysalis haemaspectroscope haematherm haemathermal haemathermous haematinon haematinum haematite Haematobranchia haematobranchiate Haematocrya haematocryal Haematophilina haematophiline Haematopus haematorrhachis haematosepsis Haematotherma haematothermal haematoxylic haematoxylin Haematoxylon haemoconcentration haemodilution Haemodoraceae haemodoraceous haemoglobin haemogram Haemogregarina Haemogregarinidae haemonchiasis haemonchosis Haemonchus haemony haemophile Haemoproteus haemorrhage haemorrhagia haemorrhagic haemorrhoid haemorrhoidal haemosporid Haemosporidia haemosporidian Haemosporidium Haemulidae haemuloid haeremai haet haff haffet haffkinize haffle Hafgan hafiz hafnium hafnyl haft hafter hag Haganah Hagarite hagberry hagboat hagborn hagbush hagdon hageen Hagenia hagfish haggada haggaday haggadic haggadical haggadist haggadistic haggard haggardly haggardness hagged hagger haggis haggish haggishly haggishness haggister haggle haggler haggly haggy hagi hagia hagiarchy hagiocracy Hagiographa hagiographal hagiographer hagiographic hagiographical hagiographist hagiography hagiolater hagiolatrous hagiolatry hagiologic hagiological hagiologist hagiology hagiophobia hagioscope hagioscopic haglet haglike haglin hagride hagrope hagseed hagship hagstone hagtaper hagweed hagworm hah Hahnemannian Hahnemannism Haiathalah Haida Haidan Haidee haidingerite Haiduk haik haikai haikal Haikh haikwan hail hailer hailproof hailse hailshot hailstone hailstorm hailweed haily Haimavati hain Hainai Hainan Hainanese hainberry haine hair hairband hairbeard hairbird hairbrain hairbreadth hairbrush haircloth haircut haircutter haircutting hairdo hairdress hairdresser hairdressing haire haired hairen hairhoof hairhound hairif hairiness hairlace hairless hairlessness hairlet hairline hairlock hairmeal hairmonger hairpin hairsplitter hairsplitting hairspring hairstone hairstreak hairtail hairup hairweed hairwood hairwork hairworm hairy Haisla Haithal Haitian haje hajib hajilij hak hakam hakdar hake Hakea hakeem hakenkreuz Hakenkreuzler hakim Hakka hako haku hala halakah halakic halakist halakistic halal halalcor halation Halawi halazone halberd halberdier halberdman halberdsman halbert halch halcyon halcyonian halcyonic Halcyonidae Halcyoninae halcyonine Haldanite hale halebi Halecomorphi haleness Halenia haler halerz Halesia halesome half halfback halfbeak halfer halfheaded halfhearted halfheartedly halfheartedness halfling halfman halfness halfpace halfpaced halfpenny halfpennyworth halfway halfwise Haliaeetus halibios halibiotic halibiu halibut halibuter Halicarnassean Halicarnassian Halichondriae halichondrine halichondroid Halicore Halicoridae halide halidom halieutic halieutically halieutics Haligonian Halimeda halimous halinous haliographer haliography Haliotidae Haliotis haliotoid haliplankton haliplid Haliplidae Haliserites halisteresis halisteretic halite Halitheriidae Halitherium halitosis halituosity halituous halitus hall hallabaloo hallage hallah hallan hallanshaker hallebardier hallecret halleflinta halleflintoid hallel hallelujah hallelujatic hallex Halleyan halliblash halling hallman hallmark hallmarked hallmarker hallmoot halloo Hallopididae hallopodous Hallopus hallow Hallowday hallowed hallowedly hallowedness Halloween hallower Hallowmas Hallowtide halloysite Hallstatt Hallstattian hallucal hallucinate hallucination hallucinational hallucinative hallucinator hallucinatory hallucined hallucinosis hallux hallway halma halmalille halmawise halo Haloa Halobates halobios halobiotic halochromism halochromy Halocynthiidae haloesque halogen halogenate halogenation halogenoid halogenous Halogeton halohydrin haloid halolike halolimnic halomancy halometer halomorphic halophile halophilism halophilous halophyte halophytic halophytism Halopsyche Halopsychidae Haloragidaceae haloragidaceous Halosauridae Halosaurus haloscope Halosphaera halotrichite haloxene hals halse halsen halsfang halt halter halterbreak halteres Halteridium halterproof Haltica halting haltingly haltingness haltless halucket halukkah halurgist halurgy halutz halvaner halvans halve halved halvelings halver halves halyard Halysites ham hamacratic Hamadan hamadryad Hamal hamal hamald Hamamelidaceae hamamelidaceous Hamamelidanthemum hamamelidin Hamamelidoxylon hamamelin Hamamelis Hamamelites hamartiologist hamartiology hamartite hamate hamated Hamathite hamatum hambergite hamble hambroline hamburger hame hameil hamel Hamelia hamesucken hamewith hamfat hamfatter hami Hamidian Hamidieh hamiform Hamilton Hamiltonian Hamiltonianism Hamiltonism hamingja hamirostrate Hamital Hamite Hamites Hamitic Hamiticized Hamitism Hamitoid hamlah hamlet hamleted hamleteer hamletization hamletize hamlinite hammada hammam hammer hammerable hammerbird hammercloth hammerdress hammerer hammerfish hammerhead hammerheaded hammering hammeringly hammerkop hammerless hammerlike hammerman hammersmith hammerstone hammertoe hammerwise hammerwork hammerwort hammochrysos hammock hammy hamose hamous hamper hamperedly hamperedness hamperer hamperman Hampshire hamrongite hamsa hamshackle hamster hamstring hamular hamulate hamule Hamulites hamulose hamulus hamus hamza han Hanafi Hanafite hanaper hanaster Hanbalite hanbury hance hanced hanch hancockite hand handbag handball handballer handbank handbanker handbarrow handbill handblow handbolt handbook handbow handbreadth handcar handcart handclap handclasp handcloth handcraft handcraftman handcraftsman handcuff handed handedness Handelian hander handersome handfast handfasting handfastly handfastness handflower handful handgrasp handgravure handgrip handgriping handgun handhaving handhold handhole handicap handicapped handicapper handicraft handicraftship handicraftsman handicraftsmanship handicraftswoman handicuff handily handiness handistroke handiwork handkercher handkerchief handkerchiefful handlaid handle handleable handled handleless handler handless handlike handling handmade handmaid handmaiden handmaidenly handout handpost handprint handrail handrailing handreader handreading handsale handsaw handsbreadth handscrape handsel handseller handset handshake handshaker handshaking handsmooth handsome handsomeish handsomely handsomeness handspade handspike handspoke handspring handstaff handstand handstone handstroke handwear handwheel handwhile handwork handworkman handwrist handwrite handwriting handy handyblow handybook handygrip hangability hangable hangalai hangar hangbird hangby hangdog hange hangee hanger hangfire hangie hanging hangingly hangkang hangle hangman hangmanship hangment hangnail hangnest hangout hangul hangwoman hangworm hangworthy hanif hanifism hanifite hanifiya hank hanker hankerer hankering hankeringly hankie hankle hanksite hanky hanna hannayite Hannibal Hannibalian Hannibalic Hano Hanoverian Hanoverianize Hanoverize hansa Hansard Hansardization Hansardize Hanse hanse Hanseatic hansel hansgrave hansom hant hantle Hanukkah Hanuman hao haole haoma haori hap Hapale Hapalidae hapalote Hapalotis hapaxanthous haphazard haphazardly haphazardness haphtarah Hapi hapless haplessly haplessness haplite haplocaulescent haplochlamydeous Haplodoci Haplodon haplodont haplodonty haplography haploid haploidic haploidy haplolaly haplologic haplology haploma Haplomi haplomid haplomous haplont haploperistomic haploperistomous haplopetalous haplophase haplophyte haploscope haploscopic haplosis haplostemonous haplotype haply happen happening happenstance happier happiest happify happiless happily happiness happing happy hapten haptene haptenic haptere hapteron haptic haptics haptometer haptophor haptophoric haptophorous haptotropic haptotropically haptotropism hapu hapuku haqueton harakeke harangue harangueful haranguer Hararese Harari harass harassable harassedly harasser harassingly harassment haratch Haratin Haraya Harb harbergage harbi harbinge harbinger harbingership harbingery harbor harborage harborer harborless harborous harborside harborward hard hardanger hardback hardbake hardbeam hardberry harden hardenable Hardenbergia hardener hardening hardenite harder Harderian hardfern hardfist hardfisted hardfistedness hardhack hardhanded hardhandedness hardhead hardheaded hardheadedly hardheadedness hardhearted hardheartedly hardheartedness hardihood hardily hardim hardiment hardiness hardish hardishrew hardly hardmouth hardmouthed hardness hardock hardpan hardship hardstand hardstanding hardtack hardtail hardware hardwareman Hardwickia hardwood hardy hardystonite hare harebell harebottle harebrain harebrained harebrainedly harebrainedness harebur harefoot harefooted harehearted harehound Harelda harelike harelip harelipped harem haremism haremlik harengiform harfang haricot harigalds hariolate hariolation hariolize harish hark harka harl Harleian Harlemese Harlemite harlequin harlequina harlequinade harlequinery harlequinesque harlequinic harlequinism harlequinize harling harlock harlot harlotry harm Harmachis harmal harmala harmaline harman harmattan harmel harmer harmful harmfully harmfulness harmine harminic harmless harmlessly harmlessness harmonia harmoniacal harmonial harmonic harmonica harmonical harmonically harmonicalness harmonichord harmonici harmonicism harmonicon harmonics harmonious harmoniously harmoniousness harmoniphon harmoniphone harmonist harmonistic harmonistically Harmonite harmonium harmonizable harmonization harmonize harmonizer harmonogram harmonograph harmonometer harmony harmost harmotome harmotomic harmproof harn harness harnesser harnessry harnpan harp Harpa harpago harpagon Harpagornis Harpalides Harpalinae Harpalus harper harperess Harpidae harpier harpings harpist harpless harplike Harpocrates harpoon harpooner Harporhynchus harpress harpsichord harpsichordist harpula Harpullia harpwaytuning harpwise Harpy Harpyia harpylike harquebus harquebusade harquebusier harr harrateen harridan harrier Harrisia harrisite Harrovian harrow harrower harrowing harrowingly harrowingness harrowment harry harsh harshen harshish harshly harshness harshweed harstigite hart hartal hartberry hartebeest hartin hartite Hartleian Hartleyan Hartmannia Hartogia hartshorn hartstongue harttite Hartungen haruspex haruspical haruspicate haruspication haruspice haruspices haruspicy Harvard Harvardian Harvardize Harveian harvest harvestbug harvester harvestless harvestman harvestry harvesttime Harvey Harveyize harzburgite hasan hasenpfeffer hash hashab hasher Hashimite hashish Hashiya hashy Hasidean Hasidic Hasidim Hasidism Hasinai hask Haskalah haskness hasky haslet haslock Hasmonaean hasp hassar hassel hassle hassock hassocky hasta hastate hastately hastati hastatolanceolate hastatosagittate haste hasteful hastefully hasteless hastelessness hasten hastener hasteproof haster hastilude hastily hastiness hastings hastingsite hastish hastler hasty hat hatable hatband hatbox hatbrim hatbrush hatch hatchability hatchable hatchel hatcheler hatcher hatchery hatcheryman hatchet hatchetback hatchetfish hatchetlike hatchetman hatchettine hatchettolite hatchety hatchgate hatching hatchling hatchman hatchment hatchminder hatchway hatchwayman hate hateable hateful hatefully hatefulness hateless hatelessness hater hatful hath hatherlite hathi Hathor Hathoric Hati Hatikvah hatless hatlessness hatlike hatmaker hatmaking hatpin hatrack hatrail hatred hatress hatstand hatt hatted Hattemist hatter Hatteria hattery Hatti Hattic Hattie hatting Hattism Hattize hattock Hatty hatty hau hauberget hauberk hauchecornite hauerite haugh haughland haught haughtily haughtiness haughtly haughtness haughtonite haughty haul haulabout haulage haulageway haulback hauld hauler haulier haulm haulmy haulster haunch haunched hauncher haunching haunchless haunchy haunt haunter hauntingly haunty Hauranitic hauriant haurient Hausa hause hausen hausmannite hausse Haussmannization Haussmannize haustellate haustellated haustellous haustellum haustement haustorial haustorium haustral haustrum hautboy hautboyist hauteur hauynite hauynophyre havage Havaiki Havaikian Havana Havanese have haveable haveage havel haveless havelock haven havenage havener havenership havenet havenful havenless havent havenward haver havercake haverel haverer havergrass havermeal havers haversack Haversian haversine havier havildar havingness havoc havocker haw Hawaiian hawaiite hawbuck hawcubite hawer hawfinch Hawiya hawk hawkbill hawkbit hawked hawker hawkery Hawkeye hawkie hawking hawkish hawklike hawknut hawkweed hawkwise hawky hawm hawok Haworthia hawse hawsehole hawseman hawsepiece hawsepipe hawser hawserwise hawthorn hawthorned hawthorny hay haya hayband haybird haybote haycap haycart haycock haydenite hayey hayfield hayfork haygrower haylift hayloft haymaker haymaking haymarket haymow hayrack hayrake hayraker hayrick hayseed haysel haystack haysuck haytime hayward hayweed haywire hayz Hazara hazard hazardable hazarder hazardful hazardize hazardless hazardous hazardously hazardousness hazardry haze hazel hazeled hazeless hazelly hazelnut hazelwood hazelwort hazen hazer hazily haziness hazing hazle haznadar hazy hazzan he head headache headachy headband headbander headboard headborough headcap headchair headcheese headchute headcloth headdress headed headender header headfirst headforemost headframe headful headgear headily headiness heading headkerchief headland headledge headless headlessness headlight headlighting headlike headline headliner headlock headlong headlongly headlongs headlongwise headman headmark headmaster headmasterly headmastership headmistress headmistressship headmold headmost headnote headpenny headphone headpiece headplate headpost headquarter headquarters headrace headrail headreach headrent headrest headright headring headroom headrope headsail headset headshake headship headsill headskin headsman headspring headstall headstand headstick headstock headstone headstream headstrong headstrongly headstrongness headwaiter headwall headward headwark headwater headway headwear headwork headworker headworking heady heaf heal healable heald healder healer healful healing healingly healless healsome healsomeness health healthcraft healthful healthfully healthfulness healthguard healthily healthiness healthless healthlessness healthsome healthsomely healthsomeness healthward healthy heap heaper heaps heapstead heapy hear hearable hearer hearing hearingless hearken hearkener hearsay hearse hearsecloth hearselike hearst heart heartache heartaching heartbeat heartbird heartblood heartbreak heartbreaker heartbreaking heartbreakingly heartbroken heartbrokenly heartbrokenness heartburn heartburning heartdeep heartease hearted heartedly heartedness hearten heartener heartening hearteningly heartfelt heartful heartfully heartfulness heartgrief hearth hearthless hearthman hearthpenny hearthrug hearthstead hearthstone hearthward hearthwarming heartikin heartily heartiness hearting heartland heartleaf heartless heartlessly heartlessness heartlet heartling heartly heartnut heartpea heartquake heartroot hearts heartscald heartsease heartseed heartsette heartsick heartsickening heartsickness heartsome heartsomely heartsomeness heartsore heartstring heartthrob heartward heartwater heartweed heartwise heartwood heartwort hearty heat heatable heatdrop heatedly heater heaterman heatful heath heathberry heathbird heathen heathendom heatheness heathenesse heathenhood heathenish heathenishly heathenishness heathenism heathenize heathenness heathenry heathenship heather heathered heatheriness heathery heathless heathlike heathwort heathy heating heatingly heatless heatlike heatmaker heatmaking heatproof heatronic heatsman heatstroke heaume heaumer heautarit heautomorphism Heautontimorumenos heautophany heave heaveless heaven Heavenese heavenful heavenhood heavenish heavenishly heavenize heavenless heavenlike heavenliness heavenly heavens heavenward heavenwardly heavenwardness heavenwards heaver heavies heavily heaviness heaving heavisome heavity heavy heavyback heavyhanded heavyhandedness heavyheaded heavyhearted heavyheartedness heavyweight hebamic hebdomad hebdomadal hebdomadally hebdomadary hebdomader hebdomarian hebdomary hebeanthous hebecarpous hebecladous hebegynous hebenon hebeosteotomy hebepetalous hebephrenia hebephrenic hebetate hebetation hebetative hebete hebetic hebetomy hebetude hebetudinous Hebraean Hebraic Hebraica Hebraical Hebraically Hebraicize Hebraism Hebraist Hebraistic Hebraistical Hebraistically Hebraization Hebraize Hebraizer Hebrew Hebrewdom Hebrewess Hebrewism Hebrician Hebridean Hebronite hebronite hecastotheism Hecate Hecatean Hecatic Hecatine hecatomb Hecatombaeon hecatomped hecatompedon hecatonstylon hecatontarchy hecatontome hecatophyllous hech Hechtia heck heckelphone Heckerism heckimal heckle heckler hectare hecte hectic hectical hectically hecticly hecticness hectocotyl hectocotyle hectocotyliferous hectocotylization hectocotylize hectocotylus hectogram hectograph hectographic hectography hectoliter hectometer Hector hector Hectorean Hectorian hectoringly hectorism hectorly hectorship hectostere hectowatt heddle heddlemaker heddler hedebo hedenbergite Hedeoma heder Hedera hederaceous hederaceously hederated hederic hederiferous hederiform hederigerent hederin hederose hedge hedgeberry hedgeborn hedgebote hedgebreaker hedgehog hedgehoggy hedgehop hedgehopper hedgeless hedgemaker hedgemaking hedger hedgerow hedgesmith hedgeweed hedgewise hedgewood hedging hedgingly hedgy hedonic hedonical hedonically hedonics hedonism hedonist hedonistic hedonistically hedonology hedriophthalmous hedrocele hedrumite Hedychium hedyphane Hedysarum heed heeder heedful heedfully heedfulness heedily heediness heedless heedlessly heedlessness heedy heehaw heel heelball heelband heelcap heeled heeler heelgrip heelless heelmaker heelmaking heelpath heelpiece heelplate heelpost heelprint heelstrap heeltap heeltree heemraad heer heeze heezie heezy heft hefter heftily heftiness hefty hegari Hegelian Hegelianism Hegelianize Hegelizer hegemon hegemonic hegemonical hegemonist hegemonizer hegemony hegira hegumen hegumene Hehe hei heiau heifer heiferhood heigh heighday height heighten heightener heii Heikum Heiltsuk heimin Heinesque Heinie heinous heinously heinousness heintzite heir heirdom heiress heiressdom heiresshood heirless heirloom heirship heirskip heitiki Hejazi Hejazian hekteus helbeh helcoid helcology helcoplasty helcosis helcotic heldentenor helder Helderbergian hele Helen Helena helenin helenioid Helenium Helenus helepole heliacal heliacally Heliaea heliaean Heliamphora Heliand helianthaceous Helianthemum helianthic helianthin Helianthium Helianthoidea Helianthoidean Helianthus heliast heliastic heliazophyte helical helically heliced helices helichryse helichrysum Helicidae heliciform helicin Helicina helicine Helicinidae helicitic helicline helicograph helicogyrate helicogyre helicoid helicoidal helicoidally helicometry helicon Heliconia Heliconian Heliconiidae Heliconiinae heliconist Heliconius helicoprotein helicopter helicorubin helicotrema Helicteres helictite helide Heligmus heling helio heliocentric heliocentrical heliocentrically heliocentricism heliocentricity heliochrome heliochromic heliochromoscope heliochromotype heliochromy helioculture heliodon heliodor helioelectric helioengraving heliofugal Heliogabalize Heliogabalus heliogram heliograph heliographer heliographic heliographical heliographically heliography heliogravure helioid heliolater heliolatrous heliolatry heliolite Heliolites heliolithic Heliolitidae heliologist heliology heliometer heliometric heliometrical heliometrically heliometry heliomicrometer Helion heliophilia heliophiliac heliophilous heliophobe heliophobia heliophobic heliophobous heliophotography heliophyllite heliophyte Heliopora Helioporidae Heliopsis heliopticon Heliornis Heliornithes Heliornithidae Helios helioscope helioscopic helioscopy heliosis heliostat heliostatic heliotactic heliotaxis heliotherapy heliothermometer Heliothis heliotrope heliotroper Heliotropiaceae heliotropian heliotropic heliotropical heliotropically heliotropine heliotropism Heliotropium heliotropy heliotype heliotypic heliotypically heliotypography heliotypy Heliozoa heliozoan heliozoic heliport Helipterum helispheric helispherical helium helix helizitic hell Helladian Helladic Helladotherium hellandite hellanodic hellbender hellborn hellbox hellbred hellbroth hellcat helldog helleboraceous helleboraster hellebore helleborein helleboric helleborin Helleborine helleborism Helleborus Hellelt Hellen Hellene Hellenian Hellenic Hellenically Hellenicism Hellenism Hellenist Hellenistic Hellenistical Hellenistically Hellenisticism Hellenization Hellenize Hellenizer Hellenocentric Hellenophile heller helleri Hellespont Hellespontine hellgrammite hellhag hellhole hellhound hellicat hellier hellion hellish hellishly hellishness hellkite hellness hello hellroot hellship helluo hellward hellweed helly helm helmage helmed helmet helmeted helmetlike helmetmaker helmetmaking Helmholtzian helminth helminthagogic helminthagogue Helminthes helminthiasis helminthic helminthism helminthite Helminthocladiaceae helminthoid helminthologic helminthological helminthologist helminthology helminthosporiose Helminthosporium helminthosporoid helminthous helmless helmsman helmsmanship helobious heloderm Heloderma Helodermatidae helodermatoid helodermatous helodes heloe heloma Helonias helonin helosis Helot helotage helotism helotize helotomy helotry help helpable helper helpful helpfully helpfulness helping helpingly helpless helplessly helplessness helply helpmate helpmeet helpsome helpworthy helsingkite helve helvell Helvella Helvellaceae helvellaceous Helvellales helvellic helver Helvetia Helvetian Helvetic Helvetii Helvidian helvite hem hemabarometer hemachate hemachrome hemachrosis hemacite hemad hemadrometer hemadrometry hemadromograph hemadromometer hemadynameter hemadynamic hemadynamics hemadynamometer hemafibrite hemagglutinate hemagglutination hemagglutinative hemagglutinin hemagogic hemagogue hemal hemalbumen hemamoeba hemangioma hemangiomatosis hemangiosarcoma hemaphein hemapod hemapodous hemapoiesis hemapoietic hemapophyseal hemapophysial hemapophysis hemarthrosis hemase hemaspectroscope hemastatics hematachometer hematachometry hematal hematein hematemesis hematemetic hematencephalon hematherapy hematherm hemathermal hemathermous hemathidrosis hematic hematid hematidrosis hematimeter hematin hematinic hematinometer hematinometric hematinuria hematite hematitic hematobic hematobious hematobium hematoblast hematobranchiate hematocatharsis hematocathartic hematocele hematochezia hematochrome hematochyluria hematoclasia hematoclasis hematocolpus hematocrit hematocryal hematocrystallin hematocyanin hematocyst hematocystis hematocyte hematocytoblast hematocytogenesis hematocytometer hematocytotripsis hematocytozoon hematocyturia hematodynamics hematodynamometer hematodystrophy hematogen hematogenesis hematogenetic hematogenic hematogenous hematoglobulin hematography hematohidrosis hematoid hematoidin hematolin hematolite hematological hematologist hematology hematolymphangioma hematolysis hematolytic hematoma hematomancy hematometer hematometra hematometry hematomphalocele hematomyelia hematomyelitis hematonephrosis hematonic hematopathology hematopericardium hematopexis hematophobia hematophyte hematoplast hematoplastic hematopoiesis hematopoietic hematoporphyrin hematoporphyrinuria hematorrhachis hematorrhea hematosalpinx hematoscope hematoscopy hematose hematosepsis hematosin hematosis hematospectrophotometer hematospectroscope hematospermatocele hematospermia hematostibiite hematotherapy hematothermal hematothorax hematoxic hematozoal hematozoan hematozoic hematozoon hematozymosis hematozymotic hematuresis hematuria hematuric hemautogram hemautograph hemautographic hemautography heme hemellitene hemellitic hemelytral hemelytron hemen hemera hemeralope hemeralopia hemeralopic Hemerobaptism Hemerobaptist Hemerobian Hemerobiid Hemerobiidae Hemerobius Hemerocallis hemerologium hemerology hemerythrin hemiablepsia hemiacetal hemiachromatopsia hemiageusia hemiageustia hemialbumin hemialbumose hemialbumosuria hemialgia hemiamaurosis hemiamb hemiamblyopia hemiamyosthenia hemianacusia hemianalgesia hemianatropous hemianesthesia hemianopia hemianopic hemianopsia hemianoptic hemianosmia hemiapraxia Hemiascales Hemiasci Hemiascomycetes hemiasynergia hemiataxia hemiataxy hemiathetosis hemiatrophy hemiazygous Hemibasidiales Hemibasidii Hemibasidiomycetes hemibasidium hemibathybian hemibenthic hemibenthonic hemibranch hemibranchiate Hemibranchii hemic hemicanities hemicardia hemicardiac hemicarp hemicatalepsy hemicataleptic hemicellulose hemicentrum hemicephalous hemicerebrum Hemichorda hemichordate hemichorea hemichromatopsia hemicircle hemicircular hemiclastic hemicollin hemicrane hemicrania hemicranic hemicrany hemicrystalline hemicycle hemicyclic hemicyclium hemicylindrical hemidactylous Hemidactylus hemidemisemiquaver hemidiapente hemidiaphoresis hemiditone hemidomatic hemidome hemidrachm hemidysergia hemidysesthesia hemidystrophy hemiekton hemielliptic hemiepilepsy hemifacial hemiform Hemigale Hemigalus Hemiganus hemigastrectomy hemigeusia hemiglossal hemiglossitis hemiglyph hemignathous hemihdry hemihedral hemihedrally hemihedric hemihedrism hemihedron hemiholohedral hemihydrate hemihydrated hemihydrosis hemihypalgesia hemihyperesthesia hemihyperidrosis hemihypertonia hemihypertrophy hemihypesthesia hemihypoesthesia hemihypotonia hemikaryon hemikaryotic hemilaminectomy hemilaryngectomy Hemileia hemilethargy hemiligulate hemilingual hemimellitene hemimellitic hemimelus Hemimeridae Hemimerus Hemimetabola hemimetabole hemimetabolic hemimetabolism hemimetabolous hemimetaboly hemimetamorphic hemimetamorphosis hemimetamorphous hemimorph hemimorphic hemimorphism hemimorphite hemimorphy Hemimyaria hemin hemina hemine heminee hemineurasthenia hemiobol hemiolia hemiolic hemionus hemiope hemiopia hemiopic hemiorthotype hemiparalysis hemiparanesthesia hemiparaplegia hemiparasite hemiparasitic hemiparasitism hemiparesis hemiparesthesia hemiparetic hemipenis hemipeptone hemiphrase hemipic hemipinnate hemiplane hemiplankton hemiplegia hemiplegic hemiplegy hemipodan hemipode Hemipodii Hemipodius hemiprism hemiprismatic hemiprotein hemipter Hemiptera hemipteral hemipteran hemipteroid hemipterological hemipterology hemipteron hemipterous hemipyramid hemiquinonoid hemiramph Hemiramphidae Hemiramphinae hemiramphine Hemiramphus hemisaprophyte hemisaprophytic hemiscotosis hemisect hemisection hemispasm hemispheral hemisphere hemisphered hemispherical hemispherically hemispheroid hemispheroidal hemispherule hemistater hemistich hemistichal hemistrumectomy hemisymmetrical hemisymmetry hemisystole hemiterata hemiteratic hemiteratics hemiteria hemiterpene hemitery hemithyroidectomy hemitone hemitremor hemitrichous hemitriglyph hemitropal hemitrope hemitropic hemitropism hemitropous hemitropy hemitype hemitypic hemivagotony heml hemlock hemmel hemmer hemoalkalimeter hemoblast hemochromatosis hemochrome hemochromogen hemochromometer hemochromometry hemoclasia hemoclasis hemoclastic hemocoel hemocoele hemocoelic hemocoelom hemoconcentration hemoconia hemoconiosis hemocry hemocrystallin hemoculture hemocyanin hemocyte hemocytoblast hemocytogenesis hemocytolysis hemocytometer hemocytotripsis hemocytozoon hemocyturia hemodiagnosis hemodilution hemodrometer hemodrometry hemodromograph hemodromometer hemodynameter hemodynamic hemodynamics hemodystrophy hemoerythrin hemoflagellate hemofuscin hemogastric hemogenesis hemogenetic hemogenic hemogenous hemoglobic hemoglobin hemoglobinemia hemoglobiniferous hemoglobinocholia hemoglobinometer hemoglobinophilic hemoglobinous hemoglobinuria hemoglobinuric hemoglobulin hemogram hemogregarine hemoid hemokonia hemokoniosis hemol hemoleucocyte hemoleucocytic hemologist hemology hemolymph hemolymphatic hemolysin hemolysis hemolytic hemolyze hemomanometer hemometer hemometry hemonephrosis hemopathology hemopathy hemopericardium hemoperitoneum hemopexis hemophage hemophagia hemophagocyte hemophagocytosis hemophagous hemophagy hemophile Hemophileae hemophilia hemophiliac hemophilic Hemophilus hemophobia hemophthalmia hemophthisis hemopiezometer hemoplasmodium hemoplastic hemopneumothorax hemopod hemopoiesis hemopoietic hemoproctia hemoptoe hemoptysis hemopyrrole hemorrhage hemorrhagic hemorrhagin hemorrhea hemorrhodin hemorrhoid hemorrhoidal hemorrhoidectomy hemosalpinx hemoscope hemoscopy hemosiderin hemosiderosis hemospasia hemospastic hemospermia hemosporid hemosporidian hemostasia hemostasis hemostat hemostatic hemotachometer hemotherapeutics hemotherapy hemothorax hemotoxic hemotoxin hemotrophe hemotropic hemozoon hemp hempbush hempen hemplike hempseed hempstring hempweed hempwort hempy hemstitch hemstitcher hen henad henbane henbill henbit hence henceforth henceforward henceforwards henchboy henchman henchmanship hencoop hencote hend hendecacolic hendecagon hendecagonal hendecahedron hendecane hendecasemic hendecasyllabic hendecasyllable hendecatoic hendecoic hendecyl hendiadys hendly hendness heneicosane henequen henfish henhearted henhouse henhussy henism henlike henmoldy henna Hennebique hennery hennin hennish henny henogeny henotheism henotheist henotheistic henotic henpeck henpen Henrician Henrietta henroost Henry henry hent Hentenian henter hentriacontane henware henwife henwise henwoodite henyard heortological heortologion heortology hep hepar heparin heparinize hepatalgia hepatatrophia hepatatrophy hepatauxe hepatectomy hepatic Hepatica hepatica Hepaticae hepatical hepaticoduodenostomy hepaticoenterostomy hepaticogastrostomy hepaticologist hepaticology hepaticopulmonary hepaticostomy hepaticotomy hepatite hepatitis hepatization hepatize hepatocele hepatocirrhosis hepatocolic hepatocystic hepatoduodenal hepatoduodenostomy hepatodynia hepatodysentery hepatoenteric hepatoflavin hepatogastric hepatogenic hepatogenous hepatography hepatoid hepatolenticular hepatolith hepatolithiasis hepatolithic hepatological hepatologist hepatology hepatolysis hepatolytic hepatoma hepatomalacia hepatomegalia hepatomegaly hepatomelanosis hepatonephric hepatopathy hepatoperitonitis hepatopexia hepatopexy hepatophlebitis hepatophlebotomy hepatophyma hepatopneumonic hepatoportal hepatoptosia hepatoptosis hepatopulmonary hepatorenal hepatorrhagia hepatorrhaphy hepatorrhea hepatorrhexis hepatorrhoea hepatoscopy hepatostomy hepatotherapy hepatotomy hepatotoxemia hepatoumbilical hepcat Hephaesteum Hephaestian Hephaestic Hephaestus hephthemimer hephthemimeral hepialid Hepialidae Hepialus heppen hepper heptacapsular heptace heptachord heptachronous heptacolic heptacosane heptad heptadecane heptadecyl heptaglot heptagon heptagonal heptagynous heptahedral heptahedrical heptahedron heptahexahedral heptahydrate heptahydrated heptahydric heptahydroxy heptal heptameride Heptameron heptamerous heptameter heptamethylene heptametrical heptanaphthene Heptanchus heptandrous heptane Heptanesian heptangular heptanoic heptanone heptapetalous heptaphyllous heptaploid heptaploidy heptapodic heptapody heptarch heptarchal heptarchic heptarchical heptarchist heptarchy heptasemic heptasepalous heptaspermous heptastich heptastrophic heptastylar heptastyle heptasulphide heptasyllabic Heptateuch heptatomic heptatonic Heptatrema heptavalent heptene hepteris heptine heptite heptitol heptoic heptorite heptose heptoxide Heptranchias heptyl heptylene heptylic heptyne her Heraclean Heracleidan Heracleonite Heracleopolitan Heracleopolite Heracleum Heraclid Heraclidae Heraclidan Heraclitean Heracliteanism Heraclitic Heraclitical Heraclitism Herakles herald heraldess heraldic heraldical heraldically heraldist heraldize heraldress heraldry heraldship herapathite Herat herb herbaceous herbaceously herbage herbaged herbager herbagious herbal herbalism herbalist herbalize herbane herbaria herbarial herbarian herbarism herbarist herbarium herbarize Herbartian Herbartianism herbary Herbert herbescent herbicidal herbicide herbicolous herbiferous herbish herbist Herbivora herbivore herbivority herbivorous herbless herblet herblike herbman herborist herborization herborize herborizer herbose herbosity herbous herbwife herbwoman herby hercogamous hercogamy Herculanean Herculanensian Herculanian Herculean Hercules Herculid Hercynian hercynite herd herdbook herdboy herder herderite herdic herding herdship herdsman herdswoman herdwick here hereabout hereadays hereafter hereafterward hereamong hereat hereaway hereaways herebefore hereby heredipetous heredipety hereditability hereditable hereditably hereditament hereditarian hereditarianism hereditarily hereditariness hereditarist hereditary hereditation hereditative hereditism hereditist hereditivity heredity heredium heredofamilial heredolues heredoluetic heredosyphilis heredosyphilitic heredosyphilogy heredotuberculosis Hereford herefrom heregeld herein hereinabove hereinafter hereinbefore hereinto herem hereness hereniging hereof hereon hereright Herero heresiarch heresimach heresiographer heresiography heresiologer heresiologist heresiology heresy heresyphobia heresyproof heretic heretical heretically hereticalness hereticate heretication hereticator hereticide hereticize hereto heretoch heretofore heretoforetime heretoga heretrix hereunder hereunto hereupon hereward herewith herewithal herile heriot heriotable herisson heritability heritable heritably heritage heritance Heritiera heritor heritress heritrix herl herling herma hermaean hermaic hermaphrodite hermaphroditic hermaphroditical hermaphroditically hermaphroditish hermaphroditism hermaphroditize Hermaphroditus hermeneut hermeneutic hermeneutical hermeneutically hermeneutics hermeneutist Hermes Hermesian Hermesianism Hermetic hermetic hermetical hermetically hermeticism Hermetics Hermetism Hermetist hermidin Herminone Hermione Hermit hermit hermitage hermitary hermitess hermitic hermitical hermitically hermitish hermitism hermitize hermitry hermitship Hermo hermodact hermodactyl Hermogenian hermoglyphic hermoglyphist hermokopid hern Hernandia Hernandiaceae hernandiaceous hernanesell hernani hernant herne hernia hernial Herniaria herniarin herniary herniate herniated herniation hernioenterotomy hernioid herniology herniopuncture herniorrhaphy herniotome herniotomist herniotomy hero heroarchy Herodian herodian Herodianic Herodii Herodiones herodionine heroess herohead herohood heroic heroical heroically heroicalness heroicity heroicly heroicness heroicomic heroicomical heroid Heroides heroify Heroin heroin heroine heroineship heroinism heroinize heroism heroistic heroization heroize herolike heromonger heron heroner heronite heronry heroogony heroologist heroology Herophile Herophilist heroship herotheism herpes Herpestes Herpestinae herpestine herpetic herpetiform herpetism herpetography herpetoid herpetologic herpetological herpetologically herpetologist herpetology herpetomonad Herpetomonas herpetophobia herpetotomist herpetotomy herpolhode Herpotrichia herrengrundite Herrenvolk herring herringbone herringer Herrnhuter hers Herschelian herschelite herse hersed herself hership hersir hertz hertzian Heruli Herulian Hervati Herzegovinian Hesiodic Hesione Hesionidae hesitance hesitancy hesitant hesitantly hesitate hesitater hesitating hesitatingly hesitatingness hesitation hesitative hesitatively hesitatory Hesper Hespera Hesperia Hesperian Hesperic Hesperid hesperid hesperidate hesperidene hesperideous Hesperides Hesperidian hesperidin hesperidium hesperiid Hesperiidae hesperinon Hesperis hesperitin Hesperornis Hesperornithes hesperornithid Hesperornithiformes hesperornithoid Hesperus Hessian hessite hessonite hest Hester hestern hesternal Hesther hesthogenous Hesychasm Hesychast hesychastic het hetaera hetaeria hetaeric hetaerism Hetaerist hetaerist hetaeristic hetaerocracy hetaerolite hetaery heteradenia heteradenic heterakid Heterakis Heteralocha heterandrous heterandry heteratomic heterauxesis heteraxial heteric heterically hetericism hetericist heterism heterization heterize hetero heteroagglutinin heteroalbumose heteroauxin heteroblastic heteroblastically heteroblasty heterocarpism heterocarpous Heterocarpus heterocaseose heterocellular heterocentric heterocephalous Heterocera heterocerc heterocercal heterocercality heterocercy heterocerous heterochiral heterochlamydeous Heterochloridales heterochromatic heterochromatin heterochromatism heterochromatization heterochromatized heterochrome heterochromia heterochromic heterochromosome heterochromous heterochromy heterochronic heterochronism heterochronistic heterochronous heterochrony heterochrosis heterochthon heterochthonous heterocline heteroclinous heteroclital heteroclite heteroclitica heteroclitous Heterocoela heterocoelous Heterocotylea heterocycle heterocyclic heterocyst heterocystous heterodactyl Heterodactylae heterodactylous Heterodera Heterodon heterodont Heterodonta Heterodontidae heterodontism heterodontoid Heterodontus heterodox heterodoxal heterodoxical heterodoxly heterodoxness heterodoxy heterodromous heterodromy heterodyne heteroecious heteroeciously heteroeciousness heteroecism heteroecismal heteroecy heteroepic heteroepy heteroerotic heteroerotism heterofermentative heterofertilization heterogalactic heterogamete heterogametic heterogametism heterogamety heterogamic heterogamous heterogamy heterogangliate heterogen heterogene heterogeneal heterogenean heterogeneity heterogeneous heterogeneously heterogeneousness heterogenesis heterogenetic heterogenic heterogenicity heterogenist heterogenous heterogeny heteroglobulose heterognath Heterognathi heterogone heterogonism heterogonous heterogonously heterogony heterograft heterographic heterographical heterography Heterogyna heterogynal heterogynous heteroicous heteroimmune heteroinfection heteroinoculable heteroinoculation heterointoxication heterokaryon heterokaryosis heterokaryotic heterokinesis heterokinetic Heterokontae heterokontan heterolalia heterolateral heterolecithal heterolith heterolobous heterologic heterological heterologically heterologous heterology heterolysin heterolysis heterolytic heteromallous heteromastigate heteromastigote Heteromeles Heteromera heteromeral Heteromeran Heteromeri heteromeric heteromerous Heterometabola heterometabole heterometabolic heterometabolism heterometabolous heterometaboly heterometric Heteromi Heteromita Heteromorpha Heteromorphae heteromorphic heteromorphism heteromorphite heteromorphosis heteromorphous heteromorphy Heteromya Heteromyaria heteromyarian Heteromyidae Heteromys heteronereid heteronereis Heteroneura heteronomous heteronomously heteronomy heteronuclear heteronym heteronymic heteronymous heteronymously heteronymy heteroousia Heteroousian heteroousian Heteroousiast heteroousious heteropathic heteropathy heteropelmous heteropetalous Heterophaga Heterophagi heterophagous heterophasia heterophemism heterophemist heterophemistic heterophemize heterophemy heterophile heterophoria heterophoric heterophylesis heterophyletic heterophyllous heterophylly heterophyly heterophyte heterophytic Heteropia Heteropidae heteroplasia heteroplasm heteroplastic heteroplasty heteroploid heteroploidy heteropod Heteropoda heteropodal heteropodous heteropolar heteropolarity heteropoly heteroproteide heteroproteose heteropter Heteroptera heteropterous heteroptics heteropycnosis Heterorhachis heteroscope heteroscopy heterosexual heterosexuality heteroside Heterosiphonales heterosis Heterosomata Heterosomati heterosomatous heterosome Heterosomi heterosomous Heterosporeae heterosporic Heterosporium heterosporous heterospory heterostatic heterostemonous Heterostraca heterostracan Heterostraci heterostrophic heterostrophous heterostrophy heterostyled heterostylism heterostylous heterostyly heterosuggestion heterosyllabic heterotactic heterotactous heterotaxia heterotaxic heterotaxis heterotaxy heterotelic heterothallic heterothallism heterothermal heterothermic heterotic heterotopia heterotopic heterotopism heterotopous heterotopy heterotransplant heterotransplantation heterotrich Heterotricha Heterotrichales Heterotrichida heterotrichosis heterotrichous heterotropal heterotroph heterotrophic heterotrophy heterotropia heterotropic heterotropous heterotype heterotypic heterotypical heteroxanthine heteroxenous heterozetesis heterozygosis heterozygosity heterozygote heterozygotic heterozygous heterozygousness hething hetman hetmanate hetmanship hetter hetterly Hettie Hetty heuau Heuchera heugh heulandite heumite heuretic heuristic heuristically Hevea hevi hew hewable hewel hewer hewettite hewhall hewn hewt hex hexa hexabasic Hexabiblos hexabiose hexabromide hexacanth hexacanthous hexacapsular hexacarbon hexace hexachloride hexachlorocyclohexane hexachloroethane hexachord hexachronous hexacid hexacolic Hexacoralla hexacorallan Hexacorallia hexacosane hexacosihedroid hexact hexactinal hexactine hexactinellid Hexactinellida hexactinellidan hexactinelline hexactinian hexacyclic hexad hexadactyle hexadactylic hexadactylism hexadactylous hexadactyly hexadecahedroid hexadecane hexadecanoic hexadecene hexadecyl hexadic hexadiene hexadiyne hexafoil hexaglot hexagon hexagonal hexagonally hexagonial hexagonical hexagonous hexagram Hexagrammidae hexagrammoid Hexagrammos hexagyn Hexagynia hexagynian hexagynous hexahedral hexahedron hexahydrate hexahydrated hexahydric hexahydride hexahydrite hexahydrobenzene hexahydroxy hexakisoctahedron hexakistetrahedron hexameral hexameric hexamerism hexameron hexamerous hexameter hexamethylenamine hexamethylene hexamethylenetetramine hexametral hexametric hexametrical hexametrist hexametrize hexametrographer Hexamita hexamitiasis hexammine hexammino hexanaphthene Hexanchidae Hexanchus Hexandria hexandric hexandrous hexandry hexane hexanedione hexangular hexangularly hexanitrate hexanitrodiphenylamine hexapartite hexaped hexapetaloid hexapetaloideous hexapetalous hexaphyllous hexapla hexaplar hexaplarian hexaplaric hexaploid hexaploidy hexapod Hexapoda hexapodal hexapodan hexapodous hexapody hexapterous hexaradial hexarch hexarchy hexaseme hexasemic hexasepalous hexaspermous hexastemonous hexaster hexastich hexastichic hexastichon hexastichous hexastichy hexastigm hexastylar hexastyle hexastylos hexasulphide hexasyllabic hexatetrahedron Hexateuch Hexateuchal hexathlon hexatomic hexatriacontane hexatriose hexavalent hexecontane hexenbesen hexene hexer hexerei hexeris hexestrol hexicological hexicology hexine hexiological hexiology hexis hexitol hexoctahedral hexoctahedron hexode hexoestrol hexogen hexoic hexokinase hexone hexonic hexosamine hexosaminic hexosan hexose hexosediphosphoric hexosemonophosphoric hexosephosphatase hexosephosphoric hexoylene hexpartite hexyl hexylene hexylic hexylresorcinol hexyne hey heyday Hezron Hezronites hi hia Hianakoto hiant hiatal hiate hiation hiatus Hibbertia hibbin hibernacle hibernacular hibernaculum hibernal hibernate hibernation hibernator Hibernia Hibernian Hibernianism Hibernic Hibernical Hibernically Hibernicism Hibernicize Hibernization Hibernize Hibernologist Hibernology Hibiscus Hibito Hibitos Hibunci hic hicatee hiccup hick hickey hickory Hicksite hickwall Hicoria hidable hidage hidalgism hidalgo hidalgoism hidated hidation Hidatsa hidden hiddenite hiddenly hiddenmost hiddenness hide hideaway hidebind hidebound hideboundness hided hideland hideless hideling hideosity hideous hideously hideousness hider hidling hidlings hidradenitis hidrocystoma hidromancy hidropoiesis hidrosis hidrotic hie hieder hielaman hield hielmite hiemal hiemation Hieracian Hieracium hieracosphinx hierapicra hierarch hierarchal hierarchic hierarchical hierarchically hierarchism hierarchist hierarchize hierarchy hieratic hieratical hieratically hieraticism hieratite Hierochloe hierocracy hierocratic hierocratical hierodule hierodulic Hierofalco hierogamy hieroglyph hieroglypher hieroglyphic hieroglyphical hieroglyphically hieroglyphist hieroglyphize hieroglyphology hieroglyphy hierogram hierogrammat hierogrammate hierogrammateus hierogrammatic hierogrammatical hierogrammatist hierograph hierographer hierographic hierographical hierography hierolatry hierologic hierological hierologist hierology hieromachy hieromancy hieromnemon hieromonach hieron Hieronymic Hieronymite hieropathic hierophancy hierophant hierophantes hierophantic hierophantically hierophanticly hieros hieroscopy Hierosolymitan Hierosolymite hierurgical hierurgy hifalutin higdon higgaion higginsite higgle higglehaggle higgler higglery high highball highbelia highbinder highborn highboy highbred higher highermost highest highfalutin highfaluting highfalutinism highflying highhanded highhandedly highhandedness highhearted highheartedly highheartedness highish highjack highjacker highland highlander highlandish Highlandman Highlandry highlight highliving highly highman highmoor highmost highness highroad hight hightoby hightop highway highwayman higuero hijack hike hiker Hilaria hilarious hilariously hilariousness hilarity Hilary Hilarymas Hilarytide hilasmic hilch Hilda Hildebrand Hildebrandian Hildebrandic Hildebrandine Hildebrandism Hildebrandist Hildebrandslied Hildegarde hilding hiliferous hill hillberry hillbilly hillculture hillebrandite Hillel hiller hillet Hillhousia hilliness hillman hillock hillocked hillocky hillsale hillsalesman hillside hillsman hilltop hilltrot hillward hillwoman hilly hilsa hilt hiltless hilum hilus him Hima Himalaya Himalayan Himantopus himation himp himself himward himwards Himyaric Himyarite Himyaritic hin hinau Hinayana hinch hind hindberry hindbrain hindcast hinddeck hinder hinderance hinderer hinderest hinderful hinderfully hinderingly hinderlands hinderlings hinderlins hinderly hinderment hindermost hindersome hindhand hindhead Hindi hindmost hindquarter hindrance hindsaddle hindsight Hindu Hinduism Hinduize Hindustani hindward hing hinge hingecorner hingeflower hingeless hingelike hinger hingeways hingle hinney hinnible Hinnites hinny hinoid hinoideous hinoki hinsdalite hint hintedly hinter hinterland hintingly hintproof hintzeite Hiodon hiodont Hiodontidae hiortdahlite hip hipbone hipe hiper hiphalt hipless hipmold Hippa hippalectryon hipparch Hipparion Hippeastrum hipped Hippelates hippen Hippia hippian hippiater hippiatric hippiatrical hippiatrics hippiatrist hippiatry hippic Hippidae Hippidion Hippidium hipping hippish hipple hippo Hippobosca hippoboscid Hippoboscidae hippocamp hippocampal hippocampi hippocampine hippocampus Hippocastanaceae hippocastanaceous hippocaust hippocentaur hippocentauric hippocerf hippocoprosterol hippocras Hippocratea Hippocrateaceae hippocrateaceous Hippocratian Hippocratic Hippocratical Hippocratism Hippocrene Hippocrenian hippocrepian hippocrepiform Hippodamia hippodamous hippodrome hippodromic hippodromist hippogastronomy Hippoglosinae Hippoglossidae Hippoglossus hippogriff hippogriffin hippoid hippolite hippolith hippological hippologist hippology Hippolytan Hippolyte Hippolytidae Hippolytus hippomachy hippomancy hippomanes Hippomedon hippomelanin Hippomenes hippometer hippometric hippometry Hipponactean hipponosological hipponosology hippopathological hippopathology hippophagi hippophagism hippophagist hippophagistical hippophagous hippophagy hippophile hippophobia hippopod hippopotami hippopotamian hippopotamic Hippopotamidae hippopotamine hippopotamoid hippopotamus Hipposelinum hippotigrine Hippotigris hippotomical hippotomist hippotomy hippotragine Hippotragus hippurate hippuric hippurid Hippuridaceae Hippuris hippurite Hippurites hippuritic Hippuritidae hippuritoid hippus hippy hipshot hipwort hirable hiragana Hiram Hiramite hircarra hircine hircinous hircocerf hircocervus hircosity hire hired hireless hireling hireman Hiren hirer hirmologion hirmos Hirneola hiro hirondelle hirple hirrient hirse hirsel hirsle hirsute hirsuteness hirsuties hirsutism hirsutulous Hirtella hirtellous Hirudin hirudine Hirudinea hirudinean hirudiniculture Hirudinidae hirudinize hirudinoid Hirudo hirundine Hirundinidae hirundinous Hirundo his hish hisingerite hisn Hispa Hispania Hispanic Hispanicism Hispanicize hispanidad Hispaniolate Hispaniolize Hispanist Hispanize Hispanophile Hispanophobe hispid hispidity hispidulate hispidulous Hispinae hiss hisser hissing hissingly hissproof hist histaminase histamine histaminic histidine histie histiocyte histiocytic histioid histiology Histiophoridae Histiophorus histoblast histochemic histochemical histochemistry histoclastic histocyte histodiagnosis histodialysis histodialytic histogen histogenesis histogenetic histogenetically histogenic histogenous histogeny histogram histographer histographic histographical histography histoid histologic histological histologically histologist histology histolysis histolytic histometabasis histomorphological histomorphologically histomorphology histon histonal histone histonomy histopathologic histopathological histopathologist histopathology histophyly histophysiological histophysiology Histoplasma histoplasmin histoplasmosis historial historian historiated historic historical historically historicalness historician historicism historicity historicize historicocabbalistical historicocritical historicocultural historicodogmatic historicogeographical historicophilosophica historicophysical historicopolitical historicoprophetic historicoreligious historics historicus historied historier historiette historify historiograph historiographer historiographership historiographic historiographical historiographically historiography historiological historiology historiometric historiometry historionomer historious historism historize history histotherapist histotherapy histotome histotomy histotrophic histotrophy histotropic histozoic histozyme histrio Histriobdella Histriomastix histrion histrionic histrionical histrionically histrionicism histrionism hit hitch hitcher hitchhike hitchhiker hitchily hitchiness Hitchiti hitchproof hitchy hithe hither hithermost hitherto hitherward Hitlerism Hitlerite hitless hittable hitter Hittite Hittitics Hittitology Hittology hive hiveless hiver hives hiveward Hivite hizz Hler Hlidhskjalf Hlithskjalf Hlorrithi Ho ho hoar hoard hoarder hoarding hoardward hoarfrost hoarhead hoarheaded hoarhound hoarily hoariness hoarish hoarness hoarse hoarsely hoarsen hoarseness hoarstone hoarwort hoary hoaryheaded hoast hoastman hoatzin hoax hoaxee hoaxer hoaxproof hob hobber Hobbesian hobbet Hobbian hobbil Hobbism Hobbist Hobbistical hobble hobblebush hobbledehoy hobbledehoydom hobbledehoyhood hobbledehoyish hobbledehoyishness hobbledehoyism hobbledygee hobbler hobbling hobblingly hobbly hobby hobbyhorse hobbyhorsical hobbyhorsically hobbyism hobbyist hobbyless hobgoblin hoblike hobnail hobnailed hobnailer hobnob hobo hoboism Hobomoco hobthrush hocco Hochelaga Hochheimer hock Hockday hockelty hocker hocket hockey hockshin Hocktide hocky hocus hod hodden hodder hoddle hoddy hodening hodful hodgepodge Hodgkin hodgkinsonite hodiernal hodman hodmandod hodograph hodometer hodometrical hoe hoecake hoedown hoeful hoer hoernesite Hoffmannist Hoffmannite hog hoga hogan Hogarthian hogback hogbush hogfish hogframe hogged hogger hoggerel hoggery hogget hoggie hoggin hoggish hoggishly hoggishness hoggism hoggy hogherd hoghide hoghood hoglike hogling hogmace hogmanay Hogni hognose hognut hogpen hogreeve hogrophyte hogshead hogship hogshouther hogskin hogsty hogward hogwash hogweed hogwort hogyard Hohe Hohenzollern Hohenzollernism Hohokam hoi hoick hoin hoise hoist hoistaway hoister hoisting hoistman hoistway hoit hoju Hokan hokey hokeypokey hokum holagogue holarctic holard holarthritic holarthritis holaspidean holcad holcodont Holconoti Holcus hold holdable holdall holdback holden holdenite holder holdership holdfast holdfastness holding holdingly holdout holdover holdsman holdup hole holeable Holectypina holectypoid holeless holeman holeproof holer holethnic holethnos holewort holey holia holiday holidayer holidayism holidaymaker holidaymaking holily holiness holing holinight holism holistic holistically holl holla hollaite Holland hollandaise Hollander Hollandish hollandite Hollands Hollantide holler hollin holliper hollo hollock hollong hollow hollower hollowfaced hollowfoot hollowhearted hollowheartedness hollowly hollowness holluschick holly hollyhock Hollywood Hollywooder Hollywoodize holm holmberry holmgang holmia holmic holmium holmos holobaptist holobenthic holoblastic holoblastically holobranch holocaine holocarpic holocarpous holocaust holocaustal holocaustic Holocene holocentrid Holocentridae holocentroid Holocentrus Holocephala holocephalan Holocephali holocephalian holocephalous Holochoanites holochoanitic holochoanoid Holochoanoida holochoanoidal holochordate holochroal holoclastic holocrine holocryptic holocrystalline holodactylic holodedron Holodiscus hologamous hologamy hologastrula hologastrular Holognatha holognathous hologonidium holograph holographic holographical holohedral holohedric holohedrism holohemihedral holohyaline holomastigote Holometabola holometabole holometabolian holometabolic holometabolism holometabolous holometaboly holometer holomorph holomorphic holomorphism holomorphosis holomorphy Holomyaria holomyarian Holomyarii holoparasite holoparasitic Holophane holophane holophotal holophote holophotometer holophrase holophrasis holophrasm holophrastic holophyte holophytic holoplankton holoplanktonic holoplexia holopneustic holoproteide holoptic holoptychian holoptychiid Holoptychiidae Holoptychius holoquinoid holoquinoidal holoquinonic holoquinonoid holorhinal holosaprophyte holosaprophytic holosericeous holoside holosiderite Holosiphona holosiphonate Holosomata holosomatous holospondaic holostean Holostei holosteous holosteric Holosteum Holostomata holostomate holostomatous holostome holostomous holostylic holosymmetric holosymmetrical holosymmetry holosystematic holosystolic holothecal holothoracic Holothuria holothurian Holothuridea holothurioid Holothurioidea holotonia holotonic holotony holotrich Holotricha holotrichal Holotrichida holotrichous holotype holour holozoic Holstein holster holstered holt holy holyday holyokeite holystone holytide homage homageable homager Homalocenchrus homalogonatous homalographic homaloid homaloidal Homalonotus Homalopsinae Homaloptera Homalopterous homalosternal Homalosternii Homam Homaridae homarine homaroid Homarus homatomic homaxial homaxonial homaxonic Homburg home homebody homeborn homebound homebred homecomer homecraft homecroft homecrofter homecrofting homefarer homefelt homegoer homekeeper homekeeping homeland homelander homeless homelessly homelessness homelet homelike homelikeness homelily homeliness homeling homely homelyn homemade homemaker homemaking homeoblastic homeochromatic homeochromatism homeochronous homeocrystalline homeogenic homeogenous homeoid homeoidal homeoidality homeokinesis homeokinetic homeomerous homeomorph homeomorphic homeomorphism homeomorphous homeomorphy homeopath homeopathic homeopathically homeopathician homeopathicity homeopathist homeopathy homeophony homeoplasia homeoplastic homeoplasy homeopolar homeosis homeostasis homeostatic homeotic homeotransplant homeotransplantation homeotype homeotypic homeotypical homeowner homeozoic Homer homer Homerian Homeric Homerical Homerically Homerid Homeridae Homeridian Homerist Homerologist Homerology Homeromastix homeseeker homesick homesickly homesickness homesite homesome homespun homestall homestead homesteader homester homestretch homeward homewardly homework homeworker homewort homey homeyness homicidal homicidally homicide homicidious homiculture homilete homiletic homiletical homiletically homiletics homiliarium homiliary homilist homilite homilize homily hominal hominess Hominian hominid Hominidae hominiform hominify hominine hominisection hominivorous hominoid hominy homish homishness homo homoanisaldehyde homoanisic homoarecoline homobaric homoblastic homoblasty homocarpous homocategoric homocentric homocentrical homocentrically homocerc homocercal homocercality homocercy homocerebrin homochiral homochlamydeous homochromatic homochromatism homochrome homochromic homochromosome homochromous homochromy homochronous homoclinal homocline Homocoela homocoelous homocreosol homocyclic homodermic homodermy homodont homodontism homodox homodoxian homodromal homodrome homodromous homodromy homodynamic homodynamous homodynamy homodyne Homoean Homoeanism homoecious homoeoarchy homoeoblastic homoeochromatic homoeochronous homoeocrystalline homoeogenic homoeogenous homoeography homoeokinesis homoeomerae Homoeomeri homoeomeria homoeomerian homoeomerianism homoeomeric homoeomerical homoeomerous homoeomery homoeomorph homoeomorphic homoeomorphism homoeomorphous homoeomorphy homoeopath homoeopathic homoeopathically homoeopathician homoeopathicity homoeopathist homoeopathy homoeophony homoeophyllous homoeoplasia homoeoplastic homoeoplasy homoeopolar homoeosis homoeotel homoeoteleutic homoeoteleuton homoeotic homoeotopy homoeotype homoeotypic homoeotypical homoeozoic homoerotic homoerotism homofermentative homogametic homogamic homogamous homogamy homogangliate homogen homogenate homogene homogeneal homogenealness homogeneate homogeneity homogeneization homogeneize homogeneous homogeneously homogeneousness homogenesis homogenetic homogenetical homogenic homogenization homogenize homogenizer homogenous homogentisic homogeny homoglot homogone homogonous homogonously homogony homograft homograph homographic homography homohedral homoiotherm homoiothermal homoiothermic homoiothermism homoiothermous homoiousia Homoiousian homoiousian Homoiousianism homoiousious homolateral homolecithal homolegalis homologate homologation homologic homological homologically homologist homologize homologizer homologon homologoumena homologous homolographic homolography homologue homology homolosine homolysin homolysis homomallous homomeral homomerous homometrical homometrically homomorph Homomorpha homomorphic homomorphism homomorphosis homomorphous homomorphy Homoneura homonomous homonomy homonuclear homonym homonymic homonymous homonymously homonymy homoousia Homoousian Homoousianism Homoousianist Homoousiast Homoousion homoousious homopathy homoperiodic homopetalous homophene homophenous homophone homophonic homophonous homophony homophthalic homophylic homophyllous homophyly homopiperonyl homoplasis homoplasmic homoplasmy homoplast homoplastic homoplasy homopolar homopolarity homopolic homopter Homoptera homopteran homopteron homopterous Homorelaps homorganic homoseismal homosexual homosexualism homosexualist homosexuality homosporous homospory Homosteus homostyled homostylic homostylism homostylous homostyly homosystemic homotactic homotatic homotaxeous homotaxia homotaxial homotaxially homotaxic homotaxis homotaxy homothallic homothallism homothetic homothety homotonic homotonous homotonously homotony homotopic homotransplant homotransplantation homotropal homotropous homotypal homotype homotypic homotypical homotypy homovanillic homovanillin homoveratric homoveratrole homozygosis homozygosity homozygote homozygous homozygousness homrai homuncle homuncular homunculus homy honda hondo Honduran Honduranean Honduranian Hondurean Hondurian hone honest honestly honestness honestone honesty honewort honey honeybee honeyberry honeybind honeyblob honeybloom honeycomb honeycombed honeydew honeydewed honeydrop honeyed honeyedly honeyedness honeyfall honeyflower honeyfogle honeyful honeyhearted honeyless honeylike honeylipped honeymoon honeymooner honeymoonlight honeymoonshine honeymoonstruck honeymoony honeymouthed honeypod honeypot honeystone honeysuck honeysucker honeysuckle honeysuckled honeysweet honeyware Honeywood honeywood honeywort hong honied honily honk honker honor Honora honorability honorable honorableness honorableship honorably honorance honoraria honorarily honorarium honorary honoree honorer honoress honorific honorifically honorless honorous honorsman honorworthy hontish hontous hooch hoochinoo hood hoodcap hooded hoodedness hoodful hoodie hoodless hoodlike hoodlum hoodlumish hoodlumism hoodlumize hoodman hoodmold hoodoo hoodsheaf hoodshy hoodshyness hoodwink hoodwinkable hoodwinker hoodwise hoodwort hooey hoof hoofbeat hoofbound hoofed hoofer hoofiness hoofish hoofless hooflet hooflike hoofmark hoofprint hoofrot hoofs hoofworm hoofy hook hookah hookaroon hooked hookedness hookedwise hooker Hookera hookerman hookers hookheal hookish hookless hooklet hooklike hookmaker hookmaking hookman hooknose hooksmith hooktip hookum hookup hookweed hookwise hookworm hookwormer hookwormy hooky hooligan hooliganism hooliganize hoolock hooly hoon hoonoomaun hoop hooped hooper hooping hoopla hoople hoopless hooplike hoopmaker hoopman hoopoe hoopstick hoopwood hoose hoosegow hoosh Hoosier Hoosierdom Hoosierese Hoosierize hoot hootay hooter hootingly hoove hooven Hooverism Hooverize hoovey hop hopbine hopbush Hopcalite hopcrease hope hoped hopeful hopefully hopefulness hopeite hopeless hopelessly hopelessness hoper Hopi hopi hopingly Hopkinsian Hopkinsianism Hopkinsonian hoplite hoplitic hoplitodromos Hoplocephalus hoplology hoplomachic hoplomachist hoplomachos hoplomachy Hoplonemertea hoplonemertean hoplonemertine Hoplonemertini hopoff hopped hopper hopperburn hopperdozer hopperette hoppergrass hopperings hopperman hoppers hoppestere hoppet hoppingly hoppity hopple hoppy hopscotch hopscotcher hoptoad hopvine hopyard hora horal horary Horatian Horatio Horatius horbachite hordarian hordary horde hordeaceous hordeiform hordein hordenine Hordeum horehound Horim horismology horizometer horizon horizonless horizontal horizontalism horizontality horizontalization horizontalize horizontally horizontalness horizontic horizontical horizontically horizonward horme hormic hormigo hormion hormist hormogon Hormogonales Hormogoneae Hormogoneales hormogonium hormogonous hormonal hormone hormonic hormonize hormonogenesis hormonogenic hormonology hormonopoiesis hormonopoietic hormos horn hornbeam hornbill hornblende hornblendic hornblendite hornblendophyre hornblower hornbook horned hornedness horner hornerah hornet hornety hornfair hornfels hornfish hornful horngeld Hornie hornify hornily horniness horning hornish hornist hornito hornless hornlessness hornlet hornlike hornotine hornpipe hornplant hornsman hornstay hornstone hornswoggle horntail hornthumb horntip hornwood hornwork hornworm hornwort horny hornyhanded hornyhead horograph horographer horography horokaka horologe horologer horologic horological horologically horologiography horologist horologium horologue horology horometrical horometry Horonite horopito horopter horopteric horoptery horoscopal horoscope horoscoper horoscopic horoscopical horoscopist horoscopy Horouta horrendous horrendously horrent horrescent horreum horribility horrible horribleness horribly horrid horridity horridly horridness horrific horrifically horrification horrify horripilant horripilate horripilation horrisonant horror horrorful horrorish horrorist horrorize horrormonger horrormongering horrorous horrorsome horse horseback horsebacker horseboy horsebreaker horsecar horsecloth horsecraft horsedom horsefair horsefettler horsefight horsefish horseflesh horsefly horsefoot horsegate horsehair horsehaired horsehead horseherd horsehide horsehood horsehoof horsejockey horsekeeper horselaugh horselaugher horselaughter horseleech horseless horselike horseload horseman horsemanship horsemastership horsemint horsemonger horseplay horseplayful horsepond horsepower horsepox horser horseshoe horseshoer horsetail horsetongue Horsetown horsetree horseway horseweed horsewhip horsewhipper horsewoman horsewomanship horsewood horsfordite horsify horsily horsiness horsing horst horsy horsyism hortation hortative hortatively hortator hortatorily hortatory Hortense Hortensia hortensial Hortensian hortensian horticultural horticulturally horticulture horticulturist hortite hortonolite hortulan Horvatian hory Hosackia hosanna hose hosed hosel hoseless hoselike hoseman hosier hosiery hosiomartyr hospice hospitable hospitableness hospitably hospitage hospital hospitalary hospitaler hospitalism hospitality hospitalization hospitalize hospitant hospitate hospitation hospitator hospitious hospitium hospitize hospodar hospodariat hospodariate host Hosta hostage hostager hostageship hostel hosteler hostelry hoster hostess hostie hostile hostilely hostileness hostility hostilize hosting hostler hostlership hostlerwife hostless hostly hostry hostship hot hotbed hotblood hotbox hotbrained hotch hotchpot hotchpotch hotchpotchly hotel hoteldom hotelhood hotelier hotelization hotelize hotelkeeper hotelless hotelward hotfoot hothead hotheaded hotheadedly hotheadedness hothearted hotheartedly hotheartedness hothouse hoti hotly hotmouthed hotness hotspur hotspurred Hottentot Hottentotese Hottentotic Hottentotish Hottentotism hotter hottery hottish Hottonia houbara Houdan hough houghband hougher houghite houghmagandy Houghton hounce hound hounder houndfish hounding houndish houndlike houndman houndsbane houndsberry houndshark houndy houppelande hour hourful hourglass houri hourless hourly housage housal Housatonic house houseball houseboat houseboating housebote housebound houseboy housebreak housebreaker housebreaking housebroke housebroken housebug housebuilder housebuilding housecarl housecoat housecraft housefast housefather housefly houseful housefurnishings household householder householdership householding householdry housekeep housekeeper housekeeperlike housekeeperly housekeeping housel houseleek houseless houselessness houselet houseline houseling housemaid housemaidenly housemaiding housemaidy houseman housemaster housemastership housemate housemating houseminder housemistress housemother housemotherly houseowner houser houseridden houseroom housesmith housetop houseward housewares housewarm housewarmer housewarming housewear housewife housewifeliness housewifely housewifery housewifeship housewifish housewive housework housewright housing Houstonia housty housy houtou houvari Hova hove hovedance hovel hoveler hoven Hovenia hover hoverer hovering hoveringly hoverly how howadji Howard howardite howbeit howdah howder howdie howdy howe Howea howel however howff howish howitzer howk howkit howl howler howlet howling howlingly howlite howso howsoever howsomever hox hoy Hoya hoyden hoydenhood hoydenish hoydenism hoyle hoyman Hrimfaxi Hrothgar Hu huaca huaco huajillo huamuchil huantajayite huaracho Huari huarizo Huastec Huastecan Huave Huavean hub hubb hubba hubber Hubbite hubble hubbly hubbub hubbuboo hubby Hubert hubmaker hubmaking hubnerite hubristic hubshi huccatoon huchen Huchnom hucho huck huckaback huckle huckleback hucklebacked huckleberry hucklebone huckmuck huckster hucksterage hucksterer hucksteress hucksterize huckstery hud huddle huddledom huddlement huddler huddling huddlingly huddock huddroun huddup Hudibras Hudibrastic Hudibrastically Hudsonia Hudsonian hudsonite hue hued hueful hueless huelessness huer huff huffier huffily huffiness huffingly huffish huffishly huffishness huffle huffler huffy hug huge Hugelia hugelite hugely hugeness hugeous hugeously hugeousness huggable hugger huggermugger huggermuggery Huggin hugging huggingly huggle Hugh Hughoc Hugo Hugoesque hugsome Huguenot Huguenotic Huguenotism huh huia huipil huisache huiscoyol huitain Huk Hukbalahap huke hula Huldah huldee hulk hulkage hulking hulky hull hullabaloo huller hullock hulloo hulotheism Hulsean hulsite hulster hulu hulver hulverhead hulverheaded hum Huma human humane humanely humaneness humanhood humanics humanification humaniform humaniformian humanify humanish humanism humanist humanistic humanistical humanistically humanitarian humanitarianism humanitarianist humanitarianize humanitary humanitian humanity humanitymonger humanization humanize humanizer humankind humanlike humanly humanness humanoid humate humble humblebee humblehearted humblemouthed humbleness humbler humblie humblingly humbly humbo humboldtilite humboldtine humboldtite humbug humbugability humbugable humbugger humbuggery humbuggism humbuzz humdinger humdrum humdrumminess humdrummish humdrummishness humdudgeon Humean humect humectant humectate humectation humective humeral humeri humeroabdominal humerocubital humerodigital humerodorsal humerometacarpal humeroradial humeroscapular humeroulnar humerus humet humetty humhum humic humicubation humid humidate humidification humidifier humidify humidistat humidity humidityproof humidly humidness humidor humific humification humifuse humify humiliant humiliate humiliating humiliatingly humiliation humiliative humiliator humiliatory humilific humilitude humility humin Humiria Humiriaceae Humiriaceous Humism Humist humistratous humite humlie hummel hummeler hummer hummie humming hummingbird hummock hummocky humor humoral humoralism humoralist humoralistic humoresque humoresquely humorful humorific humorism humorist humoristic humoristical humorize humorless humorlessness humorology humorous humorously humorousness humorproof humorsome humorsomely humorsomeness humourful humous hump humpback humpbacked humped humph Humphrey humpiness humpless humpty humpy humstrum humulene humulone Humulus humus humuslike Hun Hunanese hunch Hunchakist hunchback hunchbacked hunchet hunchy hundi hundred hundredal hundredary hundreder hundredfold hundredman hundredpenny hundredth hundredweight hundredwork hung Hungaria Hungarian hungarite hunger hungerer hungeringly hungerless hungerly hungerproof hungerweed hungrify hungrily hungriness hungry hunh hunk Hunker hunker Hunkerism hunkerous hunkerousness hunkers hunkies Hunkpapa hunks hunky Hunlike Hunnian Hunnic Hunnican Hunnish Hunnishness hunt huntable huntedly Hunterian hunterlike huntilite hunting huntress huntsman huntsmanship huntswoman Hunyak hup Hupa hupaithric Hura hura hurcheon hurdies hurdis hurdle hurdleman hurdler hurdlewise hurds hure hureaulite hureek hurgila hurkle hurl hurlbarrow hurled hurler hurley hurleyhouse hurling hurlock hurly Huron huron Huronian hurr hurrah Hurri Hurrian hurricane hurricanize hurricano hurried hurriedly hurriedness hurrier hurrisome hurrock hurroo hurroosh hurry hurryingly hurryproof hursinghar hurst hurt hurtable hurted hurter hurtful hurtfully hurtfulness hurting hurtingest hurtle hurtleberry hurtless hurtlessly hurtlessness hurtlingly hurtsome hurty husband husbandable husbandage husbander husbandfield husbandhood husbandland husbandless husbandlike husbandliness husbandly husbandman husbandress husbandry husbandship huse hush hushable hushaby hushcloth hushedly husheen hushel husher hushful hushfully hushing hushingly hushion husho husk huskanaw husked huskened husker huskershredder huskily huskiness husking huskroot huskwort Husky husky huso huspil huss hussar Hussite Hussitism hussy hussydom hussyness husting hustle hustlecap hustlement hustler hut hutch hutcher hutchet Hutchinsonian Hutchinsonianism hutchinsonite Huterian huthold hutholder hutia hutkeeper hutlet hutment Hutsulian Hutterites Huttonian Huttonianism huttoning huttonweed hutukhtu huvelyk Huxleian Huygenian huzoor Huzvaresh huzz huzza huzzard hyacinth Hyacinthia hyacinthian hyacinthine Hyacinthus Hyades hyaena Hyaenanche Hyaenarctos Hyaenidae Hyaenodon hyaenodont hyaenodontoid Hyakume hyalescence hyalescent hyaline hyalinization hyalinize hyalinocrystalline hyalinosis hyalite hyalitis hyaloandesite hyalobasalt hyalocrystalline hyalodacite hyalogen hyalograph hyalographer hyalography hyaloid hyaloiditis hyaloliparite hyalolith hyalomelan hyalomucoid Hyalonema hyalophagia hyalophane hyalophyre hyalopilitic hyaloplasm hyaloplasma hyaloplasmic hyalopsite hyalopterous hyalosiderite Hyalospongia hyalotekite hyalotype hyaluronic hyaluronidase Hybanthus Hybla Hyblaea Hyblaean Hyblan hybodont Hybodus hybosis hybrid hybridal hybridation hybridism hybridist hybridity hybridizable hybridization hybridize hybridizer hybridous hydantoate hydantoic hydantoin hydathode hydatid hydatidiform hydatidinous hydatidocele hydatiform hydatigenous Hydatina hydatogenesis hydatogenic hydatogenous hydatoid hydatomorphic hydatomorphism hydatopneumatic hydatopneumatolytic hydatopyrogenic hydatoscopy Hydnaceae hydnaceous hydnocarpate hydnocarpic Hydnocarpus hydnoid Hydnora Hydnoraceae hydnoraceous Hydnum Hydra hydracetin Hydrachna hydrachnid Hydrachnidae hydracid hydracoral hydracrylate hydracrylic Hydractinia hydractinian Hydradephaga hydradephagan hydradephagous hydragogue hydragogy hydramine hydramnion hydramnios Hydrangea Hydrangeaceae hydrangeaceous hydrant hydranth hydrarch hydrargillite hydrargyrate hydrargyria hydrargyriasis hydrargyric hydrargyrism hydrargyrosis hydrargyrum hydrarthrosis hydrarthrus hydrastine Hydrastis hydrate hydrated hydration hydrator hydratropic hydraucone hydraulic hydraulically hydraulician hydraulicity hydraulicked hydraulicon hydraulics hydraulist hydraulus hydrazide hydrazidine hydrazimethylene hydrazine hydrazino hydrazo hydrazoate hydrazobenzene hydrazoic hydrazone hydrazyl hydremia hydremic hydrencephalocele hydrencephaloid hydrencephalus hydria hydriatric hydriatrist hydriatry hydric hydrically Hydrid hydride hydriform hydrindene hydriodate hydriodic hydriodide hydriotaphia Hydriote hydro hydroa hydroadipsia hydroaeric hydroalcoholic hydroaromatic hydroatmospheric hydroaviation hydrobarometer Hydrobates Hydrobatidae hydrobenzoin hydrobilirubin hydrobiological hydrobiologist hydrobiology hydrobiosis hydrobiplane hydrobomb hydroboracite hydroborofluoric hydrobranchiate hydrobromate hydrobromic hydrobromide hydrocarbide hydrocarbon hydrocarbonaceous hydrocarbonate hydrocarbonic hydrocarbonous hydrocarbostyril hydrocardia Hydrocaryaceae hydrocaryaceous hydrocatalysis hydrocauline hydrocaulus hydrocele hydrocellulose hydrocephalic hydrocephalocele hydrocephaloid hydrocephalous hydrocephalus hydrocephaly hydroceramic hydrocerussite Hydrocharidaceae hydrocharidaceous Hydrocharis Hydrocharitaceae hydrocharitaceous Hydrochelidon hydrochemical hydrochemistry hydrochlorate hydrochlorauric hydrochloric hydrochloride hydrochlorplatinic hydrochlorplatinous Hydrochoerus hydrocholecystis hydrocinchonine hydrocinnamic hydrocirsocele hydrocladium hydroclastic Hydrocleis hydroclimate hydrocobalticyanic hydrocoele hydrocollidine hydroconion Hydrocorallia Hydrocorallinae hydrocoralline Hydrocores Hydrocorisae hydrocorisan hydrocotarnine Hydrocotyle hydrocoumaric hydrocupreine hydrocyanate hydrocyanic hydrocyanide hydrocycle hydrocyclic hydrocyclist Hydrocyon hydrocyst hydrocystic Hydrodamalidae Hydrodamalis Hydrodictyaceae Hydrodictyon hydrodrome Hydrodromica hydrodromican hydrodynamic hydrodynamical hydrodynamics hydrodynamometer hydroeconomics hydroelectric hydroelectricity hydroelectrization hydroergotinine hydroextract hydroextractor hydroferricyanic hydroferrocyanate hydroferrocyanic hydrofluate hydrofluoboric hydrofluoric hydrofluorid hydrofluoride hydrofluosilicate hydrofluosilicic hydrofluozirconic hydrofoil hydroforming hydrofranklinite hydrofuge hydrogalvanic hydrogel hydrogen hydrogenase hydrogenate hydrogenation hydrogenator hydrogenic hydrogenide hydrogenium hydrogenization hydrogenize hydrogenolysis Hydrogenomonas hydrogenous hydrogeological hydrogeology hydroglider hydrognosy hydrogode hydrograph hydrographer hydrographic hydrographical hydrographically hydrography hydrogymnastics hydrohalide hydrohematite hydrohemothorax hydroid Hydroida Hydroidea hydroidean hydroiodic hydrokinetic hydrokinetical hydrokinetics hydrol hydrolase hydrolatry Hydrolea Hydroleaceae hydrolize hydrologic hydrological hydrologically hydrologist hydrology hydrolysis hydrolyst hydrolyte hydrolytic hydrolyzable hydrolyzate hydrolyzation hydrolyze hydromagnesite hydromancer hydromancy hydromania hydromaniac hydromantic hydromantical hydromantically hydrome hydromechanical hydromechanics hydromedusa Hydromedusae hydromedusan hydromedusoid hydromel hydromeningitis hydromeningocele hydrometallurgical hydrometallurgically hydrometallurgy hydrometamorphism hydrometeor hydrometeorological hydrometeorology hydrometer hydrometra hydrometric hydrometrical hydrometrid Hydrometridae hydrometry hydromica hydromicaceous hydromonoplane hydromorph hydromorphic hydromorphous hydromorphy hydromotor hydromyelia hydromyelocele hydromyoma Hydromys hydrone hydronegative hydronephelite hydronephrosis hydronephrotic hydronitric hydronitroprussic hydronitrous hydronium hydroparacoumaric Hydroparastatae hydropath hydropathic hydropathical hydropathist hydropathy hydropericarditis hydropericardium hydroperiod hydroperitoneum hydroperitonitis hydroperoxide hydrophane hydrophanous hydrophid Hydrophidae hydrophil hydrophile hydrophilic hydrophilid Hydrophilidae hydrophilism hydrophilite hydrophiloid hydrophilous hydrophily Hydrophinae Hydrophis hydrophobe hydrophobia hydrophobic hydrophobical hydrophobist hydrophobophobia hydrophobous hydrophoby hydrophoid hydrophone Hydrophora hydrophoran hydrophore hydrophoria hydrophorous hydrophthalmia hydrophthalmos hydrophthalmus hydrophylacium hydrophyll Hydrophyllaceae hydrophyllaceous hydrophylliaceous hydrophyllium Hydrophyllum hydrophysometra hydrophyte hydrophytic hydrophytism hydrophyton hydrophytous hydropic hydropical hydropically hydropigenous hydroplane hydroplanula hydroplatinocyanic hydroplutonic hydropneumatic hydropneumatosis hydropneumopericardium hydropneumothorax hydropolyp hydroponic hydroponicist hydroponics hydroponist hydropositive hydropot Hydropotes hydropropulsion hydrops hydropsy Hydropterideae hydroptic hydropult hydropultic hydroquinine hydroquinol hydroquinoline hydroquinone hydrorachis hydrorhiza hydrorhizal hydrorrhachis hydrorrhachitis hydrorrhea hydrorrhoea hydrorubber hydrosalpinx hydrosalt hydrosarcocele hydroscope hydroscopic hydroscopical hydroscopicity hydroscopist hydroselenic hydroselenide hydroselenuret hydroseparation hydrosilicate hydrosilicon hydrosol hydrosomal hydrosomatous hydrosome hydrosorbic hydrosphere hydrospire hydrospiric hydrostat hydrostatic hydrostatical hydrostatically hydrostatician hydrostatics hydrostome hydrosulphate hydrosulphide hydrosulphite hydrosulphocyanic hydrosulphurated hydrosulphuret hydrosulphureted hydrosulphuric hydrosulphurous hydrosulphuryl hydrotachymeter hydrotactic hydrotalcite hydrotasimeter hydrotaxis hydrotechnic hydrotechnical hydrotechnologist hydrotechny hydroterpene hydrotheca hydrothecal hydrotherapeutic hydrotherapeutics hydrotherapy hydrothermal hydrothoracic hydrothorax hydrotic hydrotical hydrotimeter hydrotimetric hydrotimetry hydrotomy hydrotropic hydrotropism hydroturbine hydrotype hydrous hydrovane hydroxamic hydroxamino hydroxide hydroximic hydroxy hydroxyacetic hydroxyanthraquinone hydroxybutyricacid hydroxyketone hydroxyl hydroxylactone hydroxylamine hydroxylate hydroxylation hydroxylic hydroxylization hydroxylize hydrozincite Hydrozoa hydrozoal hydrozoan hydrozoic hydrozoon hydrula Hydruntine Hydrurus Hydrus hydurilate hydurilic hyena hyenadog hyenanchin hyenic hyeniform hyenine hyenoid hyetal hyetograph hyetographic hyetographical hyetographically hyetography hyetological hyetology hyetometer hyetometrograph Hygeia Hygeian hygeiolatry hygeist hygeistic hygeology hygiantic hygiantics hygiastic hygiastics hygieist hygienal hygiene hygienic hygienical hygienically hygienics hygienist hygienization hygienize hygiologist hygiology hygric hygrine hygroblepharic hygrodeik hygroexpansivity hygrograph hygrology hygroma hygromatous hygrometer hygrometric hygrometrical hygrometrically hygrometry hygrophaneity hygrophanous hygrophilous hygrophobia hygrophthalmic hygrophyte hygrophytic hygroplasm hygroplasma hygroscope hygroscopic hygroscopical hygroscopically hygroscopicity hygroscopy hygrostat hygrostatics hygrostomia hygrothermal hygrothermograph hying hyke Hyla hylactic hylactism hylarchic hylarchical hyle hyleg hylegiacal hylic hylicism hylicist Hylidae hylism hylist Hyllus Hylobates hylobatian hylobatic hylobatine Hylocereus Hylocichla Hylocomium Hylodes hylogenesis hylogeny hyloid hylology hylomorphic hylomorphical hylomorphism hylomorphist hylomorphous Hylomys hylopathism hylopathist hylopathy hylophagous hylotheism hylotheist hylotheistic hylotheistical hylotomous hylozoic hylozoism hylozoist hylozoistic hylozoistically hymen Hymenaea Hymenaeus Hymenaic hymenal hymeneal hymeneally hymeneals hymenean hymenial hymenic hymenicolar hymeniferous hymeniophore hymenium Hymenocallis Hymenochaete Hymenogaster Hymenogastraceae hymenogeny hymenoid Hymenolepis hymenomycetal hymenomycete Hymenomycetes hymenomycetoid hymenomycetous hymenophore hymenophorum Hymenophyllaceae hymenophyllaceous Hymenophyllites Hymenophyllum hymenopter Hymenoptera hymenopteran hymenopterist hymenopterological hymenopterologist hymenopterology hymenopteron hymenopterous hymenotomy Hymettian Hymettic hymn hymnal hymnarium hymnary hymnbook hymner hymnic hymnist hymnless hymnlike hymnode hymnodical hymnodist hymnody hymnographer hymnography hymnologic hymnological hymnologically hymnologist hymnology hymnwise hynde hyne hyobranchial hyocholalic hyocholic hyoepiglottic hyoepiglottidean hyoglossal hyoglossus hyoglycocholic hyoid hyoidal hyoidan hyoideal hyoidean hyoides Hyolithes hyolithid Hyolithidae hyolithoid hyomandibula hyomandibular hyomental hyoplastral hyoplastron hyoscapular hyoscine hyoscyamine Hyoscyamus hyosternal hyosternum hyostylic hyostyly hyothere Hyotherium hyothyreoid hyothyroid hyp hypabyssal hypaethral hypaethron hypaethros hypaethrum hypalgesia hypalgia hypalgic hypallactic hypallage hypanthial hypanthium hypantrum Hypapante hypapophysial hypapophysis hyparterial hypaspist hypate hypaton hypautomorphic hypaxial Hypenantron hyper hyperabelian hyperabsorption hyperaccurate hyperacid hyperacidaminuria hyperacidity hyperacoustics hyperaction hyperactive hyperactivity hyperacuity hyperacusia hyperacusis hyperacute hyperacuteness hyperadenosis hyperadiposis hyperadiposity hyperadrenalemia hyperaeolism hyperalbuminosis hyperalgebra hyperalgesia hyperalgesic hyperalgesis hyperalgetic hyperalimentation hyperalkalinity hyperaltruism hyperaminoacidemia hyperanabolic hyperanarchy hyperangelical hyperaphia hyperaphic hyperapophyseal hyperapophysial hyperapophysis hyperarchaeological hyperarchepiscopal hyperazotemia hyperbarbarous hyperbatic hyperbatically hyperbaton hyperbola hyperbolaeon hyperbole hyperbolic hyperbolically hyperbolicly hyperbolism hyperbolize hyperboloid hyperboloidal hyperboreal Hyperborean hyperborean hyperbrachycephal hyperbrachycephalic hyperbrachycephaly hyperbrachycranial hyperbrachyskelic hyperbranchia hyperbrutal hyperbulia hypercalcemia hypercarbamidemia hypercarbureted hypercarburetted hypercarnal hypercatalectic hypercatalexis hypercatharsis hypercathartic hypercathexis hypercenosis hyperchamaerrhine hyperchlorhydria hyperchloric hypercholesterinemia hypercholesterolemia hypercholia hypercivilization hypercivilized hyperclassical hyperclimax hypercoagulability hypercoagulable hypercomplex hypercomposite hyperconcentration hypercone hyperconfident hyperconformist hyperconscientious hyperconscientiousness hyperconscious hyperconsciousness hyperconservatism hyperconstitutional hypercoracoid hypercorrect hypercorrection hypercorrectness hypercosmic hypercreaturely hypercritic hypercritical hypercritically hypercriticism hypercriticize hypercryalgesia hypercube hypercyanotic hypercycle hypercylinder hyperdactyl hyperdactylia hyperdactyly hyperdeify hyperdelicacy hyperdelicate hyperdemocracy hyperdemocratic hyperdeterminant hyperdiabolical hyperdialectism hyperdiapason hyperdiapente hyperdiastole hyperdiatessaron hyperdiazeuxis hyperdicrotic hyperdicrotism hyperdicrotous hyperdimensional hyperdimensionality hyperdissyllable hyperdistention hyperditone hyperdivision hyperdolichocephal hyperdolichocephalic hyperdolichocephaly hyperdolichocranial hyperdoricism hyperdulia hyperdulic hyperdulical hyperelegant hyperelliptic hyperemesis hyperemetic hyperemia hyperemic hyperemotivity hyperemphasize hyperenthusiasm hypereosinophilia hyperephidrosis hyperequatorial hypererethism hyperessence hyperesthesia hyperesthetic hyperethical hypereuryprosopic hypereutectic hypereutectoid hyperexaltation hyperexcitability hyperexcitable hyperexcitement hyperexcursive hyperexophoria hyperextend hyperextension hyperfastidious hyperfederalist hyperfine hyperflexion hyperfocal hyperfunction hyperfunctional hyperfunctioning hypergalactia hypergamous hypergamy hypergenesis hypergenetic hypergeometric hypergeometrical hypergeometry hypergeusia hypergeustia hyperglycemia hyperglycemic hyperglycorrhachia hyperglycosuria hypergoddess hypergol hypergolic Hypergon hypergrammatical hyperhedonia hyperhemoglobinemia hyperhilarious hyperhypocrisy Hypericaceae hypericaceous Hypericales hypericin hypericism Hypericum hypericum hyperidealistic hyperideation hyperimmune hyperimmunity hyperimmunization hyperimmunize hyperingenuity hyperinosis hyperinotic hyperinsulinization hyperinsulinize hyperintellectual hyperintelligence hyperinvolution hyperirritability hyperirritable hyperisotonic hyperite hyperkeratosis hyperkinesia hyperkinesis hyperkinetic hyperlactation hyperleptoprosopic hyperleucocytosis hyperlipemia hyperlipoidemia hyperlithuria hyperlogical hyperlustrous hypermagical hypermakroskelic hypermedication hypermenorrhea hypermetabolism hypermetamorphic hypermetamorphism hypermetamorphosis hypermetamorphotic hypermetaphorical hypermetaphysical hypermetaplasia hypermeter hypermetric hypermetrical hypermetron hypermetrope hypermetropia hypermetropic hypermetropical hypermetropy hypermiraculous hypermixolydian hypermnesia hypermnesic hypermnesis hypermnestic hypermodest hypermonosyllable hypermoral hypermorph hypermorphism hypermorphosis hypermotile hypermotility hypermyotonia hypermyotrophy hypermyriorama hypermystical hypernatural hypernephroma hyperneuria hyperneurotic hypernic hypernitrogenous hypernomian hypernomic hypernormal hypernote hypernutrition Hyperoartia hyperoartian hyperobtrusive hyperodontogeny Hyperoodon hyperoon hyperope hyperopia hyperopic hyperorganic hyperorthognathic hyperorthognathous hyperorthognathy hyperosmia hyperosmic hyperostosis hyperostotic hyperothodox hyperothodoxy Hyperotreta hyperotretan Hyperotreti hyperotretous hyperoxidation hyperoxide hyperoxygenate hyperoxygenation hyperoxygenize hyperpanegyric hyperparasite hyperparasitic hyperparasitism hyperparasitize hyperparoxysm hyperpathetic hyperpatriotic hyperpencil hyperpepsinia hyperper hyperperistalsis hyperperistaltic hyperpersonal hyperphalangeal hyperphalangism hyperpharyngeal hyperphenomena hyperphoria hyperphoric hyperphosphorescence hyperphysical hyperphysically hyperphysics hyperpiesia hyperpiesis hyperpietic hyperpietist hyperpigmentation hyperpigmented hyperpinealism hyperpituitarism hyperplagiarism hyperplane hyperplasia hyperplasic hyperplastic hyperplatyrrhine hyperploid hyperploidy hyperpnea hyperpnoea hyperpolysyllabic hyperpredator hyperprism hyperproduction hyperprognathous hyperprophetical hyperprosexia hyperpulmonary hyperpure hyperpurist hyperpyramid hyperpyretic hyperpyrexia hyperpyrexial hyperquadric hyperrational hyperreactive hyperrealize hyperresonance hyperresonant hyperreverential hyperrhythmical hyperridiculous hyperritualism hypersacerdotal hypersaintly hypersalivation hypersceptical hyperscholastic hyperscrupulosity hypersecretion hypersensibility hypersensitive hypersensitiveness hypersensitivity hypersensitization hypersensitize hypersensual hypersensualism hypersensuous hypersentimental hypersolid hypersomnia hypersonic hypersophisticated hyperspace hyperspatial hyperspeculative hypersphere hyperspherical hyperspiritualizing hypersplenia hypersplenism hypersthene hypersthenia hypersthenic hypersthenite hyperstoic hyperstrophic hypersubtlety hypersuggestibility hypersuperlative hypersurface hypersusceptibility hypersusceptible hypersystole hypersystolic hypertechnical hypertelic hypertely hypertense hypertensin hypertension hypertensive hyperterrestrial hypertetrahedron hyperthermal hyperthermalgesia hyperthermesthesia hyperthermia hyperthermic hyperthermy hyperthesis hyperthetic hyperthetical hyperthyreosis hyperthyroid hyperthyroidism hyperthyroidization hyperthyroidize hypertonia hypertonic hypertonicity hypertonus hypertorrid hypertoxic hypertoxicity hypertragical hypertragically hypertranscendent hypertrichosis hypertridimensional hypertrophic hypertrophied hypertrophous hypertrophy hypertropia hypertropical hypertype hypertypic hypertypical hyperurbanism hyperuresis hypervascular hypervascularity hypervenosity hyperventilate hyperventilation hypervigilant hyperviscosity hypervitalization hypervitalize hypervitaminosis hypervolume hyperwrought hypesthesia hypesthesic hypethral hypha Hyphaene hyphaeresis hyphal hyphedonia hyphema hyphen hyphenate hyphenated hyphenation hyphenic hyphenism hyphenization hyphenize hypho hyphodrome Hyphomycetales hyphomycete Hyphomycetes hyphomycetic hyphomycetous hyphomycosis hypidiomorphic hypidiomorphically hypinosis hypinotic Hypnaceae hypnaceous hypnagogic hypnesthesis hypnesthetic hypnoanalysis hypnobate hypnocyst hypnody hypnoetic hypnogenesis hypnogenetic hypnoid hypnoidal hypnoidization hypnoidize hypnologic hypnological hypnologist hypnology hypnone hypnophobia hypnophobic hypnophoby hypnopompic Hypnos hypnoses hypnosis hypnosperm hypnosporangium hypnospore hypnosporic hypnotherapy hypnotic hypnotically hypnotism hypnotist hypnotistic hypnotizability hypnotizable hypnotization hypnotize hypnotizer hypnotoid hypnotoxin Hypnum hypo hypoacid hypoacidity hypoactive hypoactivity hypoadenia hypoadrenia hypoaeolian hypoalimentation hypoalkaline hypoalkalinity hypoaminoacidemia hypoantimonate hypoazoturia hypobasal hypobatholithic hypobenthonic hypobenthos hypoblast hypoblastic hypobole hypobranchial hypobranchiate hypobromite hypobromous hypobulia hypobulic hypocalcemia hypocarp hypocarpium hypocarpogean hypocatharsis hypocathartic hypocathexis hypocaust hypocentrum hypocephalus Hypochaeris hypochil hypochilium hypochlorhydria hypochlorhydric hypochloric hypochlorite hypochlorous hypochloruria Hypochnaceae hypochnose Hypochnus hypochondria hypochondriac hypochondriacal hypochondriacally hypochondriacism hypochondrial hypochondriasis hypochondriast hypochondrium hypochondry hypochordal hypochromia hypochrosis hypochylia hypocist hypocleidian hypocleidium hypocoelom hypocondylar hypocone hypoconid hypoconule hypoconulid hypocoracoid hypocorism hypocoristic hypocoristical hypocoristically hypocotyl hypocotyleal hypocotyledonary hypocotyledonous hypocotylous hypocrater hypocrateriform hypocraterimorphous Hypocreaceae hypocreaceous Hypocreales hypocrisis hypocrisy hypocrital hypocrite hypocritic hypocritical hypocritically hypocrize hypocrystalline hypocycloid hypocycloidal hypocystotomy hypocytosis hypodactylum hypoderm hypoderma hypodermal hypodermatic hypodermatically hypodermatoclysis hypodermatomy Hypodermella hypodermic hypodermically hypodermis hypodermoclysis hypodermosis hypodermous hypodiapason hypodiapente hypodiastole hypodiatessaron hypodiazeuxis hypodicrotic hypodicrotous hypoditone hypodorian hypodynamia hypodynamic hypoeliminator hypoendocrinism hypoeosinophilia hypoeutectic hypoeutectoid hypofunction hypogastric hypogastrium hypogastrocele hypogeal hypogean hypogee hypogeic hypogeiody hypogene hypogenesis hypogenetic hypogenic hypogenous hypogeocarpous hypogeous hypogeum hypogeusia hypoglobulia hypoglossal hypoglossitis hypoglossus hypoglottis hypoglycemia hypoglycemic hypognathism hypognathous hypogonation hypogynic hypogynium hypogynous hypogyny hypohalous hypohemia hypohidrosis Hypohippus hypohyal hypohyaline hypoid hypoiodite hypoiodous hypoionian hypoischium hypoisotonic hypokeimenometry hypokinesia hypokinesis hypokinetic hypokoristikon hypolemniscus hypoleptically hypoleucocytosis hypolimnion hypolocrian hypolydian hypomania hypomanic hypomelancholia hypomeral hypomere hypomeron hypometropia hypomixolydian hypomnematic hypomnesis hypomochlion hypomorph hypomotility hypomyotonia hyponastic hyponastically hyponasty hyponeuria hyponitric hyponitrite hyponitrous hyponoetic hyponoia hyponome hyponomic hyponychial hyponychium hyponym hyponymic hyponymous Hypoparia hypopepsia hypopepsinia hypopepsy hypopetalous hypopetaly hypophalangism hypophamin hypophamine hypophare hypopharyngeal hypopharynx hypophloeodal hypophloeodic hypophloeous hypophonic hypophonous hypophora hypophoria hypophosphate hypophosphite hypophosphoric hypophosphorous hypophrenia hypophrenic hypophrenosis hypophrygian hypophyge hypophyll hypophyllium hypophyllous hypophyllum hypophyse hypophyseal hypophysectomize hypophysectomy hypophyseoprivic hypophyseoprivous hypophysial hypophysical hypophysics hypophysis hypopial hypopinealism hypopituitarism Hypopitys hypoplankton hypoplanktonic hypoplasia hypoplastic hypoplastral hypoplastron hypoplasty hypoplasy hypoploid hypoploidy hypopodium hypopraxia hypoprosexia hypopselaphesia hypopteral hypopteron hypoptilar hypoptilum hypoptosis hypoptyalism hypopus hypopygial hypopygidium hypopygium hypopyon hyporadial hyporadiolus hyporadius hyporchema hyporchematic hyporcheme hyporchesis hyporhachidian hyporhachis hyporhined hyporit hyporrhythmic hyposcenium hyposcleral hyposcope hyposecretion hyposensitization hyposensitize hyposkeletal hyposmia hypospadiac hypospadias hyposphene hypospray hypostase hypostasis hypostasization hypostasize hypostasy hypostatic hypostatical hypostatically hypostatization hypostatize hyposternal hyposternum hyposthenia hyposthenic hyposthenuria hypostigma hypostilbite hypostoma Hypostomata hypostomatic hypostomatous hypostome hypostomial Hypostomides hypostomous hypostrophe hypostyle hypostypsis hypostyptic hyposulphite hyposulphurous hyposuprarenalism hyposyllogistic hyposynaphe hyposynergia hyposystole hypotactic hypotarsal hypotarsus hypotaxia hypotaxic hypotaxis hypotension hypotensive hypotensor hypotenusal hypotenuse hypothalamic hypothalamus hypothalline hypothallus hypothec hypotheca hypothecal hypothecary hypothecate hypothecation hypothecative hypothecator hypothecatory hypothecial hypothecium hypothenal hypothenar Hypotheria hypothermal hypothermia hypothermic hypothermy hypotheses hypothesis hypothesist hypothesize hypothesizer hypothetic hypothetical hypothetically hypothetics hypothetist hypothetize hypothetizer hypothyreosis hypothyroid hypothyroidism hypotonia hypotonic hypotonicity hypotonus hypotony hypotoxic hypotoxicity hypotrachelium Hypotremata hypotrich Hypotricha Hypotrichida hypotrichosis hypotrichous hypotrochanteric hypotrochoid hypotrochoidal hypotrophic hypotrophy hypotympanic hypotypic hypotypical hypotyposis hypovalve hypovanadate hypovanadic hypovanadious hypovanadous hypovitaminosis hypoxanthic hypoxanthine Hypoxis Hypoxylon hypozeugma hypozeuxis Hypozoa hypozoan hypozoic hyppish hypsibrachycephalic hypsibrachycephalism hypsibrachycephaly hypsicephalic hypsicephaly hypsidolichocephalic hypsidolichocephalism hypsidolichocephaly hypsiliform hypsiloid Hypsilophodon hypsilophodont hypsilophodontid Hypsilophodontidae hypsilophodontoid Hypsiprymninae Hypsiprymnodontinae Hypsiprymnus Hypsistarian hypsistenocephalic hypsistenocephalism hypsistenocephaly hypsobathymetric hypsocephalous hypsochrome hypsochromic hypsochromy hypsodont hypsodontism hypsodonty hypsographic hypsographical hypsography hypsoisotherm hypsometer hypsometric hypsometrical hypsometrically hypsometrist hypsometry hypsophobia hypsophonous hypsophyll hypsophyllar hypsophyllary hypsophyllous hypsophyllum hypsothermometer hypural hyraces hyraceum Hyrachyus hyracid Hyracidae hyraciform Hyracina Hyracodon hyracodont hyracodontid Hyracodontidae hyracodontoid hyracoid Hyracoidea hyracoidean hyracothere hyracotherian Hyracotheriinae Hyracotherium hyrax Hyrcan Hyrcanian hyson hyssop Hyssopus hystazarin hysteralgia hysteralgic hysteranthous hysterectomy hysterelcosis hysteresial hysteresis hysteretic hysteretically hysteria hysteriac Hysteriales hysteric hysterical hysterically hystericky hysterics hysteriform hysterioid Hysterocarpus hysterocatalepsy hysterocele hysterocleisis hysterocrystalline hysterocystic hysterodynia hysterogen hysterogenetic hysterogenic hysterogenous hysterogeny hysteroid hysterolaparotomy hysterolith hysterolithiasis hysterology hysterolysis hysteromania hysterometer hysterometry hysteromorphous hysteromyoma hysteromyomectomy hysteron hysteroneurasthenia hysteropathy hysteropexia hysteropexy hysterophore Hysterophyta hysterophytal hysterophyte hysteroproterize hysteroptosia hysteroptosis hysterorrhaphy hysterorrhexis hysteroscope hysterosis hysterotome hysterotomy hysterotraumatism hystriciasis hystricid Hystricidae Hystricinae hystricine hystricism hystricismus hystricoid hystricomorph Hystricomorpha hystricomorphic hystricomorphous Hystrix I i Iacchic Iacchos Iacchus Iachimo iamatology iamb Iambe iambelegus iambi iambic iambically iambist iambize iambographer iambus Ianthina ianthine ianthinite Ianus iao Iapetus Iapyges Iapygian Iapygii iatraliptic iatraliptics iatric iatrical iatrochemic iatrochemical iatrochemist iatrochemistry iatrological iatrology iatromathematical iatromathematician iatromathematics iatromechanical iatromechanist iatrophysical iatrophysicist iatrophysics iatrotechnics iba Ibad Ibadite Iban Ibanag Iberes Iberi Iberia Iberian Iberic Iberis Iberism iberite ibex ibices ibid Ibididae Ibidinae ibidine Ibidium Ibilao ibis ibisbill Ibo ibolium ibota Ibsenian Ibsenic Ibsenish Ibsenism Ibsenite Ibycter Ibycus Icacinaceae icacinaceous icaco Icacorea Icaria Icarian Icarianism Icarus ice iceberg iceblink iceboat icebone icebound icebox icebreaker icecap icecraft iced icefall icefish icehouse Iceland iceland Icelander Icelandian Icelandic iceleaf iceless Icelidae icelike iceman Iceni icequake iceroot Icerya icework ich Ichneumia ichneumon ichneumoned Ichneumones ichneumonid Ichneumonidae ichneumonidan Ichneumonides ichneumoniform ichneumonized ichneumonoid Ichneumonoidea ichneumonology ichneumous ichneutic ichnite ichnographic ichnographical ichnographically ichnography ichnolite ichnolithology ichnolitic ichnological ichnology ichnomancy icho ichoglan ichor ichorous ichorrhea ichorrhemia ichthulin ichthulinic ichthus ichthyal ichthyic ichthyism ichthyismus ichthyization ichthyized ichthyobatrachian Ichthyocephali ichthyocephalous ichthyocol ichthyocolla ichthyocoprolite Ichthyodea Ichthyodectidae ichthyodian ichthyodont ichthyodorulite ichthyofauna ichthyoform ichthyographer ichthyographia ichthyographic ichthyography ichthyoid ichthyoidal Ichthyoidea Ichthyol ichthyolatrous ichthyolatry ichthyolite ichthyolitic ichthyologic ichthyological ichthyologically ichthyologist ichthyology ichthyomancy ichthyomantic Ichthyomorpha ichthyomorphic ichthyomorphous ichthyonomy ichthyopaleontology ichthyophagan ichthyophagi ichthyophagian ichthyophagist ichthyophagize ichthyophagous ichthyophagy ichthyophile ichthyophobia ichthyophthalmite ichthyophthiriasis ichthyopolism ichthyopolist ichthyopsid Ichthyopsida ichthyopsidan Ichthyopterygia ichthyopterygian ichthyopterygium Ichthyornis Ichthyornithes ichthyornithic Ichthyornithidae Ichthyornithiformes ichthyornithoid ichthyosaur Ichthyosauria ichthyosaurian ichthyosaurid Ichthyosauridae ichthyosauroid Ichthyosaurus ichthyosis ichthyosism ichthyotic Ichthyotomi ichthyotomist ichthyotomous ichthyotomy ichthyotoxin ichthyotoxism ichthytaxidermy ichu icica icicle icicled icily iciness icing icon Iconian iconic iconical iconism iconoclasm iconoclast iconoclastic iconoclastically iconoclasticism iconodule iconodulic iconodulist iconoduly iconograph iconographer iconographic iconographical iconographist iconography iconolater iconolatrous iconolatry iconological iconologist iconology iconomachal iconomachist iconomachy iconomania iconomatic iconomatically iconomaticism iconomatography iconometer iconometric iconometrical iconometrically iconometry iconophile iconophilism iconophilist iconophily iconoplast iconoscope iconostas iconostasion iconostasis iconotype icosahedral Icosandria icosasemic icosian icositetrahedron icosteid Icosteidae icosteine Icosteus icotype icteric icterical Icteridae icterine icteritious icterode icterogenetic icterogenic icterogenous icterohematuria icteroid icterus ictic Ictonyx ictuate ictus icy id Ida Idaean Idaho Idahoan Idaic idalia Idalian idant iddat Iddio ide idea ideaed ideaful ideagenous ideal idealess idealism idealist idealistic idealistical idealistically ideality idealization idealize idealizer idealless ideally idealness ideamonger Idean ideate ideation ideational ideationally ideative ideist idempotent identic identical identicalism identically identicalness identifiable identifiableness identification identifier identify identism identity ideogenetic ideogenical ideogenous ideogeny ideoglyph ideogram ideogrammic ideograph ideographic ideographical ideographically ideography ideolatry ideologic ideological ideologically ideologist ideologize ideologue ideology ideomotion ideomotor ideophone ideophonetics ideophonous ideoplastia ideoplastic ideoplastics ideoplasty ideopraxist ides idgah idiasm idic idiobiology idioblast idioblastic idiochromatic idiochromatin idiochromosome idiocrasis idiocrasy idiocratic idiocratical idiocy idiocyclophanous idioelectric idioelectrical Idiogastra idiogenesis idiogenetic idiogenous idioglossia idioglottic idiograph idiographic idiographical idiohypnotism idiolalia idiolatry idiologism idiolysin idiom idiomatic idiomatical idiomatically idiomaticalness idiomelon idiometer idiomography idiomology idiomorphic idiomorphically idiomorphism idiomorphous idiomuscular idiopathetic idiopathic idiopathical idiopathically idiopathy idiophanism idiophanous idiophonic idioplasm idioplasmatic idioplasmic idiopsychological idiopsychology idioreflex idiorepulsive idioretinal idiorrhythmic Idiosepiidae Idiosepion idiosome idiospasm idiospastic idiostatic idiosyncrasy idiosyncratic idiosyncratical idiosyncratically idiot idiotcy idiothalamous idiothermous idiothermy idiotic idiotical idiotically idioticalness idioticon idiotish idiotism idiotize idiotropian idiotry idiotype idiotypic Idism Idist Idistic idite iditol idle idleful idleheaded idlehood idleman idlement idleness idler idleset idleship idlety idlish idly Ido idocrase Idoism Idoist Idoistic idol idola idolaster idolater idolatress idolatric idolatrize idolatrizer idolatrous idolatrously idolatrousness idolatry idolify idolism idolist idolistic idolization idolize idolizer idoloclast idoloclastic idolodulia idolographical idololatrical idololatry idolomancy idolomania idolothyte idolothytic idolous idolum Idomeneus idoneal idoneity idoneous idoneousness idorgan idosaccharic idose Idotea Idoteidae Idothea Idotheidae idrialin idrialine idrialite Idrisid Idrisite idryl Idumaean idyl idyler idylism idylist idylize idyllian idyllic idyllical idyllically idyllicism ie Ierne if ife iffy Ifugao Igara Igbira Igdyr igelstromite igloo Iglulirmiut ignatia Ignatian Ignatianist Ignatius ignavia igneoaqueous igneous ignescent ignicolist igniferous igniferousness igniform ignifuge ignify ignigenous ignipotent ignipuncture ignitability ignite igniter ignitibility ignitible ignition ignitive ignitor ignitron ignivomous ignivomousness ignobility ignoble ignobleness ignoblesse ignobly ignominious ignominiously ignominiousness ignominy ignorable ignoramus ignorance ignorant Ignorantine ignorantism ignorantist ignorantly ignorantness ignoration ignore ignorement ignorer ignote Igorot iguana Iguania iguanian iguanid Iguanidae iguaniform Iguanodon iguanodont Iguanodontia Iguanodontidae iguanodontoid Iguanodontoidea iguanoid Iguvine ihi Ihlat ihleite ihram iiwi ijma Ijo ijolite Ijore ijussite ikat Ike ikey ikeyness Ikhwan ikona ikra Ila ileac ileectomy ileitis ileocaecal ileocaecum ileocolic ileocolitis ileocolostomy ileocolotomy ileon ileosigmoidostomy ileostomy ileotomy ilesite ileum ileus ilex ilia Iliac iliac iliacus Iliad Iliadic Iliadist Iliadize iliahi ilial Ilian iliau Ilicaceae ilicaceous ilicic ilicin ilima iliocaudal iliocaudalis iliococcygeal iliococcygeus iliococcygian iliocostal iliocostalis iliodorsal iliofemoral iliohypogastric ilioinguinal ilioischiac ilioischiatic iliolumbar iliopectineal iliopelvic ilioperoneal iliopsoas iliopsoatic iliopubic iliosacral iliosciatic ilioscrotal iliospinal iliotibial iliotrochanteric Ilissus ilium ilk ilka ilkane ill illaborate illachrymable illachrymableness Illaenus Illano Illanun illapsable illapse illapsive illaqueate illaqueation illation illative illatively illaudable illaudably illaudation illaudatory Illecebraceae illecebrous illeck illegal illegality illegalize illegally illegalness illegibility illegible illegibleness illegibly illegitimacy illegitimate illegitimately illegitimateness illegitimation illegitimatize illeism illeist illess illfare illguide illiberal illiberalism illiberality illiberalize illiberally illiberalness illicit illicitly illicitness Illicium illimitability illimitable illimitableness illimitably illimitate illimitation illimited illimitedly illimitedness illinition illinium Illinoian Illinois Illinoisan Illinoisian Illipe illipene illiquation illiquid illiquidity illiquidly illish illision illiteracy illiteral illiterate illiterately illiterateness illiterature illium illness illocal illocality illocally illogic illogical illogicality illogically illogicalness illogician illogicity Illoricata illoricate illoricated illoyal illoyalty illth illucidate illucidation illucidative illude illudedly illuder illume illumer illuminability illuminable illuminance illuminant illuminate illuminated illuminati illuminating illuminatingly illumination illuminational illuminatism illuminatist illuminative illuminato illuminator illuminatory illuminatus illumine illuminee illuminer Illuminism illuminist Illuministic Illuminize illuminometer illuminous illupi illure illurement illusible illusion illusionable illusional illusionary illusioned illusionism illusionist illusionistic illusive illusively illusiveness illusor illusorily illusoriness illusory illustrable illustratable illustrate illustration illustrational illustrative illustratively illustrator illustratory illustratress illustre illustricity illustrious illustriously illustriousness illutate illutation illuvial illuviate illuviation illy Illyrian Illyric ilmenite ilmenitite ilmenorutile Ilocano Ilokano Iloko Ilongot ilot Ilpirra ilvaite Ilysanthes Ilysia Ilysiidae ilysioid image imageable imageless imager imagerial imagerially imagery imaginability imaginable imaginableness imaginably imaginal imaginant imaginarily imaginariness imaginary imaginate imagination imaginational imaginationalism imaginative imaginatively imaginativeness imaginator imagine imaginer imagines imaginist imaginous imagism imagist imagistic imago imam imamah imamate imambarah imamic imamship Imantophyllum imaret imbalance imban imband imbannered imbarge imbark imbarn imbased imbastardize imbat imbauba imbe imbecile imbecilely imbecilic imbecilitate imbecility imbed imbellious imber imbibe imbiber imbibition imbibitional imbibitory imbirussu imbitter imbitterment imbolish imbondo imbonity imbordure imborsation imbosom imbower imbreathe imbreviate imbrex imbricate imbricated imbricately imbrication imbricative imbroglio imbrue imbruement imbrute imbrutement imbue imbuement imburse imbursement Imer Imerina Imeritian imi imidazole imidazolyl imide imidic imidogen iminazole imine imino iminohydrin imitability imitable imitableness imitancy imitant imitate imitatee imitation imitational imitationist imitative imitatively imitativeness imitator imitatorship imitatress imitatrix immaculacy immaculance immaculate immaculately immaculateness immalleable immanacle immanation immane immanely immanence immanency immaneness immanent immanental immanentism immanentist immanently Immanes immanifest immanifestness immanity immantle Immanuel immarble immarcescible immarcescibly immarcibleness immarginate immask immatchable immaterial immaterialism immaterialist immateriality immaterialize immaterially immaterialness immaterials immateriate immatriculate immatriculation immature immatured immaturely immatureness immaturity immeability immeasurability immeasurable immeasurableness immeasurably immeasured immechanical immechanically immediacy immedial immediate immediately immediateness immediatism immediatist immedicable immedicableness immedicably immelodious immember immemorable immemorial immemorially immense immensely immenseness immensity immensive immensurability immensurable immensurableness immensurate immerd immerge immergence immergent immerit immerited immeritorious immeritoriously immeritous immerse immersement immersible immersion immersionism immersionist immersive immethodic immethodical immethodically immethodicalness immethodize immetrical immetrically immetricalness immew immi immigrant immigrate immigration immigrator immigratory imminence imminency imminent imminently imminentness immingle imminution immiscibility immiscible immiscibly immission immit immitigability immitigable immitigably immix immixable immixture immobile immobility immobilization immobilize immoderacy immoderate immoderately immoderateness immoderation immodest immodestly immodesty immodulated immolate immolation immolator immoment immomentous immonastered immoral immoralism immoralist immorality immoralize immorally immorigerous immorigerousness immortability immortable immortal immortalism immortalist immortality immortalizable immortalization immortalize immortalizer immortally immortalness immortalship immortelle immortification immortified immotile immotioned immotive immound immovability immovable immovableness immovably immund immundity immune immunist immunity immunization immunize immunochemistry immunogen immunogenetic immunogenetics immunogenic immunogenically immunogenicity immunologic immunological immunologically immunologist immunology immunoreaction immunotoxin immuration immure immurement immusical immusically immutability immutable immutableness immutably immutation immute immutilate immutual Imogen Imolinda imonium imp impacability impacable impack impackment impact impacted impaction impactionize impactment impactual impages impaint impair impairable impairer impairment impala impalace impalatable impale impalement impaler impall impalm impalpability impalpable impalpably impalsy impaludism impanate impanation impanator impane impanel impanelment impapase impapyrate impar imparadise imparalleled imparasitic impardonable impardonably imparidigitate imparipinnate imparisyllabic imparity impark imparkation imparl imparlance imparsonee impart impartable impartance impartation imparter impartial impartialism impartialist impartiality impartially impartialness impartibilibly impartibility impartible impartibly imparticipable impartite impartive impartivity impartment impassability impassable impassableness impassably impasse impassibilibly impassibility impassible impassibleness impassion impassionable impassionate impassionately impassioned impassionedly impassionedness impassionment impassive impassively impassiveness impassivity impastation impaste impasto impasture impaternate impatible impatience impatiency Impatiens impatient Impatientaceae impatientaceous impatiently impatientness impatronize impave impavid impavidity impavidly impawn impayable impeach impeachability impeachable impeacher impeachment impearl impeccability impeccable impeccably impeccance impeccancy impeccant impectinate impecuniary impecuniosity impecunious impecuniously impecuniousness impedance impede impeder impedibility impedible impedient impediment impedimenta impedimental impedimentary impeding impedingly impedite impedition impeditive impedometer impeevish impel impellent impeller impen impend impendence impendency impendent impending impenetrability impenetrable impenetrableness impenetrably impenetrate impenetration impenetrative impenitence impenitent impenitently impenitentness impenitible impenitibleness impennate Impennes impent imperance imperant Imperata imperate imperation imperatival imperative imperatively imperativeness imperator imperatorial imperatorially imperatorian imperatorious imperatorship imperatory imperatrix imperceivable imperceivableness imperceivably imperceived imperceiverant imperceptibility imperceptible imperceptibleness imperceptibly imperception imperceptive imperceptiveness imperceptivity impercipience impercipient imperence imperent imperfect imperfected imperfectibility imperfectible imperfection imperfectious imperfective imperfectly imperfectness imperforable Imperforata imperforate imperforated imperforation imperformable imperia imperial imperialin imperialine imperialism imperialist imperialistic imperialistically imperiality imperialization imperialize imperially imperialness imperialty imperil imperilment imperious imperiously imperiousness imperish imperishability imperishable imperishableness imperishably imperite imperium impermanence impermanency impermanent impermanently impermeability impermeabilization impermeabilize impermeable impermeableness impermeably impermeated impermeator impermissible impermutable imperscriptible imperscrutable impersonable impersonal impersonality impersonalization impersonalize impersonally impersonate impersonation impersonative impersonator impersonatress impersonatrix impersonification impersonify impersonization impersonize imperspicuity imperspicuous imperspirability imperspirable impersuadable impersuadableness impersuasibility impersuasible impersuasibleness impersuasibly impertinacy impertinence impertinency impertinent impertinently impertinentness impertransible imperturbability imperturbable imperturbableness imperturbably imperturbation imperturbed imperverse impervertible impervestigable imperviability imperviable imperviableness impervial impervious imperviously imperviousness impest impestation impester impeticos impetiginous impetigo impetition impetrate impetration impetrative impetrator impetratory impetre impetulant impetulantly impetuosity impetuous impetuously impetuousness impetus Impeyan imphee impi impicture impierceable impiety impignorate impignoration impinge impingement impingence impingent impinger impinguate impious impiously impiousness impish impishly impishness impiteous impitiably implacability implacable implacableness implacably implacement implacental Implacentalia implacentate implant implantation implanter implastic implasticity implate implausibility implausible implausibleness implausibly impleach implead impleadable impleader impledge implement implemental implementation implementiferous implete impletion impletive implex impliable implial implicant implicate implicately implicateness implication implicational implicative implicatively implicatory implicit implicitly implicitness impliedly impliedness impling implode implodent implorable imploration implorator imploratory implore implorer imploring imploringly imploringness implosion implosive implosively implume implumed implunge impluvium imply impocket impofo impoison impoisoner impolarizable impolicy impolished impolite impolitely impoliteness impolitic impolitical impolitically impoliticalness impoliticly impoliticness impollute imponderabilia imponderability imponderable imponderableness imponderably imponderous impone imponent impoor impopular impopularly imporosity imporous import importability importable importableness importably importance importancy important importantly importation importer importless importment importraiture importray importunacy importunance importunate importunately importunateness importunator importune importunely importunement importuner importunity imposable imposableness imposal impose imposement imposer imposing imposingly imposingness imposition impositional impositive impossibilification impossibilism impossibilist impossibilitate impossibility impossible impossibleness impossibly impost imposter imposterous impostor impostorism impostorship impostress impostrix impostrous impostumate impostumation impostume imposture imposturism imposturous imposure impot impotable impotence impotency impotent impotently impotentness impound impoundable impoundage impounder impoundment impoverish impoverisher impoverishment impracticability impracticable impracticableness impracticably impractical impracticality impracticalness imprecant imprecate imprecation imprecator imprecatorily imprecatory imprecise imprecisely imprecision impredicability impredicable impreg impregn impregnability impregnable impregnableness impregnably impregnant impregnate impregnation impregnative impregnator impregnatory imprejudice impremeditate impreparation impresa impresario imprescience imprescribable imprescriptibility imprescriptible imprescriptibly imprese impress impressable impressedly impresser impressibility impressible impressibleness impressibly impression impressionability impressionable impressionableness impressionably impressional impressionalist impressionality impressionally impressionary impressionism impressionist impressionistic impressionistically impressionless impressive impressively impressiveness impressment impressor impressure imprest imprestable impreventability impreventable imprevisibility imprevisible imprevision imprimatur imprime imprimitive imprimitivity imprint imprinter imprison imprisonable imprisoner imprisonment improbability improbabilize improbable improbableness improbably improbation improbative improbatory improbity improcreant improcurability improcurable improducible improficience improficiency improgressive improgressively improgressiveness improlificical impromptitude impromptu impromptuary impromptuist improof improper improperation improperly improperness impropriate impropriation impropriator impropriatrix impropriety improvability improvable improvableness improvably improve improvement improver improvership improvidence improvident improvidentially improvidently improving improvingly improvisate improvisation improvisational improvisator improvisatorial improvisatorially improvisatorize improvisatory improvise improvisedly improviser improvision improviso improvisor imprudence imprudency imprudent imprudential imprudently imprudentness impship impuberal impuberate impuberty impubic impudence impudency impudent impudently impudentness impudicity impugn impugnability impugnable impugnation impugner impugnment impuissance impuissant impulse impulsion impulsive impulsively impulsiveness impulsivity impulsory impunctate impunctual impunctuality impunely impunible impunibly impunity impure impurely impureness impuritan impuritanism impurity imputability imputable imputableness imputably imputation imputative imputatively imputativeness impute imputedly imputer imputrescence imputrescibility imputrescible imputrid impy imshi imsonic imu in inability inabordable inabstinence inaccentuated inaccentuation inacceptable inaccessibility inaccessible inaccessibleness inaccessibly inaccordance inaccordancy inaccordant inaccordantly inaccuracy inaccurate inaccurately inaccurateness inachid Inachidae inachoid Inachus inacquaintance inacquiescent inactinic inaction inactionist inactivate inactivation inactive inactively inactiveness inactivity inactuate inactuation inadaptability inadaptable inadaptation inadaptive inadept inadequacy inadequate inadequately inadequateness inadequation inadequative inadequatively inadherent inadhesion inadhesive inadjustability inadjustable inadmissibility inadmissible inadmissibly inadventurous inadvertence inadvertency inadvertent inadvertently inadvisability inadvisable inadvisableness inadvisedly inaesthetic inaffability inaffable inaffectation inagglutinability inagglutinable inaggressive inagile inaidable inaja inalacrity inalienability inalienable inalienableness inalienably inalimental inalterability inalterable inalterableness inalterably inamissibility inamissible inamissibleness inamorata inamorate inamoration inamorato inamovability inamovable inane inanely inanga inangulate inanimadvertence inanimate inanimated inanimately inanimateness inanimation inanition inanity inantherate inapathy inapostate inapparent inappealable inappeasable inappellability inappellable inappendiculate inapperceptible inappertinent inappetence inappetency inappetent inappetible inapplicability inapplicable inapplicableness inapplicably inapplication inapposite inappositely inappositeness inappreciable inappreciably inappreciation inappreciative inappreciatively inappreciativeness inapprehensible inapprehension inapprehensive inapprehensiveness inapproachability inapproachable inapproachably inappropriable inappropriableness inappropriate inappropriately inappropriateness inapt inaptitude inaptly inaptness inaqueous inarable inarch inarculum inarguable inarguably inarm inarticulacy Inarticulata inarticulate inarticulated inarticulately inarticulateness inarticulation inartificial inartificiality inartificially inartificialness inartistic inartistical inartisticality inartistically inasmuch inassimilable inassimilation inassuageable inattackable inattention inattentive inattentively inattentiveness inaudibility inaudible inaudibleness inaudibly inaugur inaugural inaugurate inauguration inaugurative inaugurator inauguratory inaugurer inaurate inauration inauspicious inauspiciously inauspiciousness inauthentic inauthenticity inauthoritative inauthoritativeness inaxon inbe inbeaming inbearing inbeing inbending inbent inbirth inblow inblowing inblown inboard inbond inborn inbound inbread inbreak inbreaking inbreathe inbreather inbred inbreed inbring inbringer inbuilt inburning inburnt inburst inby Inca Incaic incalculability incalculable incalculableness incalculably incalescence incalescency incalescent incaliculate incalver incalving incameration Incan incandent incandesce incandescence incandescency incandescent incandescently incanous incantation incantational incantator incantatory incanton incapability incapable incapableness incapably incapacious incapaciousness incapacitate incapacitation incapacity incapsulate incapsulation incaptivate incarcerate incarceration incarcerator incardinate incardination Incarial incarmined incarn incarnadine incarnant incarnate incarnation incarnational incarnationist incarnative Incarvillea incase incasement incast incatenate incatenation incaution incautious incautiously incautiousness incavate incavated incavation incavern incedingly incelebrity incendiarism incendiary incendivity incensation incense incenseless incensement incensory incensurable incensurably incenter incentive incentively incentor incept inception inceptive inceptively inceptor inceration incertitude incessable incessably incessancy incessant incessantly incessantness incest incestuous incestuously incestuousness inch inched inchmeal inchoacy inchoant inchoate inchoately inchoateness inchoation inchoative inchpin inchworm incide incidence incident incidental incidentalist incidentally incidentalness incidentless incidently incinerable incinerate incineration incinerator incipience incipient incipiently incircumscription incircumspect incircumspection incircumspectly incircumspectness incisal incise incisely incisiform incision incisive incisively incisiveness incisor incisorial incisory incisure incitability incitable incitant incitation incite incitement inciter incitingly incitive incitress incivic incivility incivilization incivism inclemency inclement inclemently inclementness inclinable inclinableness inclination inclinational inclinator inclinatorily inclinatorium inclinatory incline incliner inclinograph inclinometer inclip inclose inclosure includable include included includedness includer inclusa incluse inclusion inclusionist inclusive inclusively inclusiveness inclusory incoagulable incoalescence incoercible incog incogent incogitability incogitable incogitancy incogitant incogitantly incogitative incognita incognitive incognito incognizability incognizable incognizance incognizant incognoscent incognoscibility incognoscible incoherence incoherency incoherent incoherentific incoherently incoherentness incohering incohesion incohesive incoincidence incoincident incombustibility incombustible incombustibleness incombustibly incombustion income incomeless incomer incoming incommensurability incommensurable incommensurableness incommensurably incommensurate incommensurately incommensurateness incommiscibility incommiscible incommodate incommodation incommode incommodement incommodious incommodiously incommodiousness incommodity incommunicability incommunicable incommunicableness incommunicably incommunicado incommunicative incommunicatively incommunicativeness incommutability incommutable incommutableness incommutably incompact incompactly incompactness incomparability incomparable incomparableness incomparably incompassionate incompassionately incompassionateness incompatibility incompatible incompatibleness incompatibly incompendious incompensated incompensation incompetence incompetency incompetent incompetently incompetentness incompletability incompletable incompletableness incomplete incompleted incompletely incompleteness incompletion incomplex incompliance incompliancy incompliant incompliantly incomplicate incomplying incomposed incomposedly incomposedness incomposite incompossibility incompossible incomprehended incomprehending incomprehendingly incomprehensibility incomprehensible incomprehensibleness incomprehensibly incomprehension incomprehensive incomprehensively incomprehensiveness incompressibility incompressible incompressibleness incompressibly incomputable inconcealable inconceivability inconceivable inconceivableness inconceivably inconcinnate inconcinnately inconcinnity inconcinnous inconcludent inconcluding inconclusion inconclusive inconclusively inconclusiveness inconcrete inconcurrent inconcurring incondensability incondensable incondensibility incondensible incondite inconditionate inconditioned inconducive inconfirm inconformable inconformably inconformity inconfused inconfusedly inconfusion inconfutable inconfutably incongealable incongealableness incongenerous incongenial incongeniality inconglomerate incongruence incongruent incongruently incongruity incongruous incongruously incongruousness inconjoinable inconnected inconnectedness inconnu inconscience inconscient inconsciently inconscious inconsciously inconsecutive inconsecutively inconsecutiveness inconsequence inconsequent inconsequential inconsequentiality inconsequentially inconsequently inconsequentness inconsiderable inconsiderableness inconsiderably inconsiderate inconsiderately inconsiderateness inconsideration inconsidered inconsistence inconsistency inconsistent inconsistently inconsistentness inconsolability inconsolable inconsolableness inconsolably inconsolate inconsolately inconsonance inconsonant inconsonantly inconspicuous inconspicuously inconspicuousness inconstancy inconstant inconstantly inconstantness inconstruable inconsultable inconsumable inconsumably inconsumed incontaminable incontaminate incontaminateness incontemptible incontestability incontestable incontestableness incontestably incontinence incontinency incontinent incontinently incontinuity incontinuous incontracted incontractile incontraction incontrollable incontrollably incontrolled incontrovertibility incontrovertible incontrovertibleness incontrovertibly inconvenience inconveniency inconvenient inconveniently inconvenientness inconversable inconversant inconversibility inconvertibility inconvertible inconvertibleness inconvertibly inconvinced inconvincedly inconvincibility inconvincible inconvincibly incopresentability incopresentable incoronate incoronated incoronation incorporable incorporate incorporated incorporatedness incorporation incorporative incorporator incorporeal incorporealism incorporealist incorporeality incorporealize incorporeally incorporeity incorporeous incorpse incorrect incorrection incorrectly incorrectness incorrespondence incorrespondency incorrespondent incorresponding incorrigibility incorrigible incorrigibleness incorrigibly incorrodable incorrodible incorrosive incorrupt incorrupted incorruptibility Incorruptible incorruptible incorruptibleness incorruptibly incorruption incorruptly incorruptness incourteous incourteously incrash incrassate incrassated incrassation incrassative increasable increasableness increase increasedly increaseful increasement increaser increasing increasingly increate increately increative incredibility incredible incredibleness incredibly increditable incredited incredulity incredulous incredulously incredulousness increep incremate incremation increment incremental incrementation increpate increpation increscence increscent increst incretion incretionary incretory incriminate incrimination incriminator incriminatory incross incrossbred incrossing incrotchet incruent incruental incruentous incrust incrustant Incrustata incrustate incrustation incrustator incrustive incrustment incrystal incrystallizable incubate incubation incubational incubative incubator incubatorium incubatory incubi incubous incubus incudal incudate incudectomy incudes incudomalleal incudostapedial inculcate inculcation inculcative inculcator inculcatory inculpability inculpable inculpableness inculpably inculpate inculpation inculpative inculpatory incult incultivation inculture incumbence incumbency incumbent incumbentess incumbently incumber incumberment incumbrance incumbrancer incunable incunabula incunabular incunabulist incunabulum incuneation incur incurability incurable incurableness incurably incuriosity incurious incuriously incuriousness incurrable incurrence incurrent incurse incursion incursionist incursive incurvate incurvation incurvature incurve incus incuse incut incutting Ind indaba indaconitine indagate indagation indagative indagator indagatory indamine indan indane Indanthrene indanthrene indart indazin indazine indazol indazole inde indebt indebted indebtedness indebtment indecence indecency indecent indecently indecentness Indecidua indeciduate indeciduous indecipherability indecipherable indecipherableness indecipherably indecision indecisive indecisively indecisiveness indeclinable indeclinableness indeclinably indecomponible indecomposable indecomposableness indecorous indecorously indecorousness indecorum indeed indeedy indefaceable indefatigability indefatigable indefatigableness indefatigably indefeasibility indefeasible indefeasibleness indefeasibly indefeatable indefectibility indefectible indefectibly indefective indefensibility indefensible indefensibleness indefensibly indefensive indeficiency indeficient indeficiently indefinable indefinableness indefinably indefinite indefinitely indefiniteness indefinitive indefinitively indefinitiveness indefinitude indefinity indeflectible indefluent indeformable indehiscence indehiscent indelectable indelegability indelegable indeliberate indeliberately indeliberateness indeliberation indelibility indelible indelibleness indelibly indelicacy indelicate indelicately indelicateness indemnification indemnificator indemnificatory indemnifier indemnify indemnitee indemnitor indemnity indemnization indemoniate indemonstrability indemonstrable indemonstrableness indemonstrably indene indent indentation indented indentedly indentee indenter indention indentment indentor indenture indentured indentureship indentwise independable independence independency independent independentism independently Independista indeposable indeprehensible indeprivability indeprivable inderivative indescribability indescribable indescribableness indescribably indescript indescriptive indesert indesignate indesirable indestructibility indestructible indestructibleness indestructibly indetectable indeterminable indeterminableness indeterminably indeterminacy indeterminate indeterminately indeterminateness indetermination indeterminative indetermined indeterminism indeterminist indeterministic indevirginate indevoted indevotion indevotional indevout indevoutly indevoutness index indexed indexer indexical indexically indexing indexless indexlessness indexterity India indiadem Indiaman Indian Indiana indianaite Indianan Indianeer Indianesque Indianhood Indianian Indianism Indianist indianite indianization indianize Indic indic indicable indican indicant indicanuria indicate indication indicative indicatively indicator Indicatoridae Indicatorinae indicatory indicatrix indices indicia indicial indicible indicium indicolite indict indictable indictably indictee indicter indiction indictional indictive indictment indictor Indies indiferous indifference indifferency indifferent indifferential indifferentism indifferentist indifferentistic indifferently indigena indigenal indigenate indigence indigency indigene indigeneity Indigenismo indigenist indigenity indigenous indigenously indigenousness indigent indigently indigested indigestedness indigestibility indigestible indigestibleness indigestibly indigestion indigestive indigitamenta indigitate indigitation indign indignance indignancy indignant indignantly indignation indignatory indignify indignity indignly indigo indigoberry Indigofera indigoferous indigoid indigotic indigotin indigotindisulphonic indiguria indimensible indimensional indiminishable indimple indirect indirected indirection indirectly indirectness indirubin indiscernibility indiscernible indiscernibleness indiscernibly indiscerptibility indiscerptible indiscerptibleness indiscerptibly indisciplinable indiscipline indisciplined indiscoverable indiscoverably indiscovered indiscreet indiscreetly indiscreetness indiscrete indiscretely indiscretion indiscretionary indiscriminate indiscriminated indiscriminately indiscriminateness indiscriminating indiscriminatingly indiscrimination indiscriminative indiscriminatively indiscriminatory indiscussable indiscussible indispellable indispensability indispensable indispensableness indispensably indispose indisposed indisposedness indisposition indisputability indisputable indisputableness indisputably indissipable indissociable indissolubility indissoluble indissolubleness indissolubly indissolute indissolvability indissolvable indissolvableness indissolvably indissuadable indissuadably indistinct indistinction indistinctive indistinctively indistinctiveness indistinctly indistinctness indistinguishability indistinguishable indistinguishableness indistinguishably indistinguished indistortable indistributable indisturbable indisturbance indisturbed indite inditement inditer indium indivertible indivertibly individable individua individual individualism individualist individualistic individualistically individuality individualization individualize individualizer individualizingly individually individuate individuation individuative individuator individuity individuum indivinable indivisibility indivisible indivisibleness indivisibly indivision indocibility indocible indocibleness indocile indocility indoctrinate indoctrination indoctrinator indoctrine indoctrinization indoctrinize Indogaea Indogaean indogen indogenide indole indolence indolent indolently indoles indoline Indologian Indologist Indologue Indology indoloid indolyl indomitability indomitable indomitableness indomitably Indone Indonesian indoor indoors indophenin indophenol Indophile Indophilism Indophilist indorsation indorse indoxyl indoxylic indoxylsulphuric indraft indraught indrawal indrawing indrawn indri Indris indubious indubiously indubitable indubitableness indubitably indubitatively induce induced inducedly inducement inducer induciae inducible inducive induct inductance inductee inducteous inductile inductility induction inductional inductionally inductionless inductive inductively inductiveness inductivity inductometer inductophone inductor inductorium inductory inductoscope indue induement indulge indulgeable indulgement indulgence indulgenced indulgency indulgent indulgential indulgentially indulgently indulgentness indulger indulging indulgingly induline indult indulto indument indumentum induna induplicate induplication induplicative indurable indurate induration indurative indurite Indus indusial indusiate indusiated indusiform indusioid indusium industrial industrialism industrialist industrialization industrialize industrially industrialness industrious industriously industriousness industrochemical industry induviae induvial induviate indwell indweller indy indyl indylic inearth inebriacy inebriant inebriate inebriation inebriative inebriety inebrious ineconomic ineconomy inedibility inedible inedited Ineducabilia ineducabilian ineducability ineducable ineducation ineffability ineffable ineffableness ineffably ineffaceability ineffaceable ineffaceably ineffectible ineffectibly ineffective ineffectively ineffectiveness ineffectual ineffectuality ineffectually ineffectualness ineffervescence ineffervescent ineffervescibility ineffervescible inefficacious inefficaciously inefficaciousness inefficacity inefficacy inefficience inefficiency inefficient inefficiently ineffulgent inelaborate inelaborated inelaborately inelastic inelasticate inelasticity inelegance inelegancy inelegant inelegantly ineligibility ineligible ineligibleness ineligibly ineliminable ineloquence ineloquent ineloquently ineluctability ineluctable ineluctably ineludible ineludibly inembryonate inemendable inemotivity inemulous inenarrable inenergetic inenubilable inenucleable inept ineptitude ineptly ineptness inequable inequal inequalitarian inequality inequally inequalness inequation inequiaxial inequicostate inequidistant inequigranular inequilateral inequilibrium inequilobate inequilobed inequipotential inequipotentiality inequitable inequitableness inequitably inequity inequivalent inequivalve inequivalvular ineradicable ineradicableness ineradicably inerasable inerasableness inerasably inerasible Ineri inerm Inermes Inermi Inermia inermous inerrability inerrable inerrableness inerrably inerrancy inerrant inerrantly inerratic inerring inerringly inerroneous inert inertance inertia inertial inertion inertly inertness inerubescent inerudite ineruditely inerudition inescapable inescapableness inescapably inesculent inescutcheon inesite inessential inessentiality inestimability inestimable inestimableness inestimably inestivation inethical ineunt ineuphonious inevadible inevadibly inevaporable inevasible inevidence inevident inevitability inevitable inevitableness inevitably inexact inexacting inexactitude inexactly inexactness inexcellence inexcitability inexcitable inexclusive inexclusively inexcommunicable inexcusability inexcusable inexcusableness inexcusably inexecutable inexecution inexertion inexhausted inexhaustedly inexhaustibility inexhaustible inexhaustibleness inexhaustibly inexhaustive inexhaustively inexigible inexist inexistence inexistency inexistent inexorability inexorable inexorableness inexorably inexpansible inexpansive inexpectancy inexpectant inexpectation inexpected inexpectedly inexpectedness inexpedience inexpediency inexpedient inexpediently inexpensive inexpensively inexpensiveness inexperience inexperienced inexpert inexpertly inexpertness inexpiable inexpiableness inexpiably inexpiate inexplainable inexplicability inexplicable inexplicableness inexplicables inexplicably inexplicit inexplicitly inexplicitness inexplorable inexplosive inexportable inexposable inexposure inexpress inexpressibility inexpressible inexpressibleness inexpressibles inexpressibly inexpressive inexpressively inexpressiveness inexpugnability inexpugnable inexpugnableness inexpugnably inexpungeable inexpungible inextant inextended inextensibility inextensible inextensile inextension inextensional inextensive inexterminable inextinct inextinguishable inextinguishably inextirpable inextirpableness inextricability inextricable inextricableness inextricably Inez inface infall infallibilism infallibilist infallibility infallible infallibleness infallibly infalling infalsificable infame infamiliar infamiliarity infamize infamonize infamous infamously infamousness infamy infancy infand infandous infang infanglement infangthief infant infanta infantado infante infanthood infanticidal infanticide infantile infantilism infantility infantine infantlike infantry infantryman infarct infarctate infarcted infarction infare infatuate infatuatedly infatuation infatuator infaust infeasibility infeasible infeasibleness infect infectant infected infectedness infecter infectible infection infectionist infectious infectiously infectiousness infective infectiveness infectivity infector infectress infectuous infecund infecundity infeed infeft infeftment infelicific infelicitous infelicitously infelicitousness infelicity infelonious infelt infeminine infer inferable inference inferent inferential inferentialism inferentialist inferentially inferior inferiorism inferiority inferiorize inferiorly infern infernal infernalism infernality infernalize infernally infernalry infernalship inferno inferoanterior inferobranchiate inferofrontal inferolateral inferomedian inferoposterior inferrer inferribility inferrible inferringly infertile infertilely infertileness infertility infest infestant infestation infester infestive infestivity infestment infeudation infibulate infibulation inficete infidel infidelic infidelical infidelism infidelistic infidelity infidelize infidelly infield infielder infieldsman infighter infighting infill infilling infilm infilter infiltrate infiltration infiltrative infinitant infinitarily infinitary infinitate infinitation infinite infinitely infiniteness infinitesimal infinitesimalism infinitesimality infinitesimally infinitesimalness infiniteth infinitieth infinitival infinitivally infinitive infinitively infinitize infinitude infinituple infinity infirm infirmarer infirmaress infirmarian infirmary infirmate infirmation infirmative infirmity infirmly infirmness infissile infit infitter infix infixion inflame inflamed inflamedly inflamedness inflamer inflaming inflamingly inflammability inflammable inflammableness inflammably inflammation inflammative inflammatorily inflammatory inflatable inflate inflated inflatedly inflatedness inflater inflatile inflatingly inflation inflationary inflationism inflationist inflative inflatus inflect inflected inflectedness inflection inflectional inflectionally inflectionless inflective inflector inflex inflexed inflexibility inflexible inflexibleness inflexibly inflexive inflict inflictable inflicter infliction inflictive inflood inflorescence inflorescent inflow inflowering influence influenceable influencer influencive influent influential influentiality influentially influenza influenzal influenzic influx influxable influxible influxibly influxion influxionism infold infolder infolding infoldment infoliate inform informable informal informality informalize informally informant information informational informative informatively informatory informed informedly informer informidable informingly informity infortiate infortitude infortunate infortunately infortunateness infortune infra infrabasal infrabestial infrabranchial infrabuccal infracanthal infracaudal infracelestial infracentral infracephalic infraclavicle infraclavicular infraclusion infraconscious infracortical infracostal infracostalis infracotyloid infract infractible infraction infractor infradentary infradiaphragmatic infragenual infraglacial infraglenoid infraglottic infragrant infragular infrahuman infrahyoid infralabial infralapsarian infralapsarianism infralinear infralittoral inframammary inframammillary inframandibular inframarginal inframaxillary inframedian inframercurial inframercurian inframolecular inframontane inframundane infranatural infranaturalism infrangibility infrangible infrangibleness infrangibly infranodal infranuclear infraoccipital infraocclusion infraocular infraoral infraorbital infraordinary infrapapillary infrapatellar infraperipherial infrapose infraposition infraprotein infrapubian infraradular infrared infrarenal infrarenally infrarimal infrascapular infrascapularis infrascientific infraspinal infraspinate infraspinatus infraspinous infrastapedial infrasternal infrastigmatal infrastipular infrastructure infrasutral infratemporal infraterrene infraterritorial infrathoracic infratonsillar infratracheal infratrochanteric infratrochlear infratubal infraturbinal infravaginal infraventral infrequency infrequent infrequently infrigidate infrigidation infrigidative infringe infringement infringer infringible infructiferous infructuose infructuosity infructuous infructuously infrugal infrustrable infrustrably infula infumate infumated infumation infundibular Infundibulata infundibulate infundibuliform infundibulum infuriate infuriately infuriatingly infuriation infuscate infuscation infuse infusedly infuser infusibility infusible infusibleness infusile infusion infusionism infusionist infusive Infusoria infusorial infusorian infusoriform infusorioid infusorium infusory Ing ing Inga Ingaevones Ingaevonic ingallantry ingate ingather ingatherer ingathering ingeldable ingeminate ingemination ingenerability ingenerable ingenerably ingenerate ingenerately ingeneration ingenerative ingeniosity ingenious ingeniously ingeniousness ingenit ingenue ingenuity ingenuous ingenuously ingenuousness Inger ingerminate ingest ingesta ingestible ingestion ingestive Inghamite Inghilois ingiver ingiving ingle inglenook ingleside inglobate inglobe inglorious ingloriously ingloriousness inglutition ingluvial ingluvies ingluviitis ingoing Ingomar ingot ingotman ingraft ingrain ingrained ingrainedly ingrainedness Ingram ingrammaticism ingrandize ingrate ingrateful ingratefully ingratefulness ingrately ingratiate ingratiating ingratiatingly ingratiation ingratiatory ingratitude ingravescent ingravidate ingravidation ingredient ingress ingression ingressive ingressiveness ingross ingrow ingrown ingrownness ingrowth inguen inguinal inguinoabdominal inguinocrural inguinocutaneous inguinodynia inguinolabial inguinoscrotal Inguklimiut ingulf ingulfment ingurgitate ingurgitation Ingush inhabit inhabitability inhabitable inhabitancy inhabitant inhabitation inhabitative inhabitativeness inhabited inhabitedness inhabiter inhabitiveness inhabitress inhalant inhalation inhalator inhale inhalement inhalent inhaler inharmonic inharmonical inharmonious inharmoniously inharmoniousness inharmony inhaul inhauler inhaust inhaustion inhearse inheaven inhere inherence inherency inherent inherently inherit inheritability inheritable inheritableness inheritably inheritage inheritance inheritor inheritress inheritrice inheritrix inhesion inhiate inhibit inhibitable inhibiter inhibition inhibitionist inhibitive inhibitor inhibitory inhomogeneity inhomogeneous inhomogeneously inhospitable inhospitableness inhospitably inhospitality inhuman inhumane inhumanely inhumanism inhumanity inhumanize inhumanly inhumanness inhumate inhumation inhumationist inhume inhumer inhumorous inhumorously Inia inial inidoneity inidoneous Inigo inimicable inimical inimicality inimically inimicalness inimitability inimitable inimitableness inimitably iniome Iniomi iniomous inion iniquitable iniquitably iniquitous iniquitously iniquitousness iniquity inirritability inirritable inirritant inirritative inissuable initial initialer initialist initialize initially initiant initiary initiate initiation initiative initiatively initiator initiatorily initiatory initiatress initiatrix initis initive inject injectable injection injector injelly injudicial injudicially injudicious injudiciously injudiciousness Injun injunct injunction injunctive injunctively injurable injure injured injuredly injuredness injurer injurious injuriously injuriousness injury injustice ink inkberry inkbush inken inker Inkerman inket inkfish inkholder inkhorn inkhornism inkhornist inkhornize inkhornizer inkindle inkiness inkish inkle inkless inklike inkling inkmaker inkmaking inknot inkosi inkpot Inkra inkroot inks inkshed inkslinger inkslinging inkstain inkstand inkstandish inkstone inkweed inkwell inkwood inkwriter inky inlagation inlaid inlaik inlake inland inlander inlandish inlaut inlaw inlawry inlay inlayer inlaying inleague inleak inleakage inlet inlier inlook inlooker inly inlying inmate inmeats inmixture inmost inn innascibility innascible innate innately innateness innatism innative innatural innaturality innaturally inneity inner innerly innermore innermost innermostly innerness innervate innervation innervational innerve inness innest innet innholder inning inninmorite Innisfail innkeeper innless innocence innocency innocent innocently innocentness innocuity innocuous innocuously innocuousness innominable innominables innominata innominate innominatum innovant innovate innovation innovational innovationist innovative innovator innovatory innoxious innoxiously innoxiousness innuendo Innuit innumerability innumerable innumerableness innumerably innumerous innutrient innutrition innutritious innutritive innyard Ino inobedience inobedient inobediently inoblast inobnoxious inobscurable inobservable inobservance inobservancy inobservant inobservantly inobservantness inobservation inobtainable inobtrusive inobtrusively inobtrusiveness inobvious Inocarpus inoccupation Inoceramus inochondritis inochondroma inoculability inoculable inoculant inocular inoculate inoculation inoculative inoculator inoculum inocystoma inocyte Inodes inodorous inodorously inodorousness inoepithelioma inoffending inoffensive inoffensively inoffensiveness inofficial inofficially inofficiosity inofficious inofficiously inofficiousness inogen inogenesis inogenic inogenous inoglia inohymenitic inolith inoma inominous inomyoma inomyositis inomyxoma inone inoneuroma inoperable inoperative inoperativeness inopercular Inoperculata inoperculate inopinable inopinate inopinately inopine inopportune inopportunely inopportuneness inopportunism inopportunist inopportunity inoppressive inoppugnable inopulent inorb inorderly inordinacy inordinary inordinate inordinately inordinateness inorganic inorganical inorganically inorganizable inorganization inorganized inoriginate inornate inosclerosis inoscopy inosculate inosculation inosic inosin inosinic inosite inositol inostensible inostensibly inotropic inower inoxidability inoxidable inoxidizable inoxidize inparabola inpardonable inpatient inpayment inpensioner inphase inpolygon inpolyhedron inport inpour inpush input inquaintance inquartation inquest inquestual inquiet inquietation inquietly inquietness inquietude Inquilinae inquiline inquilinism inquilinity inquilinous inquinate inquination inquirable inquirant inquiration inquire inquirendo inquirent inquirer inquiring inquiringly inquiry inquisite inquisition inquisitional inquisitionist inquisitive inquisitively inquisitiveness inquisitor inquisitorial inquisitorially inquisitorialness inquisitorious inquisitorship inquisitory inquisitress inquisitrix inquisiturient inradius inreality inrigged inrigger inrighted inring inro inroad inroader inroll inrooted inrub inrun inrunning inruption inrush insack insagacity insalivate insalivation insalubrious insalubrity insalutary insalvability insalvable insane insanely insaneness insanify insanitariness insanitary insanitation insanity insapiency insapient insatiability insatiable insatiableness insatiably insatiate insatiated insatiately insatiateness insatiety insatisfaction insatisfactorily insaturable inscenation inscibile inscience inscient inscribable inscribableness inscribe inscriber inscript inscriptible inscription inscriptional inscriptioned inscriptionist inscriptionless inscriptive inscriptively inscriptured inscroll inscrutability inscrutable inscrutableness inscrutables inscrutably insculp insculpture insea inseam insect Insecta insectan insectarium insectary insectean insected insecticidal insecticide insectiferous insectiform insectifuge insectile insectine insection insectival Insectivora insectivore insectivorous insectlike insectmonger insectologer insectologist insectology insectproof insecure insecurely insecureness insecurity insee inseer inselberg inseminate insemination insenescible insensate insensately insensateness insense insensibility insensibilization insensibilize insensibilizer insensible insensibleness insensibly insensitive insensitiveness insensitivity insensuous insentience insentiency insentient inseparability inseparable inseparableness inseparably inseparate inseparately insequent insert insertable inserted inserter insertion insertional insertive inserviceable insessor Insessores insessorial inset insetter inseverable inseverably inshave insheathe inshell inshining inship inshoe inshoot inshore inside insider insidiosity insidious insidiously insidiousness insight insightful insigne insignia insignificance insignificancy insignificant insignificantly insimplicity insincere insincerely insincerity insinking insinuant insinuate insinuating insinuatingly insinuation insinuative insinuatively insinuativeness insinuator insinuatory insinuendo insipid insipidity insipidly insipidness insipience insipient insipiently insist insistence insistency insistent insistently insister insistingly insistive insititious insnare insnarement insnarer insobriety insociability insociable insociableness insociably insocial insocially insofar insolate insolation insole insolence insolency insolent insolently insolentness insolid insolidity insolubility insoluble insolubleness insolubly insolvability insolvable insolvably insolvence insolvency insolvent insomnia insomniac insomnious insomnolence insomnolency insomnolent insomuch insonorous insooth insorb insorbent insouciance insouciant insouciantly insoul inspan inspeak inspect inspectability inspectable inspectingly inspection inspectional inspectioneer inspective inspector inspectoral inspectorate inspectorial inspectorship inspectress inspectrix inspheration insphere inspirability inspirable inspirant inspiration inspirational inspirationalism inspirationally inspirationist inspirative inspirator inspiratory inspiratrix inspire inspired inspiredly inspirer inspiring inspiringly inspirit inspiriter inspiriting inspiritingly inspiritment inspirometer inspissant inspissate inspissation inspissator inspissosis inspoke inspoken inspreith instability instable install installant installation installer installment instance instancy instanding instant instantaneity instantaneous instantaneously instantaneousness instanter instantial instantly instantness instar instate instatement instaurate instauration instaurator instead instealing insteam insteep instellation instep instigant instigate instigatingly instigation instigative instigator instigatrix instill instillation instillator instillatory instiller instillment instinct instinctive instinctively instinctivist instinctivity instinctual instipulate institor institorial institorian institory institute instituter institution institutional institutionalism institutionalist institutionality institutionalization institutionalize institutionally institutionary institutionize institutive institutively institutor institutress institutrix instonement instratified instreaming instrengthen instressed instroke instruct instructed instructedly instructedness instructer instructible instruction instructional instructionary instructive instructively instructiveness instructor instructorship instructress instrument instrumental instrumentalism instrumentalist instrumentality instrumentalize instrumentally instrumentary instrumentate instrumentation instrumentative instrumentist instrumentman insuavity insubduable insubjection insubmergible insubmersible insubmission insubmissive insubordinate insubordinately insubordinateness insubordination insubstantial insubstantiality insubstantiate insubstantiation insubvertible insuccess insuccessful insucken insuetude insufferable insufferableness insufferably insufficience insufficiency insufficient insufficiently insufflate insufflation insufflator insula insulance insulant insular insularism insularity insularize insularly insulary insulate insulated insulating insulation insulator insulin insulize insulse insulsity insult insultable insultant insultation insulter insulting insultingly insultproof insunk insuperability insuperable insuperableness insuperably insupportable insupportableness insupportably insupposable insuppressible insuppressibly insuppressive insurability insurable insurance insurant insure insured insurer insurge insurgence insurgency insurgent insurgentism insurgescence insurmountability insurmountable insurmountableness insurmountably insurpassable insurrect insurrection insurrectional insurrectionally insurrectionary insurrectionism insurrectionist insurrectionize insurrectory insusceptibility insusceptible insusceptibly insusceptive inswamp inswarming insweeping inswell inswept inswing inswinger intabulate intact intactile intactly intactness intagliated intagliation intaglio intagliotype intake intaker intangibility intangible intangibleness intangibly intarissable intarsia intarsiate intarsist intastable intaxable intechnicality integer integrability integrable integral integrality integralization integralize integrally integrand integrant integraph integrate integration integrative integrator integrifolious integrious integriously integripalliate integrity integrodifferential integropallial Integropallialia Integropalliata integropalliate integument integumental integumentary integumentation inteind intellect intellectation intellected intellectible intellection intellective intellectively intellectual intellectualism intellectualist intellectualistic intellectualistically intellectuality intellectualization intellectualize intellectualizer intellectually intellectualness intelligence intelligenced intelligencer intelligency intelligent intelligential intelligently intelligentsia intelligibility intelligible intelligibleness intelligibly intelligize intemerate intemerately intemerateness intemeration intemperable intemperably intemperament intemperance intemperate intemperately intemperateness intemperature intempestive intempestively intempestivity intemporal intemporally intenability intenable intenancy intend intendance intendancy intendant intendantism intendantship intended intendedly intendedness intendence intender intendible intending intendingly intendit intendment intenerate inteneration intenible intensate intensation intensative intense intensely intenseness intensification intensifier intensify intension intensional intensionally intensitive intensity intensive intensively intensiveness intent intention intentional intentionalism intentionality intentionally intentioned intentionless intentive intentively intentiveness intently intentness inter interabsorption interacademic interaccessory interaccuse interacinar interacinous interact interaction interactional interactionism interactionist interactive interactivity interadaptation interadditive interadventual interaffiliation interagency interagent interagglutinate interagglutination interagree interagreement interalar interallied interally interalveolar interambulacral interambulacrum interamnian interangular interanimate interannular interantagonism interantennal interantennary interapophyseal interapplication interarboration interarch interarcualis interarmy interarticular interartistic interarytenoid interassociation interassure interasteroidal interastral interatomic interatrial interattrition interaulic interaural interauricular interavailability interavailable interaxal interaxial interaxillary interaxis interbalance interbanded interbank interbedded interbelligerent interblend interbody interbonding interborough interbourse interbrachial interbrain interbranch interbranchial interbreath interbreed interbrigade interbring interbronchial intercadence intercadent intercalare intercalarily intercalarium intercalary intercalate intercalation intercalative intercalatory intercale intercalm intercanal intercanalicular intercapillary intercardinal intercarotid intercarpal intercarpellary intercarrier intercartilaginous intercaste intercatenated intercausative intercavernous intercede interceder intercellular intercensal intercentral intercentrum intercept intercepter intercepting interception interceptive interceptor interceptress intercerebral intercession intercessional intercessionary intercessionment intercessive intercessor intercessorial intercessory interchaff interchange interchangeability interchangeable interchangeableness interchangeably interchanger interchapter intercharge interchase intercheck interchoke interchondral interchurch Intercidona interciliary intercilium intercircle intercirculate intercirculation intercision intercitizenship intercity intercivic intercivilization interclash interclasp interclass interclavicle interclavicular interclerical intercloud interclub intercoastal intercoccygeal intercoccygean intercohesion intercollege intercollegian intercollegiate intercolline intercolonial intercolonially intercolonization intercolumn intercolumnal intercolumnar intercolumniation intercom intercombat intercombination intercombine intercome intercommission intercommon intercommonable intercommonage intercommoner intercommunal intercommune intercommuner intercommunicability intercommunicable intercommunicate intercommunication intercommunicative intercommunicator intercommunion intercommunity intercompany intercomparable intercompare intercomparison intercomplexity intercomplimentary interconal interconciliary intercondenser intercondylar intercondylic intercondyloid interconfessional interconfound interconnect interconnection intercontinental intercontorted intercontradiction intercontradictory interconversion interconvertibility interconvertible interconvertibly intercooler intercooling intercoracoid intercorporate intercorpuscular intercorrelate intercorrelation intercortical intercosmic intercosmically intercostal intercostally intercostobrachial intercostohumeral intercotylar intercounty intercourse intercoxal intercranial intercreate intercrescence intercrinal intercrop intercross intercrural intercrust intercrystalline intercrystallization intercrystallize intercultural interculture intercurl intercurrence intercurrent intercurrently intercursation intercuspidal intercutaneous intercystic interdash interdebate interdenominational interdental interdentally interdentil interdepartmental interdepartmentally interdepend interdependable interdependence interdependency interdependent interdependently interderivative interdespise interdestructive interdestructiveness interdetermination interdetermine interdevour interdict interdiction interdictive interdictor interdictory interdictum interdifferentiation interdiffuse interdiffusion interdiffusive interdiffusiveness interdigital interdigitate interdigitation interdine interdiscal interdispensation interdistinguish interdistrict interdivision interdome interdorsal interdrink intereat interelectrode interelectrodic interempire interenjoy interentangle interentanglement interepidemic interepimeral interepithelial interequinoctial interessee interest interested interestedly interestedness interester interesting interestingly interestingness interestless interestuarine interface interfacial interfactional interfamily interfascicular interfault interfector interfederation interfemoral interfenestral interfenestration interferant interfere interference interferent interferential interferer interfering interferingly interferingness interferometer interferometry interferric interfertile interfertility interfibrillar interfibrillary interfibrous interfilamentar interfilamentary interfilamentous interfilar interfiltrate interfinger interflange interflashing interflow interfluence interfluent interfluminal interfluous interfluve interfluvial interflux interfold interfoliaceous interfoliar interfoliate interfollicular interforce interfraternal interfraternity interfret interfretted interfriction interfrontal interfruitful interfulgent interfuse interfusion interganglionic intergenerant intergenerating intergeneration intergential intergesture intergilt interglacial interglandular interglobular interglyph intergossip intergovernmental intergradation intergrade intergradient intergraft intergranular intergrapple intergrave intergroupal intergrow intergrown intergrowth intergular intergyral interhabitation interhemal interhemispheric interhostile interhuman interhyal interhybridize interim interimist interimistic interimistical interimistically interimperial interincorporation interindependence interindicate interindividual interinfluence interinhibition interinhibitive interinsert interinsular interinsurance interinsurer interinvolve interionic interior interiority interiorize interiorly interiorness interirrigation interisland interjacence interjacency interjacent interjaculate interjaculatory interjangle interjealousy interject interjection interjectional interjectionalize interjectionally interjectionary interjectionize interjectiveness interjector interjectorily interjectory interjectural interjoin interjoist interjudgment interjunction interkinesis interkinetic interknit interknot interknow interknowledge interlaboratory interlace interlaced interlacedly interlacement interlacery interlacustrine interlaid interlake interlamellar interlamellation interlaminar interlaminate interlamination interlanguage interlap interlapse interlard interlardation interlardment interlatitudinal interlaudation interlay interleaf interleague interleave interleaver interlibel interlibrary interlie interligamentary interligamentous interlight interlimitation interline interlineal interlineally interlinear interlinearily interlinearly interlineary interlineate interlineation interlinement interliner Interlingua interlingual interlinguist interlinguistic interlining interlink interloan interlobar interlobate interlobular interlocal interlocally interlocate interlocation interlock interlocker interlocular interloculus interlocution interlocutive interlocutor interlocutorily interlocutory interlocutress interlocutrice interlocutrix interloop interlope interloper interlot interlucation interlucent interlude interluder interludial interlunar interlunation interlying intermalleolar intermammary intermammillary intermandibular intermanorial intermarginal intermarine intermarriage intermarriageable intermarry intermason intermastoid intermat intermatch intermaxilla intermaxillar intermaxillary intermaze intermeasurable intermeasure intermeddle intermeddlement intermeddler intermeddlesome intermeddlesomeness intermeddling intermeddlingly intermediacy intermediae intermedial intermediary intermediate intermediately intermediateness intermediation intermediator intermediatory intermedium intermedius intermeet intermelt intermembral intermembranous intermeningeal intermenstrual intermenstruum interment intermental intermention intermercurial intermesenterial intermesenteric intermesh intermessage intermessenger intermetacarpal intermetallic intermetameric intermetatarsal intermew intermewed intermewer intermezzo intermigration interminability interminable interminableness interminably interminant interminate intermine intermingle intermingledom interminglement interminister interministerial interministerium intermission intermissive intermit intermitted intermittedly intermittence intermittency intermittent intermittently intermitter intermitting intermittingly intermix intermixedly intermixtly intermixture intermobility intermodification intermodillion intermodulation intermolar intermolecular intermomentary intermontane intermorainic intermotion intermountain intermundane intermundial intermundian intermundium intermunicipal intermunicipality intermural intermuscular intermutation intermutual intermutually intermutule intern internal internality internalization internalize internally internalness internals internarial internasal internation international internationalism internationalist internationality internationalization internationalize internationally interneciary internecinal internecine internecion internecive internee internetted interneural interneuronic internidal internist internment internobasal internodal internode internodial internodian internodium internodular internship internuclear internuncial internunciary internunciatory internuncio internuncioship internuncius internuptial interobjective interoceanic interoceptive interoceptor interocular interoffice interolivary interopercle interopercular interoperculum interoptic interorbital interorbitally interoscillate interosculant interosculate interosculation interosseal interosseous interownership interpage interpalatine interpalpebral interpapillary interparenchymal interparental interparenthetical interparenthetically interparietal interparietale interparliament interparliamentary interparoxysmal interparty interpause interpave interpeal interpectoral interpeduncular interpel interpellant interpellate interpellation interpellator interpenetrable interpenetrant interpenetrate interpenetration interpenetrative interpenetratively interpermeate interpersonal interpervade interpetaloid interpetiolar interpetiolary interphalangeal interphase interphone interpiece interpilaster interpilastering interplacental interplait interplanetary interplant interplanting interplay interplea interplead interpleader interpledge interpleural interplical interplicate interplication interplight interpoint interpolable interpolar interpolary interpolate interpolater interpolation interpolative interpolatively interpolator interpole interpolitical interpolity interpollinate interpolymer interpone interportal interposable interposal interpose interposer interposing interposingly interposition interposure interpour interprater interpressure interpret interpretability interpretable interpretableness interpretably interpretament interpretation interpretational interpretative interpretatively interpreter interpretership interpretive interpretively interpretorial interpretress interprismatic interproduce interprofessional interproglottidal interproportional interprotoplasmic interprovincial interproximal interproximate interpterygoid interpubic interpulmonary interpunct interpunction interpunctuate interpunctuation interpupillary interquarrel interquarter interrace interracial interracialism interradial interradially interradiate interradiation interradium interradius interrailway interramal interramicorn interramification interreceive interreflection interregal interregimental interregional interregna interregnal interregnum interreign interrelate interrelated interrelatedly interrelatedness interrelation interrelationship interreligious interrenal interrenalism interrepellent interrepulsion interrer interresponsibility interresponsible interreticular interreticulation interrex interrhyme interright interriven interroad interrogability interrogable interrogant interrogate interrogatedness interrogatee interrogatingly interrogation interrogational interrogative interrogatively interrogator interrogatorily interrogatory interrogatrix interrogee interroom interrule interrun interrupt interrupted interruptedly interruptedness interrupter interruptible interrupting interruptingly interruption interruptive interruptively interruptor interruptory intersale intersalute interscapilium interscapular interscapulum interscene interscholastic interschool interscience interscribe interscription interseaboard interseamed intersect intersectant intersection intersectional intersegmental interseminal intersentimental interseptal intersertal intersesamoid intersession intersessional interset intersex intersexual intersexualism intersexuality intershade intershifting intershock intershoot intershop intersidereal intersituate intersocial intersocietal intersociety intersole intersolubility intersoluble intersomnial intersomnious intersonant intersow interspace interspatial interspatially interspeaker interspecial interspecific interspersal intersperse interspersedly interspersion interspheral intersphere interspicular interspinal interspinalis interspinous interspiral interspiration intersporal intersprinkle intersqueeze interstadial interstage interstaminal interstapedial interstate interstation interstellar interstellary intersterile intersterility intersternal interstice intersticed interstimulate interstimulation interstitial interstitially interstitious interstratification interstratify interstreak interstream interstreet interstrial interstriation interstrive intersubjective intersubsistence intersubstitution intersuperciliary intersusceptation intersystem intersystematical intertalk intertangle intertanglement intertarsal interteam intertentacular intertergal interterminal interterritorial intertessellation intertexture interthing interthreaded interthronging intertidal intertie intertill intertillage intertinge intertissued intertone intertongue intertonic intertouch intertown intertrabecular intertrace intertrade intertrading intertraffic intertragian intertransformability intertransformable intertransmissible intertransmission intertranspicuous intertransversal intertransversalis intertransversary intertransverse intertrappean intertribal intertriginous intertriglyph intertrigo intertrinitarian intertrochanteric intertropic intertropical intertropics intertrude intertuberal intertubercular intertubular intertwin intertwine intertwinement intertwining intertwiningly intertwist intertwistingly Intertype interungular interungulate interunion interuniversity interurban interureteric intervaginal interval intervale intervalley intervallic intervallum intervalvular intervarietal intervary intervascular intervein interveinal intervenant intervene intervener intervenience interveniency intervenient intervenium intervention interventional interventionism interventionist interventive interventor interventral interventralia interventricular intervenular interverbal interversion intervert intervertebra intervertebral intervertebrally intervesicular interview interviewable interviewee interviewer intervillous intervisibility intervisible intervisit intervisitation intervital intervocal intervocalic intervolute intervolution intervolve interwar interweave interweavement interweaver interweaving interweavingly interwed interweld interwhiff interwhile interwhistle interwind interwish interword interwork interworks interworld interworry interwound interwove interwoven interwovenly interwrap interwreathe interwrought interxylary interzonal interzone interzooecial interzygapophysial intestable intestacy intestate intestation intestinal intestinally intestine intestineness intestiniform intestinovesical intext intextine intexture inthrall inthrallment inthrong inthronistic inthronization inthronize inthrow inthrust intil intima intimacy intimal intimate intimately intimateness intimater intimation intimidate intimidation intimidator intimidatory intimidity intimity intinction intine intitule into intoed intolerability intolerable intolerableness intolerably intolerance intolerancy intolerant intolerantly intolerantness intolerated intolerating intoleration intonable intonate intonation intonator intone intonement intoner intoothed intorsion intort intortillage intown intoxation intoxicable intoxicant intoxicate intoxicated intoxicatedly intoxicatedness intoxicating intoxicatingly intoxication intoxicative intoxicator intrabiontic intrabranchial intrabred intrabronchial intrabuccal intracalicular intracanalicular intracanonical intracapsular intracardiac intracardial intracarpal intracarpellary intracartilaginous intracellular intracellularly intracephalic intracerebellar intracerebral intracerebrally intracervical intrachordal intracistern intracity intraclitelline intracloacal intracoastal intracoelomic intracolic intracollegiate intracommunication intracompany intracontinental intracorporeal intracorpuscular intracortical intracosmic intracosmical intracosmically intracostal intracranial intracranially intractability intractable intractableness intractably intractile intracutaneous intracystic intrada intradepartmental intradermal intradermally intradermic intradermically intradermo intradistrict intradivisional intrados intraduodenal intradural intraecclesiastical intraepiphyseal intraepithelial intrafactory intrafascicular intrafissural intrafistular intrafoliaceous intraformational intrafusal intragastric intragemmal intraglacial intraglandular intraglobular intragroup intragroupal intragyral intrahepatic intrahyoid intraimperial intrait intrajugular intralamellar intralaryngeal intralaryngeally intraleukocytic intraligamentary intraligamentous intralingual intralobar intralobular intralocular intralogical intralumbar intramammary intramarginal intramastoid intramatrical intramatrically intramedullary intramembranous intrameningeal intramental intrametropolitan intramolecular intramontane intramorainic intramundane intramural intramuralism intramuscular intramuscularly intramyocardial intranarial intranasal intranatal intranational intraneous intraneural intranidal intranquil intranquillity intranscalency intranscalent intransferable intransformable intransfusible intransgressible intransient intransigency intransigent intransigentism intransigentist intransigently intransitable intransitive intransitively intransitiveness intransitivity intranslatable intransmissible intransmutability intransmutable intransparency intransparent intrant intranuclear intraoctave intraocular intraoral intraorbital intraorganization intraossal intraosseous intraosteal intraovarian intrapair intraparenchymatous intraparietal intraparochial intraparty intrapelvic intrapericardiac intrapericardial intraperineal intraperiosteal intraperitoneal intraperitoneally intrapetiolar intraphilosophic intrapial intraplacental intraplant intrapleural intrapolar intrapontine intraprostatic intraprotoplasmic intrapsychic intrapsychical intrapsychically intrapulmonary intrapyretic intrarachidian intrarectal intrarelation intrarenal intraretinal intrarhachidian intraschool intrascrotal intrasegmental intraselection intrasellar intraseminal intraseptal intraserous intrashop intraspecific intraspinal intrastate intrastromal intrasusception intrasynovial intratarsal intratelluric intraterritorial intratesticular intrathecal intrathoracic intrathyroid intratomic intratonsillar intratrabecular intratracheal intratracheally intratropical intratubal intratubular intratympanic intravaginal intravalvular intravasation intravascular intravenous intravenously intraventricular intraverbal intraversable intravertebral intravertebrally intravesical intravital intravitelline intravitreous intraxylary intreat intrench intrenchant intrencher intrenchment intrepid intrepidity intrepidly intrepidness intricacy intricate intricately intricateness intrication intrigant intrigue intrigueproof intriguer intriguery intriguess intriguing intriguingly intrine intrinse intrinsic intrinsical intrinsicality intrinsically intrinsicalness introactive introceptive introconversion introconvertibility introconvertible introdden introduce introducee introducement introducer introducible introduction introductive introductively introductor introductorily introductoriness introductory introductress introflex introflexion introgression introgressive introinflection introit introitus introject introjection introjective intromissibility intromissible intromission intromissive intromit intromittence intromittent intromitter intropression intropulsive introreception introrsal introrse introrsely introsensible introsentient introspect introspectable introspection introspectional introspectionism introspectionist introspective introspectively introspectiveness introspectivism introspectivist introspector introsuction introsuscept introsusception introthoracic introtraction introvenient introverse introversibility introversible introversion introversive introversively introvert introverted introvertive introvision introvolution intrudance intrude intruder intruding intrudingly intrudress intruse intrusion intrusional intrusionism intrusionist intrusive intrusively intrusiveness intrust intubate intubation intubationist intubator intube intue intuent intuicity intuit intuitable intuition intuitional intuitionalism intuitionalist intuitionally intuitionism intuitionist intuitionistic intuitionless intuitive intuitively intuitiveness intuitivism intuitivist intumesce intumescence intumescent inturbidate inturn inturned inturning intussuscept intussusception intussusceptive intwist inula inulaceous inulase inulin inuloid inumbrate inumbration inunct inunction inunctum inunctuosity inunctuous inundable inundant inundate inundation inundator inundatory inunderstandable inurbane inurbanely inurbaneness inurbanity inure inured inuredness inurement inurn inusitate inusitateness inusitation inustion inutile inutilely inutility inutilized inutterable invaccinate invaccination invadable invade invader invaginable invaginate invagination invalescence invalid invalidate invalidation invalidator invalidcy invalidhood invalidish invalidism invalidity invalidly invalidness invalidship invalorous invaluable invaluableness invaluably invalued Invar invariability invariable invariableness invariably invariance invariancy invariant invariantive invariantively invariantly invaried invasion invasionist invasive invecked invected invection invective invectively invectiveness invectivist invector inveigh inveigher inveigle inveiglement inveigler inveil invein invendibility invendible invendibleness invenient invent inventable inventary inventer inventful inventibility inventible inventibleness invention inventional inventionless inventive inventively inventiveness inventor inventoriable inventorial inventorially inventory inventress inventurous inveracious inveracity inverisimilitude inverity inverminate invermination invernacular Inverness inversable inversatile inverse inversed inversedly inversely inversion inversionist inversive invert invertase invertebracy invertebral Invertebrata invertebrate invertebrated inverted invertedly invertend inverter invertibility invertible invertile invertin invertive invertor invest investable investible investigable investigatable investigate investigating investigatingly investigation investigational investigative investigator investigatorial investigatory investitive investitor investiture investment investor inveteracy inveterate inveterately inveterateness inviability invictive invidious invidiously invidiousness invigilance invigilancy invigilation invigilator invigor invigorant invigorate invigorating invigoratingly invigoratingness invigoration invigorative invigoratively invigorator invinate invination invincibility invincible invincibleness invincibly inviolability inviolable inviolableness inviolably inviolacy inviolate inviolated inviolately inviolateness invirile invirility invirtuate inviscate inviscation inviscid inviscidity invised invisibility invisible invisibleness invisibly invitable invital invitant invitation invitational invitatory invite invitee invitement inviter invitiate inviting invitingly invitingness invitress invitrifiable invivid invocable invocant invocate invocation invocative invocator invocatory invoice invoke invoker involatile involatility involucel involucellate involucellated involucral involucrate involucre involucred involucriform involucrum involuntarily involuntariness involuntary involute involuted involutedly involutely involution involutional involutionary involutorial involutory involve involved involvedly involvedness involvement involvent involver invulnerability invulnerable invulnerableness invulnerably invultuation inwale inwall inwandering inward inwardly inwardness inwards inweave inwedged inweed inweight inwick inwind inwit inwith inwood inwork inworn inwound inwoven inwrap inwrapment inwreathe inwrit inwrought inyoite inyoke Io io Iodamoeba iodate iodation iodhydrate iodhydric iodhydrin iodic iodide iodiferous iodinate iodination iodine iodinium iodinophil iodinophilic iodinophilous iodism iodite iodization iodize iodizer iodo iodobehenate iodobenzene iodobromite iodocasein iodochloride iodochromate iodocresol iododerma iodoethane iodoform iodogallicin iodohydrate iodohydric iodohydrin iodol iodomercurate iodomercuriate iodomethane iodometric iodometrical iodometry iodonium iodopsin iodoso iodosobenzene iodospongin iodotannic iodotherapy iodothyrin iodous iodoxy iodoxybenzene iodyrite iolite ion Ione Ioni Ionian Ionic ionic Ionicism Ionicization Ionicize Ionidium Ionism Ionist ionium ionizable Ionization ionization Ionize ionize ionizer ionogen ionogenic ionone Ionornis ionosphere ionospheric Ionoxalis iontophoresis Ioskeha iota iotacism iotacismus iotacist iotization iotize Iowa Iowan Ipalnemohuani ipecac ipecacuanha ipecacuanhic Iphimedia Iphis ipid Ipidae ipil ipomea Ipomoea ipomoein ipseand ipsedixitish ipsedixitism ipsedixitist ipseity ipsilateral Ira iracund iracundity iracundulous irade Iran Irani Iranian Iranic Iranism Iranist Iranize Iraq Iraqi Iraqian irascent irascibility irascible irascibleness irascibly irate irately ire ireful irefully irefulness Irelander ireless Irena irenarch Irene irene irenic irenical irenically irenicism irenicist irenicon irenics irenicum Iresine Irgun Irgunist irian Iriartea Iriarteaceae Iricism Iricize irid Iridaceae iridaceous iridadenosis iridal iridalgia iridate iridauxesis iridectome iridectomize iridectomy iridectropium iridemia iridencleisis iridentropium irideous irideremia irides iridesce iridescence iridescency iridescent iridescently iridial iridian iridiate iridic iridical iridin iridine iridiocyte iridiophore iridioplatinum iridious iridite iridium iridization iridize iridoavulsion iridocapsulitis iridocele iridoceratitic iridochoroiditis iridocoloboma iridoconstrictor iridocyclitis iridocyte iridodesis iridodiagnosis iridodialysis iridodonesis iridokinesia iridomalacia iridomotor Iridomyrmex iridoncus iridoparalysis iridophore iridoplegia iridoptosis iridopupillary iridorhexis iridosclerotomy iridosmine iridosmium iridotasis iridotome iridotomy iris irisated irisation iriscope irised Irish Irisher Irishian Irishism Irishize Irishly Irishman Irishness Irishry Irishwoman Irishy irisin irislike irisroot iritic iritis irk irksome irksomely irksomeness Irma Iroha irok iroko iron ironback ironbark ironbound ironbush ironclad irone ironer ironfisted ironflower ironhanded ironhandedly ironhandedness ironhard ironhead ironheaded ironhearted ironheartedly ironheartedness ironical ironically ironicalness ironice ironish ironism ironist ironize ironless ironlike ironly ironmaker ironmaking ironman ironmaster ironmonger ironmongering ironmongery ironness ironshod ironshot ironside ironsided ironsides ironsmith ironstone ironware ironweed ironwood ironwork ironworked ironworker ironworking ironworks ironwort irony Iroquoian Iroquois Irpex irradiance irradiancy irradiant irradiate irradiated irradiatingly irradiation irradiative irradiator irradicable irradicate irrarefiable irrationability irrationable irrationably irrational irrationalism irrationalist irrationalistic irrationality irrationalize irrationally irrationalness irreality irrealizable irrebuttable irreceptive irreceptivity irreciprocal irreciprocity irreclaimability irreclaimable irreclaimableness irreclaimably irreclaimed irrecognition irrecognizability irrecognizable irrecognizably irrecognizant irrecollection irreconcilability irreconcilable irreconcilableness irreconcilably irreconcile irreconcilement irreconciliability irreconciliable irreconciliableness irreconciliably irreconciliation irrecordable irrecoverable irrecoverableness irrecoverably irrecusable irrecusably irredeemability irredeemable irredeemableness irredeemably irredeemed irredenta irredential Irredentism Irredentist irredressibility irredressible irredressibly irreducibility irreducible irreducibleness irreducibly irreductibility irreductible irreduction irreferable irreflection irreflective irreflectively irreflectiveness irreflexive irreformability irreformable irrefragability irrefragable irrefragableness irrefragably irrefrangibility irrefrangible irrefrangibleness irrefrangibly irrefusable irrefutability irrefutable irrefutableness irrefutably irregardless irregeneracy irregenerate irregeneration irregular irregularism irregularist irregularity irregularize irregularly irregularness irregulate irregulated irregulation irrelate irrelated irrelation irrelative irrelatively irrelativeness irrelevance irrelevancy irrelevant irrelevantly irreliability irrelievable irreligion irreligionism irreligionist irreligionize irreligiosity irreligious irreligiously irreligiousness irreluctant irremeable irremeably irremediable irremediableness irremediably irrememberable irremissibility irremissible irremissibleness irremissibly irremission irremissive irremovability irremovable irremovableness irremovably irremunerable irrenderable irrenewable irrenunciable irrepair irrepairable irreparability irreparable irreparableness irreparably irrepassable irrepealability irrepealable irrepealableness irrepealably irrepentance irrepentant irrepentantly irreplaceable irreplaceably irrepleviable irreplevisable irreportable irreprehensible irreprehensibleness irreprehensibly irrepresentable irrepresentableness irrepressibility irrepressible irrepressibleness irrepressibly irrepressive irreproachability irreproachable irreproachableness irreproachably irreproducible irreproductive irreprovable irreprovableness irreprovably irreptitious irrepublican irresilient irresistance irresistibility irresistible irresistibleness irresistibly irresoluble irresolubleness irresolute irresolutely irresoluteness irresolution irresolvability irresolvable irresolvableness irresolved irresolvedly irresonance irresonant irrespectability irrespectable irrespectful irrespective irrespectively irrespirable irrespondence irresponsibility irresponsible irresponsibleness irresponsibly irresponsive irresponsiveness irrestrainable irrestrainably irrestrictive irresultive irresuscitable irresuscitably irretention irretentive irretentiveness irreticence irreticent irretraceable irretraceably irretractable irretractile irretrievability irretrievable irretrievableness irretrievably irrevealable irrevealably irreverence irreverend irreverendly irreverent irreverential irreverentialism irreverentially irreverently irreversibility irreversible irreversibleness irreversibly irrevertible irreviewable irrevisable irrevocability irrevocable irrevocableness irrevocably irrevoluble irrigable irrigably irrigant irrigate irrigation irrigational irrigationist irrigative irrigator irrigatorial irrigatory irriguous irriguousness irrision irrisor Irrisoridae irrisory irritability irritable irritableness irritably irritament irritancy irritant irritate irritatedly irritating irritatingly irritation irritative irritativeness irritator irritatory Irritila irritomotile irritomotility irrorate irrotational irrotationally irrubrical irrupt irruptible irruption irruptive irruptively Irvingesque Irvingiana Irvingism Irvingite is Isaac Isabel isabelina isabelita Isabella Isabelline isabnormal isaconitine isacoustic isadelphous Isadora isagoge isagogic isagogical isagogically isagogics isagon Isaiah Isaian isallobar isallotherm isamine Isander isandrous isanemone isanomal isanomalous isanthous isapostolic Isaria isarioid isatate isatic isatide isatin isatinic Isatis isatogen isatogenic Isaurian Isawa isazoxy isba Iscariot Iscariotic Iscariotical Iscariotism ischemia ischemic ischiac ischiadic ischiadicus ischial ischialgia ischialgic ischiatic ischidrosis ischioanal ischiobulbar ischiocapsular ischiocaudal ischiocavernosus ischiocavernous ischiocele ischiocerite ischiococcygeal ischiofemoral ischiofibular ischioiliac ischioneuralgia ischioperineal ischiopodite ischiopubic ischiopubis ischiorectal ischiorrhogic ischiosacral ischiotibial ischiovaginal ischiovertebral ischium ischocholia ischuretic ischuria ischury Ischyodus Isegrim isenergic isentropic isepiptesial isepiptesis iserine iserite isethionate isethionic Iseum Isfahan Ishmael Ishmaelite Ishmaelitic Ishmaelitish Ishmaelitism ishpingo ishshakku Isiac Isiacal Isidae isidiiferous isidioid isidiophorous isidiose isidium isidoid Isidore Isidorian Isidoric Isinai isindazole isinglass Isis Islam Islamic Islamism Islamist Islamistic Islamite Islamitic Islamitish Islamization Islamize island islander islandhood islandic islandish islandless islandlike islandman islandress islandry islandy islay isle isleless islesman islet Isleta isleted isleward islot ism Ismaelism Ismaelite Ismaelitic Ismaelitical Ismaelitish Ismaili Ismailian Ismailite ismal ismatic ismatical ismaticalness ismdom ismy Isnardia iso isoabnormal isoagglutination isoagglutinative isoagglutinin isoagglutinogen isoalantolactone isoallyl isoamarine isoamide isoamyl isoamylamine isoamylene isoamylethyl isoamylidene isoantibody isoantigen isoapiole isoasparagine isoaurore isobar isobarbaloin isobarbituric isobare isobaric isobarism isobarometric isobase isobath isobathic isobathytherm isobathythermal isobathythermic isobenzofuran isobilateral isobilianic isobiogenetic isoborneol isobornyl isobront isobronton isobutane isobutyl isobutylene isobutyraldehyde isobutyrate isobutyric isobutyryl isocamphor isocamphoric isocaproic isocarbostyril Isocardia Isocardiidae isocarpic isocarpous isocellular isocephalic isocephalism isocephalous isocephaly isocercal isocercy isochasm isochasmic isocheim isocheimal isocheimenal isocheimic isocheimonal isochlor isochlorophyll isochlorophyllin isocholanic isocholesterin isocholesterol isochor isochoric isochromatic isochronal isochronally isochrone isochronic isochronical isochronism isochronize isochronon isochronous isochronously isochroous isocinchomeronic isocinchonine isocitric isoclasite isoclimatic isoclinal isocline isoclinic isocodeine isocola isocolic isocolon isocoria isocorybulbin isocorybulbine isocorydine isocoumarin isocracy isocrat isocratic isocreosol isocrotonic isocrymal isocryme isocrymic isocyanate isocyanic isocyanide isocyanine isocyano isocyanogen isocyanurate isocyanuric isocyclic isocymene isocytic isodactylism isodactylous isodiabatic isodialuric isodiametric isodiametrical isodiazo isodiazotate isodimorphic isodimorphism isodimorphous isodomic isodomous isodomum isodont isodontous isodrome isodulcite isodurene isodynamia isodynamic isodynamical isoelectric isoelectrically isoelectronic isoelemicin isoemodin isoenergetic isoerucic Isoetaceae Isoetales Isoetes isoeugenol isoflavone isoflor isogamete isogametic isogametism isogamic isogamous isogamy isogen isogenesis isogenetic isogenic isogenotype isogenotypic isogenous isogeny isogeotherm isogeothermal isogeothermic isogloss isoglossal isognathism isognathous isogon isogonal isogonality isogonally isogonic isogoniostat isogonism isograft isogram isograph isographic isographical isographically isography isogynous isohaline isohalsine isohel isohemopyrrole isoheptane isohesperidin isohexyl isohydric isohydrocyanic isohydrosorbic isohyet isohyetal isoimmune isoimmunity isoimmunization isoimmunize isoindazole isoindigotin isoindole isoionone isokeraunic isokeraunographic isokeraunophonic Isokontae isokontan isokurtic isolability isolable isolapachol isolate isolated isolatedly isolating isolation isolationism isolationist isolative Isolde isolecithal isoleucine isolichenin isolinolenic isologous isologue isology Isoloma isolysin isolysis isomagnetic isomaltose isomastigate isomelamine isomenthone isomer Isomera isomere isomeric isomerical isomerically isomeride isomerism isomerization isomerize isomeromorphism isomerous isomery isometric isometrical isometrically isometrograph isometropia isometry isomorph isomorphic isomorphism isomorphous Isomyaria isomyarian isoneph isonephelic isonergic isonicotinic isonitramine isonitrile isonitroso isonomic isonomous isonomy isonuclear isonym isonymic isonymy isooleic isoosmosis isopachous isopag isoparaffin isopectic isopelletierin isopelletierine isopentane isoperimeter isoperimetric isoperimetrical isoperimetry isopetalous isophanal isophane isophasal isophene isophenomenal isophoria isophorone isophthalic isophthalyl isophyllous isophylly isopicramic isopiestic isopiestically isopilocarpine isoplere isopleth Isopleura isopleural isopleuran isopleurous isopod Isopoda isopodan isopodiform isopodimorphous isopodous isopogonous isopolite isopolitical isopolity isopoly isoprene isopropenyl isopropyl isopropylacetic isopropylamine isopsephic isopsephism Isoptera isopterous isoptic isopulegone isopurpurin isopycnic isopyre isopyromucic isopyrrole isoquercitrin isoquinine isoquinoline isorcinol isorhamnose isorhodeose isorithm isorosindone isorrhythmic isorropic isosaccharic isosaccharin isoscele isosceles isoscope isoseismal isoseismic isoseismical isoseist isoserine isosmotic Isospondyli isospondylous isospore isosporic isosporous isospory isostasist isostasy isostatic isostatical isostatically isostemonous isostemony isostere isosteric isosterism isostrychnine isosuccinic isosulphide isosulphocyanate isosulphocyanic isosultam isotac isoteles isotely isotheral isothere isotherm isothermal isothermally isothermic isothermical isothermobath isothermobathic isothermous isotherombrose isothiocyanates isothiocyanic isothiocyano isothujone isotimal isotome isotomous isotonia isotonic isotonicity isotony isotope isotopic isotopism isotopy isotrehalose Isotria isotrimorphic isotrimorphism isotrimorphous isotron isotrope isotropic isotropism isotropous isotropy isotype isotypic isotypical isovalerate isovalerianate isovalerianic isovaleric isovalerone isovaline isovanillic isovoluminal isoxanthine isoxazine isoxazole isoxime isoxylene isoyohimbine isozooid ispaghul ispravnik Israel Israeli Israelite Israeliteship Israelitic Israelitish Israelitism Israelitize issanguila Issedoi Issedones issei issite issuable issuably issuance issuant issue issueless issuer issuing ist isthmi Isthmia isthmial isthmian isthmiate isthmic isthmoid isthmus istiophorid Istiophoridae Istiophorus istle istoke Istrian Istvaeones isuret isuretine Isuridae isuroid Isurus Iswara it Ita itabirite itacism itacist itacistic itacolumite itaconate itaconic Itala Itali Italian Italianate Italianately Italianation Italianesque Italianish Italianism Italianist Italianity Italianization Italianize Italianizer Italianly Italic Italical Italically Italican Italicanist Italici Italicism italicization italicize italics Italiote italite Italomania Italon Italophile itamalate itamalic itatartaric itatartrate Itaves itch itchiness itching itchingly itchless itchproof itchreed itchweed itchy itcze Itea Iteaceae Itelmes item iteming itemization itemize itemizer itemy Iten Itenean iter iterable iterance iterancy iterant iterate iteration iterative iteratively iterativeness Ithaca Ithacan Ithacensian ithagine Ithaginis ither Ithiel ithomiid Ithomiidae Ithomiinae ithyphallic Ithyphallus ithyphyllous itineracy itinerancy itinerant itinerantly itinerarian Itinerarium itinerary itinerate itineration itmo Ito Itoism Itoist Itoland Itonama Itonaman Itonia itonidid Itonididae itoubou its itself Ituraean iturite Itylus Itys Itza itzebu iva Ivan ivied ivin ivoried ivorine ivoriness ivorist ivory ivorylike ivorytype ivorywood ivy ivybells ivyberry ivyflower ivylike ivyweed ivywood ivywort iwa iwaiwa iwis Ixia Ixiaceae Ixiama Ixil Ixion Ixionian Ixodes ixodian ixodic ixodid Ixodidae Ixora iyo Izar izar izard Izcateco Izdubar izle izote iztle izzard J j Jaalin jab Jabarite jabbed jabber jabberer jabbering jabberingly jabberment Jabberwock jabberwockian Jabberwocky jabbing jabbingly jabble jabers jabia jabiru jaborandi jaborine jabot jaboticaba jabul jacal Jacaltec Jacalteca jacamar Jacamaralcyon jacameropine Jacamerops jacami jacamin Jacana jacana Jacanidae Jacaranda jacare jacate jacchus jacent jacinth jacinthe jack jackal jackanapes jackanapish jackaroo jackass jackassery jackassification jackassism jackassness jackbird jackbox jackboy jackdaw jackeen jacker jacket jacketed jacketing jacketless jacketwise jackety jackfish jackhammer jackknife jackleg jackman jacko jackpudding jackpuddinghood jackrod jacksaw jackscrew jackshaft jackshay jacksnipe Jackson Jacksonia Jacksonian Jacksonite jackstay jackstone jackstraw jacktan jackweed jackwood Jacky Jacob jacobaea jacobaean Jacobean Jacobian Jacobic Jacobin Jacobinia Jacobinic Jacobinical Jacobinically Jacobinism Jacobinization Jacobinize Jacobite Jacobitely Jacobitiana Jacobitic Jacobitical Jacobitically Jacobitish Jacobitishly Jacobitism jacobsite jacobus jacoby jaconet Jacqueminot jactance jactancy jactant jactation jactitate jactitation jacu jacuaru jaculate jaculation jaculative jaculator jaculatorial jaculatory jaculiferous Jacunda jacutinga jadder jade jaded jadedly jadedness jadeite jadery jadesheen jadeship jadestone jadish jadishly jadishness jady jaeger jag Jaga Jagannath Jagannatha jagat Jagatai Jagataic jager jagged jaggedly jaggedness jagger jaggery jaggy jagir jagirdar jagla jagless jagong jagrata jagua jaguar jaguarete Jahve Jahvist Jahvistic jail jailage jailbird jaildom jailer jaileress jailering jailership jailhouse jailish jailkeeper jaillike jailmate jailward jailyard Jain Jaina Jainism Jainist Jaipuri jajman Jake jake jakes jako Jakun Jalalaean jalap jalapa jalapin jalkar jalloped jalopy jalouse jalousie jalousied jalpaite Jam jam jama Jamaica Jamaican jaman jamb jambalaya jambeau jambo jambolan jambone jambool jamboree Jambos jambosa jambstone jamdani James Jamesian Jamesina jamesonite jami Jamie jamlike jammedness jammer jammy Jamnia jampan jampani jamrosade jamwood janapa janapan Jane jane Janet jangada Janghey jangkar jangle jangler jangly Janice janiceps Janiculan Janiculum Janiform janissary janitor janitorial janitorship janitress janitrix Janizarian Janizary jank janker jann jannock Jansenism Jansenist Jansenistic Jansenistical Jansenize Janthina Janthinidae jantu janua Januarius January Janus Januslike jaob Jap jap japaconine japaconitine Japan japan Japanee Japanese Japanesque Japanesquely Japanesquery Japanesy Japanicize Japanism Japanization Japanize japanned Japanner japanner japannery Japannish Japanolatry Japanologist Japanology Japanophile Japanophobe Japanophobia jape japer japery Japetus Japheth Japhetic Japhetide Japhetite japing japingly japish japishly japishness Japonic japonica Japonically Japonicize Japonism Japonize Japonizer Japygidae japygoid Japyx Jaqueline Jaquesian jaquima jar jara jaragua jararaca jararacussu jarbird jarble jarbot jardiniere Jared jarfly jarful jarg jargon jargonal jargoneer jargonelle jargoner jargonesque jargonic jargonish jargonist jargonistic jargonium jargonization jargonize jarkman jarl jarldom jarless jarlship jarnut jarool jarosite jarra jarrah jarring jarringly jarringness jarry jarvey jasey jaseyed Jasione Jasminaceae jasmine jasmined jasminewood Jasminum jasmone Jason jaspachate jaspagate Jasper jasper jasperated jaspered jasperize jasperoid jaspery jaspidean jaspideous jaspilite jaspis jaspoid jasponyx jaspopal jass jassid Jassidae jassoid Jat jatamansi Jateorhiza jateorhizine jatha jati Jatki Jatni jato Jatropha jatrophic jatrorrhizine Jatulian jaudie jauk jaun jaunce jaunder jaundice jaundiceroot jaunt jauntie jauntily jauntiness jauntingly jaunty jaup Java Javahai javali Javan Javanee Javanese javelin javelina javeline javelineer javer Javitero jaw jawab jawbation jawbone jawbreaker jawbreaking jawbreakingly jawed jawfall jawfallen jawfish jawfoot jawfooted jawless jawsmith jawy jay jayhawk jayhawker jaypie jaywalk jaywalker jazerant Jazyges jazz jazzer jazzily jazziness jazzy jealous jealously jealousness jealousy Jeames Jean jean Jeanie Jeanne Jeannette Jeanpaulia jeans Jebus Jebusi Jebusite Jebusitic Jebusitical Jebusitish jecoral jecorin jecorize jed jedcock jedding jeddock jeel jeep jeer jeerer jeering jeeringly jeerproof jeery jeewhillijers jeewhillikens jeff jefferisite Jeffersonia Jeffersonian Jeffersonianism jeffersonite Jehovah Jehovic Jehovism Jehovist Jehovistic jehu jehup jejunal jejunator jejune jejunely jejuneness jejunitis jejunity jejunoduodenal jejunoileitis jejunostomy jejunotomy jejunum jelab jelerang jelick jell jellica jellico jellied jelliedness jellification jellify jellily jelloid jelly jellydom jellyfish jellyleaf jellylike jelutong Jem jemadar Jemez Jemima jemmily jemminess Jemmy jemmy jenkin jenna jennerization jennerize jennet jenneting Jennie jennier Jennifer Jenny jenny Jenson jentacular jeofail jeopard jeoparder jeopardize jeopardous jeopardously jeopardousness jeopardy jequirity Jerahmeel Jerahmeelites jerboa jereed jeremejevite jeremiad Jeremiah Jeremian Jeremianic Jeremias Jeremy jerez jerib jerk jerker jerkily jerkin jerkined jerkiness jerkingly jerkish jerksome jerkwater jerky jerl jerm jermonal Jeroboam Jerome Jeromian Jeronymite jerque jerquer jerry jerryism Jersey jersey Jerseyan jerseyed Jerseyite Jerseyman jert Jerusalem jervia jervina jervine jess jessakeed jessamine jessamy jessant Jesse Jessean jessed Jessica Jessie jessur jest jestbook jestee jester jestful jesting jestingly jestingstock jestmonger jestproof jestwise jestword Jesu Jesuate Jesuit Jesuited Jesuitess Jesuitic Jesuitical Jesuitically Jesuitish Jesuitism Jesuitist Jesuitize Jesuitocracy Jesuitry Jesus jet jetbead jete Jethro Jethronian jetsam jettage jetted jetter jettied jettiness jettingly jettison jetton jetty jettyhead jettywise jetware Jew jewbird jewbush Jewdom jewel jeweler jewelhouse jeweling jewelless jewellike jewelry jewelsmith jewelweed jewely Jewess jewfish Jewhood Jewish Jewishly Jewishness Jewism Jewless Jewlike Jewling Jewry Jewship Jewstone Jewy jezail Jezebel Jezebelian Jezebelish jezekite jeziah Jezreelite jharal jheel jhool jhow Jhuria jib jibbah jibber jibbings jibby jibe jibhead jibi jibman jiboa jibstay jicama Jicaque Jicaquean jicara Jicarilla jiff jiffle jiffy jig jigamaree jigger jiggerer jiggerman jiggers jigget jiggety jigginess jiggish jiggle jiggly jiggumbob jiggy jiglike jigman jihad jikungu jillet jillflirt jilt jiltee jilter jiltish Jim jimbang jimberjaw jimberjawed jimjam jimmy jimp jimply jimpness jimpricute jimsedge jina jincamas Jincan jing jingal jingbang jingle jingled jinglejangle jingler jinglet jingling jinglingly jingly jingo jingodom jingoish jingoism jingoist jingoistic jinja jinjili jink jinker jinket jinkle jinks jinn jinnestan jinni jinniwink jinniyeh jinny jinriki jinrikiman jinrikisha jinshang jinx jipijapa jipper jiqui jirble jirga jirkinet jiti jitneur jitneuse jitney jitneyman jitro jitter jitterbug jitters jittery jiva Jivaran Jivaro Jivaroan jive jixie Jo jo Joachimite Joan Joanna Joannite joaquinite Job job jobade jobarbe jobation jobber jobbernowl jobbernowlism jobbery jobbet jobbing jobbish jobble jobholder jobless joblessness jobman jobmaster jobmistress jobmonger jobo jobsmith Jocasta Jocelin Joceline Jocelyn joch Jock jock jocker jockey jockeydom jockeyish jockeyism jockeylike jockeyship jocko jockteleg jocoque jocose jocosely jocoseness jocoseriosity jocoserious jocosity jocote jocu jocular jocularity jocularly jocularness joculator jocum jocuma jocund jocundity jocundly jocundness jodel jodelr jodhpurs Jodo Joe joe joebush Joel joewood Joey joey jog jogger joggle joggler jogglety jogglework joggly jogtrottism Johann Johanna Johannean Johannes johannes Johannine Johannisberger Johannist Johannite johannite John Johnadreams Johnian johnin Johnny johnnycake johnnydom Johnsmas Johnsonese Johnsonian Johnsoniana Johnsonianism Johnsonianly Johnsonism johnstrupite join joinable joinant joinder joiner joinery joining joiningly joint jointage jointed jointedly jointedness jointer jointing jointist jointless jointly jointress jointure jointureless jointuress jointweed jointworm jointy joist joisting joistless jojoba joke jokeless jokelet jokeproof joker jokesmith jokesome jokesomeness jokester jokingly jokish jokist jokul joky joll jolleyman jollier jollification jollify jollily jolliness jollity jollop jolloped jolly jollytail Joloano jolt jolter jolterhead jolterheaded jolterheadedness jolthead joltiness jolting joltingly joltless joltproof jolty Jonah Jonahesque Jonahism Jonas Jonathan Jonathanization Jonesian jonglery jongleur jonque jonquil jonquille Jonsonian Jonval jonvalization jonvalize jookerie joola joom Jophiel Jordan jordan Jordanian jordanite joree Jorist jorum josefite joseite Joseph Josepha Josephine Josephinism josephinite Josephism Josephite josh josher joshi Joshua Josiah josie joskin joss jossakeed josser jostle jostlement jostler jot jota jotation jotisi Jotnian jotter jotting jotty joubarb joug jough jouk joukerypawkery joule joulean joulemeter jounce journal journalese journalish journalism journalist journalistic journalistically journalization journalize journalizer journey journeycake journeyer journeying journeyman journeywoman journeywork journeyworker jours joust jouster Jova Jove Jovial jovial jovialist jovialistic joviality jovialize jovially jovialness jovialty Jovian Jovianly Jovicentric Jovicentrical Jovicentrically jovilabe Joviniamish Jovinian Jovinianist Jovite jow jowar jowari jowel jower jowery jowl jowler jowlish jowlop jowly jowpy jowser jowter joy joyance joyancy joyant Joyce joyful joyfully joyfulness joyhop joyleaf joyless joylessly joylessness joylet joyous joyously joyousness joyproof joysome joyweed Jozy Ju Juang juba jubate jubbah jubbe jube juberous jubilance jubilancy jubilant jubilantly jubilarian jubilate jubilatio jubilation jubilatory jubilean jubilee jubilist jubilization jubilize jubilus juck juckies Jucuna jucundity jud Judaeomancy Judaeophile Judaeophilism Judaeophobe Judaeophobia Judah Judahite Judaic Judaica Judaical Judaically Judaism Judaist Judaistic Judaistically Judaization Judaize Judaizer Judas Judaslike judcock Jude Judean judex judge judgeable judgelike judger judgeship judgingly judgmatic judgmatical judgmatically judgment Judica judicable judicate judication judicative judicator judicatorial judicatory judicature judices judiciable judicial judiciality judicialize judicially judicialness judiciarily judiciary judicious judiciously judiciousness Judith judo Judophobism Judy jufti jug Juga jugal jugale Jugatae jugate jugated jugation juger jugerum jugful jugger Juggernaut juggernaut Juggernautish juggins juggle jugglement juggler jugglery juggling jugglingly Juglandaceae juglandaceous Juglandales juglandin Juglans juglone jugular Jugulares jugulary jugulate jugulum jugum Jugurthine juice juiceful juiceless juicily juiciness juicy jujitsu juju jujube jujuism jujuist juke jukebox Jule julep Jules Juletta Julia Julian Juliana Julianist julid Julidae julidan Julie Julien julienite julienne Juliet Julietta julio Julius juloid Juloidea juloidian julole julolidin julolidine julolin juloline Julus July Julyflower Jumada Jumana jumart jumba jumble jumblement jumbler jumblingly jumbly jumbo jumboesque jumboism jumbuck jumby jumelle jument jumentous jumfru jumillite jumma jump jumpable jumper jumperism jumpiness jumpingly jumpness jumprock jumpseed jumpsome jumpy Juncaceae juncaceous Juncaginaceae juncaginaceous juncagineous junciform juncite Junco Juncoides juncous junction junctional junctive juncture Juncus June june Juneberry Junebud junectomy Juneflower Jungermannia Jungermanniaceae jungermanniaceous Jungermanniales jungle jungled jungleside junglewards junglewood jungli jungly juniata junior juniorate juniority juniorship juniper Juniperaceae Juniperus Junius junk junkboard Junker junker Junkerdom junkerdom junkerish Junkerism junkerism junket junketer junketing junking junkman Juno Junoesque Junonia Junonian junt junta junto jupati jupe Jupiter jupon Jur Jura jural jurally jurament juramentado juramental juramentally juramentum Jurane jurant jurara Jurassic jurat juration jurative jurator juratorial juratory jure jurel juridic juridical juridically juring jurisconsult jurisdiction jurisdictional jurisdictionalism jurisdictionally jurisdictive jurisprudence jurisprudent jurisprudential jurisprudentialist jurisprudentially jurist juristic juristical juristically juror jurupaite jury juryless juryman jurywoman jusquaboutisme jusquaboutist jussel Jussiaea Jussiaean Jussieuan jussion jussive jussory just justen justice justicehood justiceless justicelike justicer justiceship justiceweed Justicia justiciability justiciable justicial justiciar justiciarship justiciary justiciaryship justicies justifiability justifiable justifiableness justifiably justification justificative justificator justificatory justifier justify justifying justifyingly Justin Justina Justine Justinian Justinianian Justinianist justly justment justness justo Justus jut Jute jute Jutic Jutish jutka Jutlander Jutlandish jutting juttingly jutty Juturna Juvavian juvenal Juvenalian juvenate juvenescence juvenescent juvenile juvenilely juvenileness juvenilify juvenilism juvenility juvenilize Juventas juventude Juverna juvia juvite juxtalittoral juxtamarine juxtapose juxtaposit juxtaposition juxtapositional juxtapositive juxtapyloric juxtaspinal juxtaterrestrial juxtatropical Juyas Juza Jynginae jyngine Jynx jynx K k ka Kababish Kabaka kabaragoya Kabard Kabardian kabaya Kabbeljaws kabel kaberu kabiet Kabirpanthi Kabistan Kabonga kabuki Kabuli Kabyle Kachari Kachin kachin Kadaga Kadarite kadaya Kadayan Kaddish kadein kadikane kadischi Kadmi kados Kadu kaempferol Kaf Kafa kaferita Kaffir kaffir kaffiyeh Kaffraria Kaffrarian Kafir kafir Kafiri kafirin kafiz kafta kago kagu kaha kahar kahau kahikatea kahili kahu kahuna kai Kaibab Kaibartha kaid kaik kaikara kaikawaka kail kailyard kailyarder kailyardism Kaimo Kainah kainga kainite kainsi kainyn kairine kairoline kaiser kaiserdom kaiserism kaisership kaitaka Kaithi kaiwhiria kaiwi Kajar kajawah kajugaru kaka Kakan kakapo kakar kakarali kakariki Kakatoe Kakatoidae kakawahie kaki kakidrosis kakistocracy kakkak kakke kakortokite kala kaladana kalamalo kalamansanai Kalamian Kalanchoe Kalandariyah Kalang Kalapooian kalasie Kaldani kale kaleidophon kaleidophone kaleidoscope kaleidoscopic kaleidoscopical kaleidoscopically Kalekah kalema Kalendae kalends kalewife kaleyard kali kalian Kaliana kaliborite kalidium kaliform kaligenous Kalinga kalinite kaliophilite kalipaya Kalispel kalium kallah kallege kallilite Kallima kallitype Kalmarian Kalmia Kalmuck kalo kalogeros kalokagathia kalon kalong kalpis kalsomine kalsominer kalumpang kalumpit Kalwar kalymmaukion kalymmocyte kamachile kamacite kamahi kamala kamaloka kamansi kamao Kamares kamarezite kamarupa kamarupic kamas Kamasin Kamass kamassi Kamba kambal kamboh Kamchadal Kamchatkan kame kameeldoorn kameelthorn kamelaukion kamerad kamias kamichi kamik kamikaze kammalan kammererite kamperite kampong kamptomorph kan kana kanae kanagi Kanaka kanap kanara Kanarese kanari kanat Kanauji Kanawari Kanawha kanchil kande Kandelia kandol kaneh kanephore kanephoros Kaneshite Kanesian kang kanga kangani kangaroo kangarooer Kangli Kanji Kankanai kankie kannume kanoon Kanred kans Kansa Kansan kantele kanteletar kanten Kantian Kantianism Kantism Kantist Kanuri Kanwar kaoliang kaolin kaolinate kaolinic kaolinite kaolinization kaolinize kapa kapai kapeika kapok kapp kappa kappe kappland kapur kaput Karabagh karagan Karaism Karaite Karaitism karaka Karakatchan Karakul karakul Karamojo karamu Karatas Karaya karaya karbi karch kareao kareeta Karel karela Karelian Karen Karharbari karite Karling Karluk karma Karmathian karmic karmouth karo kaross karou karree karri Karroo karroo karrusel karsha Karshuni Karst karst karstenite karstic kartel Karthli kartometer kartos Kartvel Kartvelian karwar Karwinskia karyaster karyenchyma karyochrome karyochylema karyogamic karyogamy karyokinesis karyokinetic karyologic karyological karyologically karyology karyolymph Karyolysidae karyolysis Karyolysus karyolytic karyomere karyomerite karyomicrosome karyomitoic karyomitome karyomiton karyomitosis karyomitotic karyon karyoplasm karyoplasma karyoplasmatic karyoplasmic karyopyknosis karyorrhexis karyoschisis karyosome karyotin karyotype kasa kasbah kasbeke kascamiol Kasha Kashan kasher kashga kashi kashima Kashmiri Kashmirian Kashoubish kashruth Kashube Kashubian Kashyapa kasida Kasikumuk Kaska Kaskaskia kasm kasolite kassabah Kassak Kassite kassu kastura Kasubian kat Katabanian katabasis katabatic katabella katabolic katabolically katabolism katabolite katabolize katabothron katachromasis katacrotic katacrotism katagenesis katagenetic katakana katakinesis katakinetic katakinetomer katakinetomeric katakiribori katalase katalysis katalyst katalytic katalyze katamorphism kataphoresis kataphoretic kataphoric kataphrenia kataplasia kataplectic kataplexy katar katastate katastatic katathermometer katatonia katatonic katatype katchung katcina Kate kath Katha katha kathal Katharina Katharine katharometer katharsis kathartic kathemoglobin kathenotheism Kathleen kathodic Kathopanishad Kathy Katie Katik Katinka katipo Katipunan Katipuneros katmon katogle Katrine Katrinka katsup Katsuwonidae katuka Katukina katun katurai Katy katydid Kauravas kauri kava kavaic kavass Kavi Kaw kawaka Kawchodinne kawika Kay kay kayak kayaker Kayan Kayasth Kayastha kayles kayo Kazak kazi kazoo kea keach keacorn Keatsian keawe keb kebbie kebbuck kechel keck keckle keckling kecksy kecky ked Kedar Kedarite keddah kedge kedger kedgeree kedlock Kedushshah keech keek keeker keel keelage keelbill keelblock keelboat keelboatman keeled keeler keelfat keelhale keelhaul keelie keeling keelivine keelless keelman keelrake keelson keen keena keened keener keenly keenness keep keepable keeper keeperess keepering keeperless keepership keeping keepsake keepsaky keepworthy keerogue keeshond keest keet keeve Keewatin kef keffel kefir kefiric Kefti Keftian Keftiu keg kegler kehaya kehillah kehoeite Keid keilhauite keita keitloa Kekchi kekotene kekuna kelchin keld Kele kele kelebe kelectome keleh kelek kelep Kelima kelk kell kella kellion kellupweed kelly keloid keloidal kelp kelper kelpfish kelpie kelpware kelpwort kelpy kelt kelter Keltoi kelty kelvin kelyphite Kemalism Kemalist kemb kemp kemperyman kempite kemple kempster kempt kempy ken kenaf Kenai kenareh kench kend kendir kendyr Kenelm Kenipsim kenlore kenmark Kennebec kennebecker kennebunker Kennedya kennel kennelly kennelman kenner Kenneth kenning kenningwort kenno keno kenogenesis kenogenetic kenogenetically kenogeny kenosis kenotic kenoticism kenoticist kenotism kenotist kenotoxin kenotron Kenseikai kensington Kensitite kenspac kenspeck kenspeckle kent kentallenite Kentia Kenticism Kentish Kentishman kentledge kentrogon kentrolite Kentuckian Kentucky kenyte kep kepi Keplerian kept Ker keracele keralite kerana keraphyllocele keraphyllous kerasin kerasine kerat keratalgia keratectasia keratectomy Keraterpeton keratin keratinization keratinize keratinoid keratinose keratinous keratitis keratoangioma keratocele keratocentesis keratoconjunctivitis keratoconus keratocricoid keratode keratodermia keratogenic keratogenous keratoglobus keratoglossus keratohelcosis keratohyal keratoid Keratoidea keratoiritis Keratol keratoleukoma keratolysis keratolytic keratoma keratomalacia keratome keratometer keratometry keratomycosis keratoncus keratonosus keratonyxis keratophyre keratoplastic keratoplasty keratorrhexis keratoscope keratoscopy keratose keratosis keratotome keratotomy keratto keraulophon keraulophone Keraunia keraunion keraunograph keraunographic keraunography keraunophone keraunophonic keraunoscopia keraunoscopy kerbstone kerchief kerchiefed kerchoo kerchug kerchunk kerectomy kerel Keres Keresan Kerewa kerf kerflap kerflop kerflummox Kerite Kermanji Kermanshah kermes kermesic kermesite kermis kern kernel kerneled kernelless kernelly kerner kernetty kernish kernite kernos kerogen kerosene kerplunk Kerria kerrie kerrikerri kerril kerrite Kerry kerry kersantite kersey kerseymere kerslam kerslosh kersmash kerugma kerwham kerygma kerygmatic kerykeion kerystic kerystics Keryx kesslerman kestrel ket keta ketal ketapang ketazine ketch ketchcraft ketchup ketembilla keten ketene ketimide ketimine ketipate ketipic keto ketogen ketogenesis ketogenic ketoheptose ketohexose ketoketene ketol ketole ketolysis ketolytic ketone ketonemia ketonic ketonimid ketonimide ketonimin ketonimine ketonization ketonize ketonuria ketose ketoside ketosis ketosuccinic ketoxime kette ketting kettle kettlecase kettledrum kettledrummer kettleful kettlemaker kettlemaking kettler ketty Ketu ketuba ketupa ketyl keup Keuper keurboom kevalin kevel kevelhead kevutzah Keweenawan keweenawite kewpie kex kexy key keyage keyboard keyed keyhole keyless keylet keylock Keynesian Keynesianism keynote keynoter keyseater keyserlick keysmith keystone keystoned Keystoner keyway Kha khaddar khadi khagiarite khahoon khaiki khair khaja khajur khakanship khaki khakied Khaldian khalifa Khalifat Khalkha khalsa Khami khamsin Khamti khan khanate khanda khandait khanjar khanjee khankah khansamah khanum khar kharaj Kharia Kharijite Kharoshthi kharouba kharroubah Khartoumer kharua Kharwar Khasa Khasi khass khat khatib khatri Khatti Khattish Khaya Khazar Khazarian khediva khedival khedivate khedive khediviah khedivial khediviate khepesh Kherwari Kherwarian khet Khevzur khidmatgar Khila khilat khir khirka Khitan Khivan Khlysti Khmer Khoja khoja khoka Khokani Khond Khorassan khot Khotan Khotana Khowar khu Khuai khubber khula khuskhus Khussak khutbah khutuktu Khuzi khvat Khwarazmian kiack kiaki kialee kiang Kiangan kiaugh kibber kibble kibbler kibblerman kibe kibei kibitka kibitz kibitzer kiblah kibosh kiby kick kickable Kickapoo kickback kickee kicker kicking kickish kickless kickoff kickout kickseys kickshaw kickup Kidder kidder Kidderminster kiddier kiddish kiddush kiddushin kiddy kidhood kidlet kidling kidnap kidnapee kidnaper kidney kidneyroot kidneywort Kids kidskin kidsman kiefekil Kieffer kiekie kiel kier kieselguhr kieserite kiestless kieye Kiho kikar Kikatsik kikawaeo kike kiki Kikongo kiku kikuel kikumon Kikuyu kil kiladja kilah kilampere kilan kilbrickenite kildee kilderkin kileh kilerg kiley Kilhamite kilhig kiliare kilim kill killable killadar Killarney killas killcalf killcrop killcu killdeer killeekillee killeen killer killick killifish killing killingly killingness killinite killogie killweed killwort killy Kilmarnock kiln kilneye kilnhole kilnman kilnrib kilo kiloampere kilobar kilocalorie kilocycle kilodyne kilogauss kilogram kilojoule kiloliter kilolumen kilometer kilometrage kilometric kilometrical kiloparsec kilostere kiloton kilovar kilovolt kilowatt kilp kilt kilter kiltie kilting Kiluba Kim kim kimbang kimberlin kimberlite Kimbundu Kimeridgian kimigayo kimnel kimono kimonoed kin kina kinaesthesia kinaesthesis kinah kinase kinbote kinch kinchin kinchinmort kincob kind kindergarten kindergartener kindergartening kindergartner Kinderhook kindheart kindhearted kindheartedly kindheartedness kindle kindler kindlesome kindlily kindliness kindling kindly kindness kindred kindredless kindredly kindredness kindredship kinematic kinematical kinematically kinematics kinematograph kinemometer kineplasty kinepox kinesalgia kinescope kinesiatric kinesiatrics kinesic kinesics kinesimeter kinesiologic kinesiological kinesiology kinesiometer kinesis kinesitherapy kinesodic kinesthesia kinesthesis kinesthetic kinetic kinetical kinetically kinetics kinetochore kinetogenesis kinetogenetic kinetogenetically kinetogenic kinetogram kinetograph kinetographer kinetographic kinetography kinetomer kinetomeric kinetonema kinetonucleus kinetophone kinetophonograph kinetoplast kinetoscope kinetoscopic king kingbird kingbolt kingcob kingcraft kingcup kingdom kingdomed kingdomful kingdomless kingdomship kingfish kingfisher kinghead kinghood kinghunter kingless kinglessness kinglet kinglihood kinglike kinglily kingliness kingling kingly kingmaker kingmaking kingpiece kingpin kingrow kingship kingsman Kingu kingweed kingwood Kinipetu kink kinkable kinkaider kinkajou kinkcough kinkhab kinkhost kinkily kinkiness kinkle kinkled kinkly kinksbush kinky kinless kinnikinnick kino kinofluous kinology kinoplasm kinoplasmic Kinorhyncha kinospore Kinosternidae Kinosternon kinotannic kinsfolk kinship kinsman kinsmanly kinsmanship kinspeople kinswoman kintar Kintyre kioea Kioko kiosk kiotome Kiowa Kiowan Kioway kip kipage Kipchak kipe Kiplingese Kiplingism kippeen kipper kipperer kippy kipsey kipskin Kiranti Kirghiz Kirghizean kiri Kirillitsa kirimon kirk kirker kirkify kirking kirkinhead kirklike kirkman kirktown kirkward kirkyard Kirman kirmew kirn kirombo kirsch Kirsty kirtle kirtled Kirundi kirve kirver kischen kish Kishambala kishen kishon kishy kiskatom Kislev kismet kismetic kisra kiss kissability kissable kissableness kissage kissar kisser kissing kissingly kissproof kisswise kissy kist kistful kiswa Kiswahili Kit kit kitab kitabis Kitalpha Kitamat Kitan kitar kitcat kitchen kitchendom kitchener kitchenette kitchenful kitchenless kitchenmaid kitchenman kitchenry kitchenward kitchenwards kitchenware kitchenwife kitcheny kite kiteflier kiteflying kith kithe kithless kitish Kitkahaxki Kitkehahki kitling Kitlope Kittatinny kittel kitten kittendom kittenhearted kittenhood kittenish kittenishly kittenishness kittenless kittenship kitter kittereen kitthoge kittiwake kittle kittlepins kittles kittlish kittly kittock kittul Kitty kitty kittysol Kitunahan kiva kiver kivikivi kivu Kiwai Kiwanian Kiwanis kiwi kiwikiwi kiyas kiyi Kizil Kizilbash Kjeldahl kjeldahlization kjeldahlize klafter klaftern klam Klamath Klan Klanism Klansman Klanswoman klaprotholite Klaskino klavern Klaxon klaxon Klebsiella kleeneboc Kleinian Kleistian klendusic klendusity klendusive klepht klephtic klephtism kleptic kleptistic kleptomania kleptomaniac kleptomanist kleptophobia klicket Klikitat Kling Klingsor klip klipbok klipdachs klipdas klipfish klippe klippen klipspringer klister klockmannite klom Klondike Klondiker klootchman klop klops klosh Kluxer klystron kmet knab knabble knack knackebrod knacker knackery knacky knag knagged knaggy knap knapbottle knape knappan knapper knappish knappishly knapsack knapsacked knapsacking knapweed knar knark knarred knarry Knautia knave knavery knaveship knavess knavish knavishly knavishness knawel knead kneadability kneadable kneader kneading kneadingly knebelite knee kneebrush kneecap kneed kneehole kneel kneeler kneelet kneeling kneelingly kneepad kneepan kneepiece kneestone Kneiffia Kneippism knell knelt Knesset knet knew knez knezi kniaz kniazi knick knicker Knickerbocker knickerbockered knickerbockers knickered knickers knickknack knickknackatory knickknacked knickknackery knickknacket knickknackish knickknacky knickpoint knife knifeboard knifeful knifeless knifelike knifeman knifeproof knifer knifesmith knifeway knight knightage knightess knighthead knighthood Knightia knightless knightlihood knightlike knightliness knightling knightly knightship knightswort Kniphofia Knisteneaux knit knitback knitch knitted knitter knitting knittle knitwear knitweed knitwork knived knivey knob knobbed knobber knobbiness knobble knobbler knobbly knobby knobkerrie knoblike knobstick knobstone knobular knobweed knobwood knock knockabout knockdown knockemdown knocker knocking knockless knockoff knockout knockstone knockup knoll knoller knolly knop knopite knopped knopper knoppy knopweed knorhaan Knorria knosp knosped Knossian knot knotberry knotgrass knothole knothorn knotless knotlike knotroot knotted knotter knottily knottiness knotting knotty knotweed knotwork knotwort knout know knowability knowable knowableness knowe knower knowing knowingly knowingness knowledge knowledgeable knowledgeableness knowledgeably knowledged knowledgeless knowledgement knowledging known knowperts Knoxian Knoxville knoxvillite knub knubbly knubby knublet knuckle knucklebone knuckled knuckler knuckling knuckly knuclesome knur knurl knurled knurling knurly Knut knut knutty knyaz knyazi Ko ko koa koae koala koali Koasati kob koban kobellite kobi kobird kobold kobong kobu Kobus Koch Kochab Kochia kochliarion koda Kodagu Kodak kodak kodaker kodakist kodakry Kodashim kodro kodurite Koeberlinia Koeberliniaceae koeberliniaceous koechlinite Koeksotenok koel Koellia Koelreuteria koenenite Koeri koff koft koftgar koftgari koggelmannetje Kogia Kohathite Koheleth kohemp Kohen Kohistani Kohl kohl Kohlan kohlrabi kohua koi Koiari Koibal koil koila koilanaglyphic koilon koimesis Koine koine koinon koinonia Koipato Koitapu kojang Kojiki kokako kokam kokan kokerboom kokil kokio koklas koklass Koko koko kokoon Kokoona kokoromiko kokowai kokra koksaghyz koku kokum kokumin kokumingun Kol kola kolach Kolarian Koldaji kolea koleroga kolhoz Koli kolinski kolinsky Kolis kolkhos kolkhoz kollast kollaster koller kollergang kolo kolobion kolobus kolokolo kolsun koltunna koltunnor Koluschan Kolush Komati komatik kombu Kome Komi kominuter kommetje kommos komondor kompeni Komsomol kon kona konak Konariot Konde Kongo Kongoese Kongolese kongoni kongsbergite kongu Konia Koniaga Koniga konimeter koninckite konini koniology koniscope konjak Konkani Konomihu konstantin kontakion Konyak kooka kookaburra kookeree kookery kookri koolah kooletah kooliman koolokamba Koolooly koombar koomkie Koorg kootcha Kootenay kop Kopagmiut kopeck koph kopi koppa koppen koppite Koprino kor Kora kora koradji Korah Korahite Korahitic korait korakan Koran Korana Koranic Koranist korari Kore kore Korean korec koreci Koreish Koreishite korero Koreshan Koreshanity kori korimako korin Kornephorus kornerupine kornskeppa kornskeppur korntonde korntonder korntunna korntunnur Koroa koromika koromiko korona korova korrel korrigum korumburra koruna Korwa Koryak korymboi korymbos korzec kos Kosalan Koschei kosher Kosimo kosin kosmokrator Koso kosong kosotoxin Kossaean Kossean Kosteletzkya koswite Kota kotal Kotar koto Kotoko kotschubeite kottigite kotuku kotukutuku kotwal kotwalee kotyle kotylos kou koulan Koungmiut kouza kovil Kowagmiut kowhai kowtow koyan kozo Kpuesi Kra kra kraal kraft Krag kragerite krageroite krait kraken krakowiak kral Krama krama Krameria Krameriaceae krameriaceous kran krantzite Krapina kras krasis kratogen kratogenic Kraunhia kraurite kraurosis kraurotic krausen krausite kraut kreis Kreistag kreistle kreittonite krelos kremersite kremlin krems kreng krennerite Krepi kreplech kreutzer kriegspiel krieker Krigia krimmer krina Kriophoros Krishna Krishnaism Krishnaist Krishnaite Krishnaitic Kristinaux krisuvigite kritarchy Krithia kritrima krobyloi krobylos krocket krohnkite krome kromeski kromogram kromskop krona krone kronen kroner Kronion kronor kronur Kroo kroon krosa krouchka kroushka Kru Krugerism Krugerite Kruman krummhorn kryokonite krypsis kryptic krypticism kryptocyanine kryptol kryptomere krypton Kshatriya Kshatriyahood Kua Kuan kuan Kuar Kuba kuba Kubachi Kubanka kubba Kubera kubuklion Kuchean kuchen kudize kudos Kudrun kudu kudzu Kuehneola kuei Kufic kuge kugel Kuhnia Kui kuichua Kuki kukoline kukri kuku kukui Kukulcan kukupa Kukuruku kula kulack Kulah kulah kulaite kulak kulakism Kulanapan kulang Kuli kulimit kulkarni kullaite Kullani kulm kulmet Kulturkampf Kulturkreis Kuman kumbi kumhar kumiss kummel Kumni kumquat kumrah Kumyk kunai Kunbi Kundry Kuneste kung kunk kunkur Kunmiut kunzite Kuomintang kupfernickel kupfferite kuphar kupper Kuranko kurbash kurchicine kurchine Kurd Kurdish Kurdistan kurgan Kuri Kurilian Kurku kurmburra Kurmi Kuroshio kurrajong kurtosis Kuruba Kurukh kuruma kurumaya Kurumba kurung kurus kurvey kurveyor kusa kusam Kusan kusha Kushshu kusimansel kuskite kuskos kuskus Kuskwogmiut Kustenau kusti kusum kutcha Kutchin Kutenai kuttab kuttar kuttaur kuvasz Kuvera kvass kvint kvinter Kwakiutl kwamme kwan Kwannon Kwapa kwarta kwarterka kwazoku kyack kyah kyar kyat kyaung Kybele Kyklopes Kyklops kyl kyle kylite kylix kymation kymatology kymbalon kymogram kymograph kymographic kynurenic kynurine kyphoscoliosis kyphoscoliotic Kyphosidae kyphosis kyphotic Kyrie kyrine kyschtymite kyte Kyurin Kyurinish L l la laager laang lab Laban labara labarum labba labber labdacism labdacismus labdanum labefact labefactation labefaction labefy label labeler labella labellate labeller labelloid labellum labia labial labialism labialismus labiality labialization labialize labially Labiatae labiate labiated labidophorous Labidura Labiduridae labiella labile lability labilization labilize labioalveolar labiocervical labiodental labioglossal labioglossolaryngeal labioglossopharyngeal labiograph labioguttural labiolingual labiomancy labiomental labionasal labiopalatal labiopalatalize labiopalatine labiopharyngeal labioplasty labiose labiotenaculum labiovelar labioversion labis labium lablab labor laborability laborable laborage laborant laboratorial laboratorian laboratory labordom labored laboredly laboredness laborer laboress laborhood laboring laboringly laborious laboriously laboriousness laborism laborist laborite laborless laborous laborously laborousness laborsaving laborsome laborsomely laborsomeness Laboulbenia Laboulbeniaceae laboulbeniaceous Laboulbeniales labour labra Labrador Labradorean labradorite labradoritic labral labret labretifery Labridae labroid Labroidea labrosaurid labrosauroid Labrosaurus labrose labrum Labrus labrusca labrys Laburnum labyrinth labyrinthal labyrinthally labyrinthian labyrinthibranch labyrinthibranchiate Labyrinthibranchii labyrinthic labyrinthical labyrinthically Labyrinthici labyrinthiform labyrinthine labyrinthitis Labyrinthodon labyrinthodont Labyrinthodonta labyrinthodontian labyrinthodontid labyrinthodontoid Labyrinthula Labyrinthulidae lac lacca laccaic laccainic laccase laccol laccolith laccolithic laccolitic lace lacebark laced Lacedaemonian laceflower laceleaf laceless lacelike lacemaker lacemaking laceman lacepiece lacepod lacer lacerability lacerable lacerant lacerate lacerated lacerately laceration lacerative Lacerta Lacertae lacertian Lacertid Lacertidae lacertiform Lacertilia lacertilian lacertiloid lacertine lacertoid lacertose lacery lacet lacewing lacewoman lacewood lacework laceworker laceybark lache Lachenalia laches Lachesis Lachnanthes Lachnosterna lachryma lachrymae lachrymaeform lachrymal lachrymally lachrymalness lachrymary lachrymation lachrymator lachrymatory lachrymiform lachrymist lachrymogenic lachrymonasal lachrymosal lachrymose lachrymosely lachrymosity lachrymous lachsa lacily Lacinaria laciness lacing lacinia laciniate laciniated laciniation laciniform laciniola laciniolate laciniose lacinula lacinulate lacinulose lacis lack lackadaisical lackadaisicality lackadaisically lackadaisicalness lackadaisy lackaday lacker lackey lackeydom lackeyed lackeyism lackeyship lackland lackluster lacklusterness lacklustrous lacksense lackwit lackwittedly lackwittedness lacmoid lacmus Laconian Laconic laconic laconica laconically laconicalness laconicism laconicum laconism laconize laconizer Lacosomatidae lacquer lacquerer lacquering lacquerist lacroixite lacrosse lacrosser lacrym lactagogue lactalbumin lactam lactamide lactant lactarene lactarious lactarium Lactarius lactary lactase lactate lactation lactational lacteal lactean lactenin lacteous lactesce lactescence lactescency lactescent lactic lacticinia lactid lactide lactiferous lactiferousness lactific lactifical lactification lactiflorous lactifluous lactiform lactifuge lactify lactigenic lactigenous lactigerous lactim lactimide lactinate lactivorous lacto lactobacilli Lactobacillus lactobacillus lactobutyrometer lactocele lactochrome lactocitrate lactodensimeter lactoflavin lactoglobulin lactoid lactol lactometer lactone lactonic lactonization lactonize lactophosphate lactoproteid lactoprotein lactoscope lactose lactoside lactosuria lactothermometer lactotoxin lactovegetarian Lactuca lactucarium lactucerin lactucin lactucol lactucon lactyl lacuna lacunae lacunal lacunar lacunaria lacunary lacune lacunose lacunosity lacunule lacunulose lacuscular lacustral lacustrian lacustrine lacwork lacy lad Ladakhi ladakin ladanigerous ladanum ladder laddered laddering ladderlike ladderway ladderwise laddery laddess laddie laddikie laddish laddock lade lademan laden lader ladhood ladies ladify Ladik Ladin lading Ladino ladkin ladle ladleful ladler ladlewood ladrone ladronism ladronize lady ladybird ladybug ladyclock ladydom ladyfinger ladyfish ladyfly ladyfy ladyhood ladyish ladyism ladykin ladykind ladyless ladylike ladylikely ladylikeness ladyling ladylintywhite ladylove ladyly ladyship Ladytide Laelia laemodipod Laemodipoda laemodipodan laemodipodiform laemodipodous laemoparalysis laemostenosis laeotropic laeotropism Laestrygones laet laeti laetic Laevigrada laevoduction laevogyrate laevogyre laevogyrous laevolactic laevorotation laevorotatory laevotartaric laevoversion lafayette Lafite lag lagan lagarto lagen lagena Lagenaria lagend lageniform lager Lagerstroemia Lagetta lagetto laggar laggard laggardism laggardly laggardness lagged laggen lagger laggin lagging laglast lagna lagniappe lagomorph Lagomorpha lagomorphic lagomorphous Lagomyidae lagonite lagoon lagoonal lagoonside lagophthalmos lagopode lagopodous lagopous Lagopus Lagorchestes lagostoma Lagostomus Lagothrix Lagrangian Lagthing Lagting Laguncularia Lagunero Lagurus lagwort Lahnda Lahontan Lahuli Lai lai Laibach laic laical laicality laically laich laicism laicity laicization laicize laicizer laid laigh lain laine laiose lair lairage laird lairdess lairdie lairdly lairdocracy lairdship lairless lairman lairstone lairy laitance laity Lak lak lakarpite lakatoi lake lakeland lakelander lakeless lakelet lakelike lakemanship laker lakeside lakeward lakeweed lakie laking lakish lakishness lakism lakist Lakota Lakshmi laky lalang lall Lallan Lalland lallation lalling lalo laloneurosis lalopathy lalophobia laloplegia lam lama lamaic Lamaism Lamaist Lamaistic Lamaite Lamanism Lamanite Lamano lamantin lamany Lamarckia Lamarckian Lamarckianism Lamarckism lamasary lamasery lamastery lamb Lamba lamba Lambadi lambale lambaste lambda lambdacism lambdoid lambdoidal lambeau lambency lambent lambently lamber Lambert lambert lambhood lambie lambiness lambish lambkill lambkin Lamblia lambliasis lamblike lambling lambly lamboys lambrequin lambsdown lambskin lambsuccory lamby lame lamedh lameduck lamel lamella lamellar Lamellaria Lamellariidae lamellarly lamellary lamellate lamellated lamellately lamellation lamellibranch Lamellibranchia Lamellibranchiata lamellibranchiate lamellicorn lamellicornate Lamellicornes Lamellicornia lamellicornous lamelliferous lamelliform lamellirostral lamellirostrate Lamellirostres lamelloid lamellose lamellosity lamellule lamely lameness lament lamentable lamentableness lamentably lamentation lamentational lamentatory lamented lamentedly lamenter lamentful lamenting lamentingly lamentive lamentory lamester lamestery lameter lametta lamia Lamiaceae lamiaceous lamiger lamiid Lamiidae Lamiides Lamiinae lamin lamina laminability laminable laminae laminar Laminaria Laminariaceae laminariaceous Laminariales laminarian laminarin laminarioid laminarite laminary laminate laminated lamination laminboard laminectomy laminiferous laminiform laminiplantar laminiplantation laminitis laminose laminous lamish Lamista lamiter Lamium Lammas lammas Lammastide lammer lammergeier lammock lammy Lamna lamnectomy lamnid Lamnidae lamnoid lamp lampad lampadary lampadedromy lampadephore lampadephoria lampadite lampas lampatia lampblack lamper lampern lampers lampflower lampfly lampful lamphole lamping lampion lampist lampistry lampless lamplet lamplight lamplighted lamplighter lamplit lampmaker lampmaking lampman Lampong lampoon lampooner lampoonery lampoonist lamppost lamprey Lampridae lamprophony lamprophyre lamprophyric lamprotype Lampsilis Lampsilus lampstand lampwick lampyrid Lampyridae lampyrine Lampyris Lamus Lamut lamziekte lan lanameter Lanao Lanarkia lanarkite lanas lanate lanated lanaz Lancaster Lancasterian Lancastrian Lance lance lanced lancegay lancelet lancelike lancely lanceman lanceolar lanceolate lanceolated lanceolately lanceolation lancepesade lancepod lanceproof lancer lances lancet lanceted lanceteer lancewood lancha lanciers lanciferous lanciform lancinate lancination land landamman landau landaulet landaulette landblink landbook landdrost landed lander landesite landfall landfast landflood landgafol landgravate landgrave landgraveship landgravess landgraviate landgravine landholder landholdership landholding landimere landing landlady landladydom landladyhood landladyish landladyship landless landlessness landlike landline landlock landlocked landlook landlooker landloper landlord landlordism landlordly landlordry landlordship landlouper landlouping landlubber landlubberish landlubberly landlubbing landman landmark Landmarker landmil landmonger landocracy landocrat Landolphia landolphia landowner landownership landowning landplane landraker landreeve landright landsale landscape landscapist landshard landship landsick landside landskip landslide landslip Landsmaal landsman landspout landspringy Landsting landstorm Landsturm Landuman landwaiter landward landwash landways Landwehr landwhin landwire landwrack lane lanete laneway laney langaha langarai langbanite langbeinite langca Langhian langi langite langlauf langlaufer langle Lango Langobard Langobardic langoon langooty langrage langsat Langsdorffia langsettle Langshan langspiel langsyne language languaged languageless langued Languedocian languescent languet languid languidly languidness languish languisher languishing languishingly languishment languor languorous languorously langur laniariform laniary laniate laniferous lanific laniflorous laniform lanigerous Laniidae laniiform Laniinae lanioid lanista Lanital Lanius lank lanket lankily lankiness lankish lankly lankness lanky lanner lanneret lanolin lanose lanosity lansat lansdowne lanseh lansfordite lansknecht lanson lansquenet lant lantaca Lantana lanterloo lantern lanternflower lanternist lanternleaf lanternman lanthana lanthanide lanthanite Lanthanotidae Lanthanotus lanthanum lanthopine lantum lanuginose lanuginous lanuginousness lanugo lanum Lanuvian lanx lanyard Lao Laodicean Laodiceanism Laotian lap lapacho lapachol lapactic Lapageria laparectomy laparocele laparocholecystotomy laparocolectomy laparocolostomy laparocolotomy laparocolpohysterotomy laparocolpotomy laparocystectomy laparocystotomy laparoelytrotomy laparoenterostomy laparoenterotomy laparogastroscopy laparogastrotomy laparohepatotomy laparohysterectomy laparohysteropexy laparohysterotomy laparoileotomy laparomyitis laparomyomectomy laparomyomotomy laparonephrectomy laparonephrotomy laparorrhaphy laparosalpingectomy laparosalpingotomy laparoscopy laparosplenectomy laparosplenotomy laparostict Laparosticti laparothoracoscopy laparotome laparotomist laparotomize laparotomy laparotrachelotomy lapboard lapcock Lapeirousia lapel lapeler lapelled lapful lapicide lapidarian lapidarist lapidary lapidate lapidation lapidator lapideon lapideous lapidescent lapidicolous lapidific lapidification lapidify lapidist lapidity lapidose lapilliform lapillo lapillus Lapith Lapithae Lapithaean Laplacian Lapland Laplander Laplandian Laplandic Laplandish lapon Laportea Lapp Lappa lappaceous lappage lapped lapper lappet lappeted Lappic lapping Lappish Lapponese Lapponian Lappula lapsability lapsable Lapsana lapsation lapse lapsed lapser lapsi lapsing lapsingly lapstone lapstreak lapstreaked lapstreaker Laputa Laputan laputically lapwing lapwork laquear laquearian laqueus Lar lar Laralia Laramide Laramie larboard larbolins larbowlines larcener larcenic larcenish larcenist larcenous larcenously larceny larch larchen lard lardacein lardaceous larder larderellite larderer larderful larderlike lardiform lardite Lardizabalaceae lardizabalaceous lardon lardworm lardy lareabell Larentiidae large largebrained largehanded largehearted largeheartedness largely largemouth largemouthed largen largeness largess larghetto largifical largish largition largitional largo Lari lari Laria lariat larick larid Laridae laridine larigo larigot lariid Lariidae larin Larinae larine larithmics Larix larixin lark larker larkiness larking larkingly larkish larkishness larklike larkling larksome larkspur larky larmier larmoyant Larnaudian larnax laroid larrigan larrikin larrikinalian larrikiness larrikinism larriman larrup Larry larry Lars larsenite Larunda Larus larva Larvacea larvae larval Larvalia larvarium larvate larve larvicidal larvicide larvicolous larviform larvigerous larvikite larviparous larviposit larviposition larvivorous larvule laryngal laryngalgia laryngeal laryngeally laryngean laryngeating laryngectomy laryngemphraxis laryngendoscope larynges laryngic laryngismal laryngismus laryngitic laryngitis laryngocele laryngocentesis laryngofission laryngofissure laryngograph laryngography laryngological laryngologist laryngology laryngometry laryngoparalysis laryngopathy laryngopharyngeal laryngopharyngitis laryngophony laryngophthisis laryngoplasty laryngoplegia laryngorrhagia laryngorrhea laryngoscleroma laryngoscope laryngoscopic laryngoscopical laryngoscopist laryngoscopy laryngospasm laryngostasis laryngostenosis laryngostomy laryngostroboscope laryngotome laryngotomy laryngotracheal laryngotracheitis laryngotracheoscopy laryngotracheotomy laryngotyphoid laryngovestibulitis larynx las lasa lasarwort lascar lascivious lasciviously lasciviousness laser Laserpitium laserwort lash lasher lashingly lashless lashlite Lasi lasianthous Lasiocampa lasiocampid Lasiocampidae Lasiocampoidea lasiocarpous Lasius lask lasket Laspeyresia laspring lasque lass lasset lassie lassiehood lassieish lassitude lasslorn lasso lassock lassoer last lastage laster lasting lastingly lastingness lastly lastness lastre lastspring lasty lat lata latah Latakia Latania Latax latch latcher latchet latching latchkey latchless latchman latchstring late latebra latebricole latecomer latecoming lated lateen lateener lately laten latence latency lateness latensification latent latentize latently latentness later latera laterad lateral lateralis laterality lateralization lateralize laterally Lateran latericumbent lateriflexion laterifloral lateriflorous laterifolious Laterigradae laterigrade laterinerved laterite lateritic lateritious lateriversion laterization lateroabdominal lateroanterior laterocaudal laterocervical laterodeviation laterodorsal lateroduction lateroflexion lateromarginal lateronuchal lateroposition lateroposterior lateropulsion laterostigmatal laterostigmatic laterotemporal laterotorsion lateroventral lateroversion latescence latescent latesome latest latewhile latex latexosis lath lathe lathee latheman lathen lather latherability latherable lathereeve latherer latherin latheron latherwort lathery lathesman lathhouse lathing Lathraea lathwork lathy lathyric lathyrism Lathyrus Latian latibulize latices laticiferous laticlave laticostate latidentate latifundian latifundium latigo Latimeria Latin Latinate Latiner Latinesque Latinian Latinic Latiniform Latinism latinism Latinist Latinistic Latinistical Latinitaster Latinity Latinization Latinize Latinizer Latinless Latinus lation latipennate latiplantar latirostral Latirostres latirostrous Latirus latisept latiseptal latiseptate latish latisternal latitancy latitant latitat latite latitude latitudinal latitudinally latitudinarian latitudinarianisn latitudinary latitudinous latomy Latona Latonian Latooka latrant latration latreutic latria Latrididae latrine Latris latro latrobe latrobite latrocinium Latrodectus latron latten lattener latter latterkin latterly lattermath lattermost latterness lattice latticed latticewise latticework latticing latticinio Latuka latus Latvian lauan laubanite laud laudability laudable laudableness laudably laudanidine laudanin laudanine laudanosine laudanum laudation laudative laudator laudatorily laudatory lauder Laudian Laudianism laudification Laudism Laudist laudist laugh laughable laughableness laughably laughee laugher laughful laughing laughingly laughingstock laughsome laughter laughterful laughterless laughworthy laughy lauia laumonite laumontite laun launce launch launcher launchful launchways laund launder launderability launderable launderer laundry laundrymaid laundryman laundryowner laundrywoman laur Laura laura Lauraceae lauraceous lauraldehyde laurate laurdalite laureate laureated laureateship laureation laurel laureled laurellike laurelship laurelwood Laurencia Laurentian Laurentide laureole lauric laurin laurinoxylon laurionite laurite Laurocerasus laurone laurotetanine Laurus laurustine laurustinus laurvikite lauryl lautarite lautitious lava lavable lavabo lavacre lavage lavaliere lavalike Lavandula lavanga lavant lavaret Lavatera lavatic lavation lavational lavatorial lavatory lave laveer Lavehr lavement lavender lavenite laver Laverania laverock laverwort lavialite lavic Lavinia lavish lavisher lavishing lavishingly lavishly lavishment lavishness lavolta lavrovite law lawbook lawbreaker lawbreaking lawcraft lawful lawfully lawfulness lawgiver lawgiving lawing lawish lawk lawlants lawless lawlessly lawlessness lawlike lawmaker lawmaking lawman lawmonger lawn lawned lawner lawnlet lawnlike lawny lawproof lawrencite Lawrie lawrightman Lawson Lawsoneve Lawsonia lawsonite lawsuit lawsuiting lawter Lawton lawyer lawyeress lawyerism lawyerlike lawyerling lawyerly lawyership lawyery lawzy lax laxate laxation laxative laxatively laxativeness laxiflorous laxifoliate laxifolious laxism laxist laxity laxly laxness lay layaway layback layboy layer layerage layered layery layette Layia laying layland layman laymanship layne layoff layout layover layship laystall laystow laywoman Laz lazar lazaret lazaretto Lazarist lazarlike lazarly lazarole Lazarus laze lazily laziness lazule lazuli lazuline lazulite lazulitic lazurite lazy lazybird lazybones lazyboots lazyhood lazyish lazylegs lazyship lazzarone lazzaroni lea leach leacher leachman leachy Lead lead leadable leadableness leadage leadback leaded leaden leadenhearted leadenheartedness leadenly leadenness leadenpated leader leaderess leaderette leaderless leadership leadhillite leadin leadiness leading leadingly leadless leadman leadoff leadout leadproof leadsman leadstone leadway leadwood leadwork leadwort leady leaf leafage leafboy leafcup leafdom leafed leafen leafer leafery leafgirl leafit leafless leaflessness leaflet leafleteer leaflike leafstalk leafwork leafy league leaguelong leaguer Leah leak leakage leakance leaker leakiness leakless leakproof leaky leal lealand leally lealness lealty leam leamer lean Leander leaner leaning leanish leanly leanness leant leap leapable leaper leapfrog leapfrogger leapfrogging leaping leapingly leapt Lear lear Learchus learn learnable learned learnedly learnedness learner learnership learning learnt Learoyd leasable lease leasehold leaseholder leaseholding leaseless leasemonger leaser leash leashless leasing leasow least leastways leastwise leat leath leather leatherback leatherbark leatherboard leatherbush leathercoat leathercraft leatherer Leatherette leatherfish leatherflower leatherhead leatherine leatheriness leathering leatherize leatherjacket leatherleaf leatherlike leathermaker leathermaking leathern leatherneck Leatheroid leatherroot leatherside Leatherstocking leatherware leatherwing leatherwood leatherwork leatherworker leatherworking leathery leathwake leatman leave leaved leaveless leavelooker leaven leavening leavenish leavenless leavenous leaver leaverwood leaves leaving leavy leawill leban Lebanese lebbek lebensraum Lebistes lebrancho lecama lecaniid Lecaniinae lecanine Lecanium lecanomancer lecanomancy lecanomantic Lecanora Lecanoraceae lecanoraceous lecanorine lecanoroid lecanoscopic lecanoscopy lech Lechea lecher lecherous lecherously lecherousness lechery lechriodont Lechriodonta lechuguilla lechwe Lecidea Lecideaceae lecideaceous lecideiform lecideine lecidioid lecithal lecithalbumin lecithality lecithin lecithinase lecithoblast lecithoprotein leck lecker lecontite lecotropal lectern lection lectionary lectisternium lector lectorate lectorial lectorship lectotype lectress lectrice lectual lecture lecturee lectureproof lecturer lectureship lecturess lecturette lecyth lecythid Lecythidaceae lecythidaceous Lecythis lecythoid lecythus led Leda lede leden lederite ledge ledged ledgeless ledger ledgerdom ledging ledgment ledgy Ledidae ledol Ledum lee leeangle leeboard leech leecheater leecher leechery leeches leechkin leechlike leechwort leed leefang leeftail leek leekish leeky leep leepit leer leerily leeringly leerish leerness leeroway Leersia leery lees leet leetman leewan leeward leewardly leewardmost leewardness leeway leewill left leftish leftism leftist leftments leftmost leftness leftover leftward leftwardly leftwards leg legacy legal legalese legalism legalist legalistic legalistically legality legalization legalize legally legalness legantine legatary legate legatee legateship legatine legation legationary legative legato legator legatorial legend legenda legendarian legendary legendic legendist legendless Legendrian legendry leger legerdemain legerdemainist legerity leges legged legger legginess legging legginged leggy leghorn legibility legible legibleness legibly legific legion legionary legioned legioner legionnaire legionry legislate legislation legislational legislativ legislative legislatively legislator legislatorial legislatorially legislatorship legislatress legislature legist legit legitim legitimacy legitimate legitimately legitimateness legitimation legitimatist legitimatize legitimism legitimist legitimistic legitimity legitimization legitimize leglen legless leglessness leglet leglike legman legoa legpiece legpull legpuller legpulling legrope legua leguan Leguatia leguleian leguleious legume legumelin legumen legumin leguminiform Leguminosae leguminose leguminous Lehi lehr lehrbachite lehrman lehua lei Leibnitzian Leibnitzianism Leicester leighton Leila leimtype leiocephalous leiocome leiodermatous leiodermia leiomyofibroma leiomyoma leiomyomatous leiomyosarcoma leiophyllous Leiophyllum Leiothrix Leiotrichan Leiotriches Leiotrichi Leiotrichidae Leiotrichinae leiotrichine leiotrichous leiotrichy leiotropic Leipoa Leishmania leishmaniasis Leisten leister leisterer leisurable leisurably leisure leisured leisureful leisureless leisureliness leisurely leisureness leitmotiv Leitneria Leitneriaceae leitneriaceous Leitneriales lek lekach lekane lekha Lelia Lemaireocereus leman Lemanea Lemaneaceae lemel lemma lemmata lemming lemmitis lemmoblastic lemmocyte Lemmus Lemna Lemnaceae lemnaceous lemnad Lemnian lemniscate lemniscatic lemniscus lemography lemology lemon lemonade Lemonias Lemoniidae Lemoniinae lemonish lemonlike lemonweed lemonwood lemony Lemosi Lemovices lempira Lemuel lemur lemures Lemuria Lemurian lemurian lemurid Lemuridae lemuriform Lemurinae lemurine lemuroid Lemuroidea Len Lena lenad Lenaea Lenaean Lenaeum Lenaeus Lenape lenard Lenca Lencan lench lend lendable lendee lender Lendu lene length lengthen lengthener lengther lengthful lengthily lengthiness lengthsman lengthsome lengthsomeness lengthways lengthwise lengthy lenience leniency lenient leniently lenify Leninism Leninist Leninite lenis lenitic lenitive lenitively lenitiveness lenitude lenity lennilite Lennoaceae lennoaceous lennow leno lens lensed lensless lenslike Lent lent Lenten Lententide lenth lenthways Lentibulariaceae lentibulariaceous lenticel lenticellate lenticle lenticonus lenticula lenticular lenticulare lenticularis lenticularly lenticulate lenticulated lenticule lenticulostriate lenticulothalamic lentiform lentigerous lentiginous lentigo lentil Lentilla lentisc lentiscine lentisco lentiscus lentisk lentitude lentitudinous lento lentoid lentor lentous lenvoi lenvoy Lenzites Leo Leon Leonard Leonardesque Leonato leoncito Leonese leonhardite Leonid Leonine leonine leoninely leonines Leonis Leonist leonite Leonnoys Leonora Leonotis leontiasis Leontocebus leontocephalous Leontodon Leontopodium Leonurus leopard leoparde leopardess leopardine leopardite leopardwood Leopold Leopoldinia leopoldite leotard lepa Lepadidae lepadoid Lepanto lepargylic Lepargyraea Lepas Lepcha leper leperdom lepered lepidene lepidine Lepidium lepidoblastic Lepidodendraceae lepidodendraceous lepidodendrid lepidodendroid Lepidodendron lepidoid Lepidoidei lepidolite lepidomelane Lepidophloios lepidophyllous Lepidophyllum lepidophyte lepidophytic lepidoporphyrin lepidopter Lepidoptera lepidopteral lepidopteran lepidopterid lepidopterist lepidopterological lepidopterologist lepidopterology lepidopteron lepidopterous Lepidosauria lepidosaurian Lepidosiren Lepidosirenidae lepidosirenoid lepidosis Lepidosperma Lepidospermae Lepidosphes Lepidostei lepidosteoid Lepidosteus Lepidostrobus lepidote Lepidotes lepidotic Lepidotus Lepidurus Lepilemur Lepiota Lepisma Lepismatidae Lepismidae lepismoid Lepisosteidae Lepisosteus lepocyte Lepomis leporid Leporidae leporide leporiform leporine Leporis Lepospondyli lepospondylous Leposternidae Leposternon lepothrix lepra Lepralia lepralian leprechaun lepric leproid leprologic leprologist leprology leproma lepromatous leprosarium leprose leprosery leprosied leprosis leprosity leprosy leprous leprously leprousness Leptamnium Leptandra leptandrin leptid Leptidae leptiform Leptilon leptinolite Leptinotarsa leptite Leptocardia leptocardian Leptocardii leptocentric leptocephalan leptocephali leptocephalia leptocephalic leptocephalid Leptocephalidae leptocephaloid leptocephalous Leptocephalus leptocephalus leptocephaly leptocercal leptochlorite leptochroa leptochrous leptoclase leptodactyl Leptodactylidae leptodactylous Leptodactylus leptodermatous leptodermous Leptodora Leptodoridae Leptogenesis leptokurtic Leptolepidae Leptolepis Leptolinae leptomatic leptome Leptomedusae leptomedusan leptomeningeal leptomeninges leptomeningitis leptomeninx leptometer leptomonad Leptomonas Lepton lepton leptonecrosis leptonema leptopellic Leptophis leptophyllous leptoprosope leptoprosopic leptoprosopous leptoprosopy Leptoptilus Leptorchis leptorrhin leptorrhine leptorrhinian leptorrhinism leptosome leptosperm Leptospermum Leptosphaeria Leptospira leptospirosis leptosporangiate Leptostraca leptostracan leptostracous Leptostromataceae Leptosyne leptotene Leptothrix Leptotrichia Leptotyphlopidae Leptotyphlops leptus leptynite Lepus Ler Lernaea Lernaeacea Lernaean Lernaeidae lernaeiform lernaeoid Lernaeoides lerot lerp lerret Lerwa Lesath Lesbia Lesbian Lesbianism lesche Lesgh lesion lesional lesiy Leskea Leskeaceae leskeaceous Lesleya Lespedeza Lesquerella less lessee lesseeship lessen lessener lesser lessive lessn lessness lesson lessor lest lestiwarite lestobiosis lestobiotic Lestodon Lestosaurus lestrad Lestrigon Lestrigonian let letch letchy letdown lete lethal lethality lethalize lethally lethargic lethargical lethargically lethargicalness lethargize lethargus lethargy Lethe Lethean lethiferous Lethocerus lethologica Letitia Leto letoff Lett lettable letten letter lettered letterer letteret lettergram letterhead letterin lettering letterleaf letterless letterpress letterspace letterweight letterwood Lettic Lettice Lettish lettrin lettsomite lettuce Letty letup leu Leucadendron Leucadian leucaemia leucaemic Leucaena leucaethiop leucaethiopic leucaniline leucanthous leucaugite leucaurin leucemia leucemic Leucetta leuch leuchaemia leuchemia leuchtenbergite Leucichthys Leucifer Leuciferidae leucine Leucippus leucism leucite leucitic leucitis leucitite leucitohedron leucitoid Leuckartia Leuckartiidae leuco leucobasalt leucoblast leucoblastic Leucobryaceae Leucobryum leucocarpous leucochalcite leucocholic leucocholy leucochroic leucocidic leucocidin leucocism leucocrate leucocratic Leucocrinum leucocyan leucocytal leucocyte leucocythemia leucocythemic leucocytic leucocytoblast leucocytogenesis leucocytoid leucocytology leucocytolysin leucocytolysis leucocytolytic leucocytometer leucocytopenia leucocytopenic leucocytoplania leucocytopoiesis leucocytosis leucocytotherapy leucocytotic Leucocytozoon leucoderma leucodermatous leucodermic leucoencephalitis leucogenic leucoid leucoindigo leucoindigotin Leucojaceae Leucojum leucolytic leucoma leucomaine leucomatous leucomelanic leucomelanous leucon Leuconostoc leucopenia leucopenic leucophane leucophanite leucophoenicite leucophore leucophyllous leucophyre leucoplakia leucoplakial leucoplast leucoplastid leucopoiesis leucopoietic leucopyrite leucoquinizarin leucorrhea leucorrheal leucoryx leucosis Leucosolenia Leucosoleniidae leucospermous leucosphenite leucosphere leucospheric leucostasis Leucosticte leucosyenite leucotactic Leucothea Leucothoe leucotic leucotome leucotomy leucotoxic leucous leucoxene leucyl leud leuk leukemia leukemic leukocidic leukocidin leukosis leukotic leuma lev Levana levance Levant levant Levanter levanter Levantine levator levee level leveler levelheaded levelheadedly levelheadedness leveling levelish levelism levelly levelman levelness lever leverage leverer leveret leverman levers leverwood Levi leviable leviathan levier levigable levigate levigation levigator levin levining levir levirate leviratical leviration Levis Levisticum levitant levitate levitation levitational levitative levitator Levite Levitical Leviticalism Leviticality Levitically Leviticalness Leviticism Leviticus Levitism levity levo levoduction levogyrate levogyre levogyrous levolactic levolimonene levorotation levorotatory levotartaric levoversion levulic levulin levulinic levulose levulosuria levy levyist levynite Lew lew Lewanna lewd lewdly lewdness Lewie Lewis lewis Lewisia Lewisian lewisite lewisson lewth lexia lexical lexicalic lexicality lexicographer lexicographian lexicographic lexicographical lexicographically lexicographist lexicography lexicologic lexicological lexicologist lexicology lexicon lexiconist lexiconize lexigraphic lexigraphical lexigraphically lexigraphy lexiphanic lexiphanicism ley leyland leysing Lezghian lherzite lherzolite Lhota li liability liable liableness liaison liana liang liar liard Lias Liassic Liatris libament libaniferous libanophorous libanotophorous libant libate libation libationary libationer libatory libber libbet libbra Libby libel libelant libelee libeler libelist libellary libellate Libellula libellulid Libellulidae libelluloid libelous libelously Liber liber liberal Liberalia liberalism liberalist liberalistic liberality liberalization liberalize liberalizer liberally liberalness liberate liberation liberationism liberationist liberative liberator liberatory liberatress Liberia Liberian liberomotor libertarian libertarianism Libertas liberticidal liberticide libertinage libertine libertinism liberty libertyless libethenite libidibi libidinal libidinally libidinosity libidinous libidinously libidinousness libido Libitina libken Libocedrus Libra libra libral librarian librarianess librarianship librarious librarius library libraryless librate libration libratory libretti librettist libretto Librid libriform libroplast Libyan Libytheidae Libytheinae Licania licareol licca licensable license licensed licensee licenseless licenser licensor licensure licentiate licentiateship licentiation licentious licentiously licentiousness lich licham lichanos lichen lichenaceous lichened Lichenes licheniasis lichenic lichenicolous licheniform lichenin lichenism lichenist lichenivorous lichenization lichenize lichenlike lichenographer lichenographic lichenographical lichenographist lichenography lichenoid lichenologic lichenological lichenologist lichenology Lichenopora Lichenoporidae lichenose licheny lichi Lichnophora Lichnophoridae Licinian licit licitation licitly licitness lick licker lickerish lickerishly lickerishness licking lickpenny lickspit lickspittle lickspittling licorice licorn licorne lictor lictorian Licuala lid Lida lidded lidder Lide lidflower lidgate lidless lie liebenerite Liebfraumilch liebigite lied lief liege liegedom liegeful liegefully liegeless liegely liegeman lieger lien lienal lienculus lienee lienic lienitis lienocele lienogastric lienointestinal lienomalacia lienomedullary lienomyelogenous lienopancreatic lienor lienorenal lienotoxin lienteria lienteric lientery lieproof lieprooflier lieproofliest lier lierne lierre liesh liespfund lieu lieue lieutenancy lieutenant lieutenantry lieutenantship lieve lievrite Lif life lifeblood lifeboat lifeboatman lifeday lifedrop lifeful lifefully lifefulness lifeguard lifehold lifeholder lifeless lifelessly lifelessness lifelet lifelike lifelikeness lifeline lifelong lifer liferent liferenter liferentrix liferoot lifesaver lifesaving lifesome lifesomely lifesomeness lifespring lifetime lifeward lifework lifey lifo lift liftable lifter lifting liftless liftman ligable ligament ligamental ligamentary ligamentous ligamentously ligamentum ligas ligate ligation ligator ligature ligeance ligger light lightable lightboat lightbrained lighten lightener lightening lighter lighterage lighterful lighterman lightface lightful lightfulness lighthead lightheaded lightheadedly lightheadedness lighthearted lightheartedly lightheartedness lighthouse lighthouseman lighting lightish lightkeeper lightless lightlessness lightly lightman lightmanship lightmouthed lightness lightning lightninglike lightningproof lightproof lightroom lightscot lightship lightsman lightsome lightsomely lightsomeness lighttight lightwards lightweight lightwood lightwort lignaloes lignatile ligne ligneous lignescent lignicole lignicoline lignicolous ligniferous lignification ligniform lignify lignin ligninsulphonate ligniperdous lignite lignitic lignitiferous lignitize lignivorous lignocellulose lignoceric lignography lignone lignose lignosity lignosulphite lignosulphonate lignum ligroine ligula ligular Ligularia ligulate ligulated ligule Liguliflorae liguliflorous liguliform ligulin liguloid Liguorian ligure Ligurian ligurite ligurition Ligusticum ligustrin Ligustrum Ligyda Ligydidae Lihyanite liin lija likability likable likableness like likelihead likelihood likeliness likely liken likeness liker likesome likeways likewise likin liking liknon Lila lilac lilaceous lilacin lilacky lilacthroat lilactide Lilaeopsis lile Liliaceae liliaceous Liliales Lilian lilied liliform Liliiflorae Lilith Lilium lill lillianite lillibullero Lilliput Lilliputian Lilliputianize lilt liltingly liltingness lily lilyfy lilyhanded lilylike lilywood lilywort lim Lima Limacea limacel limaceous Limacidae limaciform Limacina limacine limacinid Limacinidae limacoid limacon limaille liman limation Limawood Limax limb limbal limbat limbate limbation limbeck limbed limber limberham limberly limberness limbers limbic limbie limbiferous limbless limbmeal limbo limboinfantum limbous Limbu Limburger limburgite limbus limby lime limeade Limean limeberry limebush limehouse limekiln limeless limelight limelighter limelike limeman limen limequat limer Limerick limes limestone limetta limettin limewash limewater limewort limey Limicolae limicoline limicolous Limidae liminal liminary liminess liming limit limitable limitableness limital limitarian limitary limitate limitation limitative limitatively limited limitedly limitedness limiter limiting limitive limitless limitlessly limitlessness limitrophe limivorous limma limmer limmock limmu limn limnanth Limnanthaceae limnanthaceous Limnanthemum Limnanthes limner limnery limnetic Limnetis limniad limnimeter limnimetric limnite limnobiologic limnobiological limnobiologically limnobiology limnobios Limnobium Limnocnida limnograph limnologic limnological limnologically limnologist limnology limnometer limnophile limnophilid Limnophilidae limnophilous limnoplankton Limnorchis Limnoria Limnoriidae limnorioid Limodorum limoid limonene limoniad limonin limonite limonitic limonitization limonium Limosa limose Limosella Limosi limous limousine limp limper limpet limphault limpid limpidity limpidly limpidness limpily limpin limpiness limping limpingly limpingness limpish limpkin limply limpness limpsy limpwort limpy limsy limu limulid Limulidae limuloid Limuloidea Limulus limurite limy lin Lina lina linable Linaceae linaceous linaga linage linaloa linalol linalool linamarin Linanthus Linaria linarite linch linchbolt linchet linchpin linchpinned lincloth Lincoln Lincolnian Lincolniana Lincolnlike linctus lindackerite lindane linden linder Lindera Lindleyan lindo lindoite line linea lineage lineaged lineal lineality lineally lineament lineamental lineamentation lineameter linear linearifolius linearity linearization linearize linearly lineate lineated lineation lineature linecut lined lineiform lineless linelet lineman linen Linene linenette linenize linenizer linenman lineocircular lineograph lineolate lineolated liner linesman Linet linewalker linework ling linga Lingayat lingberry lingbird linge lingel lingenberry linger lingerer lingerie lingo lingonberry Lingoum lingtow lingtowman lingua linguacious linguaciousness linguadental linguaeform lingual linguale linguality lingualize lingually linguanasal Linguata Linguatula Linguatulida Linguatulina linguatuline linguatuloid linguet linguidental linguiform linguipotence linguist linguister linguistic linguistical linguistically linguistician linguistics linguistry lingula lingulate lingulated Lingulella lingulid Lingulidae linguliferous linguliform linguloid linguodental linguodistal linguogingival linguopalatal linguopapillitis linguoversion lingwort lingy linha linhay linie liniment linin lininess lining linitis liniya linja linje link linkable linkage linkboy linked linkedness linker linking linkman links linksmith linkwork linky linn Linnaea Linnaean Linnaeanism linnaeite Linne linnet lino linolate linoleic linolein linolenate linolenic linolenin linoleum linolic linolin linometer linon Linopteris Linos Linotype linotype linotyper linotypist linous linoxin linoxyn linpin Linsang linseed linsey linstock lint lintel linteled linteling linten linter lintern lintie lintless lintonite lintseed lintwhite linty Linum Linus linwood liny Linyphia Linyphiidae liodermia liomyofibroma liomyoma lion lioncel Lionel lionel lionesque lioness lionet lionheart lionhearted lionheartedness lionhood lionism lionizable lionization lionize lionizer lionlike lionly lionproof lionship Liothrix Liotrichi Liotrichidae liotrichine lip lipa lipacidemia lipaciduria Lipan Liparian liparian liparid Liparidae Liparididae Liparis liparite liparocele liparoid liparomphalus liparous lipase lipectomy lipemia Lipeurus lipide lipin lipless liplet liplike lipoblast lipoblastoma Lipobranchia lipocaic lipocardiac lipocele lipoceratous lipocere lipochondroma lipochrome lipochromogen lipoclasis lipoclastic lipocyte lipodystrophia lipodystrophy lipoferous lipofibroma lipogenesis lipogenetic lipogenic lipogenous lipogram lipogrammatic lipogrammatism lipogrammatist lipography lipohemia lipoid lipoidal lipoidemia lipoidic lipolysis lipolytic lipoma lipomata lipomatosis lipomatous lipometabolic lipometabolism lipomorph lipomyoma lipomyxoma lipopexia lipophagic lipophore lipopod Lipopoda lipoprotein liposarcoma liposis liposome lipostomy lipothymial lipothymic lipothymy lipotrophic lipotrophy lipotropic lipotropy lipotype Lipotyphla lipovaccine lipoxenous lipoxeny lipped lippen lipper lipperings Lippia lippiness lipping lippitude lippitudo lippy lipsanographer lipsanotheca lipstick lipuria lipwork liquable liquamen liquate liquation liquefacient liquefaction liquefactive liquefiable liquefier liquefy liquesce liquescence liquescency liquescent liqueur liquid liquidable Liquidambar liquidamber liquidate liquidation liquidator liquidatorship liquidity liquidize liquidizer liquidless liquidly liquidness liquidogenic liquidogenous liquidy liquiform liquor liquorer liquorish liquorishly liquorishness liquorist liquorless lira lirate liration lire lirella lirellate lirelliform lirelline lirellous Liriodendron liripipe liroconite lis Lisa Lisbon Lise lisere Lisette lish lisk Lisle lisle lisp lisper lispingly lispund liss Lissamphibia lissamphibian Lissencephala lissencephalic lissencephalous Lissoflagellata lissoflagellate lissom lissome lissomely lissomeness lissotrichan Lissotriches lissotrichous lissotrichy list listable listed listedness listel listen listener listening lister Listera listerellosis Listeria Listerian Listerine Listerism Listerize listing listless listlessly listlessness listred listwork Lisuarte lit litaneutical litany litanywise litas litation litch litchi lite liter literacy literaily literal literalism literalist literalistic literality literalization literalize literalizer literally literalminded literalmindedness literalness literarian literariness literary literaryism literate literati literation literatist literato literator literature literatus literose literosity lith lithagogue lithangiuria lithanthrax litharge lithe lithectasy lithectomy lithely lithemia lithemic litheness lithesome lithesomeness lithi lithia lithiasis lithiastic lithiate lithic lithifaction lithification lithify lithite lithium litho lithobiid Lithobiidae lithobioid Lithobius Lithocarpus lithocenosis lithochemistry lithochromatic lithochromatics lithochromatographic lithochromatography lithochromography lithochromy lithoclase lithoclast lithoclastic lithoclasty lithoculture lithocyst lithocystotomy Lithodes lithodesma lithodialysis lithodid Lithodidae lithodomous Lithodomus lithofracteur lithofractor lithogenesis lithogenetic lithogenous lithogeny lithoglyph lithoglypher lithoglyphic lithoglyptic lithoglyptics lithograph lithographer lithographic lithographical lithographically lithographize lithography lithogravure lithoid lithoidite litholabe litholapaxy litholatrous litholatry lithologic lithological lithologically lithologist lithology litholysis litholyte litholytic lithomancy lithomarge lithometer lithonephria lithonephritis lithonephrotomy lithontriptic lithontriptist lithontriptor lithopedion lithopedium lithophagous lithophane lithophanic lithophany lithophilous lithophone lithophotography lithophotogravure lithophthisis lithophyl lithophyllous lithophysa lithophysal lithophyte lithophytic lithophytous lithopone lithoprint lithoscope lithosian lithosiid Lithosiidae Lithosiinae lithosis lithosol lithosperm lithospermon lithospermous Lithospermum lithosphere lithotint lithotome lithotomic lithotomical lithotomist lithotomize lithotomous lithotomy lithotony lithotresis lithotripsy lithotriptor lithotrite lithotritic lithotritist lithotrity lithotype lithotypic lithotypy lithous lithoxyl lithsman Lithuanian Lithuanic lithuresis lithuria lithy liticontestation litigable litigant litigate litigation litigationist litigator litigatory litigiosity litigious litigiously litigiousness Litiopa litiscontest litiscontestation litiscontestational litmus Litopterna Litorina Litorinidae litorinoid litotes litra Litsea litster litten litter litterateur litterer littermate littery little littleleaf littleneck littleness littlewale littling littlish littoral Littorella littress lituiform lituite Lituites Lituitidae Lituola lituoline lituoloid liturate liturgical liturgically liturgician liturgics liturgiological liturgiologist liturgiology liturgism liturgist liturgistic liturgistical liturgize liturgy litus lituus Litvak Lityerses litz Liukiu Liv livability livable livableness live liveborn lived livedo livelihood livelily liveliness livelong lively liven liveness liver liverance liverberry livered liverhearted liverheartedness liveried liverish liverishness liverleaf liverless Liverpudlian liverwort liverwurst livery liverydom liveryless liveryman livestock Livian livid lividity lividly lividness livier living livingless livingly livingness livingstoneite Livish Livistona Livonian livor livre liwan lixive lixivial lixiviate lixiviation lixiviator lixivious lixivium Liz lizard lizardtail Lizzie llama Llanberisslate Llandeilo Llandovery llano llautu Lleu Llew Lloyd Lludd llyn Lo lo Loa loa loach load loadage loaded loaden loader loading loadless loadpenny loadsome loadstone loaf loafer loaferdom loaferish loafing loafingly loaflet loaghtan loam loamily loaminess loaming loamless Loammi loamy loan loanable loaner loanin loanmonger loanword Loasa Loasaceae loasaceous loath loathe loather loathful loathfully loathfulness loathing loathingly loathliness loathly loathness loathsome loathsomely loathsomeness Loatuko loave lob Lobachevskian lobal Lobale lobar Lobaria Lobata Lobatae lobate lobated lobately lobation lobber lobbish lobby lobbyer lobbyism lobbyist lobbyman lobcock lobe lobectomy lobed lobefoot lobefooted lobeless lobelet Lobelia Lobeliaceae lobeliaceous lobelin lobeline lobellated lobfig lobiform lobigerous lobing lobiped loblolly lobo lobola lobopodium Lobosa lobose lobotomy lobscourse lobscouse lobscouser lobster lobstering lobsterish lobsterlike lobsterproof lobtail lobular Lobularia lobularly lobulate lobulated lobulation lobule lobulette lobulose lobulous lobworm loca locable local locale localism localist localistic locality localizable localization localize localizer locally localness locanda Locarnist Locarnite Locarnize Locarno locate location locational locative locator locellate locellus loch lochage lochan lochetic lochia lochial lochiocolpos lochiocyte lochiometra lochiometritis lochiopyra lochiorrhagia lochiorrhea lochioschesis Lochlin lochometritis lochoperitonitis lochopyra lochus lochy loci lociation lock lockable lockage Lockatong lockbox locked locker lockerman locket lockful lockhole Lockian Lockianism locking lockjaw lockless locklet lockmaker lockmaking lockman lockout lockpin Lockport lockram locksman locksmith locksmithery locksmithing lockspit lockup lockwork locky loco locodescriptive locofoco Locofocoism locoism locomobile locomobility locomote locomotility locomotion locomotive locomotively locomotiveman locomotiveness locomotivity locomotor locomotory locomutation locoweed Locrian Locrine loculament loculamentose loculamentous locular loculate loculated loculation locule loculicidal loculicidally loculose loculus locum locus locust locusta locustal locustberry locustelle locustid Locustidae locusting locustlike locution locutor locutorship locutory lod Loddigesia lode lodemanage lodesman lodestar lodestone lodestuff lodge lodgeable lodged lodgeful lodgeman lodgepole lodger lodgerdom lodging lodginghouse lodgings lodgment Lodha lodicule Lodoicea Lodowic Lodowick Lodur Loegria loess loessal loessial loessic loessland loessoid lof lofstelle loft lofter loftily loftiness lofting loftless loftman loftsman lofty log loganberry Logania Loganiaceae loganiaceous loganin logaoedic logarithm logarithmal logarithmetic logarithmetical logarithmetically logarithmic logarithmical logarithmically logarithmomancy logbook logcock loge logeion logeum loggat logged logger loggerhead loggerheaded loggia loggin logging loggish loghead logheaded logia logic logical logicalist logicality logicalization logicalize logically logicalness logicaster logician logicism logicist logicity logicize logicless logie login logion logistic logistical logistician logistics logium loglet loglike logman logocracy logodaedaly logogogue logogram logogrammatic logograph logographer logographic logographical logographically logography logogriph logogriphic logoi logolatry logology logomach logomacher logomachic logomachical logomachist logomachize logomachy logomancy logomania logomaniac logometer logometric logometrical logometrically logopedia logopedics logorrhea logos logothete logotype logotypy Logres Logria Logris logroll logroller logrolling logway logwise logwood logwork logy lohan Lohana Lohar lohoch loimic loimography loimology loin loincloth loined loir Lois Loiseleuria loiter loiterer loiteringly loiteringness loka lokao lokaose lokapala loke loket lokiec Lokindra Lokman Lola Loliginidae Loligo Lolium loll Lollard Lollardian Lollardism Lollardist Lollardize Lollardlike Lollardry Lollardy loller lollingite lollingly lollipop lollop lollopy lolly Lolo loma lomastome lomatine lomatinous Lomatium Lombard lombard Lombardeer Lombardesque Lombardian Lombardic lomboy Lombrosian loment lomentaceous Lomentaria lomentariaceous lomentum lomita lommock Lonchocarpus Lonchopteridae Londinensian Londoner Londonese Londonesque Londonian Londonish Londonism Londonization Londonize Londony Londres lone lonelihood lonelily loneliness lonely loneness lonesome lonesomely lonesomeness long longa longan longanimity longanimous Longaville longbeak longbeard longboat longbow longcloth longe longear longer longeval longevity longevous longfelt longfin longful longhair longhand longhead longheaded longheadedly longheadedness longhorn longicaudal longicaudate longicone longicorn Longicornia longilateral longilingual longiloquence longimanous longimetric longimetry longing longingly longingness Longinian longinquity longipennate longipennine longirostral longirostrate longirostrine Longirostrines longisection longish longitude longitudinal longitudinally longjaw longleaf longlegs longly longmouthed longness Longobard Longobardi Longobardian Longobardic longs longshanks longshore longshoreman longsome longsomely longsomeness longspun longspur longtail longue longulite longway longways longwise longwool longwork longwort Lonicera Lonk lonquhard lontar loo looby lood loof loofah loofie loofness look looker looking lookout lookum loom loomer loomery looming loon loonery looney loony loop looper loopful loophole looping loopist looplet looplike loopy loose loosely loosemouthed loosen loosener looseness looser loosestrife loosing loosish loot lootable looten looter lootie lootiewallah lootsman lop lope loper Lopezia lophiid Lophiidae lophine Lophiodon lophiodont Lophiodontidae lophiodontoid Lophiola Lophiomyidae Lophiomyinae Lophiomys lophiostomate lophiostomous lophobranch lophobranchiate Lophobranchii lophocalthrops lophocercal Lophocome Lophocomi Lophodermium lophodont Lophophora lophophoral lophophore Lophophorinae lophophorine Lophophorus lophophytosis Lophopoda Lophornis Lophortyx lophosteon lophotriaene lophotrichic lophotrichous Lophura lopolith loppard lopper loppet lopping loppy lopseed lopsided lopsidedly lopsidedness lopstick loquacious loquaciously loquaciousness loquacity loquat loquence loquent loquently Lora lora loral loran lorandite loranskite Loranthaceae loranthaceous Loranthus lorarius lorate lorcha lord lording lordkin lordless lordlet lordlike lordlily lordliness lordling lordly lordolatry lordosis lordotic lordship lordwood lordy lore loreal lored loreless Lorenzan lorenzenite Lorettine lorettoite lorgnette lori loric lorica loricarian Loricariidae loricarioid Loricata loricate Loricati lorication loricoid lorikeet lorilet lorimer loriot loris Lorius lormery lorn lornness loro Lorraine Lorrainer Lorrainese lorriker lorry lors lorum lory losable losableness lose losel loselism losenger loser losh losing loss lossenite lossless lossproof lost lostling lostness Lot lot Lota lota lotase lote lotebush Lotharingian lotic lotiform lotion lotment Lotophagi lotophagous lotophagously lotrite lots Lotta Lotte lotter lottery Lottie lotto Lotuko lotus lotusin lotuslike Lou louch louchettes loud louden loudering loudish loudly loudmouthed loudness louey lough lougheen Louie Louis Louisa Louise Louisiana Louisianian louisine louk loukoum loulu lounder lounderer lounge lounger lounging loungingly loungy Loup loup loupe lour lourdy louse louseberry lousewort lousily lousiness louster lousy lout louter louther loutish loutishly loutishness loutrophoros louty louvar louver louvered louvering louverwork Louvre lovability lovable lovableness lovably lovage love lovebird loveflower loveful lovelass loveless lovelessly lovelessness lovelihead lovelily loveliness loveling lovelock lovelorn lovelornness lovely loveman lovemate lovemonger loveproof lover loverdom lovered loverhood lovering loverless loverliness loverly lovership loverwise lovesick lovesickness lovesome lovesomely lovesomeness loveworth loveworthy loving lovingly lovingness low lowa lowan lowbell lowborn lowboy lowbred lowdah lowder loweite lower lowerable lowerclassman lowerer lowering loweringly loweringness lowermost lowery lowigite lowish lowishly lowishness lowland lowlander lowlily lowliness lowly lowmen lowmost lown lowness lownly lowth Lowville lowwood lowy lox loxia loxic Loxiinae loxoclase loxocosm loxodograph Loxodon loxodont Loxodonta loxodontous loxodrome loxodromic loxodromical loxodromically loxodromics loxodromism Loxolophodon loxolophodont Loxomma loxophthalmus Loxosoma Loxosomidae loxotic loxotomy loy loyal loyalism loyalist loyalize loyally loyalness loyalty Loyolism Loyolite lozenge lozenged lozenger lozengeways lozengewise lozengy Lu Luba lubber lubbercock Lubberland lubberlike lubberliness lubberly lube lubra lubric lubricant lubricate lubrication lubricational lubricative lubricator lubricatory lubricious lubricity lubricous lubrifaction lubrification lubrify lubritorian lubritorium Lucan Lucania lucanid Lucanidae Lucanus lucarne Lucayan lucban Lucchese luce lucence lucency lucent Lucentio lucently Luceres lucern lucernal Lucernaria lucernarian Lucernariidae lucerne lucet Luchuan Lucia Lucian Luciana lucible lucid lucida lucidity lucidly lucidness lucifee Lucifer luciferase Luciferian Luciferidae luciferin luciferoid luciferous luciferously luciferousness lucific luciform lucifugal lucifugous lucigen Lucile Lucilia lucimeter Lucina Lucinacea Lucinda Lucinidae lucinoid Lucite Lucius lucivee luck lucken luckful luckie luckily luckiness luckless lucklessly lucklessness Lucknow lucky lucration lucrative lucratively lucrativeness lucre Lucrece Lucretia Lucretian Lucretius lucriferous lucriferousness lucrific lucrify Lucrine luctation luctiferous luctiferousness lucubrate lucubration lucubrator lucubratory lucule luculent luculently Lucullan lucullite Lucuma lucumia Lucumo lucumony Lucy lucy ludden Luddism Luddite Ludditism ludefisk Ludgate Ludgathian Ludgatian Ludian ludibrious ludibry ludicropathetic ludicroserious ludicrosity ludicrosplenetic ludicrous ludicrously ludicrousness ludification ludlamite Ludlovian Ludlow ludo Ludolphian Ludwig ludwigite lue Luella lues luetic luetically lufberry lufbery luff Luffa Lug lug Luganda luge luger luggage luggageless luggar lugged lugger luggie Luggnagg lugmark Lugnas lugsail lugsome lugubriosity lugubrious lugubriously lugubriousness lugworm luhinga Luian Luigi luigino Luiseno Luite lujaurite Luke luke lukely lukeness lukewarm lukewarmish lukewarmly lukewarmness lukewarmth Lula lulab lull lullaby luller Lullian lulliloo lullingly Lulu lulu lum lumachel lumbaginous lumbago lumbang lumbar lumbarization lumbayao lumber lumberdar lumberdom lumberer lumbering lumberingly lumberingness lumberjack lumberless lumberly lumberman lumbersome lumberyard lumbocolostomy lumbocolotomy lumbocostal lumbodorsal lumbodynia lumbosacral lumbovertebral lumbrical lumbricalis Lumbricidae lumbriciform lumbricine lumbricoid lumbricosis Lumbricus lumbrous lumen luminaire Luminal luminal luminance luminant luminarious luminarism luminarist luminary luminate lumination luminative luminator lumine luminesce luminescence luminescent luminiferous luminificent luminism luminist luminologist luminometer luminosity luminous luminously luminousness lummox lummy lump lumper lumpet lumpfish lumpily lumpiness lumping lumpingly lumpish lumpishly lumpishness lumpkin lumpman lumpsucker lumpy luna lunacy lunambulism lunar lunare Lunaria lunarian lunarist lunarium lunary lunate lunatellus lunately lunatic lunatically lunation lunatize lunatum lunch luncheon luncheoner luncheonette luncheonless luncher lunchroom Lunda Lundinarium lundress lundyfoot lune Lunel lunes lunette lung lunge lunged lungeous lunger lungfish lungflower lungful lungi lungie lungis lungless lungmotor lungsick lungworm lungwort lungy lunicurrent luniform lunisolar lunistice lunistitial lunitidal Lunka lunkhead lunn lunoid lunt lunula lunular Lunularia lunulate lunulated lunule lunulet lunulite Lunulites Luo lupanarian lupanine lupe lupeol lupeose Lupercal Lupercalia Lupercalian Luperci lupetidine lupicide Lupid lupiform lupinaster lupine lupinin lupinine lupinosis lupinous Lupinus lupis lupoid lupous lupulic lupulin lupuline lupulinic lupulinous lupulinum lupulus lupus lupuserythematosus Lur lura lural lurch lurcher lurchingfully lurchingly lurchline lurdan lurdanism lure lureful lurement lurer luresome lurg lurgworm Luri lurid luridity luridly luridness luringly lurk lurker lurkingly lurkingness lurky lurrier lurry Lusatian Luscinia luscious lusciously lusciousness lush Lushai lushburg Lushei lusher lushly lushness lushy Lusiad Lusian Lusitania Lusitanian lusk lusky lusory lust luster lusterer lusterless lusterware lustful lustfully lustfulness lustihead lustily lustiness lustless lustra lustral lustrant lustrate lustration lustrative lustratory lustreless lustrical lustrification lustrify lustrine lustring lustrous lustrously lustrousness lustrum lusty lut lutaceous lutanist lutany Lutao lutation Lutayo lute luteal lutecia lutecium lutein luteinization luteinize lutelet lutemaker lutemaking luteo luteocobaltic luteofulvous luteofuscescent luteofuscous luteolin luteolous luteoma luteorufescent luteous luteovirescent luter lutescent lutestring Lutetia Lutetian lutetium luteway lutfisk Luther Lutheran Lutheranic Lutheranism Lutheranize Lutheranizer Lutherism Lutherist luthern luthier lutianid Lutianidae lutianoid Lutianus lutidine lutidinic luting lutist Lutjanidae Lutjanus lutose Lutra Lutraria Lutreola lutrin Lutrinae lutrine lutulence lutulent Luvaridae Luvian Luvish Luwian lux luxate luxation luxe Luxemburger Luxemburgian luxulianite luxuriance luxuriancy luxuriant luxuriantly luxuriantness luxuriate luxuriation luxurious luxuriously luxuriousness luxurist luxury luxus Luzula Lwo ly lyam lyard Lyas Lycaena lycaenid Lycaenidae lycanthrope lycanthropia lycanthropic lycanthropist lycanthropize lycanthropous lycanthropy lyceal lyceum Lychnic Lychnis lychnomancy lychnoscope lychnoscopic Lycian lycid Lycidae Lycium Lycodes Lycodidae lycodoid lycopene Lycoperdaceae lycoperdaceous Lycoperdales lycoperdoid Lycoperdon lycoperdon Lycopersicon lycopin lycopod lycopode Lycopodiaceae lycopodiaceous Lycopodiales Lycopodium Lycopsida Lycopsis Lycopus lycorine Lycosa lycosid Lycosidae lyctid Lyctidae Lyctus Lycus lyddite Lydia Lydian lydite lye Lyencephala lyencephalous lyery lygaeid Lygaeidae Lygeum Lygodium Lygosoma lying lyingly Lymantria lymantriid Lymantriidae lymhpangiophlebitis Lymnaea lymnaean lymnaeid Lymnaeidae lymph lymphad lymphadenectasia lymphadenectasis lymphadenia lymphadenitis lymphadenoid lymphadenoma lymphadenopathy lymphadenosis lymphaemia lymphagogue lymphangeitis lymphangial lymphangiectasis lymphangiectatic lymphangiectodes lymphangiitis lymphangioendothelioma lymphangiofibroma lymphangiology lymphangioma lymphangiomatous lymphangioplasty lymphangiosarcoma lymphangiotomy lymphangitic lymphangitis lymphatic lymphatical lymphation lymphatism lymphatitis lymphatolysin lymphatolysis lymphatolytic lymphectasia lymphedema lymphemia lymphenteritis lymphoblast lymphoblastic lymphoblastoma lymphoblastosis lymphocele lymphocyst lymphocystosis lymphocyte lymphocythemia lymphocytic lymphocytoma lymphocytomatosis lymphocytosis lymphocytotic lymphocytotoxin lymphodermia lymphoduct lymphogenic lymphogenous lymphoglandula lymphogranuloma lymphoid lymphoidectomy lymphology lymphoma lymphomatosis lymphomatous lymphomonocyte lymphomyxoma lymphopathy lymphopenia lymphopenial lymphopoiesis lymphopoietic lymphoprotease lymphorrhage lymphorrhagia lymphorrhagic lymphorrhea lymphosarcoma lymphosarcomatosis lymphosarcomatous lymphosporidiosis lymphostasis lymphotaxis lymphotome lymphotomy lymphotoxemia lymphotoxin lymphotrophic lymphotrophy lymphous lymphuria lymphy lyncean Lynceus lynch lynchable lyncher Lyncid lyncine Lynette Lyngbyaceae Lyngbyeae lynnhaven lynx Lyomeri lyomerous Lyon Lyonese Lyonetia lyonetiid Lyonetiidae Lyonnais lyonnaise Lyonnesse lyophile lyophilization lyophilize lyophobe Lyopoma Lyopomata lyopomatous lyotrope lypemania Lyperosia lypothymia lyra Lyraid lyrate lyrated lyrately lyraway lyre lyrebird lyreflower lyreman lyretail lyric lyrical lyrically lyricalness lyrichord lyricism lyricist lyricize Lyrid lyriform lyrism lyrist Lyrurus lys Lysander lysate lyse Lysenkoism lysidine lysigenic lysigenous lysigenously Lysiloma Lysimachia Lysimachus lysimeter lysin lysine lysis Lysistrata lysogen lysogenesis lysogenetic lysogenic lysozyme lyssa lyssic lyssophobia lyterian Lythraceae lythraceous Lythrum lytic lytta lyxose M m Ma ma maam maamselle Mab Maba Mabel Mabellona mabi Mabinogion mabolo Mac mac macaasim macabre macabresque Macaca macaco Macacus macadam Macadamia macadamite macadamization macadamize macadamizer Macaglia macan macana Macanese macao macaque Macaranga Macarani Macareus macarism macarize macaroni macaronic macaronical macaronically macaronicism macaronism macaroon Macartney Macassar Macassarese macaw Macbeth Maccabaeus Maccabean Maccabees maccaboy macco maccoboy Macduff mace macedoine Macedon Macedonian Macedonic macehead maceman macer macerate macerater maceration Macflecknoe machairodont Machairodontidae Machairodontinae Machairodus machan machar machete Machetes machi Machiavel Machiavellian Machiavellianism Machiavellianly Machiavellic Machiavellism machiavellist Machiavellistic machicolate machicolation machicoulis Machicui machila Machilidae Machilis machin machinability machinable machinal machinate machination machinator machine machineful machineless machinelike machinely machineman machinemonger machiner machinery machinification machinify machinism machinist machinization machinize machinoclast machinofacture machinotechnique machinule Machogo machopolyp machree macies Macigno macilence macilency macilent mack mackenboy mackerel mackereler mackereling Mackinaw mackins mackintosh mackintoshite mackle macklike macle Macleaya macled Maclura Maclurea maclurin Macmillanite maco Macon maconite Macracanthorhynchus macracanthrorhynchiasis macradenous macrame macrander macrandrous macrauchene Macrauchenia macraucheniid Macraucheniidae macraucheniiform macrauchenioid macrencephalic macrencephalous macro macroanalysis macroanalyst macroanalytical macrobacterium macrobian macrobiosis macrobiote macrobiotic macrobiotics Macrobiotus macroblast macrobrachia macrocarpous Macrocentrinae Macrocentrus macrocephalia macrocephalic macrocephalism macrocephalous macrocephalus macrocephaly macrochaeta macrocheilia Macrochelys macrochemical macrochemically macrochemistry Macrochira macrochiran Macrochires macrochiria Macrochiroptera macrochiropteran macrocladous macroclimate macroclimatic macrococcus macrocoly macroconidial macroconidium macroconjugant macrocornea macrocosm macrocosmic macrocosmical macrocosmology macrocosmos macrocrystalline macrocyst Macrocystis macrocyte macrocythemia macrocytic macrocytosis macrodactyl macrodactylia macrodactylic macrodactylism macrodactylous macrodactyly macrodiagonal macrodomatic macrodome macrodont macrodontia macrodontism macroelement macroergate macroevolution macrofarad macrogamete macrogametocyte macrogamy macrogastria macroglossate macroglossia macrognathic macrognathism macrognathous macrogonidium macrograph macrographic macrography macrolepidoptera macrolepidopterous macrology macromandibular macromania macromastia macromazia macromelia macromeral macromere macromeric macromerite macromeritic macromesentery macrometer macromethod macromolecule macromyelon macromyelonal macron macronuclear macronucleus macronutrient macropetalous macrophage macrophagocyte macrophagus Macrophoma macrophotograph macrophotography macrophyllous macrophysics macropia macropinacoid macropinacoidal macroplankton macroplasia macroplastia macropleural macropodia Macropodidae Macropodinae macropodine macropodous macroprism macroprosopia macropsia macropteran macropterous Macropus Macropygia macropyramid macroreaction Macrorhamphosidae Macrorhamphosus macrorhinia Macrorhinus macroscelia Macroscelides macroscian macroscopic macroscopical macroscopically macroseism macroseismic macroseismograph macrosepalous macroseptum macrosmatic macrosomatia macrosomatous macrosomia macrosplanchnic macrosporange macrosporangium macrospore macrosporic Macrosporium macrosporophore macrosporophyl macrosporophyll Macrostachya macrostomatous macrostomia macrostructural macrostructure macrostylospore macrostylous macrosymbiont macrothere Macrotheriidae macrotherioid Macrotherium macrotherm macrotia macrotin Macrotolagus macrotome macrotone macrotous macrourid Macrouridae Macrourus Macrozamia macrozoogonidium macrozoospore Macrura macrural macruran macruroid macrurous mactation Mactra Mactridae mactroid macuca macula macular maculate maculated maculation macule maculicole maculicolous maculiferous maculocerebral maculopapular maculose Macusi macuta mad Madagascan Madagascar Madagascarian Madagass madam madame madapollam madarosis madarotic madbrain madbrained madcap madden maddening maddeningly maddeningness madder madderish madderwort madding maddingly maddish maddle made Madecase madefaction madefy Madegassy Madeira Madeiran Madeline madeline Madelon madescent Madge madhouse madhuca Madhva Madi Madia madid madidans Madiga madisterium madling madly madman madnep madness mado Madoc Madonna Madonnahood Madonnaish Madonnalike madoqua Madotheca madrague Madras madrasah Madrasi madreperl Madrepora Madreporacea madreporacean Madreporaria madreporarian madrepore madreporian madreporic madreporiform madreporite madreporitic Madrid madrier madrigal madrigaler madrigaletto madrigalian madrigalist Madrilene Madrilenian madrona madship madstone Madurese maduro madweed madwoman madwort mae Maeandra Maeandrina maeandrine maeandriniform maeandrinoid maeandroid Maecenas Maecenasship maegbote Maelstrom Maemacterion maenad maenadic maenadism maenaite Maenalus Maenidae Maeonian Maeonides maestri maestro maffia maffick mafficker maffle mafflin mafic mafoo mafura mag Maga Magadhi magadis magadize Magahi Magalensia magani magas magazinable magazinage magazine magazinelet magaziner magazinette magazinish magazinism magazinist magaziny Magdalen Magdalene Magdalenian mage Magellan Magellanian Magellanic magenta magged Maggie maggle maggot maggotiness maggotpie maggoty Maggy Magh Maghi Maghrib Maghribi Magi magi Magian Magianism magic magical magicalize magically magicdom magician magicianship magicked magicking Magindanao magiric magirics magirist magiristic magirological magirologist magirology Magism magister magisterial magisteriality magisterially magisterialness magistery magistracy magistral magistrality magistrally magistrand magistrant magistrate magistrateship magistratic magistratical magistratically magistrative magistrature Maglemose Maglemosean Maglemosian magma magmatic magnanimity magnanimous magnanimously magnanimousness magnascope magnascopic magnate magnecrystallic magnelectric magneoptic magnes magnesia magnesial magnesian magnesic magnesioferrite magnesite magnesium magnet magneta magnetic magnetical magnetically magneticalness magnetician magnetics magnetiferous magnetification magnetify magnetimeter magnetism magnetist magnetite magnetitic magnetizability magnetizable magnetization magnetize magnetizer magneto magnetobell magnetochemical magnetochemistry magnetod magnetodynamo magnetoelectric magnetoelectrical magnetoelectricity magnetogenerator magnetogram magnetograph magnetographic magnetoid magnetomachine magnetometer magnetometric magnetometrical magnetometrically magnetometry magnetomotive magnetomotor magneton magnetooptic magnetooptical magnetooptics magnetophone magnetophonograph magnetoplumbite magnetoprinter magnetoscope magnetostriction magnetotelegraph magnetotelephone magnetotherapy magnetotransmitter magnetron magnicaudate magnicaudatous magnifiable magnific magnifical magnifically Magnificat magnification magnificative magnifice magnificence magnificent magnificently magnificentness magnifico magnifier magnify magniloquence magniloquent magniloquently magniloquy magnipotence magnipotent magnirostrate magnisonant magnitude magnitudinous magnochromite magnoferrite Magnolia magnolia Magnoliaceae magnoliaceous magnum Magog magot magpie magpied magpieish magsman maguari maguey Magyar Magyaran Magyarism Magyarization Magyarize maha mahaleb mahalla mahant mahar maharaja maharajrana maharana maharanee maharani maharao Maharashtri maharawal maharawat mahatma mahatmaism Mahayana Mahayanism Mahayanist Mahayanistic Mahdi Mahdian Mahdiship Mahdism Mahdist Mahi Mahican mahmal mahmudi mahoe mahoganize mahogany mahoitre maholi maholtine Mahomet Mahometry mahone Mahonia Mahori Mahound mahout Mahra Mahran Mahri mahseer mahua mahuang Maia Maiacca Maianthemum maid Maida maidan maiden maidenhair maidenhead maidenhood maidenish maidenism maidenlike maidenliness maidenly maidenship maidenweed maidhood Maidie maidish maidism maidkin maidlike maidling maidservant Maidu maidy maiefic maieutic maieutical maieutics maigre maiid Maiidae mail mailable mailbag mailbox mailclad mailed mailer mailguard mailie maillechort mailless mailman mailplane maim maimed maimedly maimedness maimer maimon Maimonidean Maimonist main Mainan Maine mainferre mainlander mainly mainmast mainmortable mainour mainpast mainpernable mainpernor mainpin mainport mainpost mainprise mains mainsail mainsheet mainspring mainstay Mainstreeter Mainstreetism maint maintain maintainable maintainableness maintainer maintainment maintainor maintenance Maintenon maintop maintopman maioid Maioidea maioidean Maioli Maiongkong Maipure mairatour maire maisonette Maithili maitlandite Maitreya Maius maize maizebird maizenic maizer Maja Majagga majagua Majesta majestic majestical majestically majesticalness majesticness majestious majesty majestyship Majlis majo majolica majolist majoon major majorate majoration Majorcan majorette Majorism Majorist Majoristic majority majorize majorship majuscular majuscule makable Makah Makaraka Makari Makassar make makebate makedom makefast maker makeress makership makeshift makeshiftiness makeshiftness makeshifty makeweight makhzan maki makimono making makluk mako Makonde makroskelic Maku Makua makuk mal mala malaanonang Malabar Malabarese malabathrum malacanthid Malacanthidae malacanthine Malacanthus Malacca Malaccan malaccident Malaceae malaceous malachite malacia Malaclemys Malacobdella Malacocotylea malacoderm Malacodermatidae malacodermatous Malacodermidae malacodermous malacoid malacolite malacological malacologist malacology malacon malacophilous malacophonous malacophyllous malacopod Malacopoda malacopodous malacopterygian Malacopterygii malacopterygious Malacoscolices Malacoscolicine Malacosoma Malacostraca malacostracan malacostracology malacostracous malactic maladaptation maladdress maladive maladjust maladjusted maladjustive maladjustment maladminister maladministration maladministrator maladroit maladroitly maladroitness maladventure malady Malaga Malagasy Malagigi malagma malaguena malahack malaise malakin malalignment malambo malandered malanders malandrous malanga malapaho malapert malapertly malapertness malapi malapplication malappointment malappropriate malappropriation malaprop malapropian malapropish malapropism malapropoism malapropos Malapterurus malar malaria malarial malariaproof malarin malarioid malariologist malariology malarious malarkey malaroma malarrangement malasapsap malassimilation malassociation malate malati malattress malax malaxable malaxage malaxate malaxation malaxator malaxerman Malaxis Malay Malayalam Malayalim Malayan Malayic Malayize Malayoid Malaysian malbehavior malbrouck malchite Malchus malconceived malconduct malconformation malconstruction malcontent malcontented malcontentedly malcontentedness malcontentism malcontently malcontentment malconvenance malcreated malcultivation maldeveloped maldevelopment maldigestion maldirection maldistribution Maldivian maldonite malduck Male male malease maleate Malebolge Malebolgian Malebolgic Malebranchism Malecite maledicent maledict malediction maledictive maledictory maleducation malefaction malefactor malefactory malefactress malefical malefically maleficence maleficent maleficial maleficiate maleficiation maleic maleinoid malella Malemute maleness malengine maleo maleruption Malesherbia Malesherbiaceae malesherbiaceous malevolence malevolency malevolent malevolently malexecution malfeasance malfeasant malfed malformation malformed malfortune malfunction malgovernment malgrace malguzar malguzari malhonest malhygiene mali malic malice maliceful maliceproof malicho malicious maliciously maliciousness malicorium malidentification maliferous maliform malign malignance malignancy malignant malignantly malignation maligner malignify malignity malignly malignment malik malikadna malikala malikana Maliki Malikite maline malines malinfluence malinger malingerer malingery Malinois malinowskite malinstitution malinstruction malintent malism malison malist malistic malkin Malkite mall malladrite mallangong mallard mallardite malleability malleabilization malleable malleableize malleableized malleableness malleablize malleal mallear malleate malleation mallee Malleifera malleiferous malleiform mallein malleinization malleinize mallemaroking mallemuck malleoincudal malleolable malleolar malleolus mallet malleus Malling Mallophaga mallophagan mallophagous malloseismic Mallotus mallow mallowwort mallum mallus malm Malmaison malmignatte malmsey malmstone malmy malnourished malnourishment malnutrite malnutrition malo malobservance malobservation maloccluded malocclusion malodor malodorant malodorous malodorously malodorousness malojilla malonate malonic malonyl malonylurea Malope maloperation malorganization malorganized malouah malpais Malpighia Malpighiaceae malpighiaceous Malpighian malplaced malpoise malposed malposition malpractice malpractioner malpraxis malpresentation malproportion malproportioned malpropriety malpublication malreasoning malrotation malshapen malt maltable maltase malter Maltese maltha Malthe malthouse Malthusian Malthusianism Malthusiast maltiness malting maltman Malto maltobiose maltodextrin maltodextrine maltolte maltose maltreat maltreatment maltreator maltster malturned maltworm malty malunion Malurinae malurine Malurus Malus Malva Malvaceae malvaceous Malvales malvasia malvasian Malvastrum malversation malverse malvoisie malvolition Mam mamba mambo mameliere mamelonation mameluco Mameluke Mamercus Mamers Mamertine Mamie Mamilius mamlatdar mamma mammal mammalgia Mammalia mammalian mammaliferous mammality mammalogical mammalogist mammalogy mammary mammate Mammea mammectomy mammee mammer Mammifera mammiferous mammiform mammilla mammillaplasty mammillar Mammillaria mammillary mammillate mammillated mammillation mammilliform mammilloid mammitis mammock mammogen mammogenic mammogenically mammon mammondom mammoniacal mammonish mammonism mammonist mammonistic mammonite mammonitish mammonization mammonize mammonolatry Mammonteus mammoth mammothrept mammula mammular Mammut Mammutidae mammy mamo man mana Manabozho manacle Manacus manage manageability manageable manageableness manageably managee manageless management managemental manager managerdom manageress managerial managerially managership managery manaism manakin manal manas Manasquan manatee Manatidae manatine manatoid Manatus manavel manavelins manbird manbot manche Manchester Manchesterdom Manchesterism Manchesterist Manchestrian manchet manchineel Manchu Manchurian mancinism mancipable mancipant mancipate mancipation mancipative mancipatory mancipee mancipium manciple mancipleship mancipular mancono Mancunian mancus mand Mandaean Mandaeism Mandaic Mandaite mandala Mandalay mandament mandamus Mandan mandant mandarah mandarin mandarinate mandarindom mandariness mandarinic mandarinism mandarinize mandarinship mandatary mandate mandatee mandation mandative mandator mandatorily mandatory mandatum Mande mandelate mandelic mandible mandibula mandibular mandibulary Mandibulata mandibulate mandibulated mandibuliform mandibulohyoid mandibulomaxillary mandibulopharyngeal mandibulosuspensorial mandil mandilion Mandingan Mandingo mandola mandolin mandolinist mandolute mandom mandora mandore mandra mandragora mandrake mandrel mandriarch mandrill mandrin mandruka mandua manducable manducate manducation manducatory mandyas mane maned manege manei maneless manent manerial manes manesheet maness Manetti Manettia maneuver maneuverability maneuverable maneuverer maneuvrability maneuvrable maney Manfred Manfreda manful manfully manfulness mang manga mangabeira mangabey mangal manganapatite manganate manganblende manganbrucite manganeisen manganese manganesian manganetic manganhedenbergite manganic manganiferous manganite manganium manganize Manganja manganocalcite manganocolumbite manganophyllite manganosiderite manganosite manganostibiite manganotantalite manganous manganpectolite Mangar Mangbattu mange mangeao mangel mangelin manger mangerite mangi Mangifera mangily manginess mangle mangleman mangler mangling manglingly mango mangona mangonel mangonism mangonization mangonize mangosteen mangrass mangrate mangrove Mangue mangue mangy Mangyan manhandle Manhattan Manhattanite Manhattanize manhead manhole manhood mani mania maniable maniac maniacal maniacally manic Manicaria manicate Manichaean Manichaeanism Manichaeanize Manichaeism Manichaeist Manichee manichord manicole manicure manicurist manid Manidae manienie manifest manifestable manifestant manifestation manifestational manifestationist manifestative manifestatively manifested manifestedness manifester manifestive manifestly manifestness manifesto manifold manifolder manifoldly manifoldness manifoldwise maniform manify Manihot manikin manikinism Manila manila manilla manille manioc maniple manipulable manipular manipulatable manipulate manipulation manipulative manipulatively manipulator manipulatory Manipuri Manis manism manist manistic manito Manitoban manitrunk maniu Manius Maniva manjak mank mankeeper mankin mankind manless manlessly manlessness manlet manlihood manlike manlikely manlikeness manlily manliness manling manly manna mannan mannequin manner mannerable mannered mannerhood mannering mannerism mannerist manneristic manneristical manneristically mannerize mannerless mannerlessness mannerliness mannerly manners mannersome manness Mannheimar mannide mannie manniferous mannify mannikinism manning mannish mannishly mannishness mannite mannitic mannitol mannitose mannoheptite mannoheptitol mannoheptose mannoketoheptose mannonic mannosan mannose manny mano Manobo manoc manograph manometer manometric manometrical manometry manomin manor manorial manorialism manorialize manorship manoscope manostat manostatic manque manred manrent manroot manrope Mans mansard mansarded manscape manse manservant manship mansion mansional mansionary mansioned mansioneer mansionry manslaughter manslaughterer manslaughtering manslaughterous manslayer manslaying manso mansonry manstealer manstealing manstopper manstopping mansuete mansuetely mansuetude mant manta mantal manteau mantel mantelet manteline mantelletta mantellone mantelpiece mantelshelf manteltree manter mantes mantevil mantic manticism manticore mantid Mantidae mantilla Mantinean mantis Mantisia Mantispa mantispid Mantispidae mantissa mantistic mantle mantled mantlet mantling Manto manto Mantodea mantoid Mantoidea mantologist mantology mantra mantrap mantua mantuamaker mantuamaking Mantuan Mantzu manual manualii manualism manualist manualiter manually manuao manubrial manubriated manubrium manucaption manucaptor manucapture manucode Manucodia manucodiata manuduce manuduction manuductor manuductory Manuel manufactory manufacturable manufactural manufacture manufacturer manufacturess manuka manul manuma manumea manumisable manumission manumissive manumit manumitter manumotive manurable manurage manurance manure manureless manurer manurial manurially manus manuscript manuscriptal manuscription manuscriptural manusina manustupration manutagi Manvantara manward manwards manway manweed manwise Manx Manxman Manxwoman many manyberry Manyema manyfold manyness manyplies manyroot manyways manywhere manywise manzana manzanilla manzanillo manzanita Manzas manzil mao maomao Maori Maoridom Maoriland Maorilander map mapach mapau maphrian mapland maple maplebush mapo mappable mapper Mappila mappist mappy Mapuche mapwise maquahuitl maquette maqui Maquiritare maquis Mar mar marabotin marabou Marabout marabuto maraca Maracaibo maracan maracock marae Maragato marajuana marakapas maral maranatha marang Maranha Maranham Maranhao Maranta Marantaceae marantaceous marantic marara mararie marasca maraschino marasmic Marasmius marasmoid marasmous marasmus Maratha Marathi marathon marathoner Marathonian Maratism Maratist Marattia Marattiaceae marattiaceous Marattiales maraud marauder maravedi Maravi marbelize marble marbled marblehead marbleheader marblehearted marbleization marbleize marbleizer marblelike marbleness marbler marbles marblewood marbling marblish marbly marbrinus marc Marcan marcantant marcasite marcasitic marcasitical marcel marceline Marcella marcella marceller Marcellian Marcellianism marcello marcescence marcescent Marcgravia Marcgraviaceae marcgraviaceous March march Marchantia Marchantiaceae marchantiaceous Marchantiales marcher marchetto marchioness marchite marchland marchman Marchmont marchpane Marcia marcid Marcionism Marcionist Marcionite Marcionitic Marcionitish Marcionitism Marcite marco Marcobrunner Marcomanni Marconi marconi marconigram marconigraph marconigraphy marcor Marcosian marcottage mardy mare mareblob Mareca marechal Marehan marekanite maremma maremmatic maremmese marengo marennin Mareotic Mareotid Marfik marfire margarate Margarelon Margaret margaric margarin margarine margarita margaritaceous margarite margaritiferous margaritomancy Margarodes margarodid Margarodinae margarodite Margaropus margarosanite margay marge margeline margent Margery Margie margin marginal marginalia marginality marginalize marginally marginate marginated margination margined Marginella Marginellidae marginelliform marginiform margining marginirostral marginoplasty margosa Margot margravate margrave margravely margravial margraviate margravine marguerite marhala Marheshvan Mari Maria maria marialite Mariamman Marian Mariana Marianic Marianne Marianolatrist Marianolatry maricolous marid mariengroschen marigenous marigold marigram marigraph marigraphic marijuana marikina Marilla marimba marimonda marina marinade marinate marinated marine mariner marinheiro marinist marinorama mariola Mariolater Mariolatrous Mariolatry Mariology Marion marionette Mariposan mariposite maris marish marishness Marist maritage marital maritality maritally mariticidal mariticide Maritime maritime maritorious mariupolite marjoram Marjorie Mark mark marka Markab markdown Markeb marked markedly markedness marker market marketability marketable marketableness marketably marketeer marketer marketing marketman marketstead marketwise markfieldite Markgenossenschaft markhor marking markka markless markman markmoot Marko markshot marksman marksmanly marksmanship markswoman markup markweed markworthy marl marlaceous marlberry marled marler marli marlin marline marlinespike marlite marlitic marllike marlock Marlovian Marlowesque Marlowish Marlowism marlpit marly marm marmalade marmalady Marmar marmarization marmarize marmarosis marmatite marmelos marmennill marmit marmite marmolite marmoraceous marmorate marmorated marmoration marmoreal marmoreally marmorean marmoric Marmosa marmose marmoset marmot Marmota maro marocain marok Maronian Maronist Maronite maroon marooner maroquin Marpessa marplot marplotry marque marquee Marquesan marquess marquetry marquis marquisal marquisate marquisdom marquise marquisette marquisina marquisotte marquisship marquito marranism marranize marrano marree Marrella marrer marriable marriage marriageability marriageable marriageableness marriageproof married marrier marron marrot marrow marrowbone marrowed marrowfat marrowish marrowless marrowlike marrowsky marrowskyer marrowy Marrubium Marrucinian marry marryer marrying marrymuffe Mars Marsala Marsdenia marseilles marsh marshal marshalate marshalcy marshaler marshaless Marshall marshalman marshalment Marshalsea marshalship marshberry marshbuck marshfire marshflower marshiness marshite marshland marshlander marshlike marshlocks marshman marshwort marshy Marsi Marsian Marsilea Marsileaceae marsileaceous Marsilia Marsiliaceae marsipobranch Marsipobranchia Marsipobranchiata marsipobranchiate Marsipobranchii marsoon Marspiter Marssonia Marssonina marsupial Marsupialia marsupialian marsupialization marsupialize marsupian Marsupiata marsupiate marsupium Mart mart martagon martel marteline martellate martellato marten martensite martensitic Martes martext Martha martial martialism Martialist martiality martialization martialize martially martialness Martian Martin martin martinet martineta martinetish martinetishness martinetism martinetship Martinez martingale martinico Martinism Martinist Martinmas martinoe martite Martius martlet Martu Marty Martynia Martyniaceae martyniaceous martyr martyrdom martyress martyrium martyrization martyrize martyrizer martyrlike martyrly martyrolatry martyrologic martyrological martyrologist martyrologistic martyrologium martyrology martyrship martyry maru marvel marvelment marvelous marvelously marvelousness marvelry marver Marwari Marxian Marxianism Marxism Marxist Mary mary marybud Maryland Marylander Marylandian Marymass marysole marzipan mas masa Masai masaridid Masarididae Masaridinae Masaris mascagnine mascagnite mascally mascara mascaron mascled mascleless mascot mascotism mascotry Mascouten mascularity masculate masculation masculine masculinely masculineness masculinism masculinist masculinity masculinization masculinize masculist masculofeminine masculonucleus masculy masdeu Masdevallia mash masha mashal mashallah mashelton masher mashie mashing mashman Mashona Mashpee mashru mashy masjid mask masked Maskegon maskelynite masker maskette maskflower Maskins masklike Maskoi maskoid maslin masochism masochist masochistic mason masoned masoner masonic Masonite masonite masonry masonwork masooka masoola Masora Masorete Masoreth Masoretic Maspiter masque masquer masquerade masquerader Mass mass massa massacre massacrer massage massager massageuse massagist Massalia Massalian massaranduba massasauga masse massebah massecuite massedly massedness Massekhoth massel masser masseter masseteric masseur masseuse massicot massier massiest massif Massilia Massilian massily massiness massive massively massiveness massivity masskanne massless masslike Massmonger massotherapy massoy massula massy mast mastaba mastadenitis mastadenoma mastage mastalgia mastatrophia mastatrophy mastauxe mastax mastectomy masted master masterable masterate masterdom masterer masterful masterfully masterfulness masterhood masterless masterlessness masterlike masterlily masterliness masterling masterly masterman mastermind masterous masterpiece masterproof mastership masterwork masterwort mastery mastful masthead masthelcosis mastic masticability masticable masticate mastication masticator masticatory mastiche masticic Masticura masticurous mastiff Mastigamoeba mastigate mastigium mastigobranchia mastigobranchial Mastigophora mastigophoran mastigophoric mastigophorous mastigopod Mastigopoda mastigopodous mastigote mastigure masting mastitis mastless mastlike mastman mastocarcinoma mastoccipital mastochondroma mastochondrosis mastodon mastodonsaurian Mastodonsaurus mastodont mastodontic Mastodontidae mastodontine mastodontoid mastodynia mastoid mastoidal mastoidale mastoideal mastoidean mastoidectomy mastoideocentesis mastoideosquamous mastoiditis mastoidohumeral mastoidohumeralis mastoidotomy mastological mastologist mastology mastomenia mastoncus mastooccipital mastoparietal mastopathy mastopexy mastoplastia mastorrhagia mastoscirrhus mastosquamose mastotomy mastotympanic masturbate masturbation masturbational masturbator masturbatory mastwood masty masu Masulipatam masurium mat Matabele Matacan matachin matachina mataco matadero matador mataeological mataeologue mataeology Matagalpa Matagalpan matagory matagouri matai matajuelo matalan matamata matamoro matanza matapan matapi Matar matara Matatua Matawan matax matboard match matchable matchableness matchably matchboard matchboarding matchbook matchbox matchcloth matchcoat matcher matching matchless matchlessly matchlessness matchlock matchmaker matchmaking matchmark Matchotic matchsafe matchstick matchwood matchy mate mategriffon matehood mateless matelessness matelote mately mater materfamilias material materialism materialist materialistic materialistical materialistically materiality materialization materialize materializee materializer materially materialman materialness materiate materiation materiel maternal maternality maternalize maternally maternalness maternity maternology mateship matey matezite matfelon matgrass math mathematic mathematical mathematically mathematicals mathematician mathematicize mathematics mathematize mathemeg mathes mathesis mathetic Mathurin matico matildite matin matinal matinee mating matins matipo matka matless matlockite matlow matmaker matmaking matra matral Matralia matranee matrass matreed matriarch matriarchal matriarchalism matriarchate matriarchic matriarchist matriarchy matric matrical Matricaria matrices matricidal matricide matricula matriculable matriculant matricular matriculate matriculation matriculator matriculatory Matrigan matriheritage matriherital matrilineal matrilineally matrilinear matrilinearism matriliny matrilocal matrimonial matrimonially matrimonious matrimoniously matrimony matriotism matripotestal matris matrix matroclinic matroclinous matrocliny matron matronage matronal Matronalia matronhood matronism matronize matronlike matronliness matronly matronship matronymic matross matsu matsuri matta mattamore Mattapony mattaro mattboard matte matted mattedly mattedness matter matterate matterative matterful matterfulness matterless mattery Matteuccia Matthaean Matthew Matthiola matti matting mattock mattoid mattoir mattress mattulla Matty maturable maturate maturation maturative mature maturely maturement matureness maturer maturescence maturescent maturing maturish maturity matutinal matutinally matutinary matutine matutinely matweed maty matzo matzoon matzos matzoth mau maucherite Maud maud maudle maudlin maudlinism maudlinize maudlinly maudlinwort mauger maugh Maugis maul Maulawiyah mauler mauley mauling maulstick Maumee maumet maumetry Maun maun maund maunder maunderer maundful maundy maunge Maurandia Mauretanian Mauri Maurice Maurist Mauritia Mauritian Mauser mausolea mausoleal mausolean mausoleum mauther mauve mauveine mauvette mauvine maux maverick mavis Mavortian mavournin mavrodaphne maw mawbound mawk mawkish mawkishly mawkishness mawky mawp Max maxilla maxillar maxillary maxilliferous maxilliform maxilliped maxillipedary maxillodental maxillofacial maxillojugal maxillolabial maxillomandibular maxillopalatal maxillopalatine maxillopharyngeal maxillopremaxillary maxilloturbinal maxillozygomatic maxim maxima maximal Maximalism Maximalist maximally maximate maximation maximed maximist maximistic maximite maximization maximize maximizer Maximon maximum maximus maxixe maxwell May may Maya maya Mayaca Mayacaceae mayacaceous Mayan Mayance Mayathan maybe Maybird Maybloom maybush Maycock maycock Mayda mayday Mayer Mayey Mayeye Mayfair mayfish Mayflower Mayfowl mayhap mayhappen mayhem Maying Maylike maynt Mayo Mayologist mayonnaise mayor mayoral mayoralty mayoress mayorship Mayoruna Maypole Maypoling maypop maysin mayten Maytenus Maythorn Maytide Maytime mayweed Maywings Maywort maza mazalgia Mazama mazame Mazanderani mazapilite mazard mazarine Mazatec Mazateco Mazda Mazdaism Mazdaist Mazdakean Mazdakite Mazdean maze mazed mazedly mazedness mazeful mazement mazer Mazhabi mazic mazily maziness mazocacothesis mazodynia mazolysis mazolytic mazopathia mazopathic mazopexy Mazovian mazuca mazuma Mazur Mazurian mazurka mazut mazy mazzard Mazzinian Mazzinianism Mazzinist mbalolo Mbaya mbori Mbuba Mbunda Mcintosh Mckay Mdewakanton me meable meaching mead meader meadow meadowbur meadowed meadower meadowing meadowink meadowland meadowless meadowsweet meadowwort meadowy meadsman meager meagerly meagerness meagre meak meal mealable mealberry mealer mealies mealily mealiness mealless mealman mealmonger mealmouth mealmouthed mealproof mealtime mealy mealymouth mealymouthed mealymouthedly mealymouthedness mealywing mean meander meanderingly meandrine meandriniform meandrite meandrous meaned meaner meaning meaningful meaningfully meaningless meaninglessly meaninglessness meaningly meaningness meanish meanly meanness meant Meantes meantone meanwhile mease measle measled measledness measles measlesproof measly measondue measurability measurable measurableness measurably measuration measure measured measuredly measuredness measureless measurelessly measurelessness measurely measurement measurer measuring meat meatal meatbird meatcutter meated meathook meatily meatiness meatless meatman meatometer meatorrhaphy meatoscope meatoscopy meatotome meatotomy meatus meatworks meaty Mebsuta Mecaptera mecate Mecca Meccan Meccano Meccawee mechanal mechanality mechanalize mechanic mechanical mechanicalism mechanicalist mechanicality mechanicalization mechanicalize mechanically mechanicalness mechanician mechanicochemical mechanicocorpuscular mechanicointellectual mechanicotherapy mechanics mechanism mechanist mechanistic mechanistically mechanization mechanize mechanizer mechanolater mechanology mechanomorphic mechanomorphism mechanotherapeutic mechanotherapeutics mechanotherapist mechanotherapy Mechir Mechitaristican Mechlin mechoacan meckelectomy Meckelian Mecklenburgian mecodont Mecodonta mecometer mecometry mecon meconic meconidium meconin meconioid meconium meconology meconophagism meconophagist Mecoptera mecopteran mecopteron mecopterous medal medaled medalet medalist medalize medallary medallic medallically medallion medallionist meddle meddlecome meddlement meddler meddlesome meddlesomely meddlesomeness meddling meddlingly Mede Medellin Medeola Media media mediacid mediacy mediad mediaevalize mediaevally medial medialization medialize medialkaline medially Median median medianic medianimic medianimity medianism medianity medianly mediant mediastinal mediastine mediastinitis mediastinotomy mediastinum mediate mediately mediateness mediating mediatingly mediation mediative mediatization mediatize mediator mediatorial mediatorialism mediatorially mediatorship mediatory mediatress mediatrice mediatrix Medic medic medicable Medicago medical medically medicament medicamental medicamentally medicamentary medicamentation medicamentous medicaster medicate medication medicative medicator medicatory Medicean Medici medicinable medicinableness medicinal medicinally medicinalness medicine medicinelike medicinemonger mediciner medico medicobotanical medicochirurgic medicochirurgical medicodental medicolegal medicolegally medicomania medicomechanic medicomechanical medicomoral medicophysical medicopsychological medicopsychology medicostatistic medicosurgical medicotopographic medicozoologic mediety Medieval medieval medievalism medievalist medievalistic medievalize medievally medifixed mediglacial medimn medimno medimnos medimnus Medina Medinilla medino medio medioanterior mediocarpal medioccipital mediocre mediocrist mediocrity mediocubital mediodepressed mediodigital mediodorsal mediodorsally mediofrontal mediolateral mediopalatal mediopalatine mediopassive mediopectoral medioperforate mediopontine medioposterior mediosilicic mediostapedial mediotarsal medioventral medisance medisect medisection Medish Medism meditant meditate meditating meditatingly meditation meditationist meditatist meditative meditatively meditativeness meditator mediterranean Mediterraneanism Mediterraneanization Mediterraneanize mediterraneous medithorax Meditrinalia meditullium medium mediumism mediumistic mediumization mediumize mediumship medius Medize Medizer medjidie medlar medley Medoc medregal medrick medrinaque medulla medullar medullary medullate medullated medullation medullispinal medullitis medullization medullose Medusa Medusaean medusal medusalike medusan medusiferous medusiform medusoid meebos meece meed meedless meek meeken meekhearted meekheartedness meekling meekly meekness Meekoceras meered meerkat meerschaum meese meet meetable meeten meeter meeterly meethelp meethelper meeting meetinger meetinghouse meetly meetness Meg megabar megacephalia megacephalic megacephaly megacerine Megaceros megacerotine Megachile megachilid Megachilidae Megachiroptera megachiropteran megachiropterous megacolon megacosm megacoulomb megacycle megadont Megadrili megadynamics megadyne Megaera megaerg megafarad megafog megagamete megagametophyte megajoule megakaryocyte Megalactractus Megaladapis Megalaema Megalaemidae Megalania megaleme Megalensian megalerg Megalesia Megalesian megalesthete megalethoscope Megalichthyidae Megalichthys megalith megalithic Megalobatrachus megaloblast megaloblastic megalocardia megalocarpous megalocephalia megalocephalic megalocephalous megalocephaly Megaloceros megalochirous megalocornea megalocyte megalocytosis megalodactylia megalodactylism megalodactylous Megalodon megalodont megalodontia Megalodontidae megaloenteron megalogastria megaloglossia megalograph megalography megalohepatia megalokaryocyte megalomania megalomaniac megalomaniacal megalomelia Megalonychidae Megalonyx megalopa megalopenis megalophonic megalophonous megalophthalmus megalopia megalopic Megalopidae Megalopinae megalopine megaloplastocyte megalopolis megalopolitan megalopolitanism megalopore megalops megalopsia Megaloptera Megalopyge Megalopygidae Megalornis Megalornithidae megalosaur megalosaurian Megalosauridae megalosauroid Megalosaurus megaloscope megaloscopy megalosphere megalospheric megalosplenia megalosyndactyly megaloureter Megaluridae Megamastictora megamastictoral megamere megameter megampere Meganeura Meganthropus meganucleus megaparsec megaphone megaphonic megaphotographic megaphotography megaphyllous Megaphyton megapod megapode Megapodidae Megapodiidae Megapodius megaprosopous Megaptera Megapterinae megapterine Megarensian Megarhinus Megarhyssa Megarian Megarianism Megaric megaron megasclere megascleric megasclerous megasclerum megascope megascopic megascopical megascopically megaseism megaseismic megaseme Megasoma megasporange megasporangium megaspore megasporic megasporophyll megasynthetic megathere megatherian Megatheriidae megatherine megatherioid Megatherium megatherm megathermic megatheroid megaton megatype megatypy megavolt megawatt megaweber megazooid megazoospore megerg Meggy megilp megmho megohm megohmit megohmmeter megophthalmus megotalc Megrel Megrez megrim megrimish mehalla mehari meharist Mehelya mehmandar mehtar mehtarship Meibomia Meibomian meile mein meinie meio meiobar meionite meiophylly meiosis meiotaxy meiotic Meissa Meistersinger meith Meithei meizoseismal meizoseismic mejorana Mekbuda Mekhitarist mekometer mel mela melaconite melada meladiorite melagabbro melagra melagranite Melaleuca melalgia melam melamed melamine melampodium Melampsora Melampsoraceae Melampus melampyritol Melampyrum melanagogal melanagogue melancholia melancholiac melancholic melancholically melancholily melancholiness melancholious melancholiously melancholiousness melancholish melancholist melancholize melancholomaniac melancholy melancholyish Melanchthonian Melanconiaceae melanconiaceous Melanconiales Melanconium melanemia melanemic Melanesian melange melanger melangeur Melania melanian melanic melaniferous Melaniidae melanilin melaniline melanin Melanippe Melanippus melanism melanistic melanite melanitic melanize melano melanoblast melanocarcinoma melanocerite Melanochroi Melanochroid melanochroite melanochroous melanocomous melanocrate melanocratic melanocyte Melanodendron melanoderma melanodermia melanodermic Melanogaster melanogen Melanoi melanoid melanoidin melanoma melanopathia melanopathy melanophore melanoplakia Melanoplus melanorrhagia melanorrhea Melanorrhoea melanosarcoma melanosarcomatosis melanoscope melanose melanosed melanosis melanosity melanospermous melanotekite melanotic melanotrichous melanous melanterite Melanthaceae melanthaceous Melanthium melanure melanuresis melanuria melanuric melaphyre Melas melasma melasmic melassigenic Melastoma Melastomaceae melastomaceous melastomad melatope melaxuma Melburnian Melcarth melch Melchite Melchora meld melder meldometer meldrop mele Meleager Meleagridae Meleagrina Meleagrinae meleagrine Meleagris melebiose melee melena melene melenic Meles Meletian Meletski melezitase melezitose Melia Meliaceae meliaceous Meliadus Melian Melianthaceae melianthaceous Melianthus meliatin melibiose melic Melica Melicent melicera meliceric meliceris melicerous Melicerta Melicertidae melichrous melicitose Melicocca melicraton melilite melilitite melilot Melilotus Melinae meline Melinis melinite Meliola meliorability meliorable meliorant meliorate meliorater melioration meliorative meliorator meliorism meliorist melioristic meliority meliphagan Meliphagidae meliphagidan meliphagous meliphanite Melipona Meliponinae meliponine melisma melismatic melismatics Melissa melissyl melissylic Melitaea melitemia melithemia melitis melitose melitriose melittologist melittology melituria melituric mell mellaginous mellate mellay melleous meller Mellifera melliferous mellificate mellification mellifluence mellifluent mellifluently mellifluous mellifluously mellifluousness mellimide mellisonant mellisugent mellit mellitate mellite mellitic Mellivora Mellivorinae mellivorous mellon mellonides mellophone mellow mellowly mellowness mellowy mellsman Melocactus melocoton melodeon melodia melodial melodially melodic melodica melodically melodicon melodics melodiograph melodion melodious melodiously melodiousness melodism melodist melodize melodizer melodram melodrama melodramatic melodramatical melodramatically melodramaticism melodramatics melodramatist melodramatize melodrame melody melodyless meloe melogram Melogrammataceae melograph melographic meloid Meloidae melologue Melolontha Melolonthidae melolonthidan Melolonthides Melolonthinae melolonthine melomane melomania melomaniac melomanic melon meloncus Melonechinus melongena melongrower melonist melonite Melonites melonlike melonmonger melonry melophone melophonic melophonist melopiano meloplast meloplastic meloplasty melopoeia melopoeic melos melosa Melospiza Melothria melotragedy melotragic melotrope melt meltability meltable meltage melted meltedness melteigite melter melters melting meltingly meltingness melton Meltonian Melungeon Melursus mem member membered memberless membership membracid Membracidae membracine membral membrally membrana membranaceous membranaceously membranate membrane membraned membraneless membranelike membranelle membraneous membraniferous membraniform membranin Membranipora Membraniporidae membranocalcareous membranocartilaginous membranocoriaceous membranocorneous membranogenic membranoid membranology membranonervous membranosis membranous membranously membranula membranule membretto memento meminna Memnon Memnonian Memnonium memo memoir memoirism memoirist memorabilia memorability memorable memorableness memorably memoranda memorandist memorandize memorandum memorative memoria memorial memorialist memorialization memorialize memorializer memorially memoried memorious memorist memorizable memorization memorize memorizer memory memoryless Memphian Memphite men menaccanite menaccanitic menace menaceable menaceful menacement menacer menacing menacingly menacme menadione menage menagerie menagerist menald Menangkabau menarche Menaspis mend mendable mendacious mendaciously mendaciousness mendacity Mendaite Mende mendee Mendelian Mendelianism Mendelianist Mendelism Mendelist Mendelize Mendelssohnian Mendelssohnic mendelyeevite mender Mendi mendicancy mendicant mendicate mendication mendicity mending mendipite mendole mendozite mends meneghinite menfolk Menfra meng Mengwe menhaden menhir menial menialism meniality menially Menic menilite meningeal meninges meningic meningina meningism meningitic meningitis meningocele meningocephalitis meningocerebritis meningococcal meningococcemia meningococcic meningococcus meningocortical meningoencephalitis meningoencephalocele meningomalacia meningomyclitic meningomyelitis meningomyelocele meningomyelorrhaphy meningorachidian meningoradicular meningorhachidian meningorrhagia meningorrhea meningorrhoea meningosis meningospinal meningotyphoid meninting meninx meniscal meniscate menisciform meniscitis meniscoid meniscoidal Meniscotheriidae Meniscotherium meniscus menisperm Menispermaceae menispermaceous menispermine Menispermum Menkalinan Menkar Menkib menkind mennom Mennonist Mennonite Menobranchidae Menobranchus menognath menognathous menologium menology menometastasis Menominee menopausal menopause menopausic menophania menoplania Menopoma Menorah Menorhyncha menorhynchous menorrhagia menorrhagic menorrhagy menorrhea menorrheic menorrhoea menorrhoeic menoschesis menoschetic menosepsis menostasia menostasis menostatic menostaxis Menotyphla menotyphlic menoxenia mensa mensal mensalize mense menseful menseless menses Menshevik Menshevism Menshevist mensk menstrual menstruant menstruate menstruation menstruous menstruousness menstruum mensual mensurability mensurable mensurableness mensurably mensural mensuralist mensurate mensuration mensurational mensurative Ment mentagra mental mentalis mentalism mentalist mentalistic mentality mentalization mentalize mentally mentary mentation Mentha Menthaceae menthaceous menthadiene menthane menthene menthenol menthenone menthol mentholated menthone menthyl menticide menticultural menticulture mentiferous mentiform mentigerous mentimeter mentimutation mention mentionability mentionable mentionless mentoanterior mentobregmatic mentocondylial mentohyoid mentolabial mentomeckelian mentonniere mentoposterior mentor mentorial mentorism mentorship mentum Mentzelia menu Menura Menurae Menuridae meny Menyanthaceae Menyanthaceous Menyanthes menyie menzie Menziesia Meo Mephisto Mephistophelean Mephistopheleanly Mephistopheles Mephistophelic Mephistophelistic mephitic mephitical Mephitinae mephitine mephitis mephitism Mer Merak meralgia meraline Meratia merbaby mercal mercantile mercantilely mercantilism mercantilist mercantilistic mercantility mercaptal mercaptan mercaptides mercaptids mercapto mercaptol mercaptole Mercator Mercatorial mercatorial Mercedarian Mercedes Mercedinus Mercedonius mercenarily mercenariness mercenary mercer merceress mercerization mercerize mercerizer mercership mercery merch merchandisable merchandise merchandiser merchant merchantable merchantableness merchanter merchanthood merchantish merchantlike merchantly merchantman merchantry merchantship merchet Mercian merciful mercifully mercifulness merciless mercilessly mercilessness merciment mercurate mercuration Mercurean mercurial Mercurialis mercurialism mercuriality mercurialization mercurialize mercurially mercurialness mercuriamines mercuriammonium Mercurian mercuriate mercuric mercuride mercurification mercurify Mercurius mercurization mercurize Mercurochrome mercurophen mercurous Mercury mercy mercyproof merdivorous mere Meredithian merel merely merenchyma merenchymatous meresman merestone meretricious meretriciously meretriciousness meretrix merfold merfolk merganser merge mergence merger mergh Merginae Mergulus Mergus meriah mericarp merice Merida meridian Meridion Meridionaceae Meridional meridional meridionality meridionally meril meringue meringued Merino Meriones meriquinoid meriquinoidal meriquinone meriquinonic meriquinonoid merism merismatic merismoid merist meristele meristelic meristem meristematic meristematically meristic meristically meristogenous merit meritable merited meritedly meriter meritful meritless meritmonger meritmongering meritmongery meritorious meritoriously meritoriousness merk merkhet merkin merl merle merlette merlin merlon Merlucciidae Merluccius mermaid mermaiden merman Mermis mermithaner mermithergate Mermithidae mermithization mermithized mermithogyne Mermnad Mermnadae mermother mero meroblastic meroblastically merocele merocelic merocerite meroceritic merocrystalline merocyte Merodach merogamy merogastrula merogenesis merogenetic merogenic merognathite merogonic merogony merohedral merohedric merohedrism meroistic Meroitic meromorphic Meromyaria meromyarian merop Merope Meropes meropia Meropidae meropidan meroplankton meroplanktonic meropodite meropoditic Merops merorganization merorganize meros merosomal Merosomata merosomatous merosome merosthenic Merostomata merostomatous merostome merostomous merosymmetrical merosymmetry merosystematic merotomize merotomy merotropism merotropy Merovingian meroxene Merozoa merozoite merpeople merribauks merribush merriless merrily merriment merriness merrow merry merrymake merrymaker merrymaking merryman merrymeeting merrythought merrytrotter merrywing merse Mertensia Merula meruline merulioid Merulius merveileux merwinite merwoman Merychippus merycism merycismus Merycoidodon Merycoidodontidae Merycopotamidae Merycopotamus Mes mesa mesabite mesaconate mesaconic mesad Mesadenia mesadenia mesail mesal mesalike mesally mesameboid mesange mesaortitis mesaraic mesaraical mesarch mesarteritic mesarteritis Mesartim mesaticephal mesaticephali mesaticephalic mesaticephalism mesaticephalous mesaticephaly mesatipellic mesatipelvic mesatiskelic mesaxonic mescal Mescalero mescaline mescalism mesdames mese mesectoderm mesem Mesembryanthemaceae Mesembryanthemum mesembryo mesembryonic mesencephalic mesencephalon mesenchyma mesenchymal mesenchymatal mesenchymatic mesenchymatous mesenchyme mesendoderm mesenna mesenterial mesenteric mesenterical mesenterically mesenteriform mesenteriolum mesenteritic mesenteritis mesenteron mesenteronic mesentery mesentoderm mesepimeral mesepimeron mesepisternal mesepisternum mesepithelial mesepithelium mesethmoid mesethmoidal mesh Meshech meshed meshrabiyeh meshwork meshy mesiad mesial mesially mesian mesic mesically mesilla mesiobuccal mesiocervical mesioclusion mesiodistal mesiodistally mesiogingival mesioincisal mesiolabial mesiolingual mesion mesioocclusal mesiopulpal mesioversion Mesitae Mesites Mesitidae mesitite mesityl mesitylene mesitylenic mesmerian mesmeric mesmerical mesmerically mesmerism mesmerist mesmerite mesmerizability mesmerizable mesmerization mesmerize mesmerizee mesmerizer mesmeromania mesmeromaniac mesnality mesnalty mesne meso mesoappendicitis mesoappendix mesoarial mesoarium mesobar mesobenthos mesoblast mesoblastema mesoblastemic mesoblastic mesobranchial mesobregmate mesocaecal mesocaecum mesocardia mesocardium mesocarp mesocentrous mesocephal mesocephalic mesocephalism mesocephalon mesocephalous mesocephaly mesochilium mesochondrium mesochroic mesocoele mesocoelian mesocoelic mesocolic mesocolon mesocoracoid mesocranial mesocratic mesocuneiform mesode mesoderm mesodermal mesodermic Mesodesma Mesodesmatidae Mesodesmidae Mesodevonian Mesodevonic mesodic mesodisilicic mesodont Mesoenatides mesofurca mesofurcal mesogaster mesogastral mesogastric mesogastrium mesogloea mesogloeal mesognathic mesognathion mesognathism mesognathous mesognathy mesogyrate mesohepar Mesohippus mesokurtic mesolabe mesole mesolecithal mesolimnion mesolite mesolithic mesologic mesological mesology mesomere mesomeric mesomerism mesometral mesometric mesometrium mesomorph mesomorphic mesomorphous mesomorphy Mesomyodi mesomyodian mesomyodous meson mesonasal Mesonemertini mesonephric mesonephridium mesonephritic mesonephros mesonic mesonotal mesonotum Mesonychidae Mesonyx mesoparapteral mesoparapteron mesopectus mesoperiodic mesopetalum mesophile mesophilic mesophilous mesophragm mesophragma mesophragmal mesophryon mesophyll mesophyllous mesophyllum mesophyte mesophytic mesophytism mesopic mesoplankton mesoplanktonic mesoplast mesoplastic mesoplastral mesoplastron mesopleural mesopleuron Mesoplodon mesoplodont mesopodial mesopodiale mesopodium mesopotamia Mesopotamian mesopotamic mesoprescutal mesoprescutum mesoprosopic mesopterygial mesopterygium mesopterygoid mesorchial mesorchium Mesore mesorectal mesorectum Mesoreodon mesorrhin mesorrhinal mesorrhinian mesorrhinism mesorrhinium mesorrhiny mesosalpinx mesosaur Mesosauria Mesosaurus mesoscapula mesoscapular mesoscutal mesoscutellar mesoscutellum mesoscutum mesoseismal mesoseme mesosiderite mesosigmoid mesoskelic mesosoma mesosomatic mesosome mesosperm mesospore mesosporic mesosporium mesostasis mesosternal mesosternebra mesosternebral mesosternum mesostethium Mesostoma Mesostomatidae mesostomid mesostyle mesostylous Mesosuchia mesosuchian Mesotaeniaceae Mesotaeniales mesotarsal mesotartaric Mesothelae mesothelial mesothelium mesotherm mesothermal mesothesis mesothet mesothetic mesothetical mesothoracic mesothoracotheca mesothorax mesothorium mesotonic mesotroch mesotrocha mesotrochal mesotrochous mesotron mesotropic mesotympanic mesotype mesovarian mesovarium mesoventral mesoventrally mesoxalate mesoxalic mesoxalyl Mesozoa mesozoan Mesozoic mespil Mespilus Mespot mesquite Mesropian mess message messagery Messalian messaline messan Messapian messe messelite messenger messengership messer messet Messiah Messiahship Messianic Messianically messianically Messianism Messianist Messianize Messias messieurs messily messin Messines Messinese messiness messing messman messmate messor messroom messrs messtin messuage messy mestee mester mestiza mestizo mestome Mesua Mesvinian mesymnion met meta metabasis metabasite metabatic metabiological metabiology metabiosis metabiotic metabiotically metabismuthic metabisulphite metabletic Metabola metabola metabole Metabolia metabolian metabolic metabolism metabolite metabolizable metabolize metabolon metabolous metaboly metaborate metaboric metabranchial metabrushite metabular metacarpal metacarpale metacarpophalangeal metacarpus metacenter metacentral metacentric metacentricity metachemic metachemistry Metachlamydeae metachlamydeous metachromasis metachromatic metachromatin metachromatinic metachromatism metachrome metachronism metachrosis metacinnabarite metacism metacismus metaclase metacneme metacoele metacoelia metaconal metacone metaconid metaconule metacoracoid metacrasis metacresol metacromial metacromion metacryst metacyclic metacymene metad metadiabase metadiazine metadiorite metadiscoidal metadromous metafluidal metaformaldehyde metafulminuric metagalactic metagalaxy metagaster metagastric metagastrula metage Metageitnion metagelatin metagenesis metagenetic metagenetically metagenic metageometer metageometrical metageometry metagnath metagnathism metagnathous metagnomy metagnostic metagnosticism metagram metagrammatism metagrammatize metagraphic metagraphy metahewettite metahydroxide metaigneous metainfective metakinesis metakinetic metal metalammonium metalanguage metalbumin metalcraft metaldehyde metalepsis metaleptic metaleptical metaleptically metaler metaline metalined metaling metalinguistic metalinguistics metalism metalist metalization metalize metallary metalleity metallic metallical metallically metallicity metallicize metallicly metallics metallide metallifacture metalliferous metallification metalliform metallify metallik metalline metallism metallization metallize metallochrome metallochromy metallogenetic metallogenic metallogeny metallograph metallographer metallographic metallographical metallographist metallography metalloid metalloidal metallometer metallophone metalloplastic metallorganic metallotherapeutic metallotherapy metallurgic metallurgical metallurgically metallurgist metallurgy metalmonger metalogic metalogical metaloph metalorganic metaloscope metaloscopy metaluminate metaluminic metalware metalwork metalworker metalworking metalworks metamathematical metamathematics metamer metameral metamere metameric metamerically metameride metamerism metamerization metamerized metamerous metamery metamorphic metamorphism metamorphize metamorphopsia metamorphopsy metamorphosable metamorphose metamorphoser metamorphoses metamorphosian metamorphosic metamorphosical metamorphosis metamorphostical metamorphotic metamorphous metamorphy Metamynodon metanalysis metanauplius Metanemertini metanephric metanephritic metanephron metanephros metanepionic metanilic metanitroaniline metanomen metanotal metanotum metantimonate metantimonic metantimonious metantimonite metantimonous metanym metaorganism metaparapteral metaparapteron metapectic metapectus metapepsis metapeptone metaperiodic metaphase metaphenomenal metaphenomenon metaphenylene metaphenylenediamin metaphenylenediamine metaphloem metaphonical metaphonize metaphony metaphor metaphoric metaphorical metaphorically metaphoricalness metaphorist metaphorize metaphosphate metaphosphoric metaphosphorous metaphragm metaphragmal metaphrase metaphrasis metaphrast metaphrastic metaphrastical metaphrastically metaphyseal metaphysic metaphysical metaphysically metaphysician metaphysicianism metaphysicist metaphysicize metaphysicous metaphysics metaphysis metaphyte metaphytic metaphyton metaplasia metaplasis metaplasm metaplasmic metaplast metaplastic metapleural metapleure metapleuron metaplumbate metaplumbic metapneumonic metapneustic metapodial metapodiale metapodium metapolitic metapolitical metapolitician metapolitics metapophyseal metapophysial metapophysis metapore metapostscutellar metapostscutellum metaprescutal metaprescutum metaprotein metapsychic metapsychical metapsychics metapsychism metapsychist metapsychological metapsychology metapsychosis metapterygial metapterygium metapterygoid metarabic metarhyolite metarossite metarsenic metarsenious metarsenite metasaccharinic metascutal metascutellar metascutellum metascutum metasedimentary metasilicate metasilicic metasoma metasomal metasomasis metasomatic metasomatism metasomatosis metasome metasperm Metaspermae metaspermic metaspermous metastability metastable metastannate metastannic metastasis metastasize metastatic metastatical metastatically metasternal metasternum metasthenic metastibnite metastigmate metastoma metastome metastrophe metastrophic metastyle metatantalic metatarsal metatarsale metatarse metatarsophalangeal metatarsus metatatic metatatically metataxic metate metathalamus metatheology Metatheria metatherian metatheses metathesis metathetic metathetical metathetically metathoracic metathorax metatitanate metatitanic metatoluic metatoluidine metatracheal metatrophic metatungstic metatype metatypic Metaurus metavanadate metavanadic metavauxite metavoltine metaxenia metaxite metaxylem metaxylene metayer Metazoa metazoal metazoan metazoea metazoic metazoon mete metel metempiric metempirical metempirically metempiricism metempiricist metempirics metempsychic metempsychosal metempsychose metempsychoses metempsychosical metempsychosis metempsychosize metemptosis metencephalic metencephalon metensarcosis metensomatosis metenteron metenteronic meteogram meteograph meteor meteorgraph meteoric meteorical meteorically meteorism meteorist meteoristic meteorital meteorite meteoritic meteoritics meteorization meteorize meteorlike meteorogram meteorograph meteorographic meteorography meteoroid meteoroidal meteorolite meteorolitic meteorologic meteorological meteorologically meteorologist meteorology meteorometer meteoroscope meteoroscopy meteorous metepencephalic metepencephalon metepimeral metepimeron metepisternal metepisternum meter meterage metergram meterless meterman metership metestick metewand meteyard methacrylate methacrylic methadone methanal methanate methane methanoic methanolysis methanometer metheglin methemoglobin methemoglobinemia methemoglobinuria methenamine methene methenyl mether methid methide methine methinks methiodide methionic methionine methobromide method methodaster methodeutic methodic methodical methodically methodicalness methodics methodism Methodist methodist Methodistic Methodistically Methodisty methodization Methodize methodize methodizer methodless methodological methodologically methodologist methodology Methody methought methoxide methoxychlor methoxyl methronic Methuselah methyl methylacetanilide methylal methylamine methylaniline methylanthracene methylate methylation methylator methylcholanthrene methylene methylenimine methylenitan methylethylacetic methylglycine methylglycocoll methylglyoxal methylic methylmalonic methylnaphthalene methylol methylolurea methylosis methylotic methylpentose methylpentoses methylpropane methylsulfanol metic meticulosity meticulous meticulously meticulousness metier metis Metoac metochous metochy metoestrous metoestrum Metol metonym metonymic metonymical metonymically metonymous metonymously metonymy metope Metopias metopic metopion metopism Metopoceros metopomancy metopon metoposcopic metoposcopical metoposcopist metoposcopy metosteal metosteon metoxazine metoxenous metoxeny metra metralgia metranate metranemia metratonia Metrazol metrectasia metrectatic metrectomy metrectopia metrectopic metrectopy metreless metreship metreta metrete metretes metria metric metrical metrically metrician metricism metricist metricize metrics Metridium metrification metrifier metrify metriocephalic metrist metritis metrocampsis metrocarat metrocarcinoma metrocele metroclyst metrocolpocele metrocracy metrocratic metrocystosis metrodynia metrofibroma metrological metrologist metrologue metrology metrolymphangitis metromalacia metromalacoma metromalacosis metromania metromaniac metromaniacal metrometer metroneuria metronome metronomic metronomical metronomically metronymic metronymy metroparalysis metropathia metropathic metropathy metroperitonitis metrophlebitis metrophotography metropole metropolis metropolitan metropolitanate metropolitancy metropolitanism metropolitanize metropolitanship metropolite metropolitic metropolitical metropolitically metroptosia metroptosis metroradioscope metrorrhagia metrorrhagic metrorrhea metrorrhexis metrorthosis metrosalpingitis metrosalpinx metroscirrhus metroscope metroscopy Metrosideros metrostaxis metrostenosis metrosteresis metrostyle metrosynizesis metrotherapist metrotherapy metrotome metrotomy Metroxylon mettar mettle mettled mettlesome mettlesomely mettlesomeness metusia metze Meum meuse meute Mev mew meward mewer mewl mewler Mexica Mexican Mexicanize Mexitl Mexitli meyerhofferite mezcal Mezentian Mezentism Mezentius mezereon mezereum mezuzah mezzanine mezzo mezzograph mezzotint mezzotinter mezzotinto mho mhometer mi Miami miamia mian Miao Miaotse Miaotze miaow miaower Miaplacidus miargyrite miarolitic mias miaskite miasm miasma miasmal miasmata miasmatic miasmatical miasmatically miasmatize miasmatology miasmatous miasmic miasmology miasmous Miastor miaul miauler mib mica micaceous micacious micacite Micah micasization micasize micate mication Micawberish Micawberism mice micellar micelle Michabo Michabou Michael Michaelites Michaelmas Michaelmastide miche Michel Michelangelesque Michelangelism Michelia micher Michigamea Michigan michigan Michigander Michiganite miching Michoacan Michoacano micht mick mickle Micky Micmac mico miconcave Miconia micramock Micrampelis micranatomy micrander micrandrous micraner micranthropos Micraster micrencephalia micrencephalic micrencephalous micrencephalus micrencephaly micrergate micresthete micrify micro microammeter microampere microanalysis microanalyst microanalytical microangstrom microapparatus microbal microbalance microbar microbarograph microbattery microbe microbeless microbeproof microbial microbian microbic microbicidal microbicide microbiologic microbiological microbiologically microbiologist microbiology microbion microbiosis microbiota microbiotic microbious microbism microbium microblast microblepharia microblepharism microblephary microbrachia microbrachius microburet microburette microburner microcaltrop microcardia microcardius microcarpous Microcebus microcellular microcentrosome microcentrum microcephal microcephalia microcephalic microcephalism microcephalous microcephalus microcephaly microceratous microchaeta microcharacter microcheilia microcheiria microchemic microchemical microchemically microchemistry microchiria Microchiroptera microchiropteran microchiropterous microchromosome microchronometer microcinema microcinematograph microcinematographic microcinematography Microcitrus microclastic microclimate microclimatic microclimatologic microclimatological microclimatology microcline microcnemia microcoat micrococcal Micrococceae Micrococcus microcoleoptera microcolon microcolorimeter microcolorimetric microcolorimetrically microcolorimetry microcolumnar microcombustion microconidial microconidium microconjugant Microconodon microconstituent microcopy microcoria microcosm microcosmal microcosmian microcosmic microcosmical microcosmography microcosmology microcosmos microcosmus microcoulomb microcranous microcrith microcryptocrystalline microcrystal microcrystalline microcrystallogeny microcrystallography microcrystalloscopy microcurie Microcyprini microcyst microcyte microcythemia microcytosis microdactylia microdactylism microdactylous microdentism microdentous microdetection microdetector microdetermination microdiactine microdissection microdistillation microdont microdontism microdontous microdose microdrawing Microdrili microdrive microelectrode microelectrolysis microelectroscope microelement microerg microestimation microeutaxitic microevolution microexamination microfarad microfauna microfelsite microfelsitic microfilaria microfilm microflora microfluidal microfoliation microfossil microfungus microfurnace Microgadus microgalvanometer microgamete microgametocyte microgametophyte microgamy Microgaster microgastria Microgastrinae microgastrine microgeological microgeologist microgeology microgilbert microglia microglossia micrognathia micrognathic micrognathous microgonidial microgonidium microgram microgramme microgranite microgranitic microgranitoid microgranular microgranulitic micrograph micrographer micrographic micrographical micrographically micrographist micrography micrograver microgravimetric microgroove microgyne microgyria microhenry microhepatia microhistochemical microhistology microhm microhmmeter Microhymenoptera microhymenopteron microinjection microjoule microlepidopter microlepidoptera microlepidopteran microlepidopterist microlepidopteron microlepidopterous microleukoblast microlevel microlite microliter microlith microlithic microlitic micrologic micrological micrologically micrologist micrologue micrology microlux micromania micromaniac micromanipulation micromanipulator micromanometer Micromastictora micromazia micromeasurement micromechanics micromelia micromelic micromelus micromembrane micromeral micromere Micromeria micromeric micromerism micromeritic micromeritics micromesentery micrometallographer micrometallography micrometallurgy micrometer micromethod micrometrical micrometrically micrometry micromicrofarad micromicron micromil micromillimeter micromineralogical micromineralogy micromorph micromotion micromotoscope micromyelia micromyeloblast micron Micronesian micronization micronize micronometer micronuclear micronucleus micronutrient microorganic microorganism microorganismal micropaleontology micropantograph microparasite microparasitic micropathological micropathologist micropathology micropegmatite micropegmatitic micropenis microperthite microperthitic micropetalous micropetrography micropetrologist micropetrology microphage microphagocyte microphagous microphagy microphakia microphallus microphone microphonic microphonics microphonograph microphot microphotograph microphotographic microphotography microphotometer microphotoscope microphthalmia microphthalmic microphthalmos microphthalmus microphyllous microphysical microphysics microphysiography microphytal microphyte microphytic microphytology micropia micropin micropipette microplakite microplankton microplastocyte microplastometer micropodal Micropodi micropodia Micropodidae Micropodiformes micropoecilitic micropoicilitic micropoikilitic micropolariscope micropolarization micropore microporosity microporous microporphyritic microprint microprojector micropsia micropsy micropterism micropterous Micropterus micropterygid Micropterygidae micropterygious Micropterygoidea Micropteryx Micropus micropylar micropyle micropyrometer microradiometer microreaction microrefractometer microrhabdus microrheometer microrheometric microrheometrical Microrhopias Microsauria microsaurian microsclere microsclerous microsclerum microscopal microscope microscopial microscopic microscopical microscopically microscopics Microscopid microscopist Microscopium microscopize microscopy microsecond microsection microseism microseismic microseismical microseismograph microseismology microseismometer microseismometrograph microseismometry microseme microseptum microsmatic microsmatism microsoma microsomatous microsome microsomia microsommite Microsorex microspecies microspectroscope microspectroscopic microspectroscopy Microspermae microspermous Microsphaera microsphaeric microsphere microspheric microspherulitic microsplanchnic microsplenia microsplenic microsporange microsporangium microspore microsporiasis microsporic Microsporidia microsporidian Microsporon microsporophore microsporophyll microsporosis microsporous Microsporum microstat microsthene Microsthenes microsthenic microstomatous microstome microstomia microstomous microstructural microstructure Microstylis microstylospore microstylous microsublimation microtasimeter microtechnic microtechnique microtelephone microtelephonic Microthelyphonida microtheos microtherm microthermic microthorax Microthyriaceae microtia Microtinae microtine microtitration microtome microtomic microtomical microtomist microtomy microtone Microtus microtypal microtype microtypical microvolt microvolume microvolumetric microwatt microwave microweber microzoa microzoal microzoan microzoaria microzoarian microzoary microzoic microzone microzooid microzoology microzoon microzoospore microzyma microzyme microzymian micrurgic micrurgical micrurgist micrurgy Micrurus miction micturate micturition mid midafternoon midautumn midaxillary midbrain midday midden middenstead middle middlebreaker middlebuster middleman middlemanism middlemanship middlemost middler middlesplitter middlewards middleway middleweight middlewoman middling middlingish middlingly middlingness middlings middorsal middy mide Mider midevening midewiwin midfacial midforenoon midfrontal midge midget midgety midgy midheaven Midianite Midianitish Mididae midiron midland Midlander Midlandize midlandward midlatitude midleg midlenting midmain midmandibular midmonth midmonthly midmorn midmorning midmost midnight midnightly midnoon midparent midparentage midparental midpit midrange midrash midrashic midrib midribbed midriff mids midseason midsentence midship midshipman midshipmanship midshipmite midships midspace midst midstory midstout midstream midstreet midstroke midstyled midsummer midsummerish midsummery midtap midvein midverse midward midwatch midway midweek midweekly Midwest Midwestern Midwesterner midwestward midwife midwifery midwinter midwinterly midwintry midwise midyear mien miersite Miescherian miff miffiness miffy mig might mightily mightiness mightless mightnt mighty mightyhearted mightyship miglio migmatite migniardise mignon mignonette mignonne mignonness Migonitis migraine migrainoid migrainous migrant migrate migration migrational migrationist migrative migrator migratorial migratory Miguel miharaite mihrab mijakite mijl mikado mikadoate mikadoism Mikania Mikasuki Mike mike mikie Mikir Mil mil mila milady milammeter Milan Milanese Milanion milarite milch milcher milchy mild milden milder mildew mildewer mildewy mildhearted mildheartedness mildish mildly mildness Mildred mile mileage Miledh milepost miler Miles Milesian milesima Milesius milestone mileway milfoil milha miliaceous miliarensis miliaria miliarium miliary Milicent milieu Miliola milioliform milioline miliolite miliolitic militancy militant militantly militantness militarily militariness militarism militarist militaristic militaristically militarization militarize military militaryism militaryment militaster militate militation militia militiaman militiate milium milk milkbush milken milker milkeress milkfish milkgrass milkhouse milkily milkiness milking milkless milklike milkmaid milkman milkness milkshed milkshop milksick milksop milksopism milksoppery milksopping milksoppish milksoppy milkstone milkweed milkwood milkwort milky mill Milla milla millable millage millboard millclapper millcourse milldam mille milled millefiori milleflorous millefoliate millenarian millenarianism millenarist millenary millennia millennial millennialism millennialist millennially millennian millenniarism millenniary millennium millepede Millepora millepore milleporiform milleporine milleporite milleporous millepunctate miller milleress millering Millerism Millerite millerite millerole millesimal millesimally millet Millettia millfeed millful millhouse milliad milliammeter milliamp milliampere milliamperemeter milliangstrom milliard milliardaire milliare milliarium milliary millibar millicron millicurie Millie millieme milliequivalent millifarad millifold milliform milligal milligrade milligram milligramage millihenry millilambert millile milliliter millilux millimeter millimicron millimolar millimole millincost milline milliner millinerial millinering millinery milling Millingtonia millinormal millinormality millioctave millioersted million millionaire millionairedom millionairess millionairish millionairism millionary millioned millioner millionfold millionism millionist millionize millionocracy millions millionth milliphot millipoise millisecond millistere Millite millithrum millivolt millivoltmeter millman millocracy millocrat millocratism millosevichite millowner millpond millpool millpost millrace millrynd millsite millstock millstone millstream milltail millward millwork millworker millwright millwrighting Milly milner milo milord milpa milreis milsey milsie milt milter miltlike Miltonia Miltonian Miltonic Miltonically Miltonism Miltonist Miltonize miltsick miltwaste milty Milvago Milvinae milvine milvinous Milvus milzbrand mim mima mimbar mimble Mimbreno Mime mime mimeo mimeograph mimeographic mimeographically mimeographist mimer mimesis mimester mimetene mimetesite mimetic mimetical mimetically mimetism mimetite Mimi mimiambi mimiambic mimiambics mimic mimical mimically mimicism mimicker mimicry Mimidae Miminae mimine miminypiminy mimly mimmation mimmest mimmock mimmocking mimmocky mimmood mimmoud mimmouthed mimmouthedness mimodrama mimographer mimography mimologist Mimosa Mimosaceae mimosaceous mimosis mimosite mimotype mimotypic mimp Mimpei mimsey Mimulus Mimus Mimusops min Mina mina minable minacious minaciously minaciousness minacity Minaean Minahassa Minahassan Minahassian minar minaret minareted minargent minasragrite minatorial minatorially minatorily minatory minaway mince mincemeat mincer minchery minchiate mincing mincingly mincingness Mincopi Mincopie mind minded Mindel Mindelian minder Mindererus mindful mindfully mindfulness minding mindless mindlessly mindlessness mindsight mine mineowner miner mineragraphic mineragraphy mineraiogic mineral mineralizable mineralization mineralize mineralizer mineralogical mineralogically mineralogist mineralogize mineralogy Minerva minerval Minervan Minervic minery mines minette mineworker Ming ming minge mingelen mingle mingleable mingledly minglement mingler minglingly Mingo Mingrelian minguetite mingwort mingy minhag minhah miniaceous miniate miniator miniature miniaturist minibus minicam minicamera Miniconjou minienize minification minify minikin minikinly minim minima minimacid minimal minimalism Minimalist minimalkaline minimally minimetric minimifidian minimifidianism minimism minimistic Minimite minimitude minimization minimize minimizer minimum minimus minimuscular mining minion minionette minionism minionly minionship minish minisher minishment minister ministeriable ministerial ministerialism ministerialist ministeriality ministerially ministerialness ministerium ministership ministrable ministrant ministration ministrative ministrator ministrer ministress ministry ministryship minitant Minitari minium miniver minivet mink minkery minkish Minkopi Minnehaha minnesinger minnesong Minnesotan Minnetaree Minnie minnie minniebush minning minnow minny mino Minoan minoize minometer minor minorage minorate minoration Minorca Minorcan Minoress minoress Minorist Minorite minority minorship Minos minot Minotaur Minseito minsitive minster minsteryard minstrel minstreless minstrelship minstrelsy mint mintage Mintaka mintbush minter mintmaker mintmaking mintman mintmaster minty minuend minuet minuetic minuetish minus minuscular minuscule minutary minutation minute minutely minuteman minuteness minuter minuthesis minutia minutiae minutial minutiose minutiously minutissimic minverite minx minxish minxishly minxishness minxship miny Minyadidae Minyae Minyan minyan Minyas miocardia Miocene Miocenic Miohippus miolithic mioplasmia miothermic miqra miquelet mir Mira Mirabel Mirabell mirabiliary Mirabilis mirabilite Mirac Mirach mirach miracidial miracidium miracle miraclemonger miraclemongering miraclist miraculist miraculize miraculosity miraculous miraculously miraculousness mirador mirage miragy Mirak Miramolin Mirana Miranda mirandous Miranha Miranhan mirate mirbane mird mirdaha mire mirepoix Mirfak Miriam mirid Miridae mirific miriness mirish mirk mirkiness mirksome mirliton Miro miro Mirounga mirror mirrored mirrorize mirrorlike mirrorscope mirrory mirth mirthful mirthfully mirthfulness mirthless mirthlessly mirthlessness mirthsome mirthsomeness miry miryachit mirza misaccent misaccentuation misachievement misacknowledge misact misadapt misadaptation misadd misaddress misadjust misadmeasurement misadministration misadvantage misadventure misadventurer misadventurous misadventurously misadvertence misadvice misadvise misadvised misadvisedly misadvisedness misaffected misaffection misaffirm misagent misaim misalienate misalignment misallegation misallege misalliance misallotment misallowance misally misalphabetize misalter misanalyze misandry misanswer misanthrope misanthropia misanthropic misanthropical misanthropically misanthropism misanthropist misanthropize misanthropy misapparel misappear misappearance misappellation misapplication misapplier misapply misappoint misappointment misappraise misappraisement misappreciate misappreciation misappreciative misapprehend misapprehendingly misapprehensible misapprehension misapprehensive misapprehensively misapprehensiveness misappropriate misappropriately misappropriation misarchism misarchist misarrange misarrangement misarray misascribe misascription misasperse misassay misassent misassert misassign misassociate misassociation misatone misattend misattribute misattribution misaunter misauthorization misauthorize misaward misbandage misbaptize misbecome misbecoming misbecomingly misbecomingness misbefitting misbeget misbegin misbegotten misbehave misbehavior misbeholden misbelief misbelieve misbeliever misbelievingly misbelove misbeseem misbestow misbestowal misbetide misbias misbill misbind misbirth misbode misborn misbrand misbuild misbusy miscalculate miscalculation miscalculator miscall miscaller miscanonize miscarriage miscarriageable miscarry miscast miscasualty misceability miscegenate miscegenation miscegenationist miscegenator miscegenetic miscegine miscellanarian miscellanea miscellaneity miscellaneous miscellaneously miscellaneousness miscellanist miscellany mischallenge mischance mischanceful mischancy mischaracterization mischaracterize mischarge mischief mischiefful mischieve mischievous mischievously mischievousness mischio mischoice mischoose mischristen miscibility miscible miscipher misclaim misclaiming misclass misclassification misclassify miscognizant miscoin miscoinage miscollocation miscolor miscoloration miscommand miscommit miscommunicate miscompare miscomplacence miscomplain miscomplaint miscompose miscomprehend miscomprehension miscomputation miscompute misconceive misconceiver misconception misconclusion miscondition misconduct misconfer misconfidence misconfident misconfiguration misconjecture misconjugate misconjugation misconjunction misconsecrate misconsequence misconstitutional misconstruable misconstruct misconstruction misconstructive misconstrue misconstruer miscontinuance misconvenient misconvey miscook miscookery miscorrect miscorrection miscounsel miscount miscovet miscreancy miscreant miscreate miscreation miscreative miscreator miscredited miscredulity miscreed miscript miscrop miscue miscultivated misculture miscurvature miscut misdate misdateful misdaub misdeal misdealer misdecide misdecision misdeclaration misdeclare misdeed misdeem misdeemful misdefine misdeformed misdeliver misdelivery misdemean misdemeanant misdemeanist misdemeanor misdentition misderivation misderive misdescribe misdescriber misdescription misdescriptive misdesire misdetermine misdevise misdevoted misdevotion misdiet misdirect misdirection misdispose misdisposition misdistinguish misdistribute misdistribution misdivide misdivision misdo misdoer misdoing misdoubt misdower misdraw misdread misdrive mise misease misecclesiastic misedit miseducate miseducation miseducative miseffect misemphasis misemphasize misemploy misemployment misencourage misendeavor misenforce misengrave misenite misenjoy misenroll misentitle misenunciation Misenus miser miserabilism miserabilist miserabilistic miserability miserable miserableness miserably miserdom miserected Miserere miserhood misericord Misericordia miserism miserliness miserly misery misesteem misestimate misestimation misexample misexecute misexecution misexpectation misexpend misexpenditure misexplain misexplanation misexplication misexposition misexpound misexpress misexpression misexpressive misfaith misfare misfashion misfather misfault misfeasance misfeasor misfeature misfield misfigure misfile misfire misfit misfond misform misformation misfortunate misfortunately misfortune misfortuned misfortuner misframe misgauge misgesture misgive misgiving misgivingly misgo misgotten misgovern misgovernance misgovernment misgovernor misgracious misgraft misgrave misground misgrow misgrown misgrowth misguess misguggle misguidance misguide misguided misguidedly misguidedness misguider misguiding misguidingly mishandle mishap mishappen Mishikhwutmetunne mishmash mishmee Mishmi Mishnah Mishnaic Mishnic Mishnical Mishongnovi misidentification misidentify Misima misimagination misimagine misimpression misimprove misimprovement misimputation misimpute misincensed misincite misinclination misincline misinfer misinference misinflame misinform misinformant misinformation misinformer misingenuity misinspired misinstruct misinstruction misinstructive misintelligence misintelligible misintend misintention misinter misinterment misinterpret misinterpretable misinterpretation misinterpreter misintimation misjoin misjoinder misjudge misjudgement misjudger misjudgingly misjudgment miskeep misken miskenning miskill miskindle misknow misknowledge misky mislabel mislabor mislanguage mislay mislayer mislead misleadable misleader misleading misleadingly misleadingness mislear misleared mislearn misled mislest mislight mislike misliken mislikeness misliker mislikingly mislippen mislive mislocate mislocation mislodge mismade mismake mismanage mismanageable mismanagement mismanager mismarriage mismarry mismatch mismatchment mismate mismeasure mismeasurement mismenstruation misminded mismingle mismotion mismove misname misnarrate misnatured misnavigation Misniac misnomed misnomer misnumber misnurture misnutrition misobedience misobey misobservance misobserve misocapnic misocapnist misocatholic misoccupy misogallic misogamic misogamist misogamy misogyne misogynic misogynical misogynism misogynist misogynistic misogynistical misogynous misogyny misohellene misologist misology misomath misoneism misoneist misoneistic misopaterist misopedia misopedism misopedist misopinion misopolemical misorder misordination misorganization misorganize misoscopist misosophist misosophy misotheism misotheist misotheistic misotramontanism misotyranny misoxene misoxeny mispage mispagination mispaint misparse mispart mispassion mispatch mispay misperceive misperception misperform misperformance mispersuade misperuse misphrase mispick mispickel misplace misplacement misplant misplay misplead mispleading misplease mispoint mispoise mispolicy misposition mispossessed mispractice mispraise misprejudiced misprincipled misprint misprisal misprision misprize misprizer misproceeding misproduce misprofess misprofessor mispronounce mispronouncement mispronunciation misproportion misproposal mispropose misproud misprovide misprovidence misprovoke mispunctuate mispunctuation mispurchase mispursuit misput misqualify misquality misquotation misquote misquoter misraise misrate misread misreader misrealize misreason misreceive misrecital misrecite misreckon misrecognition misrecognize misrecollect misrefer misreference misreflect misreform misregulate misrehearsal misrehearse misrelate misrelation misreliance misremember misremembrance misrender misrepeat misreport misreporter misreposed misrepresent misrepresentation misrepresentative misrepresenter misreprint misrepute misresemblance misresolved misresult misreward misrhyme misrhymer misrule miss missable missal missay missayer misseem missel missemblance missentence misserve misservice misset misshape misshapen misshapenly misshapenness misshood missible missile missileproof missiness missing missingly mission missional missionarize missionary missionaryship missioner missionize missionizer missis Missisauga missish missishness Mississippi Mississippian missive missmark missment Missouri Missourian Missourianism missourite misspeak misspeech misspell misspelling misspend misspender misstate misstatement misstater misstay misstep missuade missuggestion missummation missuppose missy missyish missyllabication missyllabify mist mistakable mistakableness mistakably mistake mistakeful mistaken mistakenly mistakenness mistakeproof mistaker mistaking mistakingly mistassini mistaught mistbow misteach misteacher misted mistell mistempered mistend mistendency Mister mister misterm mistetch mistfall mistflower mistful misthink misthought misthread misthrift misthrive misthrow mistic mistide mistify mistigris mistily mistime mistiness mistitle mistle mistless mistletoe mistone mistonusk mistook mistouch mistradition mistrain mistral mistranscribe mistranscript mistranscription mistranslate mistranslation mistreat mistreatment mistress mistressdom mistresshood mistressless mistressly mistrial mistrist mistrust mistruster mistrustful mistrustfully mistrustfulness mistrusting mistrustingly mistrustless mistry mistryst misturn mistutor misty mistyish misunderstand misunderstandable misunderstander misunderstanding misunderstandingly misunderstood misunderstoodness misura misusage misuse misuseful misusement misuser misusurped misvaluation misvalue misventure misventurous misvouch miswed miswisdom miswish misword misworship misworshiper misworshipper miswrite misyoke miszealous Mitakshara Mitanni Mitannian Mitannish mitapsis mitchboard Mitchella mite Mitella miteproof miter mitered miterer miterflower miterwort Mithra Mithraea Mithraeum Mithraic Mithraicism Mithraicist Mithraicize Mithraism Mithraist Mithraistic Mithraitic Mithraize Mithras Mithratic Mithriac mithridate Mithridatic mithridatic mithridatism mithridatize miticidal miticide mitigable mitigant mitigate mitigatedly mitigation mitigative mitigator mitigatory mitis mitochondria mitochondrial mitogenetic mitome mitosis mitosome mitotic mitotically Mitra mitra mitrailleuse mitral mitrate mitre mitrer Mitridae mitriform Mitsukurina Mitsukurinidae mitsumata mitt mittelhand Mittelmeer mitten mittened mittimus mitty Mitu Mitua mity miurus mix mixable mixableness mixblood Mixe mixed mixedly mixedness mixen mixer mixeress mixhill mixible mixite mixobarbaric mixochromosome Mixodectes Mixodectidae mixolydian mixoploid mixoploidy Mixosaurus mixotrophic Mixtec Mixtecan mixtiform mixtilineal mixtilion mixtion mixture mixy Mizar mizmaze Mizpah Mizraim mizzen mizzenmast mizzenmastman mizzentopman mizzle mizzler mizzly mizzonite mizzy mlechchha mneme mnemic Mnemiopsis mnemonic mnemonical mnemonicalist mnemonically mnemonicon mnemonics mnemonism mnemonist mnemonization mnemonize Mnemosyne mnemotechnic mnemotechnical mnemotechnics mnemotechnist mnemotechny mnesic mnestic Mnevis Mniaceae mniaceous mnioid Mniotiltidae Mnium Mo mo Moabite Moabitess Moabitic Moabitish moan moanful moanfully moanification moaning moaningly moanless Moaria Moarian moat Moattalite mob mobable mobbable mobber mobbish mobbishly mobbishness mobbism mobbist mobby mobcap mobed mobile Mobilian mobilianer mobiliary mobility mobilizable mobilization mobilize mobilometer moble moblike mobocracy mobocrat mobocratic mobocratical mobolatry mobproof mobship mobsman mobster Mobula Mobulidae moccasin Mocha mocha Mochica mochras mock mockable mockado mockbird mocker mockernut mockery mockful mockfully mockground mockingbird mockingstock mocmain Mocoa Mocoan mocomoco mocuck Mod modal modalism modalist modalistic modality modalize modally mode model modeler modeless modelessness modeling modelist modeller modelmaker modelmaking modena Modenese moderant moderantism moderantist moderate moderately moderateness moderation moderationist moderatism moderatist moderato moderator moderatorship moderatrix Modern modern moderner modernicide modernish modernism modernist modernistic modernity modernizable modernization modernize modernizer modernly modernness modest modestly modestness modesty modiation modicity modicum modifiability modifiable modifiableness modifiably modificability modificable modification modificationist modificative modificator modificatory modifier modify modillion modiolar Modiolus modiolus modish modishly modishness modist modiste modistry modius Modoc Modred modulability modulant modular modulate modulation modulative modulator modulatory module Modulidae modulo modulus modumite Moed Moehringia moellon moerithere moeritherian Moeritheriidae Moeritherium mofette moff mofussil mofussilite mog mogador mogadore mogdad moggan moggy Moghan mogigraphia mogigraphic mogigraphy mogilalia mogilalism mogiphonia mogitocia mogo mogographia Mogollon Mograbi Mogrebbin moguey Mogul mogulship Moguntine moha mohabat mohair Mohammedan Mohammedanism Mohammedanization Mohammedanize Mohammedism Mohammedist Mohammedization Mohammedize mohar Mohave Mohawk Mohawkian mohawkite Mohegan mohel Mohican Mohineyam mohnseed moho Mohock Mohockism mohr Mohrodendron mohur Moi moider moidore moieter moiety moil moiler moiles moiley moiling moilingly moilsome moineau Moingwena moio Moira moire moirette moise Moism moissanite moist moisten moistener moistful moistify moistish moistishness moistless moistly moistness moisture moistureless moistureproof moisty moit moity mojarra Mojo mojo mokaddam moke moki mokihana moko moksha mokum moky Mola mola molal Molala molality molar molariform molarimeter molarity molary Molasse molasses molassied molassy molave mold moldability moldable moldableness Moldavian moldavite moldboard molder moldery moldiness molding moldmade moldproof moldwarp moldy Mole mole molecast molecula molecular molecularist molecularity molecularly molecule molehead moleheap molehill molehillish molehilly moleism molelike molendinar molendinary molengraaffite moleproof moler moleskin molest molestation molester molestful molestfully Molge Molgula Molidae molimen moliminous molinary moline Molinia Molinism Molinist Molinistic molka Moll molland Mollberg molle mollescence mollescent molleton mollichop mollicrush mollie mollienisia mollient molliently mollifiable mollification mollifiedly mollifier mollify mollifying mollifyingly mollifyingness molligrant molligrubs mollipilose Mollisiaceae mollisiose mollities mollitious mollitude Molluginaceae Mollugo Mollusca molluscan molluscivorous molluscoid Molluscoida molluscoidal molluscoidan Molluscoidea molluscoidean molluscous molluscousness molluscum mollusk Molly molly mollycoddle mollycoddler mollycoddling mollycosset mollycot mollyhawk molman Moloch Molochize Molochship moloid moloker molompi molosse Molossian molossic Molossidae molossine molossoid molossus Molothrus molpe molrooken molt molten moltenly molter Molucca Moluccan Moluccella Moluche moly molybdate molybdena molybdenic molybdeniferous molybdenite molybdenous molybdenum molybdic molybdite molybdocardialgia molybdocolic molybdodyspepsia molybdomancy molybdomenite molybdonosus molybdoparesis molybdophyllite molybdosis molybdous molysite mombin momble Mombottu mome moment momenta momental momentally momentaneall momentaneity momentaneous momentaneously momentaneousness momentarily momentariness momentary momently momentous momentously momentousness momentum momiology momism momme mommet mommy momo Momordica Momotidae Momotinae Momotus Momus Mon mon mona Monacan monacanthid Monacanthidae monacanthine monacanthous Monacha monachal monachate Monachi monachism monachist monachization monachize monactin monactine monactinellid monactinellidan monad monadelph Monadelphia monadelphian monadelphous monadic monadical monadically monadiform monadigerous Monadina monadism monadistic monadnock monadology monaene monal monamniotic Monanday monander Monandria monandrian monandric monandrous monandry monanthous monapsal monarch monarchal monarchally monarchess monarchial monarchian monarchianism monarchianist monarchianistic monarchic monarchical monarchically monarchism monarchist monarchistic monarchize monarchizer monarchlike monarchomachic monarchomachist monarchy Monarda Monardella monarthritis monarticular monas Monasa Monascidiae monascidian monase monaster monasterial monasterially monastery monastic monastical monastically monasticism monasticize monatomic monatomicity monatomism monaulos monaural monaxial monaxile monaxon monaxonial monaxonic Monaxonida monazine monazite Monbuttu monchiquite Monday Mondayish Mondayishness Mondayland mone Monegasque Monel monel monembryary monembryonic monembryony monepic monepiscopacy monepiscopal moner Monera moneral moneran monergic monergism monergist monergistic moneric moneron Monerozoa monerozoan monerozoic monerula Moneses monesia monetarily monetary monetite monetization monetize money moneyage moneybag moneybags moneyed moneyer moneyflower moneygrub moneygrubber moneygrubbing moneylender moneylending moneyless moneymonger moneymongering moneysaving moneywise moneywort mong mongcorn monger mongering mongery Monghol Mongholian Mongibel mongler Mongo Mongol Mongolian Mongolianism Mongolic Mongolioid Mongolish Mongolism Mongolization Mongolize Mongoloid mongoose Mongoyo mongrel mongreldom mongrelish mongrelism mongrelity mongrelization mongrelize mongrelly mongrelness mongst monheimite monial Monias Monica moniker monilated monilethrix Monilia Moniliaceae moniliaceous Moniliales monilicorn moniliform moniliformly monilioid moniment Monimia Monimiaceae monimiaceous monimolite monimostylic monism monist monistic monistical monistically monition monitive monitor monitorial monitorially monitorish monitorship monitory monitress monitrix monk monkbird monkcraft monkdom monkery monkess monkey monkeyboard monkeyface monkeyfy monkeyhood monkeyish monkeyishly monkeyishness monkeylike monkeynut monkeypod monkeypot monkeyry monkeyshine monkeytail monkfish monkflower monkhood monkish monkishly monkishness monkism monklike monkliness monkly monkmonger monkship monkshood Monmouth monmouthite monny Mono mono monoacetate monoacetin monoacid monoacidic monoamide monoamine monoamino monoammonium monoazo monobacillary monobase monobasic monobasicity monoblastic monoblepsia monoblepsis monobloc monobranchiate monobromacetone monobromated monobromide monobrominated monobromination monobromized monobromoacetanilide monobromoacetone monobutyrin monocalcium monocarbide monocarbonate monocarbonic monocarboxylic monocardian monocarp monocarpal monocarpellary monocarpian monocarpic monocarpous monocellular monocentric monocentrid Monocentridae Monocentris monocentroid monocephalous monocercous monoceros monocerous monochasial monochasium Monochlamydeae monochlamydeous monochlor monochloracetic monochloranthracene monochlorbenzene monochloride monochlorinated monochlorination monochloro monochloroacetic monochlorobenzene monochloromethane monochoanitic monochord monochordist monochordize monochroic monochromasy monochromat monochromate monochromatic monochromatically monochromatism monochromator monochrome monochromic monochromical monochromically monochromist monochromous monochromy monochronic monochronous monociliated monocle monocled monocleid monoclinal monoclinally monocline monoclinian monoclinic monoclinism monoclinometric monoclinous Monoclonius Monocoelia monocoelian monocoelic Monocondyla monocondylar monocondylian monocondylic monocondylous monocormic monocot monocotyledon Monocotyledones monocotyledonous monocracy monocrat monocratic monocrotic monocrotism monocular monocularity monocularly monoculate monocule monoculist monoculous monocultural monoculture monoculus monocyanogen monocycle monocyclic Monocyclica monocystic Monocystidae Monocystidea Monocystis monocyte monocytic monocytopoiesis monodactyl monodactylate monodactyle monodactylism monodactylous monodactyly monodelph Monodelphia monodelphian monodelphic monodelphous monodermic monodic monodically monodimetric monodist monodize monodomous Monodon monodont Monodonta monodontal monodram monodrama monodramatic monodramatist monodromic monodromy monody monodynamic monodynamism Monoecia monoecian monoecious monoeciously monoeciousness monoecism monoeidic monoestrous monoethanolamine monoethylamine monofilament monofilm monoflagellate monoformin monogamian monogamic monogamist monogamistic monogamous monogamously monogamousness monogamy monoganglionic monogastric monogene Monogenea monogeneity monogeneous monogenesis monogenesist monogenesy monogenetic Monogenetica monogenic monogenism monogenist monogenistic monogenous monogeny monoglot monoglycerid monoglyceride monogoneutic monogonoporic monogonoporous monogony monogram monogrammatic monogrammatical monogrammed monogrammic monograph monographer monographic monographical monographically monographist monography monograptid Monograptidae Monograptus monogynic monogynious monogynist monogynoecial monogynous monogyny monohybrid monohydrate monohydrated monohydric monohydrogen monohydroxy monoicous monoid monoketone monolater monolatrist monolatrous monolatry monolayer monoline monolingual monolinguist monoliteral monolith monolithal monolithic monolobular monolocular monologian monologic monological monologist monologize monologue monologuist monology monomachist monomachy monomania monomaniac monomaniacal monomastigate monomeniscous monomer monomeric monomerous monometallic monometallism monometallist monometer monomethyl monomethylated monomethylic monometric monometrical monomial monomict monomineral monomineralic monomolecular monomolybdate Monomorium monomorphic monomorphism monomorphous Monomya Monomyaria monomyarian mononaphthalene mononch Mononchus mononeural Monongahela mononitrate mononitrated mononitration mononitride mononitrobenzene mononomial mononomian monont mononuclear mononucleated mononucleosis mononychous mononym mononymic mononymization mononymize mononymy monoousian monoousious monoparental monoparesis monoparesthesia monopathic monopathy monopectinate monopersonal monopersulfuric monopersulphuric Monopetalae monopetalous monophagism monophagous monophagy monophase monophasia monophasic monophobia monophone monophonic monophonous monophony monophotal monophote monophthalmic monophthalmus monophthong monophthongal monophthongization monophthongize monophyletic monophyleticism monophylite monophyllous monophyodont monophyodontism Monophysite Monophysitic Monophysitical Monophysitism monopitch monoplacula monoplacular monoplaculate monoplane monoplanist monoplasmatic monoplast monoplastic monoplegia monoplegic Monopneumoa monopneumonian monopneumonous monopode monopodial monopodially monopodic monopodium monopodous monopody monopolar monopolaric monopolarity monopole monopolism monopolist monopolistic monopolistically monopolitical monopolizable monopolization monopolize monopolizer monopolous monopoly monopolylogist monopolylogue monopotassium monoprionid monoprionidian monopsonistic monopsony monopsychism monopteral Monopteridae monopteroid monopteron monopteros monopterous monoptic monoptical monoptote monoptotic Monopylaea Monopylaria monopylean monopyrenous monorail monorailroad monorailway monorchid monorchidism monorchis monorchism monorganic Monorhina monorhinal monorhine monorhyme monorhymed monorhythmic monosaccharide monosaccharose monoschemic monoscope monose monosemic monosepalous monoservice monosilane monosilicate monosilicic monosiphonic monosiphonous monosodium monosomatic monosomatous monosome monosomic monosperm monospermal monospermic monospermous monospermy monospherical monospondylic monosporangium monospore monospored monosporiferous monosporous monostele monostelic monostelous monostely monostich monostichous Monostomata Monostomatidae monostomatous monostome Monostomidae monostomous Monostomum monostromatic monostrophe monostrophic monostrophics monostylous monosubstituted monosubstitution monosulfone monosulfonic monosulphide monosulphone monosulphonic monosyllabic monosyllabical monosyllabically monosyllabism monosyllabize monosyllable monosymmetric monosymmetrical monosymmetrically monosymmetry monosynthetic monotelephone monotelephonic monotellurite Monothalama monothalamian monothalamous monothecal monotheism monotheist monotheistic monotheistical monotheistically Monothelete Monotheletian Monotheletic Monotheletism monothelious Monothelism Monothelitic Monothelitism monothetic monotic monotint Monotocardia monotocardiac monotocardian monotocous monotomous monotone monotonic monotonical monotonically monotonist monotonize monotonous monotonously monotonousness monotony monotremal Monotremata monotremate monotrematous monotreme monotremous monotrichous monotriglyph monotriglyphic Monotrocha monotrochal monotrochian monotrochous Monotropa Monotropaceae monotropaceous monotrophic monotropic Monotropsis monotropy monotypal monotype monotypic monotypical monotypous monoureide monovalence monovalency monovalent monovariant monoverticillate monovoltine monovular monoxenous monoxide monoxime monoxyle monoxylic monoxylon monoxylous Monozoa monozoan monozoic monozygotic Monroeism Monroeist monrolite monseigneur monsieur monsieurship monsignor monsignorial Monsoni monsoon monsoonal monsoonish monsoonishly monster Monstera monsterhood monsterlike monstership monstrance monstrate monstration monstrator monstricide monstriferous monstrification monstrify monstrosity monstrous monstrously monstrousness Mont montage Montagnac Montagnais Montana montana Montanan montane montanic montanin Montanism Montanist Montanistic Montanistical montanite Montanize montant Montargis Montauk montbretia monte montebrasite monteith montem Montenegrin Montepulciano Monterey Montes Montesco Montesinos Montessorian Montessorianism Montezuma montgolfier month monthly monthon Montia monticellite monticle monticoline monticulate monticule Monticulipora Monticuliporidae monticuliporidean monticuliporoid monticulose monticulous monticulus montiform montigeneous montilla montjoy montmartrite Montmorency montmorilonite monton Montrachet montroydite Montu monture Monumbo monument monumental monumentalism monumentality monumentalization monumentalize monumentally monumentary monumentless monumentlike monzodiorite monzogabbro monzonite monzonitic moo Mooachaht mooch moocha moocher moochulka mood mooder moodily moodiness moodish moodishly moodishness moodle moody mooing mool moolet moolings mools moolum moon moonack moonbeam moonbill moonblink mooncalf mooncreeper moondown moondrop mooned mooner moonery mooneye moonface moonfaced moonfall moonfish moonflower moonglade moonglow moonhead moonily mooniness mooning moonish moonite moonja moonjah moonless moonlet moonlight moonlighted moonlighter moonlighting moonlighty moonlike moonlikeness moonlit moonlitten moonman moonpath moonpenny moonproof moonraker moonraking moonrise moonsail moonscape moonseed moonset moonshade moonshine moonshiner moonshining moonshiny moonsick moonsickness moonstone moontide moonwalker moonwalking moonward moonwards moonway moonwort moony moop Moor moor moorage moorball moorband moorberry moorbird moorburn moorburner moorburning moorflower moorfowl mooring Moorish moorish moorishly moorishness moorland moorlander Moorman moorman moorn moorpan moors Moorship moorsman moorstone moortetter moorup moorwort moory moosa moose mooseberry moosebird moosebush moosecall mooseflower moosehood moosemise moosetongue moosewob moosewood moosey moost moot mootable mooter mooth mooting mootman mootstead mootworthy mop Mopan mopane mopboard mope moper moph mophead mopheaded moping mopingly mopish mopishly mopishness mopla mopper moppet moppy mopstick mopsy mopus Moquelumnan moquette Moqui mor mora Moraceae moraceous Moraea morainal moraine morainic moral morale moralism moralist moralistic moralistically morality moralization moralize moralizer moralizingly moralless morally moralness morals morass morassic morassweed morassy morat morate moration moratoria moratorium moratory Moravian Moravianism Moravianized Moravid moravite moray morbid morbidity morbidize morbidly morbidness morbiferal morbiferous morbific morbifical morbifically morbify morbility morbillary morbilli morbilliform morbillous morcellate morcellated morcellation Morchella Morcote mordacious mordaciously mordacity mordancy mordant mordantly Mordella mordellid Mordellidae mordelloid mordenite mordent mordicate mordication mordicative mordore Mordv Mordva Mordvin Mordvinian more moreen morefold moreish morel morella morello morencite moreness morenita morenosite Moreote moreover morepork mores Moresque morfrey morg morga Morgan morgan Morgana morganatic morganatical morganatically morganic morganite morganize morgay morgen morgengift morgenstern morglay morgue moribund moribundity moribundly moric moriche moriform morigerate morigeration morigerous morigerously morigerousness morillon morin Morinaceae Morinda morindin morindone morinel Moringa Moringaceae moringaceous moringad Moringua moringuid Moringuidae moringuoid morion Moriori Moriscan Morisco Morisonian Morisonianism morkin morlop mormaor mormaordom mormaorship mormo Mormon mormon Mormondom Mormoness Mormonism Mormonist Mormonite Mormonweed Mormoops mormyr mormyre mormyrian mormyrid Mormyridae mormyroid Mormyrus morn morne morned morning morningless morningly mornings morningtide morningward mornless mornlike morntime mornward Moro moro moroc Moroccan Morocco morocco morocota morological morologically morologist morology moromancy moron moroncy morong moronic Moronidae moronism moronity moronry Moropus morosaurian morosauroid Morosaurus morose morosely moroseness morosis morosity moroxite morph morphallaxis morphea Morphean morpheme morphemic morphemics morphetic Morpheus morphew morphia morphiate morphic morphically morphinate morphine morphinic morphinism morphinist morphinization morphinize morphinomania morphinomaniac morphiomania morphiomaniac Morpho morphogenesis morphogenetic morphogenic morphogeny morphographer morphographic morphographical morphographist morphography morpholine morphologic morphological morphologically morphologist morphology morphometrical morphometry morphon morphonomic morphonomy morphophonemic morphophonemically morphophonemics morphophyly morphoplasm morphoplasmic morphosis morphotic morphotropic morphotropism morphotropy morphous Morrenian Morrhua morrhuate morrhuine morricer morris Morrisean morrow morrowing morrowless morrowmass morrowspeech morrowtide morsal Morse morse morsel morselization morselize morsing morsure mort mortacious mortal mortalism mortalist mortality mortalize mortally mortalness mortalwise mortar mortarboard mortarize mortarless mortarlike mortarware mortary mortbell mortcloth mortersheen mortgage mortgageable mortgagee mortgagor morth morthwyrtha mortician mortier mortiferous mortiferously mortiferousness mortific mortification mortified mortifiedly mortifiedness mortifier mortify mortifying mortifyingly Mortimer mortise mortiser mortling mortmain mortmainer mortuarian mortuary mortuous morula morular morulation morule moruloid Morus morvin morwong Mosaic mosaic Mosaical mosaical mosaically mosaicism mosaicist Mosaicity Mosaism Mosaist mosaist mosandrite mosasaur Mosasauri Mosasauria mosasaurian mosasaurid Mosasauridae mosasauroid Mosasaurus Mosatenan moschate moschatel moschatelline Moschi Moschidae moschiferous Moschinae moschine Moschus Moscow Mose Moselle Moses mosesite Mosetena mosette mosey Mosgu moskeneer mosker Moslem Moslemah Moslemic Moslemin Moslemism Moslemite Moslemize moslings mosque mosquelet mosquish mosquital Mosquito mosquito mosquitobill mosquitocidal mosquitocide mosquitoey mosquitoish mosquitoproof moss mossback mossberry mossbunker mossed mosser mossery mossful mosshead Mossi mossiness mossless mosslike mosstrooper mosstroopery mosstrooping mosswort mossy mossyback most moste Mosting mostlike mostlings mostly mostness Mosul mot Motacilla motacillid Motacillidae Motacillinae motacilline motatorious motatory Motazilite mote moted motel moteless moter motet motettist motey moth mothed mother motherdom mothered motherer mothergate motherhood motheriness mothering motherkin motherland motherless motherlessness motherlike motherliness motherling motherly mothership mothersome motherward motherwise motherwort mothery mothless mothlike mothproof mothworm mothy motif motific motile motility motion motionable motional motionless motionlessly motionlessness motitation motivate motivation motivational motive motiveless motivelessly motivelessness motiveness motivity motley motleyness motmot motofacient motograph motographic motomagnetic motoneuron motophone motor motorable motorboat motorboatman motorbus motorcab motorcade motorcar motorcycle motorcyclist motordom motordrome motored motorial motoric motoring motorism motorist motorium motorization motorize motorless motorman motorneer motorphobe motorphobia motorphobiac motorway motory Motozintlec Motozintleca motricity mott motte mottle mottled mottledness mottlement mottler mottling motto mottoed mottoless mottolike mottramite motyka mou moucharaby mouchardism mouche mouchrabieh moud moudie moudieman moudy mouflon Mougeotia Mougeotiaceae mouillation mouille mouillure moujik moul mould moulded moule moulin moulinage moulinet moulleen moulrush mouls moulter mouly mound moundiness moundlet moundwork moundy mount mountable mountably mountain mountained mountaineer mountainet mountainette mountainless mountainlike mountainous mountainously mountainousness mountainside mountaintop mountainward mountainwards mountainy mountant mountebank mountebankery mountebankish mountebankism mountebankly mounted mounter Mountie mounting mountingly mountlet mounture moup mourn mourner mourneress mournful mournfully mournfulness mourning mourningly mournival mournsome mouse mousebane mousebird mousefish mousehawk mousehole mousehound Mouseion mousekin mouselet mouselike mouseproof mouser mousery mouseship mousetail mousetrap mouseweb mousey mousily mousiness mousing mousingly mousle mousmee Mousoni mousquetaire mousse Mousterian moustoc mousy mout moutan mouth mouthable mouthbreeder mouthed mouther mouthful mouthily mouthiness mouthing mouthingly mouthishly mouthless mouthlike mouthpiece mouthroot mouthwash mouthwise mouthy mouton moutonnee mouzah mouzouna movability movable movableness movably movant move moveability moveableness moveably moveless movelessly movelessness movement mover movie moviedom movieize movieland moving movingly movingness mow mowable mowana mowburn mowburnt mowch mowcht mower mowha mowie mowing mowland mown mowra mowrah mowse mowstead mowt mowth moxa moxieberry Moxo moy moyen moyenless moyenne moyite moyle moyo Mozambican mozambique Mozarab Mozarabian Mozarabic Mozartean mozemize mozing mozzetta Mpangwe Mpondo mpret Mr Mrs Mru mu muang mubarat mucago mucaro mucedin mucedinaceous mucedine mucedinous much muchfold muchly muchness mucic mucid mucidness muciferous mucific muciform mucigen mucigenous mucilage mucilaginous mucilaginously mucilaginousness mucin mucinogen mucinoid mucinous muciparous mucivore mucivorous muck muckender Mucker mucker muckerish muckerism mucket muckiness muckite muckle muckluck muckman muckment muckmidden muckna muckrake muckraker mucksweat mucksy muckthrift muckweed muckworm mucky mucluc mucocele mucocellulose mucocellulosic mucocutaneous mucodermal mucofibrous mucoflocculent mucoid mucomembranous muconic mucoprotein mucopurulent mucopus mucor Mucoraceae mucoraceous Mucorales mucorine mucorioid mucormycosis mucorrhea mucosa mucosal mucosanguineous mucose mucoserous mucosity mucosocalcareous mucosogranular mucosopurulent mucososaccharine mucous mucousness mucro mucronate mucronately mucronation mucrones mucroniferous mucroniform mucronulate mucronulatous muculent Mucuna mucus mucusin mud mudar mudbank mudcap mudd mudde mudden muddify muddily muddiness mudding muddish muddle muddlebrained muddledom muddlehead muddleheaded muddleheadedness muddlement muddleproof muddler muddlesome muddlingly muddy muddybrained muddybreast muddyheaded mudee Mudejar mudfish mudflow mudguard mudhead mudhole mudhopper mudir mudiria mudland mudlark mudlarker mudless mudproof mudra mudsill mudskipper mudslinger mudslinging mudspate mudstain mudstone mudsucker mudtrack mudweed mudwort Muehlenbeckia muermo muezzin muff muffed muffet muffetee muffin muffineer muffish muffishness muffle muffled muffleman muffler mufflin muffy mufti mufty mug muga mugearite mugful mugg mugger mugget muggily mugginess muggins muggish muggles Muggletonian Muggletonianism muggy mughouse mugience mugiency mugient Mugil Mugilidae mugiliform mugiloid mugweed mugwort mugwump mugwumpery mugwumpian mugwumpism muhammadi Muharram Muhlenbergia muid Muilla muir muirburn muircock muirfowl muishond muist mujtahid Mukden mukluk Mukri muktar muktatma mukti mulaprakriti mulatta mulatto mulattoism mulattress mulberry mulch mulcher Mulciber Mulcibirian mulct mulctable mulctary mulctation mulctative mulctatory mulctuary mulder mule muleback mulefoot mulefooted muleman muleta muleteer muletress muletta mulewort muley mulga muliebral muliebria muliebrile muliebrity muliebrous mulier mulierine mulierose mulierosity mulish mulishly mulishness mulism mulita mulk mull mulla mullah mullar mullein mullenize muller Mullerian mullet mulletry mullets mulley mullid Mullidae mulligan mulligatawny mulligrubs mullion mullite mullock mullocker mullocky mulloid mulloway mulmul mulse mulsify mult multangular multangularly multangularness multangulous multangulum Multani multanimous multarticulate multeity multiangular multiareolate multiarticular multiarticulate multiarticulated multiaxial multiblade multibladed multibranched multibranchiate multibreak multicamerate multicapitate multicapsular multicarinate multicarinated multicellular multicentral multicentric multicharge multichord multichrome multiciliate multiciliated multicipital multicircuit multicoccous multicoil multicolor multicolored multicolorous multicomponent multiconductor multiconstant multicore multicorneal multicostate multicourse multicrystalline multicuspid multicuspidate multicycle multicylinder multicylindered multidentate multidenticulate multidenticulated multidigitate multidimensional multidirectional multidisperse multiengine multiengined multiexhaust multifaced multifaceted multifactorial multifamilial multifarious multifariously multifariousness multiferous multifetation multifibered multifid multifidly multifidous multifidus multifilament multifistular multiflagellate multiflagellated multiflash multiflorous multiflow multiflue multifocal multifoil multifoiled multifold multifoliate multifoliolate multiform multiformed multiformity multifurcate multiganglionic multigap multigranulate multigranulated Multigraph multigraph multigrapher multiguttulate multigyrate multihead multihearth multihued multijet multijugate multijugous multilaciniate multilamellar multilamellate multilamellous multilaminar multilaminate multilaminated multilateral multilaterally multilighted multilineal multilinear multilingual multilinguist multilirate multiliteral multilobar multilobate multilobe multilobed multilobular multilobulate multilobulated multilocation multilocular multiloculate multiloculated multiloquence multiloquent multiloquious multiloquous multiloquy multimacular multimammate multimarble multimascular multimedial multimetalic multimetallism multimetallist multimillion multimillionaire multimodal multimodality multimolecular multimotor multimotored multinational multinervate multinervose multinodal multinodate multinodous multinodular multinomial multinominal multinominous multinuclear multinucleate multinucleated multinucleolar multinucleolate multinucleolated multiovular multiovulate multipara multiparient multiparity multiparous multipartisan multipartite multiped multiperforate multiperforated multipersonal multiphase multiphaser multiphotography multipinnate multiplane multiple multiplepoinding multiplet multiplex multipliable multipliableness multiplicability multiplicable multiplicand multiplicate multiplication multiplicational multiplicative multiplicatively multiplicator multiplicity multiplier multiply multiplying multipointed multipolar multipole multiported multipotent multipresence multipresent multiradial multiradiate multiradiated multiradicate multiradicular multiramified multiramose multiramous multirate multireflex multirooted multirotation multirotatory multisaccate multisacculate multisacculated multiscience multiseated multisect multisector multisegmental multisegmentate multisegmented multisensual multiseptate multiserial multiserially multiseriate multishot multisiliquous multisonous multispeed multispermous multispicular multispiculate multispindle multispinous multispiral multispired multistage multistaminate multistoried multistory multistratified multistratous multistriate multisulcate multisulcated multisyllabic multisyllability multisyllable multitarian multitentaculate multitheism multithreaded multititular multitoed multitoned multitube Multituberculata multituberculate multituberculated multituberculism multituberculy multitubular multitude multitudinal multitudinary multitudinism multitudinist multitudinistic multitudinosity multitudinous multitudinously multitudinousness multiturn multivagant multivalence multivalency multivalent multivalve multivalved multivalvular multivane multivariant multivarious multiversant multiverse multivibrator multivincular multivious multivocal multivocalness multivoiced multivolent multivoltine multivolumed multivorous multocular multum multungulate multure multurer mum mumble mumblebee mumblement mumbler mumbling mumblingly mummer mummery mummichog mummick mummied mummification mummiform mummify mumming mummy mummydom mummyhood mummylike mumness mump mumper mumphead mumpish mumpishly mumpishness mumps mumpsimus mumruffin mun Munandi Muncerian munch Munchausenism Munchausenize muncheel muncher munchet mund Munda mundane mundanely mundaneness mundanism mundanity Mundari mundatory mundic mundificant mundification mundifier mundify mundil mundivagant mundle mung munga munge mungey mungo mungofa munguba mungy Munia Munich Munichism municipal municipalism municipalist municipality municipalization municipalize municipalizer municipally municipium munific munificence munificency munificent munificently munificentness muniment munition munitionary munitioneer munitioner munitions munity munj munjeet munjistin munnion Munnopsidae Munnopsis Munsee munshi munt Muntiacus muntin Muntingia muntjac Munychia Munychian Munychion Muong Muphrid Mura mura Muradiyah Muraena Muraenidae muraenoid murage mural muraled muralist murally Muran Muranese murasakite Muratorian murchy murder murderer murderess murdering murderingly murderish murderment murderous murderously murderousness murdrum mure murenger murex murexan murexide murga murgavi murgeon muriate muriated muriatic muricate muricid Muricidae muriciform muricine muricoid muriculate murid Muridae muridism Muriel muriform muriformly Murillo Murinae murine murinus muriti murium murk murkily murkiness murkish murkly murkness murksome murky murlin murly Murmi murmur murmuration murmurator murmurer murmuring murmuringly murmurish murmurless murmurlessly murmurous murmurously muromontite murphy murra murrain Murraya murre murrelet murrey murrhine murrina murrnong murshid murumuru Murut muruxi murva murza Murzim Mus Musa Musaceae musaceous Musaeus musal Musales Musalmani musang musar Musca muscade muscadel muscadine Muscadinia muscardine Muscardinidae Muscardinus Muscari muscariform muscarine muscat muscatel muscatorium Musci Muscicapa Muscicapidae muscicapine muscicide muscicole muscicoline muscicolous muscid Muscidae musciform Muscinae muscle muscled muscleless musclelike muscling muscly Muscogee muscoid Muscoidea muscologic muscological muscologist muscology muscone muscose muscoseness muscosity muscot muscovadite muscovado Muscovi Muscovite muscovite Muscovitic muscovitization muscovitize muscovy muscular muscularity muscularize muscularly musculation musculature muscule musculin musculoarterial musculocellular musculocutaneous musculodermic musculoelastic musculofibrous musculointestinal musculoligamentous musculomembranous musculopallial musculophrenic musculospinal musculospiral musculotegumentary musculotendinous Muse muse mused museful musefully museist museless muselike museographist museography museologist museology muser musery musette museum museumize Musgu mush musha mushaa Mushabbihite mushed musher mushhead mushheaded mushheadedness mushily mushiness mushla mushmelon mushrebiyeh mushroom mushroomer mushroomic mushroomlike mushroomy mushru mushy music musical musicale musicality musicalization musicalize musically musicalness musicate musician musiciana musicianer musicianly musicianship musicker musicless musiclike musicmonger musico musicoartistic musicodramatic musicofanatic musicographer musicography musicological musicologist musicologue musicology musicomania musicomechanical musicophilosophical musicophobia musicophysical musicopoetic musicotherapy musicproof musie musily musimon musing musingly musk muskat muskeg muskeggy muskellunge musket musketade musketeer musketlike musketoon musketproof musketry muskflower Muskhogean muskie muskiness muskish musklike muskmelon Muskogee muskrat muskroot Muskwaki muskwood musky muslin muslined muslinet musnud Musophaga Musophagi Musophagidae musophagine musquash musquashroot musquashweed musquaspen musquaw musrol muss mussable mussably Mussaenda mussal mussalchee mussel musseled musseler mussily mussiness mussitate mussitation mussuk Mussulman Mussulmanic Mussulmanish Mussulmanism Mussulwoman mussurana mussy must mustache mustached mustachial mustachio mustachioed mustafina Mustahfiz mustang mustanger mustard mustarder mustee Mustela mustelid Mustelidae musteline mustelinous musteloid Mustelus muster musterable musterdevillers musterer mustermaster mustify mustily mustiness mustnt musty muta Mutabilia mutability mutable mutableness mutably mutafacient mutage mutagenic mutant mutarotate mutarotation mutase mutate mutation mutational mutationally mutationism mutationist mutative mutatory mutawalli Mutazala mutch mute mutedly mutely muteness Muter mutesarif mutescence mutessarifat muth muthmannite muthmassel mutic muticous mutilate mutilation mutilative mutilator mutilatory Mutilla mutillid Mutillidae mutilous mutineer mutinous mutinously mutinousness mutiny Mutisia Mutisiaceae mutism mutist mutistic mutive mutivity mutoscope mutoscopic mutsje mutsuddy mutt mutter mutterer muttering mutteringly mutton muttonbird muttonchop muttonfish muttonhead muttonheaded muttonhood muttonmonger muttonwood muttony mutual mutualism mutualist mutualistic mutuality mutualization mutualize mutually mutualness mutuary mutuatitious mutulary mutule mutuum mux Muysca muyusa muzhik Muzo muzz muzzily muzziness muzzle muzzler muzzlewood muzzy my Mya Myacea myal myalgia myalgic myalism myall Myaria myarian myasthenia myasthenic myatonia myatonic myatony myatrophy mycele mycelia mycelial mycelian mycelioid mycelium myceloid Mycenaean Mycetes mycetism mycetocyte mycetogenesis mycetogenetic mycetogenic mycetogenous mycetoid mycetological mycetology mycetoma mycetomatous Mycetophagidae mycetophagous mycetophilid Mycetophilidae mycetous Mycetozoa mycetozoan mycetozoon Mycobacteria Mycobacteriaceae Mycobacterium mycocecidium mycocyte mycoderm mycoderma mycodermatoid mycodermatous mycodermic mycodermitis mycodesmoid mycodomatium mycogastritis Mycogone mycohaemia mycohemia mycoid mycologic mycological mycologically mycologist mycologize mycology mycomycete Mycomycetes mycomycetous mycomyringitis mycophagist mycophagous mycophagy mycophyte Mycoplana mycoplasm mycoplasmic mycoprotein mycorhiza mycorhizal mycorrhizal mycose mycosin mycosis mycosozin Mycosphaerella Mycosphaerellaceae mycosterol mycosymbiosis mycotic mycotrophic Mycteria mycteric mycterism Myctodera myctophid Myctophidae Myctophum Mydaidae mydaleine mydatoxine Mydaus mydine mydriasine mydriasis mydriatic mydriatine myectomize myectomy myectopia myectopy myelalgia myelapoplexy myelasthenia myelatrophy myelauxe myelemia myelencephalic myelencephalon myelencephalous myelic myelin myelinate myelinated myelination myelinic myelinization myelinogenesis myelinogenetic myelinogeny myelitic myelitis myeloblast myeloblastic myelobrachium myelocele myelocerebellar myelocoele myelocyst myelocystic myelocystocele myelocyte myelocythaemia myelocythemia myelocytic myelocytosis myelodiastasis myeloencephalitis myeloganglitis myelogenesis myelogenetic myelogenous myelogonium myeloic myeloid myelolymphangioma myelolymphocyte myeloma myelomalacia myelomatoid myelomatosis myelomenia myelomeningitis myelomeningocele myelomere myelon myelonal myeloneuritis myelonic myeloparalysis myelopathic myelopathy myelopetal myelophthisis myeloplast myeloplastic myeloplax myeloplegia myelopoiesis myelopoietic myelorrhagia myelorrhaphy myelosarcoma myelosclerosis myelospasm myelospongium myelosyphilis myelosyphilosis myelosyringosis myelotherapy Myelozoa myelozoan myentasis myenteric myenteron myesthesia mygale mygalid mygaloid Myiarchus myiasis myiferous myiodesopsia myiosis myitis mykiss myliobatid Myliobatidae myliobatine myliobatoid Mylodon mylodont Mylodontidae mylohyoid mylohyoidean mylonite mylonitic Mymar mymarid Mymaridae myna Mynheer mynpacht mynpachtbrief myoalbumin myoalbumose myoatrophy myoblast myoblastic myocardiac myocardial myocardiogram myocardiograph myocarditic myocarditis myocardium myocele myocellulitis myoclonic myoclonus myocoele myocoelom myocolpitis myocomma myocyte myodegeneration Myodes myodiastasis myodynamia myodynamic myodynamics myodynamiometer myodynamometer myoedema myoelectric myoendocarditis myoepicardial myoepithelial myofibril myofibroma myogen myogenesis myogenetic myogenic myogenous myoglobin myoglobulin myogram myograph myographer myographic myographical myographist myography myohematin myoid myoidema myokinesis myolemma myolipoma myoliposis myologic myological myologist myology myolysis myoma myomalacia myomancy myomantic myomatous myomectomy myomelanosis myomere myometritis myometrium myomohysterectomy myomorph Myomorpha myomorphic myomotomy myoneme myoneural myoneuralgia myoneurasthenia myoneure myoneuroma myoneurosis myonosus myopachynsis myoparalysis myoparesis myopathia myopathic myopathy myope myoperitonitis myophan myophore myophorous myophysical myophysics myopia myopic myopical myopically myoplasm myoplastic myoplasty myopolar Myoporaceae myoporaceous myoporad Myoporum myoproteid myoprotein myoproteose myops myopy myorrhaphy myorrhexis myosalpingitis myosarcoma myosarcomatous myosclerosis myoscope myoseptum myosin myosinogen myosinose myosis myositic myositis myosote Myosotis myospasm myospasmia Myosurus myosuture myosynizesis myotacismus Myotalpa Myotalpinae myotasis myotenotomy myothermic myotic myotome myotomic myotomy myotonia myotonic myotonus myotony myotrophy myowun Myoxidae myoxine Myoxus Myra myrabalanus myrabolam myrcene Myrcia myrcia myriacanthous myriacoulomb myriad myriaded myriadfold myriadly myriadth myriagram myriagramme myrialiter myrialitre myriameter myriametre Myrianida myriapod Myriapoda myriapodan myriapodous myriarch myriarchy myriare Myrica myrica Myricaceae myricaceous Myricales myricetin myricin myricyl myricylic Myrientomata myringa myringectomy myringitis myringodectomy myringodermatitis myringomycosis myringoplasty myringotome myringotomy myriological myriologist myriologue myriophyllite myriophyllous Myriophyllum Myriopoda myriopodous myriorama myrioscope myriosporous myriotheism Myriotrichia Myriotrichiaceae myriotrichiaceous myristate myristic Myristica myristica Myristicaceae myristicaceous Myristicivora myristicivorous myristin myristone Myrmecia Myrmecobiinae myrmecobine Myrmecobius myrmecochorous myrmecochory myrmecoid myrmecoidy myrmecological myrmecologist myrmecology Myrmecophaga Myrmecophagidae myrmecophagine myrmecophagoid myrmecophagous myrmecophile myrmecophilism myrmecophilous myrmecophily myrmecophobic myrmecophyte myrmecophytic myrmekite Myrmeleon Myrmeleonidae Myrmeleontidae Myrmica myrmicid Myrmicidae myrmicine myrmicoid Myrmidon Myrmidonian myrmotherine myrobalan myron myronate myronic myrosin myrosinase Myrothamnaceae myrothamnaceous Myrothamnus Myroxylon myrrh myrrhed myrrhic myrrhine Myrrhis myrrhol myrrhophore myrrhy Myrsinaceae myrsinaceous myrsinad Myrsiphyllum Myrtaceae myrtaceous myrtal Myrtales myrtiform Myrtilus myrtle myrtleberry myrtlelike myrtol Myrtus mysel myself mysell Mysian mysid Mysidacea Mysidae mysidean Mysis mysogynism mysoid mysophobia mysosophist mysost myst mystacial Mystacocete Mystacoceti mystagogic mystagogical mystagogically mystagogue mystagogy mystax mysterial mysteriarch mysteriosophic mysteriosophy mysterious mysteriously mysteriousness mysterize mystery mystes mystic mystical mysticality mystically mysticalness Mysticete mysticete Mysticeti mysticetous mysticism mysticity mysticize mysticly mystific mystifically mystification mystificator mystificatory mystifiedly mystifier mystify mystifyingly mytacism myth mythical mythicalism mythicality mythically mythicalness mythicism mythicist mythicize mythicizer mythification mythify mythism mythist mythize mythland mythmaker mythmaking mythoclast mythoclastic mythogenesis mythogonic mythogony mythographer mythographist mythography mythogreen mythoheroic mythohistoric mythologema mythologer mythological mythologically mythologist mythologize mythologizer mythologue mythology mythomania mythomaniac mythometer mythonomy mythopastoral mythopoeic mythopoeism mythopoeist mythopoem mythopoesis mythopoesy mythopoet mythopoetic mythopoetize mythopoetry mythos mythus Mytilacea mytilacean mytilaceous Mytiliaspis mytilid Mytilidae mytiliform mytiloid mytilotoxine Mytilus myxa myxadenitis myxadenoma myxaemia myxamoeba myxangitis myxasthenia myxedema myxedematoid myxedematous myxedemic myxemia Myxine Myxinidae myxinoid Myxinoidei myxo Myxobacteria Myxobacteriaceae myxobacteriaceous Myxobacteriales myxoblastoma myxochondroma myxochondrosarcoma Myxococcus myxocystoma myxocyte myxoenchondroma myxofibroma myxofibrosarcoma myxoflagellate myxogaster Myxogasteres Myxogastrales Myxogastres myxogastric myxogastrous myxoglioma myxoid myxoinoma myxolipoma myxoma myxomatosis myxomatous Myxomycetales myxomycete Myxomycetes myxomycetous myxomyoma myxoneuroma myxopapilloma Myxophyceae myxophycean Myxophyta myxopod Myxopoda myxopodan myxopodium myxopodous myxopoiesis myxorrhea myxosarcoma Myxospongiae myxospongian Myxospongida myxospore Myxosporidia myxosporidian Myxosporidiida Myxosporium myxosporous Myxothallophyta myxotheca Myzodendraceae myzodendraceous Myzodendron Myzomyia myzont Myzontes Myzostoma Myzostomata myzostomatous myzostome myzostomid Myzostomida Myzostomidae myzostomidan myzostomous N n na naa naam Naaman Naassenes nab nabak Nabal Nabalism Nabalite Nabalitic Nabaloi Nabalus Nabataean Nabatean Nabathaean Nabathean Nabathite nabber Nabby nabk nabla nable nabob nabobery nabobess nabobical nabobish nabobishly nabobism nabobry nabobship Nabothian nabs Nabu nacarat nacarine nace nacelle nach nachani Nachitoch Nachitoches Nachschlag Nacionalista nacket nacre nacred nacreous nacrine nacrite nacrous nacry nadder nadir nadiral nadorite nae naebody naegate naegates nael Naemorhedinae naemorhedine Naemorhedus naether naething nag Naga naga nagaika nagana nagara Nagari nagatelite nagger naggin nagging naggingly naggingness naggish naggle naggly naggy naght nagkassar nagmaal nagman nagnag nagnail nagor nagsman nagster nagual nagualism nagualist nagyagite Nahanarvali Nahane Nahani Naharvali Nahor Nahua Nahuan Nahuatl Nahuatlac Nahuatlan Nahuatleca Nahuatlecan Nahum naiad Naiadaceae naiadaceous Naiadales Naiades naiant Naias naid naif naifly naig naigie naik nail nailbin nailbrush nailer naileress nailery nailhead nailing nailless naillike nailprint nailproof nailrod nailshop nailsick nailsmith nailwort naily nain nainsel nainsook naio naipkin Nair nairy nais naish naissance naissant naither naive naively naiveness naivete naivety Naja nak nake naked nakedish nakedize nakedly nakedness nakedweed nakedwood naker nakhlite nakhod nakhoda Nakir nako Nakomgilisala nakong nakoo Nakula Nalita nallah nam Nama namability namable Namaqua namaqua Namaquan namaycush namaz namazlik Nambe namda name nameability nameable nameboard nameless namelessly namelessness nameling namely namer namesake naming nammad Nan nan Nana nana Nanaimo nanawood Nance Nancy nancy Nandi nandi Nandina nandine nandow nandu nane nanes nanga nanism nanization nankeen Nankin nankin Nanking Nankingese nannander nannandrium nannandrous Nannette nannoplankton Nanny nanny nannyberry nannybush nanocephalia nanocephalic nanocephalism nanocephalous nanocephalus nanocephaly nanoid nanomelia nanomelous nanomelus nanosoma nanosomia nanosomus nanpie nant Nanticoke nantle nantokite Nantz naological naology naometry Naomi Naos naos Naosaurus nap napa Napaea Napaean napal napalm nape napead napecrest napellus naperer napery naphtha naphthacene naphthalate naphthalene naphthaleneacetic naphthalenesulphonic naphthalenic naphthalenoid naphthalic naphthalidine naphthalin naphthaline naphthalization naphthalize naphthalol naphthamine naphthanthracene naphthene naphthenic naphthinduline naphthionate naphtho naphthoic naphthol naphtholate naphtholize naphtholsulphonate naphtholsulphonic naphthoquinone naphthoresorcinol naphthosalol naphthous naphthoxide naphthyl naphthylamine naphthylaminesulphonic naphthylene naphthylic naphtol Napierian napiform napkin napkining napless naplessness Napoleon napoleon Napoleonana Napoleonic Napoleonically Napoleonism Napoleonist Napoleonistic napoleonite Napoleonize napoo nappe napped napper nappiness napping nappishness nappy naprapath naprapathy napron napthionic napu nar Narcaciontes Narcaciontidae narceine narcism Narciss Narcissan narcissi Narcissine narcissism narcissist narcissistic Narcissus narcist narcistic narcoanalysis narcoanesthesia Narcobatidae Narcobatoidea Narcobatus narcohypnia narcohypnosis narcolepsy narcoleptic narcoma narcomania narcomaniac narcomaniacal narcomatous Narcomedusae narcomedusan narcose narcosis narcostimulant narcosynthesis narcotherapy narcotia narcotic narcotical narcotically narcoticalness narcoticism narcoticness narcotina narcotine narcotinic narcotism narcotist narcotization narcotize narcous nard nardine nardoo Nardus nares narghile nargil narial naric narica naricorn nariform narine naringenin naringin nark narky narr narra Narraganset narras narratable narrate narrater narration narrational narrative narratively narrator narratory narratress narratrix narrawood narrow narrower narrowhearted narrowheartedness narrowingness narrowish narrowly narrowness narrowy narsarsukite narsinga narthecal Narthecium narthex narwhal narwhalian nary nasab nasal Nasalis nasalis nasalism nasality nasalization nasalize nasally nasalward nasalwards nasard Nascan Nascapi nascence nascency nascent nasch naseberry nasethmoid nash nashgab nashgob Nashim Nashira Nashua nasi nasial nasicorn Nasicornia nasicornous Nasiei nasiform nasilabial nasillate nasillation nasioalveolar nasiobregmatic nasioinial nasiomental nasion nasitis Naskhi nasoalveola nasoantral nasobasilar nasobronchial nasobuccal nasoccipital nasociliary nasoethmoidal nasofrontal nasolabial nasolachrymal nasological nasologist nasology nasomalar nasomaxillary nasonite nasoorbital nasopalatal nasopalatine nasopharyngeal nasopharyngitis nasopharynx nasoprognathic nasoprognathism nasorostral nasoscope nasoseptal nasosinuitis nasosinusitis nasosubnasal nasoturbinal nasrol Nassa Nassau Nassellaria nassellarian Nassidae nassology nast nastaliq nastic nastika nastily nastiness nasturtion nasturtium nasty Nasua nasus nasute nasuteness nasutiform nasutus nat natability nataka Natal natal Natalia Natalian Natalie natality nataloin natals natant natantly Nataraja natation natational natator natatorial natatorious natatorium natatory natch natchbone Natchez Natchezan Natchitoches natchnee nates Nathan Nathanael Nathaniel nathe nather nathless Natica Naticidae naticiform naticine Natick naticoid natiform natimortality nation national nationalism nationalist nationalistic nationalistically nationality nationalization nationalize nationalizer nationally nationalness nationalty nationhood nationless nationwide native natively nativeness nativism nativist nativistic nativity natr Natricinae natricine natrium Natrix natrochalcite natrojarosite natrolite natron Natt natter nattered natteredness natterjack nattily nattiness nattle natty natuary natural naturalesque naturalism naturalist naturalistic naturalistically naturality naturalization naturalize naturalizer naturally naturalness nature naturecraft naturelike naturing naturism naturist naturistic naturistically naturize naturopath naturopathic naturopathist naturopathy naucrar naucrary naufragous nauger naught naughtily naughtiness naughty naujaite naumachia naumachy naumannite Naumburgia naumk naumkeag naumkeager naunt nauntle naupathia nauplial naupliiform nauplioid nauplius nauropometer nauscopy nausea nauseant nauseaproof nauseate nauseatingly nauseation nauseous nauseously nauseousness Nauset naut nautch nauther nautic nautical nauticality nautically nautics nautiform Nautilacea nautilacean nautilicone nautiliform nautilite nautiloid Nautiloidea nautiloidean nautilus Navaho Navajo naval navalese navalism navalist navalistic navalistically navally navar navarch navarchy Navarrese Navarrian nave navel naveled navellike navelwort navet navette navew navicella navicert navicula Naviculaceae naviculaeform navicular naviculare naviculoid naviform navigability navigable navigableness navigably navigant navigate navigation navigational navigator navigerous navipendular navipendulum navite navvy navy naw nawab nawabship nawt nay Nayar Nayarit Nayarita nayaur naysay naysayer nayward nayword Nazarate Nazarean Nazarene Nazarenism Nazarite Nazariteship Nazaritic Nazaritish Nazaritism naze Nazerini Nazi Nazify Naziism nazim nazir Nazirate Nazirite Naziritic Nazism ne nea Neal neal neallotype Neanderthal Neanderthaler Neanderthaloid neanic neanthropic neap neaped Neapolitan nearable nearabout nearabouts nearaivays nearaway nearby Nearctic Nearctica nearest nearish nearly nearmost nearness nearsighted nearsightedly nearsightedness nearthrosis neat neaten neath neatherd neatherdess neathmost neatify neatly neatness neb neback Nebaioth Nebalia Nebaliacea nebalian Nebaliidae nebalioid nebbed nebbuck nebbuk nebby nebel nebelist nebenkern Nebiim Nebraskan nebris nebula nebulae nebular nebularization nebularize nebulated nebulation nebule nebulescent nebuliferous nebulite nebulium nebulization nebulize nebulizer nebulose nebulosity nebulous nebulously nebulousness Necator necessar necessarian necessarianism necessarily necessariness necessary necessism necessist necessitarian necessitarianism necessitate necessitatedly necessitatingly necessitation necessitative necessitous necessitously necessitousness necessitude necessity neck neckar neckatee neckband neckcloth necked necker neckercher neckerchief neckful neckguard necking neckinger necklace necklaced necklaceweed neckless necklet necklike neckline neckmold neckpiece neckstock necktie necktieless neckward neckwear neckweed neckyoke necrectomy necremia necrobacillary necrobacillosis necrobiosis necrobiotic necrogenic necrogenous necrographer necrolatry necrologic necrological necrologically necrologist necrologue necrology necromancer necromancing necromancy necromantic necromantically necromorphous necronite necropathy Necrophaga necrophagan necrophagous necrophile necrophilia necrophilic necrophilism necrophilistic necrophilous necrophily necrophobia necrophobic Necrophorus necropoleis necropoles necropolis necropolitan necropsy necroscopic necroscopical necroscopy necrose necrosis necrotic necrotization necrotize necrotomic necrotomist necrotomy necrotype necrotypic Nectandra nectar nectareal nectarean nectared nectareous nectareously nectareousness nectarial nectarian nectaried nectariferous nectarine Nectarinia Nectariniidae nectarious nectarium nectarivorous nectarize nectarlike nectarous nectary nectiferous nectocalycine nectocalyx Nectonema nectophore nectopod Nectria nectriaceous Nectrioidaceae Necturidae Necturus Ned nedder neddy Nederlands nee neebor neebour need needer needfire needful needfully needfulness needgates needham needily neediness needing needle needlebill needlebook needlebush needlecase needled needlefish needleful needlelike needlemaker needlemaking needleman needlemonger needleproof needler needles needless needlessly needlessness needlestone needlewoman needlewood needlework needleworked needleworker needling needly needments needs needsome needy neeger neeld neele neelghan neem neencephalic neencephalon Neengatu neep neepour neer neese neet neetup neeze nef nefandous nefandousness nefarious nefariously nefariousness nefast neffy neftgil negate negatedness negation negationalist negationist negative negatively negativeness negativer negativism negativist negativistic negativity negator negatory negatron neger neginoth neglect neglectable neglectedly neglectedness neglecter neglectful neglectfully neglectfulness neglectingly neglection neglective neglectively neglector neglectproof negligee negligence negligency negligent negligently negligibility negligible negligibleness negligibly negotiability negotiable negotiant negotiate negotiation negotiator negotiatory negotiatress negotiatrix Negress negrillo negrine Negritian Negritic Negritize Negrito Negritoid Negro negro negrodom Negrofy negrohead negrohood Negroid Negroidal negroish Negroism Negroization Negroize negrolike Negroloid Negrophil Negrophile Negrophilism Negrophilist Negrophobe Negrophobia Negrophobiac Negrophobist Negrotic Negundo Negus negus Nehantic Nehemiah nehiloth nei neif neigh neighbor neighbored neighborer neighboress neighborhood neighboring neighborless neighborlike neighborliness neighborly neighborship neighborstained neighbourless neighbourlike neighbourship neigher Neil Neillia neiper Neisseria Neisserieae neist neither Nejd Nejdi Nekkar nekton nektonic Nell Nellie Nelly nelson nelsonite nelumbian Nelumbium Nelumbo Nelumbonaceae nema nemaline Nemalion Nemalionaceae Nemalionales nemalite Nemastomaceae Nematelmia nematelminth Nematelminthes nemathece nemathecial nemathecium Nemathelmia nemathelminth Nemathelminthes nematic nematoblast nematoblastic Nematocera nematoceran nematocerous nematocide nematocyst nematocystic Nematoda nematode nematodiasis nematogene nematogenic nematogenous nematognath Nematognathi nematognathous nematogone nematogonous nematoid Nematoidea nematoidean nematologist nematology Nematomorpha nematophyton Nematospora nematozooid Nembutal Nemean Nemertea nemertean Nemertina nemertine Nemertinea nemertinean Nemertini nemertoid nemeses Nemesia nemesic Nemesis Nemichthyidae Nemichthys Nemocera nemoceran nemocerous Nemopanthus Nemophila nemophilist nemophilous nemophily nemoral Nemorensian nemoricole Nengahiba nenta nenuphar neo neoacademic neoanthropic Neoarctic neoarsphenamine Neobalaena Neobeckia neoblastic neobotanist neobotany Neocene Neoceratodus neocerotic neoclassic neoclassicism neoclassicist Neocomian neocosmic neocracy neocriticism neocyanine neocyte neocytosis neodamode neodidymium neodymium Neofabraea neofetal neofetus Neofiber neoformation neoformative Neogaea Neogaean neogamous neogamy Neogene neogenesis neogenetic Neognathae neognathic neognathous neogrammarian neogrammatical neographic neohexane Neohipparion neoholmia neoholmium neoimpressionism neoimpressionist neolalia neolater neolatry neolith neolithic neologian neologianism neologic neological neologically neologism neologist neologistic neologistical neologization neologize neology neomedievalism neomenia neomenian Neomeniidae neomiracle neomodal neomorph Neomorpha neomorphic neomorphism Neomylodon neon neonatal neonate neonatus neonomian neonomianism neontology neonychium neopagan neopaganism neopaganize Neopaleozoic neopallial neopallium neoparaffin neophilism neophilological neophilologist neophobia neophobic neophrastic Neophron neophyte neophytic neophytish neophytism Neopieris neoplasia neoplasm neoplasma neoplasmata neoplastic neoplasticism neoplasty Neoplatonic Neoplatonician Neoplatonism Neoplatonist neoprene neorama neorealism Neornithes neornithic Neosalvarsan Neosorex Neosporidia neossin neossology neossoptile neostriatum neostyle neoteinia neoteinic neotenia neotenic neoteny neoteric neoterically neoterism neoterist neoteristic neoterize neothalamus Neotoma Neotragus Neotremata Neotropic Neotropical neotype neovitalism neovolcanic Neowashingtonia neoytterbium neoza Neozoic Nep nep Nepa Nepal Nepalese Nepali Nepenthaceae nepenthaceous nepenthe nepenthean Nepenthes nepenthes neper Neperian Nepeta nephalism nephalist Nephele nephele nepheligenous nepheline nephelinic nephelinite nephelinitic nephelinitoid nephelite Nephelium nephelognosy nepheloid nephelometer nephelometric nephelometrical nephelometrically nephelometry nephelorometer nepheloscope nephesh nephew nephewship Nephila Nephilinae Nephite nephogram nephograph nephological nephologist nephology nephoscope nephradenoma nephralgia nephralgic nephrapostasis nephratonia nephrauxe nephrectasia nephrectasis nephrectomize nephrectomy nephrelcosis nephremia nephremphraxis nephria nephric nephridia nephridial nephridiopore nephridium nephrism nephrite nephritic nephritical nephritis nephroabdominal nephrocardiac nephrocele nephrocoele nephrocolic nephrocolopexy nephrocoloptosis nephrocystitis nephrocystosis nephrocyte nephrodinic Nephrodium nephroerysipelas nephrogastric nephrogenetic nephrogenic nephrogenous nephrogonaduct nephrohydrosis nephrohypertrophy nephroid Nephrolepis nephrolith nephrolithic nephrolithotomy nephrologist nephrology nephrolysin nephrolysis nephrolytic nephromalacia nephromegaly nephromere nephron nephroncus nephroparalysis nephropathic nephropathy nephropexy nephrophthisis nephropore Nephrops Nephropsidae nephroptosia nephroptosis nephropyelitis nephropyeloplasty nephropyosis nephrorrhagia nephrorrhaphy nephros nephrosclerosis nephrosis nephrostoma nephrostome nephrostomial nephrostomous nephrostomy nephrotome nephrotomize nephrotomy nephrotoxic nephrotoxicity nephrotoxin nephrotuberculosis nephrotyphoid nephrotyphus nephrozymosis Nepidae nepionic nepman nepotal nepote nepotic nepotious nepotism nepotist nepotistical nepouite Neptune Neptunean Neptunian neptunism neptunist neptunium Nereid Nereidae nereidiform Nereidiformia Nereis nereite Nereocystis Neri Nerine nerine Nerita neritic Neritidae Neritina neritoid Nerium Neroic Neronian Neronic Neronize nerterology Nerthridae Nerthrus nerval nervate nervation nervature nerve nerveless nervelessly nervelessness nervelet nerveproof nerver nerveroot nervid nerviduct Nervii nervily nervimotion nervimotor nervimuscular nervine nerviness nerving nervish nervism nervomuscular nervosanguineous nervose nervosism nervosity nervous nervously nervousness nervular nervule nervulet nervulose nervuration nervure nervy nescience nescient nese nesh neshly neshness Nesiot nesiote Neskhi Neslia Nesogaea Nesogaean Nesokia Nesonetta Nesotragus Nespelim nesquehonite ness nesslerization Nesslerize nesslerize nest nestable nestage nester nestful nestiatria nestitherapy nestle nestler nestlike nestling Nestor Nestorian Nestorianism Nestorianize Nestorianizer nestorine nesty Net net netball netbraider netbush netcha Netchilik nete neter netful neth netheist nether Netherlander Netherlandian Netherlandic Netherlandish nethermore nethermost netherstock netherstone netherward netherwards Nethinim neti netleaf netlike netmaker netmaking netman netmonger netop netsman netsuke nettable Nettapus netted netter Nettie netting Nettion nettle nettlebed nettlebird nettlefire nettlefish nettlefoot nettlelike nettlemonger nettler nettlesome nettlewort nettling nettly Netty netty netwise network Neudeckian neugroschen neuma neumatic neumatize neume neumic neurad neuradynamia neural neurale neuralgia neuralgiac neuralgic neuralgiform neuralgy neuralist neurapophyseal neurapophysial neurapophysis neurarthropathy neurasthenia neurasthenic neurasthenical neurasthenically neurataxia neurataxy neuration neuratrophia neuratrophic neuratrophy neuraxial neuraxis neuraxon neuraxone neurectasia neurectasis neurectasy neurectome neurectomic neurectomy neurectopia neurectopy neurenteric neurepithelium neurergic neurexairesis neurhypnology neurhypnotist neuriatry neuric neurilema neurilematic neurilemma neurilemmal neurilemmatic neurilemmatous neurilemmitis neurility neurin neurine neurinoma neurism neurite neuritic neuritis neuroanatomical neuroanatomy neurobiotactic neurobiotaxis neuroblast neuroblastic neuroblastoma neurocanal neurocardiac neurocele neurocentral neurocentrum neurochemistry neurochitin neurochondrite neurochord neurochorioretinitis neurocirculatory neurocity neuroclonic neurocoele neurocoelian neurocyte neurocytoma neurodegenerative neurodendrite neurodendron neurodermatitis neurodermatosis neurodermitis neurodiagnosis neurodynamic neurodynia neuroepidermal neuroepithelial neuroepithelium neurofibril neurofibrilla neurofibrillae neurofibrillar neurofibroma neurofibromatosis neurofil neuroganglion neurogastralgia neurogastric neurogenesis neurogenetic neurogenic neurogenous neuroglandular neuroglia neurogliac neuroglial neurogliar neuroglic neuroglioma neurogliosis neurogram neurogrammic neurographic neurography neurohistology neurohumor neurohumoral neurohypnology neurohypnotic neurohypnotism neurohypophysis neuroid neurokeratin neurokyme neurological neurologist neurologize neurology neurolymph neurolysis neurolytic neuroma neuromalacia neuromalakia neuromast neuromastic neuromatosis neuromatous neuromere neuromerism neuromerous neuromimesis neuromimetic neuromotor neuromuscular neuromusculature neuromyelitis neuromyic neuron neuronal neurone neuronic neuronism neuronist neuronophagia neuronophagy neuronym neuronymy neuroparalysis neuroparalytic neuropath neuropathic neuropathical neuropathically neuropathist neuropathological neuropathologist neuropathology neuropathy Neurope neurophagy neurophil neurophile neurophilic neurophysiological neurophysiology neuropile neuroplasm neuroplasmic neuroplasty neuroplexus neuropodial neuropodium neuropodous neuropore neuropsychiatric neuropsychiatrist neuropsychiatry neuropsychic neuropsychological neuropsychologist neuropsychology neuropsychopathic neuropsychopathy neuropsychosis neuropter Neuroptera neuropteran Neuropteris neuropterist neuropteroid Neuropteroidea neuropterological neuropterology neuropteron neuropterous neuroretinitis neurorrhaphy Neurorthoptera neurorthopteran neurorthopterous neurosal neurosarcoma neurosclerosis neuroses neurosis neuroskeletal neuroskeleton neurosome neurospasm neurospongium neurosthenia neurosurgeon neurosurgery neurosurgical neurosuture neurosynapse neurosyphilis neurotendinous neurotension neurotherapeutics neurotherapist neurotherapy neurothlipsis neurotic neurotically neuroticism neuroticize neurotization neurotome neurotomical neurotomist neurotomize neurotomy neurotonic neurotoxia neurotoxic neurotoxin neurotripsy neurotrophic neurotrophy neurotropic neurotropism neurovaccination neurovaccine neurovascular neurovisceral neurula neurypnological neurypnologist neurypnology Neustrian neuter neuterdom neuterlike neuterly neuterness neutral neutralism neutralist neutrality neutralization neutralize neutralizer neutrally neutralness neutrino neutroceptive neutroceptor neutroclusion Neutrodyne neutrologistic neutron neutropassive neutrophile neutrophilia neutrophilic neutrophilous Nevada Nevadan nevadite neve nevel never neverland nevermore nevertheless nevo nevoid Nevome nevoy nevus nevyanskite new Newar Newari newberyite newcal Newcastle newcome newcomer newel newelty newfangle newfangled newfangledism newfangledly newfangledness newfanglement Newfoundland Newfoundlander Newichawanoc newing newings newish newlandite newly newlywed Newmanism Newmanite Newmanize newmarket newness Newport news newsbill newsboard newsboat newsboy newscast newscaster newscasting newsful newsiness newsless newslessness newsletter newsman newsmonger newsmongering newsmongery newspaper newspaperdom newspaperese newspaperish newspaperized newspaperman newspaperwoman newspapery newsprint newsreader newsreel newsroom newssheet newsstand newsteller newsworthiness newsworthy newsy newt newtake newton Newtonian Newtonianism Newtonic Newtonist newtonite nexal next nextly nextness nexum nexus neyanda ngai ngaio ngapi Ngoko Nheengatu ni niacin Niagara Niagaran Niantic Nias Niasese niata nib nibbana nibbed nibber nibble nibbler nibblingly nibby niblick niblike nibong nibs nibsome Nicaean Nicaragua Nicaraguan Nicarao niccolic niccoliferous niccolite niccolous Nice nice niceish niceling nicely Nicene niceness Nicenian Nicenist nicesome nicetish nicety niche nichelino nicher Nicholas Nick nick nickel nickelage nickelic nickeliferous nickeline nickeling nickelization nickelize nickellike nickelodeon nickelous nickeltype nicker nickerpecker nickey Nickie Nickieben nicking nickle nickname nicknameable nicknamee nicknameless nicknamer Nickneven nickstick nicky Nicobar Nicobarese Nicodemite Nicodemus Nicol Nicolaitan Nicolaitanism Nicolas nicolayite nicolo Nicomachean nicotia nicotian Nicotiana nicotianin nicotic nicotinamide nicotine nicotinean nicotined nicotineless nicotinian nicotinic nicotinism nicotinize nicotism nicotize nictate nictation nictitant nictitate nictitation nid nidal nidamental nidana nidation nidatory niddering niddick niddle nide nidge nidget nidgety nidi nidicolous nidificant nidificate nidification nidificational nidifugous nidify niding nidologist nidology nidor nidorosity nidorous nidorulent nidulant Nidularia Nidulariaceae nidulariaceous Nidulariales nidulate nidulation nidulus nidus niece nieceless nieceship niellated nielled niellist niello niepa Nierembergia Niersteiner Nietzschean Nietzscheanism Nietzscheism nieve nieveta nievling nife nifesima niffer nific nifle nifling nifty nig Nigel Nigella Nigerian niggard niggardize niggardliness niggardling niggardly niggardness nigger niggerdom niggerfish niggergoose niggerhead niggerish niggerism niggerling niggertoe niggerweed niggery niggle niggler niggling nigglingly niggly nigh nighly nighness night nightcap nightcapped nightcaps nightchurr nightdress nighted nightfall nightfish nightflit nightfowl nightgown nighthawk nightie nightingale nightingalize nightjar nightless nightlessness nightlike nightlong nightly nightman nightmare nightmarish nightmarishly nightmary nights nightshade nightshine nightshirt nightstock nightstool nighttide nighttime nightwalker nightwalking nightward nightwards nightwear nightwork nightworker nignay nignye nigori nigranilin nigraniline nigre nigrescence nigrescent nigresceous nigrescite nigrification nigrified nigrify nigrine Nigritian nigrities nigritude nigritudinous nigrosine nigrous nigua Nihal nihilianism nihilianistic nihilification nihilify nihilism nihilist nihilistic nihilitic nihility nikau Nikeno nikethamide Nikko niklesite nil Nile nilgai Nilometer Nilometric Niloscope Nilot Nilotic Nilous nilpotent nim nimb nimbated nimbed nimbi nimbiferous nimbification nimble nimblebrained nimbleness nimbly nimbose nimbosity nimbus nimbused nimiety niminy nimious Nimkish nimmer Nimrod Nimrodian Nimrodic Nimrodical Nimrodize nimshi Nina nincom nincompoop nincompoopery nincompoophood nincompoopish nine ninebark ninefold nineholes ninepegs ninepence ninepenny ninepin ninepins ninescore nineted nineteen nineteenfold nineteenth nineteenthly ninetieth ninety ninetyfold ninetyish ninetyknot Ninevite Ninevitical Ninevitish Ningpo ninny ninnyhammer ninnyish ninnyism ninnyship ninnywatch Ninon ninon Ninox ninth ninthly nintu ninut niobate Niobe Niobean niobic Niobid Niobite niobite niobium niobous niog niota Nip nip nipa nipcheese niphablepsia niphotyphlosis Nipissing Nipmuc nipper nipperkin nippers nippily nippiness nipping nippingly nippitate nipple nippleless nipplewort Nipponese Nipponism nipponium Nipponize nippy nipter Niquiran nirles nirmanakaya nirvana nirvanic Nisaean Nisan nisei Nishada nishiki nisnas nispero Nisqualli nisse nisus nit nitch nitchevo Nitella nitency nitently niter niterbush nitered nither nithing nitid nitidous nitidulid Nitidulidae nito niton nitramine nitramino nitranilic nitraniline nitrate nitratine nitration nitrator Nitrian nitriary nitric nitridation nitride nitriding nitridization nitridize nitrifaction nitriferous nitrifiable nitrification nitrifier nitrify nitrile Nitriot nitrite nitro nitroalizarin nitroamine nitroaniline Nitrobacter nitrobacteria Nitrobacteriaceae Nitrobacterieae nitrobarite nitrobenzene nitrobenzol nitrobenzole nitrocalcite nitrocellulose nitrocellulosic nitrochloroform nitrocotton nitroform nitrogelatin nitrogen nitrogenate nitrogenation nitrogenic nitrogenization nitrogenize nitrogenous nitroglycerin nitrohydrochloric nitrolamine nitrolic nitrolime nitromagnesite nitrometer nitrometric nitromuriate nitromuriatic nitronaphthalene nitroparaffin nitrophenol nitrophilous nitrophyte nitrophytic nitroprussiate nitroprussic nitroprusside nitrosamine nitrosate nitrosification nitrosify nitrosite nitrosobacteria nitrosochloride Nitrosococcus Nitrosomonas nitrososulphuric nitrostarch nitrosulphate nitrosulphonic nitrosulphuric nitrosyl nitrosylsulphuric nitrotoluene nitrous nitroxyl nitryl nitter nitty nitwit Nitzschia Nitzschiaceae Niuan Niue nival nivation nivellate nivellation nivellator nivellization nivenite niveous nivicolous nivosity nix nixie niyoga Nizam nizam nizamate nizamut nizy njave no noa Noachian Noachic Noachical Noachite Noah Noahic nob nobber nobbily nobble nobbler nobbut nobby nobiliary nobilify nobilitate nobilitation nobility noble noblehearted nobleheartedly nobleheartedness nobleman noblemanly nobleness noblesse noblewoman nobley nobly nobody nobodyness nobs nocake Nocardia nocardiosis nocent nocerite nociassociation nociceptive nociceptor nociperception nociperceptive nock nocket nocktat noctambulant noctambulation noctambule noctambulism noctambulist noctambulistic noctambulous Nocten noctidial noctidiurnal noctiferous noctiflorous Noctilio Noctilionidae Noctiluca noctiluca noctilucal noctilucan noctilucence noctilucent Noctilucidae noctilucin noctilucine noctilucous noctiluminous noctipotent noctivagant noctivagation noctivagous noctograph noctovision Noctuae noctuid Noctuidae noctuiform noctule nocturia nocturn nocturnal nocturnally nocturne nocuity nocuous nocuously nocuousness nod nodal nodality nodated nodder nodding noddingly noddle noddy node noded nodi nodiak nodical nodicorn nodiferous nodiflorous nodiform Nodosaria nodosarian nodosariform nodosarine nodose nodosity nodous nodular nodulate nodulated nodulation nodule noduled nodulize nodulose nodulous nodulus nodus noegenesis noegenetic Noel noel noematachograph noematachometer noematachometic Noetic noetic noetics nog nogada Nogai nogal noggen noggin nogging noghead nogheaded nohow Nohuntsik noibwood noil noilage noiler noily noint nointment noir noise noiseful noisefully noiseless noiselessly noiselessness noisemaker noisemaking noiseproof noisette noisily noisiness noisome noisomely noisomeness noisy nokta Nolascan nolition Noll noll nolle nolleity nollepros nolo noma nomad nomadian nomadic nomadical nomadically Nomadidae nomadism nomadization nomadize nomancy nomarch nomarchy Nomarthra nomarthral nombril nome Nomeidae nomenclate nomenclative nomenclator nomenclatorial nomenclatorship nomenclatory nomenclatural nomenclature nomenclaturist Nomeus nomial nomic nomina nominable nominal nominalism nominalist nominalistic nominality nominally nominate nominated nominately nomination nominatival nominative nominatively nominator nominatrix nominature nominee nomineeism nominy nomism nomisma nomismata nomistic nomocanon nomocracy nomogenist nomogenous nomogeny nomogram nomograph nomographer nomographic nomographical nomographically nomography nomological nomologist nomology nomopelmous nomophylax nomophyllous nomos nomotheism nomothete nomothetes nomothetic nomothetical non Nona nonabandonment nonabdication nonabiding nonability nonabjuration nonabjurer nonabolition nonabridgment nonabsentation nonabsolute nonabsolution nonabsorbable nonabsorbent nonabsorptive nonabstainer nonabstaining nonabstemious nonabstention nonabstract nonacademic nonacceding nonacceleration nonaccent nonacceptance nonacceptant nonacceptation nonaccess nonaccession nonaccessory nonaccidental nonaccompaniment nonaccompanying nonaccomplishment nonaccredited nonaccretion nonachievement nonacid nonacknowledgment nonacosane nonacoustic nonacquaintance nonacquiescence nonacquiescent nonacquisitive nonacquittal nonact nonactinic nonaction nonactionable nonactive nonactuality nonaculeate nonacute nonadditive nonadecane nonadherence nonadherent nonadhesion nonadhesive nonadjacent nonadjectival nonadjournment nonadjustable nonadjustive nonadjustment nonadministrative nonadmiring nonadmission nonadmitted nonadoption Nonadorantes nonadornment nonadult nonadvancement nonadvantageous nonadventitious nonadventurous nonadverbial nonadvertence nonadvertency nonadvocate nonaerating nonaerobiotic nonaesthetic nonaffection nonaffiliated nonaffirmation nonage nonagenarian nonagency nonagent nonagesimal nonagglutinative nonagglutinator nonaggression nonaggressive nonagon nonagrarian nonagreement nonagricultural nonahydrate nonaid nonair nonalarmist nonalcohol nonalcoholic nonalgebraic nonalienating nonalienation nonalignment nonalkaloidal nonallegation nonallegorical nonalliterated nonalliterative nonallotment nonalluvial nonalphabetic nonaltruistic nonaluminous nonamalgamable nonamendable nonamino nonamotion nonamphibious nonamputation nonanalogy nonanalytical nonanalyzable nonanalyzed nonanaphoric nonanaphthene nonanatomical nonancestral nonane nonanesthetized nonangelic nonangling nonanimal nonannexation nonannouncement nonannuitant nonannulment nonanoic nonanonymity nonanswer nonantagonistic nonanticipative nonantigenic nonapologetic nonapostatizing nonapostolic nonapparent nonappealable nonappearance nonappearer nonappearing nonappellate nonappendicular nonapplication nonapply nonappointment nonapportionable nonapposable nonappraisal nonappreciation nonapprehension nonappropriation nonapproval nonaqueous nonarbitrable nonarcing nonargentiferous nonaristocratic nonarithmetical nonarmament nonarmigerous nonaromatic nonarraignment nonarrival nonarsenical nonarterial nonartesian nonarticulated nonarticulation nonartistic nonary nonascendancy nonascertainable nonascertaining nonascetic nonascription nonaseptic nonaspersion nonasphalt nonaspirate nonaspiring nonassault nonassent nonassentation nonassented nonassenting nonassertion nonassertive nonassessable nonassessment nonassignable nonassignment nonassimilable nonassimilating nonassimilation nonassistance nonassistive nonassociable nonassortment nonassurance nonasthmatic nonastronomical nonathletic nonatmospheric nonatonement nonattached nonattachment nonattainment nonattendance nonattendant nonattention nonattestation nonattribution nonattributive nonaugmentative nonauricular nonauriferous nonauthentication nonauthoritative nonautomatic nonautomotive nonavoidance nonaxiomatic nonazotized nonbachelor nonbacterial nonbailable nonballoting nonbanishment nonbankable nonbarbarous nonbaronial nonbase nonbasement nonbasic nonbasing nonbathing nonbearded nonbearing nonbeing nonbeliever nonbelieving nonbelligerent nonbending nonbenevolent nonbetrayal nonbeverage nonbilabiate nonbilious nonbinomial nonbiological nonbitter nonbituminous nonblack nonblameless nonbleeding nonblended nonblockaded nonblocking nonblooded nonblooming nonbodily nonbookish nonborrower nonbotanical nonbourgeois nonbranded nonbreakable nonbreeder nonbreeding nonbroodiness nonbroody nonbrowsing nonbudding nonbulbous nonbulkhead nonbureaucratic nonburgage nonburgess nonburnable nonburning nonbursting nonbusiness nonbuying noncabinet noncaffeine noncaking Noncalcarea noncalcareous noncalcified noncallability noncallable noncancellable noncannibalistic noncanonical noncanonization noncanvassing noncapillarity noncapillary noncapital noncapitalist noncapitalistic noncapitulation noncapsizable noncapture noncarbonate noncareer noncarnivorous noncarrier noncartelized noncaste noncastigation noncataloguer noncatarrhal noncatechizable noncategorical noncathedral noncatholicity noncausality noncausation nonce noncelebration noncelestial noncellular noncellulosic noncensored noncensorious noncensus noncentral noncereal noncerebral nonceremonial noncertain noncertainty noncertified nonchafing nonchalance nonchalant nonchalantly nonchalantness nonchalky nonchallenger nonchampion nonchangeable nonchanging noncharacteristic nonchargeable nonchastisement nonchastity nonchemical nonchemist nonchivalrous nonchokable nonchokebore nonchronological nonchurch nonchurched nonchurchgoer nonciliate noncircuit noncircuital noncircular noncirculation noncitation noncitizen noncivilized nonclaim nonclaimable nonclassable nonclassical nonclassifiable nonclassification nonclastic nonclearance noncleistogamic nonclergyable nonclerical nonclimbable nonclinical nonclose nonclosure nonclotting noncoagulability noncoagulable noncoagulation noncoalescing noncock noncoercion noncoercive noncognate noncognition noncognitive noncognizable noncognizance noncoherent noncohesion noncohesive noncoinage noncoincidence noncoincident noncoincidental noncoking noncollaboration noncollaborative noncollapsible noncollectable noncollection noncollegiate noncollinear noncolloid noncollusion noncollusive noncolonial noncoloring noncom noncombat noncombatant noncombination noncombining noncombustible noncombustion noncome noncoming noncommemoration noncommencement noncommendable noncommensurable noncommercial noncommissioned noncommittal noncommittalism noncommittally noncommittalness noncommonable noncommorancy noncommunal noncommunicable noncommunicant noncommunicating noncommunication noncommunion noncommunist noncommunistic noncommutative noncompearance noncompensating noncompensation noncompetency noncompetent noncompeting noncompetitive noncompetitively noncomplaisance noncompletion noncompliance noncomplicity noncomplying noncomposite noncompoundable noncompounder noncomprehension noncompressible noncompression noncompulsion noncomputation noncon nonconcealment nonconceiving nonconcentration nonconception nonconcern nonconcession nonconciliating nonconcludency nonconcludent nonconcluding nonconclusion nonconcordant nonconcur nonconcurrence nonconcurrency nonconcurrent noncondensable noncondensation noncondensible noncondensing noncondimental nonconditioned noncondonation nonconducive nonconductibility nonconductible nonconducting nonconduction nonconductive nonconductor nonconfederate nonconferrable nonconfession nonconficient nonconfident nonconfidential nonconfinement nonconfirmation nonconfirmative nonconfiscable nonconfiscation nonconfitent nonconflicting nonconform nonconformable nonconformably nonconformance nonconformer nonconforming nonconformism nonconformist nonconformistical nonconformistically nonconformitant nonconformity nonconfutation noncongealing noncongenital noncongestion noncongratulatory noncongruent nonconjectural nonconjugal nonconjugate nonconjunction nonconnection nonconnective nonconnivance nonconnotative nonconnubial nonconscientious nonconscious nonconscription nonconsecration nonconsecutive nonconsent nonconsenting nonconsequence nonconsequent nonconservation nonconservative nonconserving nonconsideration nonconsignment nonconsistorial nonconsoling nonconsonant nonconsorting nonconspirator nonconspiring nonconstituent nonconstitutional nonconstraint nonconstruable nonconstruction nonconstructive nonconsular nonconsultative nonconsumable nonconsumption noncontact noncontagion noncontagionist noncontagious noncontagiousness noncontamination noncontemplative noncontending noncontent noncontention noncontentious noncontentiously nonconterminous noncontiguity noncontiguous noncontinental noncontingent noncontinuance noncontinuation noncontinuous noncontraband noncontraction noncontradiction noncontradictory noncontributing noncontribution noncontributor noncontributory noncontrivance noncontrolled noncontrolling noncontroversial nonconvective nonconvenable nonconventional nonconvergent nonconversable nonconversant nonconversational nonconversion nonconvertible nonconveyance nonconviction nonconvivial noncoplanar noncopying noncoring noncorporate noncorporeality noncorpuscular noncorrection noncorrective noncorrelation noncorrespondence noncorrespondent noncorresponding noncorroboration noncorroborative noncorrodible noncorroding noncorrosive noncorruption noncortical noncosmic noncosmopolitism noncostraight noncottager noncotyledonous noncounty noncranking noncreation noncreative noncredence noncredent noncredibility noncredible noncreditor noncreeping noncrenate noncretaceous noncriminal noncriminality noncrinoid noncritical noncrucial noncruciform noncrusading noncrushability noncrushable noncrustaceous noncrystalline noncrystallizable noncrystallized noncrystallizing nonculmination nonculpable noncultivated noncultivation nonculture noncumulative noncurantist noncurling noncurrency noncurrent noncursive noncurtailment noncuspidate noncustomary noncutting noncyclic noncyclical nonda nondamageable nondamnation nondancer nondangerous nondatival nondealer nondebtor nondecadence nondecadent nondecalcified nondecane nondecasyllabic nondecatoic nondecaying nondeceivable nondeception nondeceptive Nondeciduata nondeciduate nondeciduous nondecision nondeclarant nondeclaration nondeclarer nondecomposition nondecoration nondedication nondeduction nondefalcation nondefamatory nondefaulting nondefection nondefendant nondefense nondefensive nondeference nondeferential nondefiance nondefilement nondefining nondefinition nondefinitive nondeforestation nondegenerate nondegeneration nondegerming nondegradation nondegreased nondehiscent nondeist nondelegable nondelegate nondelegation nondeleterious nondeliberate nondeliberation nondelineation nondeliquescent nondelirious nondeliverance nondelivery nondemand nondemise nondemobilization nondemocratic nondemonstration nondendroid nondenial nondenominational nondenominationalism nondense nondenumerable nondenunciation nondepartmental nondeparture nondependence nondependent nondepletion nondeportation nondeported nondeposition nondepositor nondepravity nondepreciating nondepressed nondepression nondeprivable nonderivable nonderivative nonderogatory nondescript nondesecration nondesignate nondesigned nondesire nondesirous nondesisting nondespotic nondesquamative nondestructive nondesulphurized nondetachable nondetailed nondetention nondetermination nondeterminist nondeterrent nondetest nondetonating nondetrimental nondevelopable nondevelopment nondeviation nondevotional nondexterous nondiabetic nondiabolic nondiagnosis nondiagonal nondiagrammatic nondialectal nondialectical nondialyzing nondiametral nondiastatic nondiathermanous nondiazotizable nondichogamous nondichogamy nondichotomous nondictation nondictatorial nondictionary nondidactic nondieting nondifferentation nondifferentiable nondiffractive nondiffusing nondigestion nondilatable nondilution nondiocesan nondiphtheritic nondiphthongal nondiplomatic nondipterous nondirection nondirectional nondisagreement nondisappearing nondisarmament nondisbursed nondiscernment nondischarging nondisciplinary nondisclaim nondisclosure nondiscontinuance nondiscordant nondiscountable nondiscovery nondiscretionary nondiscrimination nondiscriminatory nondiscussion nondisestablishment nondisfigurement nondisfranchised nondisingenuous nondisintegration nondisinterested nondisjunct nondisjunction nondisjunctional nondisjunctive nondismemberment nondismissal nondisparaging nondisparate nondispensation nondispersal nondispersion nondisposal nondisqualifying nondissenting nondissolution nondistant nondistinctive nondistortion nondistribution nondistributive nondisturbance nondivergence nondivergent nondiversification nondivinity nondivisible nondivisiblity nondivision nondivisional nondivorce nondo nondoctrinal nondocumentary nondogmatic nondoing nondomestic nondomesticated nondominant nondonation nondramatic nondrinking nondropsical nondrying nonduality nondumping nonduplication nondutiable nondynastic nondyspeptic none nonearning noneastern noneatable nonecclesiastical nonechoic noneclectic noneclipsing nonecompense noneconomic nonedible noneditor noneditorial noneducable noneducation noneducational noneffective noneffervescent noneffete nonefficacious nonefficacy nonefficiency nonefficient noneffusion nonego nonegoistical nonejection nonelastic nonelasticity nonelect nonelection nonelective nonelector nonelectric nonelectrical nonelectrification nonelectrified nonelectrized nonelectrocution nonelectrolyte noneleemosynary nonelemental nonelementary nonelimination nonelopement nonemanating nonemancipation nonembarkation nonembellishment nonembezzlement nonembryonic nonemendation nonemergent nonemigration nonemission nonemotional nonemphatic nonemphatical nonempirical nonemploying nonemployment nonemulative nonenactment nonenclosure nonencroachment nonencyclopedic nonendemic nonendorsement nonenduring nonene nonenemy nonenergic nonenforceability nonenforceable nonenforcement nonengagement nonengineering nonenrolled nonent nonentailed nonenteric nonentertainment nonentitative nonentitive nonentitize nonentity nonentityism nonentomological nonentrant nonentres nonentry nonenumerated nonenunciation nonenvious nonenzymic nonephemeral nonepic nonepicurean nonepileptic nonepiscopal nonepiscopalian nonepithelial nonepochal nonequal nonequation nonequatorial nonequestrian nonequilateral nonequilibrium nonequivalent nonequivocating nonerasure nonerecting nonerection nonerotic nonerroneous nonerudite noneruption nones nonescape nonespionage nonespousal nonessential nonesthetic nonesuch nonet noneternal noneternity nonetheless nonethereal nonethical nonethnological nonethyl noneugenic noneuphonious nonevacuation nonevanescent nonevangelical nonevaporation nonevasion nonevasive noneviction nonevident nonevidential nonevil nonevolutionary nonevolutionist nonevolving nonexaction nonexaggeration nonexamination nonexcavation nonexcepted nonexcerptible nonexcessive nonexchangeability nonexchangeable nonexciting nonexclamatory nonexclusion nonexclusive nonexcommunicable nonexculpation nonexcusable nonexecution nonexecutive nonexemplary nonexemplificatior nonexempt nonexercise nonexertion nonexhibition nonexistence nonexistent nonexistential nonexisting nonexoneration nonexotic nonexpansion nonexpansive nonexpansively nonexpectation nonexpendable nonexperience nonexperienced nonexperimental nonexpert nonexpiation nonexpiry nonexploitation nonexplosive nonexportable nonexportation nonexposure nonexpulsion nonextant nonextempore nonextended nonextensile nonextension nonextensional nonextensive nonextenuatory nonexteriority nonextermination nonexternal nonexternality nonextinction nonextortion nonextracted nonextraction nonextraditable nonextradition nonextraneous nonextreme nonextrication nonextrinsic nonexuding nonexultation nonfabulous nonfacetious nonfacial nonfacility nonfacing nonfact nonfactious nonfactory nonfactual nonfacultative nonfaculty nonfaddist nonfading nonfailure nonfalse nonfamily nonfamous nonfanatical nonfanciful nonfarm nonfastidious nonfat nonfatal nonfatalistic nonfatty nonfavorite nonfeasance nonfeasor nonfeatured nonfebrile nonfederal nonfederated nonfeldspathic nonfelonious nonfelony nonfenestrated nonfermentability nonfermentable nonfermentation nonfermentative nonferrous nonfertile nonfertility nonfestive nonfeudal nonfibrous nonfiction nonfictional nonfiduciary nonfighter nonfigurative nonfilamentous nonfimbriate nonfinancial nonfinding nonfinishing nonfinite nonfireproof nonfiscal nonfisherman nonfissile nonfixation nonflaky nonflammable nonfloatation nonfloating nonfloriferous nonflowering nonflowing nonfluctuating nonfluid nonfluorescent nonflying nonfocal nonfood nonforeclosure nonforeign nonforeknowledge nonforest nonforested nonforfeitable nonforfeiting nonforfeiture nonform nonformal nonformation nonformulation nonfortification nonfortuitous nonfossiliferous nonfouling nonfrat nonfraternity nonfrauder nonfraudulent nonfreedom nonfreeman nonfreezable nonfreeze nonfreezing nonfricative nonfriction nonfrosted nonfruition nonfrustration nonfulfillment nonfunctional nonfundable nonfundamental nonfungible nonfuroid nonfusion nonfuturition nonfuturity nongalactic nongalvanized nonganglionic nongas nongaseous nongassy nongelatinizing nongelatinous nongenealogical nongenerative nongenetic nongentile nongeographical nongeological nongeometrical nongermination nongerundial nongildsman nongipsy nonglacial nonglandered nonglandular nonglare nonglucose nonglucosidal nonglucosidic nongod nongold nongolfer nongospel nongovernmental nongraduate nongraduated nongraduation nongrain nongranular nongraphitic nongrass nongratuitous nongravitation nongravity nongray nongreasy nongreen nongregarious nongremial nongrey nongrooming nonguarantee nonguard nonguttural nongymnast nongypsy nonhabitable nonhabitual nonhalation nonhallucination nonhandicap nonhardenable nonharmonic nonharmonious nonhazardous nonheading nonhearer nonheathen nonhedonistic nonhepatic nonhereditarily nonhereditary nonheritable nonheritor nonhero nonhieratic nonhistoric nonhistorical nonhomaloidal nonhomogeneity nonhomogeneous nonhomogenous nonhostile nonhouseholder nonhousekeeping nonhuman nonhumanist nonhumorous nonhumus nonhunting nonhydrogenous nonhydrolyzable nonhygrometric nonhygroscopic nonhypostatic nonic noniconoclastic nonideal nonidealist nonidentical nonidentity nonidiomatic nonidolatrous nonidyllic nonignitible nonignominious nonignorant nonillion nonillionth nonillumination nonillustration nonimaginary nonimbricating nonimitative nonimmateriality nonimmersion nonimmigrant nonimmigration nonimmune nonimmunity nonimmunized nonimpact nonimpairment nonimpartment nonimpatience nonimpeachment nonimperative nonimperial nonimplement nonimportation nonimporting nonimposition nonimpregnated nonimpressionist nonimprovement nonimputation nonincandescent nonincarnated nonincitement noninclination noninclusion noninclusive nonincrease nonincreasing nonincrusting nonindependent nonindictable nonindictment nonindividual nonindividualistic noninductive noninductively noninductivity nonindurated nonindustrial noninfallibilist noninfallible noninfantry noninfected noninfection noninfectious noninfinite noninfinitely noninflammability noninflammable noninflammatory noninflectional noninfluence noninformative noninfraction noninhabitant noninheritable noninherited noninitial noninjurious noninjury noninoculation noninquiring noninsect noninsertion noninstitution noninstruction noninstructional noninstructress noninstrumental noninsurance nonintegrable nonintegrity nonintellectual nonintelligence nonintelligent nonintent nonintention noninterchangeability noninterchangeable nonintercourse noninterference noninterferer noninterfering nonintermittent noninternational noninterpolation noninterposition noninterrupted nonintersecting nonintersector nonintervention noninterventionalist noninterventionist nonintoxicant nonintoxicating nonintrospective nonintrospectively nonintrusion nonintrusionism nonintrusionist nonintuitive noninverted noninvidious noninvincibility noniodized nonion nonionized nonionizing nonirate nonirradiated nonirrational nonirreparable nonirrevocable nonirrigable nonirrigated nonirrigating nonirrigation nonirritable nonirritant nonirritating nonisobaric nonisotropic nonissuable nonius nonjoinder nonjudicial nonjurable nonjurant nonjuress nonjuring nonjurist nonjuristic nonjuror nonjurorism nonjury nonjurying nonknowledge nonkosher nonlabeling nonlactescent nonlaminated nonlanguage nonlaying nonleaded nonleaking nonlegal nonlegato nonlegume nonlepidopterous nonleprous nonlevel nonlevulose nonliability nonliable nonliberation nonlicensed nonlicentiate nonlicet nonlicking nonlife nonlimitation nonlimiting nonlinear nonlipoidal nonliquefying nonliquid nonliquidating nonliquidation nonlister nonlisting nonliterary nonlitigious nonliturgical nonliving nonlixiviated nonlocal nonlocalized nonlogical nonlosable nonloser nonlover nonloving nonloxodromic nonluminescent nonluminosity nonluminous nonluster nonlustrous nonly nonmagnetic nonmagnetizable nonmaintenance nonmajority nonmalarious nonmalicious nonmalignant nonmalleable nonmammalian nonmandatory nonmanifest nonmanifestation nonmanila nonmannite nonmanual nonmanufacture nonmanufactured nonmanufacturing nonmarine nonmarital nonmaritime nonmarket nonmarriage nonmarriageable nonmarrying nonmartial nonmastery nonmaterial nonmaterialistic nonmateriality nonmaternal nonmathematical nonmathematician nonmatrimonial nonmatter nonmechanical nonmechanistic nonmedical nonmedicinal nonmedullated nonmelodious nonmember nonmembership nonmenial nonmental nonmercantile nonmetal nonmetallic nonmetalliferous nonmetallurgical nonmetamorphic nonmetaphysical nonmeteoric nonmeteorological nonmetric nonmetrical nonmetropolitan nonmicrobic nonmicroscopical nonmigratory nonmilitant nonmilitary nonmillionaire nonmimetic nonmineral nonmineralogical nonminimal nonministerial nonministration nonmiraculous nonmischievous nonmiscible nonmissionary nonmobile nonmodal nonmodern nonmolar nonmolecular nonmomentary nonmonarchical nonmonarchist nonmonastic nonmonist nonmonogamous nonmonotheistic nonmorainic nonmoral nonmorality nonmortal nonmotile nonmotoring nonmotorist nonmountainous nonmucilaginous nonmucous nonmulched nonmultiple nonmunicipal nonmuscular nonmusical nonmussable nonmutationally nonmutative nonmutual nonmystical nonmythical nonmythological nonnant nonnarcotic nonnasal nonnat nonnational nonnative nonnatural nonnaturalism nonnaturalistic nonnaturality nonnaturalness nonnautical nonnaval nonnavigable nonnavigation nonnebular nonnecessary nonnecessity nonnegligible nonnegotiable nonnegotiation nonnephritic nonnervous nonnescience nonnescient nonneutral nonneutrality nonnitrogenized nonnitrogenous nonnoble nonnomination nonnotification nonnotional nonnucleated nonnumeral nonnutrient nonnutritious nonnutritive nonobedience nonobedient nonobjection nonobjective nonobligatory nonobservable nonobservance nonobservant nonobservation nonobstetrical nonobstructive nonobvious nonoccidental nonocculting nonoccupant nonoccupation nonoccupational nonoccurrence nonodorous nonoecumenic nonoffender nonoffensive nonofficeholding nonofficial nonofficially nonofficinal nonoic nonoily nonolfactory nonomad nononerous nonopacity nonopening nonoperating nonoperative nonopposition nonoppressive nonoptical nonoptimistic nonoptional nonorchestral nonordination nonorganic nonorganization nonoriental nonoriginal nonornamental nonorthodox nonorthographical nonoscine nonostentation nonoutlawry nonoutrage nonoverhead nonoverlapping nonowner nonoxidating nonoxidizable nonoxidizing nonoxygenated nonoxygenous nonpacific nonpacification nonpacifist nonpagan nonpaid nonpainter nonpalatal nonpapal nonpapist nonpar nonparallel nonparalytic nonparasitic nonparasitism nonpareil nonparent nonparental nonpariello nonparishioner nonparliamentary nonparlor nonparochial nonparous nonpartial nonpartiality nonparticipant nonparticipating nonparticipation nonpartisan nonpartisanship nonpartner nonparty nonpassenger nonpasserine nonpastoral nonpatentable nonpatented nonpaternal nonpathogenic nonpause nonpaying nonpayment nonpeak nonpeaked nonpearlitic nonpecuniary nonpedestrian nonpedigree nonpelagic nonpeltast nonpenal nonpenalized nonpending nonpensionable nonpensioner nonperception nonperceptual nonperfection nonperforated nonperforating nonperformance nonperformer nonperforming nonperiodic nonperiodical nonperishable nonperishing nonperjury nonpermanent nonpermeability nonpermeable nonpermissible nonpermission nonperpendicular nonperpetual nonperpetuity nonpersecution nonperseverance nonpersistence nonpersistent nonperson nonpersonal nonpersonification nonpertinent nonperversive nonphagocytic nonpharmaceutical nonphenolic nonphenomenal nonphilanthropic nonphilological nonphilosophical nonphilosophy nonphonetic nonphosphatic nonphosphorized nonphotobiotic nonphysical nonphysiological nonpickable nonpigmented nonplacental nonplacet nonplanar nonplane nonplanetary nonplantowning nonplastic nonplate nonplausible nonpleading nonplus nonplusation nonplushed nonplutocratic nonpoet nonpoetic nonpoisonous nonpolar nonpolarizable nonpolarizing nonpolitical nonponderosity nonponderous nonpopery nonpopular nonpopularity nonporous nonporphyritic nonport nonportability nonportable nonportrayal nonpositive nonpossession nonposthumous nonpostponement nonpotential nonpower nonpractical nonpractice nonpraedial nonpreaching nonprecious nonprecipitation nonpredatory nonpredestination nonpredicative nonpredictable nonpreference nonpreferential nonpreformed nonpregnant nonprehensile nonprejudicial nonprelatical nonpremium nonpreparation nonprepayment nonprepositional nonpresbyter nonprescribed nonprescriptive nonpresence nonpresentation nonpreservation nonpresidential nonpress nonpressure nonprevalence nonprevalent nonpriestly nonprimitive nonprincipiate nonprincipled nonprobable nonprocreation nonprocurement nonproducer nonproducing nonproduction nonproductive nonproductively nonproductiveness nonprofane nonprofessed nonprofession nonprofessional nonprofessionalism nonprofessorial nonproficience nonproficiency nonproficient nonprofit nonprofiteering nonprognostication nonprogressive nonprohibitable nonprohibition nonprohibitive nonprojection nonprojective nonprojectively nonproletarian nonproliferous nonprolific nonprolongation nonpromiscuous nonpromissory nonpromotion nonpromulgation nonpronunciation nonpropagandistic nonpropagation nonprophetic nonpropitiation nonproportional nonproprietary nonproprietor nonprorogation nonproscriptive nonprosecution nonprospect nonprotection nonprotective nonproteid nonprotein nonprotestation nonprotractile nonprotractility nonproven nonprovided nonprovidential nonprovocation nonpsychic nonpsychological nonpublic nonpublication nonpublicity nonpueblo nonpulmonary nonpulsating nonpumpable nonpunctual nonpunctuation nonpuncturable nonpunishable nonpunishing nonpunishment nonpurchase nonpurchaser nonpurgative nonpurification nonpurposive nonpursuit nonpurulent nonpurveyance nonputrescent nonputrescible nonputting nonpyogenic nonpyritiferous nonqualification nonquality nonquota nonracial nonradiable nonradiating nonradical nonrailroader nonranging nonratability nonratable nonrated nonratifying nonrational nonrationalist nonrationalized nonrayed nonreaction nonreactive nonreactor nonreader nonreading nonrealistic nonreality nonrealization nonreasonable nonreasoner nonrebel nonrebellious nonreceipt nonreceiving nonrecent nonreception nonrecess nonrecipient nonreciprocal nonreciprocating nonreciprocity nonrecital nonreclamation nonrecluse nonrecognition nonrecognized nonrecoil nonrecollection nonrecommendation nonreconciliation nonrecourse nonrecoverable nonrecovery nonrectangular nonrectified nonrecuperation nonrecurrent nonrecurring nonredemption nonredressing nonreducing nonreference nonrefillable nonreflector nonreformation nonrefraction nonrefrigerant nonrefueling nonrefutation nonregardance nonregarding nonregenerating nonregenerative nonregent nonregimented nonregistered nonregistrability nonregistrable nonregistration nonregression nonregulation nonrehabilitation nonreigning nonreimbursement nonreinforcement nonreinstatement nonrejection nonrejoinder nonrelapsed nonrelation nonrelative nonrelaxation nonrelease nonreliance nonreligion nonreligious nonreligiousness nonrelinquishment nonremanie nonremedy nonremembrance nonremission nonremonstrance nonremuneration nonremunerative nonrendition nonrenewable nonrenewal nonrenouncing nonrenunciation nonrepair nonreparation nonrepayable nonrepealing nonrepeat nonrepeater nonrepentance nonrepetition nonreplacement nonreplicate nonreportable nonreprehensible nonrepresentation nonrepresentational nonrepresentationalism nonrepresentative nonrepression nonreprisal nonreproduction nonreproductive nonrepublican nonrepudiation nonrequirement nonrequisition nonrequital nonrescue nonresemblance nonreservation nonreserve nonresidence nonresidency nonresident nonresidental nonresidenter nonresidential nonresidentiary nonresidentor nonresidual nonresignation nonresinifiable nonresistance nonresistant nonresisting nonresistive nonresolvability nonresolvable nonresonant nonrespectable nonrespirable nonresponsibility nonrestitution nonrestraint nonrestricted nonrestriction nonrestrictive nonresumption nonresurrection nonresuscitation nonretaliation nonretention nonretentive nonreticence nonretinal nonretirement nonretiring nonretraceable nonretractation nonretractile nonretraction nonretrenchment nonretroactive nonreturn nonreturnable nonrevaluation nonrevealing nonrevelation nonrevenge nonrevenue nonreverse nonreversed nonreversible nonreversing nonreversion nonrevertible nonreviewable nonrevision nonrevival nonrevocation nonrevolting nonrevolutionary nonrevolving nonrhetorical nonrhymed nonrhyming nonrhythmic nonriding nonrigid nonrioter nonriparian nonritualistic nonrival nonromantic nonrotatable nonrotating nonrotative nonround nonroutine nonroyal nonroyalist nonrubber nonruminant Nonruminantia nonrun nonrupture nonrural nonrustable nonsabbatic nonsaccharine nonsacerdotal nonsacramental nonsacred nonsacrifice nonsacrificial nonsailor nonsalable nonsalaried nonsale nonsaline nonsalutary nonsalutation nonsalvation nonsanctification nonsanction nonsanctity nonsane nonsanguine nonsanity nonsaponifiable nonsatisfaction nonsaturated nonsaturation nonsaving nonsawing nonscalding nonscaling nonscandalous nonschematized nonschismatic nonscholastic nonscience nonscientific nonscientist nonscoring nonscraping nonscriptural nonscripturalist nonscrutiny nonseasonal nonsecession nonseclusion nonsecrecy nonsecret nonsecretarial nonsecretion nonsecretive nonsecretory nonsectarian nonsectional nonsectorial nonsecular nonsecurity nonsedentary nonseditious nonsegmented nonsegregation nonseizure nonselected nonselection nonselective nonself nonselfregarding nonselling nonsenatorial nonsense nonsensible nonsensical nonsensicality nonsensically nonsensicalness nonsensification nonsensify nonsensitive nonsensitiveness nonsensitized nonsensorial nonsensuous nonsentence nonsentient nonseparation nonseptate nonseptic nonsequacious nonsequaciousness nonsequestration nonserial nonserif nonserious nonserous nonserviential nonservile nonsetter nonsetting nonsettlement nonsexual nonsexually nonshaft nonsharing nonshatter nonshedder nonshipper nonshipping nonshredding nonshrinkable nonshrinking nonsiccative nonsidereal nonsignatory nonsignature nonsignificance nonsignificant nonsignification nonsignificative nonsilicated nonsiliceous nonsilver nonsimplification nonsine nonsinging nonsingular nonsinkable nonsinusoidal nonsiphonage nonsister nonsitter nonsitting nonskeptical nonskid nonskidding nonskipping nonslaveholding nonslip nonslippery nonslipping nonsludging nonsmoker nonsmoking nonsmutting nonsocial nonsocialist nonsocialistic nonsociety nonsociological nonsolar nonsoldier nonsolicitation nonsolid nonsolidified nonsolution nonsolvency nonsolvent nonsonant nonsovereign nonspalling nonsparing nonsparking nonspeaker nonspeaking nonspecial nonspecialist nonspecialized nonspecie nonspecific nonspecification nonspecificity nonspecified nonspectacular nonspectral nonspeculation nonspeculative nonspherical nonspill nonspillable nonspinning nonspinose nonspiny nonspiral nonspirit nonspiritual nonspirituous nonspontaneous nonspored nonsporeformer nonsporeforming nonsporting nonspottable nonsprouting nonstainable nonstaining nonstampable nonstandard nonstandardized nonstanzaic nonstaple nonstarch nonstarter nonstarting nonstatement nonstatic nonstationary nonstatistical nonstatutory nonstellar nonsticky nonstimulant nonstipulation nonstock nonstooping nonstop nonstrategic nonstress nonstretchable nonstretchy nonstriated nonstriker nonstriking nonstriped nonstructural nonstudent nonstudious nonstylized nonsubject nonsubjective nonsubmission nonsubmissive nonsubordination nonsubscriber nonsubscribing nonsubscription nonsubsiding nonsubsidy nonsubsistence nonsubstantial nonsubstantialism nonsubstantialist nonsubstantiality nonsubstantiation nonsubstantive nonsubstitution nonsubtraction nonsuccess nonsuccessful nonsuccession nonsuccessive nonsuccour nonsuction nonsuctorial nonsufferance nonsuffrage nonsugar nonsuggestion nonsuit nonsulphurous nonsummons nonsupplication nonsupport nonsupporter nonsupporting nonsuppositional nonsuppressed nonsuppression nonsuppurative nonsurface nonsurgical nonsurrender nonsurvival nonsurvivor nonsuspect nonsustaining nonsustenance nonswearer nonswearing nonsweating nonswimmer nonswimming nonsyllabic nonsyllabicness nonsyllogistic nonsyllogizing nonsymbiotic nonsymbiotically nonsymbolic nonsymmetrical nonsympathetic nonsympathizer nonsympathy nonsymphonic nonsymptomatic nonsynchronous nonsyndicate nonsynodic nonsynonymous nonsyntactic nonsyntactical nonsynthesized nonsyntonic nonsystematic nontabular nontactical nontan nontangential nontannic nontannin nontariff nontarnishable nontarnishing nontautomeric nontautomerizable nontax nontaxability nontaxable nontaxonomic nonteachable nonteacher nonteaching nontechnical nontechnological nonteetotaler nontelegraphic nonteleological nontelephonic nontemporal nontemporizing nontenant nontenure nontenurial nonterm nonterminating nonterrestrial nonterritorial nonterritoriality nontestamentary nontextual nontheatrical nontheistic nonthematic nontheological nontheosophical nontherapeutic nonthinker nonthinking nonthoracic nonthoroughfare nonthreaded nontidal nontillable nontimbered nontitaniferous nontitular nontolerated nontopographical nontourist nontoxic nontraction nontrade nontrader nontrading nontraditional nontragic nontrailing nontransferability nontransferable nontransgression nontransient nontransitional nontranslocation nontransmission nontransparency nontransparent nontransportation nontransposing nontransposition nontraveler nontraveling nontreasonable nontreated nontreatment nontreaty nontrespass nontrial nontribal nontribesman nontributary nontrier nontrigonometrical nontronite nontropical nontrunked nontruth nontuberculous nontuned nonturbinated nontutorial nontyphoidal nontypical nontypicalness nontypographical nontyrannical nonubiquitous nonulcerous nonultrafilterable nonumbilical nonumbilicate nonumbrellaed nonunanimous nonuncial nonundergraduate nonunderstandable nonunderstanding nonunderstandingly nonunderstood nonundulatory nonuniform nonuniformist nonuniformitarian nonuniformity nonuniformly nonunion nonunionism nonunionist nonunique nonunison nonunited nonuniversal nonuniversity nonupholstered nonuple nonuplet nonupright nonurban nonurgent nonusage nonuse nonuser nonusing nonusurping nonuterine nonutile nonutilitarian nonutility nonutilized nonutterance nonvacant nonvaccination nonvacuous nonvaginal nonvalent nonvalidity nonvaluation nonvalve nonvanishing nonvariable nonvariant nonvariation nonvascular nonvassal nonvegetative nonvenereal nonvenomous nonvenous nonventilation nonverbal nonverdict nonverminous nonvernacular nonvertebral nonvertical nonvertically nonvesicular nonvesting nonvesture nonveteran nonveterinary nonviable nonvibratile nonvibration nonvibrator nonvibratory nonvicarious nonvictory nonvillager nonvillainous nonvindication nonvinous nonvintage nonviolation nonviolence nonvirginal nonvirile nonvirtue nonvirtuous nonvirulent nonviruliferous nonvisaed nonvisceral nonviscid nonviscous nonvisional nonvisitation nonvisiting nonvisual nonvisualized nonvital nonvitreous nonvitrified nonviviparous nonvocal nonvocalic nonvocational nonvolant nonvolatile nonvolatilized nonvolcanic nonvolition nonvoluntary nonvortical nonvortically nonvoter nonvoting nonvulcanizable nonvulvar nonwalking nonwar nonwasting nonwatertight nonweakness nonwestern nonwetted nonwhite nonwinged nonwoody nonworker nonworking nonworship nonwrinkleable nonya nonyielding nonyl nonylene nonylenic nonylic nonzealous nonzero nonzodiacal nonzonal nonzonate nonzoological noodle noodledom noodleism nook nooked nookery nooking nooklet nooklike nooky noological noologist noology noometry noon noonday noonflower nooning noonlight noonlit noonstead noontide noontime noonwards noop nooscopic noose nooser Nootka nopal Nopalea nopalry nope nopinene nor Nora Norah norard norate noration norbergite Norbertine norcamphane nordcaper nordenskioldine Nordic Nordicism Nordicist Nordicity Nordicization Nordicize nordmarkite noreast noreaster norelin Norfolk Norfolkian norgine nori noria Noric norie norimon norite norland norlander norlandism norleucine norm norma normal normalcy normalism normalist normality normalization normalize normalizer normally normalness Norman Normanesque Normanish Normanism Normanist Normanization Normanize Normanizer Normanly Normannic normated normative normatively normativeness normless normoblast normoblastic normocyte normocytic normotensive Norn Norna nornicotine nornorwest noropianic norpinic Norridgewock Norroway Norroy Norse norsel Norseland norseler Norseman Norsk north northbound northeast northeaster northeasterly northeastern northeasternmost northeastward northeastwardly northeastwards norther northerliness northerly northern northerner northernize northernly northernmost northernness northest northfieldite northing northland northlander northlight Northman northmost northness Northumber Northumbrian northupite northward northwardly northwards northwest northwester northwesterly northwestern northwestward northwestwardly northwestwards Norumbega norward norwards Norway Norwegian norwest norwester norwestward Nosairi Nosairian nosarian nose nosean noseanite noseband nosebanded nosebleed nosebone noseburn nosed nosegay nosegaylike noseherb nosehole noseless noselessly noselessness noselike noselite Nosema Nosematidae nosepiece nosepinch noser nosesmart nosethirl nosetiology nosewards nosewheel nosewise nosey nosine nosing nosism nosocomial nosocomium nosogenesis nosogenetic nosogenic nosogeny nosogeography nosographer nosographic nosographical nosographically nosography nosohaemia nosohemia nosological nosologically nosologist nosology nosomania nosomycosis nosonomy nosophobia nosophyte nosopoetic nosopoietic nosotaxy nosotrophy nostalgia nostalgic nostalgically nostalgy nostic Nostoc Nostocaceae nostocaceous nostochine nostologic nostology nostomania Nostradamus nostrificate nostrification nostril nostriled nostrility nostrilsome nostrum nostrummonger nostrummongership nostrummongery Nosu nosy not notabilia notability notable notableness notably notacanthid Notacanthidae notacanthoid notacanthous Notacanthus notaeal notaeum notal notalgia notalgic Notalia notan notandum notanencephalia notarial notarially notariate notarikon notarize notary notaryship notate notation notational notative notator notch notchboard notched notchel notcher notchful notching notchweed notchwing notchy note notebook notecase noted notedly notedness notehead noteholder notekin Notelaea noteless notelessly notelessness notelet notencephalocele notencephalus noter notewise noteworthily noteworthiness noteworthy notharctid Notharctidae Notharctus nother nothing nothingarian nothingarianism nothingism nothingist nothingize nothingless nothingly nothingness nothingology Nothofagus Notholaena nothosaur Nothosauri nothosaurian Nothosauridae Nothosaurus nothous notice noticeability noticeable noticeably noticer Notidani notidanian notidanid Notidanidae notidanidan notidanoid Notidanus notifiable notification notified notifier notify notifyee notion notionable notional notionalist notionality notionally notionalness notionary notionate notioned notionist notionless Notiosorex notitia Notkerian notocentrous notocentrum notochord notochordal notodontian notodontid Notodontidae notodontoid Notogaea Notogaeal Notogaean Notogaeic notommatid Notommatidae Notonecta notonectal notonectid Notonectidae notopodial notopodium notopterid Notopteridae notopteroid Notopterus notorhizal Notorhynchus notoriety notorious notoriously notoriousness Notornis Notoryctes Notostraca Nototherium Nototrema nototribe notour notourly Notropis notself Nottoway notum Notungulata notungulate Notus notwithstanding nougat nougatine nought noumeaite noumeite noumenal noumenalism noumenalist noumenality noumenalize noumenally noumenism noumenon noun nounal nounally nounize nounless noup nourice nourish nourishable nourisher nourishing nourishingly nourishment nouriture nous nouther nova novaculite novalia Novanglian Novanglican novantique novarsenobenzene novate Novatian Novatianism Novatianist novation novative novator novatory novatrix novcic novel novelcraft noveldom novelese novelesque novelet novelette noveletter novelettish novelettist noveletty novelish novelism novelist novelistic novelistically novelization novelize novella novelless novellike novelly novelmongering novelness novelry novelty novelwright novem novemarticulate November Novemberish novemcostate novemdigitate novemfid novemlobate novemnervate novemperfoliate novena novenary novendial novene novennial novercal Novial novice novicehood novicelike noviceship noviciate novilunar novitial novitiate novitiateship novitiation novity Novocain novodamus now nowaday nowadays nowanights noway noways nowed nowel nowhat nowhen nowhence nowhere nowhereness nowheres nowhit nowhither nowise nowness Nowroze nowt nowy noxa noxal noxally noxious noxiously noxiousness noy noyade noyau Nozi nozzle nozzler nth nu nuance nub Nuba nubbin nubble nubbling nubbly nubby nubecula nubia Nubian nubiferous nubiform nubigenous nubilate nubilation nubile nubility nubilous Nubilum nucal nucament nucamentaceous nucellar nucellus nucha nuchal nuchalgia nuciculture nuciferous nuciform nucin nucivorous nucleal nuclear nucleary nuclease nucleate nucleation nucleator nuclei nucleiferous nucleiform nuclein nucleinase nucleoalbumin nucleoalbuminuria nucleofugal nucleohistone nucleohyaloplasm nucleohyaloplasma nucleoid nucleoidioplasma nucleolar nucleolated nucleole nucleoli nucleolinus nucleolocentrosome nucleoloid nucleolus nucleolysis nucleomicrosome nucleon nucleone nucleonics nucleopetal nucleoplasm nucleoplasmatic nucleoplasmic nucleoprotein nucleoside nucleotide nucleus nuclide nuclidic Nucula Nuculacea nuculanium nucule nuculid Nuculidae nuculiform nuculoid Nuda nudate nudation Nudd nuddle nude nudely nudeness Nudens nudge nudger nudibranch Nudibranchia nudibranchian nudibranchiate nudicaudate nudicaul nudifier nudiflorous nudiped nudish nudism nudist nuditarian nudity nugacious nugaciousness nugacity nugator nugatoriness nugatory nuggar nugget nuggety nugify nugilogue Nugumiut nuisance nuisancer nuke Nukuhivan nul null nullable nullah nullibicity nullibility nullibiquitous nullibist nullification nullificationist nullificator nullifidian nullifier nullify nullipara nulliparity nulliparous nullipennate Nullipennes nulliplex nullipore nulliporous nullism nullisome nullisomic nullity nulliverse nullo Numa Numantine numb number numberable numberer numberful numberless numberous numbersome numbfish numbing numbingly numble numbles numbly numbness numda numdah numen Numenius numerable numerableness numerably numeral numerant numerary numerate numeration numerative numerator numerical numerically numericalness numerist numero numerology numerose numerosity numerous numerously numerousness Numida Numidae Numidian Numididae Numidinae numinism numinous numinously numismatic numismatical numismatically numismatician numismatics numismatist numismatography numismatologist numismatology nummary nummi nummiform nummular Nummularia nummulary nummulated nummulation nummuline Nummulinidae nummulite Nummulites nummulitic Nummulitidae nummulitoid nummuloidal nummus numskull numskulled numskulledness numskullery numskullism numud nun nunatak nunbird nunch nuncheon nunciate nunciative nunciatory nunciature nuncio nuncioship nuncle nuncupate nuncupation nuncupative nuncupatively nundinal nundination nundine nunhood Nunki nunky nunlet nunlike nunnari nunnated nunnation nunnery nunni nunnify nunnish nunnishness nunship Nupe Nuphar nuptial nuptiality nuptialize nuptially nuptials nuque nuraghe nurhag nurly nursable nurse nursedom nursegirl nursehound nursekeeper nursekin nurselet nurselike nursemaid nurser nursery nurserydom nurseryful nurserymaid nurseryman nursetender nursing nursingly nursle nursling nursy nurturable nurtural nurture nurtureless nurturer nurtureship Nusairis Nusakan nusfiah nut nutant nutarian nutate nutation nutational nutbreaker nutcake nutcrack nutcracker nutcrackers nutcrackery nutgall nuthatch nuthook nutjobber nutlet nutlike nutmeg nutmegged nutmeggy nutpecker nutpick nutramin nutria nutrice nutricial nutricism nutrient nutrify nutriment nutrimental nutritial nutrition nutritional nutritionally nutritionist nutritious nutritiously nutritiousness nutritive nutritively nutritiveness nutritory nutseed nutshell Nuttallia nuttalliasis nuttalliosis nutted nutter nuttery nuttily nuttiness nutting nuttish nuttishness nutty nuzzer nuzzerana nuzzle Nyamwezi Nyanja nyanza Nyaya nychthemer nychthemeral nychthemeron Nyctaginaceae nyctaginaceous Nyctaginia nyctalope nyctalopia nyctalopic nyctalopy Nyctanthes Nyctea Nyctereutes nycteribiid Nycteribiidae Nycteridae nycterine Nycteris Nycticorax Nyctimene nyctinastic nyctinasty nyctipelagic Nyctipithecinae nyctipithecine Nyctipithecus nyctitropic nyctitropism nyctophobia nycturia Nydia nye nylast nylon nymil nymph nympha nymphae Nymphaea Nymphaeaceae nymphaeaceous nymphaeum nymphal nymphalid Nymphalidae Nymphalinae nymphaline nympheal nymphean nymphet nymphic nymphical nymphid nymphine Nymphipara nymphiparous nymphish nymphitis nymphlike nymphlin nymphly Nymphoides nympholepsia nympholepsy nympholept nympholeptic nymphomania nymphomaniac nymphomaniacal Nymphonacea nymphosis nymphotomy nymphwise Nyoro Nyroca Nyssa Nyssaceae nystagmic nystagmus nyxis O o oadal oaf oafdom oafish oafishly oafishness oak oakberry Oakboy oaken oakenshaw Oakesia oaklet oaklike oakling oaktongue oakum oakweb oakwood oaky oam Oannes oar oarage oarcock oared oarfish oarhole oarial oarialgia oaric oariocele oariopathic oariopathy oariotomy oaritic oaritis oarium oarless oarlike oarlock oarlop oarman oarsman oarsmanship oarswoman oarweed oary oasal oasean oases oasis oasitic oast oasthouse oat oatbin oatcake oatear oaten oatenmeal oatfowl oath oathay oathed oathful oathlet oathworthy oatland oatlike oatmeal oatseed oaty Obadiah obambulate obambulation obambulatory oban Obbenite obbligato obclavate obclude obcompressed obconical obcordate obcordiform obcuneate obdeltoid obdiplostemonous obdiplostemony obdormition obduction obduracy obdurate obdurately obdurateness obduration obe obeah obeahism obeche obedience obediency obedient obediential obedientially obedientialness obedientiar obedientiary obediently obeisance obeisant obeisantly obeism obelia obeliac obelial obelion obeliscal obeliscar obelisk obeliskoid obelism obelize obelus Oberon obese obesely obeseness obesity obex obey obeyable obeyer obeyingly obfuscable obfuscate obfuscation obfuscator obfuscity obfuscous obi Obidicut obispo obit obitual obituarian obituarily obituarist obituarize obituary object objectable objectation objectative objectee objecthood objectification objectify objection objectionability objectionable objectionableness objectionably objectional objectioner objectionist objectival objectivate objectivation objective objectively objectiveness objectivism objectivist objectivistic objectivity objectivize objectization objectize objectless objectlessly objectlessness objector objicient objuration objure objurgate objurgation objurgative objurgatively objurgator objurgatorily objurgatory objurgatrix oblanceolate oblate oblately oblateness oblation oblational oblationary oblatory oblectate oblectation obley obligable obligancy obligant obligate obligation obligational obligative obligativeness obligator obligatorily obligatoriness obligatory obligatum oblige obliged obligedly obligedness obligee obligement obliger obliging obligingly obligingness obligistic obligor obliquangular obliquate obliquation oblique obliquely obliqueness obliquitous obliquity obliquus obliterable obliterate obliteration obliterative obliterator oblivescence oblivial obliviality oblivion oblivionate oblivionist oblivionize oblivious obliviously obliviousness obliviscence obliviscible oblocutor oblong oblongatal oblongated oblongish oblongitude oblongitudinal oblongly oblongness obloquial obloquious obloquy obmutescence obmutescent obnebulate obnounce obnoxiety obnoxious obnoxiously obnoxiousness obnubilate obnubilation obnunciation oboe oboist obol Obolaria obolary obole obolet obolus obomegoid Obongo oboval obovate obovoid obpyramidal obpyriform Obrazil obreption obreptitious obreptitiously obrogate obrogation obrotund obscene obscenely obsceneness obscenity obscurancy obscurant obscurantic obscurantism obscurantist obscuration obscurative obscure obscuredly obscurely obscurement obscureness obscurer obscurism obscurist obscurity obsecrate obsecration obsecrationary obsecratory obsede obsequence obsequent obsequial obsequience obsequiosity obsequious obsequiously obsequiousness obsequity obsequium obsequy observability observable observableness observably observance observancy observandum observant Observantine Observantist observantly observantness observation observational observationalism observationally observative observatorial observatory observe observedly observer observership observing observingly obsess obsessingly obsession obsessional obsessionist obsessive obsessor obsidian obsidianite obsidional obsidionary obsidious obsignate obsignation obsignatory obsolesce obsolescence obsolescent obsolescently obsolete obsoletely obsoleteness obsoletion obsoletism obstacle obstetric obstetrical obstetrically obstetricate obstetrication obstetrician obstetrics obstetricy obstetrist obstetrix obstinacious obstinacy obstinance obstinate obstinately obstinateness obstination obstinative obstipation obstreperate obstreperosity obstreperous obstreperously obstreperousness obstriction obstringe obstruct obstructant obstructedly obstructer obstructingly obstruction obstructionism obstructionist obstructive obstructively obstructiveness obstructivism obstructivity obstructor obstruent obstupefy obtain obtainable obtainal obtainance obtainer obtainment obtect obtected obtemper obtemperate obtenebrate obtenebration obtention obtest obtestation obtriangular obtrude obtruder obtruncate obtruncation obtruncator obtrusion obtrusionist obtrusive obtrusively obtrusiveness obtund obtundent obtunder obtundity obturate obturation obturator obturatory obturbinate obtusangular obtuse obtusely obtuseness obtusifid obtusifolious obtusilingual obtusilobous obtusion obtusipennate obtusirostrate obtusish obtusity obumbrant obumbrate obumbration obvallate obvelation obvention obverse obversely obversion obvert obvertend obviable obviate obviation obviative obviator obvious obviously obviousness obvolute obvoluted obvolution obvolutive obvolve obvolvent ocarina Occamism Occamist Occamistic Occamite occamy occasion occasionable occasional occasionalism occasionalist occasionalistic occasionality occasionally occasionalness occasionary occasioner occasionless occasive occident occidental Occidentalism Occidentalist occidentality Occidentalization Occidentalize occidentally occiduous occipital occipitalis occipitally occipitoanterior occipitoatlantal occipitoatloid occipitoaxial occipitoaxoid occipitobasilar occipitobregmatic occipitocalcarine occipitocervical occipitofacial occipitofrontal occipitofrontalis occipitohyoid occipitoiliac occipitomastoid occipitomental occipitonasal occipitonuchal occipitootic occipitoparietal occipitoposterior occipitoscapular occipitosphenoid occipitosphenoidal occipitotemporal occipitothalamic occiput occitone occlude occludent occlusal occluse occlusion occlusive occlusiveness occlusocervical occlusocervically occlusogingival occlusometer occlusor occult occultate occultation occulter occulting occultism occultist occultly occultness occupable occupance occupancy occupant occupation occupational occupationalist occupationally occupationless occupative occupiable occupier occupy occur occurrence occurrent occursive ocean oceaned oceanet oceanful Oceanian oceanic Oceanican oceanity oceanographer oceanographic oceanographical oceanographically oceanographist oceanography oceanology oceanophyte oceanside oceanward oceanwards oceanways oceanwise ocellar ocellary ocellate ocellated ocellation ocelli ocellicyst ocellicystic ocelliferous ocelliform ocelligerous ocellus oceloid ocelot och ochava ochavo ocher ocherish ocherous ochery ochidore ochlesis ochlesitic ochletic ochlocracy ochlocrat ochlocratic ochlocratical ochlocratically ochlophobia ochlophobist Ochna Ochnaceae ochnaceous ochone Ochotona Ochotonidae Ochozoma ochraceous Ochrana ochrea ochreate ochreous ochro ochrocarpous ochroid ochroleucous ochrolite Ochroma ochronosis ochronosus ochronotic ochrous ocht Ocimum ock oclock Ocneria ocote Ocotea ocotillo ocque ocracy ocrea ocreaceous Ocreatae ocreate ocreated octachloride octachord octachordal octachronous Octacnemus octacolic octactinal octactine Octactiniae octactinian octad octadecahydrate octadecane octadecanoic octadecyl octadic octadrachm octaemeron octaeteric octaeterid octagon octagonal octagonally octahedral octahedric octahedrical octahedrite octahedroid octahedron octahedrous octahydrate octahydrated octakishexahedron octamerism octamerous octameter octan octanaphthene Octandria octandrian octandrious octane octangle octangular octangularness Octans octant octantal octapla octaploid octaploidic octaploidy octapodic octapody octarch octarchy octarius octarticulate octary octasemic octastich octastichon octastrophic octastyle octastylos octateuch octaval octavalent octavarium octave Octavia Octavian octavic octavina Octavius octavo octenary octene octennial octennially octet octic octillion octillionth octine octingentenary octoad octoalloy octoate octobass October octobrachiate Octobrist octocentenary octocentennial octochord Octocoralla octocorallan Octocorallia octocoralline octocotyloid octodactyl octodactyle octodactylous octodecimal octodecimo octodentate octodianome Octodon octodont Octodontidae Octodontinae octoechos octofid octofoil octofoiled octogamy octogenarian octogenarianism octogenary octogild octoglot Octogynia octogynian octogynious octogynous octoic octoid octolateral octolocular octomeral octomerous octometer octonal octonare octonarian octonarius octonary octonematous octonion octonocular octoon octopartite octopean octoped octopede octopetalous octophthalmous octophyllous octopi octopine octoploid octoploidic octoploidy octopod Octopoda octopodan octopodes octopodous octopolar octopus octoradial octoradiate octoradiated octoreme octoroon octose octosepalous octospermous octospore octosporous octostichous octosyllabic octosyllable octovalent octoyl octroi octroy octuor octuple octuplet octuplex octuplicate octuplication octuply octyl octylene octyne ocuby ocular ocularist ocularly oculary oculate oculated oculauditory oculiferous oculiform oculigerous Oculina oculinid Oculinidae oculinoid oculist oculistic oculocephalic oculofacial oculofrontal oculomotor oculomotory oculonasal oculopalpebral oculopupillary oculospinal oculozygomatic oculus ocydrome ocydromine Ocydromus Ocypete Ocypoda ocypodan Ocypode ocypodian Ocypodidae ocypodoid Ocyroe Ocyroidae Od od oda Odacidae odacoid odal odalborn odalisk odalisque odaller odalman odalwoman Odax odd oddish oddity oddlegs oddly oddman oddment oddments oddness Odds odds Oddsbud oddsman ode odel odelet Odelsthing Odelsting odeon odeum odic odically Odin Odinian Odinic Odinism Odinist odinite Odinitic odiometer odious odiously odiousness odist odium odiumproof Odobenidae Odobenus Odocoileus odograph odology odometer odometrical odometry Odonata odontagra odontalgia odontalgic Odontaspidae Odontaspididae Odontaspis odontatrophia odontatrophy odontexesis odontiasis odontic odontist odontitis odontoblast odontoblastic odontocele Odontocete odontocete Odontoceti odontocetous odontochirurgic odontoclasis odontoclast odontodynia odontogen odontogenesis odontogenic odontogeny Odontoglossae odontoglossal odontoglossate Odontoglossum Odontognathae odontognathic odontognathous odontograph odontographic odontography odontohyperesthesia odontoid Odontolcae odontolcate odontolcous odontolite odontolith odontological odontologist odontology odontoloxia odontoma odontomous odontonecrosis odontoneuralgia odontonosology odontopathy odontophoral odontophore Odontophoridae Odontophorinae odontophorine odontophorous Odontophorus odontoplast odontoplerosis Odontopteris Odontopteryx odontorhynchous Odontormae Odontornithes odontornithic odontorrhagia odontorthosis odontoschism odontoscope odontosis odontostomatous odontostomous Odontosyllis odontotechny odontotherapia odontotherapy odontotomy Odontotormae odontotripsis odontotrypy odoom odophone odor odorant odorate odorator odored odorful odoriferant odoriferosity odoriferous odoriferously odoriferousness odorific odorimeter odorimetry odoriphore odorivector odorize odorless odorometer odorosity odorous odorously odorousness odorproof Odostemon Ods odso odum odyl odylic odylism odylist odylization odylize Odynerus Odyssean Odyssey Odz Odzookers Odzooks oe Oecanthus oecist oecodomic oecodomical oecoparasite oecoparasitism oecophobia oecumenian oecumenic oecumenical oecumenicalism oecumenicity oecus oedemerid Oedemeridae oedicnemine Oedicnemus Oedipal Oedipean Oedipus Oedogoniaceae oedogoniaceous Oedogoniales Oedogonium oenanthaldehyde oenanthate Oenanthe oenanthic oenanthol oenanthole oenanthyl oenanthylate oenanthylic oenin Oenocarpus oenochoe oenocyte oenocytic oenolin oenological oenologist oenology oenomancy Oenomaus oenomel oenometer oenophilist oenophobist oenopoetic Oenothera Oenotheraceae oenotheraceous Oenotrian oer oersted oes oesophageal oesophagi oesophagismus oesophagostomiasis Oesophagostomum oesophagus oestradiol Oestrelata oestrian oestriasis oestrid Oestridae oestrin oestriol oestroid oestrous oestrual oestruate oestruation oestrum oestrus of off offal offaling offbeat offcast offcome offcut offend offendable offendant offended offendedly offendedness offender offendible offendress offense offenseful offenseless offenselessly offenseproof offensible offensive offensively offensiveness offer offerable offeree offerer offering offeror offertorial offertory offgoing offgrade offhand offhanded offhandedly offhandedness office officeholder officeless officer officerage officeress officerhood officerial officerism officerless officership official officialdom officialese officialism officiality officialization officialize officially officialty officiant officiary officiate officiation officiator officinal officinally officious officiously officiousness offing offish offishly offishness offlet offlook offprint offsaddle offscape offscour offscourer offscouring offscum offset offshoot offshore offsider offspring offtake offtype offuscate offuscation offward offwards oflete Ofo oft often oftenness oftens oftentime oftentimes ofter oftest oftly oftness ofttime ofttimes oftwhiles Og ogaire Ogallala ogam ogamic Ogboni Ogcocephalidae Ogcocephalus ogdoad ogdoas ogee ogeed ogganition ogham oghamic Oghuz ogival ogive ogived Oglala ogle ogler ogmic Ogor Ogpu ogre ogreish ogreishly ogreism ogress ogrish ogrism ogtiern ogum Ogygia Ogygian oh ohelo ohia Ohio Ohioan ohm ohmage ohmic ohmmeter oho ohoy oidioid oidiomycosis oidiomycotic Oidium oii oikology oikoplast oil oilberry oilbird oilcan oilcloth oilcoat oilcup oildom oiled oiler oilery oilfish oilhole oilily oiliness oilless oillessness oillet oillike oilman oilmonger oilmongery oilometer oilpaper oilproof oilproofing oilseed oilskin oilskinned oilstock oilstone oilstove oiltight oiltightness oilway oily oilyish oime oinochoe oinology oinomancy oinomania oinomel oint ointment Oireachtas oisin oisivity oitava oiticica Ojibwa Ojibway Ok oka okapi Okapia okee okenite oket oki okia Okie Okinagan Oklafalaya Oklahannali Oklahoma Oklahoman okoniosis okonite okra okrug okshoofd okthabah Okuari okupukupu Olacaceae olacaceous olam olamic Olax Olcha Olchi old olden Oldenburg older oldermost oldfangled oldfangledness Oldfieldia Oldhamia oldhamite oldhearted oldish oldland oldness oldster oldwife Olea Oleaceae oleaceous Oleacina Oleacinidae oleaginous oleaginousness oleana oleander oleandrin Olearia olease oleaster oleate olecranal olecranarthritis olecranial olecranian olecranoid olecranon olefiant olefin olefine olefinic oleic oleiferous olein olena olenellidian Olenellus olenid Olenidae olenidian olent Olenus oleo oleocalcareous oleocellosis oleocyst oleoduct oleograph oleographer oleographic oleography oleomargaric oleomargarine oleometer oleoptene oleorefractometer oleoresin oleoresinous oleosaccharum oleose oleosity oleostearate oleostearin oleothorax oleous Oleraceae oleraceous olericultural olericulturally olericulture Oleron Olethreutes olethreutid Olethreutidae olfact olfactible olfaction olfactive olfactology olfactometer olfactometric olfactometry olfactor olfactorily olfactory olfacty Olga oliban olibanum olid oligacanthous oligaemia oligandrous oliganthous oligarch oligarchal oligarchic oligarchical oligarchically oligarchism oligarchist oligarchize oligarchy oligemia oligidria oligist oligistic oligistical oligocarpous Oligocene Oligochaeta oligochaete oligochaetous oligochete oligocholia oligochrome oligochromemia oligochronometer oligochylia oligoclase oligoclasite oligocystic oligocythemia oligocythemic oligodactylia oligodendroglia oligodendroglioma oligodipsia oligodontous oligodynamic oligogalactia oligohemia oligohydramnios oligolactia oligomenorrhea oligomerous oligomery oligometochia oligometochic Oligomyodae oligomyodian oligomyoid Oligonephria oligonephric oligonephrous oligonite oligopepsia oligopetalous oligophagous oligophosphaturia oligophrenia oligophrenic oligophyllous oligoplasmia oligopnea oligopolistic oligopoly oligoprothesy oligoprothetic oligopsonistic oligopsony oligopsychia oligopyrene oligorhizous oligosepalous oligosialia oligosideric oligosiderite oligosite oligospermia oligospermous oligostemonous oligosyllabic oligosyllable oligosynthetic oligotokous oligotrichia oligotrophic oligotrophy oligotropic oliguresis oliguretic oliguria Olinia Oliniaceae oliniaceous olio oliphant oliprance olitory Oliva oliva olivaceous olivary Olive olive Olivean olived Olivella oliveness olivenite Oliver Oliverian oliverman oliversmith olivescent olivet Olivetan Olivette olivewood Olivia Olividae oliviferous oliviform olivil olivile olivilin olivine olivinefels olivinic olivinite olivinitic olla ollamh ollapod ollenite Ollie ollock olm Olneya ological ologist ologistic ology olomao olona Olonets Olonetsian Olonetsish Olor oloroso olpe Olpidiaster Olpidium oltonde oltunna olycook olykoek Olympia Olympiad Olympiadic Olympian Olympianism Olympianize Olympianly Olympianwise Olympic Olympicly Olympicness Olympieion Olympionic Olympus Olynthiac Olynthian Olynthus om omadhaun omagra Omagua Omaha omalgia Oman Omani omao omarthritis omasitis omasum omber ombrette ombrifuge ombrograph ombrological ombrology ombrometer ombrophile ombrophilic ombrophilous ombrophily ombrophobe ombrophobous ombrophoby ombrophyte omega omegoid omelet omelette omen omened omenology omental omentectomy omentitis omentocele omentofixation omentopexy omentoplasty omentorrhaphy omentosplenopexy omentotomy omentulum omentum omer omicron omina ominous ominously ominousness omissible omission omissive omissively omit omitis omittable omitter omlah Ommastrephes Ommastrephidae ommateal ommateum ommatidial ommatidium ommatophore ommatophorous Ommiad Ommiades omneity omniactive omniactuality omniana omniarch omnibenevolence omnibenevolent omnibus omnibusman omnicausality omnicompetence omnicompetent omnicorporeal omnicredulity omnicredulous omnidenominational omnierudite omniessence omnifacial omnifarious omnifariously omnifariousness omniferous omnific omnificent omnifidel omniform omniformal omniformity omnify omnigenous omnigerent omnigraph omnihuman omnihumanity omnilegent omnilingual omniloquent omnilucent omnimental omnimeter omnimode omnimodous omninescience omninescient omniparent omniparient omniparity omniparous omnipatient omnipercipience omnipercipiency omnipercipient omniperfect omnipotence omnipotency omnipotent omnipotentiality omnipotently omnipregnant omnipresence omnipresent omnipresently omniprevalence omniprevalent omniproduction omniprudent omnirange omniregency omnirepresentative omnirepresentativeness omnirevealing omniscience omnisciency omniscient omnisciently omniscope omniscribent omniscriptive omnisentience omnisentient omnisignificance omnisignificant omnispective omnist omnisufficiency omnisufficient omnitemporal omnitenent omnitolerant omnitonal omnitonality omnitonic omnitude omnium omnivagant omnivalence omnivalent omnivalous omnivarious omnividence omnivident omnivision omnivolent Omnivora omnivoracious omnivoracity omnivorant omnivore omnivorous omnivorously omnivorousness omodynia omohyoid omoideum omophagia omophagist omophagous omophagy omophorion omoplate omoplatoscopy omostegite omosternal omosternum omphacine omphacite omphalectomy omphalic omphalism omphalitis omphalocele omphalode omphalodium omphalogenous omphaloid omphaloma omphalomesaraic omphalomesenteric omphaloncus omphalopagus omphalophlebitis omphalopsychic omphalopsychite omphalorrhagia omphalorrhea omphalorrhexis omphalos omphalosite omphaloskepsis omphalospinous omphalotomy omphalotripsy omphalus on Ona ona onager Onagra onagra Onagraceae onagraceous Onan onanism onanist onanistic onca once oncetta Onchidiidae Onchidium Onchocerca onchocerciasis onchocercosis oncia Oncidium oncin oncograph oncography oncologic oncological oncology oncome oncometer oncometric oncometry oncoming Oncorhynchus oncosimeter oncosis oncosphere oncost oncostman oncotomy ondagram ondagraph ondameter ondascope ondatra ondine ondogram ondograph ondometer ondoscope ondy one oneanother oneberry onefold onefoldness onegite onehearted onehow Oneida oneiric oneirocrit oneirocritic oneirocritical oneirocritically oneirocriticism oneirocritics oneirodynia oneirologist oneirology oneiromancer oneiromancy oneiroscopic oneiroscopist oneiroscopy oneirotic oneism onement oneness oner onerary onerative onerosity onerous onerously onerousness onery oneself onesigned onetime onewhere oneyer onfall onflemed onflow onflowing ongaro ongoing onhanger onicolo oniomania oniomaniac onion onionet onionized onionlike onionpeel onionskin oniony onirotic Oniscidae onisciform oniscoid Oniscoidea oniscoidean Oniscus onium onkilonite onkos onlay onlepy onliest onliness onlook onlooker onlooking only onmarch Onmun Onobrychis onocentaur Onoclea onofrite Onohippidium onolatry onomancy onomantia onomastic onomasticon onomatologist onomatology onomatomania onomatope onomatoplasm onomatopoeia onomatopoeial onomatopoeian onomatopoeic onomatopoeical onomatopoeically onomatopoesis onomatopoesy onomatopoetic onomatopoetically onomatopy onomatous onomomancy Onondaga Onondagan Ononis Onopordon Onosmodium onrush onrushing ons onset onsetter onshore onside onsight onslaught onstand onstanding onstead onsweep onsweeping ontal Ontarian Ontaric onto ontocycle ontocyclic ontogenal ontogenesis ontogenetic ontogenetical ontogenetically ontogenic ontogenically ontogenist ontogeny ontography ontologic ontological ontologically ontologism ontologist ontologistic ontologize ontology ontosophy onus onwaiting onward onwardly onwardness onwards onycha onychatrophia onychauxis onychia onychin onychitis onychium onychogryposis onychoid onycholysis onychomalacia onychomancy onychomycosis onychonosus onychopathic onychopathology onychopathy onychophagist onychophagy Onychophora onychophoran onychophorous onychophyma onychoptosis onychorrhexis onychoschizia onychosis onychotrophy onym onymal onymancy onymatic onymity onymize onymous onymy onyx onyxis onyxitis onza ooangium ooblast ooblastic oocyesis oocyst Oocystaceae oocystaceous oocystic Oocystis oocyte oodles ooecial ooecium oofbird ooftish oofy oogamete oogamous oogamy oogenesis oogenetic oogeny ooglea oogone oogonial oogoniophore oogonium oograph ooid ooidal ookinesis ookinete ookinetic oolak oolemma oolite oolitic oolly oologic oological oologically oologist oologize oology oolong oomancy oomantia oometer oometric oometry oomycete Oomycetes oomycetous oons oont oopak oophoralgia oophorauxe oophore oophorectomy oophoreocele oophorhysterectomy oophoric oophoridium oophoritis oophoroepilepsy oophoroma oophoromalacia oophoromania oophoron oophoropexy oophororrhaphy oophorosalpingectomy oophorostomy oophorotomy oophyte oophytic ooplasm ooplasmic ooplast oopod oopodal ooporphyrin oorali oord ooscope ooscopy oosperm oosphere oosporange oosporangium oospore Oosporeae oosporic oosporiferous oosporous oostegite oostegitic ootheca oothecal ootid ootocoid Ootocoidea ootocoidean ootocous ootype ooze oozily ooziness oozooid oozy opacate opacification opacifier opacify opacite opacity opacous opacousness opah opal opaled opalesce opalescence opalescent opalesque Opalina opaline opalinid Opalinidae opalinine opalish opalize opaloid opaque opaquely opaqueness Opata opdalite ope Opegrapha opeidoscope opelet open openable openband openbeak openbill opencast opener openhanded openhandedly openhandedness openhead openhearted openheartedly openheartedness opening openly openmouthed openmouthedly openmouthedness openness openside openwork opera operability operabily operable operae operagoer operalogue operameter operance operancy operand operant operatable operate operatee operatic operatical operatically operating operation operational operationalism operationalist operationism operationist operative operatively operativeness operativity operatize operator operatory operatrix opercle opercled opercula opercular Operculata operculate operculated operculiferous operculiform operculigenous operculigerous operculum operetta operette operettist operose operosely operoseness operosity Ophelia ophelimity Ophian ophiasis ophic ophicalcite Ophicephalidae ophicephaloid Ophicephalus Ophichthyidae ophichthyoid ophicleide ophicleidean ophicleidist Ophidia ophidian Ophidiidae Ophidiobatrachia ophidioid Ophidion ophidiophobia ophidious ophidologist ophidology Ophiobatrachia Ophiobolus Ophioglossaceae ophioglossaceous Ophioglossales Ophioglossum ophiography ophioid ophiolater ophiolatrous ophiolatry ophiolite ophiolitic ophiologic ophiological ophiologist ophiology ophiomancy ophiomorph Ophiomorpha ophiomorphic ophiomorphous Ophion ophionid Ophioninae ophionine ophiophagous ophiophilism ophiophilist ophiophobe ophiophobia ophiophoby ophiopluteus Ophiosaurus ophiostaphyle ophiouride Ophis Ophisaurus Ophism Ophite ophite Ophitic ophitic Ophitism Ophiuchid Ophiuchus ophiuran ophiurid Ophiurida ophiuroid Ophiuroidea ophiuroidean ophryon Ophrys ophthalaiater ophthalmagra ophthalmalgia ophthalmalgic ophthalmatrophia ophthalmectomy ophthalmencephalon ophthalmetrical ophthalmia ophthalmiac ophthalmiatrics ophthalmic ophthalmious ophthalmist ophthalmite ophthalmitic ophthalmitis ophthalmoblennorrhea ophthalmocarcinoma ophthalmocele ophthalmocopia ophthalmodiagnosis ophthalmodiastimeter ophthalmodynamometer ophthalmodynia ophthalmography ophthalmoleucoscope ophthalmolith ophthalmologic ophthalmological ophthalmologist ophthalmology ophthalmomalacia ophthalmometer ophthalmometric ophthalmometry ophthalmomycosis ophthalmomyositis ophthalmomyotomy ophthalmoneuritis ophthalmopathy ophthalmophlebotomy ophthalmophore ophthalmophorous ophthalmophthisis ophthalmoplasty ophthalmoplegia ophthalmoplegic ophthalmopod ophthalmoptosis ophthalmorrhagia ophthalmorrhea ophthalmorrhexis Ophthalmosaurus ophthalmoscope ophthalmoscopic ophthalmoscopical ophthalmoscopist ophthalmoscopy ophthalmostasis ophthalmostat ophthalmostatometer ophthalmothermometer ophthalmotomy ophthalmotonometer ophthalmotonometry ophthalmotrope ophthalmotropometer ophthalmy opianic opianyl opiate opiateproof opiatic Opiconsivia opificer opiism Opilia Opiliaceae opiliaceous Opiliones Opilionina opilionine Opilonea Opimian opinability opinable opinably opinant opination opinative opinatively opinator opine opiner opiniaster opiniastre opiniastrety opiniastrous opiniater opiniative opiniatively opiniativeness opiniatreness opiniatrety opinion opinionable opinionaire opinional opinionate opinionated opinionatedly opinionatedness opinionately opinionative opinionatively opinionativeness opinioned opinionedness opinionist opiomania opiomaniac opiophagism opiophagy opiparous opisometer opisthenar opisthion opisthobranch Opisthobranchia opisthobranchiate Opisthocoelia opisthocoelian opisthocoelous opisthocome Opisthocomi Opisthocomidae opisthocomine opisthocomous opisthodetic opisthodome opisthodomos opisthodomus opisthodont opisthogastric Opisthoglossa opisthoglossal opisthoglossate opisthoglyph Opisthoglypha opisthoglyphic opisthoglyphous Opisthognathidae opisthognathism opisthognathous opisthograph opisthographal opisthographic opisthographical opisthography opisthogyrate opisthogyrous Opisthoparia opisthoparian opisthophagic opisthoporeia opisthorchiasis Opisthorchis opisthosomal Opisthothelae opisthotic opisthotonic opisthotonoid opisthotonos opisthotonus opium opiumism opobalsam opodeldoc opodidymus opodymus opopanax Oporto opossum opotherapy Oppian oppidan oppilate oppilation oppilative opponency opponent opportune opportuneless opportunely opportuneness opportunism opportunist opportunistic opportunistically opportunity opposability opposable oppose opposed opposeless opposer opposing opposingly opposit opposite oppositely oppositeness oppositiflorous oppositifolious opposition oppositional oppositionary oppositionism oppositionist oppositionless oppositious oppositipetalous oppositipinnate oppositipolar oppositisepalous oppositive oppositively oppositiveness opposure oppress oppressed oppressible oppression oppressionist oppressive oppressively oppressiveness oppressor opprobriate opprobrious opprobriously opprobriousness opprobrium opprobry oppugn oppugnacy oppugnance oppugnancy oppugnant oppugnate oppugnation oppugner opsigamy opsimath opsimathy opsiometer opsisform opsistype opsonic opsoniferous opsonification opsonify opsonin opsonist opsonium opsonization opsonize opsonogen opsonoid opsonology opsonometry opsonophilia opsonophilic opsonophoric opsonotherapy opsy opt optable optableness optably optant optate optation optative optatively opthalmophorium opthalmoplegy opthalmothermometer optic optical optically optician opticist opticity opticochemical opticociliary opticon opticopapillary opticopupillary optics optigraph optimacy optimal optimate optimates optime optimism optimist optimistic optimistical optimistically optimity optimization optimize optimum option optional optionality optionalize optionally optionary optionee optionor optive optoblast optogram optography optological optologist optology optomeninx optometer optometrical optometrist optometry optophone optotechnics optotype Opulaster opulence opulency opulent opulently opulus Opuntia Opuntiaceae Opuntiales opuntioid opus opuscular opuscule opusculum oquassa or ora orabassu orach oracle oracular oracularity oracularly oracularness oraculate oraculous oraculously oraculousness oraculum orad orage oragious Orakzai oral oraler oralism oralist orality oralization oralize orally oralogist oralogy Orang orang orange orangeade orangebird Orangeism Orangeist orangeleaf Orangeman orangeman oranger orangeroot orangery orangewoman orangewood orangey orangism orangist orangite orangize orangutan orant Oraon orarian orarion orarium orary orate oration orational orationer orator oratorial oratorially Oratorian oratorian Oratorianism Oratorianize oratoric oratorical oratorically oratorio oratorize oratorlike oratorship oratory oratress oratrix orb orbed orbic orbical Orbicella orbicle orbicular orbicularis orbicularity orbicularly orbicularness orbiculate orbiculated orbiculately orbiculation orbiculatocordate orbiculatoelliptical Orbiculoidea orbific Orbilian Orbilius orbit orbital orbitale orbitar orbitary orbite orbitelar Orbitelariae orbitelarian orbitele orbitelous orbitofrontal Orbitoides Orbitolina orbitolite Orbitolites orbitomalar orbitomaxillary orbitonasal orbitopalpebral orbitosphenoid orbitosphenoidal orbitostat orbitotomy orbitozygomatic orbless orblet Orbulina orby orc Orca Orcadian orcanet orcein orchamus orchard orcharding orchardist orchardman orchat orchel orchella orchesis orchesography orchester Orchestia orchestian orchestic orchestiid Orchestiidae orchestra orchestral orchestraless orchestrally orchestrate orchestrater orchestration orchestrator orchestre orchestric orchestrina orchestrion orchialgia orchic orchichorea orchid Orchidaceae orchidacean orchidaceous Orchidales orchidalgia orchidectomy orchideous orchideously orchidist orchiditis orchidocele orchidocelioplasty orchidologist orchidology orchidomania orchidopexy orchidoplasty orchidoptosis orchidorrhaphy orchidotherapy orchidotomy orchiectomy orchiencephaloma orchiepididymitis orchil orchilla orchilytic orchiocatabasis orchiocele orchiodynia orchiomyeloma orchioncus orchioneuralgia orchiopexy orchioplasty orchiorrhaphy orchioscheocele orchioscirrhus orchiotomy Orchis orchitic orchitis orchotomy orcin orcinol Orcinus ordain ordainable ordainer ordainment ordanchite ordeal order orderable ordered orderedness orderer orderless orderliness orderly ordinable ordinal ordinally ordinance ordinand ordinant ordinar ordinarily ordinariness ordinarius ordinary ordinaryship ordinate ordinately ordination ordinative ordinatomaculate ordinator ordinee ordines ordnance ordonnance ordonnant ordosite Ordovian Ordovices Ordovician ordu ordure ordurous ore oread Oreamnos Oreas orecchion orectic orective oreillet orellin oreman orenda orendite Oreocarya Oreodon oreodont Oreodontidae oreodontine oreodontoid Oreodoxa Oreophasinae oreophasine Oreophasis Oreortyx oreotragine Oreotragus Oreotrochilus Orestean Oresteia oreweed orewood orexis orf orfgild organ organal organbird organdy organella organelle organer organette organic organical organically organicalness organicism organicismal organicist organicistic organicity organific organing organism organismal organismic organist organistic organistrum organistship organity organizability organizable organization organizational organizationally organizationist organizatory organize organized organizer organless organoantimony organoarsenic organobismuth organoboron organochordium organogel organogen organogenesis organogenetic organogenic organogenist organogeny organogold organographic organographical organographist organography organoid organoiron organolead organoleptic organolithium organologic organological organologist organology organomagnesium organomercury organometallic organon organonomic organonomy organonym organonymal organonymic organonymy organopathy organophil organophile organophilic organophone organophonic organophyly organoplastic organoscopy organosilicon organosilver organosodium organosol organotherapy organotin organotrophic organotropic organotropically organotropism organotropy organozinc organry organule organum organzine orgasm orgasmic orgastic orgeat orgia orgiac orgiacs orgiasm orgiast orgiastic orgiastical orgic orgue orguinette orgulous orgulously orgy orgyia Orias Oribatidae oribi orichalceous orichalch orichalcum oriconic oricycle oriel oriency orient Oriental oriental Orientalia orientalism orientalist orientality orientalization orientalize orientally Orientalogy orientate orientation orientative orientator orientite orientization orientize oriently orientness orifacial orifice orificial oriflamb oriflamme oriform origan origanized Origanum Origenian Origenic Origenical Origenism Origenist Origenistic Origenize origin originable original originalist originality originally originalness originant originarily originary originate origination originative originatively originator originatress originist orignal orihon orihyperbola orillion orillon orinasal orinasality oriole Oriolidae Oriolus Orion Oriskanian orismologic orismological orismology orison orisphere oristic Oriya Orkhon Orkneyan Orlando orle orlean Orleanism Orleanist Orleanistic Orleans orlet orleways orlewise orlo orlop Ormazd ormer ormolu Ormond orna ornament ornamental ornamentalism ornamentalist ornamentality ornamentalize ornamentally ornamentary ornamentation ornamenter ornamentist ornate ornately ornateness ornation ornature orneriness ornery ornis orniscopic orniscopist orniscopy ornithic ornithichnite ornithine Ornithischia ornithischian ornithivorous ornithobiographical ornithobiography ornithocephalic Ornithocephalidae ornithocephalous Ornithocephalus ornithocoprolite ornithocopros ornithodelph Ornithodelphia ornithodelphian ornithodelphic ornithodelphous Ornithodoros Ornithogaea Ornithogaean Ornithogalum ornithogeographic ornithogeographical ornithography ornithoid Ornitholestes ornitholite ornitholitic ornithologic ornithological ornithologically ornithologist ornithology ornithomancy ornithomantia ornithomantic ornithomantist Ornithomimidae Ornithomimus ornithomorph ornithomorphic ornithomyzous ornithon Ornithopappi ornithophile ornithophilist ornithophilite ornithophilous ornithophily ornithopod Ornithopoda ornithopter Ornithoptera Ornithopteris Ornithorhynchidae ornithorhynchous Ornithorhynchus ornithosaur Ornithosauria ornithosaurian Ornithoscelida ornithoscelidan ornithoscopic ornithoscopist ornithoscopy ornithosis ornithotomical ornithotomist ornithotomy ornithotrophy Ornithurae ornithuric ornithurous ornoite oroanal Orobanchaceae orobanchaceous Orobanche orobancheous orobathymetric Orobatoidea Orochon orocratic orodiagnosis orogen orogenesis orogenesy orogenetic orogenic orogeny orograph orographic orographical orographically orography oroheliograph Orohippus orohydrographic orohydrographical orohydrography oroide orolingual orological orologist orology orometer orometric orometry Oromo oronasal oronoco Orontium oropharyngeal oropharynx orotherapy Orotinan orotund orotundity orphan orphancy orphandom orphange orphanhood orphanism orphanize orphanry orphanship orpharion Orphean Orpheist orpheon orpheonist orpheum Orpheus Orphic Orphical Orphically Orphicism Orphism Orphize orphrey orphreyed orpiment orpine Orpington orrery orrhoid orrhology orrhotherapy orris orrisroot orseille orseilline orsel orselle orseller orsellic orsellinate orsellinic Orson ort ortalid Ortalidae ortalidian Ortalis ortet Orthagoriscus orthal orthantimonic Ortheris orthian orthic orthicon orthid Orthidae Orthis orthite orthitic ortho orthoarsenite orthoaxis orthobenzoquinone orthobiosis orthoborate orthobrachycephalic orthocarbonic orthocarpous Orthocarpus orthocenter orthocentric orthocephalic orthocephalous orthocephaly orthoceracone Orthoceran Orthoceras Orthoceratidae orthoceratite orthoceratitic orthoceratoid orthochlorite orthochromatic orthochromatize orthoclase orthoclasite orthoclastic orthocoumaric orthocresol orthocymene orthodiaene orthodiagonal orthodiagram orthodiagraph orthodiagraphic orthodiagraphy orthodiazin orthodiazine orthodolichocephalic orthodomatic orthodome orthodontia orthodontic orthodontics orthodontist orthodox orthodoxal orthodoxality orthodoxally orthodoxian orthodoxical orthodoxically orthodoxism orthodoxist orthodoxly orthodoxness orthodoxy orthodromic orthodromics orthodromy orthoepic orthoepical orthoepically orthoepist orthoepistic orthoepy orthoformic orthogamous orthogamy orthogenesis orthogenetic orthogenic orthognathic orthognathism orthognathous orthognathus orthognathy orthogneiss orthogonal orthogonality orthogonally orthogonial orthograde orthogranite orthograph orthographer orthographic orthographical orthographically orthographist orthographize orthography orthohydrogen orthologer orthologian orthological orthology orthometopic orthometric orthometry Orthonectida orthonitroaniline orthopath orthopathic orthopathically orthopathy orthopedia orthopedic orthopedical orthopedically orthopedics orthopedist orthopedy orthophenylene orthophonic orthophony orthophoria orthophoric orthophosphate orthophosphoric orthophyre orthophyric orthopinacoid orthopinacoidal orthoplastic orthoplasy orthoplumbate orthopnea orthopneic orthopod Orthopoda orthopraxis orthopraxy orthoprism orthopsychiatric orthopsychiatrical orthopsychiatrist orthopsychiatry orthopter Orthoptera orthopteral orthopteran orthopterist orthopteroid Orthopteroidea orthopterological orthopterologist orthopterology orthopteron orthopterous orthoptic orthopyramid orthopyroxene orthoquinone orthorhombic Orthorrhapha orthorrhaphous orthorrhaphy orthoscope orthoscopic orthose orthosemidin orthosemidine orthosilicate orthosilicic orthosis orthosite orthosomatic orthospermous orthostatic orthostichous orthostichy orthostyle orthosubstituted orthosymmetric orthosymmetrical orthosymmetrically orthosymmetry orthotactic orthotectic orthotic orthotolidin orthotolidine orthotoluic orthotoluidin orthotoluidine orthotomic orthotomous orthotone orthotonesis orthotonic orthotonus orthotropal orthotropic orthotropism orthotropous orthotropy orthotype orthotypous orthovanadate orthovanadic orthoveratraldehyde orthoveratric orthoxazin orthoxazine orthoxylene orthron ortiga ortive Ortol ortolan Ortrud ortstein ortygan Ortygian Ortyginae ortygine Ortyx Orunchun orvietan orvietite Orvieto ory Orycteropodidae Orycteropus oryctics oryctognostic oryctognostical oryctognostically oryctognosy Oryctolagus oryssid Oryssidae Oryssus Oryx Oryza oryzenin oryzivorous Oryzomys Oryzopsis Oryzorictes Oryzorictinae Os os Osage osamin osamine osazone Osc Oscan Oscar Oscarella Oscarellidae oscella oscheal oscheitis oscheocarcinoma oscheocele oscheolith oscheoma oscheoncus oscheoplasty Oschophoria oscillance oscillancy oscillant Oscillaria Oscillariaceae oscillariaceous oscillate oscillating oscillation oscillative oscillatively oscillator Oscillatoria Oscillatoriaceae oscillatoriaceous oscillatorian oscillatory oscillogram oscillograph oscillographic oscillography oscillometer oscillometric oscillometry oscilloscope oscin oscine Oscines oscinian Oscinidae oscinine Oscinis oscitance oscitancy oscitant oscitantly oscitate oscitation oscnode osculable osculant oscular oscularity osculate osculation osculatory osculatrix oscule osculiferous osculum oscurrantist ose osela oshac Osiandrian oside osier osiered osierlike osiery Osirian Osiride Osiridean Osirification Osirify Osiris Osirism Osmanie Osmanli Osmanthus osmate osmatic osmatism osmazomatic osmazomatous osmazome Osmeridae Osmerus osmesis osmeterium osmetic osmic osmidrosis osmin osmina osmious osmiridium osmium osmodysphoria osmogene osmograph osmolagnia osmology osmometer osmometric osmometry Osmond osmondite osmophore osmoregulation Osmorhiza osmoscope osmose osmosis osmotactic osmotaxis osmotherapy osmotic osmotically osmous osmund Osmunda Osmundaceae osmundaceous osmundine Osnaburg Osnappar osoberry osone osophy osotriazine osotriazole osphradial osphradium osphresiolagnia osphresiologic osphresiologist osphresiology osphresiometer osphresiometry osphresiophilia osphresis osphretic Osphromenidae osphyalgia osphyalgic osphyarthritis osphyitis osphyocele osphyomelitis osprey ossal ossarium ossature osse ossein osselet ossements osseoalbuminoid osseoaponeurotic osseocartilaginous osseofibrous osseomucoid osseous osseously Osset Ossetian Ossetic Ossetine Ossetish Ossian Ossianesque Ossianic Ossianism Ossianize ossicle ossicular ossiculate ossicule ossiculectomy ossiculotomy ossiculum ossiferous ossific ossification ossified ossifier ossifluence ossifluent ossiform ossifrage ossifrangent ossify ossivorous ossuarium ossuary ossypite ostalgia Ostara ostariophysan Ostariophyseae Ostariophysi ostariophysial ostariophysous ostarthritis osteal ostealgia osteanabrosis osteanagenesis ostearthritis ostearthrotomy ostectomy osteectomy osteectopia osteectopy Osteichthyes ostein osteitic osteitis ostemia ostempyesis ostensibility ostensible ostensibly ostension ostensive ostensively ostensorium ostensory ostent ostentate ostentation ostentatious ostentatiously ostentatiousness ostentive ostentous osteoaneurysm osteoarthritis osteoarthropathy osteoarthrotomy osteoblast osteoblastic osteoblastoma osteocachetic osteocarcinoma osteocartilaginous osteocele osteocephaloma osteochondritis osteochondrofibroma osteochondroma osteochondromatous osteochondropathy osteochondrophyte osteochondrosarcoma osteochondrous osteoclasia osteoclasis osteoclast osteoclastic osteoclasty osteocolla osteocomma osteocranium osteocystoma osteodentin osteodentinal osteodentine osteoderm osteodermal osteodermatous osteodermia osteodermis osteodiastasis osteodynia osteodystrophy osteoencephaloma osteoenchondroma osteoepiphysis osteofibroma osteofibrous osteogangrene osteogen osteogenesis osteogenetic osteogenic osteogenist osteogenous osteogeny osteoglossid Osteoglossidae osteoglossoid Osteoglossum osteographer osteography osteohalisteresis osteoid Osteolepidae Osteolepis osteolite osteologer osteologic osteological osteologically osteologist osteology osteolysis osteolytic osteoma osteomalacia osteomalacial osteomalacic osteomancy osteomanty osteomatoid osteomere osteometric osteometrical osteometry osteomyelitis osteoncus osteonecrosis osteoneuralgia osteopaedion osteopath osteopathic osteopathically osteopathist osteopathy osteopedion osteoperiosteal osteoperiostitis osteopetrosis osteophage osteophagia osteophlebitis osteophone osteophony osteophore osteophyma osteophyte osteophytic osteoplaque osteoplast osteoplastic osteoplasty osteoporosis osteoporotic osteorrhaphy osteosarcoma osteosarcomatous osteosclerosis osteoscope osteosis osteosteatoma osteostixis osteostomatous osteostomous osteostracan Osteostraci osteosuture osteosynovitis osteosynthesis osteothrombosis osteotome osteotomist osteotomy osteotribe osteotrite osteotrophic osteotrophy Ostertagia ostial ostiary ostiate Ostic ostiolar ostiolate ostiole ostitis ostium ostleress Ostmannic ostmark Ostmen ostosis Ostracea ostracean ostraceous Ostraciidae ostracine ostracioid Ostracion ostracism ostracizable ostracization ostracize ostracizer ostracod Ostracoda ostracode ostracoderm Ostracodermi ostracodous ostracoid Ostracoidea ostracon ostracophore Ostracophori ostracophorous ostracum Ostraeacea ostraite Ostrea ostreaceous ostreger ostreicultural ostreiculture ostreiculturist Ostreidae ostreiform ostreodynamometer ostreoid ostreophage ostreophagist ostreophagous ostrich ostrichlike Ostrogoth Ostrogothian Ostrogothic Ostrya Ostyak Oswald Oswegan otacoustic otacousticon Otaheitan otalgia otalgic otalgy Otaria otarian Otariidae Otariinae otariine otarine otarioid otary otate otectomy otelcosis Otello Othake othelcosis Othello othematoma othemorrhea otheoscope other otherdom otherest othergates otherguess otherhow otherism otherist otherness othersome othertime otherwards otherwhence otherwhere otherwhereness otherwheres otherwhile otherwhiles otherwhither otherwise otherwiseness otherworld otherworldliness otherworldly otherworldness Othin Othinism othmany Othonna othygroma otiant otiatric otiatrics otiatry otic oticodinia Otidae Otides Otididae otidiform otidine Otidiphaps otidium otiorhynchid Otiorhynchidae Otiorhynchinae otiose otiosely otioseness otiosity Otis otitic otitis otkon Oto otoantritis otoblennorrhea otocariasis otocephalic otocephaly otocerebritis otocleisis otoconial otoconite otoconium otocrane otocranial otocranic otocranium Otocyon otocyst otocystic otodynia otodynic otoencephalitis otogenic otogenous otographical otography Otogyps otohemineurasthenia otolaryngologic otolaryngologist otolaryngology otolite otolith Otolithidae Otolithus otolitic otological otologist otology Otomaco otomassage Otomi Otomian Otomitlan otomucormycosis otomyces otomycosis otonecrectomy otoneuralgia otoneurasthenia otopathic otopathy otopharyngeal otophone otopiesis otoplastic otoplasty otopolypus otopyorrhea otopyosis otorhinolaryngologic otorhinolaryngologist otorhinolaryngology otorrhagia otorrhea otorrhoea otosalpinx otosclerosis otoscope otoscopic otoscopy otosis otosphenal otosteal otosteon ototomy Otozoum ottajanite ottar ottavarima Ottawa otter otterer otterhound ottinger ottingkar Otto otto Ottoman Ottomanean Ottomanic Ottomanism Ottomanization Ottomanize Ottomanlike Ottomite ottrelife Ottweilian Otuquian oturia Otus Otyak ouabain ouabaio ouabe ouachitite ouakari ouananiche oubliette ouch Oudemian oudenarde Oudenodon oudenodont ouenite ouf ough ought oughtness oughtnt Ouija ouistiti oukia oulap ounce ounds ouphe ouphish our Ouranos ourie ouroub Ourouparia ours ourself ourselves oust ouster out outact outadmiral Outagami outage outambush outarde outargue outask outawe outbabble outback outbacker outbake outbalance outban outbanter outbar outbargain outbark outbawl outbeam outbear outbearing outbeg outbeggar outbelch outbellow outbent outbetter outbid outbidder outbirth outblacken outblaze outbleat outbleed outbless outbloom outblossom outblot outblow outblowing outblown outbluff outblunder outblush outbluster outboard outboast outbolting outbond outbook outborn outborough outbound outboundaries outbounds outbow outbowed outbowl outbox outbrag outbranch outbranching outbrave outbray outbrazen outbreak outbreaker outbreaking outbreath outbreathe outbreather outbred outbreed outbreeding outbribe outbridge outbring outbrother outbud outbuild outbuilding outbulge outbulk outbully outburn outburst outbustle outbuy outbuzz outby outcant outcaper outcarol outcarry outcase outcast outcaste outcasting outcastness outcavil outchamber outcharm outchase outchatter outcheat outchide outcity outclamor outclass outclerk outclimb outcome outcomer outcoming outcompass outcomplete outcompliment outcorner outcountry outcourt outcrawl outcricket outcrier outcrop outcropper outcross outcrossing outcrow outcrowd outcry outcull outcure outcurse outcurve outcut outdaciousness outdance outdare outdate outdated outdazzle outdevil outdispatch outdistance outdistrict outdo outdodge outdoer outdoor outdoorness outdoors outdoorsman outdraft outdragon outdraw outdream outdress outdrink outdrive outdure outdwell outdweller outdwelling outeat outecho outed outedge outen outer outerly outermost outerness outerwear outeye outeyed outfable outface outfall outfame outfangthief outfast outfawn outfeast outfeat outfeeding outfence outferret outfiction outfield outfielder outfieldsman outfight outfighter outfighting outfigure outfish outfit outfitter outflame outflank outflanker outflanking outflare outflash outflatter outfling outfloat outflourish outflow outflue outflung outflunky outflush outflux outfly outfold outfool outfoot outform outfort outfreeman outfront outfroth outfrown outgabble outgain outgallop outgamble outgame outgang outgarment outgarth outgas outgate outgauge outgaze outgeneral outgive outgiving outglad outglare outgleam outglitter outgloom outglow outgnaw outgo outgoer outgoing outgoingness outgone outgreen outgrin outground outgrow outgrowing outgrowth outguard outguess outgun outgush outhammer outhasten outhaul outhauler outhear outheart outhector outheel outher outhire outhiss outhit outhold outhorror outhouse outhousing outhowl outhue outhumor outhunt outhurl outhut outhymn outhyperbolize outimage outing outinvent outish outissue outjazz outjest outjet outjetting outjinx outjockey outjourney outjuggle outjump outjut outkeeper outkick outkill outking outkiss outkitchen outknave outknee outlabor outlaid outlance outland outlander outlandish outlandishlike outlandishly outlandishness outlash outlast outlaugh outlaunch outlaw outlawry outlay outlean outleap outlearn outlegend outlength outlengthen outler outlet outlie outlier outlighten outlimb outlimn outline outlinear outlined outlineless outliner outlinger outlip outlipped outlive outliver outlodging outlook outlooker outlord outlove outlung outluster outly outlying outmagic outmalaprop outman outmaneuver outmantle outmarch outmarriage outmarry outmaster outmatch outmate outmeasure outmerchant outmiracle outmode outmoded outmost outmount outmouth outmove outname outness outnight outnoise outnook outnumber outoffice outoven outpace outpage outpaint outparagon outparamour outparish outpart outpass outpassion outpath outpatient outpay outpayment outpeal outpeep outpeer outpension outpensioner outpeople outperform outpick outpicket outpipe outpitch outpity outplace outplan outplay outplayed outplease outplod outplot outpocketing outpoint outpoise outpoison outpoll outpomp outpop outpopulate outporch outport outporter outportion outpost outpouching outpour outpourer outpouring outpractice outpraise outpray outpreach outpreen outprice outprodigy outproduce outpromise outpry outpull outpupil outpurl outpurse outpush output outputter outquaff outquarters outqueen outquestion outquibble outquote outrace outrage outrageous outrageously outrageousness outrageproof outrager outraging outrail outrance outrange outrank outrant outrap outrate outraught outrave outray outre outreach outread outreason outreckon outredden outrede outreign outrelief outremer outreness outrhyme outrick outride outrider outriding outrig outrigger outriggered outriggerless outrigging outright outrightly outrightness outring outrival outroar outrogue outroll outromance outrooper outroot outrove outrow outroyal outrun outrunner outrush outsail outsaint outsally outsatisfy outsavor outsay outscent outscold outscore outscorn outscour outscouring outscream outsea outseam outsearch outsee outseek outsell outsentry outsert outservant outset outsetting outsettlement outsettler outshadow outshake outshame outshape outsharp outsharpen outsheathe outshift outshine outshiner outshoot outshot outshoulder outshout outshove outshow outshower outshriek outshrill outshut outside outsided outsidedness outsideness outsider outsift outsigh outsight outsin outsing outsit outsize outsized outskill outskip outskirmish outskirmisher outskirt outskirter outslander outslang outsleep outslide outslink outsmart outsmell outsmile outsnatch outsnore outsoar outsole outsoler outsonnet outsophisticate outsound outspan outsparkle outspeak outspeaker outspeech outspeed outspell outspend outspent outspill outspin outspirit outspit outsplendor outspoken outspokenly outspokenness outsport outspout outspread outspring outsprint outspue outspurn outspurt outstagger outstair outstand outstander outstanding outstandingly outstandingness outstare outstart outstarter outstartle outstate outstation outstatistic outstature outstay outsteal outsteam outstep outsting outstink outstood outstorm outstrain outstream outstreet outstretch outstretcher outstride outstrike outstrip outstrive outstroke outstrut outstudent outstudy outstunt outsubtle outsuck outsucken outsuffer outsuitor outsulk outsum outsuperstition outswagger outswarm outswear outsweep outsweeping outsweeten outswell outswift outswim outswindle outswing outswirl outtaken outtalent outtalk outtask outtaste outtear outtease outtell outthieve outthink outthreaten outthrob outthrough outthrow outthrust outthruster outthunder outthwack outtinkle outtire outtoil outtongue outtop outtower outtrade outtrail outtravel outtrick outtrot outtrump outturn outturned outtyrannize outusure outvalue outvanish outvaunt outvelvet outvenom outvictor outvie outvier outvigil outvillage outvillain outvociferate outvoice outvote outvoter outvoyage outwait outwake outwale outwalk outwall outwallop outwander outwar outwarble outward outwardly outwardmost outwardness outwards outwash outwaste outwatch outwater outwave outwealth outweapon outwear outweary outweave outweed outweep outweigh outweight outwell outwent outwhirl outwick outwile outwill outwind outwindow outwing outwish outwit outwith outwittal outwitter outwoe outwoman outwood outword outwore outwork outworker outworld outworn outworth outwrangle outwrench outwrest outwrestle outwriggle outwring outwrite outwrought outyard outyell outyelp outyield outzany ouzel Ova ova Ovaherero oval ovalbumin ovalescent ovaliform ovalish ovalization ovalize ovally ovalness ovaloid ovalwise Ovambo Ovampo Ovangangela ovant ovarial ovarian ovarin ovarioabdominal ovariocele ovariocentesis ovariocyesis ovariodysneuria ovariohysterectomy ovariole ovariolumbar ovariorrhexis ovariosalpingectomy ovariosteresis ovariostomy ovariotomist ovariotomize ovariotomy ovariotubal ovarious ovaritis ovarium ovary ovate ovateconical ovated ovately ovation ovational ovationary ovatoacuminate ovatoconical ovatocordate ovatocylindraceous ovatodeltoid ovatoellipsoidal ovatoglobose ovatolanceolate ovatooblong ovatoorbicular ovatopyriform ovatoquadrangular ovatorotundate ovatoserrate ovatotriangular oven ovenbird ovenful ovenlike ovenly ovenman ovenpeel ovenstone ovenware ovenwise over overability overable overabound overabsorb overabstain overabstemious overabstemiousness overabundance overabundant overabundantly overabuse overaccentuate overaccumulate overaccumulation overaccuracy overaccurate overaccurately overact overaction overactive overactiveness overactivity overacute overaddiction overadvance overadvice overaffect overaffirmation overafflict overaffliction overage overageness overaggravate overaggravation overagitate overagonize overall overalled overalls overambitioned overambitious overambling overanalyze overangelic overannotate overanswer overanxiety overanxious overanxiously overappareled overappraisal overappraise overapprehended overapprehension overapprehensive overapt overarch overargue overarm overartificial overartificiality overassail overassert overassertion overassertive overassertively overassertiveness overassess overassessment overassumption overattached overattachment overattention overattentive overattentively overawe overawful overawn overawning overbake overbalance overballast overbalm overbanded overbandy overbank overbanked overbark overbarren overbarrenness overbase overbaseness overbashful overbashfully overbashfulness overbattle overbear overbearance overbearer overbearing overbearingly overbearingness overbeat overbeating overbeetling overbelief overbend overbepatched overberg overbet overbias overbid overbig overbigness overbillow overbit overbite overbitten overbitter overbitterly overbitterness overblack overblame overblaze overbleach overblessed overblessedness overblind overblindly overblithe overbloom overblouse overblow overblowing overblown overboard overboast overboastful overbodice overboding overbody overboil overbold overboldly overboldness overbook overbookish overbooming overborne overborrow overbought overbound overbounteous overbounteously overbounteousness overbow overbowed overbowl overbrace overbragging overbrained overbranch overbrave overbravely overbravery overbray overbreak overbreathe overbred overbreed overbribe overbridge overbright overbrightly overbrightness overbrilliancy overbrilliant overbrilliantly overbrim overbrimmingly overbroaden overbroil overbrood overbrow overbrown overbrowse overbrush overbrutal overbrutality overbrutalize overbrutally overbubbling overbuild overbuilt overbulk overbulky overbumptious overburden overburdeningly overburdensome overburn overburned overburningly overburnt overburst overburthen overbusily overbusiness overbusy overbuy overby overcall overcanny overcanopy overcap overcapable overcapably overcapacity overcape overcapitalization overcapitalize overcaptious overcaptiously overcaptiousness overcard overcare overcareful overcarefully overcareless overcarelessly overcarelessness overcaring overcarking overcarry overcast overcasting overcasual overcasually overcatch overcaution overcautious overcautiously overcautiousness overcentralization overcentralize overcertification overcertify overchafe overchannel overchant overcharge overchargement overcharger overcharitable overcharitably overcharity overchase overcheap overcheaply overcheapness overcheck overcherish overchidden overchief overchildish overchildishness overchill overchlorinate overchoke overchrome overchurch overcirculate overcircumspect overcircumspection overcivil overcivility overcivilization overcivilize overclaim overclamor overclasp overclean overcleanly overcleanness overcleave overclever overcleverness overclimb overcloak overclog overclose overclosely overcloseness overclothe overclothes overcloud overcloy overcluster overcoached overcoat overcoated overcoating overcoil overcold overcoldly overcollar overcolor overcomable overcome overcomer overcomingly overcommand overcommend overcommon overcommonly overcommonness overcompensate overcompensation overcompensatory overcompetition overcompetitive overcomplacency overcomplacent overcomplacently overcomplete overcomplex overcomplexity overcompliant overcompound overconcentrate overconcentration overconcern overconcerned overcondensation overcondense overconfidence overconfident overconfidently overconfute overconquer overconscientious overconscious overconsciously overconsciousness overconservatism overconservative overconservatively overconsiderate overconsiderately overconsideration overconsume overconsumption overcontented overcontentedly overcontentment overcontract overcontraction overcontribute overcontribution overcook overcool overcoolly overcopious overcopiously overcopiousness overcorned overcorrect overcorrection overcorrupt overcorruption overcorruptly overcostly overcount overcourteous overcourtesy overcover overcovetous overcovetousness overcow overcoy overcoyness overcram overcredit overcredulity overcredulous overcredulously overcreed overcreep overcritical overcritically overcriticalness overcriticism overcriticize overcrop overcross overcrow overcrowd overcrowded overcrowdedly overcrowdedness overcrown overcrust overcry overcull overcultivate overcultivation overculture overcultured overcumber overcunning overcunningly overcunningness overcup overcured overcurious overcuriously overcuriousness overcurl overcurrency overcurrent overcurtain overcustom overcut overcutter overcutting overdaintily overdaintiness overdainty overdamn overdance overdangle overdare overdaringly overdarken overdash overdazed overdazzle overdeal overdear overdearly overdearness overdeck overdecorate overdecoration overdecorative overdeeming overdeep overdeepen overdeeply overdeliberate overdeliberation overdelicacy overdelicate overdelicately overdelicious overdeliciously overdelighted overdelightedly overdemand overdemocracy overdepress overdepressive overdescant overdesire overdesirous overdesirousness overdestructive overdestructively overdestructiveness overdetermination overdetermined overdevelop overdevelopment overdevoted overdevotedly overdevotion overdiffuse overdiffusely overdiffuseness overdigest overdignified overdignifiedly overdignifiedness overdignify overdignity overdiligence overdiligent overdiligently overdilute overdilution overdischarge overdiscipline overdiscount overdiscourage overdiscouragement overdistance overdistant overdistantly overdistantness overdistempered overdistention overdiverse overdiversely overdiversification overdiversify overdiversity overdo overdoctrinize overdoer overdogmatic overdogmatically overdogmatism overdome overdominate overdone overdoor overdosage overdose overdoubt overdoze overdraft overdrain overdrainage overdramatic overdramatically overdrape overdrapery overdraw overdrawer overdream overdrench overdress overdrifted overdrink overdrip overdrive overdriven overdroop overdrowsed overdry overdubbed overdue overdunged overdure overdust overdye overeager overeagerly overeagerness overearnest overearnestly overearnestness overeasily overeasiness overeasy overeat overeaten overedge overedit overeducate overeducated overeducation overeducative overeffort overegg overelaborate overelaborately overelaboration overelate overelegance overelegancy overelegant overelegantly overelliptical overembellish overembellishment overembroider overemotional overemotionality overemotionalize overemphasis overemphasize overemphatic overemphatically overemphaticness overempired overemptiness overempty overenter overenthusiasm overenthusiastic overentreat overentry overequal overestimate overestimation overexcelling overexcitability overexcitable overexcitably overexcite overexcitement overexercise overexert overexerted overexertedly overexertedness overexertion overexpand overexpansion overexpansive overexpect overexpectant overexpectantly overexpenditure overexpert overexplain overexplanation overexpose overexposure overexpress overexquisite overexquisitely overextend overextension overextensive overextreme overexuberant overeye overeyebrowed overface overfacile overfacilely overfacility overfactious overfactiousness overfag overfagged overfaint overfaith overfaithful overfaithfully overfall overfamed overfamiliar overfamiliarity overfamiliarly overfamous overfanciful overfancy overfar overfast overfastidious overfastidiously overfastidiousness overfasting overfat overfatigue overfatten overfavor overfavorable overfavorably overfear overfearful overfearfully overfearfulness overfeast overfeatured overfed overfee overfeed overfeel overfellowlike overfellowly overfelon overfeminine overfeminize overfertile overfertility overfestoon overfew overfierce overfierceness overfile overfill overfilm overfine overfinished overfish overfit overfix overflatten overfleece overfleshed overflexion overfling overfloat overflog overflood overflorid overfloridness overflourish overflow overflowable overflower overflowing overflowingly overflowingness overflown overfluency overfluent overfluently overflush overflutter overfly overfold overfond overfondle overfondly overfondness overfoolish overfoolishly overfoolishness overfoot overforce overforged overformed overforward overforwardly overforwardness overfought overfoul overfoully overfrail overfrailty overfranchised overfrank overfrankly overfrankness overfraught overfree overfreedom overfreely overfreight overfrequency overfrequent overfrequently overfret overfrieze overfrighted overfrighten overfroth overfrown overfrozen overfruited overfruitful overfull overfullness overfunctioning overfurnish overgaiter overgalled overgamble overgang overgarment overgarrison overgaze overgeneral overgeneralize overgenerally overgenerosity overgenerous overgenerously overgenial overgeniality overgentle overgently overget overgifted overgild overgilted overgird overgirded overgirdle overglad overgladly overglance overglass overglaze overglide overglint overgloom overgloominess overgloomy overglorious overgloss overglut overgo overgoad overgod overgodliness overgodly overgood overgorge overgovern overgovernment overgown overgrace overgracious overgrade overgrain overgrainer overgrasping overgrateful overgratefully overgratification overgratify overgratitude overgraze overgreasiness overgreasy overgreat overgreatly overgreatness overgreed overgreedily overgreediness overgreedy overgrieve overgrievous overgrind overgross overgrossly overgrossness overground overgrow overgrown overgrowth overguilty overgun overhair overhalf overhand overhanded overhandicap overhandle overhang overhappy overharass overhard overharden overhardness overhardy overharsh overharshly overharshness overhaste overhasten overhastily overhastiness overhasty overhate overhatted overhaughty overhaul overhauler overhead overheadiness overheadman overheady overheap overhear overhearer overheartily overhearty overheat overheatedly overheave overheaviness overheavy overheight overheighten overheinous overheld overhelp overhelpful overhigh overhighly overhill overhit overholiness overhollow overholy overhomeliness overhomely overhonest overhonestly overhonesty overhonor overhorse overhot overhotly overhour overhouse overhover overhuge overhuman overhumanity overhumanize overhung overhunt overhurl overhurriedly overhurry overhusk overhysterical overidealism overidealistic overidle overidly overillustrate overillustration overimaginative overimaginativeness overimitate overimitation overimitative overimitatively overimport overimportation overimpress overimpressible overinclinable overinclination overinclined overincrust overincurious overindividualism overindividualistic overindulge overindulgence overindulgent overindulgently overindustrialization overindustrialize overinflate overinflation overinflative overinfluence overinfluential overinform overink overinsist overinsistence overinsistent overinsistently overinsolence overinsolent overinsolently overinstruct overinstruction overinsurance overinsure overintellectual overintellectuality overintense overintensely overintensification overintensity overinterest overinterested overinterestedness overinventoried overinvest overinvestment overiodize overirrigate overirrigation overissue overitching overjacket overjade overjaded overjawed overjealous overjealously overjealousness overjob overjocular overjoy overjoyful overjoyfully overjoyous overjudge overjudging overjudgment overjudicious overjump overjust overjutting overkeen overkeenness overkeep overkick overkind overkindly overkindness overking overknavery overknee overknow overknowing overlabor overlace overlactation overlade overlaid overlain overland Overlander overlander overlanguaged overlap overlard overlarge overlargely overlargeness overlascivious overlast overlate overlaudation overlaudatory overlaugh overlaunch overlave overlavish overlavishly overlax overlaxative overlaxly overlaxness overlay overlayer overlead overleaf overlean overleap overlearn overlearned overlearnedly overlearnedness overleather overleave overleaven overleer overleg overlegislation overleisured overlength overlettered overlewd overlewdly overlewdness overliberal overliberality overliberally overlicentious overlick overlie overlier overlift overlight overlighted overlightheaded overlightly overlightsome overliking overline overling overlinger overlinked overlip overlipping overlisted overlisten overliterary overlittle overlive overliveliness overlively overliver overload overloath overlock overlocker overlofty overlogical overlogically overlong overlook overlooker overloose overlord overlordship overloud overloup overlove overlover overlow overlowness overloyal overloyally overloyalty overlubricatio overluscious overlush overlustiness overlusty overluxuriance overluxuriant overluxurious overly overlying overmagnify overmagnitude overmajority overmalapert overman overmantel overmantle overmany overmarch overmark overmarking overmarl overmask overmast overmaster overmasterful overmasterfully overmasterfulness overmastering overmasteringly overmatch overmatter overmature overmaturity overmean overmeanly overmeanness overmeasure overmeddle overmeek overmeekly overmeekness overmellow overmellowness overmelodied overmelt overmerciful overmercifulness overmerit overmerrily overmerry overmettled overmickle overmighty overmild overmill overminute overminutely overminuteness overmix overmoccasin overmodest overmodestly overmodesty overmodulation overmoist overmoisten overmoisture overmortgage overmoss overmost overmotor overmount overmounts overmourn overmournful overmournfully overmuch overmuchness overmultiplication overmultiply overmultitude overname overnarrow overnarrowly overnationalization overnear overneat overneatness overneglect overnegligence overnegligent overnervous overnervously overnervousness overnet overnew overnice overnicely overniceness overnicety overnigh overnight overnimble overnipping overnoise overnotable overnourish overnoveled overnumber overnumerous overnumerousness overnurse overobedience overobedient overobediently overobese overobjectify overoblige overobsequious overobsequiously overobsequiousness overoffend overoffensive overofficered overofficious overorder overornamented overpained overpainful overpainfully overpainfulness overpaint overpamper overpart overparted overpartial overpartiality overpartially overparticular overparticularly overpass overpassionate overpassionately overpassionateness overpast overpatient overpatriotic overpay overpayment overpeer overpending overpensive overpensiveness overpeople overpepper overperemptory overpersuade overpersuasion overpert overpessimism overpessimistic overpet overphysic overpick overpicture overpinching overpitch overpitched overpiteous overplace overplaced overplacement overplain overplant overplausible overplay overplease overplenitude overplenteous overplenteously overplentiful overplenty overplot overplow overplumb overplume overplump overplumpness overplus overply overpointed overpoise overpole overpolemical overpolish overpolitic overponderous overpopular overpopularity overpopularly overpopulate overpopulation overpopulous overpopulousness overpositive overpossess overpot overpotent overpotential overpour overpower overpowerful overpowering overpoweringly overpoweringness overpraise overpray overpreach overprecise overpreciseness overpreface overpregnant overpreoccupation overpreoccupy overpress overpressure overpresumption overpresumptuous overprice overprick overprint overprize overprizer overprocrastination overproduce overproduction overproductive overproficient overprolific overprolix overprominence overprominent overprominently overpromise overprompt overpromptly overpromptness overprone overproneness overpronounced overproof overproportion overproportionate overproportionated overproportionately overproportioned overprosperity overprosperous overprotect overprotract overprotraction overproud overproudly overprove overprovender overprovide overprovident overprovidently overprovision overprovocation overprovoke overprune overpublic overpublicity overpuff overpuissant overpunish overpunishment overpurchase overquantity overquarter overquell overquick overquickly overquiet overquietly overquietness overrace overrack overrake overrange overrank overrankness overrapture overrapturize overrash overrashly overrashness overrate overrational overrationalize overravish overreach overreacher overreaching overreachingly overreachingness overread overreader overreadily overreadiness overready overrealism overrealistic overreckon overrecord overrefine overrefined overrefinement overreflection overreflective overregister overregistration overregular overregularity overregularly overregulate overregulation overrelax overreliance overreliant overreligion overreligious overremiss overremissly overremissness overrennet overrent overreplete overrepletion overrepresent overrepresentation overrepresentative overreserved overresolute overresolutely overrestore overrestrain overretention overreward overrich overriches overrichness override overrife overrigged overright overrighteous overrighteously overrighteousness overrigid overrigidity overrigidly overrigorous overrigorously overrim overriot overripe overripely overripen overripeness overrise overroast overroll overroof overrooted overrough overroughly overroughness overroyal overrude overrudely overrudeness overruff overrule overruler overruling overrulingly overrun overrunner overrunning overrunningly overrush overrusset overrust oversad oversadly oversadness oversaid oversail oversale oversaliva oversalt oversalty oversand oversanded oversanguine oversanguinely oversapless oversated oversatisfy oversaturate oversaturation oversauce oversauciness oversaucy oversave overscare overscatter overscented oversceptical overscepticism overscore overscour overscratch overscrawl overscream overscribble overscrub overscruple overscrupulosity overscrupulous overscrupulously overscrupulousness overscurf overscutched oversea overseal overseam overseamer oversearch overseas overseason overseasoned overseated oversecure oversecurely oversecurity oversee overseed overseen overseer overseerism overseership overseethe oversell oversend oversensible oversensibly oversensitive oversensitively oversensitiveness oversententious oversentimental oversentimentalism oversentimentalize oversentimentally overserious overseriously overseriousness overservice overservile overservility overset oversetter oversettle oversettled oversevere overseverely overseverity oversew overshade overshadow overshadower overshadowing overshadowingly overshadowment overshake oversharp oversharpness overshave oversheet overshelving overshepherd overshine overshirt overshoe overshoot overshort overshorten overshortly overshot overshoulder overshowered overshrink overshroud oversick overside oversight oversilence oversilent oversilver oversimple oversimplicity oversimplification oversimplify oversimply oversize oversized overskim overskip overskipper overskirt overslack overslander overslaugh overslavish overslavishly oversleep oversleeve overslide overslight overslip overslope overslow overslowly overslowness overslur oversmall oversman oversmite oversmitten oversmoke oversmooth oversmoothly oversmoothness oversnow oversoak oversoar oversock oversoft oversoftly oversoftness oversold oversolemn oversolemnity oversolemnly oversolicitous oversolicitously oversolicitousness oversoon oversoothing oversophisticated oversophistication oversorrow oversorrowed oversot oversoul oversound oversour oversourly oversourness oversow overspacious overspaciousness overspan overspangled oversparing oversparingly oversparingness oversparred overspatter overspeak overspecialization overspecialize overspeculate overspeculation overspeculative overspeech overspeed overspeedily overspeedy overspend overspill overspin oversplash overspread overspring oversprinkle oversprung overspun oversqueak oversqueamish oversqueamishness overstaff overstaid overstain overstale overstalled overstand overstaring overstate overstately overstatement overstay overstayal oversteadfast oversteadfastness oversteady overstep overstiff overstiffness overstifle overstimulate overstimulation overstimulative overstir overstitch overstock overstoop overstoping overstore overstory overstout overstoutly overstowage overstowed overstrain overstrait overstraiten overstraitly overstraitness overstream overstrength overstress overstretch overstrew overstrict overstrictly overstrictness overstride overstrident overstridently overstrike overstring overstriving overstrong overstrongly overstrung overstud overstudied overstudious overstudiously overstudiousness overstudy overstuff oversublime oversubscribe oversubscriber oversubscription oversubtile oversubtle oversubtlety oversubtly oversufficiency oversufficient oversufficiently oversuperstitious oversupply oversure oversurety oversurge oversurviving oversusceptibility oversusceptible oversuspicious oversuspiciously overswarm overswarth oversway oversweated oversweep oversweet oversweeten oversweetly oversweetness overswell overswift overswim overswimmer overswing overswinging overswirling oversystematic oversystematically oversystematize overt overtakable overtake overtaker overtalk overtalkative overtalkativeness overtalker overtame overtamely overtameness overtapped overtare overtariff overtarry overtart overtask overtax overtaxation overteach overtechnical overtechnicality overtedious overtediously overteem overtell overtempt overtenacious overtender overtenderly overtenderness overtense overtensely overtenseness overtension overterrible overtest overthick overthin overthink overthought overthoughtful overthriftily overthriftiness overthrifty overthrong overthrow overthrowable overthrowal overthrower overthrust overthwart overthwartly overthwartness overthwartways overthwartwise overtide overtight overtightly overtill overtimbered overtime overtimer overtimorous overtimorously overtimorousness overtinseled overtint overtip overtipple overtire overtiredness overtitle overtly overtness overtoe overtoil overtoise overtone overtongued overtop overtopple overtorture overtower overtrace overtrack overtrade overtrader overtrailed overtrain overtrample overtravel overtread overtreatment overtrick overtrim overtrouble overtrue overtrump overtrust overtrustful overtruthful overtruthfully overtumble overture overturn overturnable overturner overtutor overtwine overtwist overtype overuberous overunionized overunsuitable overurbanization overurge overuse overusual overusually overvaliant overvaluable overvaluation overvalue overvariety overvault overvehemence overvehement overveil overventilate overventilation overventuresome overventurous overview overvoltage overvote overwade overwages overwake overwalk overwander overward overwash overwasted overwatch overwatcher overwater overwave overway overwealth overwealthy overweaponed overwear overweary overweather overweave overweb overween overweener overweening overweeningly overweeningness overweep overweigh overweight overweightage overwell overwelt overwet overwetness overwheel overwhelm overwhelmer overwhelming overwhelmingly overwhelmingness overwhipped overwhirl overwhisper overwide overwild overwilily overwilling overwillingly overwily overwin overwind overwing overwinter overwiped overwisdom overwise overwisely overwithered overwoman overwomanize overwomanly overwood overwooded overwoody overword overwork overworld overworn overworry overworship overwound overwove overwoven overwrap overwrest overwrested overwrestle overwrite overwroth overwrought overyear overyoung overyouthful overzeal overzealous overzealously overzealousness ovest ovey Ovibos Ovibovinae ovibovine ovicapsular ovicapsule ovicell ovicellular ovicidal ovicide ovicular oviculated oviculum ovicyst ovicystic Ovidae Ovidian oviducal oviduct oviductal oviferous ovification oviform ovigenesis ovigenetic ovigenic ovigenous ovigerm ovigerous ovile Ovillus Ovinae ovine ovinia ovipara oviparal oviparity oviparous oviparously oviparousness oviposit oviposition ovipositor Ovis ovisac oviscapt ovism ovispermary ovispermiduct ovist ovistic ovivorous ovocyte ovoelliptic ovoflavin ovogenesis ovogenetic ovogenous ovogonium ovoid ovoidal ovolemma ovolo ovological ovologist ovology ovolytic ovomucoid ovoplasm ovoplasmic ovopyriform ovorhomboid ovorhomboidal ovotesticular ovotestis ovovitellin Ovovivipara ovoviviparism ovoviviparity ovoviviparous ovoviviparously ovoviviparousness Ovula ovular ovularian ovulary ovulate ovulation ovule ovuliferous ovuligerous ovulist ovum ow owd owe owelty Owen Owenia Owenian Owenism Owenist Owenite Owenize ower owerance owerby owercome owergang owerloup owertaen owerword owght owing owk owl owldom owler owlery owlet Owlglass owlhead owling owlish owlishly owlishness owlism owllight owllike Owlspiegle owly own owner ownerless ownership ownhood ownness ownself ownwayish owregane owrehip owrelay owse owsen owser owtchah owyheeite ox oxacid oxadiazole oxalacetic oxalaldehyde oxalamid oxalamide oxalan oxalate oxaldehyde oxalemia oxalic Oxalidaceae oxalidaceous Oxalis oxalite oxalodiacetic oxalonitril oxalonitrile oxaluramid oxaluramide oxalurate oxaluria oxaluric oxalyl oxalylurea oxamate oxamethane oxamic oxamid oxamide oxamidine oxammite oxan oxanate oxane oxanic oxanilate oxanilic oxanilide oxazine oxazole oxbane oxberry oxbird oxbiter oxblood oxbow oxboy oxbrake oxcart oxcheek oxdiacetic oxdiazole oxea oxeate oxen oxeote oxer oxetone oxeye oxfly Oxford Oxfordian Oxfordism Oxfordist oxgang oxgoad oxharrow oxhead oxheal oxheart oxhide oxhoft oxhorn oxhouse oxhuvud oxidability oxidable oxidant oxidase oxidate oxidation oxidational oxidative oxidator oxide oxidic oxidimetric oxidimetry oxidizability oxidizable oxidization oxidize oxidizement oxidizer oxidizing oxidoreductase oxidoreduction oxidulated oximate oximation oxime oxland oxlike oxlip oxman oxmanship oxoindoline Oxonian oxonic oxonium Oxonolatry oxozone oxozonide oxpecker oxphony oxreim oxshoe oxskin oxtail oxter oxtongue oxwort oxy oxyacanthine oxyacanthous oxyacetylene oxyacid Oxyaena Oxyaenidae oxyaldehyde oxyamine oxyanthracene oxyanthraquinone oxyaphia oxyaster oxybaphon Oxybaphus oxybenzaldehyde oxybenzene oxybenzoic oxybenzyl oxyberberine oxyblepsia oxybromide oxybutyria oxybutyric oxycalcium oxycalorimeter oxycamphor oxycaproic oxycarbonate oxycellulose oxycephalic oxycephalism oxycephalous oxycephaly oxychlorate oxychloric oxychloride oxycholesterol oxychromatic oxychromatin oxychromatinic oxycinnamic oxycobaltammine Oxycoccus oxycopaivic oxycoumarin oxycrate oxycyanide oxydactyl Oxydendrum oxydiact oxyesthesia oxyether oxyethyl oxyfatty oxyfluoride oxygas oxygen oxygenant oxygenate oxygenation oxygenator oxygenerator oxygenic oxygenicity oxygenium oxygenizable oxygenize oxygenizement oxygenizer oxygenous oxygeusia oxygnathous oxyhalide oxyhaloid oxyhematin oxyhemocyanin oxyhemoglobin oxyhexactine oxyhexaster oxyhydrate oxyhydric oxyhydrogen oxyiodide oxyketone oxyl Oxylabracidae Oxylabrax oxyluciferin oxyluminescence oxyluminescent oxymandelic oxymel oxymethylene oxymoron oxymuriate oxymuriatic oxynaphthoic oxynaphtoquinone oxynarcotine oxyneurin oxyneurine oxynitrate oxyntic oxyophitic oxyopia Oxyopidae oxyosphresia oxypetalous oxyphenol oxyphenyl oxyphile oxyphilic oxyphilous oxyphonia oxyphosphate oxyphthalic oxyphyllous oxyphyte oxypicric Oxypolis oxyproline oxypropionic oxypurine oxypycnos oxyquinaseptol oxyquinoline oxyquinone oxyrhine oxyrhinous oxyrhynch oxyrhynchous oxyrhynchus Oxyrrhyncha oxyrrhynchid oxysalicylic oxysalt oxystearic Oxystomata oxystomatous oxystome oxysulphate oxysulphide oxyterpene oxytocia oxytocic oxytocin oxytocous oxytoluene oxytoluic oxytone oxytonesis oxytonical oxytonize Oxytricha Oxytropis oxytylotate oxytylote oxyuriasis oxyuricide Oxyuridae oxyurous oxywelding Oyana oyapock oyer oyster oysterage oysterbird oystered oysterer oysterfish oystergreen oysterhood oysterhouse oystering oysterish oysterishness oysterlike oysterling oysterman oysterous oysterroot oysterseed oystershell oysterwife oysterwoman Ozark ozarkite ozena Ozias ozobrome ozocerite ozokerit ozokerite ozonate ozonation ozonator ozone ozoned ozonic ozonide ozoniferous ozonification ozonify Ozonium ozonization ozonize ozonizer ozonometer ozonometry ozonoscope ozonoscopic ozonous ozophen ozophene ozostomia ozotype P p pa paal paar paauw Paba pabble pablo pabouch pabular pabulary pabulation pabulatory pabulous pabulum pac paca pacable Pacaguara pacate pacation pacative pacay pacaya Paccanarist Pacchionian Pace pace paceboard paced pacemaker pacemaking pacer pachak pachisi pachnolite pachometer Pachomian Pachons Pacht pachyacria pachyaemia pachyblepharon pachycarpous pachycephal pachycephalia pachycephalic pachycephalous pachycephaly pachychilia pachycholia pachychymia pachycladous pachydactyl pachydactylous pachydactyly pachyderm pachyderma pachydermal Pachydermata pachydermatocele pachydermatoid pachydermatosis pachydermatous pachydermatously pachydermia pachydermial pachydermic pachydermoid pachydermous pachyemia pachyglossal pachyglossate pachyglossia pachyglossous pachyhaemia pachyhaemic pachyhaemous pachyhematous pachyhemia pachyhymenia pachyhymenic Pachylophus pachylosis Pachyma pachymenia pachymenic pachymeningitic pachymeningitis pachymeninx pachymeter pachynathous pachynema pachynsis pachyntic pachyodont pachyotia pachyotous pachyperitonitis pachyphyllous pachypleuritic pachypod pachypodous pachypterous Pachyrhizus pachyrhynchous pachysalpingitis Pachysandra pachysaurian pachysomia pachysomous pachystichous Pachystima pachytene pachytrichous Pachytylus pachyvaginitis pacifiable pacific pacifical pacifically pacificate pacification pacificator pacificatory pacificism pacificist pacificity pacifier pacifism pacifist pacifistic pacifistically pacify pacifyingly Pacinian pack packable package packbuilder packcloth packer packery packet packhouse packless packly packmaker packmaking packman packmanship packness packsack packsaddle packstaff packthread packwall packwaller packware packway paco Pacolet pacouryuva pact paction pactional pactionally Pactolian Pactolus pad padcloth Padda padder padding paddle paddlecock paddled paddlefish paddlelike paddler paddlewood paddling paddock paddockride paddockstone paddockstool Paddy paddy paddybird Paddyism paddymelon Paddywack paddywatch Paddywhack paddywhack padella padfoot padge Padina padishah padle padlike padlock padmasana padmelon padnag padpiece Padraic Padraig padre padroadist padroado padronism padstone padtree Paduan Paduanism paduasoy Padus paean paeanism paeanize paedarchy paedatrophia paedatrophy paediatry paedogenesis paedogenetic paedometer paedometrical paedomorphic paedomorphism paedonymic paedonymy paedopsychologist paedotribe paedotrophic paedotrophist paedotrophy paegel paegle Paelignian paenula paeon Paeonia Paeoniaceae Paeonian paeonic paetrick paga pagan Paganalia Paganalian pagandom paganic paganical paganically paganish paganishly paganism paganist paganistic paganity paganization paganize paganizer paganly paganry pagatpat page pageant pageanted pageanteer pageantic pageantry pagedom pageful pagehood pageless pagelike pager pageship pagina paginal paginary paginate pagination pagiopod Pagiopoda pagoda pagodalike pagodite pagoscope pagrus Paguma pagurian pagurid Paguridae Paguridea pagurine Pagurinea paguroid Paguroidea Pagurus pagus pah paha Pahareen Pahari Paharia pahi Pahlavi pahlavi pahmi paho pahoehoe Pahouin pahutan Paiconeca paideutic paideutics paidological paidologist paidology paidonosology paigle paik pail pailful paillasse paillette pailletted pailou paimaneh pain pained painful painfully painfulness paining painingly painkiller painless painlessly painlessness painproof painstaker painstaking painstakingly painstakingness painsworthy paint paintability paintable paintableness paintably paintbox paintbrush painted paintedness painter painterish painterlike painterly paintership paintiness painting paintingness paintless paintpot paintproof paintress paintrix paintroot painty paip pair paired pairedness pairer pairment pairwise pais paisa paisanite Paisley Paiute paiwari pajahuello pajama pajamaed pajock Pajonism Pakawa Pakawan pakchoi pakeha Pakhpuluk Pakhtun Pakistani paktong pal Pala palace palaced palacelike palaceous palaceward palacewards paladin palaeanthropic Palaearctic Palaeechini palaeechinoid Palaeechinoidea palaeechinoidean palaeentomology palaeethnologic palaeethnological palaeethnologist palaeethnology Palaeeudyptes Palaeic palaeichthyan Palaeichthyes palaeichthyic Palaemon palaemonid Palaemonidae palaemonoid palaeoalchemical palaeoanthropic palaeoanthropography palaeoanthropology Palaeoanthropus palaeoatavism palaeoatavistic palaeobiogeography palaeobiologist palaeobiology palaeobotanic palaeobotanical palaeobotanically palaeobotanist palaeobotany Palaeocarida palaeoceanography Palaeocene palaeochorology palaeoclimatic palaeoclimatology Palaeoconcha palaeocosmic palaeocosmology Palaeocrinoidea palaeocrystal palaeocrystallic palaeocrystalline palaeocrystic palaeocyclic palaeodendrologic palaeodendrological palaeodendrologically palaeodendrologist palaeodendrology Palaeodictyoptera palaeodictyopteran palaeodictyopteron palaeodictyopterous palaeoencephalon palaeoeremology palaeoethnic palaeoethnologic palaeoethnological palaeoethnologist palaeoethnology palaeofauna Palaeogaea Palaeogaean palaeogene palaeogenesis palaeogenetic palaeogeographic palaeogeography palaeoglaciology palaeoglyph Palaeognathae palaeognathic palaeognathous palaeograph palaeographer palaeographic palaeographical palaeographically palaeographist palaeography palaeoherpetologist palaeoherpetology palaeohistology palaeohydrography palaeolatry palaeolimnology palaeolith palaeolithic palaeolithical palaeolithist palaeolithoid palaeolithy palaeological palaeologist palaeology Palaeomastodon palaeometallic palaeometeorological palaeometeorology Palaeonemertea palaeonemertean palaeonemertine Palaeonemertinea Palaeonemertini palaeoniscid Palaeoniscidae palaeoniscoid Palaeoniscum Palaeoniscus palaeontographic palaeontographical palaeontography palaeopathology palaeopedology palaeophile palaeophilist Palaeophis palaeophysiography palaeophysiology palaeophytic palaeophytological palaeophytologist palaeophytology palaeoplain palaeopotamology palaeopsychic palaeopsychological palaeopsychology palaeoptychology Palaeornis Palaeornithinae palaeornithine palaeornithological palaeornithology palaeosaur Palaeosaurus palaeosophy Palaeospondylus Palaeostraca palaeostracan palaeostriatal palaeostriatum palaeostylic palaeostyly palaeotechnic palaeothalamus Palaeothentes Palaeothentidae palaeothere palaeotherian Palaeotheriidae palaeotheriodont palaeotherioid Palaeotherium palaeotheroid Palaeotropical palaeotype palaeotypic palaeotypical palaeotypically palaeotypographical palaeotypographist palaeotypography palaeovolcanic Palaeozoic palaeozoological palaeozoologist palaeozoology palaestra palaestral palaestrian palaestric palaestrics palaetiological palaetiologist palaetiology palafitte palagonite palagonitic Palaic Palaihnihan palaiotype palaite palama palamate palame Palamedea palamedean Palamedeidae Palamite Palamitism palampore palander palanka palankeen palanquin palapalai Palapteryx Palaquium palar palas palatability palatable palatableness palatably palatal palatalism palatality palatalization palatalize palate palated palateful palatefulness palateless palatelike palatial palatially palatialness palatian palatic palatinal palatinate palatine palatineship Palatinian palatinite palation palatist palatitis palative palatization palatize palatoalveolar palatodental palatoglossal palatoglossus palatognathous palatogram palatograph palatography palatomaxillary palatometer palatonasal palatopharyngeal palatopharyngeus palatoplasty palatoplegia palatopterygoid palatoquadrate palatorrhaphy palatoschisis Palatua Palau Palaung palaver palaverer palaverist palaverment palaverous palay palazzi palberry palch pale palea paleaceous paleanthropic Palearctic paleate palebelly palebuck palechinoid paled paledness paleencephalon paleentomology paleethnographer paleethnologic paleethnological paleethnologist paleethnology paleface palehearted paleichthyologic paleichthyologist paleichthyology paleiform palely Paleman paleness Palenque paleoalchemical paleoandesite paleoanthropic paleoanthropography paleoanthropological paleoanthropologist paleoanthropology Paleoanthropus paleoatavism paleoatavistic paleobiogeography paleobiologist paleobiology paleobotanic paleobotanical paleobotanically paleobotanist paleobotany paleoceanography Paleocene paleochorology paleoclimatic paleoclimatologist paleoclimatology Paleoconcha paleocosmic paleocosmology paleocrystal paleocrystallic paleocrystalline paleocrystic paleocyclic paleodendrologic paleodendrological paleodendrologically paleodendrologist paleodendrology paleoecologist paleoecology paleoencephalon paleoeremology paleoethnic paleoethnography paleoethnologic paleoethnological paleoethnologist paleoethnology paleofauna Paleogene paleogenesis paleogenetic paleogeographic paleogeography paleoglaciology paleoglyph paleograph paleographer paleographic paleographical paleographically paleographist paleography paleoherpetologist paleoherpetology paleohistology paleohydrography paleoichthyology paleokinetic paleola paleolate paleolatry paleolimnology paleolith paleolithic paleolithical paleolithist paleolithoid paleolithy paleological paleologist paleology paleomammalogy paleometallic paleometeorological paleometeorology paleontographic paleontographical paleontography paleontologic paleontological paleontologically paleontologist paleontology paleopathology paleopedology paleophysiography paleophysiology paleophytic paleophytological paleophytologist paleophytology paleopicrite paleoplain paleopotamoloy paleopsychic paleopsychological paleopsychology paleornithological paleornithology paleostriatal paleostriatum paleostylic paleostyly paleotechnic paleothalamus paleothermal paleothermic Paleotropical paleovolcanic paleoytterbium Paleozoic paleozoological paleozoologist paleozoology paler Palermitan Palermo Pales Palesman Palestinian palestra palestral palestrian palestric palet paletiology paletot palette paletz palewise palfrey palfreyed palgat Pali pali Palicourea palification paliform paligorskite palikar palikarism palikinesia palila palilalia Palilia Palilicium palillogia palilogetic palilogy palimbacchic palimbacchius palimpsest palimpsestic palinal palindrome palindromic palindromical palindromically palindromist paling palingenesia palingenesian palingenesis palingenesist palingenesy palingenetic palingenetically palingenic palingenist palingeny palinode palinodial palinodic palinodist palinody palinurid Palinuridae palinuroid Palinurus paliphrasia palirrhea palisade palisading palisado palisander palisfy palish palistrophia Paliurus palkee pall palla palladammine Palladia palladia Palladian Palladianism palladic palladiferous palladinize palladion palladious Palladium palladium palladiumize palladize palladodiammine palladosammine palladous pallae pallah pallall pallanesthesia Pallas pallasite pallbearer palled pallescence pallescent pallesthesia pallet palleting palletize pallette pallholder palli pallial palliard palliasse Palliata palliata palliate palliation palliative palliatively palliator palliatory pallid pallidiflorous pallidipalpate palliditarsate pallidity pallidiventrate pallidly pallidness palliness Palliobranchiata palliobranchiate palliocardiac pallioessexite pallion palliopedal palliostratus pallium Palliyan pallograph pallographic pallometric pallone pallor Pallu Palluites pallwise pally palm palma Palmaceae palmaceous palmad Palmae palmanesthesia palmar palmarian palmary palmate palmated palmately palmatifid palmatiform palmatilobate palmatilobed palmation palmatiparted palmatipartite palmatisect palmatisected palmature palmcrist palmed Palmella Palmellaceae palmellaceous palmelloid palmer palmerite palmery palmesthesia palmette palmetto palmetum palmful palmicolous palmiferous palmification palmiform palmigrade palmilobate palmilobated palmilobed palminervate palminerved palmiped Palmipedes palmipes palmist palmister palmistry palmitate palmite palmitic palmitin palmitinic palmito palmitoleic palmitone palmiveined palmivorous palmlike palmo palmodic palmoscopy palmospasmus palmula palmus palmwise palmwood palmy palmyra Palmyrene Palmyrenian palolo palombino palometa palomino palosapis palouser paloverde palp palpability palpable palpableness palpably palpacle palpal palpate palpation palpatory palpebra palpebral palpebrate palpebration palpebritis palped palpi palpicorn Palpicornia palpifer palpiferous palpiform palpiger palpigerous palpitant palpitate palpitatingly palpitation palpless palpocil palpon palpulus palpus palsgrave palsgravine palsied palsification palstave palster palsy palsylike palsywort palt Palta palter palterer palterly paltrily paltriness paltry paludal paludament paludamentum paludial paludian paludic Paludicella Paludicolae paludicole paludicoline paludicolous paludiferous Paludina paludinal paludine paludinous paludism paludose paludous paludrin paludrine palule palulus Palus palus palustral palustrian palustrine paly palynology pam pambanmanche Pamela pament pameroon Pamir Pamiri Pamirian Pamlico pamment Pampanga Pampangan Pampango pampas pampean pamper pampered pamperedly pamperedness pamperer pamperize pampero pamphagous pampharmacon Pamphiliidae Pamphilius pamphlet pamphletage pamphletary pamphleteer pamphleter pamphletful pamphletic pamphletical pamphletize pamphletwise pamphysical pamphysicism pampilion pampiniform pampinocele pamplegia pampootee pampootie pampre pamprodactyl pamprodactylism pamprodactylous pampsychism pampsychist Pamunkey Pan pan panace panacea panacean panaceist panache panached panachure panada panade Panagia panagiarion Panak Panaka panama Panamaian Panaman Panamanian Panamano Panamic Panamint Panamist panapospory panarchic panarchy panaris panaritium panarteritis panarthritis panary panatela Panathenaea Panathenaean Panathenaic panatrophy panautomorphic panax Panayan Panayano panbabylonian panbabylonism Panboeotian pancake pancarditis panchama panchayat pancheon panchion panchromatic panchromatism panchromatization panchromatize panchway panclastic panconciliatory pancosmic pancosmism pancosmist pancratian pancratiast pancratiastic pancratic pancratical pancratically pancration pancratism pancratist pancratium pancreas pancreatalgia pancreatectomize pancreatectomy pancreatemphraxis pancreathelcosis pancreatic pancreaticoduodenal pancreaticoduodenostomy pancreaticogastrostomy pancreaticosplenic pancreatin pancreatism pancreatitic pancreatitis pancreatization pancreatize pancreatoduodenectomy pancreatoenterostomy pancreatogenic pancreatogenous pancreatoid pancreatolipase pancreatolith pancreatomy pancreatoncus pancreatopathy pancreatorrhagia pancreatotomy pancreectomy pancreozymin pancyclopedic pand panda pandal pandan Pandanaceae pandanaceous Pandanales Pandanus pandaram Pandarctos pandaric Pandarus pandation Pandean pandect Pandectist pandemia pandemian pandemic pandemicity pandemoniac Pandemoniacal Pandemonian pandemonic pandemonism Pandemonium pandemonium Pandemos pandemy pandenominational pander panderage panderer panderess panderism panderize panderly Panderma pandermite panderous pandership pandestruction pandiabolism pandiculation Pandion Pandionidae pandita pandle pandlewhew Pandora pandora Pandorea Pandoridae Pandorina Pandosto pandour pandowdy pandrop pandura pandurate pandurated panduriform pandy pane panecclesiastical paned panegoism panegoist panegyric panegyrical panegyrically panegyricize panegyricon panegyricum panegyris panegyrist panegyrize panegyrizer panegyry paneity panel panela panelation paneler paneless paneling panelist panellation panelling panelwise panelwork panentheism panesthesia panesthetic paneulogism panfil panfish panful pang Pangaea pangamic pangamous pangamously pangamy pangane Pangasinan pangen pangene pangenesis pangenetic pangenetically pangenic pangful pangi Pangium pangless panglessly panglima Pangloss Panglossian Panglossic pangolin pangrammatist Pangwe panhandle panhandler panharmonic panharmonicon panhead panheaded Panhellenic Panhellenios Panhellenism Panhellenist Panhellenium panhidrosis panhuman panhygrous panhyperemia panhysterectomy Pani panic panical panically panicful panichthyophagous panicked panicky panicle panicled paniclike panicmonger panicmongering paniconograph paniconographic paniconography Panicularia paniculate paniculated paniculately paniculitis Panicum panidiomorphic panidrosis panification panimmunity Paninean Panionia Panionian Panionic Paniquita Paniquitan panisc panisca paniscus panisic panivorous Panjabi panjandrum pank pankin pankration panleucopenia panlogical panlogism panlogistical panman panmelodicon panmelodion panmerism panmeristic panmixia panmixy panmnesia panmug panmyelophthisis Panna pannade pannage pannam pannationalism panne pannel panner pannery panneuritic panneuritis pannicle pannicular pannier panniered pannierman pannikin panning Pannonian Pannonic pannose pannosely pannum pannus pannuscorium Panoan panocha panoche panococo panoistic panomphaic panomphean panomphic panophobia panophthalmia panophthalmitis panoplied panoplist panoply panoptic panoptical panopticon panoram panorama panoramic panoramical panoramically panoramist panornithic Panorpa Panorpatae panorpian panorpid Panorpidae panosteitis panostitis panotitis panotype panouchi panpathy panpharmacon panphenomenalism panphobia Panpipe panplegia panpneumatism panpolism panpsychic panpsychism panpsychist panpsychistic panscientist pansciolism pansciolist pansclerosis pansclerotic panse pansexism pansexual pansexualism pansexualist pansexuality pansexualize panshard panside pansideman pansied pansinuitis pansinusitis pansmith pansophic pansophical pansophically pansophism pansophist pansophy panspermatism panspermatist panspermia panspermic panspermism panspermist panspermy pansphygmograph panstereorama pansy pansylike pant pantachromatic pantacosm pantagamy pantagogue pantagraph pantagraphic pantagraphical Pantagruel Pantagruelian Pantagruelic Pantagruelically Pantagrueline pantagruelion Pantagruelism Pantagruelist Pantagruelistic Pantagruelistical Pantagruelize pantaleon pantaletless pantalets pantaletted pantalgia pantalon Pantalone pantaloon pantalooned pantaloonery pantaloons pantameter pantamorph pantamorphia pantamorphic pantanemone pantanencephalia pantanencephalic pantaphobia pantarbe pantarchy pantas pantascope pantascopic Pantastomatida Pantastomina pantatrophia pantatrophy pantatype pantechnic pantechnicon pantelegraph pantelegraphy panteleologism pantelephone pantelephonic pantellerite panter panterer Pantheian pantheic pantheism pantheist pantheistic pantheistical pantheistically panthelematism panthelism pantheologist pantheology pantheon pantheonic pantheonization pantheonize panther pantheress pantherine pantherish pantherlike pantherwood pantheum pantie panties pantile pantiled pantiling panting pantingly pantisocracy pantisocrat pantisocratic pantisocratical pantisocratist pantle pantler panto pantochrome pantochromic pantochromism pantochronometer Pantocrator pantod Pantodon Pantodontidae pantoffle pantofle pantoganglitis pantogelastic pantoglossical pantoglot pantoglottism pantograph pantographer pantographic pantographical pantographically pantography pantoiatrical pantologic pantological pantologist pantology pantomancer pantometer pantometric pantometrical pantometry pantomime pantomimic pantomimical pantomimically pantomimicry pantomimish pantomimist pantomimus pantomnesia pantomnesic pantomorph pantomorphia pantomorphic panton pantoon pantopelagian pantophagic pantophagist pantophagous pantophagy pantophile pantophobia pantophobic pantophobous pantoplethora pantopod Pantopoda pantopragmatic pantopterous pantoscope pantoscopic pantosophy Pantostomata pantostomate pantostomatous pantostome pantotactic pantothenate pantothenic Pantotheria pantotherian pantotype pantoum pantropic pantropical pantry pantryman pantrywoman pants pantun panty pantywaist panung panurgic panurgy panyar panzoism panzootia panzootic panzooty paolo paon pap papa papability papable papabot papacy papagallo Papago papain papal papalism papalist papalistic papalization papalize papalizer papally papalty papane papaphobia papaphobist papaprelatical papaprelatist paparchical paparchy papaship Papaver Papaveraceae papaveraceous Papaverales papaverine papaverous papaw papaya Papayaceae papayaceous papayotin papboat pape papelonne paper paperback paperbark paperboard papered paperer paperful paperiness papering paperlike papermaker papermaking papermouth papern papershell paperweight papery papess papeterie papey Paphian Paphiopedilum Papiamento papicolar papicolist Papilio Papilionaceae papilionaceous Papiliones papilionid Papilionidae Papilionides Papilioninae papilionine papilionoid Papilionoidea papilla papillae papillar papillary papillate papillated papillectomy papilledema papilliferous papilliform papillitis papilloadenocystoma papillocarcinoma papilloedema papilloma papillomatosis papillomatous papillon papilloretinitis papillosarcoma papillose papillosity papillote papillous papillulate papillule Papinachois Papio papion papish papisher papism Papist papist papistic papistical papistically papistlike papistly papistry papize papless papmeat papolater papolatrous papolatry papoose papooseroot Pappea pappescent pappi pappiferous pappiform pappose pappox pappus pappy papreg paprica paprika Papuan papula papular papulate papulated papulation papule papuliferous papuloerythematous papulopustular papulopustule papulose papulosquamous papulous papulovesicular papyr papyraceous papyral papyrean papyri papyrian papyrin papyrine papyritious papyrocracy papyrograph papyrographer papyrographic papyrography papyrological papyrologist papyrology papyrophobia papyroplastics papyrotamia papyrotint papyrotype papyrus Paque paquet par para paraaminobenzoic parabanate parabanic parabaptism parabaptization parabasal parabasic parabasis parabema parabematic parabenzoquinone parabiosis parabiotic parablast parablastic parable parablepsia parablepsis parablepsy parableptic parabola parabolanus parabolic parabolical parabolicalism parabolically parabolicness paraboliform parabolist parabolization parabolize parabolizer paraboloid paraboloidal parabomb parabotulism parabranchia parabranchial parabranchiate parabulia parabulic paracanthosis paracarmine paracasein paracaseinate Paracelsian Paracelsianism Paracelsic Paracelsist Paracelsistic Paracelsus paracentesis paracentral paracentric paracentrical paracephalus paracerebellar paracetaldehyde parachaplain paracholia parachor parachordal parachrea parachroia parachroma parachromatism parachromatophorous parachromatopsia parachromatosis parachrome parachromoparous parachromophoric parachromophorous parachronism parachronistic parachrose parachute parachutic parachutism parachutist paraclete paracmasis paracme paracoele paracoelian paracolitis paracolon paracolpitis paracolpium paracondyloid paracone paraconic paraconid paraconscious paracorolla paracotoin paracoumaric paracresol Paracress paracusia paracusic paracyanogen paracyesis paracymene paracystic paracystitis paracystium parade paradeful paradeless paradelike paradenitis paradental paradentitis paradentium parader paraderm paradiastole paradiazine paradichlorbenzene paradichlorbenzol paradichlorobenzene paradichlorobenzol paradidymal paradidymis paradigm paradigmatic paradigmatical paradigmatically paradigmatize parading paradingly paradiplomatic paradisaic paradisaically paradisal paradise Paradisea paradisean Paradiseidae Paradiseinae Paradisia paradisiac paradisiacal paradisiacally paradisial paradisian paradisic paradisical parado paradoctor parados paradoses paradox paradoxal paradoxer paradoxial paradoxic paradoxical paradoxicalism paradoxicality paradoxically paradoxicalness paradoxician Paradoxides paradoxidian paradoxism paradoxist paradoxographer paradoxographical paradoxology paradoxure Paradoxurinae paradoxurine Paradoxurus paradoxy paradromic paraenesis paraenesize paraenetic paraenetical paraengineer paraffin paraffine paraffiner paraffinic paraffinize paraffinoid paraffiny paraffle parafle parafloccular paraflocculus paraform paraformaldehyde parafunction paragammacism paraganglion paragaster paragastral paragastric paragastrula paragastrular parage paragenesia paragenesis paragenetic paragenic paragerontic parageusia parageusic parageusis paragglutination paraglenal paraglobin paraglobulin paraglossa paraglossal paraglossate paraglossia paraglycogen paragnath paragnathism paragnathous paragnathus paragneiss paragnosia paragoge paragogic paragogical paragogically paragogize paragon paragonimiasis Paragonimus paragonite paragonitic paragonless paragram paragrammatist paragraph paragrapher paragraphia paragraphic paragraphical paragraphically paragraphism paragraphist paragraphistical paragraphize Paraguay Paraguayan parah paraheliotropic paraheliotropism parahematin parahemoglobin parahepatic Parahippus parahopeite parahormone parahydrogen paraiba Paraiyan parakeet parakeratosis parakilya parakinesia parakinetic paralactate paralalia paralambdacism paralambdacismus paralaurionite paraldehyde parale paralectotype paraleipsis paralepsis paralexia paralexic paralgesia paralgesic paralinin paralipomena Paralipomenon paralipsis paralitical parallactic parallactical parallactically parallax parallel parallelable parallelepiped parallelepipedal parallelepipedic parallelepipedon parallelepipedonal paralleler parallelinervate parallelinerved parallelinervous parallelism parallelist parallelistic parallelith parallelization parallelize parallelizer parallelless parallelly parallelodrome parallelodromous parallelogram parallelogrammatic parallelogrammatical parallelogrammic parallelogrammical parallelograph parallelometer parallelopiped parallelopipedon parallelotropic parallelotropism parallelwise parallepipedous paralogia paralogical paralogician paralogism paralogist paralogistic paralogize paralogy paraluminite paralyses paralysis paralytic paralytical paralytically paralyzant paralyzation paralyze paralyzedly paralyzer paralyzingly param paramagnet paramagnetic paramagnetism paramandelic paramarine paramastigate paramastitis paramastoid paramatta Paramecidae Paramecium paramedian paramelaconite paramenia parament paramere parameric parameron paramese paramesial parameter parametric parametrical parametritic parametritis parametrium paramide paramilitary paramimia paramine paramiographer paramitome paramnesia paramo Paramoecium paramorph paramorphia paramorphic paramorphine paramorphism paramorphosis paramorphous paramount paramountcy paramountly paramountness paramountship paramour paramuthetic paramyelin paramylum paramyoclonus paramyosinogen paramyotone paramyotonia paranasal paranatellon parandrus paranema paranematic paranephric paranephritic paranephritis paranephros paranepionic paranete parang paranitraniline paranitrosophenol paranoia paranoiac paranoid paranoidal paranoidism paranomia paranormal paranosic paranthelion paranthracene Paranthropus paranuclear paranucleate paranucleic paranuclein paranucleinic paranucleus paranymph paranymphal parao paraoperation Parapaguridae paraparesis paraparetic parapathia parapathy parapegm parapegma paraperiodic parapet parapetalous parapeted parapetless paraph paraphasia paraphasic paraphemia paraphenetidine paraphenylene paraphenylenediamine parapherna paraphernal paraphernalia paraphernalian paraphia paraphilia paraphimosis paraphonia paraphonic paraphototropism paraphrasable paraphrase paraphraser paraphrasia paraphrasian paraphrasis paraphrasist paraphrast paraphraster paraphrastic paraphrastical paraphrastically paraphrenia paraphrenic paraphrenitis paraphyllium paraphysate paraphysical paraphysiferous paraphysis paraplasis paraplasm paraplasmic paraplastic paraplastin paraplectic paraplegia paraplegic paraplegy parapleuritis parapleurum parapod parapodial parapodium parapophysial parapophysis parapraxia parapraxis paraproctitis paraproctium paraprostatitis Parapsida parapsidal parapsidan parapsis parapsychical parapsychism parapsychological parapsychology parapsychosis parapteral parapteron parapterum paraquadrate paraquinone Pararctalia Pararctalian pararectal pararek parareka pararhotacism pararosaniline pararosolic pararthria parasaboteur parasalpingitis parasang parascene parascenium parasceve paraschematic parasecretion paraselene paraselenic parasemidin parasemidine parasexuality parashah parasigmatism parasigmatismus Parasita parasital parasitary parasite parasitelike parasitemia parasitic Parasitica parasitical parasitically parasiticalness parasiticidal parasiticide Parasitidae parasitism parasitize parasitogenic parasitoid parasitoidism parasitological parasitologist parasitology parasitophobia parasitosis parasitotrope parasitotropic parasitotropism parasitotropy paraskenion parasol parasoled parasolette paraspecific parasphenoid parasphenoidal paraspotter paraspy parastas parastatic parastemon parastemonal parasternal parasternum parastichy parastyle parasubphonate parasubstituted Parasuchia parasuchian parasympathetic parasympathomimetic parasynapsis parasynaptic parasynaptist parasyndesis parasynesis parasynetic parasynovitis parasynthesis parasynthetic parasyntheton parasyphilis parasyphilitic parasyphilosis parasystole paratactic paratactical paratactically paratartaric parataxis parate paraterminal Paratheria paratherian parathesis parathetic parathion parathormone parathymic parathyroid parathyroidal parathyroidectomize parathyroidectomy parathyroprival parathyroprivia parathyroprivic paratitla paratitles paratoloid paratoluic paratoluidine paratomial paratomium paratonic paratonically paratorium paratory paratracheal paratragedia paratragoedia paratransversan paratrichosis paratrimma paratriptic paratroop paratrooper paratrophic paratrophy paratuberculin paratuberculosis paratuberculous paratungstate paratungstic paratype paratyphlitis paratyphoid paratypic paratypical paratypically paravaginitis paravail paravane paravauxite paravent paravertebral paravesical paraxial paraxially paraxon paraxonic paraxylene Parazoa parazoan parazonium parbake Parbate parboil parbuckle parcel parceling parcellary parcellate parcellation parcelling parcellization parcellize parcelment parcelwise parcenary parcener parcenership parch parchable parchedly parchedness parcheesi parchemin parcher parchesi parching parchingly parchisi parchment parchmenter parchmentize parchmentlike parchmenty parchy parcidentate parciloquy parclose parcook pard pardalote Pardanthus pardao parded pardesi pardine pardner pardnomastic pardo pardon pardonable pardonableness pardonably pardonee pardoner pardoning pardonless pardonmonger pare paregoric Pareiasauri Pareiasauria pareiasaurian Pareiasaurus Pareioplitae parel parelectronomic parelectronomy parella paren parencephalic parencephalon parenchym parenchyma parenchymal parenchymatic parenchymatitis parenchymatous parenchymatously parenchyme parenchymous parent parentage parental Parentalia parentalism parentality parentally parentdom parentela parentelic parenteral parenterally parentheses parenthesis parenthesize parenthetic parenthetical parentheticality parenthetically parentheticalness parenthood parenticide parentless parentlike parentship Pareoean parepididymal parepididymis parepigastric parer parerethesis parergal parergic parergon paresis paresthesia paresthesis paresthetic parethmoid paretic paretically pareunia parfait parfilage parfleche parfocal pargana pargasite parge pargeboard parget pargeter pargeting pargo parhelia parheliacal parhelic parhelion parhomologous parhomology parhypate pari pariah pariahdom pariahism pariahship parial Parian parian Pariasauria Pariasaurus Paridae paridigitate paridrosis paries parietal Parietales Parietaria parietary parietes parietofrontal parietojugal parietomastoid parietoquadrate parietosphenoid parietosphenoidal parietosplanchnic parietosquamosal parietotemporal parietovaginal parietovisceral parify parigenin pariglin Parilia Parilicium parilla parillin parimutuel Parinarium parine paring paripinnate Paris parish parished parishen parishional parishionally parishionate parishioner parishionership Parisian Parisianism Parisianization Parisianize Parisianly Parisii parisis parisology parison parisonic paristhmic paristhmion parisyllabic parisyllabical Pariti Paritium parity parivincular park parka parkee parker parkin parking Parkinsonia Parkinsonism parkish parklike parkward parkway parky parlamento parlance parlando Parlatoria parlatory parlay parle parley parleyer parliament parliamental parliamentarian parliamentarianism parliamentarily parliamentariness parliamentarism parliamentarization parliamentarize parliamentary parliamenteer parliamenteering parliamenter parling parlish parlor parlorish parlormaid parlous parlously parlousness parly Parma parma parmacety parmak Parmelia Parmeliaceae parmeliaceous parmelioid Parmentiera Parmesan Parmese parnas Parnassia Parnassiaceae parnassiaceous Parnassian Parnassianism Parnassiinae Parnassism Parnassus parnel Parnellism Parnellite parnorpine paroarion paroarium paroccipital paroch parochial parochialic parochialism parochialist parochiality parochialization parochialize parochially parochialness parochin parochine parochiner parode parodiable parodial parodic parodical parodinia parodist parodistic parodistically parodize parodontitis parodos parody parodyproof paroecious paroeciously paroeciousness paroecism paroecy paroemia paroemiac paroemiographer paroemiography paroemiologist paroemiology paroicous parol parolable parole parolee parolfactory paroli parolist paromoeon paromologetic paromologia paromology paromphalocele paromphalocelic paronomasia paronomasial paronomasian paronomasiastic paronomastical paronomastically paronychia paronychial paronychium paronym paronymic paronymization paronymize paronymous paronymy paroophoric paroophoritis paroophoron paropsis paroptesis paroptic parorchid parorchis parorexia Parosela parosmia parosmic parosteal parosteitis parosteosis parostosis parostotic Parotia parotic parotid parotidean parotidectomy parotiditis parotis parotitic parotitis parotoid parous parousia parousiamania parovarian parovariotomy parovarium paroxazine paroxysm paroxysmal paroxysmalist paroxysmally paroxysmic paroxysmist paroxytone paroxytonic paroxytonize parpal parquet parquetage parquetry parr Parra parrel parrhesia parrhesiastic parriable parricidal parricidally parricide parricided parricidial parricidism Parridae parrier parrock parrot parroter parrothood parrotism parrotize parrotlet parrotlike parrotry parrotwise parroty parry parsable parse parsec Parsee Parseeism parser parsettensite Parsi Parsic Parsiism parsimonious parsimoniously parsimoniousness parsimony Parsism parsley parsleylike parsleywort parsnip parson parsonage parsonarchy parsondom parsoned parsonese parsoness parsonet parsonhood parsonic parsonical parsonically parsoning parsonish parsonity parsonize parsonlike parsonly parsonolatry parsonology parsonry parsonship Parsonsia parsonsite parsony part partakable partake partaker partan partanfull partanhanded parted partedness parter parterre parterred partheniad Partheniae parthenian parthenic Parthenium parthenocarpelly parthenocarpic parthenocarpical parthenocarpically parthenocarpous parthenocarpy Parthenocissus parthenogenesis parthenogenetic parthenogenetically parthenogenic parthenogenitive parthenogenous parthenogeny parthenogonidium Parthenolatry parthenology Parthenon Parthenopaeus parthenoparous Parthenope Parthenopean Parthenos parthenosperm parthenospore Parthian partial partialism partialist partialistic partiality partialize partially partialness partiary partible particate participability participable participance participancy participant participantly participate participatingly participation participative participatively participator participatory participatress participial participiality participialize participially participle particle particled particular particularism particularist particularistic particularistically particularity particularization particularize particularly particularness particulate partigen partile partimembered partimen partinium partisan partisanism partisanize partisanship partite partition partitional partitionary partitioned partitioner partitioning partitionist partitionment partitive partitively partitura partiversal partivity partless partlet partly partner partnerless partnership parto partook partridge partridgeberry partridgelike partridgewood partridging partschinite parture parturiate parturience parturiency parturient parturifacient parturition parturitive party partyism partyist partykin partyless partymonger partyship Parukutu parulis parumbilical parure paruria Parus parvanimity parvenu parvenudom parvenuism parvicellular parviflorous parvifoliate parvifolious parvipotent parvirostrate parvis parviscient parvitude parvolin parvoline parvule paryphodrome pasan pasang Pasch Pascha paschal paschalist Paschaltide paschite pascoite pascuage pascual pascuous pasgarde pash pasha pashadom pashalik pashaship pashm pashmina Pashto pasi pasigraphic pasigraphical pasigraphy pasilaly Pasitelean pasmo Paspalum pasqueflower pasquil pasquilant pasquiler pasquilic Pasquin pasquin pasquinade pasquinader Pasquinian Pasquino pass passable passableness passably passade passado passage passageable passageway Passagian passalid Passalidae Passalus Passamaquoddy passant passback passbook Passe passe passee passegarde passement passementerie passen passenger Passer passer Passeres passeriform Passeriformes Passerina passerine passewa passibility passible passibleness Passiflora Passifloraceae passifloraceous Passiflorales passimeter passing passingly passingness passion passional passionary passionate passionately passionateness passionative passioned passionflower passionful passionfully passionfulness Passionist passionist passionless passionlessly passionlessness passionlike passionometer passionproof Passiontide passionwise passionwort passir passival passivate passivation passive passively passiveness passivism passivist passivity passkey passless passman passo passometer passout passover passoverish passpenny passport passportless passulate passulation passus passway passwoman password passworts passymeasure past paste pasteboard pasteboardy pasted pastedness pastedown pastel pastelist paster pasterer pastern pasterned pasteur Pasteurella Pasteurelleae pasteurellosis Pasteurian pasteurism pasteurization pasteurize pasteurizer pastiche pasticheur pastil pastile pastille pastime pastimer Pastinaca pastiness pasting pastness pastophor pastophorion pastophorium pastophorus pastor pastorage pastoral pastorale pastoralism pastoralist pastorality pastoralize pastorally pastoralness pastorate pastoress pastorhood pastorium pastorize pastorless pastorlike pastorling pastorly pastorship pastose pastosity pastrami pastry pastryman pasturability pasturable pasturage pastural pasture pastureless pasturer pasturewise pasty pasul Pat pat pata pataca patacao pataco patagial patagiate patagium Patagon patagon Patagones Patagonian pataka patamar patao patapat pataque Pataria Patarin Patarine Patarinism patas patashte Patavian patavinity patball patballer patch patchable patcher patchery patchily patchiness patchleaf patchless patchouli patchwise patchword patchwork patchworky patchy pate patefaction patefy patel patella patellar patellaroid patellate Patellidae patellidan patelliform patelline patellofemoral patelloid patellula patellulate paten patency patener patent patentability patentable patentably patentee patently patentor pater patera patercove paterfamiliar paterfamiliarly paterfamilias pateriform paterissa paternal paternalism paternalist paternalistic paternalistically paternality paternalize paternally paternity paternoster paternosterer patesi patesiate path Pathan pathbreaker pathed pathema pathematic pathematically pathematology pathetic pathetical pathetically patheticalness patheticate patheticly patheticness pathetism pathetist pathetize pathfarer pathfinder pathfinding pathic pathicism pathless pathlessness pathlet pathoanatomical pathoanatomy pathobiological pathobiologist pathobiology pathochemistry pathodontia pathogen pathogene pathogenesis pathogenesy pathogenetic pathogenic pathogenicity pathogenous pathogeny pathogerm pathogermic pathognomic pathognomical pathognomonic pathognomonical pathognomy pathognostic pathographical pathography pathologic pathological pathologically pathologicoanatomic pathologicoanatomical pathologicoclinical pathologicohistological pathologicopsychological pathologist pathology patholysis patholytic pathomania pathometabolism pathomimesis pathomimicry pathoneurosis pathonomia pathonomy pathophobia pathophoresis pathophoric pathophorous pathoplastic pathoplastically pathopoeia pathopoiesis pathopoietic pathopsychology pathopsychosis pathoradiography pathos pathosocial Pathrusim pathway pathwayed pathy patible patibulary patibulate patience patiency patient patientless patiently patientness patina patinate patination patine patined patinize patinous patio patisserie patly Patmian Patmos patness patnidar pato patois patola patonce patria patrial patriarch patriarchal patriarchalism patriarchally patriarchate patriarchdom patriarched patriarchess patriarchic patriarchical patriarchically patriarchism patriarchist patriarchship patriarchy patrice Patricia Patrician patrician patricianhood patricianism patricianly patricianship patriciate patricidal patricide Patrick patrico patrilineal patrilineally patrilinear patriliny patrilocal patrimonial patrimonially patrimony patrin Patriofelis patriolatry patriot patrioteer patriotess patriotic patriotical patriotically patriotics patriotism patriotly patriotship Patripassian Patripassianism Patripassianist Patripassianly patrist patristic patristical patristically patristicalness patristicism patristics patrix patrizate patrization patrocinium patroclinic patroclinous patrocliny patrogenesis patrol patroller patrollotism patrolman patrologic patrological patrologist patrology patron patronage patronal patronate patrondom patroness patronessship patronite patronizable patronization patronize patronizer patronizing patronizingly patronless patronly patronomatology patronship patronym patronymic patronymically patronymy patroon patroonry patroonship patruity Patsy patta pattable patte pattee patten pattened pattener patter patterer patterist pattern patternable patterned patterner patterning patternize patternless patternlike patternmaker patternmaking patternwise patterny pattu Patty patty pattypan patu patulent patulous patulously patulousness Patuxent patwari Patwin paty pau pauciarticulate pauciarticulated paucidentate pauciflorous paucifoliate paucifolious paucify paucijugate paucilocular pauciloquent pauciloquently pauciloquy paucinervate paucipinnate pauciplicate pauciradiate pauciradiated paucispiral paucispirated paucity paughty paukpan Paul Paula paular pauldron Pauliad Paulian Paulianist Pauliccian Paulicianism paulie paulin Paulina Pauline Paulinia Paulinian Paulinism Paulinist Paulinistic Paulinistically Paulinity Paulinize Paulinus Paulism Paulist Paulista Paulite paulopast paulopost paulospore Paulownia Paulus Paumari paunch paunched paunchful paunchily paunchiness paunchy paup pauper pauperage pauperate pauperdom pauperess pauperism pauperitic pauperization pauperize pauperizer Paurometabola paurometabolic paurometabolism paurometabolous paurometaboly pauropod Pauropoda pauropodous pausably pausal pausation pause pauseful pausefully pauseless pauselessly pausement pauser pausingly paussid Paussidae paut pauxi pavage pavan pavane pave pavement pavemental paver pavestone Pavetta Pavia pavid pavidity pavier pavilion paving pavior Paviotso paviour pavis pavisade pavisado paviser pavisor Pavo pavonated pavonazzetto pavonazzo Pavoncella Pavonia pavonian pavonine pavonize pavy paw pawdite pawer pawing pawk pawkery pawkily pawkiness pawkrie pawky pawl pawn pawnable pawnage pawnbroker pawnbrokerage pawnbrokeress pawnbrokering pawnbrokery pawnbroking Pawnee pawnee pawner pawnie pawnor pawnshop pawpaw Pawtucket pax paxilla paxillar paxillary paxillate paxilliferous paxilliform Paxillosa paxillose paxillus paxiuba paxwax pay payability payable payableness payably Payagua Payaguan payday payed payee payeny payer paying paymaster paymastership payment paymistress Payni paynim paynimhood paynimry Paynize payoff payong payor payroll paysagist Pazend pea peaberry peace peaceable peaceableness peaceably peacebreaker peacebreaking peaceful peacefully peacefulness peaceless peacelessness peacelike peacemaker peacemaking peaceman peacemonger peacemongering peacetime peach peachberry peachblossom peachblow peachen peacher peachery peachick peachify peachiness peachlet peachlike peachwood peachwort peachy peacoat peacock peacockery peacockish peacockishly peacockishness peacockism peacocklike peacockly peacockwise peacocky peacod peafowl peag peage peahen peai peaiism peak peaked peakedly peakedness peaker peakily peakiness peaking peakish peakishly peakishness peakless peaklike peakward peaky peakyish peal pealike pean peanut pear pearceite pearl pearlberry pearled pearler pearlet pearlfish pearlfruit pearlike pearlin pearliness pearling pearlish pearlite pearlitic pearlsides pearlstone pearlweed pearlwort pearly pearmain pearmonger peart pearten peartly peartness pearwood peasant peasantess peasanthood peasantism peasantize peasantlike peasantly peasantry peasantship peasecod peaselike peasen peashooter peason peastake peastaking peastick peasticking peastone peasy peat peatery peathouse peatman peatship peatstack peatwood peaty peavey peavy Peba peba Peban pebble pebbled pebblehearted pebblestone pebbleware pebbly pebrine pebrinous pecan peccability peccable peccadillo peccancy peccant peccantly peccantness peccary peccation peccavi pech pecht pecite peck pecked pecker peckerwood pecket peckful peckhamite peckiness peckish peckishly peckishness peckle peckled peckly Pecksniffian Pecksniffianism Pecksniffism pecky Pecopteris pecopteroid Pecora Pecos pectase pectate pecten pectic pectin Pectinacea pectinacean pectinaceous pectinal pectinase pectinate pectinated pectinately pectination pectinatodenticulate pectinatofimbricate pectinatopinnate pectineal pectineus pectinibranch Pectinibranchia pectinibranchian Pectinibranchiata pectinibranchiate pectinic pectinid Pectinidae pectiniferous pectiniform pectinirostrate pectinite pectinogen pectinoid pectinose pectinous pectizable pectization pectize pectocellulose pectolite pectora pectoral pectoralgia pectoralis pectoralist pectorally pectoriloquial pectoriloquism pectoriloquous pectoriloquy pectosase pectose pectosic pectosinase pectous pectunculate Pectunculus pectus peculate peculation peculator peculiar peculiarism peculiarity peculiarize peculiarly peculiarness peculiarsome peculium pecuniarily pecuniary pecuniosity pecunious ped peda pedage pedagog pedagogal pedagogic pedagogical pedagogically pedagogics pedagogism pedagogist pedagogue pedagoguery pedagoguish pedagoguism pedagogy pedal pedaler pedalfer pedalferic Pedaliaceae pedaliaceous pedalian pedalier Pedalion pedalism pedalist pedaliter pedality Pedalium pedanalysis pedant pedantesque pedantess pedanthood pedantic pedantical pedantically pedanticalness pedanticism pedanticly pedanticness pedantism pedantize pedantocracy pedantocrat pedantocratic pedantry pedary Pedata pedate pedated pedately pedatifid pedatiform pedatilobate pedatilobed pedatinerved pedatipartite pedatisect pedatisected pedatrophia pedder peddle peddler peddleress peddlerism peddlery peddling peddlingly pedee pedelion pederast pederastic pederastically pederasty pedes pedesis pedestal pedestrial pedestrially pedestrian pedestrianate pedestrianism pedestrianize pedetentous Pedetes Pedetidae Pedetinae pediadontia pediadontic pediadontist pedialgia Pediastrum pediatric pediatrician pediatrics pediatrist pediatry pedicab pedicel pediceled pedicellar pedicellaria pedicellate pedicellated pedicellation pedicelled pedicelliform Pedicellina pedicellus pedicle pedicular Pedicularia Pedicularis pediculate pediculated Pediculati pedicule Pediculi pediculicidal pediculicide pediculid Pediculidae Pediculina pediculine pediculofrontal pediculoid pediculoparietal pediculophobia pediculosis pediculous Pediculus pedicure pedicurism pedicurist pediferous pediform pedigerous pedigraic pedigree pedigreeless pediluvium Pedimana pedimanous pediment pedimental pedimented pedimentum Pedioecetes pedion pedionomite Pedionomus pedipalp pedipalpal pedipalpate Pedipalpi Pedipalpida pedipalpous pedipalpus pedipulate pedipulation pedipulator pedlar pedlary pedobaptism pedobaptist pedocal pedocalcic pedodontia pedodontic pedodontist pedodontology pedograph pedological pedologist pedologistical pedologistically pedology pedometer pedometric pedometrical pedometrically pedometrician pedometrist pedomorphic pedomorphism pedomotive pedomotor pedophilia pedophilic pedotribe pedotrophic pedotrophist pedotrophy pedrail pedregal pedrero pedro pedule pedum peduncle peduncled peduncular Pedunculata pedunculate pedunculated pedunculation pedunculus pee peed peek peekaboo peel peelable peele peeled peeledness peeler peelhouse peeling Peelism Peelite peelman peen peenge peeoy peep peeper peepeye peephole peepy peer peerage peerdom peeress peerhood peerie peeringly peerless peerlessly peerlessness peerling peerly peership peery peesash peesoreh peesweep peetweet peeve peeved peevedly peevedness peever peevish peevishly peevishness peewee Peg peg pega pegall peganite Peganum Pegasean Pegasian Pegasid pegasid Pegasidae pegasoid Pegasus pegboard pegbox pegged pegger pegging peggle Peggy peggy pegless peglet peglike pegman pegmatite pegmatitic pegmatization pegmatize pegmatoid pegmatophyre pegology pegomancy Peguan pegwood Pehlevi peho Pehuenche peignoir peine peirameter peirastic peirastically peisage peise peiser Peitho peixere pejorate pejoration pejorationist pejorative pejoratively pejorism pejorist pejority pekan Pekin pekin Peking Pekingese pekoe peladic pelage pelagial Pelagian pelagian Pelagianism Pelagianize Pelagianizer pelagic Pelagothuria pelamyd pelanos Pelargi pelargic Pelargikon pelargomorph Pelargomorphae pelargomorphic pelargonate pelargonic pelargonidin pelargonin pelargonium Pelasgi Pelasgian Pelasgic Pelasgikon Pelasgoi Pele pelean pelecan Pelecani Pelecanidae Pelecaniformes Pelecanoides Pelecanoidinae Pelecanus pelecypod Pelecypoda pelecypodous pelelith pelerine Peleus Pelew pelf Pelias pelican pelicanry pelick pelicometer Pelides Pelidnota pelike peliom pelioma peliosis pelisse pelite pelitic pell Pellaea pellage pellagra pellagragenic pellagrin pellagrose pellagrous pellar pellard pellas pellate pellation peller pellet pelleted pelletierine pelletlike pellety Pellian pellicle pellicula pellicular pellicularia pelliculate pellicule pellile pellitory pellmell pellock pellotine pellucent pellucid pellucidity pellucidly pellucidness Pelmanism Pelmanist Pelmanize pelmatic pelmatogram Pelmatozoa pelmatozoan pelmatozoic pelmet Pelobates pelobatid Pelobatidae pelobatoid Pelodytes pelodytid Pelodytidae pelodytoid Pelomedusa pelomedusid Pelomedusidae pelomedusoid Pelomyxa pelon Pelopaeus Pelopid Pelopidae Peloponnesian Pelops peloria pelorian peloriate peloric pelorism pelorization pelorize pelorus pelota pelotherapy peloton pelt pelta Peltandra peltast peltate peltated peltately peltatifid peltation peltatodigitate pelter pelterer peltiferous peltifolious peltiform Peltigera Peltigeraceae peltigerine peltigerous peltinerved pelting peltingly peltless peltmonger Peltogaster peltry pelu peludo Pelusios pelveoperitonitis pelves Pelvetia pelvic pelviform pelvigraph pelvigraphy pelvimeter pelvimetry pelviolithotomy pelvioperitonitis pelvioplasty pelvioradiography pelvioscopy pelviotomy pelviperitonitis pelvirectal pelvis pelvisacral pelvisternal pelvisternum pelycogram pelycography pelycology pelycometer pelycometry pelycosaur Pelycosauria pelycosaurian pembina Pembroke pemican pemmican pemmicanization pemmicanize pemphigoid pemphigous pemphigus pen penacute Penaea Penaeaceae penaeaceous penal penalist penality penalizable penalization penalize penally penalty penance penanceless penang penannular penates penbard pencatite pence pencel penceless penchant penchute pencil penciled penciler penciliform penciling pencilled penciller pencillike pencilling pencilry pencilwood pencraft pend penda pendant pendanted pendanting pendantlike pendecagon pendeloque pendency pendent pendentive pendently pendicle pendicler pending pendle pendom pendragon pendragonish pendragonship pendulant pendular pendulate pendulation pendule penduline pendulosity pendulous pendulously pendulousness pendulum pendulumlike Penelope Penelopean Penelophon Penelopinae penelopine peneplain peneplanation peneplane peneseismic penetrability penetrable penetrableness penetrably penetral penetralia penetralian penetrance penetrancy penetrant penetrate penetrating penetratingly penetratingness penetration penetrative penetratively penetrativeness penetrativity penetrator penetrology penetrometer penfieldite penfold penful penghulu pengo penguin penguinery penhead penholder penial penicillate penicillated penicillately penicillation penicilliform penicillin Penicillium penide penile peninsula peninsular peninsularism peninsularity peninsulate penintime peninvariant penis penistone penitence penitencer penitent Penitentes penitential penitentially penitentiary penitentiaryship penitently penk penkeeper penknife penlike penmaker penmaking penman penmanship penmaster penna pennaceous Pennacook pennae pennage Pennales pennant Pennaria Pennariidae Pennatae pennate pennated pennatifid pennatilobate pennatipartite pennatisect pennatisected Pennatula Pennatulacea pennatulacean pennatulaceous pennatularian pennatulid Pennatulidae pennatuloid penneech penneeck penner pennet penni pennia pennied penniferous penniform pennigerous penniless pennilessly pennilessness pennill penninervate penninerved penning penninite pennipotent Pennisetum penniveined pennon pennoned pennopluma pennoplume pennorth Pennsylvania Pennsylvanian penny pennybird pennycress pennyearth pennyflower pennyhole pennyleaf pennyrot pennyroyal pennysiller pennystone pennyweight pennywinkle pennywort pennyworth Penobscot penologic penological penologist penology penorcon penrack penroseite Pensacola penscript penseful pensefulness penship pensile pensileness pensility pension pensionable pensionably pensionary pensioner pensionership pensionless pensive pensived pensively pensiveness penster penstick penstock pensum pensy pent penta pentabasic pentabromide pentacapsular pentacarbon pentacarbonyl pentacarpellary pentace pentacetate pentachenium pentachloride pentachord pentachromic pentacid pentacle pentacoccous pentacontane pentacosane Pentacrinidae pentacrinite pentacrinoid Pentacrinus pentacron pentacrostic pentactinal pentactine pentacular pentacyanic pentacyclic pentad pentadactyl Pentadactyla pentadactylate pentadactyle pentadactylism pentadactyloid pentadecagon pentadecahydrate pentadecahydrated pentadecane pentadecatoic pentadecoic pentadecyl pentadecylic pentadelphous pentadicity pentadiene pentadodecahedron pentadrachm pentadrachma pentaerythrite pentaerythritol pentafid pentafluoride pentagamist pentaglossal pentaglot pentaglottical pentagon pentagonal pentagonally pentagonohedron pentagonoid pentagram pentagrammatic pentagyn Pentagynia pentagynian pentagynous pentahalide pentahedral pentahedrical pentahedroid pentahedron pentahedrous pentahexahedral pentahexahedron pentahydrate pentahydrated pentahydric pentahydroxy pentail pentaiodide pentalobate pentalogue pentalogy pentalpha Pentamera pentameral pentameran pentamerid Pentameridae pentamerism pentameroid pentamerous Pentamerus pentameter pentamethylene pentamethylenediamine pentametrist pentametrize pentander Pentandria pentandrian pentandrous pentane pentanedione pentangle pentangular pentanitrate pentanoic pentanolide pentanone pentapetalous Pentaphylacaceae pentaphylacaceous Pentaphylax pentaphyllous pentaploid pentaploidic pentaploidy pentapody pentapolis pentapolitan pentapterous pentaptote pentaptych pentaquine pentarch pentarchical pentarchy pentasepalous pentasilicate pentaspermous pentaspheric pentaspherical pentastich pentastichous pentastichy pentastome Pentastomida pentastomoid pentastomous Pentastomum pentastyle pentastylos pentasulphide pentasyllabic pentasyllabism pentasyllable Pentateuch Pentateuchal pentateuchal pentathionate pentathionic pentathlete pentathlon pentathlos pentatomic pentatomid Pentatomidae Pentatomoidea pentatone pentatonic pentatriacontane pentavalence pentavalency pentavalent penteconter pentecontoglossal Pentecost Pentecostal pentecostal pentecostalism pentecostalist pentecostarion pentecoster pentecostys Pentelic Pentelican pentene penteteric penthemimer penthemimeral penthemimeris Penthestes penthiophen penthiophene Penthoraceae Penthorum penthouse penthouselike penthrit penthrite pentimento pentine pentiodide pentit pentite pentitol pentlandite pentobarbital pentode pentoic pentol pentosan pentosane pentose pentoside pentosuria pentoxide pentremital pentremite Pentremites Pentremitidae pentrit pentrite pentrough Pentstemon pentstock penttail pentyl pentylene pentylic pentylidene pentyne Pentzia penuchi penult penultima penultimate penultimatum penumbra penumbrae penumbral penumbrous penurious penuriously penuriousness penury Penutian penwiper penwoman penwomanship penworker penwright peon peonage peonism peony people peopledom peoplehood peopleize peopleless peopler peoplet peoplish Peoria Peorian peotomy pep peperine peperino Peperomia pepful Pephredo pepinella pepino peplos peplosed peplum peplus pepo peponida peponium pepper pepperbox peppercorn peppercornish peppercorny pepperer peppergrass pepperidge pepperily pepperiness pepperish pepperishly peppermint pepperoni pepperproof pepperroot pepperweed pepperwood pepperwort peppery peppily peppin peppiness peppy pepsin pepsinate pepsinhydrochloric pepsiniferous pepsinogen pepsinogenic pepsinogenous pepsis peptic peptical pepticity peptidase peptide peptizable peptization peptize peptizer peptogaster peptogenic peptogenous peptogeny peptohydrochloric peptolysis peptolytic peptonaemia peptonate peptone peptonemia peptonic peptonization peptonize peptonizer peptonoid peptonuria peptotoxine Pepysian Pequot per Peracarida peracephalus peracetate peracetic peracid peracidite peract peracute peradventure peragrate peragration Perakim peramble perambulant perambulate perambulation perambulator perambulatory Perameles Peramelidae perameline perameloid Peramium Peratae Perates perbend perborate perborax perbromide Perca percale percaline percarbide percarbonate percarbonic perceivability perceivable perceivableness perceivably perceivance perceivancy perceive perceivedly perceivedness perceiver perceiving perceivingness percent percentable percentably percentage percentaged percental percentile percentual percept perceptibility perceptible perceptibleness perceptibly perception perceptional perceptionalism perceptionism perceptive perceptively perceptiveness perceptivity perceptual perceptually Percesoces percesocine Perceval perch percha perchable perchance percher Percheron perchlorate perchlorethane perchlorethylene perchloric perchloride perchlorinate perchlorination perchloroethane perchloroethylene perchromate perchromic percid Percidae perciform Perciformes percipience percipiency percipient Percival perclose percnosome percoct percoid Percoidea percoidean percolable percolate percolation percolative percolator percomorph Percomorphi percomorphous percompound percontation percontatorial percribrate percribration percrystallization perculsion perculsive percur percurration percurrent percursory percuss percussion percussional percussioner percussionist percussionize percussive percussively percussiveness percussor percutaneous percutaneously percutient Percy percylite Perdicinae perdicine perdition perditionable Perdix perdricide perdu perduellion perdurability perdurable perdurableness perdurably perdurance perdurant perdure perduring perduringly Perean peregrin peregrina peregrinate peregrination peregrinator peregrinatory peregrine peregrinity peregrinoid pereion pereiopod pereira pereirine peremptorily peremptoriness peremptory perendinant perendinate perendination perendure perennate perennation perennial perenniality perennialize perennially perennibranch Perennibranchiata perennibranchiate perequitate peres Pereskia perezone perfect perfectation perfected perfectedly perfecter perfecti perfectibilian perfectibilism perfectibilist perfectibilitarian perfectibility perfectible perfecting perfection perfectionate perfectionation perfectionator perfectioner perfectionism perfectionist perfectionistic perfectionize perfectionizement perfectionizer perfectionment perfectism perfectist perfective perfectively perfectiveness perfectivity perfectivize perfectly perfectness perfecto perfector perfectuation perfervent perfervid perfervidity perfervidly perfervidness perfervor perfervour perfidious perfidiously perfidiousness perfidy perfilograph perflate perflation perfluent perfoliate perfoliation perforable perforant Perforata perforate perforated perforation perforationproof perforative perforator perforatorium perforatory perforce perforcedly perform performable performance performant performative performer perfrication perfumatory perfume perfumed perfumeless perfumer perfumeress perfumery perfumy perfunctionary perfunctorily perfunctoriness perfunctorious perfunctoriously perfunctorize perfunctory perfuncturate perfusate perfuse perfusion perfusive Pergamene pergameneous Pergamenian pergamentaceous Pergamic pergamyn pergola perhalide perhalogen perhaps perhazard perhorresce perhydroanthracene perhydrogenate perhydrogenation perhydrogenize peri periacinal periacinous periactus periadenitis periamygdalitis perianal periangiocholitis periangioma periangitis perianth perianthial perianthium periaortic periaortitis periapical periappendicitis periappendicular periapt Periarctic periareum periarterial periarteritis periarthric periarthritis periarticular periaster periastral periastron periastrum periatrial periauricular periaxial periaxillary periaxonal periblast periblastic periblastula periblem peribolos peribolus peribranchial peribronchial peribronchiolar peribronchiolitis peribronchitis peribulbar peribursal pericaecal pericaecitis pericanalicular pericapsular pericardia pericardiac pericardiacophrenic pericardial pericardicentesis pericardiectomy pericardiocentesis pericardiolysis pericardiomediastinitis pericardiophrenic pericardiopleural pericardiorrhaphy pericardiosymphysis pericardiotomy pericarditic pericarditis pericardium pericardotomy pericarp pericarpial pericarpic pericarpium pericarpoidal pericecal pericecitis pericellular pericemental pericementitis pericementoclasia pericementum pericenter pericentral pericentric pericephalic pericerebral perichaete perichaetial perichaetium perichete pericholangitis pericholecystitis perichondral perichondrial perichondritis perichondrium perichord perichordal perichoresis perichorioidal perichoroidal perichylous pericladium periclase periclasia periclasite periclaustral Periclean Pericles periclinal periclinally pericline periclinium periclitate periclitation pericolitis pericolpitis periconchal periconchitis pericopal pericope pericopic pericorneal pericowperitis pericoxitis pericranial pericranitis pericranium pericristate Pericu periculant pericycle pericycloid pericyclone pericyclonic pericystic pericystitis pericystium pericytial peridendritic peridental peridentium peridentoclasia periderm peridermal peridermic Peridermium peridesm peridesmic peridesmitis peridesmium peridial peridiastole peridiastolic perididymis perididymitis peridiiform Peridineae Peridiniaceae peridiniaceous peridinial Peridiniales peridinian peridinid Peridinidae Peridinieae Peridiniidae Peridinium peridiole peridiolum peridium peridot peridotic peridotite peridotitic periductal periegesis periegetic perielesis periencephalitis perienteric perienteritis perienteron periependymal periesophageal periesophagitis perifistular perifoliary perifollicular perifolliculitis perigangliitis periganglionic perigastric perigastritis perigastrula perigastrular perigastrulation perigeal perigee perigemmal perigenesis perigenital perigeum periglandular perigloea periglottic periglottis perignathic perigon perigonadial perigonal perigone perigonial perigonium perigraph perigraphic perigynial perigynium perigynous perigyny perihelial perihelian perihelion perihelium perihepatic perihepatitis perihermenial perihernial perihysteric perijejunitis perijove perikaryon perikronion peril perilabyrinth perilabyrinthitis perilaryngeal perilaryngitis perilenticular periligamentous Perilla perilless perilobar perilous perilously perilousness perilsome perilymph perilymphangial perilymphangitis perilymphatic perimartium perimastitis perimedullary perimeningitis perimeter perimeterless perimetral perimetric perimetrical perimetrically perimetritic perimetritis perimetrium perimetry perimorph perimorphic perimorphism perimorphous perimyelitis perimysial perimysium perine perineal perineocele perineoplastic perineoplasty perineorrhaphy perineoscrotal perineostomy perineosynthesis perineotomy perineovaginal perineovulvar perinephral perinephrial perinephric perinephritic perinephritis perinephrium perineptunium perineum perineural perineurial perineuritis perineurium perinium perinuclear periocular period periodate periodic periodical periodicalism periodicalist periodicalize periodically periodicalness periodicity periodide periodize periodogram periodograph periodology periodontal periodontia periodontic periodontist periodontitis periodontium periodontoclasia periodontologist periodontology periodontum periodoscope perioeci perioecians perioecic perioecid perioecus perioesophageal perioikoi periomphalic perionychia perionychium perionyx perionyxis perioophoritis periophthalmic periophthalmitis periople perioplic perioptic perioptometry perioral periorbit periorbita periorbital periorchitis periost periostea periosteal periosteitis periosteoalveolar periosteoma periosteomedullitis periosteomyelitis periosteophyte periosteorrhaphy periosteotome periosteotomy periosteous periosteum periostitic periostitis periostoma periostosis periostotomy periostracal periostracum periotic periovular peripachymeningitis peripancreatic peripancreatitis peripapillary Peripatetic peripatetic peripatetical peripatetically peripateticate Peripateticism Peripatidae Peripatidea peripatize peripatoid Peripatopsidae Peripatopsis Peripatus peripenial peripericarditis peripetalous peripetasma peripeteia peripetia peripety periphacitis peripharyngeal peripherad peripheral peripherally peripherial peripheric peripherical peripherically peripherocentral peripheroceptor peripheromittor peripheroneural peripherophose periphery periphlebitic periphlebitis periphractic periphrase periphrases periphrasis periphrastic periphrastical periphrastically periphraxy periphyllum periphyse periphysis Periplaneta periplasm periplast periplastic periplegmatic peripleural peripleuritis Periploca periplus peripneumonia peripneumonic peripneumony peripneustic peripolar peripolygonal periportal periproct periproctal periproctitis periproctous periprostatic periprostatitis peripteral peripterous periptery peripylephlebitis peripyloric perique perirectal perirectitis perirenal perisalpingitis perisarc perisarcal perisarcous perisaturnium periscian periscians periscii perisclerotic periscopal periscope periscopic periscopical periscopism perish perishability perishable perishableness perishably perished perishing perishingly perishless perishment perisigmoiditis perisinuitis perisinuous perisinusitis perisoma perisomal perisomatic perisome perisomial perisperm perispermal perispermatitis perispermic perisphere perispheric perispherical perisphinctean Perisphinctes Perisphinctidae perisphinctoid perisplanchnic perisplanchnitis perisplenetic perisplenic perisplenitis perispome perispomenon perispondylic perispondylitis perispore Perisporiaceae perisporiaceous Perisporiales perissad perissodactyl Perissodactyla perissodactylate perissodactyle perissodactylic perissodactylism perissodactylous perissologic perissological perissology perissosyllabic peristalith peristalsis peristaltic peristaltically peristaphyline peristaphylitis peristele peristerite peristeromorph Peristeromorphae peristeromorphic peristeromorphous peristeronic peristerophily peristeropod peristeropodan peristeropode Peristeropodes peristeropodous peristethium peristole peristoma peristomal peristomatic peristome peristomial peristomium peristrephic peristrephical peristrumitis peristrumous peristylar peristyle peristylium peristylos peristylum perisynovial perisystole perisystolic perit perite peritectic peritendineum peritenon perithece perithecial perithecium perithelial perithelioma perithelium perithoracic perithyreoiditis perithyroiditis peritomize peritomous peritomy peritoneal peritonealgia peritoneally peritoneocentesis peritoneoclysis peritoneomuscular peritoneopathy peritoneopericardial peritoneopexy peritoneoplasty peritoneoscope peritoneoscopy peritoneotomy peritoneum peritonism peritonital peritonitic peritonitis peritonsillar peritonsillitis peritracheal peritrema peritrematous peritreme peritrich Peritricha peritrichan peritrichic peritrichous peritrichously peritroch peritrochal peritrochanteric peritrochium peritrochoid peritropal peritrophic peritropous perityphlic perityphlitic perityphlitis periumbilical periungual periuranium periureteric periureteritis periurethral periurethritis periuterine periuvular perivaginal perivaginitis perivascular perivasculitis perivenous perivertebral perivesical perivisceral perivisceritis perivitellin perivitelline periwig periwigpated periwinkle periwinkled periwinkler perizonium perjink perjinkety perjinkities perjinkly perjure perjured perjuredly perjuredness perjurer perjuress perjurious perjuriously perjuriousness perjurous perjury perjurymonger perjurymongering perk perkily Perkin perkin perkiness perking perkingly perkish perknite perky Perla perlaceous Perlaria perle perlection perlid Perlidae perligenous perlingual perlingually perlite perlitic perloir perlustrate perlustration perlustrator perm permafrost Permalloy permalloy permanence permanency permanent permanently permanentness permanganate permanganic permansive permeability permeable permeableness permeably permeameter permeance permeant permeate permeation permeative permeator Permiak Permian permillage permirific permissibility permissible permissibleness permissibly permission permissioned permissive permissively permissiveness permissory permit permittable permitted permittedly permittee permitter permittivity permixture Permocarboniferous permonosulphuric permoralize permutability permutable permutableness permutably permutate permutation permutational permutationist permutator permutatorial permutatory permute permuter pern pernancy pernasal pernavigate Pernettia pernicious perniciously perniciousness pernicketiness pernickety pernine Pernis pernitrate pernitric pernoctation pernor pernyi peroba perobrachius perocephalus perochirus perodactylus Perodipus Perognathinae Perognathus Peromedusae Peromela peromelous peromelus Peromyscus peronate peroneal peroneocalcaneal peroneotarsal peroneotibial peronial peronium Peronospora Peronosporaceae peronosporaceous Peronosporales peropod Peropoda peropodous peropus peroral perorally perorate peroration perorational perorative perorator peroratorical peroratorically peroratory perosis perosmate perosmic perosomus perotic perovskite peroxidase peroxidate peroxidation peroxide peroxidic peroxidize peroxidizement peroxy peroxyl perozonid perozonide perpend perpendicular perpendicularity perpendicularly perpera perperfect perpetrable perpetrate perpetration perpetrator perpetratress perpetratrix perpetuable perpetual perpetualism perpetualist perpetuality perpetually perpetualness perpetuana perpetuance perpetuant perpetuate perpetuation perpetuator perpetuity perplantar perplex perplexable perplexed perplexedly perplexedness perplexer perplexing perplexingly perplexity perplexment perplication perquadrat perquest perquisite perquisition perquisitor perradial perradially perradiate perradius perridiculous perrier Perrinist perron perruche perrukery perruthenate perruthenic perry perryman Persae persalt perscent perscribe perscrutate perscrutation perscrutator perse Persea persecute persecutee persecuting persecutingly persecution persecutional persecutive persecutiveness persecutor persecutory persecutress persecutrix Perseid perseite perseitol perseity persentiscency Persephassa Persepolitan perseverance perseverant perseverate perseveration persevere persevering perseveringly Persian Persianist Persianization Persianize Persic Persicaria persicary Persicize persico persicot persienne persiennes persiflage persiflate persilicic persimmon Persis persis Persism persist persistence persistency persistent persistently persister persisting persistingly persistive persistively persistiveness persnickety person persona personable personableness personably personage personal personalia personalism personalist personalistic personality personalization personalize personally personalness personalty personate personately personating personation personative personator personed personeity personifiable personifiant personification personificative personificator personifier personify personization personize personnel personship perspection perspective perspectived perspectiveless perspectively perspectivity perspectograph perspectometer perspicacious perspicaciously perspicaciousness perspicacity perspicuity perspicuous perspicuously perspicuousness perspirability perspirable perspirant perspirate perspiration perspirative perspiratory perspire perspiringly perspiry perstringe perstringement persuadability persuadable persuadableness persuadably persuade persuaded persuadedly persuadedness persuader persuadingly persuasibility persuasible persuasibleness persuasibly persuasion persuasive persuasively persuasiveness persuasory persulphate persulphide persulphocyanate persulphocyanic persulphuric persymmetric persymmetrical pert pertain pertaining pertainment perten perthiocyanate perthiocyanic perthiotophyre perthite perthitic perthitically perthosite pertinacious pertinaciously pertinaciousness pertinacity pertinence pertinency pertinent pertinently pertinentness pertish pertly pertness perturb perturbability perturbable perturbance perturbancy perturbant perturbate perturbation perturbational perturbatious perturbative perturbator perturbatory perturbatress perturbatrix perturbed perturbedly perturbedness perturber perturbing perturbingly perturbment Pertusaria Pertusariaceae pertuse pertused pertusion pertussal pertussis perty Peru Perugian Peruginesque peruke perukeless perukier perukiership perula Perularia perulate perule Perun perusable perusal peruse peruser Peruvian Peruvianize pervade pervadence pervader pervading pervadingly pervadingness pervagate pervagation pervalvar pervasion pervasive pervasively pervasiveness perverse perversely perverseness perversion perversity perversive pervert perverted pervertedly pervertedness perverter pervertibility pervertible pervertibly pervertive perviability perviable pervicacious pervicaciously pervicaciousness pervicacity pervigilium pervious perviously perviousness pervulgate pervulgation perwitsky pes pesa Pesach pesade pesage Pesah peseta peshkar peshkash peshwa peshwaship peskily peskiness pesky peso pess pessary pessimal pessimism pessimist pessimistic pessimistically pessimize pessimum pessomancy pessoner pessular pessulus pest Pestalozzian Pestalozzianism peste pester pesterer pesteringly pesterment pesterous pestersome pestful pesthole pesthouse pesticidal pesticide pestiduct pestiferous pestiferously pestiferousness pestifugous pestify pestilence pestilenceweed pestilencewort pestilent pestilential pestilentially pestilentialness pestilently pestle pestological pestologist pestology pestproof pet petal petalage petaled Petalia petaliferous petaliform Petaliidae petaline petalism petalite petalled petalless petallike petalocerous petalodic petalodont petalodontid Petalodontidae petalodontoid Petalodus petalody petaloid petaloidal petaloideous petalomania petalon Petalostemon petalous petalwise petaly petard petardeer petardier petary Petasites petasos petasus petaurine petaurist Petaurista Petauristidae Petauroides Petaurus petchary petcock Pete pete peteca petechiae petechial petechiate peteman Peter peter Peterkin Peterloo peterman peternet petersham peterwort petful petiolar petiolary Petiolata petiolate petiolated petiole petioled Petioliventres petiolular petiolulate petiolule petiolus petit petite petiteness petitgrain petition petitionable petitional petitionarily petitionary petitionee petitioner petitionist petitionproof petitor petitory Petiveria Petiveriaceae petkin petling peto Petrarchal Petrarchan Petrarchesque Petrarchian Petrarchianism Petrarchism Petrarchist Petrarchistic Petrarchistical Petrarchize petrary petre Petrea petrean petreity petrel petrescence petrescent Petricola Petricolidae petricolous petrie petrifaction petrifactive petrifiable petrific petrificant petrificate petrification petrified petrifier petrify Petrine Petrinism Petrinist Petrinize petrissage Petrobium Petrobrusian petrochemical petrochemistry Petrogale petrogenesis petrogenic petrogeny petroglyph petroglyphic petroglyphy petrograph petrographer petrographic petrographical petrographically petrography petrohyoid petrol petrolage petrolatum petrolean petrolene petroleous petroleum petrolic petroliferous petrolific petrolist petrolithic petrolization petrolize petrologic petrological petrologically petromastoid Petromyzon Petromyzonidae petromyzont Petromyzontes Petromyzontidae petromyzontoid petronel petronella petropharyngeal petrophilous petrosa petrosal Petroselinum petrosilex petrosiliceous petrosilicious petrosphenoid petrosphenoidal petrosphere petrosquamosal petrosquamous petrostearin petrostearine petrosum petrotympanic petrous petroxolin pettable petted pettedly pettedness petter pettichaps petticoat petticoated petticoaterie petticoatery petticoatism petticoatless petticoaty pettifog pettifogger pettifoggery pettifogging pettifogulize pettifogulizer pettily pettiness pettingly pettish pettitoes pettle petty pettyfog petulance petulancy petulant petulantly petune Petunia petuntse petwood petzite Peucedanum Peucetii peucites peuhl Peul Peumus Peutingerian pew pewage pewdom pewee pewfellow pewful pewholder pewing pewit pewless pewmate pewter pewterer pewterwort pewtery pewy Peyerian peyote peyotl peyton peytrel pezantic Peziza Pezizaceae pezizaceous pezizaeform Pezizales peziziform pezizoid pezograph Pezophaps Pfaffian pfeffernuss Pfeifferella pfennig pfui pfund Phaca Phacelia phacelite phacella Phacidiaceae Phacidiales phacitis phacoanaphylaxis phacocele phacochere phacocherine phacochoere phacochoerid phacochoerine phacochoeroid Phacochoerus phacocyst phacocystectomy phacocystitis phacoglaucoma phacoid phacoidal phacoidoscope phacolite phacolith phacolysis phacomalacia phacometer phacopid Phacopidae Phacops phacosclerosis phacoscope phacotherapy Phaeacian Phaedo phaeism phaenantherous phaenanthery phaenogam Phaenogamia phaenogamian phaenogamic phaenogamous phaenogenesis phaenogenetic phaenological phaenology phaenomenal phaenomenism phaenomenon phaenozygous phaeochrous Phaeodaria phaeodarian phaeophore Phaeophyceae phaeophycean phaeophyceous phaeophyll Phaeophyta phaeophytin phaeoplast Phaeosporales phaeospore Phaeosporeae phaeosporous Phaet Phaethon Phaethonic Phaethontes Phaethontic Phaethontidae Phaethusa phaeton phage phagedena phagedenic phagedenical phagedenous Phagineae phagocytable phagocytal phagocyte phagocyter phagocytic phagocytism phagocytize phagocytoblast phagocytolysis phagocytolytic phagocytose phagocytosis phagodynamometer phagolysis phagolytic phagomania phainolion Phainopepla Phajus Phalacrocoracidae phalacrocoracine Phalacrocorax phalacrosis Phalaecean Phalaecian Phalaenae Phalaenidae phalaenopsid Phalaenopsis phalangal phalange phalangeal phalangean phalanger Phalangeridae Phalangerinae phalangerine phalanges phalangette phalangian phalangic phalangid Phalangida phalangidan Phalangidea phalangidean Phalangides phalangiform Phalangigrada phalangigrade phalangigrady phalangiid Phalangiidae phalangist Phalangista Phalangistidae phalangistine phalangite phalangitic phalangitis Phalangium phalangologist phalangology phalansterial phalansterian phalansterianism phalansteric phalansterism phalansterist phalanstery phalanx phalanxed phalarica Phalaris Phalarism phalarope Phalaropodidae phalera phalerate phalerated Phaleucian Phallaceae phallaceous Phallales phallalgia phallaneurysm phallephoric phallic phallical phallicism phallicist phallin phallism phallist phallitis phallocrypsis phallodynia phalloid phalloncus phalloplasty phallorrhagia phallus Phanar Phanariot Phanariote phanatron phaneric phanerite Phanerocarpae Phanerocarpous Phanerocephala phanerocephalous phanerocodonic phanerocryst phanerocrystalline phanerogam Phanerogamia phanerogamian phanerogamic phanerogamous phanerogamy phanerogenetic phanerogenic Phaneroglossa phaneroglossal phaneroglossate phaneromania phaneromere phaneromerous phaneroscope phanerosis phanerozoic phanerozonate Phanerozonia phanic phano phansigar phantascope phantasia Phantasiast Phantasiastic phantasist phantasize phantasm phantasma phantasmagoria phantasmagorial phantasmagorially phantasmagorian phantasmagoric phantasmagorical phantasmagorist phantasmagory phantasmal phantasmalian phantasmality phantasmally phantasmascope phantasmata Phantasmatic phantasmatic phantasmatical phantasmatically phantasmatography phantasmic phantasmical phantasmically Phantasmist phantasmogenesis phantasmogenetic phantasmograph phantasmological phantasmology phantast phantasy phantom phantomatic phantomic phantomical phantomically Phantomist phantomize phantomizer phantomland phantomlike phantomnation phantomry phantomship phantomy phantoplex phantoscope Pharaoh Pharaonic Pharaonical Pharbitis phare Phareodus Pharian Pharisaean Pharisaic pharisaical pharisaically pharisaicalness Pharisaism Pharisaist Pharisean Pharisee pharisee Phariseeism pharmacal pharmaceutic pharmaceutical pharmaceutically pharmaceutics pharmaceutist pharmacic pharmacist pharmacite pharmacodiagnosis pharmacodynamic pharmacodynamical pharmacodynamics pharmacoendocrinology pharmacognosia pharmacognosis pharmacognosist pharmacognostical pharmacognostically pharmacognostics pharmacognosy pharmacography pharmacolite pharmacologia pharmacologic pharmacological pharmacologically pharmacologist pharmacology pharmacomania pharmacomaniac pharmacomaniacal pharmacometer pharmacopedia pharmacopedic pharmacopedics pharmacopeia pharmacopeial pharmacopeian pharmacophobia pharmacopoeia pharmacopoeial pharmacopoeian pharmacopoeist pharmacopolist pharmacoposia pharmacopsychology pharmacosiderite pharmacotherapy pharmacy pharmakos pharmic pharmuthi pharology Pharomacrus pharos Pharsalian pharyngal pharyngalgia pharyngalgic pharyngeal pharyngectomy pharyngemphraxis pharynges pharyngic pharyngismus pharyngitic pharyngitis pharyngoamygdalitis pharyngobranch pharyngobranchial pharyngobranchiate Pharyngobranchii pharyngocele pharyngoceratosis pharyngodynia pharyngoepiglottic pharyngoepiglottidean pharyngoesophageal pharyngoglossal pharyngoglossus pharyngognath Pharyngognathi pharyngognathous pharyngographic pharyngography pharyngokeratosis pharyngolaryngeal pharyngolaryngitis pharyngolith pharyngological pharyngology pharyngomaxillary pharyngomycosis pharyngonasal pharyngopalatine pharyngopalatinus pharyngoparalysis pharyngopathy pharyngoplasty pharyngoplegia pharyngoplegic pharyngoplegy pharyngopleural Pharyngopneusta pharyngopneustal pharyngorhinitis pharyngorhinoscopy pharyngoscleroma pharyngoscope pharyngoscopy pharyngospasm pharyngotherapy pharyngotomy pharyngotonsillitis pharyngotyphoid pharyngoxerosis pharynogotome pharynx Phascaceae phascaceous Phascogale Phascolarctinae Phascolarctos phascolome Phascolomyidae Phascolomys Phascolonus Phascum phase phaseal phaseless phaselin phasemeter phasemy Phaseolaceae phaseolin phaseolous phaseolunatin Phaseolus phaseometer phases Phasianella Phasianellidae phasianic phasianid Phasianidae Phasianinae phasianine phasianoid Phasianus phasic Phasiron phasis phasm phasma phasmatid Phasmatida Phasmatidae Phasmatodea phasmatoid Phasmatoidea phasmatrope phasmid Phasmida Phasmidae phasmoid phasogeneous phasotropy pheal pheasant pheasantry pheasantwood Phebe Phecda Phegopteris Pheidole phellandrene phellem Phellodendron phelloderm phellodermal phellogen phellogenetic phellogenic phellonic phelloplastic phelloplastics phelonion phemic Phemie phenacaine phenacetin phenaceturic phenacite Phenacodontidae Phenacodus phenacyl phenakism phenakistoscope Phenalgin phenanthrene phenanthridine phenanthridone phenanthrol phenanthroline phenarsine phenate phenazine phenazone phene phenegol phenene phenethyl phenetidine phenetole phengite phengitical phenic phenicate phenicious phenicopter phenin phenmiazine phenobarbital phenocoll phenocopy phenocryst phenocrystalline phenogenesis phenogenetic phenol phenolate phenolic phenolization phenolize phenological phenologically phenologist phenology phenoloid phenolphthalein phenolsulphonate phenolsulphonephthalein phenolsulphonic phenomena phenomenal phenomenalism phenomenalist phenomenalistic phenomenalistically phenomenality phenomenalization phenomenalize phenomenally phenomenic phenomenical phenomenism phenomenist phenomenistic phenomenize phenomenological phenomenologically phenomenology phenomenon phenoplast phenoplastic phenoquinone phenosafranine phenosal phenospermic phenospermy phenothiazine phenotype phenotypic phenotypical phenotypically phenoxazine phenoxid phenoxide phenozygous Pheny phenyl phenylacetaldehyde phenylacetamide phenylacetic phenylalanine phenylamide phenylamine phenylate phenylation phenylboric phenylcarbamic phenylcarbimide phenylene phenylenediamine phenylethylene phenylglycine phenylglycolic phenylglyoxylic phenylhydrazine phenylhydrazone phenylic phenylmethane pheon pheophyl pheophyll pheophytin Pherecratean Pherecratian Pherecratic Pherephatta pheretrer Pherkad Pherophatta Phersephatta Phersephoneia phew phi phial phiale phialful phialide phialine phiallike phialophore phialospore Phidiac Phidian Phigalian Phil Philadelphian Philadelphianism philadelphite Philadelphus philadelphy philalethist philamot Philander philander philanderer philanthid Philanthidae philanthrope philanthropian philanthropic philanthropical philanthropically philanthropinism philanthropinist Philanthropinum philanthropism philanthropist philanthropistic philanthropize philanthropy Philanthus philantomba philarchaist philaristocracy philatelic philatelical philatelically philatelism philatelist philatelistic philately Philathea philathletic philematology Philepitta Philepittidae Philesia Philetaerus philharmonic philhellene philhellenic philhellenism philhellenist philhippic philhymnic philiater Philip Philippa Philippan Philippian Philippic philippicize Philippine Philippines Philippism Philippist Philippistic Philippizate philippize philippizer philippus Philistia Philistian Philistine Philistinely Philistinian Philistinic Philistinish Philistinism Philistinize philliloo phillipsine phillipsite Phillis Phillyrea phillyrin philobiblian philobiblic philobiblical philobiblist philobotanic philobotanist philobrutish philocalic philocalist philocaly philocathartic philocatholic philocomal Philoctetes philocubist philocynic philocynical philocynicism philocyny philodemic Philodendron philodespot philodestructiveness Philodina Philodinidae philodox philodoxer philodoxical philodramatic philodramatist philofelist philofelon philogarlic philogastric philogeant philogenitive philogenitiveness philograph philographic philogynaecic philogynist philogynous philogyny Philohela philohellenian philokleptic philoleucosis philologaster philologastry philologer philologian philologic philological philologically philologist philologistic philologize philologue philology Philomachus philomath philomathematic philomathematical philomathic philomathical philomathy philomel Philomela philomelanist philomuse philomusical philomystic philonatural philoneism Philonian Philonic Philonism Philonist philonium philonoist philopagan philopater philopatrian philopena philophilosophos philopig philoplutonic philopoet philopogon philopolemic philopolemical philopornist philoprogeneity philoprogenitive philoprogenitiveness philopterid Philopteridae philopublican philoradical philorchidaceous philornithic philorthodox philosoph philosophaster philosophastering philosophastry philosophedom philosopheme philosopher philosopheress philosophership philosophic philosophical philosophically philosophicalness philosophicide philosophicohistorical philosophicojuristic philosophicolegal philosophicoreligious philosophicotheological philosophism philosophist philosophister philosophistic philosophistical philosophization philosophize philosophizer philosophling philosophobia philosophocracy philosophuncule philosophunculist philosophy philotadpole philotechnic philotechnical philotechnist philothaumaturgic philotheism philotheist philotheistic philotheosophical philotherian philotherianism Philotria Philoxenian philoxygenous philozoic philozoist philozoonist philter philterer philterproof philtra philtrum Philydraceae philydraceous Philyra phimosed phimosis phimotic Phineas Phiomia phit phiz phizes phizog phlebalgia phlebangioma phlebarteriectasia phlebarteriodialysis phlebectasia phlebectasis phlebectasy phlebectomy phlebectopia phlebectopy phlebemphraxis phlebenteric phlebenterism phlebitic phlebitis Phlebodium phlebogram phlebograph phlebographical phlebography phleboid phleboidal phlebolite phlebolith phlebolithiasis phlebolithic phlebolitic phlebological phlebology phlebometritis phlebopexy phleboplasty phleborrhage phleborrhagia phleborrhaphy phleborrhexis phlebosclerosis phlebosclerotic phlebostasia phlebostasis phlebostenosis phlebostrepsis phlebothrombosis phlebotome phlebotomic phlebotomical phlebotomically phlebotomist phlebotomization phlebotomize Phlebotomus phlebotomus phlebotomy Phlegethon Phlegethontal Phlegethontic phlegm phlegma phlegmagogue phlegmasia phlegmatic phlegmatical phlegmatically phlegmaticalness phlegmaticly phlegmaticness phlegmatism phlegmatist phlegmatous phlegmless phlegmon phlegmonic phlegmonoid phlegmonous phlegmy Phleum phlobaphene phlobatannin phloem phloeophagous phloeoterma phlogisma phlogistian phlogistic phlogistical phlogisticate phlogistication phlogiston phlogistonism phlogistonist phlogogenetic phlogogenic phlogogenous phlogopite phlogosed Phlomis phloretic phloroglucic phloroglucin phlorone phloxin pho phobiac phobic phobism phobist phobophobia Phobos phoby phoca phocacean phocaceous Phocaean Phocaena Phocaenina phocaenine phocal Phocean phocenate phocenic phocenin Phocian phocid Phocidae phociform Phocinae phocine phocodont Phocodontia phocodontic Phocoena phocoid phocomelia phocomelous phocomelus Phoebe phoebe Phoebean Phoenicaceae phoenicaceous Phoenicales phoenicean Phoenician Phoenicianism Phoenicid phoenicite Phoenicize phoenicochroite Phoenicopteridae Phoenicopteriformes phoenicopteroid Phoenicopteroideae phoenicopterous Phoenicopterus Phoeniculidae Phoeniculus phoenicurous phoenigm Phoenix phoenix phoenixity phoenixlike phoh pholad Pholadacea pholadian pholadid Pholadidae Pholadinea pholadoid Pholas pholcid Pholcidae pholcoid Pholcus pholido pholidolite pholidosis Pholidota pholidote Pholiota Phoma Phomopsis phon phonal phonasthenia phonate phonation phonatory phonautogram phonautograph phonautographic phonautographically phone phoneidoscope phoneidoscopic Phonelescope phoneme phonemic phonemics phonendoscope phonesis phonestheme phonetic phonetical phonetically phonetician phoneticism phoneticist phoneticization phoneticize phoneticogrammatical phoneticohieroglyphic phonetics phonetism phonetist phonetization phonetize phoniatrics phoniatry phonic phonics phonikon phonism phono phonocamptic phonocinematograph phonodeik phonodynamograph phonoglyph phonogram phonogramic phonogramically phonogrammatic phonogrammatical phonogrammic phonogrammically phonograph phonographer phonographic phonographical phonographically phonographist phonography phonolite phonolitic phonologer phonologic phonological phonologically phonologist phonology phonometer phonometric phonometry phonomimic phonomotor phonopathy phonophile phonophobia phonophone phonophore phonophoric phonophorous phonophote phonophotography phonophotoscope phonophotoscopic phonoplex phonoscope phonotelemeter phonotype phonotyper phonotypic phonotypical phonotypically phonotypist phonotypy phony phoo Phora Phoradendron phoranthium phoresis phoresy phoria phorid Phoridae phorminx Phormium phorology phorometer phorometric phorometry phorone phoronic phoronid Phoronida Phoronidea Phoronis phoronomia phoronomic phoronomically phoronomics phoronomy Phororhacidae Phororhacos phoroscope phorozooid phos phose phosgene phosgenic phosgenite phosis phosphagen phospham phosphamic phosphamide phosphamidic phosphammonium phosphatase phosphate phosphated phosphatemia phosphatese phosphatic phosphatide phosphation phosphatization phosphatize phosphaturia phosphaturic phosphene phosphenyl phosphide phosphinate phosphine phosphinic phosphite phospho phosphoaminolipide phosphocarnic phosphocreatine phosphoferrite phosphoglycerate phosphoglyceric phosphoglycoprotein phospholipide phospholipin phosphomolybdate phosphomolybdic phosphonate phosphonic phosphonium phosphophyllite phosphoprotein phosphor phosphorate phosphore phosphoreal phosphorent phosphoreous phosphoresce phosphorescence phosphorescent phosphorescently phosphoreted phosphorhidrosis phosphori phosphoric phosphorical phosphoriferous phosphorism phosphorite phosphoritic phosphorize phosphorogen phosphorogenic phosphorograph phosphorographic phosphorography phosphoroscope phosphorous phosphoruria phosphorus phosphoryl phosphorylase phosphorylation phosphosilicate phosphotartaric phosphotungstate phosphotungstic phosphowolframic phosphuranylite phosphuret phosphuria phosphyl phossy phot photaesthesia photaesthesis photaesthetic photal photalgia photechy photelectrograph photeolic photerythrous photesthesis photic photics Photinia Photinian Photinianism photism photistic photo photoactinic photoactivate photoactivation photoactive photoactivity photoaesthetic photoalbum photoalgraphy photoanamorphosis photoaquatint Photobacterium photobathic photobiotic photobromide photocampsis photocatalysis photocatalyst photocatalytic photocatalyzer photocell photocellulose photoceptor photoceramic photoceramics photoceramist photochemic photochemical photochemically photochemigraphy photochemist photochemistry photochloride photochlorination photochromascope photochromatic photochrome photochromic photochromography photochromolithograph photochromoscope photochromotype photochromotypy photochromy photochronograph photochronographic photochronographical photochronographically photochronography photocollograph photocollographic photocollography photocollotype photocombustion photocompose photocomposition photoconductivity photocopier photocopy photocrayon photocurrent photodecomposition photodensitometer photodermatic photodermatism photodisintegration photodissociation photodrama photodramatic photodramatics photodramatist photodramaturgic photodramaturgy photodrome photodromy photodynamic photodynamical photodynamically photodynamics photodysphoria photoelastic photoelasticity photoelectric photoelectrical photoelectrically photoelectricity photoelectron photoelectrotype photoemission photoemissive photoengrave photoengraver photoengraving photoepinastic photoepinastically photoepinasty photoesthesis photoesthetic photoetch photoetcher photoetching photofilm photofinish photofinisher photofinishing photofloodlamp photogalvanograph photogalvanographic photogalvanography photogastroscope photogelatin photogen photogene photogenetic photogenic photogenically photogenous photoglyph photoglyphic photoglyphography photoglyphy photoglyptic photoglyptography photogram photogrammeter photogrammetric photogrammetrical photogrammetry photograph photographable photographee photographer photographeress photographess photographic photographical photographically photographist photographize photographometer photography photogravure photogravurist photogyric photohalide photoheliograph photoheliographic photoheliography photoheliometer photohyponastic photohyponastically photohyponasty photoimpression photoinactivation photoinduction photoinhibition photointaglio photoionization photoisomeric photoisomerization photokinesis photokinetic photolith photolitho photolithograph photolithographer photolithographic photolithography photologic photological photologist photology photoluminescence photoluminescent photolysis photolyte photolytic photoma photomacrograph photomagnetic photomagnetism photomap photomapper photomechanical photomechanically photometeor photometer photometric photometrical photometrically photometrician photometrist photometrograph photometry photomezzotype photomicrogram photomicrograph photomicrographer photomicrographic photomicrography photomicroscope photomicroscopic photomicroscopy photomontage photomorphosis photomural photon photonastic photonasty photonegative photonephograph photonephoscope photoneutron photonosus photooxidation photooxidative photopathic photopathy photoperceptive photoperimeter photoperiod photoperiodic photoperiodism photophane photophile photophilic photophilous photophily photophobe photophobia photophobic photophobous photophone photophonic photophony photophore photophoresis photophosphorescent photophygous photophysical photophysicist photopia photopic photopile photopitometer photoplay photoplayer photoplaywright photopography photopolarigraph photopolymerization photopositive photoprint photoprinter photoprinting photoprocess photoptometer photoradio photoradiogram photoreception photoreceptive photoreceptor photoregression photorelief photoresistance photosalt photosantonic photoscope photoscopic photoscopy photosculptural photosculpture photosensitive photosensitiveness photosensitivity photosensitization photosensitize photosensitizer photosensory photospectroheliograph photospectroscope photospectroscopic photospectroscopical photospectroscopy photosphere photospheric photostability photostable Photostat photostat photostationary photostereograph photosurveying photosyntax photosynthate photosynthesis photosynthesize photosynthetic photosynthetically photosynthometer phototachometer phototachometric phototachometrical phototachometry phototactic phototactically phototactism phototaxis phototaxy phototechnic phototelegraph phototelegraphic phototelegraphically phototelegraphy phototelephone phototelephony phototelescope phototelescopic phototheodolite phototherapeutic phototherapeutics phototherapic phototherapist phototherapy photothermic phototonic phototonus phototopographic phototopographical phototopography phototrichromatic phototrope phototrophic phototrophy phototropic phototropically phototropism phototropy phototube phototype phototypic phototypically phototypist phototypographic phototypography phototypy photovisual photovitrotype photovoltaic photoxylography photozinco photozincograph photozincographic photozincography photozincotype photozincotypy photuria Phractamphibia phragma Phragmidium Phragmites phragmocone phragmoconic Phragmocyttares phragmocyttarous phragmoid phragmosis phrasable phrasal phrasally phrase phraseable phraseless phrasemaker phrasemaking phraseman phrasemonger phrasemongering phrasemongery phraseogram phraseograph phraseographic phraseography phraseological phraseologically phraseologist phraseology phraser phrasify phrasiness phrasing phrasy phrator phratral phratria phratriac phratrial phratry phreatic phreatophyte phrenesia phrenesiac phrenesis phrenetic phrenetically phreneticness phrenic phrenicectomy phrenicocolic phrenicocostal phrenicogastric phrenicoglottic phrenicohepatic phrenicolienal phrenicopericardiac phrenicosplenic phrenicotomy phrenics phrenitic phrenitis phrenocardia phrenocardiac phrenocolic phrenocostal phrenodynia phrenogastric phrenoglottic phrenogram phrenograph phrenography phrenohepatic phrenologer phrenologic phrenological phrenologically phrenologist phrenologize phrenology phrenomagnetism phrenomesmerism phrenopathia phrenopathic phrenopathy phrenopericardiac phrenoplegia phrenoplegy phrenosin phrenosinic phrenospasm phrenosplenic phronesis Phronima Phronimidae phrontisterion phrontisterium phrontistery Phryganea phryganeid Phryganeidae phryganeoid Phrygian Phrygianize phrygium Phryma Phrymaceae phrymaceous phrynid Phrynidae phrynin phrynoid Phrynosoma phthalacene phthalan phthalanilic phthalate phthalazin phthalazine phthalein phthaleinometer phthalic phthalid phthalide phthalimide phthalin phthalocyanine phthalyl phthanite Phthartolatrae phthinoid phthiocol phthiriasis Phthirius phthirophagous phthisic phthisical phthisicky phthisiogenesis phthisiogenetic phthisiogenic phthisiologist phthisiology phthisiophobia phthisiotherapeutic phthisiotherapy phthisipneumonia phthisipneumony phthisis phthongal phthongometer phthor phthoric phu phugoid phulkari phulwa phulwara phut Phyciodes phycite Phycitidae phycitol phycochromaceae phycochromaceous phycochrome Phycochromophyceae phycochromophyceous phycocyanin phycocyanogen Phycodromidae phycoerythrin phycography phycological phycologist phycology Phycomyces phycomycete Phycomycetes phycomycetous phycophaein phycoxanthin phycoxanthine phygogalactic phyla phylacobiosis phylacobiotic phylacteric phylacterical phylacteried phylacterize phylactery phylactic phylactocarp phylactocarpal Phylactolaema Phylactolaemata phylactolaematous Phylactolema Phylactolemata phylarch phylarchic phylarchical phylarchy phyle phylephebic phylesis phyletic phyletically phyletism phylic Phyllachora Phyllactinia phyllade Phyllanthus phyllary Phyllaurea phylliform phyllin phylline Phyllis phyllite phyllitic Phyllitis Phyllium phyllobranchia phyllobranchial phyllobranchiate Phyllocactus phyllocarid Phyllocarida phyllocaridan Phylloceras phyllocerate Phylloceratidae phylloclad phylloclade phyllocladioid phyllocladium phyllocladous phyllocyanic phyllocyanin phyllocyst phyllocystic phyllode phyllodial phyllodination phyllodineous phyllodiniation phyllodinous phyllodium Phyllodoce phyllody phylloerythrin phyllogenetic phyllogenous phylloid phylloidal phylloideous phyllomancy phyllomania phyllome phyllomic phyllomorph phyllomorphic phyllomorphosis phyllomorphy Phyllophaga phyllophagous phyllophore phyllophorous phyllophyllin phyllophyte phyllopod Phyllopoda phyllopodan phyllopode phyllopodiform phyllopodium phyllopodous phylloporphyrin Phyllopteryx phylloptosis phyllopyrrole phyllorhine phyllorhinine phylloscopine Phylloscopus phyllosiphonic phyllosoma Phyllosomata phyllosome Phyllospondyli phyllospondylous Phyllostachys Phyllosticta Phyllostoma Phyllostomatidae Phyllostomatinae phyllostomatoid phyllostomatous phyllostome Phyllostomidae Phyllostominae phyllostomine phyllostomous Phyllostomus phyllotactic phyllotactical phyllotaxis phyllotaxy phyllous phylloxanthin Phylloxera phylloxeran phylloxeric Phylloxeridae phyllozooid phylogenetic phylogenetical phylogenetically phylogenic phylogenist phylogeny phylogerontic phylogerontism phylography phylology phylon phyloneanic phylonepionic phylum phyma phymata phymatic phymatid Phymatidae Phymatodes phymatoid phymatorhysin phymatosis Phymosia Physa physagogue Physalia physalian Physaliidae Physalis physalite Physalospora Physapoda Physaria Physcia Physciaceae physcioid Physcomitrium Physeter Physeteridae Physeterinae physeterine physeteroid Physeteroidea physharmonica physianthropy physiatric physiatrical physiatrics physic physical physicalism physicalist physicalistic physicalistically physicality physically physicalness physician physicianary physiciancy physicianed physicianer physicianess physicianless physicianly physicianship physicism physicist physicked physicker physicking physicky physicoastronomical physicobiological physicochemic physicochemical physicochemically physicochemist physicochemistry physicogeographical physicologic physicological physicomathematical physicomathematics physicomechanical physicomedical physicomental physicomorph physicomorphic physicomorphism physicooptics physicophilosophical physicophilosophy physicophysiological physicopsychical physicosocial physicotheological physicotheologist physicotheology physicotherapeutic physicotherapeutics physicotherapy physics Physidae physiform physiochemical physiochemically physiocracy physiocrat physiocratic physiocratism physiocratist physiogenesis physiogenetic physiogenic physiogeny physiognomic physiognomical physiognomically physiognomics physiognomist physiognomize physiognomonic physiognomonical physiognomy physiogony physiographer physiographic physiographical physiographically physiography physiolater physiolatrous physiolatry physiologer physiologian physiological physiologically physiologicoanatomic physiologist physiologize physiologue physiologus physiology physiopathological physiophilist physiophilosopher physiophilosophical physiophilosophy physiopsychic physiopsychical physiopsychological physiopsychology physiosociological physiosophic physiosophy physiotherapeutic physiotherapeutical physiotherapeutics physiotherapist physiotherapy physiotype physiotypy physique physiqued physitheism physitheistic physitism physiurgic physiurgy physocarpous Physocarpus physocele physoclist Physoclisti physoclistic physoclistous Physoderma physogastric physogastrism physogastry physometra Physonectae physonectous Physophorae physophoran physophore physophorous physopod Physopoda physopodan Physostegia Physostigma physostigmine physostomatous physostome Physostomi physostomous phytalbumose phytase Phytelephas Phyteus phytic phytiferous phytiform phytin phytivorous phytobacteriology phytobezoar phytobiological phytobiology phytochemical phytochemistry phytochlorin phytocidal phytodynamics phytoecological phytoecologist phytoecology Phytoflagellata phytogamy phytogenesis phytogenetic phytogenetical phytogenetically phytogenic phytogenous phytogeny phytogeographer phytogeographic phytogeographical phytogeographically phytogeography phytoglobulin phytograph phytographer phytographic phytographical phytographist phytography phytohormone phytoid phytol Phytolacca Phytolaccaceae phytolaccaceous phytolatrous phytolatry phytolithological phytolithologist phytolithology phytologic phytological phytologically phytologist phytology phytoma Phytomastigina Phytomastigoda phytome phytomer phytometer phytometric phytometry phytomonad Phytomonadida Phytomonadina Phytomonas phytomorphic phytomorphology phytomorphosis phyton phytonic phytonomy phytooecology phytopaleontologic phytopaleontological phytopaleontologist phytopaleontology phytoparasite phytopathogen phytopathogenic phytopathologic phytopathological phytopathologist phytopathology Phytophaga phytophagan phytophagic Phytophagineae phytophagous phytophagy phytopharmacologic phytopharmacology phytophenological phytophenology phytophil phytophilous Phytophthora phytophylogenetic phytophylogenic phytophylogeny phytophysiological phytophysiology phytoplankton phytopsyche phytoptid Phytoptidae phytoptose phytoptosis Phytoptus phytorhodin phytosaur Phytosauria phytosaurian phytoserologic phytoserological phytoserologically phytoserology phytosis phytosociologic phytosociological phytosociologically phytosociologist phytosociology phytosterin phytosterol phytostrote phytosynthesis phytotaxonomy phytotechny phytoteratologic phytoteratological phytoteratologist phytoteratology Phytotoma Phytotomidae phytotomist phytotomy phytotopographical phytotopography phytotoxic phytotoxin phytovitellin Phytozoa phytozoan Phytozoaria phytozoon phytyl pi pia piaba piacaba piacle piacular piacularity piacularly piacularness piaculum piaffe piaffer pial pialyn pian pianette pianic pianino pianism pianissimo pianist pianiste pianistic pianistically Piankashaw piannet piano pianoforte pianofortist pianograph Pianokoto Pianola pianola pianolist pianologue piarhemia piarhemic Piarist Piaroa Piaroan Piaropus Piarroan piassava Piast piaster piastre piation piazine piazza piazzaed piazzaless piazzalike piazzian pibcorn piblokto pibroch pic Pica pica picador picadura Picae pical picamar picara Picard picarel picaresque Picariae picarian Picarii picaro picaroon picary picayune picayunish picayunishly picayunishness piccadill piccadilly piccalilli piccolo piccoloist pice Picea Picene picene Picenian piceoferruginous piceotestaceous piceous piceworth pichi pichiciago pichuric pichurim Pici Picidae piciform Piciformes Picinae picine pick pickaback pickable pickableness pickage pickaninny pickaroon pickaway pickax picked pickedly pickedness pickee pickeer picker pickerel pickerelweed pickering pickeringite pickery picket picketboat picketeer picketer pickfork pickietar pickings pickle picklelike pickleman pickler pickleweed pickleworm picklock pickman pickmaw picknick picknicker pickover pickpocket pickpocketism pickpocketry pickpole pickpurse pickshaft picksman picksmith picksome picksomeness pickthank pickthankly pickthankness pickthatch picktooth pickup pickwick Pickwickian Pickwickianism Pickwickianly pickwork picky picnic picnicker picnickery Picnickian picnickish picnicky pico picofarad picoid picoline picolinic picot picotah picotee picotite picqueter picra picramic Picramnia picrasmin picrate picrated picric Picris picrite picrocarmine Picrodendraceae Picrodendron picroerythrin picrol picrolite picromerite picropodophyllin picrorhiza picrorhizin picrotin picrotoxic picrotoxin picrotoxinin picryl Pict pict pictarnie Pictavi Pictish Pictland pictogram pictograph pictographic pictographically pictography Pictones pictoradiogram pictorial pictorialism pictorialist pictorialization pictorialize pictorially pictorialness pictoric pictorical pictorically picturability picturable picturableness picturably pictural picture picturecraft pictured picturedom picturedrome pictureful pictureless picturelike picturely picturemaker picturemaking picturer picturesque picturesquely picturesqueness picturesquish picturization picturize pictury picucule picuda picudilla picudo picul piculet piculule Picumninae Picumnus Picunche Picuris Picus pidan piddle piddler piddling piddock pidgin pidjajap pie piebald piebaldism piebaldly piebaldness piece pieceable pieceless piecemaker piecemeal piecemealwise piecen piecener piecer piecette piecewise piecework pieceworker piecing piecrust pied piedfort piedly piedmont piedmontal Piedmontese piedmontite piedness Piegan piehouse pieless pielet pielum piemag pieman piemarker pien pienanny piend piepan pieplant piepoudre piepowder pieprint pier pierage pierce pierceable pierced piercel pierceless piercent piercer piercing piercingly piercingness pierdrop pierhead Pierian pierid Pieridae Pierides Pieridinae pieridine Pierinae pierine Pieris pierless pierlike Pierre Pierrot pierrot pierrotic pieshop piet pietas pietic pietism Pietist pietist pietistic pietistical pietistically pietose piety piewife piewipe piewoman piezo piezochemical piezochemistry piezocrystallization piezoelectric piezoelectrically piezoelectricity piezometer piezometric piezometrical piezometry piff piffle piffler pifine pig pigbelly pigdan pigdom pigeon pigeonable pigeonberry pigeoneer pigeoner pigeonfoot pigeongram pigeonhearted pigeonhole pigeonholer pigeonman pigeonry pigeontail pigeonweed pigeonwing pigeonwood pigface pigfish pigflower pigfoot pigful piggery piggin pigging piggish piggishly piggishness piggle piggy pighead pigheaded pigheadedly pigheadedness pigherd pightle pigless piglet pigling piglinghood pigly pigmaker pigmaking pigman pigment pigmental pigmentally pigmentary pigmentation pigmentize pigmentolysis pigmentophage pigmentose Pigmy pignolia pignon pignorate pignoration pignoratitious pignorative pignus pignut pigpen pigritude pigroot pigsconce pigskin pigsney pigstick pigsticker pigsty pigtail pigwash pigweed pigwidgeon pigyard piitis pik pika pike piked pikel pikelet pikeman pikemonger piker pikestaff piketail pikey piki piking pikle piky pilage pilandite pilapil pilar pilary pilaster pilastered pilastering pilastrade pilastraded pilastric Pilate Pilatian pilau pilaued pilch pilchard pilcher pilcorn pilcrow pile Pilea pileata pileate pileated piled pileiform pileolated pileolus pileorhiza pileorhize pileous piler piles pileus pileweed pilework pileworm pilewort pilfer pilferage pilferer pilfering pilferingly pilferment pilgarlic pilgarlicky pilger pilgrim pilgrimage pilgrimager pilgrimatic pilgrimatical pilgrimdom pilgrimer pilgrimess pilgrimism pilgrimize pilgrimlike pilgrimwise pili pilidium pilifer piliferous piliform piligan piliganine piligerous pilikai pililloo pilimiction pilin piline piling pilipilula pilkins pill pillage pillageable pillagee pillager pillar pillared pillaret pillaring pillarist pillarize pillarlet pillarlike pillarwise pillary pillas pillbox pilled pilledness pillet pilleus pillion pilliver pilliwinks pillmaker pillmaking pillmonger pillorization pillorize pillory pillow pillowcase pillowing pillowless pillowmade pillowwork pillowy pillworm pillwort pilm pilmy Pilobolus pilocarpidine pilocarpine Pilocarpus Pilocereus pilocystic piloerection pilomotor pilon pilonidal pilori pilose pilosebaceous pilosine pilosis pilosism pilosity pilot pilotage pilotaxitic pilotee pilothouse piloting pilotism pilotless pilotman pilotry pilotship pilotweed pilous Pilpai Pilpay pilpul pilpulist pilpulistic piltock pilula pilular Pilularia pilule pilulist pilulous pilum Pilumnus pilus pilwillet pily Pima Piman pimaric pimelate Pimelea pimelic pimelite pimelitis Pimenta pimento pimenton pimgenet pimienta pimiento pimlico pimola pimp pimperlimpimp pimpernel pimpery Pimpinella pimping pimpish Pimpla pimple pimpleback pimpled pimpleproof Pimplinae pimpliness pimplo pimploe pimplous pimply pimpship pin pina Pinaceae pinaceous pinaces pinachrome pinacle Pinacoceras Pinacoceratidae pinacocytal pinacocyte pinacoid pinacoidal pinacol pinacolate pinacolic pinacolin pinacone pinacoteca pinaculum Pinacyanol pinafore pinakiolite pinakoidal pinakotheke Pinal Pinaleno Pinales pinang pinaster pinatype pinaverdol pinax pinball pinbefore pinbone pinbush pincase pincement pincer pincerlike pincers pincerweed pinch pinchable pinchback pinchbeck pinchbelly pinchcock pinchcommons pinchcrust pinche pinched pinchedly pinchedness pinchem pincher pinchfist pinchfisted pinchgut pinching pinchingly pinchpenny Pincian Pinckneya pincoffin pincpinc Pinctada pincushion pincushiony pind pinda Pindari Pindaric pindarical pindarically Pindarism Pindarist Pindarize Pindarus pinder pindling pindy pine pineal pinealism pinealoma pineapple pined pinedrops pineland pinene piner pinery pinesap pinetum pineweed pinewoods piney pinfall pinfeather pinfeathered pinfeatherer pinfeathery pinfish pinfold ping pingle pingler pingue pinguecula pinguedinous pinguefaction pinguefy pinguescence pinguescent Pinguicula pinguicula Pinguiculaceae pinguiculaceous pinguid pinguidity pinguiferous pinguin pinguinitescent pinguite pinguitude pinguitudinous pinhead pinheaded pinheadedness pinhold pinhole pinhook pinic pinicoline pinicolous piniferous piniform pining piningly pinion pinioned pinionless pinionlike pinipicrin pinitannic pinite pinitol pinivorous pinjane pinjra pink pinkberry pinked pinkeen pinken pinker Pinkerton Pinkertonism pinkeye pinkfish pinkie pinkify pinkily pinkiness pinking pinkish pinkishness pinkly pinkness pinkroot pinksome Pinkster pinkweed pinkwood pinkwort pinky pinless pinlock pinmaker Pinna pinna pinnace pinnacle pinnaclet pinnae pinnaglobin pinnal pinnate pinnated pinnatedly pinnately pinnatifid pinnatifidly pinnatilobate pinnatilobed pinnation pinnatipartite pinnatiped pinnatisect pinnatisected pinnatodentate pinnatopectinate pinnatulate pinned pinnel pinner pinnet Pinnidae pinniferous pinniform pinnigerous Pinnigrada pinnigrade pinninervate pinninerved pinning pinningly pinniped Pinnipedia pinnipedian pinnisect pinnisected pinnitarsal pinnitentaculate pinniwinkis pinnock pinnoite pinnotere pinnothere Pinnotheres pinnotherian Pinnotheridae pinnula pinnular pinnulate pinnulated pinnule pinnulet pinny pino pinochle pinocytosis pinole pinoleum pinolia pinolin pinon pinonic pinpillow pinpoint pinprick pinproof pinrail pinrowed pinscher pinsons pint pinta pintadera pintado pintadoite pintail pintano pinte pintle pinto pintura pinulus Pinus pinweed pinwing pinwork pinworm piny pinyl pinyon pioneer pioneerdom pioneership pionnotes pioscope pioted piotine piotty pioury pious piously piousness Pioxe pip pipa pipage pipal pipe pipeage pipecoline pipecolinic piped pipefish pipeful pipelayer pipeless pipelike pipeline pipeman pipemouth Piper piper Piperaceae piperaceous Piperales piperate piperazin piperazine piperic piperide piperideine piperidge piperidide piperidine piperine piperitious piperitone piperly piperno piperoid piperonal piperonyl pipery piperylene pipestapple pipestem pipestone pipet pipette pipewalker pipewood pipework pipewort pipi Pipidae Pipil Pipile Pipilo piping pipingly pipingness pipiri pipistrel pipistrelle Pipistrellus pipit pipkin pipkinet pipless pipped pipper pippin pippiner pippinface pippy Pipra Pipridae Piprinae piprine piproid pipsissewa Piptadenia Piptomeris pipunculid Pipunculidae pipy piquable piquance piquancy piquant piquantly piquantness pique piquet piquia piqure pir piracy piragua Piranga piranha pirate piratelike piratery piratess piratical piratically piratism piratize piraty Pirene Piricularia pirijiri piripiri piririgua pirl pirn pirner pirnie pirny Piro pirogue pirol piroplasm Piroplasma piroplasmosis pirouette pirouetter pirouettist pirr pirraura pirrmaw pirssonite Pisaca pisaca pisachee Pisan pisang pisanite Pisauridae pisay piscary Piscataqua Piscataway piscation piscatology piscator piscatorial piscatorialist piscatorially piscatorian piscatorious piscatory Pisces piscian piscicapture piscicapturist piscicolous piscicultural pisciculturally pisciculture pisciculturist Piscid Piscidia piscifauna pisciferous pisciform piscina piscinal piscine piscinity Piscis piscivorous pisco pise pish pishaug pishogue Pishquow pishu Pisidium pisiform Pisistratean Pisistratidae pisk pisky pismire pismirism piso pisolite pisolitic Pisonia piss pissabed pissant pist pistache pistachio Pistacia pistacite pistareen Pistia pistic pistil pistillaceous pistillar pistillary pistillate pistillid pistilliferous pistilliform pistilligerous pistilline pistillode pistillody pistilloid pistilogy pistle Pistoiese pistol pistole pistoleer pistolet pistolgram pistolgraph pistollike pistolography pistology pistolproof pistolwise piston pistonhead pistonlike pistrix Pisum pit pita Pitahauerat Pitahauirata pitahaya pitanga pitangua pitapat pitapatation pitarah pitau pitaya pitayita Pitcairnia pitch pitchable pitchblende pitcher pitchered pitcherful pitcherlike pitcherman pitchfork pitchhole pitchi pitchiness pitching pitchlike pitchman pitchometer pitchout pitchpike pitchpole pitchpoll pitchstone pitchwork pitchy piteous piteously piteousness pitfall pith pithecan pithecanthrope pithecanthropic pithecanthropid Pithecanthropidae pithecanthropoid Pithecanthropus Pithecia pithecian Pitheciinae pitheciine pithecism pithecoid Pithecolobium pithecological pithecometric pithecomorphic pithecomorphism pithful pithily pithiness pithless pithlessly Pithoegia Pithoigia pithole pithos pithsome pithwork pithy pitiability pitiable pitiableness pitiably pitiedly pitiedness pitier pitiful pitifully pitifulness pitikins pitiless pitilessly pitilessness pitless pitlike pitmaker pitmaking pitman pitmark pitmirk pitometer pitpan pitpit pitside Pitta pittacal pittance pittancer pitted pitter pitticite Pittidae pittine pitting Pittism Pittite pittite pittoid Pittosporaceae pittosporaceous pittospore Pittosporum Pittsburgher pituital pituitary pituite pituitous pituitousness Pituitrin pituri pitwood pitwork pitwright pity pitying pityingly Pitylus pityocampa pityproof pityriasic pityriasis Pityrogramma pityroid piuri piuricapsular pivalic pivot pivotal pivotally pivoter pix pixie pixilated pixilation pixy pize pizza pizzeria pizzicato pizzle placability placable placableness placably Placaean placard placardeer placarder placate placater placation placative placatively placatory placcate place placeable Placean placebo placeful placeless placelessly placemaker placemaking placeman placemanship placement placemonger placemongering placenta placental Placentalia placentalian placentary placentate placentation placentiferous placentiform placentigerous placentitis placentoid placentoma placer placet placewoman placid placidity placidly placidness placitum plack placket plackless placochromatic placode placoderm placodermal placodermatous Placodermi placodermoid placodont Placodontia Placodus placoganoid placoganoidean Placoganoidei placoid placoidal placoidean Placoidei Placoides Placophora placophoran placoplast placula placuntitis placuntoma Placus pladaroma pladarosis plaga plagal plagate plage Plagianthus plagiaplite plagiarical plagiarism plagiarist plagiaristic plagiaristically plagiarization plagiarize plagiarizer plagiary plagihedral plagiocephalic plagiocephalism plagiocephaly Plagiochila plagioclase plagioclasite plagioclastic plagioclinal plagiodont plagiograph plagioliparite plagionite plagiopatagium plagiophyre Plagiostomata plagiostomatous plagiostome Plagiostomi plagiostomous plagiotropic plagiotropically plagiotropism plagiotropous plagium plagose plagosity plague plagued plagueful plagueless plagueproof plaguer plaguesome plaguesomeness plaguily plaguy plaice plaid plaided plaidie plaiding plaidman plaidy plain plainback plainbacks plainer plainful plainhearted plainish plainly plainness plainscraft plainsfolk plainsman plainsoled plainstones plainswoman plaint plaintail plaintiff plaintiffship plaintile plaintive plaintively plaintiveness plaintless plainward plaister plait plaited plaiter plaiting plaitless plaitwork plak plakat plan planable planaea planar Planaria planarian Planarida planaridan planariform planarioid planarity planate planation planch plancheite plancher planchet planchette planching planchment plancier Planckian plandok plane planeness planer Planera planet planeta planetable planetabler planetal planetaria planetarian planetarily planetarium planetary planeted planetesimal planeticose planeting planetist planetkin planetless planetlike planetogeny planetography planetoid planetoidal planetologic planetologist planetology planetule planform planful planfully planfulness plang plangency plangent plangently plangor plangorous planicaudate planicipital planidorsate planifolious planiform planigraph planilla planimetric planimetrical planimetry planineter planipennate Planipennia planipennine planipetalous planiphyllous planirostral planirostrate planiscope planiscopic planish planisher planispheral planisphere planispheric planispherical planispiral planity plank plankage plankbuilt planker planking plankless planklike planksheer plankter planktologist planktology plankton planktonic planktont plankways plankwise planky planless planlessly planlessness planner planoblast planoblastic Planococcus planoconical planocylindric planoferrite planogamete planograph planographic planographist planography planohorizontal planolindrical planometer planometry planomiller planoorbicular Planorbidae planorbiform planorbine Planorbis planorboid planorotund Planosarcina planosol planosome planospiral planospore planosubulate plant planta plantable plantad Plantae plantage Plantaginaceae plantaginaceous Plantaginales plantagineous Plantago plantain plantal plantar plantaris plantarium plantation plantationlike plantdom planter planterdom planterly plantership Plantigrada plantigrade plantigrady planting plantivorous plantless plantlet plantlike plantling plantocracy plantsman plantula plantular plantule planula planulan planular planulate planuliform planuloid Planuloidea planuria planury planxty plap plappert plaque plaquette plash plasher plashet plashingly plashment plashy plasm plasma plasmagene plasmapheresis plasmase plasmatic plasmatical plasmation plasmatoparous plasmatorrhexis plasmic plasmocyte plasmocytoma plasmode plasmodesm plasmodesma plasmodesmal plasmodesmic plasmodesmus plasmodia plasmodial plasmodiate plasmodic plasmodiocarp plasmodiocarpous Plasmodiophora Plasmodiophoraceae Plasmodiophorales plasmodium plasmogen plasmolysis plasmolytic plasmolytically plasmolyzability plasmolyzable plasmolyze plasmoma Plasmon Plasmopara plasmophagous plasmophagy plasmoptysis plasmosoma plasmosome plasmotomy plasome plass plasson plastein plaster plasterbill plasterboard plasterer plasteriness plastering plasterlike plasterwise plasterwork plastery plastic plastically plasticimeter Plasticine plasticine plasticism plasticity plasticization plasticize plasticizer plasticly plastics plastid plastidium plastidome Plastidozoa plastidular plastidule plastify plastin plastinoid plastisol plastochondria plastochron plastochrone plastodynamia plastodynamic plastogamic plastogamy plastogene plastomere plastometer plastosome plastotype plastral plastron plastrum plat Plataean Platalea Plataleidae plataleiform Plataleinae plataleine platan Platanaceae platanaceous platane platanist Platanista Platanistidae platano Platanus platband platch plate platea plateasm plateau plateaux plated plateful plateholder plateiasmus platelayer plateless platelet platelike platemaker platemaking plateman platen plater platerer plateresque platery plateway platework plateworker platform platformally platformed platformer platformish platformism platformist platformistic platformless platformy platic platicly platilla platina platinamine platinammine platinate Platine plating platinic platinichloric platinichloride platiniferous platiniridium platinite platinization platinize platinochloric platinochloride platinocyanic platinocyanide platinoid platinotype platinous platinum platinumsmith platitude platitudinal platitudinarian platitudinarianism platitudinism platitudinist platitudinization platitudinize platitudinizer platitudinous platitudinously platitudinousness Platoda platode Platodes platoid Platonesque platonesque Platonian Platonic Platonical Platonically Platonicalness Platonician Platonicism Platonism Platonist Platonistic Platonization Platonize Platonizer platoon platopic platosamine platosammine Platt Plattdeutsch platted platten platter platterface platterful platting plattnerite platty platurous platy platybasic platybrachycephalic platybrachycephalous platybregmatic platycarpous Platycarpus Platycarya platycelian platycelous platycephalic Platycephalidae platycephalism platycephaloid platycephalous Platycephalus platycephaly Platycercinae platycercine Platycercus Platycerium platycheiria platycnemia platycnemic Platycodon platycoria platycrania platycranial Platyctenea platycyrtean platydactyl platydactyle platydactylous platydolichocephalic platydolichocephalous platyfish platyglossal platyglossate platyglossia Platyhelmia platyhelminth Platyhelminthes platyhelminthic platyhieric platykurtic platylobate platymeria platymeric platymery platymesaticephalic platymesocephalic platymeter platymyoid platynite platynotal platyodont platyope platyopia platyopic platypellic platypetalous platyphyllous platypod Platypoda platypodia platypodous Platyptera platypus platypygous Platyrhina Platyrhini platyrhynchous platyrrhin Platyrrhina platyrrhine Platyrrhini platyrrhinian platyrrhinic platyrrhinism platyrrhiny platysma platysmamyoides platysomid Platysomidae Platysomus platystaphyline Platystemon platystencephalia platystencephalic platystencephalism platystencephaly platysternal Platysternidae Platystomidae platystomous platytrope platytropy plaud plaudation plaudit plaudite plauditor plauditory plauenite plausibility plausible plausibleness plausibly plausive plaustral Plautine Plautus play playa playability playable playback playbill playbook playbox playboy playboyism playbroker playcraft playcraftsman playday playdown player playerdom playeress playfellow playfellowship playfield playfolk playful playfully playfulness playgoer playgoing playground playhouse playingly playless playlet playlike playmaker playmaking playman playmare playmate playmonger playmongering playock playpen playreader playroom playscript playsome playsomely playsomeness playstead plaything playtime playward playwoman playwork playwright playwrightess playwrighting playwrightry playwriter playwriting plaza plazolite plea pleach pleached pleacher plead pleadable pleadableness pleader pleading pleadingly pleadingness pleaproof pleasable pleasableness pleasance pleasant pleasantable pleasantish pleasantly pleasantness pleasantry pleasantsome please pleasedly pleasedness pleaseman pleaser pleaship pleasing pleasingly pleasingness pleasurability pleasurable pleasurableness pleasurably pleasure pleasureful pleasurehood pleasureless pleasurelessly pleasureman pleasurement pleasuremonger pleasureproof pleasurer pleasuring pleasurist pleasurous pleat pleater pleatless pleb plebe plebeian plebeiance plebeianize plebeianly plebeianness plebeity plebianism plebicolar plebicolist plebificate plebification plebify plebiscitarian plebiscitarism plebiscitary plebiscite plebiscitic plebiscitum plebs pleck Plecoptera plecopteran plecopterid plecopterous Plecotinae plecotine Plecotus plectognath Plectognathi plectognathic plectognathous plectopter plectopteran plectopterous plectospondyl Plectospondyli plectospondylous plectre plectridial plectridium plectron plectrum pled pledge pledgeable pledgee pledgeless pledgeor pledger pledgeshop pledget pledgor Plegadis plegaphonia plegometer Pleiades pleiobar pleiochromia pleiochromic pleiomastia pleiomazia pleiomerous pleiomery pleion Pleione pleionian pleiophyllous pleiophylly pleiotaxis pleiotropic pleiotropically pleiotropism Pleistocene Pleistocenic pleistoseist plemochoe plemyrameter plenarily plenariness plenarium plenarty plenary plenicorn pleniloquence plenilunal plenilunar plenilunary plenilune plenipo plenipotence plenipotent plenipotential plenipotentiality plenipotentiarily plenipotentiarize Plenipotentiary plenipotentiary plenipotentiaryship plenish plenishing plenishment plenism plenist plenitide plenitude plenitudinous plenshing plenteous plenteously plenteousness plentiful plentifully plentifulness plentify plenty plenum pleny pleochroic pleochroism pleochroitic pleochromatic pleochromatism pleochroous pleocrystalline pleodont pleomastia pleomastic pleomazia pleometrosis pleometrotic pleomorph pleomorphic pleomorphism pleomorphist pleomorphous pleomorphy pleon pleonal pleonasm pleonast pleonaste pleonastic pleonastical pleonastically pleonectic pleonexia pleonic pleophyletic pleopod pleopodite Pleospora Pleosporaceae plerergate plerocercoid pleroma pleromatic plerome pleromorph plerophoric plerophory plerosis plerotic Plesianthropus plesiobiosis plesiobiotic plesiomorphic plesiomorphism plesiomorphous plesiosaur Plesiosauri Plesiosauria plesiosaurian plesiosauroid Plesiosaurus plesiotype plessigraph plessimeter plessimetric plessimetry plessor Plethodon plethodontid Plethodontidae plethora plethoretic plethoretical plethoric plethorical plethorically plethorous plethory plethysmograph plethysmographic plethysmographically plethysmography pleura Pleuracanthea Pleuracanthidae Pleuracanthini pleuracanthoid Pleuracanthus pleural pleuralgia pleuralgic pleurapophysial pleurapophysis pleurectomy pleurenchyma pleurenchymatous pleuric pleuriseptate pleurisy pleurite pleuritic pleuritical pleuritically pleuritis Pleurobrachia Pleurobrachiidae pleurobranch pleurobranchia pleurobranchial pleurobranchiate pleurobronchitis Pleurocapsa Pleurocapsaceae pleurocapsaceous pleurocarp Pleurocarpi pleurocarpous pleurocele pleurocentesis pleurocentral pleurocentrum Pleurocera pleurocerebral Pleuroceridae pleuroceroid Pleurococcaceae pleurococcaceous Pleurococcus Pleurodelidae Pleurodira pleurodiran pleurodire pleurodirous pleurodiscous pleurodont pleurodynia pleurodynic pleurogenic pleurogenous pleurohepatitis pleuroid pleurolith pleurolysis pleuron Pleuronectes pleuronectid Pleuronectidae pleuronectoid Pleuronema pleuropedal pleuropericardial pleuropericarditis pleuroperitonaeal pleuroperitoneal pleuroperitoneum pleuropneumonia pleuropneumonic pleuropodium pleuropterygian Pleuropterygii pleuropulmonary pleurorrhea Pleurosaurus Pleurosigma pleurospasm pleurosteal Pleurosteon pleurostict Pleurosticti Pleurostigma pleurothotonic pleurothotonus Pleurotoma Pleurotomaria Pleurotomariidae pleurotomarioid Pleurotomidae pleurotomine pleurotomoid pleurotomy pleurotonic pleurotonus Pleurotremata pleurotribal pleurotribe pleurotropous Pleurotus pleurotyphoid pleurovisceral pleurum pleuston pleustonic plew plex plexal plexicose plexiform pleximeter pleximetric pleximetry plexodont plexometer plexor plexure plexus pliability pliable pliableness pliably pliancy pliant pliantly pliantness plica plicable plical plicate plicated plicately plicateness plicater plicatile plication plicative plicatocontorted plicatocristate plicatolacunose plicatolobate plicatopapillose plicator plicatoundulate plicatulate plicature pliciferous pliciform plier pliers plight plighted plighter plim plimsoll Plinian plinth plinther plinthiform plinthless plinthlike Pliny Plinyism Pliocene Pliohippus Pliopithecus pliosaur pliosaurian Pliosauridae Pliosaurus pliothermic Pliotron pliskie plisky ploat ploce Ploceidae ploceiform Ploceinae Ploceus plock plod plodder plodderly plodding ploddingly ploddingness plodge Ploima ploimate plomb plook plop ploration ploratory plosion plosive plot plote plotful Plotinian Plotinic Plotinical Plotinism Plotinist Plotinize plotless plotlessness plotproof plottage plotted plotter plottery plotting plottingly plotty plough ploughmanship ploughtail plouk plouked plouky plounce plousiocracy plout Plouteneion plouter plover ploverlike plovery plow plowable plowbote plowboy plower plowfish plowfoot plowgang plowgate plowgraith plowhead plowing plowjogger plowland plowlight plowline plowmaker plowman plowmanship plowmell plowpoint Plowrightia plowshare plowshoe plowstaff plowstilt plowtail plowwise plowwoman plowwright ploy ployment Pluchea pluck pluckage plucked pluckedness plucker Pluckerian pluckily pluckiness pluckless plucklessness plucky plud pluff pluffer pluffy plug plugboard plugdrawer pluggable plugged plugger plugging pluggingly pluggy plughole plugless pluglike plugman plugtray plugtree plum pluma plumaceous plumach plumade plumage plumaged plumagery plumasite plumate Plumatella plumatellid Plumatellidae plumatelloid plumb plumbable plumbage Plumbaginaceae plumbaginaceous plumbagine plumbaginous plumbago plumbate plumbean plumbeous plumber plumbership plumbery plumbet plumbic plumbiferous plumbing plumbism plumbisolvent plumbite plumbless plumbness plumbog plumbojarosite plumboniobate plumbosolvency plumbosolvent plumbous plumbum plumcot plumdamas plumdamis plume plumed plumeless plumelet plumelike plumemaker plumemaking plumeopicean plumeous plumer plumery plumet plumette plumicorn plumier Plumiera plumieride plumification plumiform plumiformly plumify plumigerous pluminess plumiped plumipede plumist plumless plumlet plumlike plummer plummet plummeted plummetless plummy plumose plumosely plumoseness plumosity plumous plump plumpen plumper plumping plumpish plumply plumpness plumps plumpy plumula plumulaceous plumular Plumularia plumularian Plumulariidae plumulate plumule plumuliform plumulose plumy plunder plunderable plunderage plunderbund plunderer plunderess plundering plunderingly plunderless plunderous plunderproof plunge plunger plunging plungingly plunk plunther plup plupatriotic pluperfect pluperfectly pluperfectness plural pluralism pluralist pluralistic pluralistically plurality pluralization pluralize pluralizer plurally plurative plurennial pluriaxial pluricarinate pluricarpellary pluricellular pluricentral pluricipital pluricuspid pluricuspidate pluridentate pluries plurifacial plurifetation plurification pluriflagellate pluriflorous plurifoliate plurifoliolate plurify pluriglandular pluriguttulate plurilateral plurilingual plurilingualism plurilingualist plurilocular plurimammate plurinominal plurinucleate pluripara pluriparity pluriparous pluripartite pluripetalous pluripotence pluripotent pluripresence pluriseptate pluriserial pluriseriate pluriseriated plurisetose plurispiral plurisporous plurisyllabic plurisyllable plurivalent plurivalve plurivorous plurivory plus plush plushed plushette plushily plushiness plushlike plushy Plusia Plusiinae plusquamperfect plussage Plutarchian Plutarchic Plutarchical Plutarchically plutarchy pluteal plutean pluteiform Plutella pluteus Pluto plutocracy plutocrat plutocratic plutocratical plutocratically plutolatry plutological plutologist plutology plutomania Plutonian plutonian plutonic Plutonion plutonism plutonist plutonite Plutonium plutonium plutonometamorphism plutonomic plutonomist plutonomy pluvial pluvialiform pluvialine Pluvialis pluvian pluvine pluviograph pluviographic pluviographical pluviography pluviometer pluviometric pluviometrical pluviometrically pluviometry pluvioscope pluviose pluviosity pluvious ply plyer plying plyingly Plymouth Plymouthism Plymouthist Plymouthite Plynlymmon plywood pneodynamics pneograph pneomanometer pneometer pneometry pneophore pneoscope pneuma pneumarthrosis pneumathaemia pneumatic pneumatical pneumatically pneumaticity pneumatics pneumatism pneumatist pneumatize pneumatized pneumatocardia pneumatocele pneumatochemical pneumatochemistry pneumatocyst pneumatocystic pneumatode pneumatogenic pneumatogenous pneumatogram pneumatograph pneumatographer pneumatographic pneumatography pneumatolitic pneumatologic pneumatological pneumatologist pneumatology pneumatolysis pneumatolytic Pneumatomachian Pneumatomachist Pneumatomachy pneumatometer pneumatometry pneumatomorphic pneumatonomy pneumatophany pneumatophilosophy pneumatophobia pneumatophonic pneumatophony pneumatophore pneumatophorous pneumatorrhachis pneumatoscope pneumatosic pneumatosis pneumatotactic pneumatotherapeutics pneumatotherapy Pneumatria pneumaturia pneumectomy pneumobacillus Pneumobranchia Pneumobranchiata pneumocele pneumocentesis pneumochirurgia pneumococcal pneumococcemia pneumococcic pneumococcous pneumococcus pneumoconiosis pneumoderma pneumodynamic pneumodynamics pneumoencephalitis pneumoenteritis pneumogastric pneumogram pneumograph pneumographic pneumography pneumohemothorax pneumohydropericardium pneumohydrothorax pneumolith pneumolithiasis pneumological pneumology pneumolysis pneumomalacia pneumomassage Pneumometer pneumomycosis pneumonalgia pneumonectasia pneumonectomy pneumonedema pneumonia pneumonic pneumonitic pneumonitis pneumonocace pneumonocarcinoma pneumonocele pneumonocentesis pneumonocirrhosis pneumonoconiosis pneumonodynia pneumonoenteritis pneumonoerysipelas pneumonographic pneumonography pneumonokoniosis pneumonolith pneumonolithiasis pneumonolysis pneumonomelanosis pneumonometer pneumonomycosis pneumonoparesis pneumonopathy pneumonopexy pneumonophorous pneumonophthisis pneumonopleuritis pneumonorrhagia pneumonorrhaphy pneumonosis pneumonotherapy pneumonotomy pneumony pneumopericardium pneumoperitoneum pneumoperitonitis pneumopexy pneumopleuritis pneumopyothorax pneumorrachis pneumorrhachis pneumorrhagia pneumotactic pneumotherapeutics pneumotherapy pneumothorax pneumotomy pneumotoxin pneumotropic pneumotropism pneumotyphoid pneumotyphus pneumoventriculography po Poa Poaceae poaceous poach poachable poacher poachiness poachy Poales poalike pob pobby Poblacht poblacion pobs pochade pochard pochay poche pochette pocilliform pock pocket pocketable pocketableness pocketbook pocketed pocketer pocketful pocketing pocketknife pocketless pocketlike pockety pockhouse pockily pockiness pockmanteau pockmantie pockmark pockweed pockwood pocky poco pococurante pococuranteism pococurantic pococurantish pococurantism pococurantist pocosin poculary poculation poculent poculiform pod podagra podagral podagric podagrical podagrous podal podalgia podalic Podaliriidae Podalirius Podarge Podargidae Podarginae podargine podargue Podargus podarthral podarthritis podarthrum podatus Podaxonia podaxonial podded podder poddidge poddish poddle poddy podelcoma podeon podesta podesterate podetiiform podetium podex podge podger podgily podginess podgy podial podiatrist podiatry podical Podiceps podices Podicipedidae podilegous podite poditic poditti podium podler podley podlike podobranch podobranchia podobranchial podobranchiate podocarp Podocarpaceae Podocarpineae podocarpous Podocarpus podocephalous pododerm pododynia podogyn podogyne podogynium Podolian podolite podology podomancy podomere podometer podometry Podophrya Podophryidae Podophthalma Podophthalmata podophthalmate podophthalmatous Podophthalmia podophthalmian podophthalmic podophthalmite podophthalmitic podophthalmous Podophyllaceae podophyllic podophyllin podophyllotoxin podophyllous Podophyllum podophyllum podoscaph podoscapher podoscopy Podosomata podosomatous podosperm Podosphaera Podostemaceae podostemaceous podostemad Podostemon Podostemonaceae podostemonaceous Podostomata podostomatous podotheca podothecal Podozamites Podsnap Podsnappery podsol podsolic podsolization podsolize Podunk Podura poduran podurid Poduridae podware podzol podzolic podzolization podzolize poe Poecile Poeciliidae poecilitic Poecilocyttares poecilocyttarous poecilogonous poecilogony poecilomere poecilonym poecilonymic poecilonymy poecilopod Poecilopoda poecilopodous poem poematic poemet poemlet Poephaga poephagous Poephagus poesie poesiless poesis poesy poet poetaster poetastering poetasterism poetastery poetastress poetastric poetastrical poetastry poetcraft poetdom poetesque poetess poethood poetic poetical poeticality poetically poeticalness poeticism poeticize poeticness poetics poeticule poetito poetization poetize poetizer poetless poetlike poetling poetly poetomachia poetress poetry poetryless poetship poetwise pogamoggan pogge poggy Pogo Pogonatum Pogonia pogoniasis pogoniate pogonion pogonip pogoniris pogonite pogonological pogonologist pogonology pogonotomy pogonotrophy pogrom pogromist pogromize pogy poh poha pohickory pohna pohutukawa poi Poiana Poictesme poietic poignance poignancy poignant poignantly poignet poikilitic poikiloblast poikiloblastic poikilocyte poikilocythemia poikilocytosis poikilotherm poikilothermic poikilothermism poil poilu poimenic poimenics Poinciana poind poindable poinder poinding Poinsettia point pointable pointage pointed pointedly pointedness pointel pointer pointful pointfully pointfulness pointillism pointillist pointing pointingly pointless pointlessly pointlessness pointlet pointleted pointmaker pointman pointment pointrel pointsman pointswoman pointways pointwise pointy poisable poise poised poiser poison poisonable poisonful poisonfully poisoning poisonless poisonlessness poisonmaker poisonous poisonously poisonousness poisonproof poisonweed poisonwood poitrail poitrel poivrade pokable Pokan Pokanoket poke pokeberry poked pokeful pokeloken pokeout poker pokerish pokerishly pokerishness pokeroot pokeweed pokey pokily pokiness poking Pokom Pokomam Pokomo pokomoo Pokonchi pokunt poky pol Polab Polabian Polabish polacca Polack polack polacre Polander Polanisia polar polaric Polarid polarigraphic polarimeter polarimetric polarimetry Polaris polariscope polariscopic polariscopically polariscopist polariscopy polaristic polaristrobometer polarity polarizability polarizable polarization polarize polarizer polarly polarogram polarograph polarographic polarographically polarography Polaroid polarward polaxis poldavis poldavy polder polderboy polderman Pole pole polearm poleax poleaxe poleaxer poleburn polecat polehead poleless poleman polemarch polemic polemical polemically polemician polemicist polemics polemist polemize Polemoniaceae polemoniaceous Polemoniales Polemonium polemoscope polenta poler polesetter Polesian polesman polestar poleward polewards poley poliad poliadic Polian polianite Polianthes police policed policedom policeless policeman policemanish policemanism policemanlike policemanship policewoman Polichinelle policial policize policizer policlinic policy policyholder poliencephalitis poliencephalomyelitis poligar poligarship poligraphical Polinices polio polioencephalitis polioencephalomyelitis poliomyelitis poliomyelopathy polioneuromere poliorcetic poliorcetics poliosis polis Polish polish polishable polished polishedly polishedness polisher polishment polisman polissoir Polistes politarch politarchic Politbureau Politburo polite politeful politely politeness politesse politic political politicalism politicalize politically politicaster politician politicious politicist politicize politicizer politicly politico politicomania politicophobia politics politied Politique politist politize polity politzerization politzerize polk polka Poll poll pollable pollack polladz pollage pollakiuria pollam pollan pollarchy pollard pollbook polled pollen pollened polleniferous pollenigerous pollenite pollenivorous pollenless pollenlike pollenproof pollent poller polleten pollex pollical pollicar pollicate pollicitation pollinar pollinarium pollinate pollination pollinator pollinctor pollincture polling pollinia pollinic pollinical polliniferous pollinigerous pollinium pollinivorous pollinization pollinize pollinizer pollinodial pollinodium pollinoid pollinose pollinosis polliwig polliwog pollock polloi pollster pollucite pollutant pollute polluted pollutedly pollutedness polluter polluting pollutingly pollution Pollux pollux Polly Pollyanna Pollyannish pollywog polo poloconic polocyte poloist polonaise Polonese Polonia Polonial Polonian Polonism polonium Polonius Polonization Polonize polony polos polska polt poltergeist poltfoot poltfooted poltina poltinnik poltophagic poltophagist poltophagy poltroon poltroonery poltroonish poltroonishly poltroonism poluphloisboic poluphloisboiotatotic poluphloisboiotic polverine poly polyacanthus polyacid polyacoustic polyacoustics polyact polyactinal polyactine Polyactinia polyad polyadelph Polyadelphia polyadelphian polyadelphous polyadenia polyadenitis polyadenoma polyadenous polyadic polyaffectioned polyalcohol polyamide polyamylose Polyandria polyandria polyandrian polyandrianism polyandric polyandrious polyandrism polyandrist polyandrium polyandrous polyandry Polyangium polyangular polyantha polyanthous polyanthus polyanthy polyarch polyarchal polyarchical polyarchist polyarchy polyarteritis polyarthric polyarthritic polyarthritis polyarthrous polyarticular polyatomic polyatomicity polyautographic polyautography polyaxial polyaxon polyaxone polyaxonic polybasic polybasicity polybasite polyblast Polyborinae polyborine Polyborus polybranch Polybranchia polybranchian Polybranchiata polybranchiate polybromid polybromide polybunous polybuny polybuttoned polycarboxylic Polycarp polycarpellary polycarpic Polycarpon polycarpous polycarpy polycellular polycentral polycentric polycephalic polycephalous polycephaly Polychaeta polychaete polychaetous polychasial polychasium polychloride polychoerany polychord polychotomous polychotomy polychrest polychrestic polychrestical polychresty polychroic polychroism polychromasia polychromate polychromatic polychromatism polychromatist polychromatize polychromatophil polychromatophile polychromatophilia polychromatophilic polychrome polychromia polychromic polychromism polychromize polychromous polychromy polychronious polyciliate polycitral polyclad Polycladida polycladine polycladose polycladous polyclady Polycletan polyclinic polyclona polycoccous Polycodium polyconic polycormic polycotyl polycotyledon polycotyledonary polycotyledonous polycotyledony polycotylous polycotyly polycracy polycrase polycratic polycrotic polycrotism polycrystalline polyctenid Polyctenidae polycttarian polycyanide polycyclic polycycly polycyesis polycystic polycythemia polycythemic Polycyttaria polydactyl polydactyle polydactylism polydactylous Polydactylus polydactyly polydaemoniac polydaemonism polydaemonist polydaemonistic polydemic polydenominational polydental polydermous polydermy polydigital polydimensional polydipsia polydisperse polydomous polydymite polydynamic polyeidic polyeidism polyembryonate polyembryonic polyembryony polyemia polyemic polyenzymatic polyergic Polyergus polyester polyesthesia polyesthetic polyethnic polyethylene polyfenestral polyflorous polyfoil polyfold Polygala Polygalaceae polygalaceous polygalic polygam Polygamia polygamian polygamic polygamical polygamically polygamist polygamistic polygamize polygamodioecious polygamous polygamously polygamy polyganglionic polygastric polygene polygenesic polygenesis polygenesist polygenetic polygenetically polygenic polygenism polygenist polygenistic polygenous polygeny polyglandular polyglobulia polyglobulism polyglossary polyglot polyglotry polyglottal polyglottally polyglotted polyglotter polyglottery polyglottic polyglottically polyglottism polyglottist polyglottonic polyglottous polyglotwise polyglycerol polygon Polygonaceae polygonaceous polygonal Polygonales polygonally Polygonatum Polygonella polygoneutic polygoneutism Polygonia polygonic polygonically polygonoid polygonous Polygonum polygony Polygordius polygram polygrammatic polygraph polygrapher polygraphic polygraphy polygroove polygrooved polygyn polygynaiky Polygynia polygynian polygynic polygynious polygynist polygynoecial polygynous polygyny polygyral polygyria polyhaemia polyhaemic polyhalide polyhalite polyhalogen polyharmonic polyharmony polyhedral polyhedric polyhedrical polyhedroid polyhedron polyhedrosis polyhedrous polyhemia polyhidrosis polyhistor polyhistorian polyhistoric polyhistory polyhybrid polyhydric polyhydroxy polyideic polyideism polyidrosis polyiodide polykaryocyte polylaminated polylemma polylepidous polylinguist polylith polylithic polylobular polylogy polyloquent polymagnet polymastia polymastic Polymastiga polymastigate Polymastigida Polymastigina polymastigous polymastism Polymastodon polymastodont polymasty polymath polymathic polymathist polymathy polymazia polymelia polymelian polymely polymer polymere polymeria polymeric polymeride polymerism polymerization polymerize polymerous polymetallism polymetameric polymeter polymethylene polymetochia polymetochic polymicrian polymicrobial polymicrobic polymicroscope polymignite Polymixia polymixiid Polymixiidae Polymnestor Polymnia polymnite polymolecular polymolybdate polymorph Polymorpha polymorphean polymorphic polymorphism polymorphistic polymorphonuclear polymorphonucleate polymorphosis polymorphous polymorphy Polymyaria polymyarian Polymyarii Polymyodi polymyodian polymyodous polymyoid polymyositis polymythic polymythy polynaphthene polynemid Polynemidae polynemoid Polynemus Polynesian polynesic polyneural polyneuric polyneuritic polyneuritis polyneuropathy polynodal Polynoe polynoid Polynoidae polynome polynomial polynomialism polynomialist polynomic polynucleal polynuclear polynucleate polynucleated polynucleolar polynucleosis Polyodon polyodont polyodontal polyodontia Polyodontidae polyodontoid polyoecious polyoeciously polyoeciousness polyoecism polyoecy polyoicous polyommatous polyonomous polyonomy polyonychia polyonym polyonymal polyonymic polyonymist polyonymous polyonymy polyophthalmic polyopia polyopic polyopsia polyopsy polyorama polyorchidism polyorchism polyorganic polyose polyoxide polyoxymethylene polyp polypage polypaged polypapilloma polyparasitic polyparasitism polyparesis polyparia polyparian polyparium polyparous polypary polypean polyped Polypedates polypeptide polypetal Polypetalae polypetalous Polyphaga polyphage polyphagia polyphagian polyphagic polyphagist polyphagous polyphagy polyphalangism polypharmacal polypharmacist polypharmacon polypharmacy polypharmic polyphasal polyphase polyphaser Polypheme polyphemian polyphemic polyphemous polyphenol polyphloesboean polyphloisboioism polyphloisboism polyphobia polyphobic polyphone polyphoned polyphonia polyphonic polyphonical polyphonism polyphonist polyphonium polyphonous polyphony polyphore polyphosphoric polyphotal polyphote polyphylesis polyphyletic polyphyletically polyphylety polyphylline polyphyllous polyphylly polyphylogeny polyphyly polyphyodont Polypi polypi polypian polypide polypidom Polypifera polypiferous polypigerous polypinnate polypite Polyplacophora polyplacophoran polyplacophore polyplacophorous polyplastic Polyplectron polyplegia polyplegic polyploid polyploidic polyploidy polypnoea polypnoeic polypod Polypoda polypodia Polypodiaceae polypodiaceous Polypodium polypodous polypody polypoid polypoidal Polypomorpha polypomorphic Polyporaceae polyporaceous polypore polyporite polyporoid polyporous Polyporus polypose polyposis polypotome polypous polypragmacy polypragmatic polypragmatical polypragmatically polypragmatism polypragmatist polypragmaty polypragmist polypragmon polypragmonic polypragmonist polyprene polyprism polyprismatic polyprothetic polyprotodont Polyprotodontia polypseudonymous polypsychic polypsychical polypsychism polypterid Polypteridae polypteroid Polypterus polyptote polyptoton polyptych polypus polyrhizal polyrhizous polyrhythmic polyrhythmical polysaccharide polysaccharose Polysaccum polysalicylide polysarcia polysarcous polyschematic polyschematist polyscope polyscopic polysemant polysemantic polysemeia polysemia polysemous polysemy polysensuous polysensuousness polysepalous polyseptate polyserositis polysided polysidedness polysilicate polysilicic Polysiphonia polysiphonic polysiphonous polysomatic polysomatous polysomaty polysomia polysomic polysomitic polysomous polysomy polyspast polyspaston polyspermal polyspermatous polyspermia polyspermic polyspermous polyspermy polyspondylic polyspondylous polyspondyly Polyspora polysporangium polyspore polyspored polysporic polysporous polystachyous polystaurion polystele polystelic polystemonous polystichoid polystichous Polystichum Polystictus Polystomata Polystomatidae polystomatous polystome Polystomea Polystomella Polystomidae polystomium polystylar polystyle polystylous polystyrene polysulphide polysulphuration polysulphurization polysyllabic polysyllabical polysyllabically polysyllabicism polysyllabicity polysyllabism polysyllable polysyllogism polysyllogistic polysymmetrical polysymmetrically polysymmetry polysyndetic polysyndetically polysyndeton polysynthesis polysynthesism polysynthetic polysynthetical polysynthetically polysyntheticism polysynthetism polysynthetize polytechnic polytechnical polytechnics polytechnist polyterpene Polythalamia polythalamian polythalamic polythalamous polythecial polytheism polytheist polytheistic polytheistical polytheistically polytheize polythelia polythelism polythely polythene polythionic polytitanic polytocous polytokous polytoky polytomous polytomy polytonal polytonalism polytonality polytone polytonic polytony polytope polytopic polytopical Polytrichaceae polytrichaceous polytrichia polytrichous Polytrichum polytrochal polytrochous polytrope polytrophic polytropic polytungstate polytungstic polytype polytypic polytypical polytypy polyuresis polyuria polyuric polyvalence polyvalent polyvinyl polyvinylidene polyvirulent polyvoltine Polyzoa polyzoal polyzoan polyzoarial polyzoarium polyzoary polyzoic polyzoism polyzonal polyzooid polyzoon polzenite pom pomace Pomaceae pomacentrid Pomacentridae pomacentroid Pomacentrus pomaceous pomade Pomaderris Pomak pomander pomane pomarine pomarium pomate pomato pomatomid Pomatomidae Pomatomus pomatorhine pomatum pombe pombo pome pomegranate pomelo Pomeranian pomeridian pomerium pomewater pomey pomfret pomiculture pomiculturist pomiferous pomiform pomivorous Pommard pomme pommee pommel pommeled pommeler pommet pommey pommy Pomo pomological pomologically pomologist pomology Pomona pomonal pomonic pomp pompa Pompadour pompadour pompal pompano Pompeian Pompeii pompelmous Pompey pompey pompholix pompholygous pompholyx pomphus pompier pompilid Pompilidae pompiloid Pompilus pompion pompist pompless pompoleon pompon pomposity pompous pompously pompousness pompster Pomptine pomster pon Ponca ponce ponceau poncelet poncho ponchoed Poncirus pond pondage pondbush ponder ponderability ponderable ponderableness ponderal ponderance ponderancy ponderant ponderary ponderate ponderation ponderative ponderer pondering ponderingly ponderling ponderment ponderomotive ponderosapine ponderosity ponderous ponderously ponderousness pondfish pondful pondgrass pondlet pondman Pondo pondok pondokkie Pondomisi pondside pondus pondweed pondwort pondy pone ponent Ponera Poneramoeba ponerid Poneridae Ponerinae ponerine poneroid ponerology poney pong ponga pongee Pongidae Pongo poniard ponica ponier ponja pont Pontac Pontacq pontage pontal Pontederia Pontederiaceae pontederiaceous pontee pontes pontianak Pontic pontic ponticello ponticular ponticulus pontifex pontiff pontific pontifical pontificalia pontificalibus pontificality pontifically pontificate pontification pontifices pontificial pontificially pontificious pontify pontil pontile pontin Pontine pontine pontist pontlevis ponto Pontocaspian pontocerebellar ponton pontonier pontoon pontooneer pontooner pontooning pontvolant pony ponzite pooa pooch pooder poodle poodledom poodleish poodleship poof poogye pooh poohpoohist pook pooka pookaun pookoo pool pooler pooli poolroom poolroot poolside poolwort pooly poon poonac poonga poonghie poop pooped poophyte poophytic poor poorhouse poorish poorliness poorling poorly poorlyish poormaster poorness poorweed poorwill poot Pop pop popadam popal popcorn popdock pope Popean popedom popeholy popehood popeism popeler popeless popelike popeline popely popery popeship popess popeye popeyed popglove popgun popgunner popgunnery Popian popify popinac popinjay Popish popish popishly popishness popjoy poplar poplared Poplilia poplin poplinette popliteal popliteus poplolly Popocracy Popocrat Popolari Popoloco popomastic popover Popovets poppa poppability poppable poppean poppel popper poppet poppethead poppied poppin popple popply poppy poppycock poppycockish poppyfish poppyhead poppylike poppywort popshop populace popular popularism Popularist popularity popularization popularize popularizer popularly popularness populate population populational populationist populationistic populationless populator populicide populin Populism Populist Populistic populous populously populousness Populus popweed poral porbeagle porcate porcated porcelain porcelainization porcelainize porcelainlike porcelainous porcelaneous porcelanic porcelanite porcelanous Porcellana porcellanian porcellanid Porcellanidae porcellanize porch porched porching porchless porchlike porcine Porcula porcupine porcupinish pore pored porelike Porella porencephalia porencephalic porencephalitis porencephalon porencephalous porencephalus porencephaly porer porge porger porgy Poria poricidal Porifera poriferal poriferan poriferous poriform porimania poriness poring poringly poriomanic porism porismatic porismatical porismatically poristic poristical porite Porites Poritidae poritoid pork porkburger porker porkery porket porkfish porkish porkless porkling porkman Porkopolis porkpie porkwood porky pornerastic pornocracy pornocrat pornograph pornographer pornographic pornographically pornographist pornography pornological Porocephalus porodine porodite porogam porogamic porogamous porogamy porokaiwhiria porokeratosis Porokoto poroma porometer porophyllous poroplastic poroporo pororoca poros poroscope poroscopic poroscopy porose poroseness porosimeter porosis porosity porotic porotype porous porously porousness porpentine porphine Porphyra Porphyraceae porphyraceous porphyratin Porphyrean porphyria Porphyrian porphyrian Porphyrianist porphyrin porphyrine porphyrinuria Porphyrio porphyrion porphyrite porphyritic porphyroblast porphyroblastic porphyrogene porphyrogenite porphyrogenitic porphyrogenitism porphyrogeniture porphyrogenitus porphyroid porphyrophore porphyrous porphyry Porpita porpitoid porpoise porpoiselike porporate porr porraceous porrect porrection porrectus porret porridge porridgelike porridgy porriginous porrigo Porrima porringer porriwiggle porry port porta portability portable portableness portably portage portague portahepatis portail portal portaled portalled portalless portamento portance portass portatile portative portcrayon portcullis porteacid ported porteligature portend portendance portendment Porteno portension portent portention portentosity portentous portentously portentousness porteous porter porterage Porteranthus porteress porterhouse porterlike porterly portership portfire portfolio portglaive portglave portgrave Porthetria Portheus porthole porthook porthors porthouse Portia portia portico porticoed portiere portiered portifory portify portio portiomollis portion portionable portional portionally portioner portionist portionize portionless portitor Portlandian portlast portless portlet portligature portlily portliness portly portman portmanmote portmanteau portmanteaux portmantle portmantologism portment portmoot porto portoise portolan portolano Portor portrait portraitist portraitlike portraiture portray portrayable portrayal portrayer portrayist portrayment portreeve portreeveship portress portside portsider portsman portuary portugais Portugal Portugalism Portugee Portuguese Portulaca Portulacaceae portulacaceous Portulacaria portulan Portunalia portunian Portunidae Portunus portway porty porule porulose porulous porus porwigle pory Porzana posadaship posca pose Poseidon Poseidonian posement poser poseur posey posh posing posingly posit position positional positioned positioner positionless positival positive positively positiveness positivism positivist positivistic positivistically positivity positivize positor positron positum positure Posnanian posnet posole posologic posological posologist posology pospolite poss posse posseman possess possessable possessed possessedly possessedness possessing possessingly possessingness possession possessional possessionalism possessionalist possessionary possessionate possessioned possessioner possessionist possessionless possessionlessness possessival possessive possessively possessiveness possessor possessoress possessorial possessoriness possessorship possessory posset possibilism possibilist possibilitate possibility possible possibleness possibly possum possumwood post postabdomen postabdominal postable postabortal postacetabular postadjunct postage postal postallantoic postally postalveolar postament postamniotic postanal postanesthetic postantennal postaortic postapoplectic postappendicular postarterial postarthritic postarticular postarytenoid postaspirate postaspirated postasthmatic postatrial postauditory postauricular postaxiad postaxial postaxially postaxillary postbag postbaptismal postbox postboy postbrachial postbrachium postbranchial postbreakfast postbronchial postbuccal postbulbar postbursal postcaecal postcalcaneal postcalcarine postcanonical postcardiac postcardinal postcarnate postcarotid postcart postcartilaginous postcatarrhal postcava postcaval postcecal postcenal postcentral postcentrum postcephalic postcerebellar postcerebral postcesarean postcibal postclassic postclassical postclassicism postclavicle postclavicula postclavicular postclimax postclitellian postclival postcolon postcolonial postcolumellar postcomitial postcommissural postcommissure postcommunicant Postcommunion postconceptive postcondylar postconfinement postconnubial postconsonantal postcontact postcontract postconvalescent postconvulsive postcordial postcornu postcosmic postcostal postcoxal postcritical postcrural postcubital postdate postdental postdepressive postdetermined postdevelopmental postdiagnostic postdiaphragmatic postdiastolic postdicrotic postdigestive postdigital postdiluvial postdiluvian postdiphtheric postdiphtheritic postdisapproved postdisseizin postdisseizor postdoctoral postdoctorate postdural postdysenteric posted posteen postelection postelementary postembryonal postembryonic postemporal postencephalitic postencephalon postenteral postentry postepileptic poster posterette posteriad posterial posterior posterioric posteriorically posterioristic posterioristically posteriority posteriorly posteriormost posteriors posteriorums posterish posterishness posterist posterity posterize postern posteroclusion posterodorsad posterodorsal posterodorsally posteroexternal posteroinferior posterointernal posterolateral posteromedial posteromedian posteromesial posteroparietal posterosuperior posterotemporal posteroterminal posteroventral posteruptive postesophageal posteternity postethmoid postexilian postexilic postexist postexistence postexistency postexistent postface postfact postfebrile postfemoral postfetal postfix postfixal postfixation postfixed postfixial postflection postflexion postform postfoveal postfrontal postfurca postfurcal postganglionic postgangrenal postgastric postgeminum postgenial postgeniture postglacial postglenoid postglenoidal postgonorrheic postgracile postgraduate postgrippal posthabit posthaste posthemiplegic posthemorrhagic posthepatic posthetomist posthetomy posthexaplaric posthippocampal posthitis postholder posthole posthouse posthumeral posthumous posthumously posthumousness posthumus posthyoid posthypnotic posthypnotically posthypophyseal posthypophysis posthysterical postic postical postically posticous posticteric posticum postil postilion postilioned postillate postillation postillator postimpressionism postimpressionist postimpressionistic postinfective postinfluenzal posting postingly postintestinal postique postischial postjacent postjugular postlabial postlachrymal postlaryngeal postlegitimation postlenticular postless postlike postliminary postliminiary postliminious postliminium postliminous postliminy postloitic postloral postlude postludium postluetic postmalarial postmamillary postmammary postman postmandibular postmaniacal postmarital postmark postmarriage postmaster postmasterlike postmastership postmastoid postmaturity postmaxillary postmaximal postmeatal postmedia postmedial postmedian postmediastinal postmediastinum postmedullary postmeiotic postmeningeal postmenstrual postmental postmeridian postmeridional postmesenteric postmillenarian postmillenarianism postmillennial postmillennialism postmillennialist postmillennian postmineral postmistress postmortal postmortuary postmundane postmuscular postmutative postmycotic postmyxedematous postnarial postnaris postnasal postnatal postnate postnati postnecrotic postnephritic postneural postneuralgic postneuritic postneurotic postnodular postnominal postnotum postnuptial postnuptially postobituary postocular postolivary postomental postoperative postoptic postoral postorbital postordination postorgastic postosseous postotic postpagan postpaid postpalatal postpalatine postpalpebral postpaludal postparalytic postparietal postparotid postparotitic postparoxysmal postparturient postpatellar postpathological postpericardial postpharyngeal postphlogistic postphragma postphrenic postphthisic postpituitary postplace postplegic postpneumonic postponable postpone postponement postponence postponer postpontile postpose postposited postposition postpositional postpositive postpositively postprandial postprandially postpredicament postprophesy postprostate postpubertal postpubescent postpubic postpubis postpuerperal postpulmonary postpupillary postpycnotic postpyloric postpyramidal postpyretic postrachitic postramus postrectal postreduction postremogeniture postremote postrenal postresurrection postresurrectional postretinal postrheumatic postrhinal postrider postrorse postrostral postrubeolar postsaccular postsacral postscalenus postscapula postscapular postscapularis postscarlatinal postscenium postscorbutic postscribe postscript postscriptum postscutellar postscutellum postseason postsigmoid postsign postspasmodic postsphenoid postsphenoidal postsphygmic postspinous postsplenial postsplenic poststernal poststertorous postsuppurative postsurgical postsynaptic postsynsacral postsyphilitic postsystolic posttabetic posttarsal posttetanic postthalamic postthoracic postthyroidal posttibial posttonic posttoxic posttracheal posttrapezoid posttraumatic posttreaty posttubercular posttussive posttympanic posttyphoid postulancy postulant postulantship postulata postulate postulation postulational postulator postulatory postulatum postulnar postumbilical postumbonal postural posture posturer postureteric posturist posturize postuterine postvaccinal postvaricellar postvarioloid postvelar postvenereal postvenous postverbal Postverta postvertebral postvesical postvide postvocalic postwar postward postwise postwoman postxyphoid postyard postzygapophysial postzygapophysis posy pot potability potable potableness potagerie potagery potamic Potamobiidae Potamochoerus Potamogale Potamogalidae Potamogeton Potamogetonaceae potamogetonaceous potamological potamologist potamology potamometer Potamonidae potamophilous potamoplankton potash potashery potass potassa potassamide potassic potassiferous potassium potate potation potative potato potator potatory Potawatami Potawatomi potbank potbellied potbelly potboil potboiler potboy potboydom potch potcher potcherman potcrook potdar pote potecary poteen potence potency potent potentacy potentate potential potentiality potentialization potentialize potentially potentialness potentiate potentiation Potentilla potentiometer potentiometric potentize potently potentness poter Poterium potestal potestas potestate potestative poteye potful potgirl potgun pothanger pothead pothecary potheen pother potherb potherment pothery pothole pothook pothookery Pothos pothouse pothousey pothunt pothunter pothunting poticary potichomania potichomanist potifer Potiguara potion potlatch potleg potlicker potlid potlike potluck potmaker potmaking potman potomania potomato potometer potong potoo Potoroinae potoroo Potorous potpie potpourri potrack potsherd potshoot potshooter potstick potstone pott pottage pottagy pottah potted potter potterer potteress potteringly pottery Pottiaceae potting pottinger pottle pottled potto potty potwaller potwalling potware potwhisky potwork potwort pouce poucer poucey pouch pouched pouchful pouchless pouchlike pouchy poudrette pouf poulaine poulard poulardize poulp poulpe poult poulter poulterer poulteress poultice poulticewise poultry poultrydom poultryist poultryless poultrylike poultryman poultryproof pounamu pounce pounced pouncer pouncet pouncing pouncingly pound poundage poundal poundcake pounder pounding poundkeeper poundless poundlike poundman poundmaster poundmeal poundstone poundworth pour pourer pourie pouring pouringly pourparler pourparley pourpiece pourpoint pourpointer pouser poussette pout pouter poutful pouting poutingly pouty poverish poverishment poverty povertyweed Povindah pow powder powderable powdered powderer powderiness powdering powderization powderize powderizer powderlike powderman powdery powdike powdry powellite power powerboat powered powerful powerfully powerfulness powerhouse powerless powerlessly powerlessness powermonger Powhatan powitch powldoody pownie powsoddy powsowdy powwow powwower powwowism pox poxy poy poyou pozzolanic pozzuolana pozzuolanic praam prabble prabhu practic practicability practicable practicableness practicably practical practicalism practicalist practicality practicalization practicalize practicalizer practically practicalness practicant practice practiced practicedness practicer practician practicianism practicum practitional practitioner practitionery prad pradhana praeabdomen praeacetabular praeanal praecava praecipe praecipuum praecoces praecocial praecognitum praecoracoid praecordia praecordial praecordium praecornu praecox praecuneus praedial praedialist praediality praeesophageal praefect praefectorial praefectus praefervid praefloration praefoliation praehallux praelabrum praelection praelector praelectorship praelectress praeludium praemaxilla praemolar praemunire praenarial Praenestine Praenestinian praeneural praenomen praenomina praenominal praeoperculum praepositor praepostor praepostorial praepubis praepuce praescutum Praesepe praesertim Praesian praesidium praesphenoid praesternal praesternum praestomium praesystolic praetaxation praetexta praetor praetorial Praetorian praetorian praetorianism praetorium praetorship praezygapophysis pragmatic pragmatica pragmatical pragmaticality pragmatically pragmaticalness pragmaticism pragmatics pragmatism pragmatist pragmatistic pragmatize pragmatizer prairie prairiecraft prairied prairiedom prairielike prairieweed prairillon praisable praisableness praisably praise praiseful praisefully praisefulness praiseless praiseproof praiser praiseworthy praising praisingly praisworthily praisworthiness Prajapati prajna Prakrit prakriti Prakritic Prakritize praline pralltriller pram Pramnian prana prance pranceful prancer prancing prancingly prancy prandial prandially prank pranked pranker prankful prankfulness pranking prankingly prankish prankishly prankishness prankle pranksome pranksomeness prankster pranky prase praseocobaltic praseodidymium praseodymia praseodymium praseolite prasine prasinous prasoid prasophagous prasophagy prastha prat pratal prate prateful pratement pratensian Prater prater pratey pratfall pratiloma Pratincola pratincole pratincoline pratincolous prating pratingly pratique pratiyasamutpada prattfall prattle prattlement prattler prattling prattlingly prattly prau pravity prawn prawner prawny Praxean Praxeanist praxinoscope praxiology praxis Praxitelean pray praya prayer prayerful prayerfully prayerfulness prayerless prayerlessly prayerlessness prayermaker prayermaking prayerwise prayful praying prayingly prayingwise preabdomen preabsorb preabsorbent preabstract preabundance preabundant preabundantly preaccept preacceptance preaccess preaccessible preaccidental preaccidentally preaccommodate preaccommodating preaccommodatingly preaccommodation preaccomplish preaccomplishment preaccord preaccordance preaccount preaccounting preaccredit preaccumulate preaccumulation preaccusation preaccuse preaccustom preaccustomed preacetabular preach preachable preacher preacherdom preacheress preacherize preacherless preacherling preachership preachieved preachification preachify preachily preachiness preaching preachingly preachman preachment preachy preacid preacidity preacidly preacidness preacknowledge preacknowledgment preacquaint preacquaintance preacquire preacquired preacquit preacquittal preact preaction preactive preactively preactivity preacute preacutely preacuteness preadamic preadamite preadamitic preadamitical preadamitism preadapt preadaptable preadaptation preaddition preadditional preaddress preadequacy preadequate preadequately preadhere preadherence preadherent preadjectival preadjective preadjourn preadjournment preadjunct preadjust preadjustable preadjustment preadministration preadministrative preadministrator preadmire preadmirer preadmission preadmit preadmonish preadmonition preadolescent preadopt preadoption preadoration preadore preadorn preadornment preadult preadulthood preadvance preadvancement preadventure preadvertency preadvertent preadvertise preadvertisement preadvice preadvisable preadvise preadviser preadvisory preadvocacy preadvocate preaestival preaffect preaffection preaffidavit preaffiliate preaffiliation preaffirm preaffirmation preaffirmative preafflict preaffliction preafternoon preaged preaggravate preaggravation preaggression preaggressive preagitate preagitation preagonal preagony preagree preagreement preagricultural preagriculture prealarm prealcohol prealcoholic prealgebra prealgebraic prealkalic preallable preallably preallegation preallege prealliance preallied preallot preallotment preallow preallowable preallowably preallowance preallude preallusion preally prealphabet prealphabetical prealtar prealteration prealveolar preamalgamation preambassadorial preambition preambitious preamble preambled preambling preambular preambulary preambulate preambulation preambulatory preanal preanaphoral preanesthetic preanimism preannex preannounce preannouncement preannouncer preantepenult preantepenultimate preanterior preanticipate preantiquity preantiseptic preaortic preappearance preapperception preapplication preappoint preappointment preapprehension preapprise preapprobation preapproval preapprove preaptitude prearm prearrange prearrangement prearrest prearrestment prearticulate preartistic preascertain preascertainment preascitic preaseptic preassigned preassume preassurance preassure preataxic preattachment preattune preaudience preauditory preaver preavowal preaxiad preaxial preaxially prebachelor prebacillary prebake prebalance preballot preballoting prebankruptcy prebaptismal prebaptize prebarbaric prebarbarous prebargain prebasal prebasilar prebeleve prebelief prebeliever prebelieving prebellum prebeloved prebend prebendal prebendary prebendaryship prebendate prebenediction prebeneficiary prebenefit prebeset prebestow prebestowal prebetray prebetrayal prebetrothal prebid prebidding prebill prebless preblessing preblockade preblooming preboast preboding preboil preborn preborrowing preboyhood prebrachial prebrachium prebreathe prebridal prebroadcasting prebromidic prebronchial prebronze prebrute prebuccal prebudget prebudgetary prebullying preburlesque preburn precalculable precalculate precalculation precampaign precancel precancellation precancerous precandidacy precandidature precanning precanonical precant precantation precanvass precapillary precapitalist precapitalistic precaptivity precapture precarcinomatous precardiac precaria precarious precariously precariousness precarium precarnival precartilage precartilaginous precary precast precation precative precatively precatory precaudal precausation precaution precautional precautionary precautious precautiously precautiousness precava precaval precedable precede precedence precedency precedent precedentable precedentary precedented precedential precedentless precedently preceder preceding precelebrant precelebrate precelebration precensure precensus precent precentor precentorial precentorship precentory precentral precentress precentrix precentrum precept preception preceptist preceptive preceptively preceptor preceptoral preceptorate preceptorial preceptorially preceptorship preceptory preceptress preceptual preceptually preceramic precerebellar precerebral precerebroid preceremonial preceremony precertification precertify preces precess precession precessional prechallenge prechampioned prechampionship precharge prechart precheck prechemical precherish prechildhood prechill prechloric prechloroform prechoice prechoose prechordal prechoroid preciation precinct precinction precinctive preciosity precious preciously preciousness precipe precipice precipiced precipitability precipitable precipitance precipitancy precipitant precipitantly precipitantness precipitate precipitated precipitatedly precipitately precipitation precipitative precipitator precipitin precipitinogen precipitinogenic precipitous precipitously precipitousness precirculate precirculation precis precise precisely preciseness precisian precisianism precisianist precision precisional precisioner precisionism precisionist precisionize precisive precitation precite precited precivilization preclaim preclaimant preclaimer preclassic preclassical preclassification preclassified preclassify preclean precleaner precleaning preclerical preclimax preclinical preclival precloacal preclose preclosure preclothe precludable preclude preclusion preclusive preclusively precoagulation precoccygeal precocial precocious precociously precociousness precocity precogitate precogitation precognition precognitive precognizable precognizant precognize precognosce precoil precoiler precoincidence precoincident precoincidently precollapsable precollapse precollect precollectable precollection precollector precollege precollegiate precollude precollusion precollusive precolor precolorable precoloration precoloring precombat precombatant precombination precombine precombustion precommand precommend precomment precommercial precommissural precommissure precommit precommune precommunicate precommunication precommunion precompare precomparison precompass precompel precompensate precompensation precompilation precompile precompiler precompleteness precompletion precompliance precompliant precomplicate precomplication precompose precomposition precompound precompounding precompoundly precomprehend precomprehension precomprehensive precompress precompulsion precomradeship preconceal preconcealment preconcede preconceivable preconceive preconceived preconcentrate preconcentrated preconcentratedly preconcentration preconcept preconception preconceptional preconceptual preconcern preconcernment preconcert preconcerted preconcertedly preconcertedness preconcertion preconcertive preconcession preconcessive preconclude preconclusion preconcur preconcurrence preconcurrent preconcurrently precondemn precondemnation precondensation precondense precondition preconditioned preconduct preconduction preconductor precondylar precondyloid preconfer preconference preconfess preconfession preconfide preconfiguration preconfigure preconfine preconfinedly preconfinemnt preconfirm preconfirmation preconflict preconform preconformity preconfound preconfuse preconfusedly preconfusion precongenial precongested precongestion precongestive precongratulate precongratulation precongressional preconizance preconization preconize preconizer preconjecture preconnection preconnective preconnubial preconquer preconquest preconquestal preconquestual preconscious preconsciously preconsciousness preconsecrate preconsecration preconsent preconsider preconsideration preconsign preconsoidate preconsolation preconsole preconsolidated preconsolidation preconsonantal preconspiracy preconspirator preconspire preconstituent preconstitute preconstruct preconstruction preconsult preconsultation preconsultor preconsume preconsumer preconsumption precontact precontain precontained precontemn precontemplate precontemplation precontemporaneous precontemporary precontend precontent precontention precontently precontentment precontest precontinental precontract precontractive precontractual precontribute precontribution precontributive precontrivance precontrive precontrol precontrolled precontroversial precontroversy preconvention preconversation preconversational preconversion preconvert preconvey preconveyal preconveyance preconvict preconviction preconvince precook precooker precool precooler precooling precopy precoracoid precordia precordial precordiality precordially precordium precorneal precornu precoronation precorrect precorrection precorrectly precorrectness precorrespond precorrespondence precorrespondent precorridor precorrupt precorruption precorruptive precorruptly precoruptness precosmic precosmical precostal precounsel precounsellor precourse precover precovering precox precreate precreation precreative precredit precreditor precreed precritical precriticism precriticize precrucial precrural precrystalline precultivate precultivation precultural preculturally preculture precuneal precuneate precuneus precure precurrent precurricular precurriculum precursal precurse precursive precursor precursory precurtain precut precyclone precyclonic precynical precyst precystic predable predacean predaceous predaceousness predacity predamage predamn predamnation predark predarkness predata predate predation predatism predative predator predatorily predatoriness predatory predawn preday predaylight predaytime predazzite predealer predealing predeath predeathly predebate predebater predebit predebtor predecay predecease predeceaser predeceive predeceiver predeception predecession predecessor predecessorship predecide predecision predecisive predeclaration predeclare predeclination predecline predecree prededicate prededuct prededuction predefault predefeat predefect predefective predefence predefend predefense predefiance predeficiency predeficient predefine predefinite predefinition predefray predefrayal predefy predegeneracy predegenerate predegree predeication predelay predelegate predelegation predeliberate predeliberately predeliberation predelineate predelineation predelinquency predelinquent predelinquently predeliver predelivery predella predelude predelusion predemand predemocracy predemocratic predemonstrate predemonstration predemonstrative predenial predental predentary Predentata predentate predeny predepart predepartmental predeparture predependable predependence predependent predeplete predepletion predeposit predepository predepreciate predepreciation predepression predeprivation predeprive prederivation prederive predescend predescent predescribe predescription predesert predeserter predesertion predeserve predeserving predesign predesignate predesignation predesignatory predesirous predesolate predesolation predespair predesperate predespicable predespise predespond predespondency predespondent predestinable predestinarian predestinarianism predestinate predestinately predestination predestinational predestinationism predestinationist predestinative predestinator predestine predestiny predestitute predestitution predestroy predestruction predetach predetachment predetail predetain predetainer predetect predetention predeterminability predeterminable predeterminant predeterminate predeterminately predetermination predeterminative predetermine predeterminer predeterminism predeterministic predetest predetestation predetrimental predevelop predevelopment predevise predevote predevotion predevour prediagnosis prediagnostic predial prediastolic prediatory predicability predicable predicableness predicably predicament predicamental predicamentally predicant predicate predication predicational predicative predicatively predicator predicatory predicrotic predict predictability predictable predictably predictate predictation prediction predictional predictive predictively predictiveness predictor predictory prediet predietary predifferent predifficulty predigest predigestion predikant predilect predilected predilection prediligent prediligently prediluvial prediluvian prediminish prediminishment prediminution predine predinner prediphtheritic prediploma prediplomacy prediplomatic predirect predirection predirector predisability predisable predisadvantage predisadvantageous predisadvantageously predisagree predisagreeable predisagreement predisappointment predisaster predisastrous prediscern prediscernment predischarge prediscipline predisclose predisclosure prediscontent prediscontented prediscontentment prediscontinuance prediscontinuation prediscontinue prediscount prediscountable prediscourage prediscouragement prediscourse prediscover prediscoverer prediscovery prediscreet prediscretion prediscretionary prediscriminate prediscrimination prediscriminator prediscuss prediscussion predisgrace predisguise predisgust predislike predismiss predismissal predismissory predisorder predisordered predisorderly predispatch predispatcher predisperse predispersion predisplace predisplacement predisplay predisponency predisponent predisposable predisposal predispose predisposed predisposedly predisposedness predisposition predispositional predisputant predisputation predispute predisregard predisrupt predisruption predissatisfaction predissolution predissolve predissuade predistinct predistinction predistinguish predistress predistribute predistribution predistributor predistrict predistrust predistrustful predisturb predisturbance prediversion predivert predivide predividend predivider predivinable predivinity predivision predivorce predivorcement predoctorate predocumentary predomestic predominance predominancy predominant predominantly predominate predominately predominatingly predomination predominator predonate predonation predonor predoom predorsal predoubt predoubter predoubtful predraft predrainage predramatic predraw predrawer predread predreadnought predrill predriller predrive predriver predry preduplicate preduplication predusk predwell predynamite predynastic preen preener preeze prefab prefabricate prefabrication prefabricator preface prefaceable prefacer prefacial prefacist prefactor prefactory prefamiliar prefamiliarity prefamiliarly prefamous prefashion prefatial prefator prefatorial prefatorially prefatorily prefatory prefavor prefavorable prefavorably prefavorite prefearful prefearfully prefeast prefect prefectly prefectoral prefectorial prefectorially prefectorian prefectship prefectual prefectural prefecture prefecundation prefecundatory prefederal prefelic prefer preferability preferable preferableness preferably preferee preference preferent preferential preferentialism preferentialist preferentially preferment prefermentation preferred preferredly preferredness preferrer preferrous prefertile prefertility prefertilization prefertilize prefervid prefestival prefeudal prefeudalic prefeudalism prefiction prefictional prefigurate prefiguration prefigurative prefiguratively prefigurativeness prefigure prefigurement prefiller prefilter prefinal prefinance prefinancial prefine prefinish prefix prefixable prefixal prefixally prefixation prefixed prefixedly prefixion prefixture preflagellate preflatter preflattery preflavor preflavoring preflection preflexion preflight preflood prefloration preflowering prefoliation prefool preforbidden preforceps preforgive preforgiveness preforgotten preform preformant preformation preformationary preformationism preformationist preformative preformed preformism preformist preformistic preformulate preformulation prefortunate prefortunately prefortune prefoundation prefounder prefragrance prefragrant prefrankness prefraternal prefraternally prefraud prefreeze prefreshman prefriendly prefriendship prefright prefrighten prefrontal prefulfill prefulfillment prefulgence prefulgency prefulgent prefunction prefunctional prefuneral prefungoidal prefurlough prefurnish pregain pregainer pregalvanize preganglionic pregather pregathering pregeminum pregenerate pregeneration pregenerosity pregenerous pregenerously pregenial pregeniculatum pregeniculum pregenital pregeological pregirlhood preglacial pregladden pregladness preglenoid preglenoidal preglobulin pregnability pregnable pregnance pregnancy pregnant pregnantly pregnantness pregolden pregolfing pregracile pregracious pregrade pregraduation pregranite pregranitic pregratification pregratify pregreet pregreeting pregrievance pregrowth preguarantee preguarantor preguard preguess preguidance preguide preguilt preguiltiness preguilty pregust pregustant pregustation pregustator pregustic prehallux prehalter prehandicap prehandle prehaps preharden preharmonious preharmoniousness preharmony preharsh preharshness preharvest prehatred prehaunt prehaunted prehaustorium prehazard prehazardous preheal prehearing preheat preheated preheater prehemiplegic prehend prehensible prehensile prehensility prehension prehensive prehensiveness prehensor prehensorial prehensory prehepatic prehepaticus preheroic prehesitancy prehesitate prehesitation prehexameral prehistorian prehistoric prehistorical prehistorically prehistorics prehistory prehnite prehnitic preholder preholding preholiday prehorizon prehorror prehostile prehostility prehuman prehumiliate prehumiliation prehumor prehunger prehydration prehypophysis preidea preidentification preidentify preignition preilluminate preillumination preillustrate preillustration preimage preimaginary preimagination preimagine preimbibe preimbue preimitate preimitation preimitative preimmigration preimpair preimpairment preimpart preimperial preimport preimportance preimportant preimportantly preimportation preimposal preimpose preimposition preimpress preimpression preimpressive preimprove preimprovement preinaugural preinaugurate preincarnate preincentive preinclination preincline preinclude preinclusion preincorporate preincorporation preincrease preindebted preindebtedness preindemnification preindemnify preindemnity preindependence preindependent preindependently preindesignate preindicant preindicate preindication preindispose preindisposition preinduce preinducement preinduction preinductive preindulge preindulgence preindulgent preindustrial preindustry preinfect preinfection preinfer preinference preinflection preinflectional preinflict preinfluence preinform preinformation preinhabit preinhabitant preinhabitation preinhere preinherit preinheritance preinitial preinitiate preinitiation preinjure preinjurious preinjury preinquisition preinscribe preinscription preinsert preinsertion preinsinuate preinsinuating preinsinuatingly preinsinuation preinsinuative preinspect preinspection preinspector preinspire preinstall preinstallation preinstill preinstillation preinstruct preinstruction preinstructional preinstructive preinsula preinsular preinsulate preinsulation preinsult preinsurance preinsure preintellectual preintelligence preintelligent preintelligently preintend preintention preintercede preintercession preinterchange preintercourse preinterest preinterfere preinterference preinterpret preinterpretation preinterpretative preinterview preintone preinvent preinvention preinventive preinventory preinvest preinvestigate preinvestigation preinvestigator preinvestment preinvitation preinvite preinvocation preinvolve preinvolvement preiotization preiotize preirrigation preirrigational preissuance preissue prejacent prejournalistic prejudge prejudgement prejudger prejudgment prejudication prejudicative prejudicator prejudice prejudiced prejudicedly prejudiceless prejudiciable prejudicial prejudicially prejudicialness prejudicious prejudiciously prejunior prejurisdiction prejustification prejustify prejuvenile Prekantian prekindergarten prekindle preknit preknow preknowledge prelabel prelabial prelabor prelabrum prelachrymal prelacrimal prelacteal prelacy prelanguage prelapsarian prelate prelatehood prelateship prelatess prelatial prelatic prelatical prelatically prelaticalness prelation prelatish prelatism prelatist prelatize prelatry prelature prelaunch prelaunching prelawful prelawfully prelawfulness prelease prelect prelection prelector prelectorship prelectress prelecture prelegacy prelegal prelegate prelegatee prelegend prelegendary prelegislative preliability preliable prelibation preliberal preliberality preliberally preliberate preliberation prelicense prelim preliminarily preliminary prelimit prelimitate prelimitation prelingual prelinguistic prelinpinpin preliquidate preliquidation preliteral preliterally preliteralness preliterary preliterate preliterature prelithic prelitigation preloan prelocalization prelocate prelogic prelogical preloral preloreal preloss prelude preluder preludial preludious preludiously preludium preludize prelumbar prelusion prelusive prelusively prelusorily prelusory preluxurious premachine premadness premaintain premaintenance premake premaker premaking premandibular premanhood premaniacal premanifest premanifestation premankind premanufacture premanufacturer premanufacturing premarital premarriage premarry premastery prematch premate prematerial prematernity prematrimonial prematuration premature prematurely prematureness prematurity premaxilla premaxillary premeasure premeasurement premechanical premedia premedial premedian premedic premedical premedicate premedication premedieval premedievalism premeditate premeditatedly premeditatedness premeditatingly premeditation premeditative premeditator premegalithic prememorandum premenace premenstrual premention premeridian premerit premetallic premethodical premial premiant premiate premidnight premidsummer premier premieral premiere premieress premierjus premiership premilitary premillenarian premillenarianism premillennial premillennialism premillennialist premillennialize premillennially premillennian preminister preministry premious premisal premise premisory premisrepresent premisrepresentation premiss premium premix premixer premixture premodel premodern premodification premodify premolar premold premolder premolding premonarchial premonetary Premongolian premonish premonishment premonition premonitive premonitor premonitorily premonitory premonopolize premonopoly Premonstrant Premonstratensian premonumental premoral premorality premorally premorbid premorbidly premorbidness premorning premorse premortal premortification premortify premortuary premosaic premotion premourn premove premovement premover premuddle premultiplication premultiplier premultiply premundane premunicipal premunition premunitory premusical premuster premutative premutiny premycotic premyelocyte premythical prename Prenanthes prenares prenarial prenaris prenasal prenatal prenatalist prenatally prenational prenative prenatural prenaval prender prendre prenebular prenecessitate preneglect preneglectful prenegligence prenegligent prenegotiate prenegotiation preneolithic prenephritic preneural preneuralgic prenight prenoble prenodal prenominal prenominate prenomination prenominical prenotation prenotice prenotification prenotify prenotion prentice prenticeship prenumber prenumbering prenuncial prenuptial prenursery preobedience preobedient preobject preobjection preobjective preobligate preobligation preoblige preobservance preobservation preobservational preobserve preobstruct preobstruction preobtain preobtainable preobtrude preobtrusion preobtrusive preobviate preobvious preobviously preobviousness preoccasioned preoccipital preocclusion preoccultation preoccupancy preoccupant preoccupate preoccupation preoccupative preoccupied preoccupiedly preoccupiedness preoccupier preoccupy preoccur preoccurrence preoceanic preocular preodorous preoffend preoffense preoffensive preoffensively preoffensiveness preoffer preoffering preofficial preofficially preominate preomission preomit preopen preopening preoperate preoperation preoperative preoperatively preoperator preopercle preopercular preoperculum preopinion preopinionated preoppose preopposition preoppress preoppression preoppressor preoptic preoptimistic preoption preoral preorally preorbital preordain preorder preordination preorganic preorganization preorganize preoriginal preoriginally preornamental preoutfit preoutline preoverthrow prep prepainful prepalatal prepalatine prepaleolithic prepanic preparable preparation preparationist preparative preparatively preparator preparatorily preparatory prepardon prepare prepared preparedly preparedness preparement preparental preparer preparietal preparingly preparliamentary preparoccipital preparoxysmal prepartake preparticipation prepartisan prepartition prepartnership prepatellar prepatent prepatriotic prepave prepavement prepay prepayable prepayment prepeduncle prepenetrate prepenetration prepenial prepense prepensely prepeople preperceive preperception preperceptive preperitoneal prepersuade prepersuasion prepersuasive preperusal preperuse prepetition prephragma prephthisical prepigmental prepink prepious prepituitary preplace preplacement preplacental preplan preplant prepledge preplot prepoetic prepoetical prepoison prepolice prepolish prepolitic prepolitical prepolitically prepollence prepollency prepollent prepollex preponder preponderance preponderancy preponderant preponderantly preponderate preponderately preponderating preponderatingly preponderation preponderous preponderously prepontile prepontine preportray preportrayal prepose preposition prepositional prepositionally prepositive prepositively prepositor prepositorial prepositure prepossess prepossessed prepossessing prepossessingly prepossessingness prepossession prepossessionary prepossessor preposterous preposterously preposterousness prepostorship prepotence prepotency prepotent prepotential prepotently prepractical prepractice preprandial prepreference prepreparation preprice preprimary preprimer preprimitive preprint preprofess preprofessional preprohibition prepromise prepromote prepromotion prepronounce prepronouncement preprophetic preprostatic preprove preprovide preprovision preprovocation preprovoke preprudent preprudently prepsychological prepsychology prepuberal prepubertal prepuberty prepubescent prepubic prepubis prepublication prepublish prepuce prepunctual prepunish prepunishment prepupa prepupal prepurchase prepurchaser prepurpose preputial preputium prepyloric prepyramidal prequalification prequalify prequarantine prequestion prequotation prequote preracing preradio prerailroad prerailroadite prerailway preramus prerational prereadiness preready prerealization prerealize prerebellion prereceipt prereceive prereceiver prerecital prerecite prereckon prereckoning prerecognition prerecognize prerecommend prerecommendation prereconcile prereconcilement prereconciliation prerectal preredeem preredemption prereduction prerefer prereference prerefine prerefinement prereform prereformation prereformatory prerefusal prerefuse preregal preregister preregistration preregulate preregulation prereject prerejection prerejoice prerelate prerelation prerelationship prerelease prereligious prereluctation preremit preremittance preremorse preremote preremoval preremove preremunerate preremuneration prerenal prerent prerental prereport prerepresent prerepresentation prereption prerepublican prerequest prerequire prerequirement prerequisite prerequisition preresemblance preresemble preresolve preresort prerespectability prerespectable prerespiration prerespire preresponsibility preresponsible prerestoration prerestrain prerestraint prerestrict prerestriction prereturn prereveal prerevelation prerevenge prereversal prereverse prereview prerevise prerevision prerevival prerevolutionary prerheumatic prerich prerighteous prerighteously prerighteousness prerogatival prerogative prerogatived prerogatively prerogativity prerolandic preromantic preromanticism preroute preroutine preroyal preroyally preroyalty prerupt preruption presacral presacrifice presacrificial presage presageful presagefully presager presagient presaging presagingly presalvation presanctification presanctified presanctify presanguine presanitary presartorial presatisfaction presatisfactory presatisfy presavage presavagery presay presbyacousia presbyacusia presbycousis presbycusis presbyope presbyophrenia presbyophrenic presbyopia presbyopic presbyopy presbyte presbyter presbyteral presbyterate presbyterated presbyteress presbyteria presbyterial presbyterially Presbyterian Presbyterianism Presbyterianize Presbyterianly presbyterium presbytership presbytery presbytia presbytic Presbytinae Presbytis presbytism prescapula prescapular prescapularis prescholastic preschool prescience prescient prescientific presciently prescind prescindent prescission prescored prescout prescribable prescribe prescriber prescript prescriptibility prescriptible prescription prescriptionist prescriptive prescriptively prescriptiveness prescriptorial prescrive prescutal prescutum preseal presearch preseason preseasonal presecular presecure presee preselect presell preseminal preseminary presence presenced presenceless presenile presenility presensation presension present presentability presentable presentableness presentably presental presentation presentational presentationism presentationist presentative presentatively presentee presentence presenter presential presentiality presentially presentialness presentient presentiment presentimental presentist presentive presentively presentiveness presently presentment presentness presentor preseparate preseparation preseparator preservability preservable preserval preservation preservationist preservative preservatize preservatory preserve preserver preserveress preses presession preset presettle presettlement presexual preshadow preshape preshare presharpen preshelter preship preshipment preshortage preshorten preshow preside presidence presidencia presidency president presidente presidentess presidential presidentially presidentiary presidentship presider presidial presidially presidiary presidio presidium presift presign presignal presignificance presignificancy presignificant presignification presignificative presignificator presignify presimian preslavery presmooth presocial presocialism presocialist presolar presolicit presolicitation presolution presolve presophomore presound prespecialist prespecialize prespecific prespecifically prespecification prespecify prespeculate prespeculation presphenoid presphenoidal presphygmic prespinal prespinous prespiracular presplendor presplenomegalic prespoil prespontaneity prespontaneous prespontaneously prespread presprinkle prespur press pressable pressboard pressdom pressel presser pressfat pressful pressgang pressible pressing pressingly pressingness pression pressive pressman pressmanship pressmark pressor presspack pressroom pressurage pressural pressure pressureless pressureproof pressurize pressurizer presswoman presswork pressworker prest prestabilism prestability prestable prestamp prestandard prestandardization prestandardize prestant prestate prestation prestatistical presteam presteel prester presternal presternum prestidigital prestidigitate prestidigitation prestidigitator prestidigitatorial prestige prestigiate prestigiation prestigiator prestigious prestigiously prestigiousness prestimulate prestimulation prestimulus prestissimo presto prestock prestomial prestomium prestorage prestore prestraighten prestrain prestrengthen prestress prestretch prestricken prestruggle prestubborn prestudious prestudiously prestudiousness prestudy presubdue presubiculum presubject presubjection presubmission presubmit presubordinate presubordination presubscribe presubscriber presubscription presubsist presubsistence presubsistent presubstantial presubstitute presubstitution presuccess presuccessful presuccessfully presuffer presuffering presufficiency presufficient presufficiently presuffrage presuggest presuggestion presuggestive presuitability presuitable presuitably presumable presumably presume presumedly presumer presuming presumption presumptious presumptiously presumptive presumptively presumptuous presumptuously presumptuousness presuperficial presuperficiality presuperficially presuperfluity presuperfluous presuperfluously presuperintendence presuperintendency presupervise presupervision presupervisor presupplemental presupplementary presupplicate presupplication presupply presupport presupposal presuppose presupposition presuppositionless presuppress presuppression presuppurative presupremacy presupreme presurgery presurgical presurmise presurprisal presurprise presurrender presurround presurvey presusceptibility presusceptible presuspect presuspend presuspension presuspicion presuspicious presuspiciously presuspiciousness presustain presutural preswallow presylvian presympathize presympathy presymphonic presymphony presymphysial presymptom presymptomatic presynapsis presynaptic presystematic presystematically presystole presystolic pretabulate pretabulation pretan pretangible pretangibly pretannage pretardily pretardiness pretardy pretariff pretaste preteach pretechnical pretechnically pretelegraph pretelegraphic pretelephone pretelephonic pretell pretemperate pretemperately pretemporal pretend pretendant pretended pretendedly pretender Pretenderism pretendership pretendingly pretendingness pretense pretenseful pretenseless pretension pretensional pretensionless pretensive pretensively pretensiveness pretentative pretentious pretentiously pretentiousness pretercanine preterchristian preterconventional preterdetermined preterdeterminedly preterdiplomatic preterdiplomatically preterequine preteressential pretergress pretergression preterhuman preterience preterient preterintentional preterist preterit preteriteness preterition preteritive preteritness preterlabent preterlegal preterlethal preterminal pretermission pretermit pretermitter preternative preternatural preternaturalism preternaturalist preternaturality preternaturally preternaturalness preternormal preternotorious preternuptial preterpluperfect preterpolitical preterrational preterregular preterrestrial preterritorial preterroyal preterscriptural preterseasonable pretersensual pretervection pretest pretestify pretestimony pretext pretexted pretextuous pretheological prethoracic prethoughtful prethoughtfully prethoughtfulness prethreaten prethrill prethrust pretibial pretimeliness pretimely pretincture pretire pretoken pretone pretonic pretorial pretorship pretorsional pretorture pretournament pretrace pretracheal pretraditional pretrain pretraining pretransact pretransaction pretranscribe pretranscription pretranslate pretranslation pretransmission pretransmit pretransport pretransportation pretravel pretreat pretreatment pretreaty pretrematic pretribal pretry prettification prettifier prettify prettikin prettily prettiness pretty prettyface prettyish prettyism pretubercular pretuberculous pretympanic pretyphoid pretypify pretypographical pretyrannical pretyranny pretzel preultimate preultimately preumbonal preunderstand preundertake preunion preunite preutilizable preutilization preutilize prevacate prevacation prevaccinate prevaccination prevail prevailance prevailer prevailingly prevailingness prevailment prevalence prevalency prevalent prevalently prevalentness prevalescence prevalescent prevalid prevalidity prevalidly prevaluation prevalue prevariation prevaricate prevarication prevaricator prevaricatory prevascular prevegetation prevelar prevenance prevenancy prevene prevenience prevenient preveniently prevent preventability preventable preventative preventer preventible preventingly prevention preventionism preventionist preventive preventively preventiveness preventorium preventure preverb preverbal preverification preverify prevernal preversion prevertebral prevesical preveto previctorious previde previdence preview previgilance previgilant previgilantly previolate previolation previous previously previousness previse previsibility previsible previsibly prevision previsional previsit previsitor previsive previsor prevocal prevocalic prevocally prevocational prevogue prevoid prevoidance prevolitional prevolunteer prevomer prevotal prevote prevoyance prevoyant prevue prewar prewarn prewarrant prewash preweigh prewelcome prewhip prewilling prewillingly prewillingness prewire prewireless prewitness prewonder prewonderment preworldliness preworldly preworship preworthily preworthiness preworthy prewound prewrap prexy prey preyer preyful preyingly preyouthful prezonal prezone prezygapophysial prezygapophysis prezygomatic priacanthid Priacanthidae priacanthine Priacanthus Priapean Priapic priapism Priapulacea priapulid Priapulida Priapulidae priapuloid Priapuloidea Priapulus Priapus Priapusian price priceable priceably priced priceite priceless pricelessness pricer prich prick prickant pricked pricker pricket prickfoot pricking prickingly prickish prickle prickleback prickled pricklefish prickless prickliness prickling pricklingly pricklouse prickly pricklyback prickmadam prickmedainty prickproof pricks prickseam prickshot prickspur pricktimber prickwood pricky pride prideful pridefully pridefulness prideless pridelessly prideling prideweed pridian priding pridingly pridy pried prier priest priestal priestcap priestcraft priestdom priesteen priestery priestess priestfish priesthood priestianity priestish priestism priestless priestlet priestlike priestliness priestling priestly priestship priestshire prig prigdom prigger priggery priggess priggish priggishly priggishness priggism prighood prigman prill prillion prim prima primacy primage primal primality primar primarian primaried primarily primariness primary primatal primate Primates primateship primatial primatic primatical primavera primaveral prime primegilt primely primeness primer primero primerole primeval primevalism primevally primeverose primevity primevous primevrin Primianist primigene primigenial primigenian primigenious primigenous primigravida primine priming primipara primiparity primiparous primipilar primitiae primitial primitias primitive primitively primitivism primitivist primitivistic primitivity primly primness primogenetrix primogenial primogenital primogenitary primogenitive primogenitor primogeniture primogenitureship primogenous primoprime primoprimitive primordality primordia primordial primordialism primordially primordiate primordium primosity primost primp primrose primrosed primrosetide primrosetime primrosy primsie Primula primula Primulaceae primulaceous Primulales primulaverin primulaveroside primulic primuline Primulinus Primus primus primwort primy prince princeage princecraft princedom princehood Princeite princekin princeless princelet princelike princeliness princeling princely princeps princeship princess princessdom princesse princesslike princessly princewood princified princify principal principality principally principalness principalship principate Principes principes principia principiant principiate principiation principium principle principulus princock princox prine pringle prink prinker prinkle prinky print printability printable printableness printed printer printerdom printerlike printery printing printless printline printscript printworks Priodon priodont Priodontes prion prionid Prionidae Prioninae prionine Prionodesmacea prionodesmacean prionodesmaceous prionodesmatic Prionodon prionodont Prionopinae prionopine Prionops Prionus prior prioracy prioral priorate prioress prioristic prioristically priorite priority priorly priorship priory prisable prisage prisal priscan Priscian Priscianist Priscilla Priscillian Priscillianism Priscillianist prism prismal prismatic prismatical prismatically prismatization prismatize prismatoid prismatoidal prismed prismoid prismoidal prismy prisometer prison prisonable prisondom prisoner prisonful prisonlike prisonment prisonous priss prissily prissiness prissy pristane pristine Pristipomatidae Pristipomidae Pristis Pristodus pritch Pritchardia pritchel prithee prius privacity privacy privant private privateer privateersman privately privateness privation privative privatively privativeness privet privilege privileged privileger privily priviness privity privy prizable prize prizeable prizeholder prizeman prizer prizery prizetaker prizeworthy pro proa proabolitionist proabsolutism proabsolutist proabstinence proacademic proacceptance proacquisition proacquittal proaction proactor proaddition proadjournment proadministration proadmission proadoption proadvertising proaesthetic proaggressionist proagitation proagrarian proagreement proagricultural proagule proairesis proairplane proal proalcoholism proalien proalliance proallotment proalteration proamateur proambient proamendment proamnion proamniotic proamusement proanaphora proanaphoral proanarchic proangiosperm proangiospermic proangiospermous proanimistic proannexation proannexationist proantarctic proanthropos proapostolic proappointment proapportionment proappreciation proappropriation proapproval proaquatic proarbitration proarbitrationist proarchery proarctic proaristocratic proarmy Proarthri proassessment proassociation proatheist proatheistic proathletic proatlas proattack proattendance proauction proaudience proaulion proauthor proauthority proautomobile proavian proaviation Proavis proaward prob probabiliorism probabiliorist probabilism probabilist probabilistic probability probabilize probabl probable probableness probably probachelor probal proballoon probang probanishment probankruptcy probant probargaining probaseball probasketball probate probathing probatical probation probational probationary probationer probationerhood probationership probationism probationist probationship probative probatively probator probatory probattle probattleship probe probeable probeer prober probetting probiology probituminous probity problem problematic problematical problematically problematist problematize problemdom problemist problemistic problemize problemwise problockade probonding probonus proborrowing proboscidal proboscidate Proboscidea proboscidean proboscideous proboscides proboscidial proboscidian proboscidiferous proboscidiform probosciform probosciformed Probosciger proboscis proboscislike probouleutic proboulevard probowling proboxing proboycott probrick probridge probroadcasting probudget probudgeting probuilding probusiness probuying procacious procaciously procacity procaine procambial procambium procanal procancellation procapital procapitalism procapitalist procarnival procarp procarpium procarrier procatalectic procatalepsis procatarctic procatarxis procathedral Procavia Procaviidae procedendo procedural procedure proceed proceeder proceeding proceeds proceleusmatic Procellaria procellarian procellarid Procellariidae Procellariiformes procellariine procellas procello procellose procellous procensorship procensure procentralization procephalic procercoid procereal procerebral procerebrum proceremonial proceremonialism proceremonialist proceres procerite proceritic procerity procerus process processal procession processional processionalist processionally processionary processioner processionist processionize processionwise processive processor processual procharity prochein prochemical prochlorite prochondral prochoos prochordal prochorion prochorionic prochromosome prochronic prochronism prochronize prochurch prochurchian procidence procident procidentia procivic procivilian procivism proclaim proclaimable proclaimant proclaimer proclaiming proclaimingly proclamation proclamator proclamatory proclassic proclassical proclergy proclerical proclericalism procline proclisis proclitic proclive proclivitous proclivity proclivous proclivousness Procne procnemial Procoelia procoelia procoelian procoelous procoercive procollectivistic procollegiate procombat procombination procomedy procommemoration procomment procommercial procommission procommittee procommunal procommunism procommunist procommutation procompensation procompetition procompromise procompulsion proconcentration proconcession proconciliation procondemnation proconfederationist proconference proconfession proconfessionist proconfiscation proconformity Proconnesian proconquest proconscription proconscriptive proconservation proconservationist proconsolidation proconstitutional proconstitutionalism proconsul proconsular proconsulary proconsulate proconsulship proconsultation procontinuation proconvention proconventional proconviction procoracoid procoracoidal procorporation procosmetic procosmopolitan procotton procourt procrastinate procrastinating procrastinatingly procrastination procrastinative procrastinatively procrastinator procrastinatory procreant procreate procreation procreative procreativeness procreator procreatory procreatress procreatrix procremation Procris procritic procritique Procrustean Procrusteanism Procrusteanize Procrustes procrypsis procryptic procryptically proctal proctalgia proctalgy proctatresia proctatresy proctectasia proctectomy procteurynter proctitis proctocele proctoclysis proctocolitis proctocolonoscopy proctocystoplasty proctocystotomy proctodaeal proctodaeum proctodynia proctoelytroplastic proctologic proctological proctologist proctology proctoparalysis proctoplastic proctoplasty proctoplegia proctopolypus proctoptoma proctoptosis proctor proctorage proctoral proctorial proctorially proctorical proctorization proctorize proctorling proctorrhagia proctorrhaphy proctorrhea proctorship proctoscope proctoscopic proctoscopy proctosigmoidectomy proctosigmoiditis proctospasm proctostenosis proctostomy proctotome proctotomy proctotresia proctotrypid Proctotrypidae proctotrypoid Proctotrypoidea proctovalvotomy Proculian procumbent procurable procuracy procural procurance procurate procuration procurative procurator procuratorate procuratorial procuratorship procuratory procuratrix procure procurement procurer procuress procurrent procursive procurvation procurved Procyon Procyonidae procyoniform Procyoniformia Procyoninae procyonine proczarist prod prodatary prodder proddle prodecoration prodefault prodefiance prodelay prodelision prodemocratic Prodenia prodenominational prodentine prodeportation prodespotic prodespotism prodialogue prodigal prodigalish prodigalism prodigality prodigalize prodigally prodigiosity prodigious prodigiously prodigiousness prodigus prodigy prodisarmament prodisplay prodissoconch prodissolution prodistribution prodition proditorious proditoriously prodivision prodivorce prodproof prodramatic prodroma prodromal prodromatic prodromatically prodrome prodromic prodromous prodromus producal produce produceable produceableness produced producent producer producership producibility producible producibleness product producted productibility productible productid Productidae productile production productional productionist productive productively productiveness productivity productoid productor productory productress Productus proecclesiastical proeconomy proeducation proeducational proegumenal proelectric proelectrical proelectrification proelectrocution proelimination proem proembryo proembryonic proemial proemium proemployee proemptosis proenforcement proenlargement proenzym proenzyme proepimeron proepiscopist proepisternum proequality proethical proethnic proethnically proetid Proetidae Proetus proevolution proevolutionist proexamination proexecutive proexemption proexercise proexperiment proexpert proexporting proexposure proextension proextravagance prof profaculty profanable profanableness profanably profanation profanatory profanchise profane profanely profanement profaneness profaner profanism profanity profanize profarmer profection profectional profectitious profederation profeminism profeminist proferment profert profess professable professed professedly profession professional professionalism professionalist professionality professionalization professionalize professionally professionist professionize professionless professive professively professor professorate professordom professoress professorial professorialism professorially professoriate professorlike professorling professorship professory proffer profferer proficience proficiency proficient proficiently proficientness profiction proficuous proficuously profile profiler profilist profilograph profit profitability profitable profitableness profitably profiteer profiteering profiter profiting profitless profitlessly profitlessness profitmonger profitmongering profitproof proflated proflavine profligacy profligate profligately profligateness profligation proflogger profluence profluent profluvious profluvium proforeign profound profoundly profoundness profraternity profugate profulgent profunda profundity profuse profusely profuseness profusion profusive profusively profusiveness prog progambling progamete progamic proganosaur Proganosauria progenerate progeneration progenerative progenital progenitive progenitiveness progenitor progenitorial progenitorship progenitress progenitrix progeniture progenity progeny progeotropic progeotropism progeria progermination progestational progesterone progestin progger proglottic proglottid proglottidean proglottis prognathi prognathic prognathism prognathous prognathy progne prognose prognosis prognostic prognosticable prognostically prognosticate prognostication prognosticative prognosticator prognosticatory progoneate progospel progovernment program programist programistic programma programmar programmatic programmatically programmatist programmer progrede progrediency progredient progress progresser progression progressional progressionally progressionary progressionism progressionist progressism progressist progressive progressively progressiveness progressivism progressivist progressivity progressor proguardian Progymnasium progymnosperm progymnospermic progymnospermous progypsy prohaste prohibit prohibiter prohibition prohibitionary prohibitionism prohibitionist prohibitive prohibitively prohibitiveness prohibitor prohibitorily prohibitory proholiday prohostility prohuman prohumanistic prohydrotropic prohydrotropism proidealistic proimmunity proinclusion proincrease proindemnity proindustrial proinjunction proinnovationist proinquiry proinsurance prointervention proinvestment proirrigation projacient project projectable projectedly projectile projecting projectingly projection projectional projectionist projective projectively projectivity projector projectress projectrix projecture projicience projicient projiciently projournalistic projudicial proke prokeimenon proker prokindergarten proklausis prolabium prolabor prolacrosse prolactin prolamin prolan prolapse prolapsus prolarva prolarval prolate prolately prolateness prolation prolative prolatively proleague proleaguer prolectite proleg prolegate prolegislative prolegomena prolegomenal prolegomenary prolegomenist prolegomenon prolegomenous proleniency prolepsis proleptic proleptical proleptically proleptics proletairism proletarian proletarianism proletarianization proletarianize proletarianly proletarianness proletariat proletariatism proletarization proletarize proletary proletcult proleucocyte proleukocyte prolicense prolicidal prolicide proliferant proliferate proliferation proliferative proliferous proliferously prolific prolificacy prolifical prolifically prolificalness prolificate prolification prolificity prolificly prolificness prolificy prolify proligerous proline proliquor proliterary proliturgical proliturgist prolix prolixity prolixly prolixness prolocution prolocutor prolocutorship prolocutress prolocutrix prologist prologize prologizer prologos prologue prologuelike prologuer prologuist prologuize prologuizer prologus prolong prolongable prolongableness prolongably prolongate prolongation prolonge prolonger prolongment prolusion prolusionize prolusory prolyl promachinery promachos promagisterial promagistracy promagistrate promajority promammal Promammalia promammalian promarriage promatrimonial promatrimonialist promaximum promemorial promenade promenader promenaderess promercantile promercy promerger promeristem promerit promeritor Promethea Promethean Prometheus promethium promic promilitarism promilitarist promilitary prominence prominency prominent prominently prominimum proministry prominority promisable promiscuity promiscuous promiscuously promiscuousness promise promisee promiseful promiseless promisemonger promiseproof promiser promising promisingly promisingness promisor promissionary promissive promissor promissorily promissory promitosis promittor promnesia promoderation promoderationist promodernist promodernistic promonarchic promonarchical promonarchicalness promonarchist promonopolist promonopoly promontoried promontory promoral promorph promorphological promorphologically promorphologist promorphology promotable promote promotement promoter promotion promotional promotive promotiveness promotor promotorial promotress promotrix promovable promovent prompt promptbook prompter promptitude promptive promptly promptness promptress promptuary prompture promulgate promulgation promulgator promulge promulger promuscidate promuscis promycelial promycelium promythic pronaos pronate pronation pronational pronationalism pronationalist pronationalistic pronative pronatoflexor pronator pronaval pronavy prone pronegotiation pronegro pronegroism pronely proneness pronephric pronephridiostome pronephron pronephros proneur prong prongbuck pronged pronger pronghorn pronglike pronic pronograde pronominal pronominalize pronominally pronomination pronotal pronotum pronoun pronounal pronounce pronounceable pronounced pronouncedly pronouncement pronounceness pronouncer pronpl pronto Pronuba pronuba pronubial pronuclear pronucleus pronumber pronunciability pronunciable pronuncial pronunciamento pronunciation pronunciative pronunciator pronunciatory pronymph pronymphal proo prooemiac prooemion prooemium proof proofer proofful proofing proofless prooflessly proofness proofread proofreader proofreading proofroom proofy prop propadiene propaedeutic propaedeutical propaedeutics propagability propagable propagableness propagand propaganda propagandic propagandism propagandist propagandistic propagandistically propagandize propagate propagation propagational propagative propagator propagatory propagatress propago propagulum propale propalinal propane propanedicarboxylic propanol propanone propapist proparasceve propargyl propargylic Proparia proparian proparliamental proparoxytone proparoxytonic proparticipation propatagial propatagian propatagium propatriotic propatriotism propatronage propayment propellable propellant propellent propeller propelment propend propendent propene propenoic propense propensely propenseness propension propensitude propensity propenyl propenylic proper properispome properispomenon properitoneal properly properness propertied property propertyless propertyship propessimism propessimist prophase prophasis prophecy prophecymonger prophesiable prophesier prophesy prophet prophetess prophethood prophetic prophetical propheticality prophetically propheticalness propheticism propheticly prophetism prophetize prophetless prophetlike prophetry prophetship prophilosophical prophloem prophoric prophototropic prophototropism prophylactic prophylactical prophylactically prophylaxis prophylaxy prophyll prophyllum propination propine propinoic propinquant propinque propinquity propinquous propiolaldehyde propiolate propiolic propionate propione Propionibacterieae Propionibacterium propionic propionitril propionitrile propionyl Propithecus propitiable propitial propitiate propitiatingly propitiation propitiative propitiator propitiatorily propitiatory propitious propitiously propitiousness proplasm proplasma proplastic propless propleural propleuron proplex proplexus Propliopithecus propodeal propodeon propodeum propodial propodiale propodite propoditic propodium propolis propolitical propolization propolize propone proponement proponent proponer propons Propontic propooling propopery proportion proportionability proportionable proportionableness proportionably proportional proportionalism proportionality proportionally proportionate proportionately proportionateness proportioned proportioner proportionless proportionment proposable proposal proposant propose proposer proposition propositional propositionally propositionize propositus propound propounder propoundment propoxy proppage propper propraetor propraetorial propraetorian proprecedent propriation proprietage proprietarian proprietariat proprietarily proprietary proprietor proprietorial proprietorially proprietorship proprietory proprietous proprietress proprietrix propriety proprioception proprioceptive proprioceptor propriospinal proprium proprivilege proproctor proprofit proprovincial proprovost props propterygial propterygium proptosed proptosis propublication propublicity propugnacled propugnaculum propugnation propugnator propugner propulsation propulsatory propulsion propulsity propulsive propulsor propulsory propunishment propupa propupal propurchase Propus propwood propygidium propyl propylacetic propylaeum propylamine propylation propylene propylic propylidene propylite propylitic propylitization propylon propyne propynoic proquaestor proracing prorailroad prorata proratable prorate proration prore proreader prorealism prorealist prorealistic proreality prorean prorebate prorebel prorecall proreciprocation prorecognition proreconciliation prorector prorectorate proredemption proreduction proreferendum proreform proreformist proregent prorelease Proreptilia proreptilian proreption prorepublican proresearch proreservationist proresignation prorestoration prorestriction prorevision prorevisionist prorevolution prorevolutionary prorevolutionist prorhinal Prorhipidoglossomorpha proritual proritualistic prorogate prorogation prorogator prorogue proroguer proromance proromantic proromanticism proroyal proroyalty prorrhesis prorsad prorsal proruption prosabbath prosabbatical prosacral prosaic prosaical prosaically prosaicalness prosaicism prosaicness prosaism prosaist prosar Prosarthri prosateur proscapula proscapular proscenium proscholastic proschool proscientific proscolecine proscolex proscribable proscribe proscriber proscript proscription proscriptional proscriptionist proscriptive proscriptively proscriptiveness proscutellar proscutellum proscynemata prose prosecrecy prosecretin prosect prosection prosector prosectorial prosectorium prosectorship prosecutable prosecute prosecution prosecutor prosecutrix proselenic proselike proselyte proselyter proselytical proselytingly proselytism proselytist proselytistic proselytization proselytize proselytizer proseman proseminar proseminary proseminate prosemination prosencephalic prosencephalon prosenchyma prosenchymatous proseneschal proser Proserpinaca prosethmoid proseucha proseuche prosification prosifier prosify prosiliency prosilient prosiliently prosilverite prosily Prosimiae prosimian prosiness prosing prosingly prosiphon prosiphonal prosiphonate prosish prosist proslambanomenos proslave proslaver proslavery proslaveryism prosneusis proso prosobranch Prosobranchia Prosobranchiata prosobranchiate prosocele prosodal prosode prosodemic prosodetic prosodiac prosodiacal prosodiacally prosodial prosodially prosodian prosodic prosodical prosodically prosodion prosodist prosodus prosody prosogaster prosogyrate prosogyrous prosoma prosomal prosomatic prosonomasia prosopalgia prosopalgic prosopantritis prosopectasia prosophist prosopic prosopically Prosopis prosopite Prosopium prosoplasia prosopography prosopon prosoponeuralgia prosopoplegia prosopoplegic prosopopoeia prosopopoeial prosoposchisis prosopospasm prosopotocia prosopyl prosopyle prosorus prospect prospection prospective prospectively prospectiveness prospectless prospector prospectus prospectusless prospeculation prosper prosperation prosperity prosperous prosperously prosperousness prospicience prosporangium prosport pross prossy prostatauxe prostate prostatectomy prostatelcosis prostatic prostaticovesical prostatism prostatitic prostatitis prostatocystitis prostatocystotomy prostatodynia prostatolith prostatomegaly prostatometer prostatomyomectomy prostatorrhea prostatorrhoea prostatotomy prostatovesical prostatovesiculectomy prostatovesiculitis prostemmate prostemmatic prosternal prosternate prosternum prostheca prosthenic prosthesis prosthetic prosthetically prosthetics prosthetist prosthion prosthionic prosthodontia prosthodontist Prostigmin prostitute prostitutely prostitution prostitutor prostomial prostomiate prostomium prostrate prostration prostrative prostrator prostrike prostyle prostylos prosubmission prosubscription prosubstantive prosubstitution prosuffrage prosupervision prosupport prosurgical prosurrender prosy prosyllogism prosyndicalism prosyndicalist protactic protactinium protagon protagonism protagonist Protagorean Protagoreanism protalbumose protamine protandric protandrism protandrous protandrously protandry protanomal protanomalous protanope protanopia protanopic protargentum protargin Protargol protariff protarsal protarsus protasis protaspis protatic protatically protax protaxation protaxial protaxis prote Protea protea Proteaceae proteaceous protead protean proteanly proteanwise protease protechnical protect protectant protectible protecting protectingly protectingness protection protectional protectionate protectionism protectionist protectionize protectionship protective protectively protectiveness Protectograph protector protectoral protectorate protectorial protectorian protectorless protectorship protectory protectress protectrix protege protegee protegulum proteic Proteida Proteidae proteide proteidean proteidogenous proteiform protein proteinaceous proteinase proteinic proteinochromogen proteinous proteinuria Proteles Protelidae Protelytroptera protelytropteran protelytropteron protelytropterous protemperance protempirical protemporaneous protend protension protensity protensive protensively proteoclastic proteogenous proteolysis proteolytic proteopectic proteopexic proteopexis proteopexy proteosaurid Proteosauridae Proteosaurus proteose Proteosoma proteosomal proteosome proteosuria protephemeroid Protephemeroidea proterandrous proterandrousness proterandry proteranthous proterobase proteroglyph Proteroglypha proteroglyphic proteroglyphous proterogynous proterogyny proterothesis proterotype Proterozoic protervity protest protestable protestancy protestant Protestantish Protestantishly protestantism Protestantize Protestantlike Protestantly protestation protestator protestatory protester protestingly protestive protestor protetrarch Proteus protevangel protevangelion protevangelium protext prothalamia prothalamion prothalamium prothallia prothallial prothallic prothalline prothallium prothalloid prothallus protheatrical protheca prothesis prothetic prothetical prothetically prothonotarial prothonotariat prothonotary prothonotaryship prothoracic prothorax prothrift prothrombin prothrombogen prothyl prothysteron protide protiodide protist Protista protistan protistic protistological protistologist protistology protiston Protium protium proto protoactinium protoalbumose protoamphibian protoanthropic protoapostate protoarchitect Protoascales Protoascomycetes protobacco Protobasidii Protobasidiomycetes protobasidiomycetous protobasidium protobishop protoblast protoblastic protoblattoid Protoblattoidea Protobranchia Protobranchiata protobranchiate protocalcium protocanonical Protocaris protocaseose protocatechualdehyde protocatechuic Protoceras Protoceratidae Protoceratops protocercal protocerebral protocerebrum protochemist protochemistry protochloride protochlorophyll Protochorda Protochordata protochordate protochromium protochronicler protocitizen protoclastic protocneme Protococcaceae protococcaceous protococcal Protococcales protococcoid Protococcus protocol protocolar protocolary Protocoleoptera protocoleopteran protocoleopteron protocoleopterous protocolist protocolization protocolize protoconch protoconchal protocone protoconid protoconule protoconulid protocopper protocorm protodeacon protoderm protodevil Protodonata protodonatan protodonate protodont Protodonta protodramatic protodynastic protoelastose protoepiphyte protoforaminifer protoforester protogaster protogelatose protogenal protogenes protogenesis protogenetic protogenic protogenist Protogeometric protogine protoglobulose protogod protogonous protogospel protograph protogynous protogyny protohematoblast Protohemiptera protohemipteran protohemipteron protohemipterous protoheresiarch Protohippus protohistorian protohistoric protohistory protohomo protohuman Protohydra protohydrogen Protohymenoptera protohymenopteran protohymenopteron protohymenopterous protoiron protoleration protoleucocyte protoleukocyte protolithic protoliturgic protolog protologist protoloph protoma protomagister protomagnate protomagnesium protomala protomalal protomalar protomammal protomammalian protomanganese protomartyr Protomastigida protome protomeristem protomerite protomeritic protometal protometallic protometaphrast Protominobacter Protomonadina protomonostelic protomorph protomorphic Protomycetales protomyosinose proton protone protonegroid protonema protonemal protonematal protonematoid protoneme Protonemertini protonephridial protonephridium protonephros protoneuron protoneurone protonic protonickel protonitrate protonotater protonym protonymph protonymphal protopapas protopappas protoparent protopathia protopathic protopathy protopatriarchal protopatrician protopattern protopectin protopectinase protopepsia Protoperlaria protoperlarian protophilosophic protophloem protophyll Protophyta protophyte protophytic protopin protopine protoplasm protoplasma protoplasmal protoplasmatic protoplasmic protoplast protoplastic protopod protopodial protopodite protopoditic protopoetic protopope protoporphyrin protopragmatic protopresbyter protopresbytery protoprism protoproteose protoprotestant protopteran Protopteridae protopteridophyte protopterous Protopterus protopyramid protore protorebel protoreligious protoreptilian Protorohippus protorosaur Protorosauria protorosaurian Protorosauridae protorosauroid Protorosaurus Protorthoptera protorthopteran protorthopteron protorthopterous protosalt protosaurian protoscientific Protoselachii protosilicate protosilicon protosinner Protosiphon Protosiphonaceae protosiphonaceous protosocial protosolution protospasm Protosphargis Protospondyli protospore Protostega Protostegidae protostele protostelic protostome protostrontium protosulphate protosulphide protosyntonose prototaxites prototheca protothecal prototheme protothere Prototheria prototherian prototitanium Prototracheata prototraitor prototroch prototrochal prototrophic prototypal prototype prototypic prototypical prototypically prototypographer prototyrant protovanadium protoveratrine protovertebra protovertebral protovestiary protovillain protovum protoxide protoxylem Protozoa protozoacidal protozoacide protozoal protozoan protozoea protozoean protozoiasis protozoic protozoological protozoologist protozoology protozoon protozoonal Protracheata protracheate protract protracted protractedly protractedness protracter protractible protractile protractility protraction protractive protractor protrade protradition protraditional protragedy protragical protragie protransfer protranslation protransubstantiation protravel protreasurer protreaty Protremata protreptic protreptical protriaene protropical protrudable protrude protrudent protrusible protrusile protrusion protrusive protrusively protrusiveness protuberance protuberancy protuberant protuberantial protuberantly protuberantness protuberate protuberosity protuberous Protura proturan protutor protutory protyl protyle Protylopus protype proudful proudhearted proudish proudishly proudling proudly proudness prouniformity prounion prounionist prouniversity proustite provability provable provableness provably provaccinist provand provant provascular prove provect provection proved proveditor provedly provedor provedore proven provenance Provencal Provencalize Provence Provencial provender provenience provenient provenly proventricular proventricule proventriculus prover proverb proverbial proverbialism proverbialist proverbialize proverbially proverbic proverbiologist proverbiology proverbize proverblike provicar provicariate providable providance provide provided providence provident providential providentialism providentially providently providentness provider providing providore providoring province provincial provincialate provincialism provincialist provinciality provincialization provincialize provincially provincialship provinciate provinculum provine proving provingly provision provisional provisionality provisionally provisionalness provisionary provisioner provisioneress provisionless provisionment provisive proviso provisor provisorily provisorship provisory provitamin provivisection provivisectionist provocant provocation provocational provocative provocatively provocativeness provocator provocatory provokable provoke provokee provoker provoking provokingly provokingness provolunteering provost provostal provostess provostorial provostry provostship prow prowar prowarden prowaterpower prowed prowersite prowess prowessed prowessful prowl prowler prowling prowlingly proxenet proxenete proxenetism proxenos proxenus proxeny proxically proximad proximal proximally proximate proximately proximateness proximation proximity proximo proximobuccal proximolabial proximolingual proxy proxyship proxysm prozone prozoning prozygapophysis prozymite prude prudelike prudely Prudence prudence prudent prudential prudentialism prudentialist prudentiality prudentially prudentialness prudently prudery prudish prudishly prudishness prudist prudity Prudy Prue pruh pruinate pruinescence pruinose pruinous prulaurasin prunable prunableness prunably Prunaceae prunase prunasin prune prunell Prunella prunella prunelle Prunellidae prunello pruner prunetin prunetol pruniferous pruniform pruning prunitrin prunt prunted Prunus prurience pruriency prurient pruriently pruriginous prurigo pruriousness pruritic pruritus prusiano Prussian Prussianism Prussianization Prussianize Prussianizer prussiate prussic Prussification Prussify prut prutah pry pryer prying pryingly pryingness pryler pryproof pryse prytaneum prytanis prytanize prytany psalis psalm psalmic psalmist psalmister psalmistry psalmless psalmodial psalmodic psalmodical psalmodist psalmodize psalmody psalmograph psalmographer psalmography psalmy psaloid psalter psalterial psalterian psalterion psalterist psalterium psaltery psaltes psaltress psammite psammitic psammocarcinoma psammocharid Psammocharidae psammogenous psammolithic psammologist psammology psammoma psammophile psammophilous Psammophis psammophyte psammophytic psammosarcoma psammotherapy psammous Psaronius pschent Psedera Pselaphidae Pselaphus psellism psellismus psephism psephisma psephite psephitic psephomancy Psephurus Psetta pseudaconine pseudaconitine pseudacusis pseudalveolar pseudambulacral pseudambulacrum pseudamoeboid pseudamphora pseudandry pseudangina pseudankylosis pseudaphia pseudaposematic pseudaposporous pseudapospory pseudapostle pseudarachnidan pseudarthrosis pseudataxic pseudatoll pseudaxine pseudaxis Pseudechis pseudelephant pseudelminth pseudelytron pseudembryo pseudembryonic pseudencephalic pseudencephalus pseudepigraph pseudepigrapha pseudepigraphal pseudepigraphic pseudepigraphical pseudepigraphous pseudepigraphy pseudepiploic pseudepiploon pseudepiscopacy pseudepiscopy pseudepisematic pseudesthesia pseudhalteres pseudhemal pseudimaginal pseudimago pseudisodomum pseudo pseudoacaccia pseudoacademic pseudoacademical pseudoaccidental pseudoacid pseudoaconitine pseudoacromegaly pseudoadiabatic pseudoaesthetic pseudoaffectionate pseudoalkaloid pseudoalum pseudoalveolar pseudoamateurish pseudoamatory pseudoanaphylactic pseudoanaphylaxis pseudoanatomic pseudoanatomical pseudoancestral pseudoanemia pseudoanemic pseudoangelic pseudoangina pseudoankylosis pseudoanthorine pseudoanthropoid pseudoanthropological pseudoanthropology pseudoantique pseudoapologetic pseudoapoplectic pseudoapoplexy pseudoappendicitis pseudoaquatic pseudoarchaic pseudoarchaism pseudoarchaist pseudoaristocratic pseudoarthrosis pseudoarticulation pseudoartistic pseudoascetic pseudoastringent pseudoasymmetrical pseudoasymmetry pseudoataxia pseudobacterium pseudobasidium pseudobenevolent pseudobenthonic pseudobenthos pseudobinary pseudobiological pseudoblepsia pseudoblepsis pseudobrachial pseudobrachium pseudobranch pseudobranchia pseudobranchial pseudobranchiate Pseudobranchus pseudobrookite pseudobrotherly pseudobulb pseudobulbar pseudobulbil pseudobulbous pseudobutylene pseudocandid pseudocapitulum pseudocarbamide pseudocarcinoid pseudocarp pseudocarpous pseudocartilaginous pseudocele pseudocelian pseudocelic pseudocellus pseudocentric pseudocentrous pseudocentrum Pseudoceratites pseudoceratitic pseudocercaria pseudoceryl pseudocharitable pseudochemical pseudochina pseudochromesthesia pseudochromia pseudochromosome pseudochronism pseudochronologist pseudochrysalis pseudochrysolite pseudochylous pseudocirrhosis pseudoclassic pseudoclassical pseudoclassicism pseudoclerical Pseudococcinae Pseudococcus pseudococtate pseudocollegiate pseudocolumella pseudocolumellar pseudocommissure pseudocommisural pseudocompetitive pseudoconcha pseudoconclude pseudocone pseudoconglomerate pseudoconglomeration pseudoconhydrine pseudoconjugation pseudoconservative pseudocorneous pseudocortex pseudocosta pseudocotyledon pseudocotyledonal pseudocritical pseudocroup pseudocrystalline pseudocubic pseudocultivated pseudocultural pseudocumene pseudocumenyl pseudocumidine pseudocumyl pseudocyclosis pseudocyesis pseudocyst pseudodeltidium pseudodementia pseudodemocratic pseudoderm pseudodermic pseudodiagnosis pseudodiastolic pseudodiphtheria pseudodiphtheritic pseudodipteral pseudodipterally pseudodipteros pseudodont pseudodox pseudodoxal pseudodoxy pseudodramatic pseudodysentery pseudoedema pseudoelectoral pseudoembryo pseudoembryonic pseudoemotional pseudoencephalitic pseudoenthusiastic pseudoephedrine pseudoepiscopal pseudoequalitarian pseudoerotic pseudoeroticism pseudoerysipelas pseudoerysipelatous pseudoerythrin pseudoethical pseudoetymological pseudoeugenics pseudoevangelical pseudofamous pseudofarcy pseudofeminine pseudofever pseudofeverish pseudofilaria pseudofilarian pseudofinal pseudofluctuation pseudofluorescence pseudofoliaceous pseudoform pseudofossil pseudogalena pseudoganglion pseudogaseous pseudogaster pseudogastrula pseudogeneral pseudogeneric pseudogenerous pseudogenteel pseudogenus pseudogeometry pseudogermanic pseudogeusia pseudogeustia pseudoglanders pseudoglioma pseudoglobulin pseudoglottis pseudograph pseudographeme pseudographer pseudographia pseudographize pseudography pseudograsserie Pseudogryphus pseudogyne pseudogynous pseudogyny pseudogyrate pseudohallucination pseudohallucinatory pseudohalogen pseudohemal pseudohermaphrodite pseudohermaphroditic pseudohermaphroditism pseudoheroic pseudohexagonal pseudohistoric pseudohistorical pseudoholoptic pseudohuman pseudohydrophobia pseudohyoscyamine pseudohypertrophic pseudohypertrophy pseudoidentical pseudoimpartial pseudoindependent pseudoinfluenza pseudoinsane pseudoinsoluble pseudoisatin pseudoism pseudoisomer pseudoisomeric pseudoisomerism pseudoisotropy pseudojervine pseudolabial pseudolabium pseudolalia Pseudolamellibranchia Pseudolamellibranchiata pseudolamellibranchiate pseudolaminated Pseudolarix pseudolateral pseudolatry pseudolegal pseudolegendary pseudoleucite pseudoleucocyte pseudoleukemia pseudoleukemic pseudoliberal pseudolichen pseudolinguistic pseudoliterary pseudolobar pseudological pseudologically pseudologist pseudologue pseudology pseudolunule pseudomalachite pseudomalaria pseudomancy pseudomania pseudomaniac pseudomantic pseudomantist pseudomasculine pseudomedical pseudomedieval pseudomelanosis pseudomembrane pseudomembranous pseudomeningitis pseudomenstruation pseudomer pseudomeric pseudomerism pseudomery pseudometallic pseudometameric pseudometamerism pseudomica pseudomilitarist pseudomilitaristic pseudomilitary pseudoministerial pseudomiraculous pseudomitotic pseudomnesia pseudomodern pseudomodest Pseudomonas pseudomonastic pseudomonoclinic pseudomonocotyledonous pseudomonocyclic pseudomonotropy pseudomoral pseudomorph pseudomorphia pseudomorphic pseudomorphine pseudomorphism pseudomorphose pseudomorphosis pseudomorphous pseudomorula pseudomorular pseudomucin pseudomucoid pseudomultilocular pseudomultiseptate pseudomythical pseudonarcotic pseudonational pseudonavicella pseudonavicellar pseudonavicula pseudonavicular pseudoneuropter Pseudoneuroptera pseudoneuropteran pseudoneuropterous pseudonitrole pseudonitrosite pseudonuclein pseudonucleolus pseudonychium pseudonym pseudonymal pseudonymic pseudonymity pseudonymous pseudonymously pseudonymousness pseudonymuncle pseudonymuncule pseudopapaverine pseudoparalysis pseudoparalytic pseudoparaplegia pseudoparasitic pseudoparasitism pseudoparenchyma pseudoparenchymatous pseudoparenchyme pseudoparesis pseudoparthenogenesis pseudopatriotic pseudopediform pseudopelletierine pseudopercular pseudoperculate pseudoperculum pseudoperianth pseudoperidium pseudoperiodic pseudoperipteral pseudopermanent pseudoperoxide pseudoperspective Pseudopeziza pseudophallic pseudophellandrene pseudophenanthrene pseudophenanthroline pseudophenocryst pseudophilanthropic pseudophilosophical Pseudophoenix pseudopionnotes pseudopious pseudoplasm pseudoplasma pseudoplasmodium pseudopneumonia pseudopod pseudopodal pseudopodia pseudopodial pseudopodian pseudopodiospore pseudopodium pseudopoetic pseudopoetical pseudopolitic pseudopolitical pseudopopular pseudopore pseudoporphyritic pseudopregnancy pseudopregnant pseudopriestly pseudoprimitive pseudoprimitivism pseudoprincely pseudoproboscis pseudoprofessional pseudoprofessorial pseudoprophetic pseudoprophetical pseudoprosperous pseudopsia pseudopsychological pseudoptics pseudoptosis pseudopupa pseudopupal pseudopurpurin pseudopyriform pseudoquinol pseudorabies pseudoracemic pseudoracemism pseudoramose pseudoramulus pseudorealistic pseudoreduction pseudoreformed pseudoregal pseudoreligious pseudoreminiscence pseudorganic pseudorheumatic pseudorhombohedral pseudoromantic pseudorunic pseudosacred pseudosacrilegious pseudosalt pseudosatirical pseudoscarlatina Pseudoscarus pseudoscholarly pseudoscholastic pseudoscientific Pseudoscines pseudoscinine pseudosclerosis pseudoscope pseudoscopic pseudoscopically pseudoscopy pseudoscorpion Pseudoscorpiones Pseudoscorpionida pseudoscutum pseudosematic pseudosensational pseudoseptate pseudoservile pseudosessile pseudosiphonal pseudosiphuncal pseudoskeletal pseudoskeleton pseudoskink pseudosmia pseudosocial pseudosocialistic pseudosolution pseudosoph pseudosopher pseudosophical pseudosophist pseudosophy pseudospectral pseudosperm pseudospermic pseudospermium pseudospermous pseudosphere pseudospherical pseudospiracle pseudospiritual pseudosporangium pseudospore pseudosquamate pseudostalactite pseudostalactitical pseudostalagmite pseudostalagmitical pseudostereoscope pseudostereoscopic pseudostereoscopism pseudostigma pseudostigmatic pseudostoma pseudostomatous pseudostomous pseudostratum pseudosubtle Pseudosuchia pseudosuchian pseudosweating pseudosyllogism pseudosymmetric pseudosymmetrical pseudosymmetry pseudosymptomatic pseudosyphilis pseudosyphilitic pseudotabes pseudotachylite pseudotetanus pseudotetragonal Pseudotetramera pseudotetrameral pseudotetramerous pseudotrachea pseudotracheal pseudotribal pseudotributary Pseudotrimera pseudotrimeral pseudotrimerous pseudotropine Pseudotsuga pseudotubercular pseudotuberculosis pseudotuberculous pseudoturbinal pseudotyphoid pseudoval pseudovarian pseudovary pseudovelar pseudovelum pseudoventricle pseudoviaduct pseudoviperine pseudoviscosity pseudoviscous pseudovolcanic pseudovolcano pseudovum pseudowhorl pseudoxanthine pseudoyohimbine pseudozealot pseudozoea pseudozoogloeal psha Pshav pshaw psi Psidium psilanthropic psilanthropism psilanthropist psilanthropy psiloceran Psiloceras psiloceratan psiloceratid Psiloceratidae psiloi psilology psilomelane psilomelanic Psilophytales psilophyte Psilophyton psilosis psilosopher psilosophy Psilotaceae psilotaceous psilothrum psilotic Psilotum psithurism Psithyrus psittaceous psittaceously Psittaci Psittacidae Psittaciformes Psittacinae psittacine psittacinite psittacism psittacistic Psittacomorphae psittacomorphic psittacosis Psittacus psoadic psoas psoatic psocid Psocidae psocine psoitis psomophagic psomophagist psomophagy psora Psoralea psoriasic psoriasiform psoriasis psoriatic psoriatiform psoric psoroid Psorophora psorophthalmia psorophthalmic Psoroptes psoroptic psorosis psorosperm psorospermial psorospermiasis psorospermic psorospermiform psorospermosis psorous pssimistical pst psych psychagogic psychagogos psychagogue psychagogy psychal psychalgia psychanalysis psychanalysist psychanalytic psychasthenia psychasthenic Psyche psyche Psychean psycheometry psychesthesia psychesthetic psychiasis psychiater psychiatria psychiatric psychiatrical psychiatrically psychiatrist psychiatrize psychiatry psychic psychical psychically Psychichthys psychicism psychicist psychics psychid Psychidae psychism psychist psychoanalysis psychoanalyst psychoanalytic psychoanalytical psychoanalytically psychoanalyze psychoanalyzer psychoautomatic psychobiochemistry psychobiologic psychobiological psychobiology psychobiotic psychocatharsis psychoclinic psychoclinical psychoclinicist Psychoda psychodiagnostics Psychodidae psychodispositional psychodrama psychodynamic psychodynamics psychoeducational psychoepilepsy psychoethical psychofugal psychogalvanic psychogalvanometer psychogenesis psychogenetic psychogenetical psychogenetically psychogenetics psychogenic psychogeny psychognosis psychognostic psychognosy psychogonic psychogonical psychogony psychogram psychograph psychographer psychographic psychographist psychography psychoid psychokinesia psychokinesis psychokinetic psychokyme psycholepsy psycholeptic psychologer psychologian psychologic psychological psychologically psychologics psychologism psychologist psychologize psychologue psychology psychomachy psychomancy psychomantic psychometer psychometric psychometrical psychometrically psychometrician psychometrics psychometrist psychometrize psychometry psychomonism psychomoral psychomorphic psychomorphism psychomotility psychomotor psychon psychoneural psychoneurological psychoneurosis psychoneurotic psychonomic psychonomics psychonomy psychony psychoorganic psychopannychian psychopannychism psychopannychist psychopannychistic psychopannychy psychopanychite psychopath psychopathia psychopathic psychopathist psychopathologic psychopathological psychopathologist psychopathy psychopetal psychophobia psychophysic psychophysical psychophysically psychophysicist psychophysics psychophysiologic psychophysiological psychophysiologically psychophysiologist psychophysiology psychoplasm psychopomp psychopompos psychorealism psychorealist psychorealistic psychoreflex psychorhythm psychorhythmia psychorhythmic psychorhythmical psychorhythmically psychorrhagic psychorrhagy psychosarcous psychosensorial psychosensory psychoses psychosexual psychosexuality psychosexually psychosis psychosocial psychosomatic psychosomatics psychosome psychosophy psychostasy psychostatic psychostatical psychostatically psychostatics psychosurgeon psychosurgery psychosynthesis psychosynthetic psychotaxis psychotechnical psychotechnician psychotechnics psychotechnological psychotechnology psychotheism psychotherapeutic psychotherapeutical psychotherapeutics psychotherapeutist psychotherapist psychotherapy psychotic Psychotria psychotrine psychovital Psychozoic psychroesthesia psychrograph psychrometer psychrometric psychrometrical psychrometry psychrophile psychrophilic psychrophobia psychrophore psychrophyte psychurgy psykter Psylla psylla psyllid Psyllidae psyllium ptarmic Ptarmica ptarmical ptarmigan Ptelea Ptenoglossa ptenoglossate Pteranodon pteranodont Pteranodontidae pteraspid Pteraspidae Pteraspis ptereal pterergate Pterian pteric Pterichthyodes Pterichthys pterideous pteridium pteridography pteridoid pteridological pteridologist pteridology pteridophilism pteridophilist pteridophilistic Pteridophyta pteridophyte pteridophytic pteridophytous pteridosperm Pteridospermae Pteridospermaphyta pteridospermaphytic pteridospermous pterion Pteris Pterobranchia pterobranchiate pterocarpous Pterocarpus Pterocarya Pterocaulon Pterocera Pteroceras Pterocles Pterocletes Pteroclidae Pteroclomorphae pteroclomorphic pterodactyl Pterodactyli pterodactylian pterodactylic pterodactylid Pterodactylidae pterodactyloid pterodactylous Pterodactylus pterographer pterographic pterographical pterography pteroid pteroma pteromalid Pteromalidae Pteromys pteropaedes pteropaedic pteropegal pteropegous pteropegum pterophorid Pterophoridae Pterophorus Pterophryne pteropid Pteropidae pteropine pteropod Pteropoda pteropodal pteropodan pteropodial Pteropodidae pteropodium pteropodous Pteropsida Pteropus pterosaur Pterosauri Pterosauria pterosaurian pterospermous Pterospora Pterostemon Pterostemonaceae pterostigma pterostigmal pterostigmatic pterostigmatical pterotheca pterothorax pterotic pteroylglutamic pterygial pterygiophore pterygium pterygobranchiate pterygode pterygodum Pterygogenea pterygoid pterygoidal pterygoidean pterygomalar pterygomandibular pterygomaxillary pterygopalatal pterygopalatine pterygopharyngeal pterygopharyngean pterygophore pterygopodium pterygoquadrate pterygosphenoid pterygospinous pterygostaphyline Pterygota pterygote pterygotous pterygotrabecular Pterygotus pteryla pterylographic pterylographical pterylography pterylological pterylology pterylosis Ptilichthyidae Ptiliidae Ptilimnium ptilinal ptilinum Ptilocercus Ptilonorhynchidae Ptilonorhynchinae ptilopaedes ptilopaedic ptilosis Ptilota ptinid Ptinidae ptinoid Ptinus ptisan ptochocracy ptochogony ptochology Ptolemaean Ptolemaian Ptolemaic Ptolemaical Ptolemaism Ptolemaist Ptolemean Ptolemy ptomain ptomaine ptomainic ptomatropine ptosis ptotic ptyalagogic ptyalagogue ptyalectasis ptyalin ptyalism ptyalize ptyalocele ptyalogenic ptyalolith ptyalolithiasis ptyalorrhea Ptychoparia ptychoparid ptychopariid ptychopterygial ptychopterygium Ptychosperma ptysmagogue ptyxis pu pua puan pub pubal pubble puberal pubertal pubertic puberty puberulent puberulous pubes pubescence pubescency pubescent pubian pubic pubigerous pubiotomy pubis public Publican publican publicanism publication publichearted publicheartedness publicism publicist publicity publicize publicly publicness Publilian publish publishable publisher publisheress publishership publishment pubococcygeal pubofemoral puboiliac puboischiac puboischial puboischiatic puboprostatic puborectalis pubotibial pubourethral pubovesical Puccinia Pucciniaceae pucciniaceous puccinoid puccoon puce pucelage pucellas pucelle Puchanahua pucherite puchero puck pucka puckball pucker puckerbush puckerel puckerer puckermouth puckery puckfist puckish puckishly puckishness puckle pucklike puckling puckneedle puckrel puckster pud puddee puddening pudder pudding puddingberry puddinghead puddingheaded puddinghouse puddinglike puddingwife puddingy puddle puddled puddlelike puddler puddling puddly puddock puddy pudency pudenda pudendal pudendous pudendum pudent pudge pudgily pudginess pudgy pudiano pudibund pudibundity pudic pudical pudicitia pudicity pudsey pudsy Pudu pudu pueblito Pueblo pueblo Puebloan puebloization puebloize Puelche Puelchean Pueraria puerer puericulture puerile puerilely puerileness puerilism puerility puerman puerpera puerperal puerperalism puerperant puerperium puerperous puerpery puff puffback puffball puffbird puffed puffer puffery puffily puffin puffiness puffinet puffing puffingly Puffinus pufflet puffwig puffy pug pugged pugger puggi pugginess pugging puggish puggle puggree puggy pugh pugil pugilant pugilism pugilist pugilistic pugilistical pugilistically puglianite pugman pugmill pugmiller pugnacious pugnaciously pugnaciousness pugnacity Puinavi Puinavian Puinavis puisne puissance puissant puissantly puissantness puist puistie puja Pujunan puka pukatea pukateine puke pukeko puker pukeweed Pukhtun pukish pukishness pukras puku puky pul pulahan pulahanism pulasan pulaskite Pulaya Pulayan pulchrify pulchritude pulchritudinous pule pulegol pulegone puler Pulex pulghere puli Pulian pulicarious pulicat pulicene pulicid Pulicidae pulicidal pulicide pulicine pulicoid pulicose pulicosity pulicous puling pulingly pulish pulk pulka pull pullable pullback pullboat pulldevil pulldoo pulldown pulldrive pullen puller pullery pullet pulley pulleyless pulli Pullman Pullmanize pullorum pullulant pullulate pullulation pullus pulmobranchia pulmobranchial pulmobranchiate pulmocardiac pulmocutaneous pulmogastric pulmometer pulmometry pulmonal pulmonar Pulmonaria pulmonarian pulmonary Pulmonata pulmonate pulmonated pulmonectomy pulmonic pulmonifer Pulmonifera pulmoniferous pulmonitis Pulmotor pulmotracheal Pulmotrachearia pulmotracheary pulmotracheate pulp pulpaceous pulpal pulpalgia pulpamenta pulpboard pulpectomy pulpefaction pulper pulpifier pulpify pulpily pulpiness pulpit pulpital pulpitarian pulpiteer pulpiter pulpitful pulpitic pulpitical pulpitically pulpitis pulpitish pulpitism pulpitize pulpitless pulpitly pulpitolatry pulpitry pulpless pulplike pulpotomy pulpous pulpousness pulpstone pulpwood pulpy pulque pulsant pulsatance pulsate pulsatile pulsatility Pulsatilla pulsation pulsational pulsative pulsatively pulsator pulsatory pulse pulseless pulselessly pulselessness pulselike pulsellum pulsidge pulsific pulsimeter pulsion pulsive pulsojet pulsometer pultaceous pulton pulu pulveraceous pulverant pulverate pulveration pulvereous pulverin pulverizable pulverizate pulverization pulverizator pulverize pulverizer pulverous pulverulence pulverulent pulverulently pulvic pulvil pulvillar pulvilliform pulvillus pulvinar Pulvinaria pulvinarian pulvinate pulvinated pulvinately pulvination pulvinic pulviniform pulvino pulvinule pulvinulus pulvinus pulviplume pulwar puly puma Pume pumicate pumice pumiced pumiceous pumicer pumiciform pumicose pummel pummice pump pumpable pumpage pumpellyite pumper pumpernickel pumpkin pumpkinification pumpkinify pumpkinish pumpkinity pumple pumpless pumplike pumpman pumpsman pumpwright pun puna punaise punalua punaluan Punan punatoo punch punchable punchboard puncheon puncher punchinello punching punchless punchlike punchproof punchy punct punctal punctate punctated punctation punctator puncticular puncticulate puncticulose punctiform punctiliar punctilio punctiliomonger punctiliosity punctilious punctiliously punctiliousness punctist punctographic punctual punctualist punctuality punctually punctualness punctuate punctuation punctuational punctuationist punctuative punctuator punctuist punctulate punctulated punctulation punctule punctulum punctum puncturation puncture punctured punctureless punctureproof puncturer pundigrion pundit pundita punditic punditically punditry pundonor pundum puneca pung punga pungapung pungar pungence pungency pungent pungently punger pungey pungi pungle pungled Punic Punica Punicaceae punicaceous puniceous punicial punicin punicine punily puniness punish punishability punishable punishableness punishably punisher punishment punishmentproof punition punitional punitionally punitive punitively punitiveness punitory Punjabi punjum punk punkah punketto punkie punkwood punky punless punlet punnable punnage punner punnet punnic punnical punnigram punningly punnology Puno punproof punster punstress punt punta puntabout puntal puntel punter punti puntil puntist Puntlatsh punto puntout puntsman punty puny punyish punyism pup pupa pupahood pupal puparial puparium pupate pupation pupelo Pupidae pupiferous pupiform pupigenous pupigerous pupil pupilability pupilage pupilar pupilate pupildom pupiled pupilize pupillarity pupillary pupilless Pupillidae pupillometer pupillometry pupilloscope pupilloscoptic pupilloscopy Pupipara pupiparous Pupivora pupivore pupivorous pupoid puppet puppetdom puppeteer puppethood puppetish puppetism puppetize puppetlike puppetly puppetman puppetmaster puppetry puppify puppily Puppis puppy puppydom puppyfish puppyfoot puppyhood puppyish puppyism puppylike puppysnatch pupulo Pupuluca pupunha Puquina Puquinan pur purana puranic puraque Purasati Purbeck Purbeckian purblind purblindly purblindness purchasability purchasable purchase purchaser purchasery purdah purdy pure pureblood purebred pured puree purehearted purely pureness purer purfle purfled purfler purfling purfly purga purgation purgative purgatively purgatorial purgatorian purgatory purge purgeable purger purgery purging purificant purification purificative purificator purificatory purifier puriform purify purine puriri purism purist puristic puristical Puritan puritandom Puritaness puritanic puritanical puritanically puritanicalness Puritanism puritanism Puritanize Puritanizer puritanlike Puritanly puritano purity Purkinje Purkinjean purl purler purlhouse purlicue purlieu purlieuman purlin purlman purloin purloiner purohepatitis purolymph puromucous purpart purparty purple purplelip purplely purpleness purplescent purplewood purplewort purplish purplishness purply purport purportless purpose purposedly purposeful purposefully purposefulness purposeless purposelessly purposelessness purposelike purposely purposer purposive purposively purposiveness purposivism purposivist purposivistic purpresture purpura purpuraceous purpurate purpure purpureal purpurean purpureous purpurescent purpuric purpuriferous purpuriform purpurigenous purpurin purpurine purpuriparous purpurite purpurize purpurogallin purpurogenous purpuroid purpuroxanthin purr purre purree purreic purrel purrer purring purringly purrone purry purse pursed purseful purseless purselike purser pursership Purshia pursily pursiness purslane purslet pursley pursuable pursual pursuance pursuant pursuantly pursue pursuer pursuit pursuitmeter pursuivant pursy purtenance Puru Puruha purulence purulency purulent purulently puruloid Purupuru purusha purushartha purvey purveyable purveyal purveyance purveyancer purveyor purveyoress purview purvoe purwannah pus Puschkinia Puseyism Puseyistical Puseyite push pushball pushcart pusher pushful pushfully pushfulness pushing pushingly pushingness pushmobile pushover pushpin Pushtu pushwainling pusillanimity pusillanimous pusillanimously pusillanimousness puss pusscat pussley pusslike pussy pussycat pussyfoot pussyfooted pussyfooter pussyfooting pussyfootism pussytoe pustulant pustular pustulate pustulated pustulation pustulatous pustule pustuled pustulelike pustuliform pustulose pustulous put putage putamen putaminous putanism putation putationary putative putatively putback putchen putcher puteal putelee puther puthery putid putidly putidness putlog putois Putorius putredinal putredinous putrefacient putrefactible putrefaction putrefactive putrefactiveness putrefiable putrefier putrefy putresce putrescence putrescency putrescent putrescibility putrescible putrescine putricide putrid putridity putridly putridness putrifacted putriform putrilage putrilaginous putrilaginously putschism putschist putt puttee putter putterer putteringly puttier puttock putty puttyblower puttyhead puttyhearted puttylike puttyroot puttywork puture puxy Puya Puyallup puzzle puzzleation puzzled puzzledly puzzledness puzzledom puzzlehead puzzleheaded puzzleheadedly puzzleheadedness puzzleman puzzlement puzzlepate puzzlepated puzzlepatedness puzzler puzzling puzzlingly puzzlingness pya pyal pyarthrosis pyche Pycnanthemum pycnia pycnial pycnid pycnidia pycnidial pycnidiophore pycnidiospore pycnidium pycniospore pycnite pycnium Pycnocoma pycnoconidium pycnodont Pycnodonti Pycnodontidae pycnodontoid Pycnodus pycnogonid Pycnogonida pycnogonidium pycnogonoid pycnometer pycnometochia pycnometochic pycnomorphic pycnomorphous Pycnonotidae Pycnonotinae pycnonotine Pycnonotus pycnosis pycnospore pycnosporic pycnostyle pycnotic pyelectasis pyelic pyelitic pyelitis pyelocystitis pyelogram pyelograph pyelographic pyelography pyelolithotomy pyelometry pyelonephritic pyelonephritis pyelonephrosis pyeloplasty pyeloscopy pyelotomy pyeloureterogram pyemesis pyemia pyemic pygal pygalgia pygarg pygargus pygidial pygidid Pygididae Pygidium pygidium pygmaean Pygmalion pygmoid Pygmy pygmy pygmydom pygmyhood pygmyish pygmyism pygmyship pygmyweed Pygobranchia Pygobranchiata pygobranchiate pygofer pygopagus pygopod Pygopodes Pygopodidae pygopodine pygopodous Pygopus pygostyle pygostyled pygostylous pyic pyin pyjama pyjamaed pyke pyknatom pyknic pyknotic pyla Pylades pylagore pylangial pylangium pylar pylephlebitic pylephlebitis pylethrombophlebitis pylethrombosis pylic pylon pyloralgia pylorectomy pyloric pyloristenosis pyloritis pylorocleisis pylorodilator pylorogastrectomy pyloroplasty pyloroptosis pyloroschesis pyloroscirrhus pyloroscopy pylorospasm pylorostenosis pylorostomy pylorus pyobacillosis pyocele pyoctanin pyocyanase pyocyanin pyocyst pyocyte pyodermatitis pyodermatosis pyodermia pyodermic pyogenesis pyogenetic pyogenic pyogenin pyogenous pyohemothorax pyoid pyolabyrinthitis pyolymph pyometra pyometritis pyonephritis pyonephrosis pyonephrotic pyopericarditis pyopericardium pyoperitoneum pyoperitonitis pyophagia pyophthalmia pyophylactic pyoplania pyopneumocholecystitis pyopneumocyst pyopneumopericardium pyopneumoperitoneum pyopneumoperitonitis pyopneumothorax pyopoiesis pyopoietic pyoptysis pyorrhea pyorrheal pyorrheic pyosalpingitis pyosalpinx pyosepticemia pyosepticemic pyosis pyospermia pyotherapy pyothorax pyotoxinemia pyoureter pyovesiculosis pyoxanthose pyr pyracanth Pyracantha Pyraceae pyracene pyral Pyrales pyralid Pyralidae pyralidan pyralidid Pyralididae pyralidiform Pyralidoidea pyralis pyraloid Pyrameis pyramid pyramidaire pyramidal pyramidale pyramidalis Pyramidalism Pyramidalist pyramidally pyramidate Pyramidella pyramidellid Pyramidellidae pyramider pyramides pyramidia pyramidic pyramidical pyramidically pyramidicalness pyramidion Pyramidist pyramidize pyramidlike pyramidoattenuate pyramidoidal pyramidologist pyramidoprismatic pyramidwise pyramoidal pyran pyranometer pyranyl pyrargyrite Pyrausta Pyraustinae pyrazine pyrazole pyrazoline pyrazolone pyrazolyl pyre pyrectic pyrena pyrene Pyrenean pyrenematous pyrenic pyrenin pyrenocarp pyrenocarpic pyrenocarpous Pyrenochaeta pyrenodean pyrenodeine pyrenodeous pyrenoid pyrenolichen Pyrenomycetales pyrenomycete Pyrenomycetes Pyrenomycetineae pyrenomycetous Pyrenopeziza pyrethrin Pyrethrum pyrethrum pyretic pyreticosis pyretogenesis pyretogenetic pyretogenic pyretogenous pyretography pyretology pyretolysis pyretotherapy pyrewinkes Pyrex pyrex pyrexia pyrexial pyrexic pyrexical pyrgeometer pyrgocephalic pyrgocephaly pyrgoidal pyrgologist pyrgom pyrheliometer pyrheliometric pyrheliometry pyrheliophor pyribole pyridazine pyridic pyridine pyridinium pyridinize pyridone pyridoxine pyridyl pyriform pyriformis pyrimidine pyrimidyl pyritaceous pyrite pyrites pyritic pyritical pyritiferous pyritization pyritize pyritohedral pyritohedron pyritoid pyritology pyritous pyro pyroacetic pyroacid pyroantimonate pyroantimonic pyroarsenate pyroarsenic pyroarsenious pyroarsenite pyrobelonite pyrobituminous pyroborate pyroboric pyrocatechin pyrocatechinol pyrocatechol pyrocatechuic pyrocellulose pyrochemical pyrochemically pyrochlore pyrochromate pyrochromic pyrocinchonic pyrocitric pyroclastic pyrocoll pyrocollodion pyrocomenic pyrocondensation pyroconductivity pyrocotton pyrocrystalline Pyrocystis Pyrodine pyroelectric pyroelectricity pyrogallate pyrogallic pyrogallol pyrogen pyrogenation pyrogenesia pyrogenesis pyrogenetic pyrogenetically pyrogenic pyrogenous pyroglutamic pyrognomic pyrognostic pyrognostics pyrograph pyrographer pyrographic pyrography pyrogravure pyroguaiacin pyroheliometer pyroid Pyrola Pyrolaceae pyrolaceous pyrolater pyrolatry pyroligneous pyrolignic pyrolignite pyrolignous pyrolite pyrollogical pyrologist pyrology pyrolusite pyrolysis pyrolytic pyrolyze pyromachy pyromagnetic pyromancer pyromancy pyromania pyromaniac pyromaniacal pyromantic pyromeconic pyromellitic pyrometallurgy pyrometamorphic pyrometamorphism pyrometer pyrometric pyrometrical pyrometrically pyrometry Pyromorphidae pyromorphism pyromorphite pyromorphous pyromotor pyromucate pyromucic pyromucyl pyronaphtha pyrone Pyronema pyronine pyronomics pyronyxis pyrope pyropen pyrophanite pyrophanous pyrophile pyrophilous pyrophobia pyrophone pyrophoric pyrophorous pyrophorus pyrophosphate pyrophosphoric pyrophosphorous pyrophotograph pyrophotography pyrophotometer pyrophyllite pyrophysalite pyropuncture pyropus pyroracemate pyroracemic pyroscope pyroscopy pyrosis pyrosmalite Pyrosoma Pyrosomatidae pyrosome Pyrosomidae pyrosomoid pyrosphere pyrostat pyrostereotype pyrostilpnite pyrosulphate pyrosulphite pyrosulphuric pyrosulphuryl pyrotantalate pyrotartaric pyrotartrate pyrotechnian pyrotechnic pyrotechnical pyrotechnically pyrotechnician pyrotechnics pyrotechnist pyrotechny pyroterebic pyrotheology Pyrotheria Pyrotherium pyrotic pyrotoxin pyrotritaric pyrotritartric pyrouric pyrovanadate pyrovanadic pyroxanthin pyroxene pyroxenic pyroxenite pyroxmangite pyroxonium pyroxyle pyroxylene pyroxylic pyroxylin Pyrrhic pyrrhic pyrrhichian pyrrhichius pyrrhicist Pyrrhocoridae Pyrrhonean Pyrrhonian Pyrrhonic Pyrrhonism Pyrrhonist Pyrrhonistic Pyrrhonize pyrrhotine pyrrhotism pyrrhotist pyrrhotite pyrrhous Pyrrhuloxia Pyrrhus pyrrodiazole pyrrol pyrrole pyrrolic pyrrolidine pyrrolidone pyrrolidyl pyrroline pyrrolylene pyrrophyllin pyrroporphyrin pyrrotriazole pyrroyl pyrryl pyrrylene Pyrula Pyrularia pyruline pyruloid Pyrus pyruvaldehyde pyruvate pyruvic pyruvil pyruvyl pyrylium Pythagorean Pythagoreanism Pythagoreanize Pythagoreanly Pythagoric Pythagorical Pythagorically Pythagorism Pythagorist Pythagorize Pythagorizer Pythia Pythiaceae Pythiacystis Pythiad Pythiambic Pythian Pythic Pythios Pythium Pythius pythogenesis pythogenetic pythogenic pythogenous python pythoness pythonic pythonical pythonid Pythonidae pythoniform Pythoninae pythonine pythonism Pythonissa pythonist pythonize pythonoid pythonomorph Pythonomorpha pythonomorphic pythonomorphous pyuria pyvuril pyx Pyxidanthera pyxidate pyxides pyxidium pyxie Pyxis pyxis Q q qasida qere qeri qintar Qoheleth qoph qua quab quabird quachil quack quackery quackhood quackish quackishly quackishness quackism quackle quacksalver quackster quacky quad quadded quaddle Quader Quadi quadmeter quadra quadrable quadragenarian quadragenarious Quadragesima quadragesimal quadragintesimal quadral quadrangle quadrangled quadrangular quadrangularly quadrangularness quadrangulate quadrans quadrant quadrantal quadrantes Quadrantid quadrantile quadrantlike quadrantly quadrat quadrate quadrated quadrateness quadratic quadratical quadratically quadratics Quadratifera quadratiferous quadratojugal quadratomandibular quadratosquamosal quadratrix quadratum quadrature quadratus quadrauricular quadrennia quadrennial quadrennially quadrennium quadriad quadrialate quadriannulate quadriarticulate quadriarticulated quadribasic quadric quadricapsular quadricapsulate quadricarinate quadricellular quadricentennial quadriceps quadrichord quadriciliate quadricinium quadricipital quadricone quadricorn quadricornous quadricostate quadricotyledonous quadricovariant quadricrescentic quadricrescentoid quadricuspid quadricuspidal quadricuspidate quadricycle quadricycler quadricyclist quadridentate quadridentated quadriderivative quadridigitate quadriennial quadriennium quadrienniumutile quadrifarious quadrifariously quadrifid quadrifilar quadrifocal quadrifoil quadrifoliate quadrifoliolate quadrifolious quadrifolium quadriform quadrifrons quadrifrontal quadrifurcate quadrifurcated quadrifurcation quadriga quadrigabled quadrigamist quadrigate quadrigatus quadrigeminal quadrigeminate quadrigeminous quadrigeminum quadrigenarious quadriglandular quadrihybrid quadrijugal quadrijugate quadrijugous quadrilaminar quadrilaminate quadrilateral quadrilaterally quadrilateralness quadrilingual quadriliteral quadrille quadrilled quadrillion quadrillionth quadrilobate quadrilobed quadrilocular quadriloculate quadrilogue quadrilogy quadrimembral quadrimetallic quadrimolecular quadrimum quadrinodal quadrinomial quadrinomical quadrinominal quadrinucleate quadrioxalate quadriparous quadripartite quadripartitely quadripartition quadripennate quadriphosphate quadriphyllous quadripinnate quadriplanar quadriplegia quadriplicate quadriplicated quadripolar quadripole quadriportico quadriporticus quadripulmonary quadriquadric quadriradiate quadrireme quadrisect quadrisection quadriseptate quadriserial quadrisetose quadrispiral quadristearate quadrisulcate quadrisulcated quadrisulphide quadrisyllabic quadrisyllabical quadrisyllable quadrisyllabous quadriternate quadritubercular quadrituberculate quadriurate quadrivalence quadrivalency quadrivalent quadrivalently quadrivalve quadrivalvular quadrivial quadrivious quadrivium quadrivoltine quadroon quadrual Quadrula quadrum Quadrumana quadrumanal quadrumane quadrumanous quadruped quadrupedal quadrupedan quadrupedant quadrupedantic quadrupedantical quadrupedate quadrupedation quadrupedism quadrupedous quadruplane quadruplator quadruple quadrupleness quadruplet quadruplex quadruplicate quadruplication quadruplicature quadruplicity quadruply quadrupole quaedam Quaequae quaesitum quaestor quaestorial quaestorian quaestorship quaestuary quaff quaffer quaffingly quag quagga quagginess quaggle quaggy quagmire quagmiry quahog quail quailberry quailery quailhead quaillike quaily quaint quaintance quaintise quaintish quaintly quaintness Quaitso quake quakeful quakeproof Quaker quaker quakerbird Quakerdom Quakeress Quakeric Quakerish Quakerishly Quakerishness Quakerism Quakerization Quakerize Quakerlet Quakerlike Quakerly Quakership Quakery quaketail quakiness quaking quakingly quaky quale qualifiable qualification qualificative qualificator qualificatory qualified qualifiedly qualifiedness qualifier qualify qualifyingly qualimeter qualitative qualitatively qualitied quality qualityless qualityship qualm qualminess qualmish qualmishly qualmishness qualmproof qualmy qualmyish qualtagh Quamasia Quamoclit quan quandary quandong quandy quannet quant quanta quantic quantical quantifiable quantifiably quantification quantifier quantify quantimeter quantitate quantitative quantitatively quantitativeness quantitied quantitive quantitively quantity quantivalence quantivalency quantivalent quantization quantize quantometer quantulum quantum Quapaw quaquaversal quaquaversally quar quarantinable quarantine quarantiner quaranty quardeel quare quarenden quarender quarentene quark quarl quarle quarred quarrel quarreled quarreler quarreling quarrelingly quarrelproof quarrelsome quarrelsomely quarrelsomeness quarriable quarried quarrier quarry quarryable quarrying quarryman quarrystone quart quartan quartane quartation quartenylic quarter quarterage quarterback quarterdeckish quartered quarterer quartering quarterization quarterland quarterly quarterman quartermaster quartermasterlike quartermastership quartern quarterpace quarters quartersaw quartersawed quarterspace quarterstaff quarterstetch quartet quartette quartetto quartful quartic quartile quartine quartiparous quarto Quartodeciman quartodecimanism quartole quartz quartzic quartziferous quartzite quartzitic quartzless quartzoid quartzose quartzous quartzy quash Quashee quashey quashy quasi quasijudicial Quasimodo quasky quassation quassative Quassia quassiin quassin quat quata quatch quatercentenary quatern quaternal quaternarian quaternarius quaternary quaternate quaternion quaternionic quaternionist quaternitarian quaternity quaters quatertenses quatorzain quatorze quatrain quatral quatrayle quatre quatrefeuille quatrefoil quatrefoiled quatrefoliated quatrible quatrin quatrino quatrocentism quatrocentist quatrocento Quatsino quattie quattrini quatuor quatuorvirate quauk quave quaver quaverer quavering quaveringly quaverous quavery quaverymavery quaw quawk quay quayage quayful quaylike quayman quayside quaysider qubba queach queachy queak queal quean queanish queasily queasiness queasom queasy quebrachamine quebrachine quebrachitol quebracho quebradilla Quechua Quechuan quedful queechy queen queencake queencraft queencup queendom queenfish queenhood queening queenite queenless queenlet queenlike queenliness queenly queenright queenroot queensberry queenship queenweed queenwood queer queerer queerish queerishness queerity queerly queerness queersome queery queest queesting queet queeve quegh quei queintise quelch Quelea quell queller quemado queme quemeful quemefully quemely quench quenchable quenchableness quencher quenchless quenchlessly quenchlessness quenelle quenselite quercetagetin quercetic quercetin quercetum quercic Querciflorae quercimeritrin quercin quercine quercinic quercitannic quercitannin quercite quercitin quercitol quercitrin quercitron quercivorous Quercus Querecho Querendi Querendy querent Queres querier queriman querimonious querimoniously querimoniousness querimony querist querken querl quern quernal Quernales quernstone querulent querulential querulist querulity querulosity querulous querulously querulousness query querying queryingly queryist quesited quesitive quest quester questeur questful questingly question questionability questionable questionableness questionably questionary questionee questioner questioningly questionist questionless questionlessly questionnaire questionous questionwise questman questor questorial questorship quet quetch quetenite quetzal queue quey Quiangan quiapo quib quibble quibbleproof quibbler quibblingly quiblet quica Quiche quick quickbeam quickborn quicken quickenance quickenbeam quickener quickfoot quickhatch quickhearted quickie quicklime quickly quickness quicksand quicksandy quickset quicksilver quicksilvering quicksilverish quicksilverishness quicksilvery quickstep quickthorn quickwork quid Quidae quiddative quidder Quiddist quiddit quidditative quidditatively quiddity quiddle quiddler quidnunc quiesce quiescence quiescency quiescent quiescently quiet quietable quieten quietener quieter quieting quietism quietist quietistic quietive quietlike quietly quietness quietsome quietude quietus quiff quiffing Quiina Quiinaceae quiinaceous quila quiles Quileute quilkin quill Quillagua quillai quillaic Quillaja quillaja quillback quilled quiller quillet quilleted quillfish quilling quilltail quillwork quillwort quilly quilt quilted quilter quilting Quimbaya Quimper quin quina quinacrine Quinaielt quinaldic quinaldine quinaldinic quinaldinium quinaldyl quinamicine quinamidine quinamine quinanisole quinaquina quinarian quinarius quinary quinate quinatoxine Quinault quinazoline quinazolyl quince quincentenary quincentennial quincewort quinch quincubital quincubitalism quincuncial quincuncially quincunx quincunxial quindecad quindecagon quindecangle quindecasyllabic quindecemvir quindecemvirate quindecennial quindecim quindecima quindecylic quindene quinetum quingentenary quinhydrone quinia quinible quinic quinicine quinidia quinidine quinin quinina quinine quininiazation quininic quininism quininize quiniretin quinisext quinisextine quinism quinite quinitol quinizarin quinize quink quinnat quinnet Quinnipiac quinoa quinocarbonium quinoform quinogen quinoid quinoidal quinoidation quinoidine quinol quinoline quinolinic quinolinium quinolinyl quinologist quinology quinolyl quinometry quinone quinonediimine quinonic quinonimine quinonization quinonize quinonoid quinonyl quinopyrin quinotannic quinotoxine quinova quinovatannic quinovate quinovic quinovin quinovose quinoxaline quinoxalyl quinoyl quinquagenarian quinquagenary Quinquagesima quinquagesimal quinquarticular Quinquatria Quinquatrus quinquecapsular quinquecostate quinquedentate quinquedentated quinquefarious quinquefid quinquefoliate quinquefoliated quinquefoliolate quinquegrade quinquejugous quinquelateral quinqueliteral quinquelobate quinquelobated quinquelobed quinquelocular quinqueloculine quinquenary quinquenerval quinquenerved quinquennalia quinquennia quinquenniad quinquennial quinquennialist quinquennially quinquennium quinquepartite quinquepedal quinquepedalian quinquepetaloid quinquepunctal quinquepunctate quinqueradial quinqueradiate quinquereme quinquertium quinquesect quinquesection quinqueseptate quinqueserial quinqueseriate quinquesyllabic quinquesyllable quinquetubercular quinquetuberculate quinquevalence quinquevalency quinquevalent quinquevalve quinquevalvous quinquevalvular quinqueverbal quinqueverbial quinquevir quinquevirate quinquiliteral quinquina quinquino quinse quinsied quinsy quinsyberry quinsywort quint quintad quintadena quintadene quintain quintal quintan quintant quintary quintato quinte quintelement quintennial quinternion quinteron quinteroon quintessence quintessential quintessentiality quintessentially quintessentiate quintet quintette quintetto quintic quintile Quintilis Quintillian quintillion quintillionth Quintin quintin quintiped Quintius quinto quintocubital quintocubitalism quintole quinton quintroon quintuple quintuplet quintuplicate quintuplication quintuplinerved quintupliribbed quintus quinuclidine quinyl quinze quinzieme quip quipful quipo quipper quippish quippishness quippy quipsome quipsomeness quipster quipu quira quire quirewise Quirinal Quirinalia quirinca quiritarian quiritary Quirite Quirites quirk quirkiness quirkish quirksey quirksome quirky quirl quirquincho quirt quis quisby quiscos quisle quisling Quisqualis quisqueite quisquilian quisquiliary quisquilious quisquous quisutsch quit quitch quitclaim quite Quitemoca Quiteno quitrent quits quittable quittance quitted quitter quittor Quitu quiver quivered quiverer quiverful quivering quiveringly quiverish quiverleaf quivery Quixote quixotic quixotical quixotically quixotism quixotize quixotry quiz quizzability quizzable quizzacious quizzatorial quizzee quizzer quizzery quizzical quizzicality quizzically quizzicalness quizzification quizzify quizziness quizzingly quizzish quizzism quizzity quizzy Qung quo quod quoddies quoddity quodlibet quodlibetal quodlibetarian quodlibetary quodlibetic quodlibetical quodlibetically quoilers quoin quoined quoining quoit quoiter quoitlike quoits quondam quondamly quondamship quoniam quop Quoratean quorum quot quota quotability quotable quotableness quotably quotation quotational quotationally quotationist quotative quote quotee quoteless quotennial quoter quoteworthy quoth quotha quotidian quotidianly quotidianness quotient quotiety quotingly quotity quotlibet quotum Qurti R r ra raad raash Rab rab raband rabanna rabat rabatine rabatte rabattement rabbanist rabbanite rabbet rabbeting rabbi rabbin rabbinate rabbindom Rabbinic rabbinic Rabbinica rabbinical rabbinically rabbinism rabbinist rabbinistic rabbinistical rabbinite rabbinize rabbinship rabbiship rabbit rabbitberry rabbiter rabbithearted rabbitlike rabbitmouth rabbitproof rabbitroot rabbitry rabbitskin rabbitweed rabbitwise rabbitwood rabbity rabble rabblelike rabblement rabbleproof rabbler rabblesome rabboni rabbonim Rabelaisian Rabelaisianism Rabelaism Rabi rabic rabid rabidity rabidly rabidness rabies rabietic rabific rabiform rabigenic rabinet rabirubia rabitic rabulistic rabulous raccoon raccoonberry raccroc race raceabout racebrood racecourse racegoer racegoing racelike racemate racemation raceme racemed racemic racemiferous racemiform racemism racemization racemize racemocarbonate racemocarbonic racemomethylate racemose racemosely racemous racemously racemule racemulose racer raceway rach rache Rachel rachial rachialgia rachialgic rachianalgesia Rachianectes rachianesthesia rachicentesis rachides rachidial rachidian rachiform Rachiglossa rachiglossate rachigraph rachilla rachiocentesis rachiococainize rachiocyphosis rachiodont rachiodynia rachiometer rachiomyelitis rachioparalysis rachioplegia rachioscoliosis rachiotome rachiotomy rachipagus rachis rachischisis rachitic rachitis rachitism rachitogenic rachitome rachitomous rachitomy Rachycentridae Rachycentron racial racialism racialist raciality racialization racialize racially racily raciness racing racinglike racism racist rack rackabones rackan rackboard racker racket racketeer racketeering racketer racketing racketlike racketproof racketry rackett rackettail rackety rackful racking rackingly rackle rackless rackmaster rackproof rackrentable rackway rackwork racloir racon raconteur racoon Racovian racy rad rada radar radarman radarscope raddle raddleman raddlings radectomy radiability radiable radial radiale radialia radiality radialization radialize radially radian radiance radiancy radiant radiantly Radiata radiate radiated radiately radiateness radiatics radiatiform radiation radiational radiative radiatopatent radiatoporose radiatoporous radiator radiatory radiatostriate radiatosulcate radiature radical radicalism radicality radicalization radicalize radically radicalness radicand radicant radicate radicated radicating radication radicel radices radicicola radicicolous radiciferous radiciflorous radiciform radicivorous radicle radicolous radicose Radicula radicular radicule radiculectomy radiculitis radiculose radiectomy radiescent radiferous radii radio radioacoustics radioactinium radioactivate radioactive radioactively radioactivity radioamplifier radioanaphylaxis radioautograph radioautographic radioautography radiobicipital radiobroadcast radiobroadcaster radiobroadcasting radiobserver radiocarbon radiocarpal radiocast radiocaster radiochemical radiochemistry radiocinematograph radioconductor radiode radiodermatitis radiodetector radiodiagnosis radiodigital radiodontia radiodontic radiodontist radiodynamic radiodynamics radioelement radiogenic radiogoniometer radiogoniometric radiogoniometry radiogram radiograph radiographer radiographic radiographical radiographically radiography radiohumeral radioisotope Radiolaria radiolarian radiolead radiolite Radiolites radiolitic Radiolitidae radiolocation radiolocator radiologic radiological radiologist radiology radiolucency radiolucent radioluminescence radioluminescent radioman radiomedial radiometallography radiometeorograph radiometer radiometric radiometrically radiometry radiomicrometer radiomovies radiomuscular radionecrosis radioneuritis radionics radiopacity radiopalmar radiopaque radiopelvimetry radiophare radiophone radiophonic radiophony radiophosphorus radiophotograph radiophotography radiopraxis radioscope radioscopic radioscopical radioscopy radiosensibility radiosensitive radiosensitivity radiosonde radiosonic radiostereoscopy radiosurgery radiosurgical radiosymmetrical radiotechnology radiotelegram radiotelegraph radiotelegraphic radiotelegraphy radiotelephone radiotelephonic radiotelephony radioteria radiothallium radiotherapeutic radiotherapeutics radiotherapeutist radiotherapist radiotherapy radiothermy radiothorium radiotoxemia radiotransparency radiotransparent radiotrician Radiotron radiotropic radiotropism radiovision radish radishlike radium radiumization radiumize radiumlike radiumproof radiumtherapy radius radix radknight radman radome radon radsimir radula radulate raduliferous raduliform Rafe raff Raffaelesque raffe raffee raffery raffia raffinase raffinate raffing raffinose raffish raffishly raffishness raffle raffler Rafflesia rafflesia Rafflesiaceae rafflesiaceous raft raftage rafter raftiness raftlike raftman raftsman rafty rag raga ragabash ragabrash ragamuffin ragamuffinism ragamuffinly rage rageful ragefully rageless rageous rageously rageousness rageproof rager ragesome ragfish ragged raggedly raggedness raggedy raggee ragger raggery raggety raggil raggily ragging raggle raggled raggy raghouse raging ragingly raglan raglanite raglet raglin ragman ragout ragpicker ragseller ragshag ragsorter ragstone ragtag ragtime ragtimer ragtimey ragule raguly ragweed ragwort rah Rahanwin rahdar rahdaree Raia raia Raiae raid raider raidproof Raiidae raiiform rail railage railbird railer railhead railing railingly raillery railless raillike railly railman railroad railroadana railroader railroadiana railroading railroadish railroadship railway railwaydom railwayless Raimannia raiment raimentless rain rainband rainbird rainbound rainbow rainbowlike rainbowweed rainbowy rainburst raincoat raindrop rainer rainfall rainfowl rainful rainily raininess rainless rainlessness rainlight rainproof rainproofer rainspout rainstorm raintight rainwash rainworm rainy raioid Rais rais raisable raise raised raiseman raiser raisin raising raisiny raj Raja raja Rajah rajah rajaship Rajasthani rajbansi Rajidae Rajput rakan rake rakeage rakeful rakehell rakehellish rakehelly raker rakery rakesteel rakestele rakh raki rakily raking rakish rakishly rakishness rakit rakshasa raku rallentando ralliance Rallidae rallier ralliform Rallinae ralline Rallus rally Ralph ralph ralstonite ram Rama ramada ramage Ramaism Ramaite ramal Raman ramanas ramarama ramass ramate rambeh ramberge ramble rambler rambling ramblingly ramblingness Rambo rambong rambooze Rambouillet rambunctious rambutan ramdohrite rame rameal Ramean ramed ramekin ramellose rament ramentaceous ramental ramentiferous ramentum rameous ramequin Rameses Rameseum Ramessid Ramesside ramet ramex ramfeezled ramgunshoch ramhead ramhood rami ramicorn ramie ramiferous ramificate ramification ramified ramiflorous ramiform ramify ramigerous Ramillie Ramillied ramiparous ramisection ramisectomy Ramism Ramist Ramistical ramlike ramline rammack rammel rammelsbergite rammer rammerman rammish rammishly rammishness rammy Ramnenses Ramnes Ramona Ramoosii ramose ramosely ramosity ramosopalmate ramosopinnate ramososubdivided ramous ramp rampacious rampaciously rampage rampageous rampageously rampageousness rampager rampagious rampancy rampant rampantly rampart ramped ramper Ramphastidae Ramphastides Ramphastos rampick rampike ramping rampingly rampion rampire rampler ramplor rampsman ramrace ramrod ramroddy ramscallion ramsch ramshackle ramshackled ramshackleness ramshackly ramson ramstam ramtil ramular ramule ramuliferous ramulose ramulous ramulus ramus ramuscule Ramusi Ran ran Rana rana ranal Ranales ranarian ranarium Ranatra rance rancel rancellor rancelman rancer rancescent ranch ranche rancher rancheria ranchero ranchless ranchman rancho ranchwoman rancid rancidification rancidify rancidity rancidly rancidness rancor rancorous rancorously rancorousness rancorproof rand Randal Randallite randan randannite randem rander Randia randing randir Randite randle random randomish randomization randomize randomly randomness randomwise randy rane Ranella Ranere rang rangatira range ranged rangeless rangeman ranger rangership rangework rangey Rangifer rangiferine ranginess ranging rangle rangler rangy rani ranid Ranidae raniferous raniform Ranina Raninae ranine raninian ranivorous rank ranked ranker rankish rankle rankless ranklingly rankly rankness ranksman rankwise rann rannel rannigal ranny Ranquel ransack ransacker ransackle ransel ranselman ransom ransomable ransomer ransomfree ransomless ranstead rant rantan rantankerous rantepole ranter Ranterism ranting rantingly rantipole rantock ranty ranula ranular Ranunculaceae ranunculaceous Ranunculales ranunculi Ranunculus Ranzania Raoulia rap Rapaces rapaceus rapacious rapaciously rapaciousness rapacity rapakivi Rapallo Rapanea Rapateaceae rapateaceous rape rapeful raper rapeseed Raphael Raphaelesque Raphaelic Raphaelism Raphaelite Raphaelitism raphania Raphanus raphany raphe Raphia raphide raphides raphidiferous raphidiid Raphidiidae Raphidodea Raphidoidea Raphiolepis raphis rapic rapid rapidity rapidly rapidness rapier rapiered rapillo rapine rapiner raping rapinic rapist raploch rappage rapparee rappe rappel rapper rapping Rappist rappist Rappite rapport rapscallion rapscallionism rapscallionly rapscallionry rapt raptatorial raptatory raptly raptness raptor Raptores raptorial raptorious raptril rapture raptured raptureless rapturist rapturize rapturous rapturously rapturousness raptury raptus rare rarebit rarefaction rarefactional rarefactive rarefiable rarefication rarefier rarefy rarely rareness rareripe Rareyfy rariconstant rarish rarity Rarotongan ras rasa Rasalas Rasalhague rasamala rasant rascacio rascal rascaldom rascaless rascalion rascalism rascality rascalize rascallike rascallion rascally rascalry rascalship rasceta rascette rase rasen Rasenna raser rasgado rash rasher rashful rashing rashlike rashly rashness Rashti rasion Raskolnik Rasores rasorial rasp raspatorium raspatory raspberriade raspberry raspberrylike rasped rasper rasping raspingly raspingness raspings raspish raspite raspy rasse Rasselas rassle Rastaban raster rastik rastle Rastus rasure rat rata ratability ratable ratableness ratably ratafee ratafia ratal ratanhia rataplan ratbite ratcatcher ratcatching ratch ratchel ratchelly ratcher ratchet ratchetlike ratchety ratching ratchment rate rated ratel rateless ratement ratepayer ratepaying rater ratfish rath rathe rathed rathely ratheness rather ratherest ratheripe ratherish ratherly rathest rathite rathole rathskeller raticidal raticide ratification ratificationist ratifier ratify ratihabition ratine rating ratio ratiocinant ratiocinate ratiocination ratiocinative ratiocinator ratiocinatory ratiometer ration rationable rationably rational rationale rationalism rationalist rationalistic rationalistical rationalistically rationalisticism rationality rationalizable rationalization rationalize rationalizer rationally rationalness rationate rationless rationment Ratitae ratite ratitous ratlike ratline ratliner ratoon ratooner ratproof ratsbane ratskeller rattage rattail rattan ratteen ratten rattener ratter rattery ratti rattinet rattish rattle rattlebag rattlebones rattlebox rattlebrain rattlebrained rattlebush rattled rattlehead rattleheaded rattlejack rattlemouse rattlenut rattlepate rattlepated rattlepod rattleproof rattler rattleran rattleroot rattlertree rattles rattleskull rattleskulled rattlesnake rattlesome rattletrap rattleweed rattlewort rattling rattlingly rattlingness rattly ratton rattoner rattrap Rattus ratty ratwa ratwood raucid raucidity raucity raucous raucously raucousness raught raugrave rauk raukle rauli raun raunge raupo rauque Rauraci Raurici Rauwolfia ravage ravagement ravager rave ravehook raveinelike ravel raveler ravelin raveling ravelly ravelment ravelproof raven Ravenala ravendom ravenduck Ravenelia ravener ravenhood ravening ravenish ravenlike ravenous ravenously ravenousness ravenry ravens Ravensara ravensara ravenstone ravenwise raver Ravi ravigote ravin ravinate ravine ravined ravinement raviney raving ravingly ravioli ravish ravishedly ravisher ravishing ravishingly ravishment ravison ravissant raw rawboned rawbones rawhead rawhide rawhider rawish rawishness rawness rax Ray ray raya rayage rayed rayful rayless raylessness raylet Raymond rayon rayonnance rayonnant raze razee razer razoo razor razorable razorback razorbill razoredge razorless razormaker razormaking razorman razorstrop Razoumofskya razz razzia razzly re rea reaal reabandon reabolish reabolition reabridge reabsence reabsent reabsolve reabsorb reabsorption reabuse reacceptance reaccess reaccession reacclimatization reacclimatize reaccommodate reaccompany reaccomplish reaccomplishment reaccord reaccost reaccount reaccredit reaccrue reaccumulate reaccumulation reaccusation reaccuse reaccustom reacetylation reach reachable reacher reachieve reachievement reaching reachless reachy reacidification reacidify reacknowledge reacknowledgment reacquaint reacquaintance reacquire reacquisition react reactance reactant reaction reactional reactionally reactionariness reactionarism reactionarist reactionary reactionaryism reactionism reactionist reactivate reactivation reactive reactively reactiveness reactivity reactological reactology reactor reactualization reactualize reactuate read readability readable readableness readably readapt readaptability readaptable readaptation readaptive readaptiveness readd readdition readdress reader readerdom readership readhere readhesion readily readiness reading readingdom readjourn readjournment readjudicate readjust readjustable readjuster readjustment readmeasurement readminister readmiration readmire readmission readmit readmittance readopt readoption readorn readvance readvancement readvent readventure readvertency readvertise readvertisement readvise readvocate ready reaeration reaffect reaffection reaffiliate reaffiliation reaffirm reaffirmance reaffirmation reaffirmer reafflict reafford reafforest reafforestation reaffusion reagency reagent reaggravate reaggravation reaggregate reaggregation reaggressive reagin reagitate reagitation reagree reagreement reak real realarm reales realest realgar realienate realienation realign realignment realism realist realistic realistically realisticize reality realive realizability realizable realizableness realizably realization realize realizer realizing realizingly reallegation reallege reallegorize realliance reallocate reallocation reallot reallotment reallow reallowance reallude reallusion really realm realmless realmlet realness realter realteration realtor realty ream reamage reamalgamate reamalgamation reamass reambitious reamend reamendment reamer reamerer reaminess reamputation reamuse reamy reanalysis reanalyze reanchor reanimalize reanimate reanimation reanneal reannex reannexation reannotate reannounce reannouncement reannoy reannoyance reanoint reanswer reanvil reanxiety reap reapable reapdole reaper reapologize reapology reapparel reapparition reappeal reappear reappearance reappease reapplaud reapplause reappliance reapplicant reapplication reapplier reapply reappoint reappointment reapportion reapportionment reapposition reappraisal reappraise reappraisement reappreciate reappreciation reapprehend reapprehension reapproach reapprobation reappropriate reappropriation reapproval reapprove rear rearbitrate rearbitration rearer reargue reargument rearhorse rearisal rearise rearling rearm rearmament rearmost rearousal rearouse rearrange rearrangeable rearrangement rearranger rearray rearrest rearrival rearrive rearward rearwardly rearwardness rearwards reascend reascendancy reascendant reascendency reascendent reascension reascensional reascent reascertain reascertainment reashlar reasiness reask reason reasonability reasonable reasonableness reasonably reasoned reasonedly reasoner reasoning reasoningly reasonless reasonlessly reasonlessness reasonproof reaspire reassail reassault reassay reassemblage reassemble reassembly reassent reassert reassertion reassertor reassess reassessment reasseverate reassign reassignation reassignment reassimilate reassimilation reassist reassistance reassociate reassociation reassort reassortment reassume reassumption reassurance reassure reassured reassuredly reassurement reassurer reassuring reassuringly reastiness reastonish reastonishment reastray reasty reasy reattach reattachment reattack reattain reattainment reattempt reattend reattendance reattention reattentive reattest reattire reattract reattraction reattribute reattribution reatus reaudit reauthenticate reauthentication reauthorization reauthorize reavail reavailable reave reaver reavoid reavoidance reavouch reavow reawait reawake reawaken reawakening reawakenment reaward reaware reb rebab reback rebag rebait rebake rebalance rebale reballast reballot reban rebandage rebanish rebanishment rebankrupt rebankruptcy rebaptism rebaptismal rebaptization rebaptize rebaptizer rebar rebarbarization rebarbarize rebarbative rebargain rebase rebasis rebatable rebate rebateable rebatement rebater rebathe rebato rebawl rebeamer rebear rebeat rebeautify rebec Rebecca Rebeccaism Rebeccaites rebeck rebecome rebed rebeg rebeget rebeggar rebegin rebeginner rebeginning rebeguile rebehold Rebekah rebel rebeldom rebelief rebelieve rebeller rebellike rebellion rebellious rebelliously rebelliousness rebellow rebelly rebelong rebelove rebelproof rebemire rebend rebenediction rebenefit rebeset rebesiege rebestow rebestowal rebetake rebetray rebewail rebia rebias rebid rebill rebillet rebilling rebind rebirth rebite reblade reblame reblast rebleach reblend rebless reblock rebloom reblossom reblot reblow reblue rebluff reblunder reboant reboantic reboard reboast rebob reboil reboiler reboise reboisement rebold rebolt rebone rebook rebop rebore reborn reborrow rebottle Reboulia rebounce rebound reboundable rebounder reboundingness rebourbonize rebox rebrace rebraid rebranch rebrand rebrandish rebreathe rebreed rebrew rebribe rebrick rebridge rebring rebringer rebroach rebroadcast rebronze rebrown rebrush rebrutalize rebubble rebuckle rebud rebudget rebuff rebuffable rebuffably rebuffet rebuffproof rebuild rebuilder rebuilt rebukable rebuke rebukeable rebukeful rebukefully rebukefulness rebukeproof rebuker rebukingly rebulk rebunch rebundle rebunker rebuoy rebuoyage reburden reburgeon reburial reburn reburnish reburst rebury rebus rebush rebusy rebut rebute rebutment rebuttable rebuttal rebutter rebutton rebuy recable recadency recage recalcination recalcine recalcitrance recalcitrant recalcitrate recalcitration recalculate recalculation recalesce recalescence recalescent recalibrate recalibration recalk recall recallable recallist recallment recampaign recancel recancellation recandescence recandidacy recant recantation recanter recantingly recanvas recap recapacitate recapitalization recapitalize recapitulate recapitulation recapitulationist recapitulative recapitulator recapitulatory recappable recapper recaption recaptivate recaptivation recaptor recapture recapturer recarbon recarbonate recarbonation recarbonization recarbonize recarbonizer recarburization recarburize recarburizer recarnify recarpet recarriage recarrier recarry recart recarve recase recash recasket recast recaster recasting recatalogue recatch recaulescence recausticize recce recco reccy recede recedence recedent receder receipt receiptable receiptless receiptor receipts receivability receivable receivables receivablness receival receive received receivedness receiver receivership recelebrate recelebration recement recementation recency recense recension recensionist recensor recensure recensus recent recenter recently recentness recentralization recentralize recentre recept receptacle receptacular receptaculite Receptaculites receptaculitid Receptaculitidae receptaculitoid receptaculum receptant receptibility receptible reception receptionism receptionist receptitious receptive receptively receptiveness receptivity receptor receptoral receptorial receptual receptually recercelee recertificate recertify recess recesser recession recessional recessionary recessive recessively recessiveness recesslike recessor Rechabite Rechabitism rechafe rechain rechal rechallenge rechamber rechange rechant rechaos rechar recharge recharter rechase rechaser rechasten rechaw recheat recheck recheer recherche rechew rechip rechisel rechoose rechristen rechuck rechurn recidivation recidive recidivism recidivist recidivistic recidivity recidivous recipe recipiangle recipience recipiency recipiend recipiendary recipient recipiomotor reciprocable reciprocal reciprocality reciprocalize reciprocally reciprocalness reciprocate reciprocation reciprocative reciprocator reciprocatory reciprocitarian reciprocity recircle recirculate recirculation recision recission recissory recitable recital recitalist recitatif recitation recitationalism recitationist recitative recitatively recitativical recitativo recite recitement reciter recivilization recivilize reck reckla reckless recklessly recklessness reckling reckon reckonable reckoner reckoning reclaim reclaimable reclaimableness reclaimably reclaimant reclaimer reclaimless reclaimment reclama reclamation reclang reclasp reclass reclassification reclassify reclean recleaner recleanse reclear reclearance reclimb reclinable reclinate reclinated reclination recline recliner reclose reclothe reclothing recluse reclusely recluseness reclusery reclusion reclusive reclusiveness reclusory recoach recoagulation recoal recoast recoat recock recoct recoction recode recodification recodify recogitate recogitation recognition recognitive recognitor recognitory recognizability recognizable recognizably recognizance recognizant recognize recognizedly recognizee recognizer recognizingly recognizor recognosce recohabitation recoil recoiler recoilingly recoilment recoin recoinage recoiner recoke recollapse recollate recollation Recollect recollectable recollected recollectedly recollectedness recollectible recollection recollective recollectively recollectiveness Recollet recolonization recolonize recolor recomb recombination recombine recomember recomfort recommand recommence recommencement recommencer recommend recommendability recommendable recommendableness recommendably recommendation recommendatory recommendee recommender recommission recommit recommitment recommittal recommunicate recommunion recompact recompare recomparison recompass recompel recompensable recompensate recompensation recompense recompenser recompensive recompete recompetition recompetitor recompilation recompile recompilement recomplain recomplaint recomplete recompletion recompliance recomplicate recomplication recomply recompose recomposer recomposition recompound recomprehend recomprehension recompress recompression recomputation recompute recon reconceal reconcealment reconcede reconceive reconcentrate reconcentration reconception reconcert reconcession reconcilability reconcilable reconcilableness reconcilably reconcile reconcilee reconcileless reconcilement reconciler reconciliability reconciliable reconciliate reconciliation reconciliative reconciliator reconciliatory reconciling reconcilingly reconclude reconclusion reconcoct reconcrete reconcur recondemn recondemnation recondensation recondense recondite reconditely reconditeness recondition recondole reconduct reconduction reconfer reconfess reconfide reconfine reconfinement reconfirm reconfirmation reconfiscate reconfiscation reconform reconfound reconfront reconfuse reconfusion recongeal recongelation recongest recongestion recongratulate recongratulation reconjoin reconjunction reconnaissance reconnect reconnection reconnoissance reconnoiter reconnoiterer reconnoiteringly reconnoitre reconnoitrer reconnoitringly reconquer reconqueror reconquest reconsecrate reconsecration reconsent reconsider reconsideration reconsign reconsignment reconsole reconsolidate reconsolidation reconstituent reconstitute reconstitution reconstruct reconstructed reconstruction reconstructional reconstructionary reconstructionist reconstructive reconstructiveness reconstructor reconstrue reconsult reconsultation recontact recontemplate recontemplation recontend recontest recontinuance recontinue recontract recontraction recontrast recontribute recontribution recontrivance recontrive recontrol reconvalesce reconvalescence reconvalescent reconvene reconvention reconventional reconverge reconverse reconversion reconvert reconvertible reconvey reconveyance reconvict reconviction reconvince reconvoke recook recool recooper recopper recopy recopyright record recordable recordant recordation recordative recordatively recordatory recordedly recorder recordership recording recordist recordless recork recorporification recorporify recorrect recorrection recorrupt recorruption recostume recounsel recount recountable recountal recountenance recounter recountless recoup recoupable recouper recouple recoupment recourse recover recoverability recoverable recoverableness recoverance recoveree recoverer recoveringly recoverless recoveror recovery recramp recrank recrate recreance recreancy recreant recreantly recreantness recrease recreate recreation recreational recreationist recreative recreatively recreativeness recreator recreatory recredit recrement recremental recrementitial recrementitious recrescence recrew recriminate recrimination recriminative recriminator recriminatory recriticize recroon recrop recross recrowd recrown recrucify recrudency recrudesce recrudescence recrudescency recrudescent recruit recruitable recruitage recruital recruitee recruiter recruithood recruiting recruitment recruity recrush recrusher recrystallization recrystallize rect recta rectal rectalgia rectally rectangle rectangled rectangular rectangularity rectangularly rectangularness rectangulate rectangulometer rectectomy recti rectifiable rectification rectificative rectificator rectificatory rectified rectifier rectify rectigrade Rectigraph rectilineal rectilineally rectilinear rectilinearism rectilinearity rectilinearly rectilinearness rectilineation rectinerved rection rectipetality rectirostral rectischiac rectiserial rectitic rectitis rectitude rectitudinous recto rectoabdominal rectocele rectoclysis rectococcygeal rectococcygeus rectocolitic rectocolonic rectocystotomy rectogenital rectopexy rectoplasty rector rectoral rectorate rectoress rectorial rectorrhaphy rectorship rectory rectoscope rectoscopy rectosigmoid rectostenosis rectostomy rectotome rectotomy rectovaginal rectovesical rectress rectricial rectrix rectum rectus recubant recubate recultivate recultivation recumbence recumbency recumbent recumbently recuperability recuperance recuperate recuperation recuperative recuperativeness recuperator recuperatory recur recure recureful recureless recurl recurrence recurrency recurrent recurrently recurrer recurring recurringly recurse recursion recursive recurtain recurvant recurvate recurvation recurvature recurve Recurvirostra recurvirostral Recurvirostridae recurvopatent recurvoternate recurvous recusance recusancy recusant recusation recusative recusator recuse recushion recussion recut recycle Red red redact redaction redactional redactor redactorial redamage redamnation redan redare redargue redargution redargutive redargutory redarken redarn redart redate redaub redawn redback redbait redbeard redbelly redberry redbill redbird redbone redbreast redbrush redbuck redbud redcap redcoat redd redden reddendo reddendum reddening redder redding reddingite reddish reddishness reddition reddleman reddock reddsman reddy rede redeal redebate redebit redeceive redecide redecimate redecision redeck redeclaration redeclare redecline redecorate redecoration redecrease redecussate rededicate rededication rededicatory rededuct rededuction redeed redeem redeemability redeemable redeemableness redeemably redeemer redeemeress redeemership redeemless redefault redefeat redefecate redefer redefiance redefine redefinition redeflect redefy redeify redelay redelegate redelegation redeliberate redeliberation redeliver redeliverance redeliverer redelivery redemand redemandable redemise redemolish redemonstrate redemonstration redemptible Redemptine redemption redemptional redemptioner Redemptionist redemptionless redemptive redemptively redemptor redemptorial Redemptorist redemptory redemptress redemptrice redenigrate redeny redepend redeploy redeployment redeposit redeposition redepreciate redepreciation redeprive rederivation redescend redescent redescribe redescription redesertion redeserve redesign redesignate redesignation redesire redesirous redesman redespise redetect redetention redetermination redetermine redevelop redeveloper redevelopment redevise redevote redevotion redeye redfin redfinch redfish redfoot redhead redheaded redheadedly redheadedness redhearted redhibition redhibitory redhoop redia redictate redictation redient redifferentiate redifferentiation redig redigest redigestion rediminish redingote redintegrate redintegration redintegrative redintegrator redip redipper redirect redirection redisable redisappear redisburse redisbursement redischarge rediscipline rediscount rediscourage rediscover rediscoverer rediscovery rediscuss rediscussion redisembark redismiss redispatch redispel redisperse redisplay redispose redisposition redispute redissect redissection redisseise redisseisin redisseisor redisseize redisseizin redisseizor redissoluble redissolution redissolvable redissolve redistend redistill redistillation redistiller redistinguish redistrain redistrainer redistribute redistributer redistribution redistributive redistributor redistributory redistrict redisturb redive rediversion redivert redivertible redivide redivision redivive redivivous redivivus redivorce redivorcement redivulge redivulgence redjacket redknees redleg redlegs redly redmouth redness redo redock redocket redolence redolency redolent redolently redominate redondilla redoom redouble redoublement redoubler redoubling redoubt redoubtable redoubtableness redoubtably redoubted redound redowa redox redpoll redraft redrag redrape redraw redrawer redream redredge redress redressable redressal redresser redressible redressive redressless redressment redressor redrill redrive redroot redry redsear redshank redshirt redskin redstart redstreak redtab redtail redthroat redtop redub redubber reduce reduceable reduceableness reduced reducement reducent reducer reducibility reducible reducibleness reducibly reducing reduct reductant reductase reductibility reduction reductional reductionism reductionist reductionistic reductive reductively reductor reductorial redue Redunca redundance redundancy redundant redundantly reduplicate reduplication reduplicative reduplicatively reduplicatory reduplicature reduviid Reduviidae reduvioid Reduvius redux redward redware redweed redwing redwithe redwood redye Ree ree reechy reed reedbird reedbuck reedbush reeded reeden reeder reediemadeasy reedily reediness reeding reedish reedition reedless reedlike reedling reedmaker reedmaking reedman reedplot reedwork reedy reef reefable reefer reefing reefy reek reeker reekingly reeky reel reelable reeled reeler reelingly reelrall reem reeming reemish reen reenge reeper reese reeshle reesk reesle reest reester reestle reesty reet reetam reetle reeve reeveland reeveship ref reface refacilitate refall refallow refan refascinate refascination refashion refashioner refashionment refasten refathered refavor refect refection refectionary refectioner refective refectorarian refectorary refectorer refectorial refectorian refectory refederate refeed refeel refeign refel refence refer referable referee reference referenda referendal referendary referendaryship referendum referent referential referentially referently referment referral referrer referrible referribleness refertilization refertilize refetch refight refigure refill refillable refilm refilter refinable refinage refinance refind refine refined refinedly refinedness refinement refiner refinery refinger refining refiningly refinish refire refit refitment refix refixation refixture reflag reflagellate reflame reflash reflate reflation reflationism reflect reflectance reflected reflectedly reflectedness reflectent reflecter reflectibility reflectible reflecting reflectingly reflection reflectional reflectionist reflectionless reflective reflectively reflectiveness reflectivity reflectometer reflectometry reflector reflectoscope refledge reflee reflex reflexed reflexibility reflexible reflexism reflexive reflexively reflexiveness reflexivity reflexly reflexness reflexogenous reflexological reflexologist reflexology refling refloat refloatation reflog reflood refloor reflorescence reflorescent reflourish reflourishment reflow reflower refluctuation refluence refluency refluent reflush reflux refluxed refly refocillate refocillation refocus refold refoment refont refool refoot reforbid reforce reford reforecast reforest reforestation reforestization reforestize reforestment reforfeit reforfeiture reforge reforger reforget reforgive reform reformability reformable reformableness reformado reformandum Reformati reformation reformational reformationary reformationist reformative reformatively reformatness reformatory reformed reformedly reformer reformeress reformingly reformism reformist reformistic reformproof reformulate reformulation reforsake refortification refortify reforward refound refoundation refounder refract refractable refracted refractedly refractedness refractile refractility refracting refraction refractional refractionate refractionist refractive refractively refractiveness refractivity refractometer refractometric refractometry refractor refractorily refractoriness refractory refracture refragability refragable refragableness refrain refrainer refrainment reframe refrangent refrangibility refrangible refrangibleness refreeze refrenation refrenzy refresh refreshant refreshen refreshener refresher refreshful refreshfully refreshing refreshingly refreshingness refreshment refrigerant refrigerate refrigerating refrigeration refrigerative refrigerator refrigeratory refrighten refringence refringency refringent refront refrustrate reft refuel refueling refuge refugee refugeeism refugeeship refulge refulgence refulgency refulgent refulgently refulgentness refunction refund refunder refundment refurbish refurbishment refurl refurnish refurnishment refusable refusal refuse refuser refusing refusingly refusion refusive refutability refutable refutably refutal refutation refutative refutatory refute refuter reg regain regainable regainer regainment regal regale Regalecidae Regalecus regalement regaler regalia regalian regalism regalist regality regalize regallop regally regalness regalvanization regalvanize regard regardable regardance regardancy regardant regarder regardful regardfully regardfulness regarding regardless regardlessly regardlessness regarment regarnish regarrison regather regatta regauge regelate regelation regency regeneracy regenerance regenerant regenerate regenerateness regeneration regenerative regeneratively regenerator regeneratory regeneratress regeneratrix regenesis regent regental regentess regentship regerminate regermination reges reget Regga Reggie regia regicidal regicide regicidism regift regifuge regild regill regime regimen regimenal regiment regimental regimentaled regimentalled regimentally regimentals regimentary regimentation regiminal regin reginal Reginald region regional regionalism regionalist regionalistic regionalization regionalize regionally regionary regioned register registered registerer registership registrability registrable registral registrant registrar registrarship registrary registrate registration registrational registrationist registrator registrer registry regive regladden reglair reglaze regle reglement reglementary reglementation reglementist reglet reglorified regloss reglove reglow reglue regma regmacarp regnal regnancy regnant regnerable regolith regorge regovern regradation regrade regraduate regraduation regraft regrant regrasp regrass regrate regrater regratification regratify regrating regratingly regrator regratress regravel regrede regreen regreet regress regression regressionist regressive regressively regressiveness regressivity regressor regret regretful regretfully regretfulness regretless regrettable regrettableness regrettably regretter regrettingly regrind regrinder regrip regroup regroupment regrow regrowth reguarantee reguard reguardant reguide regula regulable regular Regulares Regularia regularity regularization regularize regularizer regularly regularness regulatable regulate regulated regulation regulationist regulative regulatively regulator regulatorship regulatory regulatress regulatris reguli reguline regulize Regulus regulus regur regurge regurgitant regurgitate regurgitation regush reh rehabilitate rehabilitation rehabilitative rehair rehale rehallow rehammer rehandicap rehandle rehandler rehandling rehang rehappen reharden reharm reharmonize reharness reharrow reharvest rehash rehaul rehazard rehead reheal reheap rehear rehearing rehearsal rehearse rehearser rehearten reheat reheater Reheboth rehedge reheel reheighten Rehoboam Rehoboth Rehobothan rehoe rehoist rehollow rehonor rehonour rehood rehook rehoop rehouse rehumanize rehumble rehumiliate rehumiliation rehung rehybridize rehydrate rehydration rehypothecate rehypothecation rehypothecator reichsgulden Reichsland Reichslander reichsmark reichspfennig reichstaler reidentification reidentify reif reification reify reign reignite reignition reignore reillume reilluminate reillumination reillumine reillustrate reillustration reim reimage reimagination reimagine reimbark reimbarkation reimbibe reimbody reimbursable reimburse reimbursement reimburser reimbush reimbushment reimkennar reimmerge reimmerse reimmersion reimmigrant reimmigration reimpact reimpark reimpart reimpatriate reimpatriation reimpel reimplant reimplantation reimply reimport reimportation reimportune reimpose reimposition reimposure reimpregnate reimpress reimpression reimprint reimprison reimprisonment reimprove reimprovement reimpulse rein reina reinability reinaugurate reinauguration reincapable reincarnadine reincarnate reincarnation reincarnationism reincarnationist reincense reincentive reincidence reincidency reincite reinclination reincline reinclude reinclusion reincorporate reincorporation reincrease reincrudate reincrudation reinculcate reincur reindebted reindebtedness reindeer reindependence reindicate reindication reindict reindictment reindifferent reindorse reinduce reinducement reindue reindulge reindulgence reinette reinfect reinfection reinfectious reinfer reinfest reinfestation reinflame reinflate reinflation reinflict reinfliction reinfluence reinforce reinforcement reinforcer reinform reinfuse reinfusion reingraft reingratiate reingress reinhabit reinhabitation reinherit reinitiate reinitiation reinject reinjure reinless reinoculate reinoculation reinquire reinquiry reins reinsane reinsanity reinscribe reinsert reinsertion reinsist reinsman reinspect reinspection reinspector reinsphere reinspiration reinspire reinspirit reinstall reinstallation reinstallment reinstalment reinstate reinstatement reinstation reinstator reinstauration reinstil reinstill reinstitute reinstitution reinstruct reinstruction reinsult reinsurance reinsure reinsurer reintegrate reintegration reintend reinter reintercede reintercession reinterchange reinterest reinterfere reinterference reinterment reinterpret reinterpretation reinterrogate reinterrogation reinterrupt reinterruption reintervene reintervention reinterview reinthrone reintimate reintimation reintitule reintrench reintroduce reintroduction reintrude reintrusion reintuition reintuitive reinvade reinvasion reinvent reinvention reinventor reinversion reinvert reinvest reinvestigate reinvestigation reinvestiture reinvestment reinvigorate reinvigoration reinvitation reinvite reinvoice reinvolve Reinwardtia reirrigate reirrigation reis reisolation reissuable reissue reissuement reissuer reit reitbok reitbuck reitemize reiter reiterable reiterance reiterant reiterate reiterated reiteratedly reiteratedness reiteration reiterative reiteratively reiver rejail Rejang reject rejectable rejectableness rejectage rejectamenta rejecter rejectingly rejection rejective rejectment rejector rejerk rejoice rejoiceful rejoicement rejoicer rejoicing rejoicingly rejoin rejoinder rejolt rejourney rejudge rejumble rejunction rejustification rejustify rejuvenant rejuvenate rejuvenation rejuvenative rejuvenator rejuvenesce rejuvenescence rejuvenescent rejuvenize Reki rekick rekill rekindle rekindlement rekindler reking rekiss reknit reknow rel relabel relace relacquer relade reladen relais relament relamp reland relap relapper relapsable relapse relapseproof relapser relapsing relast relaster relata relatability relatable relatch relate related relatedness relater relatinization relation relational relationality relationally relationary relationism relationist relationless relationship relatival relative relatively relativeness relativism relativist relativistic relativity relativization relativize relator relatrix relatum relaunch relax relaxable relaxant relaxation relaxative relaxatory relaxed relaxedly relaxedness relaxer relay relayman relbun relead releap relearn releasable release releasee releasement releaser releasor releather relection relegable relegate relegation relend relent relenting relentingly relentless relentlessly relentlessness relentment relessee relessor relet reletter relevance relevancy relevant relevantly relevate relevation relevator relevel relevy reliability reliable reliableness reliably reliance reliant reliantly reliberate relic relicary relicense relick reliclike relicmonger relict relicted reliction relief reliefless relier relievable relieve relieved relievedly reliever relieving relievingly relievo relift religate religation relight relightable relighten relightener relighter religion religionary religionate religioner religionism religionist religionistic religionize religionless religiose religiosity religious religiously religiousness relime relimit relimitation reline reliner relink relinquent relinquish relinquisher relinquishment reliquaire reliquary reliquefy reliquiae reliquian reliquidate reliquidation reliquism relish relishable relisher relishing relishingly relishsome relishy relist relisten relitigate relive Rellyan Rellyanism Rellyanite reload reloan relocable relocate relocation relocator relock relodge relook relose relost relot relove relower relucent reluct reluctance reluctancy reluctant reluctantly reluctate reluctation reluctivity relume relumine rely remade remagnetization remagnetize remagnification remagnify remail remain remainder remainderman remaindership remainer remains remaintain remaintenance remake remaker reman remanage remanagement remanation remancipate remancipation remand remandment remanence remanency remanent remanet remanipulate remanipulation remantle remanufacture remanure remap remarch remargin remark remarkability remarkable remarkableness remarkably remarkedly remarker remarket remarque remarriage remarry remarshal remask remass remast remasticate remastication rematch rematerialize remble Rembrandt Rembrandtesque Rembrandtish Rembrandtism remeant remeasure remeasurement remede remediable remediableness remediably remedial remedially remediation remediless remedilessly remedilessness remeditate remeditation remedy remeet remelt remember rememberability rememberable rememberably rememberer remembrance remembrancer remembrancership rememorize remenace remend remerge remetal remex Remi remica remicate remication remicle remiform remigate remigation remiges remigial remigrant remigrate remigration Remijia remilitarization remilitarize remill remimic remind remindal reminder remindful remindingly remineralization remineralize remingle reminisce reminiscence reminiscenceful reminiscencer reminiscency reminiscent reminiscential reminiscentially reminiscently reminiscer reminiscitory remint remiped remirror remise remisrepresent remisrepresentation remiss remissful remissibility remissible remissibleness remission remissive remissively remissiveness remissly remissness remissory remisunderstand remit remitment remittable remittal remittance remittancer remittee remittence remittency remittent remittently remitter remittitur remittor remix remixture remnant remnantal remobilization remobilize Remoboth remock remodel remodeler remodeller remodelment remodification remodify remolade remold remollient remonetization remonetize remonstrance remonstrant remonstrantly remonstrate remonstrating remonstratingly remonstration remonstrative remonstratively remonstrator remonstratory remontado remontant remontoir remop remora remord remorse remorseful remorsefully remorsefulness remorseless remorselessly remorselessness remorseproof remortgage remote remotely remoteness remotion remotive remould remount removability removable removableness removably removal remove removed removedly removedness removement remover removing remultiplication remultiply remunerability remunerable remunerably remunerate remuneration remunerative remuneratively remunerativeness remunerator remuneratory remurmur Remus remuster remutation renable renably renail Renaissance renaissance Renaissancist Renaissant renal rename Renardine renascence renascency renascent renascible renascibleness renature renavigate renavigation rencontre rencounter renculus rend render renderable renderer rendering renderset rendezvous rendibility rendible rendition rendlewood rendrock rendzina reneague Renealmia renecessitate reneg renegade renegadism renegado renegation renege reneger reneglect renegotiable renegotiate renegotiation renegotiations renegue renerve renes renet renew renewability renewable renewably renewal renewedly renewedness renewer renewment renicardiac renickel renidification renidify reniform Renilla Renillidae renin renipericardial reniportal renipuncture renish renishly renitence renitency renitent renk renky renne rennet renneting rennin renniogen renocutaneous renogastric renography renointestinal renominate renomination renopericardial renopulmonary renormalize renotation renotice renotification renotify renounce renounceable renouncement renouncer renourish renovate renovater renovatingly renovation renovative renovator renovatory renovize renown renowned renownedly renownedness renowner renownful renownless rensselaerite rent rentability rentable rentage rental rentaler rentaller rented rentee renter rentless rentrant rentrayeuse renumber renumerate renumeration renunciable renunciance renunciant renunciate renunciation renunciative renunciator renunciatory renunculus renverse renvoi renvoy reobject reobjectivization reobjectivize reobligate reobligation reoblige reobscure reobservation reobserve reobtain reobtainable reobtainment reoccasion reoccupation reoccupy reoccur reoccurrence reoffend reoffense reoffer reoffset reoil reometer reomission reomit reopen reoperate reoperation reoppose reopposition reoppress reoppression reorchestrate reordain reorder reordinate reordination reorganization reorganizationist reorganize reorganizer reorient reorientation reornament reoutfit reoutline reoutput reoutrage reovercharge reoverflow reovertake reoverwork reown reoxidation reoxidize reoxygenate reoxygenize rep repace repacification repacify repack repackage repacker repaganization repaganize repaganizer repage repaint repair repairable repairableness repairer repairman repale repand repandly repandodentate repandodenticulate repandolobate repandous repandousness repanel repaper reparability reparable reparably reparagraph reparate reparation reparative reparatory repark repartable repartake repartee reparticipate reparticipation repartition repartitionable repass repassable repassage repasser repast repaste repasture repatch repatency repatent repatriable repatriate repatriation repatronize repattern repave repavement repawn repay repayable repayal repaying repayment repeal repealability repealable repealableness repealer repealist repealless repeat repeatability repeatable repeatal repeated repeatedly repeater repeg repel repellance repellant repellence repellency repellent repellently repeller repelling repellingly repellingness repen repenetrate repension repent repentable repentance repentant repentantly repenter repentingly repeople reperceive repercept reperception repercolation repercuss repercussion repercussive repercussively repercussiveness repercutient reperform reperformance reperfume reperible repermission repermit reperplex repersonalization repersonalize repersuade repersuasion repertoire repertorial repertorily repertorium repertory reperusal reperuse repetend repetition repetitional repetitionary repetitious repetitiously repetitiousness repetitive repetitively repetitiveness repetitory repetticoat repew Rephael rephase rephonate rephosphorization rephosphorize rephotograph rephrase repic repick repicture repiece repile repin repine repineful repinement repiner repiningly repipe repique repitch repkie replace replaceability replaceable replacement replacer replait replan replane replant replantable replantation replanter replaster replate replay replead repleader repleat repledge repledger replenish replenisher replenishingly replenishment replete repletely repleteness repletion repletive repletively repletory repleviable replevin replevisable replevisor replevy repliant replica replicate replicated replicatile replication replicative replicatively replicatory replier replight replod replot replotment replotter replough replow replum replume replunder replunge reply replyingly repocket repoint repolish repoll repollute repolon repolymerization repolymerize reponder repone repope repopulate repopulation report reportable reportage reportedly reporter reporteress reporterism reportership reportingly reportion reportorial reportorially reposal repose reposed reposedly reposedness reposeful reposefully reposefulness reposer reposit repositary reposition repositor repository repossess repossession repossessor repost repostpone repot repound repour repowder repp repped repractice repray repreach reprecipitate reprecipitation repredict reprefer reprehend reprehendable reprehendatory reprehender reprehensibility reprehensible reprehensibleness reprehensibly reprehension reprehensive reprehensively reprehensory repreparation reprepare represcribe represent representability representable representamen representant representation representational representationalism representationalist representationary representationism representationist representative representatively representativeness representativeship representativity representer representment represide repress repressed repressedly represser repressible repressibly repression repressionary repressionist repressive repressively repressiveness repressment repressor repressory repressure reprice reprieval reprieve repriever reprimand reprimander reprimanding reprimandingly reprime reprimer reprint reprinter reprisal reprisalist reprise repristinate repristination reprivatization reprivatize reprivilege reproach reproachable reproachableness reproachably reproacher reproachful reproachfully reproachfulness reproachingly reproachless reproachlessness reprobacy reprobance reprobate reprobateness reprobater reprobation reprobationary reprobationer reprobative reprobatively reprobator reprobatory reproceed reprocess reproclaim reproclamation reprocurable reprocure reproduce reproduceable reproducer reproducibility reproducible reproduction reproductionist reproductive reproductively reproductiveness reproductivity reproductory reprofane reprofess reprohibit repromise repromulgate repromulgation repronounce repronunciation reproof reproofless repropagate repropitiate repropitiation reproportion reproposal repropose reprosecute reprosecution reprosper reprotect reprotection reprotest reprovable reprovableness reprovably reproval reprove reprover reprovide reprovingly reprovision reprovocation reprovoke reprune reps reptant reptatorial reptatory reptile reptiledom reptilelike reptilferous Reptilia reptilian reptiliary reptiliform reptilious reptiliousness reptilism reptility reptilivorous reptiloid republic republican republicanism republicanization republicanize republicanizer republication republish republisher republishment repuddle repudiable repudiate repudiation repudiationist repudiative repudiator repudiatory repuff repugn repugnable repugnance repugnancy repugnant repugnantly repugnantness repugnate repugnatorial repugner repullulate repullulation repullulative repullulescent repulpit repulse repulseless repulseproof repulser repulsion repulsive repulsively repulsiveness repulsory repulverize repump repunish repunishment repurchase repurchaser repurge repurification repurify repurple repurpose repursue repursuit reputability reputable reputableness reputably reputation reputationless reputative reputatively repute reputed reputedly reputeless requalification requalify requarantine requeen requench request requester requestion requiem Requienia requiescence requin requirable require requirement requirer requisite requisitely requisiteness requisition requisitionary requisitioner requisitionist requisitor requisitorial requisitory requit requitable requital requitative requite requiteful requitement requiter requiz requotation requote rerack reracker reradiation rerail reraise rerake rerank rerate reread rereader rerebrace reredos reree rereel rereeve rerefief reregister reregistration reregulate reregulation rereign reremouse rerent rerental reresupper rerig rering rerise rerival rerivet rerob rerobe reroll reroof reroot rerope reroute rerow reroyalize rerub rerummage rerun resaca resack resacrifice resaddle resail resalable resale resalt resalutation resalute resalvage resample resanctify resanction resatisfaction resatisfy resaw resawer resawyer resay resazurin rescan reschedule rescind rescindable rescinder rescindment rescissible rescission rescissory rescore rescramble rescratch rescribe rescript rescription rescriptive rescriptively rescrub rescuable rescue rescueless rescuer reseal reseam research researcher researchful researchist reseat resecrete resecretion resect resection resectional Reseda reseda Resedaceae resedaceous resee reseed reseek resegment resegmentation reseise reseiser reseize reseizer reseizure reselect reselection reself resell reseller resemblable resemblance resemblant resemble resembler resemblingly reseminate resend resene resensation resensitization resensitize resent resentationally resentence resenter resentful resentfullness resentfully resentience resentingly resentless resentment resepulcher resequent resequester resequestration reserene reservable reserval reservation reservationist reservatory reserve reserved reservedly reservedness reservee reserveful reserveless reserver reservery reservice reservist reservoir reservor reset resettable resetter resettle resettlement resever resew resex resh reshake reshape reshare resharpen reshave reshear reshearer resheathe reshelve reshift reshine reshingle reship reshipment reshipper reshoe reshoot reshoulder reshovel reshower reshrine reshuffle reshun reshunt reshut reshuttle resiccate reside residence residencer residency resident residental residenter residential residentiality residentially residentiary residentiaryship residentship resider residua residual residuary residuation residue residuent residuous residuum resift resigh resign resignal resignatary resignation resignationism resigned resignedly resignedness resignee resigner resignful resignment resile resilement resilial resiliate resilience resiliency resilient resilifer resiliometer resilition resilium resilver resin resina resinaceous resinate resinbush resiner resinfiable resing resinic resiniferous resinification resinifluous resiniform resinify resinize resink resinlike resinoelectric resinoextractive resinogenous resinoid resinol resinolic resinophore resinosis resinous resinously resinousness resinovitreous resiny resipiscence resipiscent resist resistability resistable resistableness resistance resistant resistantly resister resistful resistibility resistible resistibleness resistibly resisting resistingly resistive resistively resistiveness resistivity resistless resistlessly resistlessness resistor resitting resize resizer resketch reskin reslash reslate reslay reslide reslot resmell resmelt resmile resmooth resnap resnatch resnatron resnub resoak resoap resoften resoil resojourn resolder resole resolemnize resolicit resolidification resolidify resolubility resoluble resolubleness resolute resolutely resoluteness resolution resolutioner resolutionist resolutory resolvability resolvable resolvableness resolvancy resolve resolved resolvedly resolvedness resolvent resolver resolvible resonance resonancy resonant resonantly resonate resonator resonatory resoothe resorb resorbence resorbent resorcin resorcine resorcinism resorcinol resorcinolphthalein resorcinum resorcylic resorption resorptive resort resorter resorufin resought resound resounder resounding resoundingly resource resourceful resourcefully resourcefulness resourceless resourcelessness resoutive resow resp respace respade respan respangle resparkle respeak respect respectability respectabilize respectable respectableness respectably respectant respecter respectful respectfully respectfulness respecting respective respectively respectiveness respectless respectlessly respectlessness respectworthy respell respersive respin respirability respirable respirableness respiration respirational respirative respirator respiratored respiratorium respiratory respire respirit respirometer respite respiteless resplend resplendence resplendency resplendent resplendently resplice resplit respoke respond responde respondence respondency respondent respondentia responder responsal responsary response responseless responser responsibility responsible responsibleness responsibly responsion responsive responsively responsiveness responsivity responsorial responsory respot respray respread respring resprout respue resquare resqueak ressaidar ressala ressaldar ressaut rest restable restack restaff restain restainable restake restamp restandardization restandardize restant restart restate restatement restaur restaurant restaurate restaurateur restauration restbalk resteal resteel resteep restem restep rester resterilize restes restful restfully restfulness restharrow resthouse Restiaceae restiaceous restiad restibrachium restiff restiffen restiffener restiffness restifle restiform restigmatize restimulate restimulation resting restingly Restio Restionaceae restionaceous restipulate restipulation restipulatory restir restis restitch restitute restitution restitutionism restitutionist restitutive restitutor restitutory restive restively restiveness restless restlessly restlessness restock restopper restorable restorableness restoral restoration restorationer restorationism restorationist restorative restoratively restorativeness restorator restoratory restore restorer restow restowal restproof restraighten restrain restrainability restrained restrainedly restrainedness restrainer restraining restrainingly restraint restraintful restrap restratification restream restrengthen restress restretch restrict restricted restrictedly restrictedness restriction restrictionary restrictionist restrictive restrictively restrictiveness restrike restring restringe restringency restringent restrip restrive restroke restudy restuff restward restwards resty restyle resubject resubjection resubjugate resublimation resublime resubmerge resubmission resubmit resubordinate resubscribe resubscriber resubscription resubstitute resubstitution resucceed resuck resudation resue resuffer resufferance resuggest resuggestion resuing resuit result resultance resultancy resultant resultantly resultative resultful resultfully resulting resultingly resultive resultless resultlessly resultlessness resumability resumable resume resumer resummon resummons resumption resumptive resumptively resun resup resuperheat resupervise resupinate resupinated resupination resupine resupply resupport resuppose resupposition resuppress resuppression resurface resurge resurgence resurgency resurgent resurprise resurrect resurrectible resurrection resurrectional resurrectionary resurrectioner resurrectioning resurrectionism resurrectionist resurrectionize resurrective resurrector resurrender resurround resurvey resuscitable resuscitant resuscitate resuscitation resuscitative resuscitator resuspect resuspend resuspension reswage reswallow resward reswarm reswear resweat resweep reswell reswill reswim resyllabification resymbolization resymbolize resynthesis resynthesize ret retable retack retackle retag retail retailer retailment retailor retain retainability retainable retainableness retainal retainder retainer retainership retaining retake retaker retaliate retaliation retaliationist retaliative retaliator retaliatory retalk retama retame retan retanner retape retard retardance retardant retardate retardation retardative retardatory retarded retardence retardent retarder retarding retardingly retardive retardment retardure retare retariff retaste retation retattle retax retaxation retch reteach retecious retelegraph retelephone retell retelling retem retemper retempt retemptation retenant retender retene retent retention retentionist retentive retentively retentiveness retentivity retentor Retepora retepore Reteporidae retest retexture rethank rethatch rethaw rethe retheness rethicken rethink rethrash rethread rethreaten rethresh rethresher rethrill rethrive rethrone rethrow rethrust rethunder retia retial Retiariae retiarian retiarius retiary reticella reticello reticence reticency reticent reticently reticket reticle reticula reticular Reticularia reticularian reticularly reticulary reticulate reticulated reticulately reticulation reticulatocoalescent reticulatogranulate reticulatoramose reticulatovenose reticule reticuled reticulin reticulitis reticulocyte reticulocytosis reticuloramose Reticulosa reticulose reticulovenose reticulum retie retier retiform retighten retile retill retimber retime retin retina retinacular retinaculate retinaculum retinal retinalite retinasphalt retinasphaltum retincture retinene retinerved retinian retinispora retinite retinitis retinize retinker retinoblastoma retinochorioid retinochorioidal retinochorioiditis retinoid retinol retinopapilitis retinophoral retinophore retinoscope retinoscopic retinoscopically retinoscopist retinoscopy Retinospora retinue retinula retinular retinule retip retiracied retiracy retirade retiral retire retired retiredly retiredness retirement retirer retiring retiringly retiringness retistene retoast retold retolerate retoleration retomb retonation retook retool retooth retoother retort retortable retorted retorter retortion retortive retorture retoss retotal retouch retoucher retouching retouchment retour retourable retrace retraceable retracement retrack retract retractability retractable retractation retracted retractibility retractible retractile retractility retraction retractive retractively retractiveness retractor retrad retrade retradition retrahent retrain retral retrally retramp retrample retranquilize retranscribe retranscription retransfer retransference retransfigure retransform retransformation retransfuse retransit retranslate retranslation retransmission retransmissive retransmit retransmute retransplant retransport retransportation retravel retraverse retraxit retread retreat retreatal retreatant retreater retreatful retreating retreatingness retreative retreatment retree retrench retrenchable retrencher retrenchment retrial retribute retribution retributive retributively retributor retributory retricked retrievability retrievable retrievableness retrievably retrieval retrieve retrieveless retrievement retriever retrieverish retrim retrimmer retrip retroact retroaction retroactive retroactively retroactivity retroalveolar retroauricular retrobronchial retrobuccal retrobulbar retrocaecal retrocardiac retrocecal retrocede retrocedence retrocedent retrocervical retrocession retrocessional retrocessionist retrocessive retrochoir retroclavicular retroclusion retrocognition retrocognitive retrocolic retroconsciousness retrocopulant retrocopulation retrocostal retrocouple retrocoupler retrocurved retrodate retrodeviation retrodisplacement retroduction retrodural retroesophageal retroflected retroflection retroflex retroflexed retroflexion retroflux retroform retrofract retrofracted retrofrontal retrogastric retrogenerative retrogradation retrogradatory retrograde retrogradely retrogradient retrogradingly retrogradism retrogradist retrogress retrogression retrogressionist retrogressive retrogressively retrohepatic retroinfection retroinsular retroiridian retroject retrojection retrojugular retrolabyrinthine retrolaryngeal retrolingual retrolocation retromammary retromammillary retromandibular retromastoid retromaxillary retromigration retromingent retromingently retromorphosed retromorphosis retronasal retroperitoneal retroperitoneally retropharyngeal retropharyngitis retroplacental retroplexed retroposed retroposition retropresbyteral retropubic retropulmonary retropulsion retropulsive retroreception retrorectal retroreflective retrorenal retrorse retrorsely retroserrate retroserrulate retrospect retrospection retrospective retrospectively retrospectiveness retrospectivity retrosplenic retrostalsis retrostaltic retrosternal retrosusception retrot retrotarsal retrotemporal retrothyroid retrotracheal retrotransfer retrotransference retrotympanic retrousse retrovaccinate retrovaccination retrovaccine retroverse retroversion retrovert retrovision retroxiphoid retrude retrue retrusible retrusion retrust retry retted retter rettery retting rettory retube retuck retumble retumescence retune returban returf returfer return returnability returnable returned returner returnless returnlessly retuse retwine retwist retying retype retzian Reub Reuben Reubenites Reuchlinian Reuchlinism Reuel reundercut reundergo reundertake reundulate reundulation reune reunfold reunification reunify reunion reunionism reunionist reunionistic reunitable reunite reunitedly reuniter reunition reunitive reunpack reuphold reupholster reuplift reurge reuse reutilization reutilize reutter reutterance rev revacate revaccinate revaccination revalenta revalescence revalescent revalidate revalidation revalorization revalorize revaluate revaluation revalue revamp revamper revampment revaporization revaporize revarnish revary reve reveal revealability revealable revealableness revealed revealedly revealer revealing revealingly revealingness revealment revegetate revegetation revehent reveil reveille revel revelability revelant revelation revelational revelationer revelationist revelationize revelative revelator revelatory reveler revellent revelly revelment revelrout revelry revenant revend revender revendicate revendication reveneer revenge revengeable revengeful revengefully revengefulness revengeless revengement revenger revengingly revent reventilate reventure revenual revenue revenued revenuer rever reverable reverb reverbatory reverberant reverberate reverberation reverberative reverberator reverberatory reverbrate reverdure revere revered reverence reverencer reverend reverendly reverendship reverent reverential reverentiality reverentially reverentialness reverently reverentness reverer reverie reverification reverify reverist revers reversability reversable reversal reverse reversed reversedly reverseful reverseless reversely reversement reverser reverseways reversewise reversi reversibility reversible reversibleness reversibly reversification reversifier reversify reversing reversingly reversion reversionable reversional reversionally reversionary reversioner reversionist reversis reversist reversive reverso revert revertal reverter revertibility revertible revertive revertively revery revest revestiary revestry revet revete revetement revetment revibrate revibration revibrational revictorious revictory revictual revictualment revie review reviewability reviewable reviewage reviewal reviewer revieweress reviewish reviewless revigorate revigoration revile revilement reviler reviling revilingly revindicate revindication reviolate reviolation revirescence revirescent Revisable revisable revisableness revisal revise revisee reviser revisership revisible revision revisional revisionary revisionism revisionist revisit revisitant revisitation revisor revisory revisualization revisualize revitalization revitalize revitalizer revivability revivable revivably revival revivalism revivalist revivalistic revivalize revivatory revive revivement reviver revivification revivifier revivify reviving revivingly reviviscence reviviscency reviviscent reviviscible revivor revocability revocable revocableness revocably revocation revocative revocatory revoice revokable revoke revokement revoker revokingly revolant revolatilize revolt revolter revolting revoltingly revoltress revolubility revoluble revolubly revolunteer revolute revoluted revolution revolutional revolutionally revolutionarily revolutionariness revolutionary revolutioneering revolutioner revolutionism revolutionist revolutionize revolutionizement revolutionizer revolvable revolvably revolve revolvement revolvency revolver revolving revolvingly revomit revote revue revuette revuist revulsed revulsion revulsionary revulsive revulsively rewade rewager rewake rewaken rewall rewallow reward rewardable rewardableness rewardably rewardedly rewarder rewardful rewardfulness rewarding rewardingly rewardless rewardproof rewarehouse rewarm rewarn rewash rewater rewave rewax rewaybill rewayle reweaken rewear reweave rewed reweigh reweigher reweight rewelcome reweld rewend rewet rewhelp rewhirl rewhisper rewhiten rewiden rewin rewind rewinder rewirable rewire rewish rewithdraw rewithdrawal rewood reword rework reworked rewound rewove rewoven rewrap rewrite rewriter Rex rex rexen reyield Reynard Reynold reyoke reyouth rezbanyite rhabdite rhabditiform Rhabditis rhabdium Rhabdocarpum Rhabdocoela rhabdocoelan rhabdocoele Rhabdocoelida rhabdocoelidan rhabdocoelous rhabdoid rhabdoidal rhabdolith rhabdom rhabdomal rhabdomancer rhabdomancy rhabdomantic rhabdomantist Rhabdomonas rhabdomyoma rhabdomyosarcoma rhabdomysarcoma rhabdophane rhabdophanite Rhabdophora rhabdophoran Rhabdopleura rhabdopod rhabdos rhabdosome rhabdosophy rhabdosphere rhabdus Rhacianectes Rhacomitrium Rhacophorus Rhadamanthine Rhadamanthus Rhadamanthys Rhaetian Rhaetic rhagades rhagadiform rhagiocrin rhagionid Rhagionidae rhagite Rhagodia rhagon rhagonate rhagose rhamn Rhamnaceae rhamnaceous rhamnal Rhamnales rhamnetin rhamninase rhamninose rhamnite rhamnitol rhamnohexite rhamnohexitol rhamnohexose rhamnonic rhamnose rhamnoside Rhamnus rhamphoid Rhamphorhynchus Rhamphosuchus rhamphotheca Rhapidophyllum Rhapis rhapontic rhaponticin rhapontin rhapsode rhapsodic rhapsodical rhapsodically rhapsodie rhapsodism rhapsodist rhapsodistic rhapsodize rhapsodomancy rhapsody Rhaptopetalaceae rhason rhasophore rhatania rhatany rhe Rhea rhea rheadine Rheae rhebok rhebosis rheeboc rheebok rheen rhegmatype rhegmatypy Rhegnopteri rheic Rheidae Rheiformes rhein rheinic rhema rhematic rhematology rheme Rhemish Rhemist Rhenish rhenium rheobase rheocrat rheologist rheology rheometer rheometric rheometry rheophile rheophore rheophoric rheoplankton rheoscope rheoscopic rheostat rheostatic rheostatics rheotactic rheotan rheotaxis rheotome rheotrope rheotropic rheotropism rhesian rhesus rhetor rhetoric rhetorical rhetorically rhetoricalness rhetoricals rhetorician rhetorize Rheum rheum rheumarthritis rheumatalgia rheumatic rheumatical rheumatically rheumaticky rheumatism rheumatismal rheumatismoid rheumative rheumatiz rheumatize rheumatoid rheumatoidal rheumatoidally rheumed rheumic rheumily rheuminess rheumy Rhexia rhexis rhigolene rhigosis rhigotic Rhina rhinal rhinalgia Rhinanthaceae Rhinanthus rhinarium rhincospasm rhine Rhineland Rhinelander rhinencephalic rhinencephalon rhinencephalous rhinenchysis Rhineodon Rhineodontidae rhinestone Rhineura rhineurynter Rhinidae rhinion rhinitis rhino Rhinobatidae Rhinobatus rhinobyon rhinocaul rhinocele rhinocelian rhinocerial rhinocerian rhinocerine rhinoceroid rhinoceros rhinoceroslike rhinocerotic Rhinocerotidae rhinocerotiform rhinocerotine rhinocerotoid rhinochiloplasty Rhinoderma rhinodynia rhinogenous rhinolalia rhinolaryngology rhinolaryngoscope rhinolite rhinolith rhinolithic rhinological rhinologist rhinology rhinolophid Rhinolophidae rhinolophine rhinopharyngeal rhinopharyngitis rhinopharynx Rhinophidae Rhinophis rhinophonia rhinophore rhinophyma rhinoplastic rhinoplasty rhinopolypus Rhinoptera Rhinopteridae rhinorrhagia rhinorrhea rhinorrheal rhinoscleroma rhinoscope rhinoscopic rhinoscopy rhinosporidiosis Rhinosporidium rhinotheca rhinothecal Rhinthonic Rhinthonica rhipidate rhipidion Rhipidistia rhipidistian rhipidium Rhipidoglossa rhipidoglossal rhipidoglossate Rhipidoptera rhipidopterous rhipiphorid Rhipiphoridae Rhipiptera rhipipteran rhipipterous Rhipsalis Rhiptoglossa rhizanthous rhizautoicous Rhizina Rhizinaceae rhizine rhizinous Rhizobium rhizocarp Rhizocarpeae rhizocarpean rhizocarpian rhizocarpic rhizocarpous rhizocaul rhizocaulus Rhizocephala rhizocephalan rhizocephalous rhizocorm Rhizoctonia rhizoctoniose rhizodermis Rhizodus Rhizoflagellata rhizoflagellate rhizogen rhizogenetic rhizogenic rhizogenous rhizoid rhizoidal rhizoma rhizomatic rhizomatous rhizome rhizomelic rhizomic rhizomorph rhizomorphic rhizomorphoid rhizomorphous rhizoneure rhizophagous rhizophilous Rhizophora Rhizophoraceae rhizophoraceous rhizophore rhizophorous rhizophyte rhizoplast rhizopod Rhizopoda rhizopodal rhizopodan rhizopodist rhizopodous Rhizopogon Rhizopus rhizosphere Rhizostomae Rhizostomata rhizostomatous rhizostome rhizostomous Rhizota rhizotaxis rhizotaxy rhizote rhizotic rhizotomi rhizotomy rho Rhoda rhodaline Rhodamine rhodamine rhodanate Rhodanian rhodanic rhodanine rhodanthe rhodeose Rhodes Rhodesian Rhodesoid rhodeswood Rhodian rhodic rhoding rhodinol rhodite rhodium rhodizite rhodizonic Rhodobacteriaceae Rhodobacterioideae rhodochrosite Rhodococcus Rhodocystis rhodocyte rhododendron rhodolite Rhodomelaceae rhodomelaceous rhodonite Rhodope rhodophane Rhodophyceae rhodophyceous rhodophyll Rhodophyllidaceae Rhodophyta rhodoplast rhodopsin Rhodora Rhodoraceae rhodorhiza rhodosperm Rhodospermeae rhodospermin rhodospermous Rhodospirillum Rhodothece Rhodotypos Rhodymenia Rhodymeniaceae rhodymeniaceous Rhodymeniales Rhoeadales Rhoecus Rhoeo rhomb rhombencephalon rhombenporphyr rhombic rhombical rhombiform rhomboclase rhomboganoid Rhomboganoidei rhombogene rhombogenic rhombogenous rhombohedra rhombohedral rhombohedrally rhombohedric rhombohedron rhomboid rhomboidal rhomboidally rhomboideus rhomboidly rhomboquadratic rhomborectangular rhombos rhombovate Rhombozoa rhombus rhonchal rhonchial rhonchus rhopalic rhopalism rhopalium Rhopalocera rhopaloceral rhopalocerous Rhopalura rhotacism rhotacismus rhotacistic rhotacize rhubarb rhubarby rhumb rhumba rhumbatron Rhus rhyacolite rhyme rhymeless rhymelet rhymemaker rhymemaking rhymeproof rhymer rhymery rhymester rhymewise rhymic rhymist rhymy Rhynchobdellae Rhynchobdellida Rhynchocephala Rhynchocephali Rhynchocephalia rhynchocephalian rhynchocephalic rhynchocephalous Rhynchocoela rhynchocoelan rhynchocoelic rhynchocoelous rhyncholite Rhynchonella Rhynchonellacea Rhynchonellidae rhynchonelloid Rhynchophora rhynchophoran rhynchophore rhynchophorous Rhynchopinae Rhynchops Rhynchosia Rhynchospora Rhynchota rhynchotal rhynchote rhynchotous rhynconellid Rhyncostomi Rhynia Rhyniaceae Rhynocheti Rhynsburger rhyobasalt rhyodacite rhyolite rhyolitic rhyotaxitic rhyparographer rhyparographic rhyparographist rhyparography rhypography rhyptic rhyptical rhysimeter Rhyssa rhythm rhythmal rhythmic rhythmical rhythmicality rhythmically rhythmicity rhythmicize rhythmics rhythmist rhythmizable rhythmization rhythmize rhythmless rhythmometer rhythmopoeia rhythmproof Rhytidodon rhytidome rhytidosis Rhytina Rhytisma rhyton ria rial riancy riant riantly riata rib ribald ribaldish ribaldly ribaldrous ribaldry riband Ribandism Ribandist ribandlike ribandmaker ribandry ribat ribaudequin ribaudred ribband ribbandry ribbed ribber ribbet ribbidge ribbing ribble ribbon ribbonback ribboner ribbonfish Ribbonism ribbonlike ribbonmaker Ribbonman ribbonry ribbonweed ribbonwood ribbony ribby ribe Ribes Ribhus ribless riblet riblike riboflavin ribonic ribonuclease ribonucleic ribose ribroast ribroaster ribroasting ribskin ribspare Ribston ribwork ribwort Ricardian Ricardianism Riccia Ricciaceae ricciaceous Ricciales rice ricebird riceland ricer ricey rich Richard Richardia Richardsonia richdom Richebourg richellite richen riches richesse richling richly Richmond Richmondena richness richt richterite richweed ricin ricine ricinelaidic ricinelaidinic ricinic ricinine ricininic ricinium ricinoleate ricinoleic ricinolein ricinolic Ricinulei Ricinus ricinus rick rickardite ricker ricketily ricketiness ricketish rickets Rickettsia rickettsial Rickettsiales rickettsialpox rickety rickey rickle rickmatic rickrack ricksha rickshaw rickstaddle rickstand rickstick rickyard ricochet ricolettaite ricrac rictal rictus rid ridable ridableness ridably riddam riddance riddel ridden ridder ridding riddle riddlemeree riddler riddling riddlingly riddlings ride rideable rideau riden rident rider ridered rideress riderless ridge ridgeband ridgeboard ridgebone ridged ridgel ridgelet ridgelike ridgeling ridgepiece ridgeplate ridgepole ridgepoled ridger ridgerope ridgetree ridgeway ridgewise ridgil ridging ridgingly ridgling ridgy ridibund ridicule ridiculer ridiculize ridiculosity ridiculous ridiculously ridiculousness riding ridingman ridotto rie riebeckite riem Riemannean Riemannian riempie rier Riesling rife rifely rifeness Riff riff Riffi Riffian riffle riffler riffraff Rifi Rifian rifle riflebird rifledom rifleman riflemanship rifleproof rifler riflery rifleshot rifling rift rifter riftless rifty rig rigadoon rigamajig rigamarole rigation rigbane Rigel Rigelian rigescence rigescent riggald rigger rigging riggish riggite riggot right rightabout righten righteous righteously righteousness righter rightful rightfully rightfulness rightheaded righthearted rightist rightle rightless rightlessness rightly rightmost rightness righto rightship rightward rightwardly rightwards righty rigid rigidify rigidist rigidity rigidly rigidness rigidulous rigling rigmaree rigmarole rigmarolery rigmarolic rigmarolish rigmarolishly rignum rigol rigolette rigor rigorism rigorist rigoristic rigorous rigorously rigorousness rigsby rigsdaler Rigsmaal Rigsmal rigwiddie rigwiddy Rikari rikisha rikk riksha rikshaw Riksmaal Riksmal rilawa rile riley rill rillet rillett rillette rillock rillstone rilly rim rima rimal rimate rimbase rime rimeless rimer rimester rimfire rimiform rimland rimless rimmaker rimmaking rimmed rimmer rimose rimosely rimosity rimous rimpi rimple rimption rimrock rimu rimula rimulose rimy Rinaldo rinceau rinch rincon Rind rind Rinde rinded rinderpest rindle rindless rindy rine ring ringable Ringatu ringbark ringbarker ringbill ringbird ringbolt ringbone ringboned ringcraft ringdove ringe ringed ringent ringer ringeye ringgiver ringgiving ringgoer ringhals ringhead ringiness ringing ringingly ringingness ringite ringle ringlead ringleader ringleaderless ringleadership ringless ringlet ringleted ringlety ringlike ringmaker ringmaking ringman ringmaster ringneck ringsail ringside ringsider ringster ringtail ringtaw ringtime ringtoss ringwalk ringwall ringwise ringworm ringy rink rinka rinker rinkite rinncefada rinneite rinner rinsable rinse rinser rinsing rinthereout rintherout Rio rio riot rioter rioting riotingly riotist riotistic riotocracy riotous riotously riotousness riotproof riotry rip ripa ripal riparial riparian Riparii riparious ripcord ripe ripelike ripely ripen ripener ripeness ripening ripeningly riper ripgut ripicolous ripidolite ripienist ripieno ripier ripost riposte rippable ripper ripperman rippet rippier ripping rippingly rippingness rippit ripple rippleless rippler ripplet rippling ripplingly ripply rippon riprap riprapping ripsack ripsaw ripsnorter ripsnorting Ripuarian ripup riroriro risala risberm rise risen riser rishi rishtadar risibility risible risibleness risibles risibly rising risk risker riskful riskfulness riskily riskiness riskish riskless riskproof risky risorial risorius risp risper risque risquee Riss rissel risser Rissian rissle Rissoa rissoid Rissoidae rist ristori rit Rita rita ritardando rite riteless ritelessness ritling ritornel ritornelle ritornello Ritschlian Ritschlianism rittingerite ritual ritualism ritualist ritualistic ritualistically rituality ritualize ritualless ritually ritzy riva rivage rival rivalable rivaless rivalism rivality rivalize rivalless rivalrous rivalry rivalship rive rivel rivell riven river riverain riverbank riverbush riverdamp rivered riverhead riverhood riverine riverish riverless riverlet riverlike riverling riverly riverman riverscape riverside riversider riverward riverwards riverwash riverway riverweed riverwise rivery rivet riveter rivethead riveting rivetless rivetlike Rivina riving rivingly Rivinian rivose Rivularia Rivulariaceae rivulariaceous rivulation rivulet rivulose rix rixatrix rixy riyal riziform rizzar rizzle rizzom rizzomed rizzonite Ro roach roachback road roadability roadable roadbed roadblock roadbook roadcraft roaded roader roadfellow roadhead roadhouse roading roadite roadless roadlessness roadlike roadman roadmaster roadside roadsider roadsman roadstead roadster roadstone roadtrack roadway roadweed roadwise roadworthiness roadworthy roam roamage roamer roaming roamingly roan roanoke roar roarer roaring roaringly roast roastable roaster roasting roastingly Rob rob robalito robalo roband robber robberproof robbery robbin robbing robe robeless Robenhausian rober roberd Roberdsman Robert Robigalia Robigus Robin robin robinet robing Robinia robinin robinoside roble robomb roborant roborate roboration roborative roborean roboreous robot robotesque robotian robotism robotistic robotization robotize robotlike robotry robur roburite robust robustful robustfully robustfulness robustic robusticity robustious robustiously robustiousness robustity robustly robustness roc rocambole Roccella Roccellaceae roccellic roccellin roccelline Rochea rochelime Rochelle rocher rochet rocheted rock rockable rockably rockaby rockabye rockallite Rockaway rockaway rockbell rockberry rockbird rockborn rockbrush rockcist rockcraft rockelay rocker rockery rocket rocketeer rocketer rocketlike rocketor rocketry rockety rockfall rockfish rockfoil rockhair rockhearted Rockies rockiness rocking rockingly rockish rocklay rockless rocklet rocklike rockling rockman rockrose rockshaft rockslide rockstaff rocktree rockward rockwards rockweed rockwood rockwork rocky rococo Rocouyenne rocta rod rodd roddikin roddin rodding rode rodent Rodentia rodential rodentially rodentian rodenticidal rodenticide rodentproof rodeo Roderic Roderick rodge rodham Rodinal Rodinesque roding rodingite rodknight rodless rodlet rodlike rodmaker rodman rodney Rodolph Rodolphus rodomont rodomontade rodomontadist rodomontador rodsman rodster rodwood roe roeblingite roebuck roed roelike roentgen roentgenism roentgenization roentgenize roentgenogram roentgenograph roentgenographic roentgenographically roentgenography roentgenologic roentgenological roentgenologically roentgenologist roentgenology roentgenometer roentgenometry roentgenoscope roentgenoscopic roentgenoscopy roentgenotherapy roentgentherapy roer roestone roey rog rogan rogation Rogationtide rogative rogatory Roger roger Rogero rogersite roggle rogue roguedom rogueling roguery rogueship roguing roguish roguishly roguishness rohan Rohilla rohob rohun rohuna roi roid roil roily Roist roister roisterer roistering roisteringly roisterly roisterous roisterously roit Rok roka roke rokeage rokee rokelay roker rokey roky Roland Rolandic role roleo roll rollable rollback rolled rollejee roller rollerer rollermaker rollermaking rollerman rollerskater rollerskating rolley rolleyway rolleywayman rolliche rollichie rollick rollicker rollicking rollickingly rollickingness rollicksome rollicksomeness rollicky rolling rollingly Rollinia rollix rollmop Rollo rollock rollway roloway Romaean Romagnese Romagnol Romagnole Romaic romaika romaine Romaji romal Roman Romance romance romancealist romancean romanceful romanceish romanceishness romanceless romancelet romancelike romancemonger romanceproof romancer romanceress romancical romancing romancist romancy Romandom Romane Romanes Romanese Romanesque Romanhood Romanian Romanic Romaniform Romanish Romanism Romanist Romanistic Romanite Romanity romanium Romanization Romanize Romanizer Romanly Romansch Romansh romantic romantical romanticalism romanticality romantically romanticalness romanticism romanticist romanticistic romanticity romanticize romanticly romanticness romantism romantist Romany romanza romaunt rombos rombowline Rome romeite Romeo romerillo romero Romescot Romeshot Romeward Romewards Romic Romipetal Romish Romishly Romishness rommack Rommany Romney Romneya romp romper romping rompingly rompish rompishly rompishness rompu rompy Romulian Romulus roncador Roncaglian roncet ronco rond rondache rondacher rondawel ronde rondeau rondel rondelet Rondeletia rondelier rondelle rondellier rondino rondle rondo rondoletto rondure rone Rong Ronga rongeur ronquil Ronsardian Ronsardism Ronsardist Ronsardize Ronsdorfer Ronsdorfian rontgen ronyon rood roodebok roodle roodstone roof roofage roofer roofing roofless rooflet rooflike roofman rooftree roofward roofwise roofy rooibok rooinek rook rooker rookeried rookery rookie rookish rooklet rooklike rooky rool room roomage roomed roomer roomful roomie roomily roominess roomkeeper roomless roomlet roommate roomstead roomth roomthily roomthiness roomthy roomward roomy roon roorback roosa Roosevelt Rooseveltian roost roosted rooster roosterfish roosterhood roosterless roosters roostership root rootage rootcap rooted rootedly rootedness rooter rootery rootfast rootfastness roothold rootiness rootle rootless rootlessness rootlet rootlike rootling rootstalk rootstock rootwalt rootward rootwise rootworm rooty roove ropable rope ropeable ropeband ropebark ropedance ropedancer ropedancing ropelayer ropelaying ropelike ropemaker ropemaking ropeman roper roperipe ropery ropes ropesmith ropetrick ropewalk ropewalker ropeway ropework ropily ropiness roping ropish ropishness ropp ropy roque roquelaure roquer roquet roquette roquist roral roratorio Rori roric Roridula Roridulaceae roriferous rorifluent Roripa Rorippa roritorious rorqual rorty rorulent rory Rosa Rosabel Rosabella Rosaceae rosacean rosaceous rosal Rosales Rosalia Rosalie Rosalind Rosaline Rosamond rosanilin rosaniline rosarian rosario rosarium rosaruby rosary rosated Roschach roscherite roscid roscoelite rose roseal roseate roseately rosebay rosebud rosebush rosed rosedrop rosefish rosehead rosehill rosehiller roseine rosel roseless roselet roselike roselite rosella rosellate roselle Rosellinia rosemary Rosenbergia rosenbuschite roseola roseolar roseoliform roseolous roseous roseroot rosery roset rosetan rosetangle rosetime Rosetta rosette rosetted rosetty rosetum rosety roseways rosewise rosewood rosewort Rosicrucian Rosicrucianism rosied rosier rosieresite rosilla rosillo rosily rosin rosinate rosinduline Rosine rosiness rosinous rosinweed rosinwood rosiny rosland rosmarine Rosmarinus Rosminian Rosminianism rosoli rosolic rosolio rosolite rosorial ross rosser rossite rostel rostellar Rostellaria rostellarian rostellate rostelliform rostellum roster rostra rostral rostrally rostrate rostrated rostriferous rostriform rostroantennary rostrobranchial rostrocarinate rostrocaudal rostroid rostrolateral rostrular rostrulate rostrulum rostrum rosular rosulate rosy rot rota rotacism Rotal rotal Rotala Rotalia rotalian rotaliform rotaliiform rotaman rotameter rotan Rotanev rotang Rotarian Rotarianism rotarianize Rotary rotary rotascope rotatable rotate rotated rotating rotation rotational rotative rotatively rotativism rotatodentate rotatoplane rotator Rotatoria rotatorian rotatory rotch rote rotella rotenone roter rotge rotgut rother rothermuck rotifer Rotifera rotiferal rotiferan rotiferous rotiform rotisserie roto rotograph rotogravure rotor rotorcraft rotproof Rotse rottan rotten rottenish rottenly rottenness rottenstone rotter rotting rottle rottlera rottlerin rottock rottolo rotula rotulad rotular rotulet rotulian rotuliform rotulus rotund rotunda rotundate rotundifoliate rotundifolious rotundiform rotundify rotundity rotundly rotundness rotundo rotundotetragonal roub roucou roud roue rouelle rouge rougeau rougeberry rougelike rougemontite rougeot rough roughage roughcast roughcaster roughdraft roughdraw roughdress roughdry roughen roughener rougher roughet roughhearted roughheartedness roughhew roughhewer roughhewn roughhouse roughhouser roughhousing roughhousy roughie roughing roughings roughish roughishly roughishness roughleg roughly roughness roughometer roughride roughrider roughroot roughscuff roughsetter roughshod roughslant roughsome roughstring roughstuff roughtail roughtailed roughwork roughwrought roughy rougy rouille rouky roulade rouleau roulette Rouman Roumeliote roun rounce rounceval rouncy round roundabout roundaboutly roundaboutness rounded roundedly roundedness roundel roundelay roundeleer rounder roundfish roundhead roundheaded roundheadedness roundhouse rounding roundish roundishness roundlet roundline roundly roundmouthed roundness roundnose roundnosed roundridge roundseam roundsman roundtail roundtop roundtree roundup roundwise roundwood roundworm roundy roup rouper roupet roupily roupingwife roupit roupy rouse rouseabout rousedness rousement rouser rousing rousingly Rousseau Rousseauan Rousseauism Rousseauist Rousseauistic Rousseauite Roussellian roussette Roussillon roust roustabout rouster rousting rout route router routh routhercock routhie routhiness routhy routinary routine routineer routinely routing routinish routinism routinist routinization routinize routivarite routous routously rouvillite rove rover rovet rovetto roving rovingly rovingness row rowable rowan rowanberry rowboat rowdily rowdiness rowdy rowdydow rowdydowdy rowdyish rowdyishly rowdyishness rowdyism rowdyproof rowed rowel rowelhead rowen Rowena rower rowet rowiness rowing Rowland rowlandite Rowleian rowlet Rowley Rowleyan rowlock rowport rowty rowy rox Roxana Roxane Roxburgh Roxburghiaceae Roxbury Roxolani Roxy roxy Roy royal royale royalet royalism royalist royalization royalize royally royalty Royena royet royetness royetous royetously Roystonea royt rozum Rua ruach ruana rub rubasse rubato rubbed rubber rubberer rubberize rubberless rubberneck rubbernecker rubbernose rubbers rubberstone rubberwise rubbery rubbing rubbingstone rubbish rubbishing rubbishingly rubbishly rubbishry rubbishy rubble rubbler rubblestone rubblework rubbly rubdown Rube rubedinous rubedity rubefacient rubefaction rubelet rubella rubelle rubellite rubellosis Rubensian rubeola rubeolar rubeoloid ruberythric ruberythrinic rubescence rubescent Rubia Rubiaceae rubiaceous Rubiales rubianic rubiate rubiator rubican rubicelle Rubicola Rubicon rubiconed rubicund rubicundity rubidic rubidine rubidium rubied rubific rubification rubificative rubify rubiginous rubijervine rubine rubineous rubious ruble rublis rubor rubric rubrica rubrical rubricality rubrically rubricate rubrication rubricator rubrician rubricism rubricist rubricity rubricize rubricose rubrific rubrification rubrify rubrisher rubrospinal rubstone Rubus ruby rubylike rubytail rubythroat rubywise rucervine Rucervus Ruchbah ruche ruching ruck rucker ruckle ruckling rucksack rucksey ruckus rucky ructation ruction rud rudas Rudbeckia rudd rudder rudderhead rudderhole rudderless rudderlike rudderpost rudderstock ruddied ruddily ruddiness ruddle ruddleman ruddock ruddy ruddyish rude rudely rudeness rudented rudenture ruderal rudesby Rudesheimer rudge rudiment rudimental rudimentarily rudimentariness rudimentary rudimentation rudish Rudista Rudistae rudistan rudistid rudity Rudmasday Rudolph Rudolphus rue rueful ruefully ruefulness ruelike ruelle Ruellia ruen ruer ruesome ruesomeness ruewort rufescence rufescent ruff ruffable ruffed ruffer ruffian ruffianage ruffiandom ruffianhood ruffianish ruffianism ruffianize ruffianlike ruffianly ruffiano ruffin ruffle ruffled ruffleless rufflement ruffler rufflike ruffliness ruffling ruffly ruficarpous ruficaudate ruficoccin ruficornate rufigallic rufoferruginous rufofulvous rufofuscous rufopiceous rufotestaceous rufous rufter rufulous Rufus rufus rug ruga rugate Rugbeian Rugby rugged ruggedly ruggedness Rugger rugging ruggle ruggy rugheaded ruglike rugmaker rugmaking Rugosa rugosa rugose rugosely rugosity rugous rugulose ruin ruinable ruinate ruination ruinatious ruinator ruined ruiner ruing ruiniform ruinlike ruinous ruinously ruinousness ruinproof Rukbat rukh rulable Rulander rule ruledom ruleless rulemonger ruler rulership ruling rulingly rull ruller rullion Rum rum rumal Ruman Rumanian rumbelow rumble rumblegarie rumblegumption rumblement rumbler rumbling rumblingly rumbly rumbo rumbooze rumbowline rumbowling rumbullion rumbumptious rumbustical rumbustious rumbustiousness rumchunder Rumelian rumen rumenitis rumenocentesis rumenotomy Rumex rumfustian rumgumption rumgumptious ruminal ruminant Ruminantia ruminantly ruminate ruminating ruminatingly rumination ruminative ruminatively ruminator rumkin rumless rumly rummage rummager rummagy rummer rummily rumminess rummish rummy rumness rumney rumor rumorer rumormonger rumorous rumorproof rumourmonger rump rumpad rumpadder rumpade Rumper rumple rumpless rumply rumpscuttle rumpuncheon rumpus rumrunner rumrunning rumshop rumswizzle rumtytoo run runabout runagate runaround runaway runback runboard runby runch runchweed runcinate rundale Rundi rundle rundlet rune runecraft runed runefolk runeless runelike runer runesmith runestaff runeword runfish rung runghead rungless runholder runic runically runiform runite runkeeper runkle runkly runless runlet runman runnable runnel runner runnet running runningly runny runoff runologist runology runout runover runproof runrig runround runt runted runtee runtiness runtish runtishly runtishness runty runway rupa rupee Rupert rupestral rupestrian rupestrine rupia rupiah rupial Rupicapra Rupicaprinae rupicaprine Rupicola Rupicolinae rupicoline rupicolous rupie rupitic Ruppia ruptile ruption ruptive ruptuary rupturable rupture ruptured rupturewort rural ruralism ruralist ruralite rurality ruralization ruralize rurally ruralness rurban ruridecanal rurigenous Ruritania Ruritanian ruru Rus Rusa Ruscus ruse rush rushbush rushed rushen rusher rushiness rushing rushingly rushingness rushland rushlight rushlighted rushlike rushlit rushy Rusin rusine rusk ruskin Ruskinian rusky rusma rusot ruspone Russ russel Russelia Russellite Russene russet russeting russetish russetlike russety Russia russia Russian Russianism Russianist Russianization Russianize Russification Russificator Russifier Russify Russine Russism Russniak Russolatrous Russolatry Russomania Russomaniac Russomaniacal Russophile Russophilism Russophilist Russophobe Russophobia Russophobiac Russophobism Russophobist russud Russula rust rustable rustful rustic rustical rustically rusticalness rusticate rustication rusticator rusticial rusticism rusticity rusticize rusticly rusticness rusticoat rustily rustiness rustle rustler rustless rustling rustlingly rustlingness rustly rustproof rustre rustred rusty rustyback rustyish ruswut rut Ruta rutabaga Rutaceae rutaceous rutaecarpine rutate rutch rutelian Rutelinae Ruth ruth ruthenate Ruthene Ruthenian ruthenic ruthenious ruthenium ruthenous ruther rutherford rutherfordine rutherfordite ruthful ruthfully ruthfulness ruthless ruthlessly ruthlessness rutic rutidosis rutilant rutilated rutile rutilous rutin rutinose Rutiodon ruttee rutter ruttiness ruttish ruttishly ruttishness rutty Rutuli rutyl rutylene ruvid rux rvulsant ryal ryania rybat ryder rye ryen Rymandra ryme Rynchospora rynchosporous rynd rynt ryot ryotwar ryotwari rype rypeck rytidosis Rytina Ryukyu S s sa saa Saan Saarbrucken sab Saba sabadilla sabadine sabadinine Sabaean Sabaeanism Sabaeism sabaigrass Sabaism Sabaist Sabal Sabalaceae sabalo Saban sabanut Sabaoth Sabathikos Sabazian Sabazianism Sabazios sabbat Sabbatarian Sabbatarianism Sabbatary Sabbatean Sabbath sabbath Sabbathaian Sabbathaic Sabbathaist Sabbathbreaker Sabbathbreaking Sabbathism Sabbathize Sabbathkeeper Sabbathkeeping Sabbathless Sabbathlike Sabbathly Sabbatia sabbatia Sabbatian Sabbatic sabbatic Sabbatical sabbatical Sabbatically Sabbaticalness sabbatine sabbatism Sabbatist Sabbatization Sabbatize sabbaton sabbitha sabdariffa sabe sabeca Sabella sabella sabellan Sabellaria sabellarian Sabelli Sabellian Sabellianism Sabellianize sabellid Sabellidae sabelloid saber saberbill sabered saberleg saberlike saberproof sabertooth saberwing Sabia Sabiaceae sabiaceous Sabian Sabianism sabicu Sabik Sabina sabina Sabine sabine Sabinian sabino Sabir sable sablefish sableness sably sabora saboraim sabot sabotage saboted saboteur sabotine Sabra sabra sabretache Sabrina Sabromin sabromin Sabuja sabuline sabulite sabulose sabulosity sabulous sabulum saburra saburral saburration sabutan sabzi Sac sac Sacae sacalait sacaline sacaton sacatra sacbrood saccade saccadic Saccammina saccate saccated Saccha saccharamide saccharase saccharate saccharated saccharephidrosis saccharic saccharide sacchariferous saccharification saccharifier saccharify saccharilla saccharimeter saccharimetric saccharimetrical saccharimetry saccharin saccharinate saccharinated saccharine saccharineish saccharinely saccharinic saccharinity saccharization saccharize saccharobacillus saccharobiose saccharobutyric saccharoceptive saccharoceptor saccharochemotropic saccharocolloid saccharofarinaceous saccharogalactorrhea saccharogenic saccharohumic saccharoid saccharoidal saccharolactonic saccharolytic saccharometabolic saccharometabolism saccharometer saccharometric saccharometry saccharomucilaginous Saccharomyces saccharomyces Saccharomycetaceae saccharomycetaceous Saccharomycetales saccharomycete Saccharomycetes saccharomycetic saccharomycosis saccharon saccharonate saccharone saccharonic saccharophylly saccharorrhea saccharoscope saccharose saccharostarchy saccharosuria saccharotriose saccharous saccharulmic saccharulmin Saccharum saccharum saccharuria sacciferous sacciform Saccobranchiata saccobranchiate Saccobranchus saccoderm Saccolabium saccolabium saccomyian saccomyid Saccomyidae Saccomyina saccomyine saccomyoid Saccomyoidea saccomyoidean Saccomys Saccopharyngidae Saccopharynx Saccorhiza saccos saccular sacculate sacculated sacculation saccule Sacculina sacculoutricular sacculus saccus sacellum sacerdocy sacerdotage sacerdotal sacerdotalism sacerdotalist sacerdotalize sacerdotally sacerdotical sacerdotism sachamaker sachem sachemdom sachemic sachemship sachet Sacheverell Sacian sack sackage sackamaker sackbag sackbut sackcloth sackclothed sackdoudle sacked sacken sacker sackful sacking sackless sacklike sackmaker sackmaking sackman sacktime saclike saco sacope sacque sacra sacrad sacral sacralgia sacralization sacrament sacramental sacramentalism sacramentalist sacramentality sacramentally sacramentalness Sacramentarian sacramentarian sacramentarianism sacramentarist Sacramentary sacramentary sacramenter sacramentism sacramentize Sacramento sacramentum sacraria sacrarial sacrarium sacrectomy sacred sacredly sacredness sacrificable sacrificant Sacrificati sacrification sacrificator sacrificatory sacrificature sacrifice sacrificer sacrificial sacrificially sacrificing sacrilege sacrileger sacrilegious sacrilegiously sacrilegiousness sacrilegist sacrilumbal sacrilumbalis sacring Sacripant sacrist sacristan sacristy sacro sacrocaudal sacrococcygeal sacrococcygean sacrococcygeus sacrococcyx sacrocostal sacrocotyloid sacrocotyloidean sacrocoxalgia sacrocoxitis sacrodorsal sacrodynia sacrofemoral sacroiliac sacroinguinal sacroischiac sacroischiadic sacroischiatic sacrolumbal sacrolumbalis sacrolumbar sacropectineal sacroperineal sacropictorial sacroposterior sacropubic sacrorectal sacrosanct sacrosanctity sacrosanctness sacrosciatic sacrosecular sacrospinal sacrospinalis sacrospinous sacrotomy sacrotuberous sacrovertebral sacrum sad Sadachbia Sadalmelik Sadalsuud sadden saddening saddeningly saddik saddirham saddish saddle saddleback saddlebag saddlebow saddlecloth saddled saddleleaf saddleless saddlelike saddlenose saddler saddlery saddlesick saddlesore saddlesoreness saddlestead saddletree saddlewise saddling Sadducaic Sadducean Sadducee Sadduceeism Sadduceeist Sadducism Sadducize sade sadh sadhe sadhearted sadhu sadic Sadie sadiron sadism sadist sadistic sadistically Sadite sadly sadness sado sadomasochism Sadr sadr saecula saeculum Saeima saernaite saeter saeume Safar safari Safavi Safawid safe safeblower safeblowing safebreaker safebreaking safecracking safeguard safeguarder safehold safekeeper safekeeping safelight safely safemaker safemaking safen safener safeness safety Saffarian Saffarid saffian safflor safflorite safflow safflower saffron saffroned saffrontree saffronwood saffrony Safi Safine Safini safranin safranine safranophile safrole saft sag saga sagaciate sagacious sagaciously sagaciousness sagacity Sagai sagaie sagaman sagamite sagamore sagapenum sagathy sage sagebrush sagebrusher sagebush sageleaf sagely sagene sageness sagenite sagenitic Sageretia sagerose sageship sagewood sagger sagging saggon saggy saghavart Sagina saginate sagination saging Sagitarii sagitta sagittal sagittally Sagittaria Sagittariid Sagittarius sagittarius Sagittary sagittary sagittate Sagittid sagittiferous sagittiform sagittocyst sagittoid sagless sago sagoin sagolike Sagra saguaro Saguerus sagum saguran sagvandite sagwire sagy sah Sahadeva Sahaptin Sahara Saharan Saharian Saharic sahh sahib Sahibah Sahidic sahme Saho sahoukar sahukar sai saic said Saidi saiga sail sailable sailage sailboat sailcloth sailed sailer sailfish sailflying sailing sailingly sailless sailmaker sailmaking sailor sailoring sailorizing sailorless sailorlike sailorly sailorman sailorproof sailplane sailship sailsman saily saim saimiri saimy sain Sainfoin saint saintdom sainted saintess sainthood saintish saintism saintless saintlike saintlily saintliness saintling saintly saintologist saintology Saintpaulia saintship saip Saiph sair sairly sairve sairy Saite saithe Saitic Saiva Saivism saj sajou Sak Saka Sakai Sakalava sake sakeber sakeen Sakel Sakelarides Sakell Sakellaridis saker sakeret Sakha saki sakieh Sakkara Saktism sakulya Sakyamuni sal salaam salaamlike salability salable salableness salably salaceta salacious salaciously salaciousness salacity salacot salad salading salago salagrama salal salamandarin salamander salamanderlike Salamandra salamandrian Salamandridae salamandriform Salamandrina salamandrine salamandroid salambao Salaminian salamo salampore salangane salangid Salangidae Salar salar salariat salaried salary salaryless salat salay sale salegoer salele salema salenixon salep saleratus saleroom salesclerk Salesian saleslady salesman salesmanship salespeople salesperson salesroom saleswoman salework saleyard salfern Salian Saliaric Salic salic Salicaceae salicaceous Salicales Salicariaceae salicetum salicin salicional salicorn Salicornia salicyl salicylal salicylaldehyde salicylamide salicylanilide salicylase salicylate salicylic salicylide salicylidene salicylism salicylize salicylous salicyluric salicylyl salience salient Salientia salientian saliently saliferous salifiable salification salify saligenin saligot salimeter salimetry Salina salina Salinan salination saline Salinella salinelle salineness saliniferous salinification saliniform salinity salinize salinometer salinometry salinosulphureous salinoterreous Salisburia Salish Salishan salite salited Saliva saliva salival Salivan salivant salivary salivate salivation salivator salivatory salivous Salix salix salle sallee salleeman sallenders sallet sallier salloo sallow sallowish sallowness sallowy Sally sally Sallybloom sallyman sallywood Salm salma salmagundi salmiac salmine salmis Salmo Salmon salmon salmonberry Salmonella salmonella salmonellae salmonellosis salmonet salmonid Salmonidae salmoniform salmonlike salmonoid Salmonoidea Salmonoidei salmonsite salmwood salnatron Salol salol Salome salometer salometry salomon Salomonia Salomonian Salomonic salon saloon saloonist saloonkeeper saloop Salopian salopian salp Salpa salpa salpacean salpian salpicon Salpidae salpiform Salpiglossis salpiglossis salpingectomy salpingemphraxis salpinges salpingian salpingion salpingitic salpingitis salpingocatheterism salpingocele salpingocyesis salpingomalleus salpingonasal salpingopalatal salpingopalatine salpingoperitonitis salpingopexy salpingopharyngeal salpingopharyngeus salpingopterygoid salpingorrhaphy salpingoscope salpingostaphyline salpingostenochoria salpingostomatomy salpingostomy salpingotomy salpinx salpoid salse salsifis salsify salsilla Salsola Salsolaceae salsolaceous salsuginous salt salta saltant saltarella saltarello saltary saltate saltation saltativeness Saltator saltator Saltatoria saltatorial saltatorian saltatoric saltatorious saltatory saltbush saltcat saltcatch saltcellar salted saltee salten salter saltern saltery saltfat saltfoot salthouse saltier saltierra saltierwise Saltigradae saltigrade saltimbanco saltimbank saltimbankery saltine saltiness salting saltish saltishly saltishness saltless saltlessness saltly saltmaker saltmaking saltman saltmouth saltness saltometer saltorel saltpan saltpeter saltpetrous saltpond saltspoon saltspoonful saltsprinkler saltus saltweed saltwife saltworker saltworks saltwort salty salubrify salubrious salubriously salubriousness salubrity saluki salung salutarily salutariness salutary salutation salutational salutationless salutatious salutatorian salutatorily salutatorium salutatory salute saluter salutiferous salutiferously Salva salvability salvable salvableness salvably Salvadora salvadora Salvadoraceae salvadoraceous Salvadoran Salvadorian salvage salvageable salvagee salvageproof salvager salvaging Salvarsan salvarsan salvatella salvation salvational salvationism salvationist salvatory salve salveline Salvelinus salver salverform Salvia salvianin salvific salvifical salvifically Salvinia Salviniaceae salviniaceous Salviniales salviol salvo salvor salvy Salwey salzfelle Sam sam Samadera samadh samadhi samaj Samal saman Samandura Samani Samanid Samantha samara samaria samariform Samaritan Samaritaness Samaritanism samarium Samarkand samaroid samarra samarskite Samas samba Sambal sambal sambaqui sambar Sambara Sambathe sambhogakaya Sambo sambo Sambucaceae Sambucus sambuk sambuke sambunigrin Samburu same samekh samel sameliness samely samen sameness samesome Samgarnebo samh Samhain samhita Samian samiel samiresite samiri samisen Samish samite samkara samlet sammel sammer sammier Sammy sammy Samnani Samnite Samoan Samogitian samogonka Samolus Samosatenian samothere Samotherium Samothracian samovar Samoyed Samoyedic samp sampaguita sampaloc sampan samphire sampi sample sampleman sampler samplery sampling Sampsaean Samsam samsara samshu Samsien samskara Samson samson Samsoness Samsonian Samsonic Samsonistic samsonite Samucan Samucu Samuel samurai Samydaceae San san sanability sanable sanableness sanai sanative sanativeness sanatoria sanatorium sanatory Sanballat sanbenito sancho sanct sancta sanctanimity sanctifiable sanctifiableness sanctifiably sanctificate sanctification sanctified sanctifiedly sanctifier sanctify sanctifyingly sanctilogy sanctiloquent sanctimonial sanctimonious sanctimoniously sanctimoniousness sanctimony sanction sanctionable sanctionary sanctionative sanctioner sanctionist sanctionless sanctionment sanctitude sanctity sanctologist Sanctology sanctorium sanctuaried sanctuarize sanctuary sanctum Sanctus Sancy sancyite sand sandak sandal sandaled sandaliform sandaling sandalwood sandalwort sandan sandarac sandaracin sandastros Sandawe sandbag sandbagger sandbank sandbin sandblast sandboard sandbox sandboy sandbur sandclub sandculture sanded Sandemanian Sandemanianism Sandemanism Sander sander sanderling sanders sandfish sandflower sandglass sandheat sandhi sandiferous sandiness sanding sandiver sandix sandlapper sandless sandlike sandling sandman sandnatter sandnecker sandpaper sandpaperer sandpeep sandpiper sandproof sandrock sandspit sandspur sandstay sandstone sandstorm sandust sandweed sandweld sandwich sandwood sandworm sandwort Sandy sandy sandyish sane sanely saneness Sanetch Sanforized sang sanga Sangamon sangar sangaree sangei sanger sangerbund sangerfest Sanggil sangha Sangir Sangirese sanglant sangley Sangraal sangreeroot sangrel sangsue sanguicolous sanguifacient sanguiferous sanguification sanguifier sanguifluous sanguimotor sanguimotory sanguinaceous Sanguinaria sanguinarily sanguinariness sanguinary sanguine sanguineless sanguinely sanguineness sanguineobilious sanguineophlegmatic sanguineous sanguineousness sanguineovascular sanguinicolous sanguiniferous sanguinification sanguinism sanguinity sanguinivorous sanguinocholeric sanguinolency sanguinolent sanguinopoietic sanguinous Sanguisorba Sanguisorbaceae sanguisuge sanguisugent sanguisugous sanguivorous Sanhedrim Sanhedrin Sanhedrist Sanhita sanicle Sanicula sanidine sanidinic sanidinite sanies sanification sanify sanious sanipractic sanitarian sanitarily sanitarist sanitarium sanitary sanitate sanitation sanitationist sanitist sanitize sanity sanjak sanjakate sanjakbeg sanjakship sank sankha Sankhya sannaite Sannoisian sannup sannyasi sannyasin sanopurulent sanoserous Sanpoil sans Sansar sansei Sansevieria sanshach sansi Sanskrit Sanskritic Sanskritist Sanskritization Sanskritize sant Santa Santal santal Santalaceae santalaceous Santalales Santali santalic santalin santalol Santalum santalwood santapee Santee santene Santiago santimi santims santir Santo Santolina santon santonica santonin santoninic santorinite Santos sanukite Sanvitalia Sanyakoan sao Saoshyant sap sapa sapajou sapan sapanwood sapbush sapek Saperda sapful Sapharensian saphead sapheaded sapheadedness saphena saphenal saphenous saphie sapid sapidity sapidless sapidness sapience sapiency sapient sapiential sapientially sapientize sapiently sapin sapinda Sapindaceae sapindaceous Sapindales sapindaship Sapindus Sapium sapiutan saple sapless saplessness sapling saplinghood sapo sapodilla sapogenin saponaceous saponaceousness saponacity Saponaria saponarin saponary Saponi saponifiable saponification saponifier saponify saponin saponite sapophoric sapor saporific saporosity saporous Sapota sapota Sapotaceae sapotaceous sapote sapotilha sapotilla sapotoxin sappanwood sappare sapper Sapphic sapphic sapphire sapphireberry sapphired sapphirewing sapphiric sapphirine Sapphism Sapphist Sappho sappiness sapping sapples sappy sapremia sapremic saprine saprocoll saprodil saprodontia saprogenic saprogenous Saprolegnia Saprolegniaceae saprolegniaceous Saprolegniales saprolegnious saprolite saprolitic sapropel sapropelic sapropelite saprophagan saprophagous saprophile saprophilous saprophyte saprophytic saprophytically saprophytism saprostomous saprozoic sapsago sapskull sapsuck sapsucker sapucaia sapucainha sapwood sapwort sar Sara saraad sarabacan Sarabaite saraband Saracen Saracenian Saracenic Saracenical Saracenism Saracenlike Sarada saraf Sarah Sarakolet Sarakolle Saramaccaner Saran sarangi sarangousty Saratoga Saratogan Saravan Sarawakese sarawakite Sarawan sarbacane sarbican sarcasm sarcasmproof sarcast sarcastic sarcastical sarcastically sarcasticalness sarcasticness sarcelle sarcenet sarcilis Sarcina sarcine sarcitis sarcle sarcler sarcoadenoma Sarcobatus sarcoblast sarcocarcinoma sarcocarp sarcocele Sarcococca Sarcocolla sarcocollin sarcocyst Sarcocystidea sarcocystidean sarcocystidian Sarcocystis sarcocystoid sarcocyte sarcode sarcoderm Sarcodes sarcodic sarcodictyum Sarcodina sarcodous sarcoenchondroma sarcogenic sarcogenous sarcoglia Sarcogyps sarcoid sarcolactic sarcolemma sarcolemmic sarcolemmous sarcoline sarcolite sarcologic sarcological sarcologist sarcology sarcolysis sarcolyte sarcolytic sarcoma sarcomatoid sarcomatosis sarcomatous sarcomere Sarcophaga sarcophagal sarcophagi sarcophagic sarcophagid Sarcophagidae sarcophagine sarcophagize sarcophagous sarcophagus sarcophagy sarcophile sarcophilous Sarcophilus sarcoplasm sarcoplasma sarcoplasmatic sarcoplasmic sarcoplast sarcoplastic sarcopoietic Sarcopsylla Sarcopsyllidae Sarcoptes sarcoptic sarcoptid Sarcoptidae Sarcorhamphus sarcosepsis sarcosepta sarcoseptum sarcosine sarcosis sarcosoma sarcosperm sarcosporid Sarcosporida Sarcosporidia sarcosporidial sarcosporidian sarcosporidiosis sarcostosis sarcostyle sarcotheca sarcotherapeutics sarcotherapy sarcotic sarcous Sarcura Sard sard sardachate Sardanapalian Sardanapalus sardel Sardian sardine sardinewise Sardinian sardius Sardoin sardonic sardonical sardonically sardonicism sardonyx sare sargasso Sargassum sargassum sargo Sargonic Sargonid Sargonide sargus sari sarif Sarigue sarigue sarinda sarip sark sarkar sarkful sarkical sarkine sarking sarkinite sarkit sarkless sarlak sarlyk Sarmatian Sarmatic sarmatier sarment sarmenta sarmentaceous sarmentiferous sarmentose sarmentous sarmentum sarna sarod saron sarong saronic saronide saros Sarothamnus Sarothra sarothrum sarpler sarpo sarra Sarracenia sarracenia Sarraceniaceae sarraceniaceous sarracenial Sarraceniales sarraf sarrazin sarrusophone sarrusophonist sarsa sarsaparilla sarsaparillin Sarsar Sarsechim sarsen sarsenet Sarsi Sart sart sartage sartain Sartish sartor sartoriad sartorial sartorially sartorian sartorite sartorius Saruk sarus Sarvarthasiddha sarwan Sarzan sasa sasan sasani sasanqua sash sashay sashery sashing sashless sasin sasine saskatoon sassaby sassafac sassafrack sassafras Sassak Sassanian Sassanid Sassanidae Sassanide Sassenach sassolite sassy sassywood Sastean sat satable Satan satan Satanael Satanas satang satanic satanical satanically satanicalness Satanism Satanist satanist Satanistic Satanity satanize Satanology Satanophany Satanophil Satanophobia Satanship satara satchel satcheled sate sateen sateenwood sateless satelles satellitarian satellite satellited satellitesimal satellitian satellitic satellitious satellitium satellitoid satellitory satelloid satiability satiable satiableness satiably satiate satiation Satieno satient satiety satin satinbush satine satined satinette satinfin satinflower satinite satinity satinize satinleaf satinlike satinpod satinwood satiny satire satireproof satiric satirical satirically satiricalness satirist satirizable satirize satirizer satisdation satisdiction satisfaction satisfactional satisfactionist satisfactionless satisfactive satisfactorily satisfactoriness satisfactorious satisfactory satisfiable satisfice satisfied satisfiedly satisfiedness satisfier satisfy satisfying satisfyingly satisfyingness satispassion satlijk Satrae satrap satrapal satrapess satrapic satrapical satrapy satron Satsuma sattle sattva satura saturability saturable saturant saturate saturated saturater saturation saturator Saturday Satureia Saturn Saturnal Saturnale Saturnalia saturnalia Saturnalian saturnalian Saturnia Saturnian saturnian Saturnicentric saturniid Saturniidae Saturnine saturnine saturninely saturnineness saturninity saturnism saturnity saturnize Saturnus satyagrahi satyashodak satyr satyresque satyress satyriasis satyric Satyridae Satyrinae satyrine satyrion satyrism satyrlike satyromaniac sauce sauceboat saucebox saucedish sauceless sauceline saucemaker saucemaking sauceman saucepan sauceplate saucer saucerful saucerleaf saucerless saucerlike saucily sauciness saucy Sauerbraten sauerkraut sauf sauger saugh saughen Saul sauld saulie sault saulter Saulteur saum saumon saumont Saumur sauna saunders saunderswood saunter saunterer sauntering saunteringly sauqui saur Saura Sauraseni Saurauia Saurauiaceae saurel Sauria saurian sauriasis sauriosis Saurischia saurischian Sauroctonos saurodont Saurodontidae Saurognathae saurognathism saurognathous Sauromatian saurophagous sauropod Sauropoda sauropodous sauropsid Sauropsida sauropsidan sauropsidian Sauropterygia sauropterygian Saurornithes saurornithic Saururaceae saururaceous Saururae saururan saururous Saururus saury sausage sausagelike sausinger Saussurea saussurite saussuritic saussuritization saussuritize saut saute sauterelle sauterne sauternes sauteur sauty Sauvagesia sauve sauvegarde savable savableness savacu savage savagedom savagely savageness savagerous savagery savagess savagism savagize savanilla savanna Savannah savant Savara savarin savation save saved saveloy saver Savery savin saving savingly savingness savior savioress saviorhood saviorship Saviour Savitar Savitri savola Savonarolist Savonnerie savor savored savorer savorily savoriness savoringly savorless savorous savorsome savory savour savoy Savoyard savoyed savoying savssat savvy saw sawah Sawaiori sawali Sawan sawarra sawback sawbelly sawbill sawbones sawbuck sawbwa sawder sawdust sawdustish sawdustlike sawdusty sawed sawer sawfish sawfly sawhorse sawing sawish sawlike sawmaker sawmaking sawman sawmill sawmiller sawmilling sawmon sawmont sawn Sawney sawney sawsetter sawsharper sawsmith sawt sawway sawworker sawwort sawyer sax saxatile saxboard saxcornet Saxe saxhorn Saxicava saxicavous Saxicola saxicole Saxicolidae Saxicolinae saxicoline saxicolous Saxifraga Saxifragaceae saxifragaceous saxifragant saxifrage saxifragous saxifrax saxigenous Saxish Saxon Saxondom Saxonian Saxonic Saxonical Saxonically Saxonish Saxonism Saxonist saxonite Saxonization Saxonize Saxonly Saxony saxophone saxophonist saxotromba saxpence saxten saxtie saxtuba say saya sayability sayable sayableness Sayal sayer sayette sayid saying sazen Sbaikian sblood sbodikins scab scabbard scabbardless scabbed scabbedness scabbery scabbily scabbiness scabble scabbler scabbling scabby scabellum scaberulous scabid scabies scabietic scabinus Scabiosa scabiosity scabious scabish scabland scabrate scabrescent scabrid scabridity scabridulous scabrities scabriusculose scabriusculous scabrosely scabrous scabrously scabrousness scabwort scacchic scacchite scad scaddle scads Scaean scaff scaffer scaffery scaffie scaffle scaffold scaffoldage scaffolder scaffolding scaglia scagliola scagliolist scala scalable scalableness scalably scalage scalar scalare Scalaria scalarian scalariform Scalariidae scalarwise scalation scalawag scalawaggery scalawaggy scald scaldberry scalded scalder scaldfish scaldic scalding scaldweed scaldy scale scaleback scalebark scaleboard scaled scaledrake scalefish scaleful scaleless scalelet scalelike scaleman scalena scalene scalenohedral scalenohedron scalenon scalenous scalenum scalenus scalepan scaleproof scaler scales scalesman scalesmith scaletail scalewing scalewise scalework scalewort scaliger scaliness scaling scall scalled scallion scallola scallom scallop scalloper scalloping scallopwise scalma scaloni Scalops Scalopus scalp scalpeen scalpel scalpellar scalpellic scalpellum scalpellus scalper scalping scalpless scalpriform scalprum scalpture scalt scaly scalytail scam scamander Scamandrius scamble scambler scambling scamell scamler scamles scammoniate scammonin scammony scammonyroot scamp scampavia scamper scamperer scamphood scamping scampingly scampish scampishly scampishness scampsman scan scandal scandalization scandalize scandalizer scandalmonger scandalmongering scandalmongery scandalmonging scandalous scandalously scandalousness scandalproof scandaroon scandent scandia Scandian scandic scandicus Scandinavia Scandinavian Scandinavianism scandium Scandix Scania Scanian Scanic scanmag scannable scanner scanning scanningly scansion scansionist Scansores scansorial scansorious scant scanties scantily scantiness scantity scantle scantling scantlinged scantly scantness scanty scap scape scapegallows scapegoat scapegoatism scapegrace scapel scapeless scapement scapethrift scapha Scaphander Scaphandridae scaphion Scaphiopodidae Scaphiopus scaphism scaphite Scaphites Scaphitidae scaphitoid scaphocephalic scaphocephalism scaphocephalous scaphocephalus scaphocephaly scaphocerite scaphoceritic scaphognathite scaphognathitic scaphoid scapholunar scaphopod Scaphopoda scaphopodous scapiform scapigerous scapoid scapolite scapolitization scapose scapple scappler scapula scapulalgia scapular scapulare scapulary scapulated scapulectomy scapulet scapulimancy scapuloaxillary scapulobrachial scapuloclavicular scapulocoracoid scapulodynia scapulohumeral scapulopexy scapuloradial scapulospinal scapulothoracic scapuloulnar scapulovertebral scapus scar scarab scarabaean scarabaei scarabaeid Scarabaeidae scarabaeidoid scarabaeiform Scarabaeinae scarabaeoid scarabaeus scarabee scaraboid Scaramouch scaramouch scarce scarcelins scarcely scarcement scarcen scarceness scarcity scare scarebabe scarecrow scarecrowish scarecrowy scareful scarehead scaremonger scaremongering scareproof scarer scaresome scarf scarface scarfed scarfer scarflike scarfpin scarfskin scarfwise scarfy scarid Scaridae scarification scarificator scarifier scarify scarily scariose scarious scarlatina scarlatinal scarlatiniform scarlatinoid scarlatinous scarless scarlet scarletberry scarletseed scarlety scarman scarn scaroid scarp scarpines scarping scarpment scarproof scarred scarrer scarring scarry scart scarth Scarus scarus scarved scary scase scasely scat scatch scathe scatheful scatheless scathelessly scathing scathingly Scaticook scatland scatologia scatologic scatological scatology scatomancy scatophagid Scatophagidae scatophagoid scatophagous scatophagy scatoscopy scatter scatterable scatteration scatteraway scatterbrain scatterbrained scatterbrains scattered scatteredly scatteredness scatterer scattergood scattering scatteringly scatterling scattermouch scattery scatty scatula scaturient scaul scaum scaup scauper scaur scaurie scaut scavage scavel scavenage scavenge scavenger scavengerism scavengership scavengery scavenging scaw scawd scawl scazon scazontic sceat scelalgia scelerat scelidosaur scelidosaurian scelidosauroid Scelidosaurus Scelidotherium Sceliphron sceloncus Sceloporus scelotyrbe scena scenario scenarioist scenarioization scenarioize scenarist scenarization scenarize scenary scend scene scenecraft Scenedesmus sceneful sceneman scenery sceneshifter scenewright scenic scenical scenically scenist scenite scenograph scenographer scenographic scenographical scenographically scenography Scenopinidae scent scented scenter scentful scenting scentless scentlessness scentproof scentwood scepsis scepter scepterdom sceptered scepterless sceptic sceptral sceptropherous sceptrosophy sceptry scerne sceuophorion sceuophylacium sceuophylax schaapsteker Schaefferia schairerite schalmei schalmey schalstein schanz schapbachite schappe schapped schapping scharf Scharlachberger schatchen Scheat Schedar schediasm schediastic Schedius schedular schedulate schedule schedulize scheelite scheffel schefferite schelling Schellingian Schellingianism Schellingism schelly scheltopusik schema schemata schematic schematically schematism schematist schematization schematize schematizer schematogram schematograph schematologetically schematomancy schematonics scheme schemeful schemeless schemer schemery scheming schemingly schemist schemy schene schepel schepen scherm scherzando scherzi scherzo schesis Scheuchzeria Scheuchzeriaceae scheuchzeriaceous schiavone Schiedam schiffli schiller schillerfels schillerization schillerize schilling schimmel schindylesis schindyletic Schinus schipperke Schisandra Schisandraceae schism schisma schismatic schismatical schismatically schismaticalness schismatism schismatist schismatize schismic schismless schist schistaceous schistic schistocelia schistocephalus Schistocerca schistocoelia schistocormia schistocormus schistocyte schistocytosis schistoglossia schistoid schistomelia schistomelus schistoprosopia schistoprosopus schistorrhachis schistoscope schistose schistosity Schistosoma schistosome schistosomia schistosomiasis schistosomus schistosternia schistothorax schistous schistus Schizaea Schizaeaceae schizaeaceous Schizanthus schizanthus schizaxon schizocarp schizocarpic schizocarpous schizochroal schizocoele schizocoelic schizocoelous schizocyte schizocytosis schizodinic schizogamy schizogenesis schizogenetic schizogenetically schizogenic schizogenous schizogenously schizognath Schizognathae schizognathism schizognathous schizogonic schizogony Schizogregarinae schizogregarine Schizogregarinida schizoid schizoidism Schizolaenaceae schizolaenaceous schizolite schizolysigenous Schizomeria schizomycete Schizomycetes schizomycetic schizomycetous schizomycosis Schizonemertea schizonemertean schizonemertine Schizoneura Schizonotus schizont schizopelmous Schizopetalon schizophasia Schizophragma schizophrene schizophrenia schizophreniac schizophrenic Schizophyceae Schizophyllum Schizophyta schizophyte schizophytic schizopod Schizopoda schizopodal schizopodous schizorhinal schizospore schizostele schizostelic schizostely schizothecal schizothoracic schizothyme schizothymia schizothymic schizotrichia Schizotrypanum schiztic Schlauraffenland Schleichera schlemiel schlemihl schlenter schlieren schlieric schloop Schmalkaldic schmaltz schmelz schmelze schnabel Schnabelkanne schnapper schnapps schnauzer schneider Schneiderian schnitzel schnorchel schnorkel schnorrer scho schochat schochet schoenobatic schoenobatist Schoenocaulon Schoenus schoenus Schoharie schola scholae scholaptitude scholar scholarch scholardom scholarian scholarism scholarless scholarlike scholarliness scholarly scholarship scholasm scholastic scholastical scholastically scholasticate scholasticism scholasticly scholia scholiast scholiastic scholion scholium Schomburgkia schone schonfelsite Schoodic School school schoolable schoolbag schoolbook schoolbookish schoolboy schoolboydom schoolboyhood schoolboyish schoolboyishly schoolboyishness schoolboyism schoolbutter schoolcraft schooldame schooldom schooled schoolery schoolfellow schoolfellowship schoolful schoolgirl schoolgirlhood schoolgirlish schoolgirlishly schoolgirlishness schoolgirlism schoolgirly schoolgoing schoolhouse schooling schoolingly schoolish schoolkeeper schoolkeeping schoolless schoollike schoolmaam schoolmaamish schoolmaid schoolman schoolmaster schoolmasterhood schoolmastering schoolmasterish schoolmasterishly schoolmasterishness schoolmasterism schoolmasterly schoolmastership schoolmastery schoolmate schoolmiss schoolmistress schoolmistressy schoolroom schoolteacher schoolteacherish schoolteacherly schoolteachery schoolteaching schooltide schooltime schoolward schoolwork schoolyard schoon schooner Schopenhauereanism Schopenhauerian Schopenhauerism schoppen schorenbergite schorl schorlaceous schorlomite schorlous schorly schottische schottish schout schraubthaler Schrebera schreiner schreinerize schriesheimite Schrund schtoff schuh schuhe schuit schule schultenite schungite schuss schute schwa schwabacher Schwalbea schwarz Schwarzian schweizer schweizerkase Schwendenerian Schwenkfelder Schwenkfeldian Sciadopitys Sciaena sciaenid Sciaenidae sciaeniform Sciaeniformes sciaenoid scialytic sciamachy Scian sciapod sciapodous Sciara sciarid Sciaridae Sciarinae sciatheric sciatherical sciatherically sciatic sciatica sciatical sciatically sciaticky scibile science scienced scient sciential scientician scientific scientifical scientifically scientificalness scientificogeographical scientificohistorical scientificophilosophical scientificopoetic scientificoreligious scientificoromantic scientintically scientism Scientist scientist scientistic scientistically scientize scientolism scilicet Scilla scillain scillipicrin Scillitan scillitin scillitoxin Scillonian scimitar scimitared scimitarpod scincid Scincidae scincidoid scinciform scincoid scincoidian Scincomorpha Scincus scind sciniph scintilla scintillant scintillantly scintillate scintillating scintillatingly scintillation scintillator scintillescent scintillize scintillometer scintilloscope scintillose scintillously scintle scintler scintling sciograph sciographic sciography sciolism sciolist sciolistic sciolous sciomachiology sciomachy sciomancy sciomantic scion sciophilous sciophyte scioptic sciopticon scioptics scioptric sciosophist sciosophy Sciot scioterical scioterique sciotheism sciotheric sciotherical sciotherically scious scirenga Scirophoria Scirophorion Scirpus scirrhi scirrhogastria scirrhoid scirrhoma scirrhosis scirrhous scirrhus scirrosity scirtopod Scirtopoda scirtopodous scissel scissible scissile scission scissiparity scissor scissorbill scissorbird scissorer scissoring scissorium scissorlike scissorlikeness scissors scissorsbird scissorsmith scissorstail scissortail scissorwise scissura scissure Scissurella scissurellid Scissurellidae Scitaminales Scitamineae sciurid Sciuridae sciurine sciuroid sciuromorph Sciuromorpha sciuromorphic Sciuropterus Sciurus sclaff sclate sclater Sclav Sclavonian sclaw scler sclera scleral scleranth Scleranthaceae Scleranthus scleratogenous sclere sclerectasia sclerectomy scleredema sclereid sclerema sclerencephalia sclerenchyma sclerenchymatous sclerenchyme sclererythrin scleretinite Scleria scleriasis sclerification sclerify sclerite scleritic scleritis sclerized sclerobase sclerobasic scleroblast scleroblastema scleroblastemic scleroblastic sclerocauly sclerochorioiditis sclerochoroiditis scleroconjunctival scleroconjunctivitis sclerocornea sclerocorneal sclerodactylia sclerodactyly scleroderm Scleroderma scleroderma Sclerodermaceae Sclerodermata Sclerodermatales sclerodermatitis sclerodermatous Sclerodermi sclerodermia sclerodermic sclerodermite sclerodermitic sclerodermitis sclerodermous sclerogen Sclerogeni sclerogenoid sclerogenous scleroid scleroiritis sclerokeratitis sclerokeratoiritis scleroma scleromata scleromeninx scleromere sclerometer sclerometric scleronychia scleronyxis Scleropages Scleroparei sclerophthalmia sclerophyll sclerophyllous sclerophylly scleroprotein sclerosal sclerosarcoma Scleroscope scleroscope sclerose sclerosed scleroseptum sclerosis scleroskeletal scleroskeleton Sclerospora sclerostenosis Sclerostoma sclerostomiasis sclerotal sclerote sclerotia sclerotial sclerotic sclerotica sclerotical scleroticectomy scleroticochorioiditis scleroticochoroiditis scleroticonyxis scleroticotomy Sclerotinia sclerotinial sclerotiniose sclerotioid sclerotitic sclerotitis sclerotium sclerotized sclerotoid sclerotome sclerotomic sclerotomy sclerous scleroxanthin sclerozone scliff sclim sclimb scoad scob scobby scobicular scobiform scobs scoff scoffer scoffery scoffing scoffingly scoffingstock scofflaw scog scoggan scogger scoggin scogginism scogginist scoinson scoke scolb scold scoldable scoldenore scolder scolding scoldingly scoleces scoleciasis scolecid Scolecida scoleciform scolecite scolecoid scolecology scolecophagous scolecospore scoleryng scolex Scolia scolia scolices scoliid Scoliidae scoliograptic scoliokyposis scoliometer scolion scoliorachitic scoliosis scoliotic scoliotone scolite scollop scolog scolopaceous Scolopacidae scolopacine Scolopax Scolopendra scolopendra Scolopendrella Scolopendrellidae scolopendrelloid scolopendrid Scolopendridae scolopendriform scolopendrine Scolopendrium scolopendroid scolophore scolopophore Scolymus scolytid Scolytidae scolytoid Scolytus Scomber scomberoid Scombresocidae Scombresox scombrid Scombridae scombriform Scombriformes scombrine scombroid Scombroidea scombroidean scombrone sconce sconcer sconcheon sconcible scone scoon scoop scooped scooper scoopful scooping scoopingly scoot scooter scopa scoparin scoparius scopate scope scopeless scopelid Scopelidae scopeliform scopelism scopeloid Scopelus scopet scopic Scopidae scopiferous scopiform scopiformly scopine scopiped scopola scopolamine scopoleine scopoletin scopoline scopperil scops scoptical scoptically scoptophilia scoptophiliac scoptophilic scoptophobia scopula Scopularia scopularian scopulate scopuliferous scopuliform scopuliped Scopulipedes scopulite scopulous scopulousness Scopus scorbute scorbutic scorbutical scorbutically scorbutize scorbutus scorch scorched scorcher scorching scorchingly scorchingness scorchproof score scoreboard scorebook scored scorekeeper scorekeeping scoreless scorer scoria scoriac scoriaceous scoriae scorification scorifier scoriform scorify scoring scorious scorn scorned scorner scornful scornfully scornfulness scorningly scornproof scorny scorodite Scorpaena scorpaenid Scorpaenidae scorpaenoid scorpene scorper Scorpidae Scorpididae Scorpii Scorpiid Scorpio scorpioid scorpioidal Scorpioidea scorpion Scorpiones scorpionic scorpionid Scorpionida Scorpionidea Scorpionis scorpionweed scorpionwort Scorpiurus Scorpius scorse scortation scortatory Scorzonera Scot scot scotale Scotch scotch scotcher Scotchery Scotchification Scotchify Scotchiness scotching Scotchman scotchman Scotchness Scotchwoman Scotchy scote scoter scoterythrous Scotia scotia Scotic scotino Scotism Scotist Scotistic Scotistical Scotize Scotlandwards scotodinia scotogram scotograph scotographic scotography scotoma scotomata scotomatic scotomatical scotomatous scotomia scotomic scotomy scotophobia scotopia scotopic scotoscope scotosis Scots Scotsman Scotswoman Scotticism Scotticize Scottie Scottification Scottify Scottish Scottisher Scottishly Scottishman Scottishness Scotty scouch scouk scoundrel scoundreldom scoundrelish scoundrelism scoundrelly scoundrelship scoup scour scourage scoured scourer scouress scourfish scourge scourger scourging scourgingly scouriness scouring scourings scourway scourweed scourwort scoury scouse scout scoutcraft scoutdom scouter scouth scouther scouthood scouting scoutingly scoutish scoutmaster scoutwatch scove scovel scovillite scovy scow scowbank scowbanker scowder scowl scowler scowlful scowling scowlingly scowlproof scowman scrab scrabble scrabbled scrabbler scrabe scrae scraffle scrag scragged scraggedly scraggedness scragger scraggily scragginess scragging scraggled scraggling scraggly scraggy scraily scram scramasax scramble scramblement scrambler scrambling scramblingly scrambly scrampum scran scranch scrank scranky scrannel scranning scranny scrap scrapable scrapbook scrape scrapeage scraped scrapepenny scraper scrapie scraping scrapingly scrapler scraplet scrapling scrapman scrapmonger scrappage scrapped scrapper scrappet scrappily scrappiness scrapping scrappingly scrapple scrappler scrappy scrapworks scrapy scrat scratch scratchable scratchably scratchback scratchboard scratchbrush scratchcard scratchcarding scratchcat scratcher scratches scratchification scratchiness scratching scratchingly scratchless scratchlike scratchman scratchproof scratchweed scratchwork scratchy scrath scratter scrattle scrattling scrauch scrauchle scraunch scraw scrawk scrawl scrawler scrawliness scrawly scrawm scrawnily scrawniness scrawny scray scraze screak screaking screaky scream screamer screaminess screaming screamingly screamproof screamy scree screech screechbird screecher screechily screechiness screeching screechingly screechy screed screek screel screeman screen screenable screenage screencraft screendom screened screener screening screenless screenlike screenman screenplay screensman screenwise screenwork screenwriter screeny screet screeve screeved screever screich screigh screve screver screw screwable screwage screwball screwbarrel screwdrive screwdriver screwed screwer screwhead screwiness screwing screwish screwless screwlike screwman screwmatics screwship screwsman screwstem screwstock screwwise screwworm screwy scribable scribacious scribaciousness scribal scribatious scribatiousness scribblage scribblative scribblatory scribble scribbleable scribbled scribbledom scribbleism scribblemania scribblement scribbleomania scribbler scribbling scribblingly scribbly scribe scriber scribeship scribing scribism scribophilous scride scrieve scriever scriggle scriggler scriggly scrike scrim scrime scrimer scrimmage scrimmager scrimp scrimped scrimpily scrimpiness scrimpingly scrimply scrimpness scrimption scrimpy scrimshander scrimshandy scrimshank scrimshanker scrimshaw scrimshon scrimshorn scrin scrinch scrine scringe scriniary scrip scripee scripless scrippage script scription scriptitious scriptitiously scriptitory scriptive scriptor scriptorial scriptorium scriptory scriptural Scripturalism scripturalism Scripturalist scripturalist Scripturality scripturality scripturalize scripturally scripturalness Scripturarian Scripture scripture Scriptured scriptured Scriptureless scripturiency scripturient Scripturism scripturism Scripturist scripula scripulum scritch scritoire scrivaille scrive scrivello scriven scrivener scrivenership scrivenery scrivening scrivenly scriver scrob scrobble scrobe scrobicula scrobicular scrobiculate scrobiculated scrobicule scrobiculus scrobis scrod scrodgill scroff scrofula scrofularoot scrofulaweed scrofulide scrofulism scrofulitic scrofuloderm scrofuloderma scrofulorachitic scrofulosis scrofulotuberculous scrofulous scrofulously scrofulousness scrog scroggy scrolar scroll scrolled scrollery scrollhead scrollwise scrollwork scrolly scronach scroo scrooch scrooge scroop Scrophularia Scrophulariaceae scrophulariaceous scrota scrotal scrotectomy scrotiform scrotitis scrotocele scrotofemoral scrotum scrouge scrouger scrounge scrounger scrounging scrout scrow scroyle scrub scrubbable scrubbed scrubber scrubbery scrubbily scrubbiness scrubbird scrubbly scrubboard scrubby scrubgrass scrubland scrubwood scruf scruff scruffle scruffman scruffy scruft scrum scrummage scrummager scrump scrumple scrumption scrumptious scrumptiously scrumptiousness scrunch scrunchy scrunge scrunger scrunt scruple scrupleless scrupler scruplesome scruplesomeness scrupula scrupular scrupuli scrupulist scrupulosity scrupulous scrupulously scrupulousness scrupulum scrupulus scrush scrutability scrutable scrutate scrutation scrutator scrutatory scrutinant scrutinate scrutineer scrutinization scrutinize scrutinizer scrutinizingly scrutinous scrutinously scrutiny scruto scrutoire scruze scry scryer scud scuddaler scuddawn scudder scuddick scuddle scuddy scudi scudler scudo scuff scuffed scuffer scuffle scuffler scufflingly scuffly scuffy scuft scufter scug scuggery sculch sculduddery scull sculler scullery scullful scullion scullionish scullionize scullionship scullog sculp sculper sculpin sculpt sculptile sculptitory sculptograph sculptography Sculptor sculptor Sculptorid sculptress sculptural sculpturally sculpturation sculpture sculptured sculpturer sculpturesque sculpturesquely sculpturesqueness sculpturing sculsh scum scumber scumble scumbling scumboard scumfish scumless scumlike scummed scummer scumming scummy scumproof scun scuncheon scunder scunner scup scupful scuppaug scupper scuppernong scuppet scuppler scur scurdy scurf scurfer scurfily scurfiness scurflike scurfy scurrier scurrile scurrilist scurrility scurrilize scurrilous scurrilously scurrilousness scurry scurvied scurvily scurviness scurvish scurvy scurvyweed scusation scuse scut scuta scutage scutal scutate scutated scutatiform scutation scutch scutcheon scutcheoned scutcheonless scutcheonlike scutcheonwise scutcher scutching scute scutel scutella scutellae scutellar Scutellaria scutellarin scutellate scutellated scutellation scutellerid Scutelleridae scutelliform scutelligerous scutelliplantar scutelliplantation scutellum scutibranch Scutibranchia scutibranchian scutibranchiate scutifer scutiferous scutiform scutiger Scutigera scutigeral Scutigeridae scutigerous scutiped scutter scuttle scuttlebutt scuttleful scuttleman scuttler scuttling scuttock scutty scutula scutular scutulate scutulated scutulum Scutum scutum scybala scybalous scybalum scye scyelite Scyld Scylla Scyllaea Scyllaeidae scyllarian Scyllaridae scyllaroid Scyllarus Scyllidae Scylliidae scyllioid Scylliorhinidae scylliorhinoid Scylliorhinus scyllite scyllitol Scyllium scypha scyphae scyphate scyphi scyphiferous scyphiform scyphiphorous scyphistoma scyphistomae scyphistomoid scyphistomous scyphoi scyphomancy Scyphomedusae scyphomedusan scyphomedusoid scyphophore Scyphophori scyphophorous scyphopolyp scyphose scyphostoma Scyphozoa scyphozoan scyphula scyphulus scyphus scyt scytale Scyth scythe scytheless scythelike scytheman scythesmith scythestone scythework Scythian Scythic Scythize scytitis scytoblastema scytodepsic Scytonema Scytonemataceae scytonemataceous scytonematoid scytonematous Scytopetalaceae scytopetalaceous Scytopetalum sdeath sdrucciola se sea seabeach seabeard Seabee seaberry seaboard seaborderer seabound seacannie seacatch seacoast seaconny seacraft seacrafty seacunny seadog seadrome seafardinger seafare seafarer seafaring seaflood seaflower seafolk Seaforthia seafowl Seaghan seagirt seagoer seagoing seah seahound seak seal sealable sealant sealch sealed sealer sealery sealess sealet sealette sealflower sealike sealine sealing sealless seallike sealskin sealwort Sealyham seam seaman seamancraft seamanite seamanlike seamanly seamanship seamark Seamas seambiter seamed seamer seaminess seaming seamless seamlessly seamlessness seamlet seamlike seamost seamrend seamrog seamster seamstress Seamus seamy seance seapiece seaplane seaport seaquake sear searce searcer search searchable searchableness searchant searcher searcheress searcherlike searchership searchful searching searchingly searchingness searchless searchlight searchment searcloth seared searedness searer searing searlesite searness seary Seasan seascape seascapist seascout seascouting seashine seashore seasick seasickness seaside seasider season seasonable seasonableness seasonably seasonal seasonality seasonally seasonalness seasoned seasonedly seasoner seasoning seasoninglike seasonless seastrand seastroke seat seatang seated seater seathe seating seatless seatrain seatron seatsman seatwork seave seavy seawant seaward seawardly seaware seaway seaweed seaweedy seawife seawoman seaworn seaworthiness seaworthy seax Seba sebacate sebaceous sebacic sebait Sebastian sebastianite Sebastichthys Sebastodes sebate sebesten sebiferous sebific sebilla sebiparous sebkha sebolith seborrhagia seborrhea seborrheal seborrheic seborrhoic Sebright sebum sebundy sec secability secable Secale secalin secaline secalose Secamone secancy secant secantly secateur secede Seceder seceder secern secernent secernment secesh secesher Secessia Secession secession Secessional secessional secessionalist Secessiondom secessioner secessionism secessionist sech Sechium Sechuana seck Seckel seclude secluded secludedly secludedness secluding secluse seclusion seclusionist seclusive seclusively seclusiveness secodont secohm secohmmeter second secondar secondarily secondariness secondary seconde seconder secondhand secondhanded secondhandedly secondhandedness secondly secondment secondness secos secpar secque secre secrecy secret secreta secretage secretagogue secretarial secretarian Secretariat secretariat secretariate secretary secretaryship secrete secretin secretion secretional secretionary secretitious secretive secretively secretiveness secretly secretmonger secretness secreto secretomotor secretor secretory secretum sect sectarial sectarian sectarianism sectarianize sectarianly sectarism sectarist sectary sectator sectile sectility section sectional sectionalism sectionalist sectionality sectionalization sectionalize sectionally sectionary sectionist sectionize sectioplanography sectism sectist sectiuncle sective sector sectoral sectored sectorial sectroid sectwise secular secularism secularist secularistic secularity secularization secularize secularizer secularly secularness secund secundate secundation secundiflorous secundigravida secundine secundipara secundiparity secundiparous secundly secundogeniture secundoprimary secundus securable securance secure securely securement secureness securer securicornate securifer Securifera securiferous securiform Securigera securigerous securitan security Sedaceae Sedan sedan Sedang sedanier sedate sedately sedateness sedation sedative sedent Sedentaria sedentarily sedentariness sedentary sedentation Seder sederunt sedge sedged sedgelike sedging sedgy sedigitate sedigitated sedile sedilia sediment sedimental sedimentarily sedimentary sedimentate sedimentation sedimentous sedimetric sedimetrical sedition seditionary seditionist seditious seditiously seditiousness sedjadeh seduce seduceable seducee seducement seducer seducible seducing seducingly seducive seduct seduction seductionist seductive seductively seductiveness seductress sedulity sedulous sedulously sedulousness Sedum sedum see seeable seeableness Seebeck seecatch seech seed seedage seedbed seedbird seedbox seedcake seedcase seedeater seeded Seeder seeder seedful seedgall seedily seediness seedkin seedless seedlessness seedlet seedlike seedling seedlip seedman seedness seedsman seedstalk seedtime seedy seege seeing seeingly seeingness seek seeker Seekerism seeking seel seelful seely seem seemable seemably seemer seeming seemingly seemingness seemless seemlihead seemlily seemliness seemly seen seenie seep seepage seeped seepweed seepy seer seerband seercraft seeress seerfish seerhand seerhood seerlike seerpaw seership seersucker seesaw seesawiness seesee seethe seething seethingly seetulputty Sefekhet seg seggar seggard segged seggrom Seginus segment segmental segmentally segmentary segmentate segmentation segmented sego segol segolate segreant segregable segregant segregate segregateness segregation segregational segregationist segregative segregator seiche Seid Seidel seidel Seidlitz seigneur seigneurage seigneuress seigneurial seigneury seignior seigniorage seignioral seignioralty seigniorial seigniority seigniorship seigniory seignorage seignoral seignorial seignorize seignory seilenoi seilenos seine seiner seirospore seirosporic seise seism seismal seismatical seismetic seismic seismically seismicity seismism seismochronograph seismogram seismograph seismographer seismographic seismographical seismography seismologic seismological seismologically seismologist seismologue seismology seismometer seismometric seismometrical seismometrograph seismometry seismomicrophone seismoscope seismoscopic seismotectonic seismotherapy seismotic seit seity Seiurus Seiyuhonto Seiyukai seizable seize seizer seizin seizing seizor seizure sejant sejoin sejoined sejugate sejugous sejunct sejunctive sejunctively sejunctly Sekane Sekani Seker Sekhwan sekos selachian Selachii selachoid Selachoidei Selachostome Selachostomi selachostomous seladang Selaginaceae Selaginella Selaginellaceae selaginellaceous selagite Selago selah selamin selamlik selbergite Selbornian seldom seldomcy seldomer seldomly seldomness seldor seldseen sele select selectable selected selectedly selectee selection selectionism selectionist selective selectively selectiveness selectivity selectly selectman selectness selector Selena selenate Selene selenian seleniate selenic Selenicereus selenide Selenidera seleniferous selenigenous selenion selenious Selenipedium selenite selenitic selenitical selenitiferous selenitish selenium seleniuret selenobismuthite selenocentric selenodont Selenodonta selenodonty selenograph selenographer selenographic selenographical selenographically selenographist selenography selenolatry selenological selenologist selenology selenomancy selenoscope selenosis selenotropic selenotropism selenotropy selensilver selensulphur Seleucian Seleucid Seleucidae Seleucidan Seleucidean Seleucidian Seleucidic self selfcide selfdom selfful selffulness selfheal selfhood selfish selfishly selfishness selfism selfist selfless selflessly selflessness selfly selfness selfpreservatory selfsame selfsameness selfward selfwards selictar seligmannite selihoth Selina Selinuntine selion Seljuk Seljukian sell sella sellable sellably sellaite sellar sellate sellenders seller Selli sellie selliform selling sellout selly selsoviet selsyn selt Selter Seltzer seltzogene Selung selva selvage selvaged selvagee selvedge selzogene Semaeostomae Semaeostomata Semang semanteme semantic semantical semantically semantician semanticist semantics semantological semantology semantron semaphore semaphoric semaphorical semaphorically semaphorist semarum semasiological semasiologically semasiologist semasiology semateme sematic sematographic sematography sematology sematrope semball semblable semblably semblance semblant semblative semble seme Semecarpus semeed semeia semeiography semeiologic semeiological semeiologist semeiology semeion semeiotic semeiotical semeiotics semelfactive semelincident semen semence Semeostoma semese semester semestral semestrial semi semiabstracted semiaccomplishment semiacid semiacidified semiacquaintance semiadherent semiadjectively semiadnate semiaerial semiaffectionate semiagricultural Semiahmoo semialbinism semialcoholic semialien semiallegiance semialpine semialuminous semiamplexicaul semiamplitude semianarchist semianatomical semianatropal semianatropous semiangle semiangular semianimal semianimate semianimated semiannealed semiannual semiannually semiannular semianthracite semiantiministerial semiantique semiape semiaperiodic semiaperture semiappressed semiaquatic semiarborescent semiarc semiarch semiarchitectural semiarid semiaridity semiarticulate semiasphaltic semiatheist semiattached semiautomatic semiautomatically semiautonomous semiaxis semibacchanalian semibachelor semibald semibalked semiball semiballoon semiband semibarbarian semibarbarianism semibarbaric semibarbarism semibarbarous semibaronial semibarren semibase semibasement semibastion semibay semibeam semibejan semibelted semibifid semibituminous semibleached semiblind semiblunt semibody semiboiled semibolshevist semibolshevized semibouffant semibourgeois semibreve semibull semiburrowing semic semicadence semicalcareous semicalcined semicallipygian semicanal semicanalis semicannibalic semicantilever semicarbazide semicarbazone semicarbonate semicarbonize semicardinal semicartilaginous semicastrate semicastration semicatholicism semicaudate semicelestial semicell semicellulose semicentenarian semicentenary semicentennial semicentury semichannel semichaotic semichemical semicheviot semichevron semichiffon semichivalrous semichoric semichorus semichrome semicircle semicircled semicircular semicircularity semicircularly semicircularness semicircumference semicircumferentor semicircumvolution semicirque semicitizen semicivilization semicivilized semiclassic semiclassical semiclause semicleric semiclerical semiclimber semiclimbing semiclose semiclosed semiclosure semicoagulated semicoke semicollapsible semicollar semicollegiate semicolloid semicolloquial semicolon semicolonial semicolumn semicolumnar semicoma semicomatose semicombined semicombust semicomic semicomical semicommercial semicompact semicompacted semicomplete semicomplicated semiconceal semiconcrete semiconducting semiconductor semicone semiconfident semiconfinement semiconfluent semiconformist semiconformity semiconic semiconical semiconnate semiconnection semiconoidal semiconscious semiconsciously semiconsciousness semiconservative semiconsonant semiconsonantal semiconspicuous semicontinent semicontinuum semicontraction semicontradiction semiconvergence semiconvergent semiconversion semiconvert semicordate semicordated semicoriaceous semicorneous semicoronate semicoronated semicoronet semicostal semicostiferous semicotton semicotyle semicounterarch semicountry semicrepe semicrescentic semicretin semicretinism semicriminal semicroma semicrome semicrustaceous semicrystallinc semicubical semicubit semicup semicupium semicupola semicured semicurl semicursive semicurvilinear semicyclic semicycloid semicylinder semicylindric semicylindrical semicynical semidaily semidangerous semidark semidarkness semidead semideaf semidecay semidecussation semidefinite semideific semideification semideistical semideity semidelight semidelirious semideltaic semidemented semidenatured semidependence semidependent semideponent semidesert semidestructive semidetached semidetachment semideveloped semidiagrammatic semidiameter semidiapason semidiapente semidiaphaneity semidiaphanous semidiatessaron semidifference semidigested semidigitigrade semidigression semidilapidation semidine semidirect semidisabled semidisk semiditone semidiurnal semidivided semidivine semidocumentary semidodecagon semidole semidome semidomed semidomestic semidomesticated semidomestication semidomical semidormant semidouble semidrachm semidramatic semidress semidressy semidried semidry semidrying semiductile semidull semiduplex semiduration semieducated semieffigy semiegg semiegret semielastic semielision semiellipse semiellipsis semiellipsoidal semielliptic semielliptical semienclosed semiengaged semiequitant semierect semieremitical semiessay semiexecutive semiexpanded semiexplanation semiexposed semiexternal semiextinct semiextinction semifable semifabulous semifailure semifamine semifascia semifasciated semifashion semifast semifatalistic semiferal semiferous semifeudal semifeudalism semifib semifiction semifictional semifigurative semifigure semifinal semifinalist semifine semifinish semifinished semifiscal semifistular semifit semifitting semifixed semiflashproof semiflex semiflexed semiflexible semiflexion semiflexure semiflint semifloating semifloret semifloscular semifloscule semiflosculose semiflosculous semifluctuant semifluctuating semifluid semifluidic semifluidity semifoaming semiforbidding semiforeign semiform semiformal semiformed semifossil semifossilized semifrantic semifriable semifrontier semifuddle semifunctional semifused semifusion semify semigala semigelatinous semigentleman semigenuflection semigirder semiglaze semiglazed semiglobe semiglobose semiglobular semiglobularly semiglorious semiglutin semigod semigovernmental semigrainy semigranitic semigranulate semigravel semigroove semihand semihard semiharden semihardy semihastate semihepatization semiherbaceous semiheterocercal semihexagon semihexagonal semihiant semihiatus semihibernation semihigh semihistorical semihobo semihonor semihoral semihorny semihostile semihot semihuman semihumanitarian semihumanized semihumbug semihumorous semihumorously semihyaline semihydrate semihydrobenzoinic semihyperbola semihyperbolic semihyperbolical semijealousy semijubilee semijudicial semijuridical semilanceolate semilatent semilatus semileafless semilegendary semilegislative semilens semilenticular semilethal semiliberal semilichen semiligneous semilimber semilined semiliquid semiliquidity semiliterate semilocular semilogarithmic semilogical semilong semilooper semiloose semiloyalty semilucent semilunar semilunare semilunary semilunate semilunation semilune semiluxation semiluxury semimachine semimade semimadman semimagical semimagnetic semimajor semimalignant semimanufacture semimanufactured semimarine semimarking semimathematical semimature semimechanical semimedicinal semimember semimembranosus semimembranous semimenstrual semimercerized semimessianic semimetal semimetallic semimetamorphosis semimicrochemical semimild semimilitary semimill semimineral semimineralized semiminim semiminor semimolecule semimonastic semimonitor semimonopoly semimonster semimonthly semimoron semimucous semimute semimystic semimystical semimythical seminaked seminal seminality seminally seminaphthalidine seminaphthylamine seminar seminarcosis seminarial seminarian seminarianism seminarist seminaristic seminarize seminary seminasal seminase seminatant seminate semination seminationalization seminative seminebulous seminecessary seminegro seminervous seminiferal seminiferous seminific seminifical seminification seminist seminium seminivorous seminocturnal Seminole seminoma seminomad seminomadic seminomata seminonconformist seminonflammable seminonsensical seminormal seminose seminovel seminovelty seminude seminudity seminule seminuliferous seminuria seminvariant seminvariantive semioblivion semioblivious semiobscurity semioccasional semioccasionally semiocclusive semioctagonal semiofficial semiofficially semiography Semionotidae Semionotus semiopacity semiopacous semiopal semiopalescent semiopaque semiopened semiorb semiorbicular semiorbicularis semiorbiculate semiordinate semiorganized semioriental semioscillation semiosseous semiostracism semiotic semiotician semioval semiovaloid semiovate semioviparous semiovoid semiovoidal semioxidated semioxidized semioxygenated semioxygenized semipagan semipalmate semipalmated semipalmation semipanic semipapal semipapist semiparallel semiparalysis semiparameter semiparasitic semiparasitism semipaste semipastoral semipasty semipause semipeace semipectinate semipectinated semipectoral semiped semipedal semipellucid semipellucidity semipendent semipenniform semiperfect semiperimeter semiperimetry semiperiphery semipermanent semipermeability semipermeable semiperoid semiperspicuous semipertinent semipervious semipetaloid semipetrified semiphase semiphilologist semiphilosophic semiphilosophical semiphlogisticated semiphonotypy semiphosphorescent semipinacolic semipinacolin semipinnate semipiscine semiplantigrade semiplastic semiplumaceous semiplume semipolar semipolitical semipolitician semipoor semipopish semipopular semiporcelain semiporous semiporphyritic semiportable semipostal semipractical semiprecious semipreservation semiprimigenous semiprivacy semiprivate semipro semiprofane semiprofessional semiprofessionalized semipronation semiprone semipronominal semiproof semiproselyte semiprosthetic semiprostrate semiprotectorate semiproven semipublic semipupa semipurulent semiputrid semipyramidal semipyramidical semipyritic semiquadrangle semiquadrantly semiquadrate semiquantitative semiquantitatively semiquartile semiquaver semiquietism semiquietist semiquinquefid semiquintile semiquote semiradial semiradiate Semiramis Semiramize semirapacious semirare semirattlesnake semiraw semirebellion semirecondite semirecumbent semirefined semireflex semiregular semirelief semireligious semireniform semirepublican semiresinous semiresolute semirespectability semirespectable semireticulate semiretirement semiretractile semireverberatory semirevolute semirevolution semirevolutionist semirhythm semiriddle semirigid semiring semiroll semirotary semirotating semirotative semirotatory semirotund semirotunda semiround semiroyal semiruin semirural semirustic semis semisacerdotal semisacred semisagittate semisaint semisaline semisaltire semisaprophyte semisaprophytic semisarcodic semisatiric semisaturation semisavage semisavagedom semisavagery semiscenic semischolastic semiscientific semiseafaring semisecondary semisecrecy semisecret semisection semisedentary semisegment semisensuous semisentient semisentimental semiseparatist semiseptate semiserf semiserious semiseriously semiseriousness semiservile semisevere semiseverely semiseverity semisextile semishady semishaft semisheer semishirker semishrub semishrubby semisightseeing semisilica semisimious semisimple semisingle semisixth semiskilled semislave semismelting semismile semisocial semisocialism semisociative semisocinian semisoft semisolemn semisolemnity semisolemnly semisolid semisolute semisomnambulistic semisomnolence semisomnous semisopor semisovereignty semispan semispeculation semisphere semispheric semispherical semispheroidal semispinalis semispiral semispiritous semispontaneity semispontaneous semispontaneously semispontaneousness semisport semisporting semisquare semistagnation semistaminate semistarvation semistarved semistate semisteel semistiff semistill semistock semistory semistratified semistriate semistriated semistuporous semisubterranean semisuburban semisuccess semisuccessful semisuccessfully semisucculent semisupernatural semisupinated semisupination semisupine semisuspension semisymmetric semita semitact semitae semitailored semital semitandem semitangent semitaur Semite semitechnical semiteetotal semitelic semitendinosus semitendinous semiterete semiterrestrial semitertian semitesseral semitessular semitheological semithoroughfare Semitic Semiticism Semiticize Semitics semitime Semitism Semitist Semitization Semitize semitonal semitonally semitone semitonic semitonically semitontine semitorpid semitour semitrailer semitrained semitransept semitranslucent semitransparency semitransparent semitransverse semitreasonable semitrimmed semitropic semitropical semitropics semitruth semituberous semitubular semiuncial semiundressed semiuniversalist semiupright semiurban semiurn semivalvate semivault semivector semivegetable semivertebral semiverticillate semivibration semivirtue semiviscid semivital semivitreous semivitrification semivitrified semivocal semivocalic semivolatile semivolcanic semivoluntary semivowel semivulcanized semiwaking semiwarfare semiweekly semiwild semiwoody semiyearly semmet semmit Semnae Semnones Semnopithecinae semnopithecine Semnopithecus semola semolella semolina semological semology Semostomae semostomeous semostomous semperannual sempergreen semperidentical semperjuvenescent sempervirent sempervirid Sempervivum sempitern sempiternal sempiternally sempiternity sempiternize sempiternous sempstrywork semsem semuncia semuncial sen Senaah senaite senam senarian senarius senarmontite senary senate senator senatorial senatorially senatorian senatorship senatory senatress senatrices senatrix sence Senci sencion send sendable sendal sendee sender sending Seneca Senecan Senecio senecioid senecionine senectitude senectude senectuous senega Senegal Senegalese Senegambian senegin senesce senescence senescent seneschal seneschally seneschalship seneschalsy seneschalty sengreen senicide Senijextee senile senilely senilism senility senilize senior seniority seniorship Senlac Senna senna sennegrass sennet sennight sennit sennite senocular Senones Senonian sensa sensable sensal sensate sensation sensational sensationalism sensationalist sensationalistic sensationalize sensationally sensationary sensationish sensationism sensationist sensationistic sensationless sensatorial sensatory sense sensed senseful senseless senselessly senselessness sensibilia sensibilisin sensibilitist sensibilitous sensibility sensibilium sensibilization sensibilize sensible sensibleness sensibly sensical sensifacient sensiferous sensific sensificatory sensifics sensify sensigenous sensile sensilia sensilla sensillum sension sensism sensist sensistic sensitive sensitively sensitiveness sensitivity sensitization sensitize sensitizer sensitometer sensitometric sensitometry sensitory sensive sensize senso sensomobile sensomobility sensomotor sensoparalysis sensor sensoria sensorial sensoriglandular sensorimotor sensorimuscular sensorium sensorivascular sensorivasomotor sensorivolitional sensory sensual sensualism sensualist sensualistic sensuality sensualization sensualize sensually sensualness sensuism sensuist sensum sensuosity sensuous sensuously sensuousness sensyne sent sentence sentencer sentential sententially sententiarian sententiarist sententiary sententiosity sententious sententiously sententiousness sentience sentiendum sentient sentiently sentiment sentimental sentimentalism sentimentalist sentimentality sentimentalization sentimentalize sentimentalizer sentimentally sentimenter sentimentless sentinel sentinellike sentinelship sentinelwise sentisection sentition sentry Senusi Senusian Senusism sepad sepal sepaled sepaline sepalled sepalody sepaloid separability separable separableness separably separata separate separatedly separately separateness separates separatical separating separation separationism separationist separatism separatist separatistic separative separatively separativeness separator separatory separatress separatrix separatum Sepharad Sephardi Sephardic Sephardim Sepharvites sephen sephiric sephirothic sepia sepiaceous sepialike sepian sepiarian sepiary sepic sepicolous Sepiidae sepiment sepioid Sepioidea Sepiola Sepiolidae sepiolite sepion sepiost sepiostaire sepium sepone sepoy seppuku seps Sepsidae sepsine sepsis Sept sept septa septal septan septane septangle septangled septangular septangularness septarian septariate septarium septate septated septation septatoarticulate septavalent septave septcentenary septectomy September Septemberer Septemberism Septemberist Septembral Septembrian Septembrist Septembrize Septembrizer septemdecenary septemfid septemfluous septemfoliate septemfoliolate septemia septempartite septemplicate septemvious septemvir septemvirate septemviri septenar septenarian septenarius septenary septenate septendecennial septendecimal septennary septennate septenniad septennial septennialist septenniality septennially septennium septenous Septentrio Septentrion septentrional septentrionality septentrionally septentrionate septentrionic septerium septet septfoil Septi Septibranchia Septibranchiata septic septical septically septicemia septicemic septicidal septicidally septicity septicization septicolored septicopyemia septicopyemic septier septifarious septiferous septifluous septifolious septiform septifragal septifragally septilateral septile septillion septillionth septimal septimanal septimanarian septime septimetritis septimole septinsular septipartite septisyllabic septisyllable septivalent septleva Septobasidium septocosta septocylindrical Septocylindrium septodiarrhea septogerm Septogloeum septoic septole septomarginal septomaxillary septonasal Septoria septotomy septship septuagenarian septuagenarianism septuagenary septuagesima Septuagint septuagint Septuagintal septulate septulum septum septuncial septuor septuple septuplet septuplicate septuplication sepulcher sepulchral sepulchralize sepulchrally sepulchrous sepultural sepulture sequa sequacious sequaciously sequaciousness sequacity Sequan Sequani Sequanian sequel sequela sequelae sequelant sequence sequencer sequency sequent sequential sequentiality sequentially sequently sequest sequester sequestered sequesterment sequestra sequestrable sequestral sequestrate sequestration sequestrator sequestratrices sequestratrix sequestrectomy sequestrotomy sequestrum sequin sequitur Sequoia ser sera serab Serabend seragli seraglio serai serail seral seralbumin seralbuminous serang serape Serapea Serapeum seraph seraphic seraphical seraphically seraphicalness seraphicism seraphicness seraphim seraphina seraphine seraphism seraphlike seraphtide Serapias Serapic Serapis Serapist serasker seraskerate seraskier seraskierat serau seraw Serb Serbdom Serbian Serbize Serbonian Serbophile Serbophobe sercial serdab Sere sere Serean sereh Serena serenade serenader serenata serenate Serendib serendibite serendipity serendite serene serenely sereneness serenify serenissime serenissimi serenissimo serenity serenize Serenoa Serer Seres sereward serf serfage serfdom serfhood serfish serfishly serfishness serfism serflike serfship Serge serge sergeancy sergeant sergeantcy sergeantess sergeantry sergeantship sergeanty sergedesoy serger sergette serging Sergius serglobulin Seri serial serialist seriality serialization serialize serially Serian seriary seriate seriately seriatim seriation Seric Sericana sericate sericated sericea sericeotomentose sericeous sericicultural sericiculture sericiculturist sericin sericipary sericite sericitic sericitization Sericocarpus sericteria sericterium serictery sericultural sericulture sericulturist seriema series serif serific Seriform serigraph serigrapher serigraphy serimeter serin serine serinette seringa seringal seringhi Serinus serio seriocomedy seriocomic seriocomical seriocomically seriogrotesque Seriola Seriolidae serioline serioludicrous seriopantomimic serioridiculous seriosity serious seriously seriousness seripositor Serjania serjeant serment sermo sermocination sermocinatrix sermon sermoneer sermoner sermonesque sermonet sermonettino sermonic sermonically sermonics sermonish sermonism sermonist sermonize sermonizer sermonless sermonoid sermonolatry sermonology sermonproof sermonwise sermuncle sernamby sero seroalbumin seroalbuminuria seroanaphylaxis serobiological serocolitis serocyst serocystic serodermatosis serodermitis serodiagnosis serodiagnostic seroenteritis seroenzyme serofibrinous serofibrous serofluid serogelatinous serohemorrhagic serohepatitis seroimmunity serolactescent serolemma serolin serolipase serologic serological serologically serologist serology seromaniac seromembranous seromucous seromuscular seron seronegative seronegativity seroon seroot seroperitoneum serophthisis serophysiology seroplastic seropneumothorax seropositive seroprevention seroprognosis seroprophylaxis seroprotease seropuriform seropurulent seropus seroreaction serosa serosanguineous serosanguinolent seroscopy serositis serosity serosynovial serosynovitis serotherapeutic serotherapeutics serotherapist serotherapy serotina serotinal serotine serotinous serotoxin serous serousness serovaccine serow serozyme Serpari serpedinous Serpens Serpent serpent serpentaria Serpentarian Serpentarii serpentarium Serpentarius serpentary serpentcleide serpenteau Serpentes serpentess Serpentian serpenticidal serpenticide Serpentid serpentiferous serpentiform serpentina serpentine serpentinely Serpentinian serpentinic serpentiningly serpentinization serpentinize serpentinoid serpentinous Serpentis serpentivorous serpentize serpentlike serpently serpentoid serpentry serpentwood serphid Serphidae serphoid Serphoidea serpierite serpiginous serpiginously serpigo serpivolant serpolet Serpula serpula Serpulae serpulae serpulan serpulid Serpulidae serpulidan serpuline serpulite serpulitic serpuloid serra serradella serrage serran serrana serranid Serranidae Serrano serrano serranoid Serranus Serrasalmo serrate serrated serratic serratiform serratile serration serratirostral serratocrenate serratodentate serratodenticulate serratoglandulous serratospinose serrature serricorn Serricornia Serridentines Serridentinus serried serriedly serriedness Serrifera serriferous serriform serriped serrirostrate serrulate serrulated serrulation serry sert serta Sertularia sertularian Sertulariidae sertularioid sertule sertulum sertum serum serumal serut servable servage serval servaline servant servantcy servantdom servantess servantless servantlike servantry servantship servation serve servente serventism server servery servet Servetian Servetianism Servian service serviceability serviceable serviceableness serviceably serviceberry serviceless servicelessness serviceman Servidor servidor servient serviential serviette servile servilely servileness servilism servility servilize serving servingman servist Servite servitor servitorial servitorship servitress servitrix servitude serviture Servius servo servomechanism servomotor servulate serwamby sesame sesamoid sesamoidal sesamoiditis Sesamum Sesban Sesbania sescuple Seseli Seshat Sesia Sesiidae sesma sesqui sesquialter sesquialtera sesquialteral sesquialteran sesquialterous sesquibasic sesquicarbonate sesquicentennial sesquichloride sesquiduplicate sesquihydrate sesquihydrated sesquinona sesquinonal sesquioctava sesquioctaval sesquioxide sesquipedal sesquipedalian sesquipedalianism sesquipedality sesquiplicate sesquiquadrate sesquiquarta sesquiquartal sesquiquartile sesquiquinta sesquiquintal sesquiquintile sesquisalt sesquiseptimal sesquisextal sesquisilicate sesquisquare sesquisulphate sesquisulphide sesquisulphuret sesquiterpene sesquitertia sesquitertial sesquitertian sesquitertianal sess sessile sessility Sessiliventres session sessional sessionary sessions sesterce sestertium sestet sesti sestiad Sestian sestina sestine sestole sestuor Sesuto Sesuvium set seta setaceous setaceously setae setal Setaria setarious setback setbolt setdown setfast Seth seth sethead Sethian Sethic Sethite Setibo setier Setifera setiferous setiform setigerous setiparous setirostral setline setness setoff seton Setophaga Setophaginae setophagine setose setous setout setover setscrew setsman sett settable settaine settee setter settergrass setterwort setting settle settleable settled settledly settledness settlement settler settlerdom settling settlings settlor settsman setula setule setuliform setulose setulous setup setwall setwise setwork seugh Sevastopol seven sevenbark sevener sevenfold sevenfolded sevenfoldness sevennight sevenpence sevenpenny sevenscore seventeen seventeenfold seventeenth seventeenthly seventh seventhly seventieth seventy seventyfold sever severable several severalfold severality severalize severally severalness severalth severalty severance severation severe severedly severely severeness severer Severian severingly severish severity severization severize severy Sevillian sew sewable sewage sewan sewed sewellel sewen sewer sewerage sewered sewerless sewerlike sewerman sewery sewing sewless sewn sewround sex sexadecimal sexagenarian sexagenarianism sexagenary Sexagesima sexagesimal sexagesimally sexagesimals sexagonal sexangle sexangled sexangular sexangularly sexannulate sexarticulate sexcentenary sexcuspidate sexdigital sexdigitate sexdigitated sexdigitism sexed sexenary sexennial sexennially sexennium sexern sexfarious sexfid sexfoil sexhood sexifid sexillion sexiped sexipolar sexisyllabic sexisyllable sexitubercular sexivalence sexivalency sexivalent sexless sexlessly sexlessness sexlike sexlocular sexly sexological sexologist sexology sexpartite sexradiate sext sextactic sextain sextan sextans Sextant sextant sextantal sextar sextarii sextarius sextary sextennial sextern sextet sextic sextile Sextilis sextillion sextillionth sextipara sextipartite sextipartition sextiply sextipolar sexto sextodecimo sextole sextolet sexton sextoness sextonship sextry sextubercular sextuberculate sextula sextulary sextumvirate sextuple sextuplet sextuplex sextuplicate sextuply sexual sexuale sexualism sexualist sexuality sexualization sexualize sexually sexuous sexupara sexuparous sexy sey seybertite Seymeria sfoot Sgad sgraffiato sgraffito sh sha shaatnez shab Shaban shabash Shabbath shabbed shabbify shabbily shabbiness shabble shabby shabbyish shabrack shabunder Shabuoth shachle shachly shack shackanite shackatory shackbolt shackland shackle shacklebone shackledom shackler shacklewise shackling shackly shacky shad shadbelly shadberry shadbird shadbush shadchan shaddock shade shaded shadeful shadeless shadelessness shader shadetail shadflower shadily shadine shadiness shading shadkan shadoof shadow shadowable shadowbox shadowboxing shadowed shadower shadowfoot shadowgram shadowgraph shadowgraphic shadowgraphist shadowgraphy shadowily shadowiness shadowing shadowishly shadowist shadowland shadowless shadowlessness shadowlike shadowly shadowy shadrach shady shaffle Shafiite shaft shafted shafter shaftfoot shafting shaftless shaftlike shaftman shaftment shaftsman shaftway shafty shag shaganappi shagbag shagbark shagged shaggedness shaggily shagginess shaggy Shagia shaglet shaglike shagpate shagrag shagreen shagreened shagroon shagtail shah Shahaptian shaharith shahdom shahi shahin shahzada Shaigia shaikh Shaikiyeh shaitan Shaiva Shaivism Shaka shakable shake shakeable shakebly shakedown shakefork shaken shakenly shakeout shakeproof Shaker shaker shakerag Shakerdom Shakeress Shakerism Shakerlike shakers shakescene Shakespearean Shakespeareana Shakespeareanism Shakespeareanly Shakespearize Shakespearolater Shakespearolatry shakha shakily shakiness shaking shakingly shako shaksheer Shakta Shakti shakti Shaktism shaku shaky Shakyamuni Shalako shale shalelike shaleman shall shallal shallon shalloon shallop shallopy shallot shallow shallowbrained shallowhearted shallowish shallowist shallowly shallowness shallowpate shallowpated shallows shallowy shallu shalom shalt shalwar shaly Sham sham shama shamable shamableness shamably shamal shamalo shaman shamaness shamanic shamanism shamanist shamanistic shamanize shamateur shamba Shambala shamble shambling shamblingly shambrier Shambu shame shameable shamed shameface shamefaced shamefacedly shamefacedness shamefast shamefastly shamefastness shameful shamefully shamefulness shameless shamelessly shamelessness shameproof shamer shamesick shameworthy shamianah shamir Shammar shammed shammer shammick shamming shammish shammock shammocking shammocky shammy shampoo shampooer shamrock shamroot shamsheer Shan shan shanachas shanachie Shandean shandry shandrydan Shandy shandy shandygaff Shandyism Shang Shangalla shangan Shanghai shanghai shanghaier shank shanked shanker shankings shankpiece shanksman shanna shanny shansa shant Shantung shanty shantylike shantyman shantytown shap shapable Shape shape shaped shapeful shapeless shapelessly shapelessness shapeliness shapely shapen shaper shapeshifter shapesmith shaping shapingly shapometer shaps Shaptan shapy sharable shard Shardana sharded shardy share shareable sharebone sharebroker sharecrop sharecropper shareholder shareholdership shareman sharepenny sharer shareship sharesman sharewort Sharezer shargar Sharia Sharira shark sharkful sharkish sharklet sharklike sharkship sharkskin sharky sharn sharnbud sharny sharp sharpen sharpener sharper sharpie sharpish sharply sharpness sharps sharpsaw sharpshin sharpshod sharpshooter sharpshooting sharptail sharpware sharpy Sharra sharrag sharry Shasta shastaite Shastan shaster shastra shastraik shastri shastrik shat shatan shathmont shatter shatterbrain shatterbrained shatterer shatterheaded shattering shatteringly shatterment shatterpated shatterproof shatterwit shattery shattuckite shauchle shaugh shaul Shaula shaup shauri shauwe shavable shave shaveable shaved shavee shaveling shaven shaver shavery Shavese shavester shavetail shaveweed Shavian Shaviana Shavianism shaving shavings shaw Shawanese Shawano shawl shawled shawling shawlless shawllike shawlwise shawm Shawnee shawneewood shawny Shawwal shawy shay Shaysite she shea sheading sheaf sheafage sheaflike sheafripe sheafy sheal shealing shear shearbill sheard shearer sheargrass shearhog shearing shearless shearling shearman shearmouse shears shearsman sheartail shearwater shearwaters sheat sheatfish sheath sheathbill sheathe sheathed sheather sheathery sheathing sheathless sheathlike sheathy sheave sheaved sheaveless sheaveman shebang Shebat shebeen shebeener Shechem Shechemites shed shedded shedder shedding sheder shedhand shedlike shedman shedwise shee sheely sheen sheenful sheenless sheenly sheeny sheep sheepback sheepberry sheepbine sheepbiter sheepbiting sheepcote sheepcrook sheepfaced sheepfacedly sheepfacedness sheepfold sheepfoot sheepgate sheephead sheepheaded sheephearted sheepherder sheepherding sheephook sheephouse sheepify sheepish sheepishly sheepishness sheepkeeper sheepkeeping sheepkill sheepless sheeplet sheeplike sheepling sheepman sheepmaster sheepmonger sheepnose sheepnut sheeppen sheepshank sheepshead sheepsheadism sheepshear sheepshearer sheepshearing sheepshed sheepskin sheepsplit sheepsteal sheepstealer sheepstealing sheepwalk sheepwalker sheepweed sheepy sheer sheered sheering sheerly sheerness sheet sheetage sheeted sheeter sheetflood sheetful sheeting sheetless sheetlet sheetlike sheetling sheetways sheetwise sheetwork sheetwriting sheety Sheffield shehitah sheik sheikdom sheikhlike sheikhly sheiklike sheikly Sheila shekel Shekinah shela sheld sheldapple shelder sheldfowl sheldrake shelduck shelf shelfback shelffellow shelfful shelflist shelfmate shelfpiece shelfroom shelfworn shelfy shell shellac shellacker shellacking shellapple shellback shellblow shellblowing shellbound shellburst shellcracker shelleater shelled sheller Shelleyan Shelleyana shellfire shellfish shellfishery shellflower shellful shellhead shelliness shelling shellman shellmonger shellproof shellshake shellum shellwork shellworker shelly shellycoat shelta shelter shelterage sheltered shelterer shelteringly shelterless shelterlessness shelterwood sheltery sheltron shelty shelve shelver shelving shelvingly shelvingness shelvy Shelyak Shemaka sheminith Shemite Shemitic Shemitish Shemu Shen shenanigan shend sheng Shenshai Sheol sheolic shepherd shepherdage shepherddom shepherdess shepherdhood Shepherdia shepherdish shepherdism shepherdize shepherdless shepherdlike shepherdling shepherdly shepherdry sheppeck sheppey shepstare sher Sherani Sherardia sherardize sherardizer Sheratan Sheraton sherbacha sherbet sherbetlee sherbetzide sheriat sherif sherifa sherifate sheriff sheriffalty sheriffdom sheriffess sheriffhood sheriffry sheriffship sheriffwick sherifi sherifian sherify sheristadar Sheriyat sherlock Sherpa Sherramoor sherry Sherrymoor sherryvallies Shesha sheth Shetland Shetlander Shetlandic sheugh sheva shevel sheveled shevri shewa shewbread shewel sheyle shi Shiah shibah shibar shibboleth shibbolethic shibuichi shice shicer shicker shickered shide shied shiel shield shieldable shieldboard shielddrake shielded shielder shieldflower shielding shieldless shieldlessly shieldlessness shieldlike shieldling shieldmaker shieldmay shieldtail shieling shier shies shiest shift shiftable shiftage shifter shiftful shiftfulness shiftily shiftiness shifting shiftingly shiftingness shiftless shiftlessly shiftlessness shifty Shigella shiggaion shigram shih Shiism Shiite Shiitic Shik shikar shikara shikargah shikari shikasta shikimi shikimic shikimole shikimotoxin shikken shiko shikra shilf shilfa Shilh Shilha shill shilla shillaber shillelagh shillet shillety shillhouse shillibeer shilling shillingless shillingsworth shilloo Shilluh Shilluk Shiloh shilpit shim shimal Shimei shimmer shimmering shimmeringly shimmery shimmy Shimonoseki shimose shimper shin Shina shinaniging shinarump shinbone shindig shindle shindy shine shineless shiner shingle shingled shingler shingles shinglewise shinglewood shingling shingly shinily shininess shining shiningly shiningness shinleaf Shinnecock shinner shinnery shinning shinny shinplaster shintiyan Shinto Shintoism Shintoist Shintoistic Shintoize shinty Shinwari shinwood shiny shinza ship shipboard shipbound shipboy shipbreaking shipbroken shipbuilder shipbuilding shipcraft shipentine shipful shipkeeper shiplap shipless shiplessly shiplet shipload shipman shipmanship shipmast shipmaster shipmate shipmatish shipment shipowner shipowning shippable shippage shipped shipper shipping shipplane shippo shippon shippy shipshape shipshapely shipside shipsmith shipward shipwards shipway shipwork shipworm shipwreck shipwrecky shipwright shipwrightery shipwrightry shipyard shirakashi shirallee Shiraz shire shirehouse shireman shirewick shirk shirker shirky shirl shirlcock shirpit shirr shirring shirt shirtband shirtiness shirting shirtless shirtlessness shirtlike shirtmaker shirtmaking shirtman shirttail shirtwaist shirty Shirvan shish shisham shisn shita shitepoke shither shittah shittim shittimwood shiv Shivaism Shivaist Shivaistic Shivaite shivaree shive shiver shivereens shiverer shivering shiveringly shiverproof shiversome shiverweed shivery shivey shivoo shivy shivzoku Shkupetar Shlu Shluh sho Shoa shoad shoader shoal shoalbrain shoaler shoaliness shoalness shoalwise shoaly shoat shock shockability shockable shockedness shocker shockheaded shocking shockingly shockingness shocklike shockproof shod shodden shoddily shoddiness shoddy shoddydom shoddyism shoddyite shoddylike shoddyward shoddywards shode shoder shoe shoebill shoebinder shoebindery shoebinding shoebird shoeblack shoeboy shoebrush shoecraft shoeflower shoehorn shoeing shoeingsmith shoelace shoeless shoemaker shoemaking shoeman shoepack shoer shoescraper shoeshine shoeshop shoesmith shoestring shoewoman shoful shog shogaol shoggie shoggle shoggly shogi shogun shogunal shogunate shohet shoji Shojo shola shole Shona shone shoneen shonkinite shoo shood shoofa shoofly shooi shook shool shooldarry shooler shoop shoopiltie shoor shoot shootable shootboard shootee shooter shoother shooting shootist shootman shop shopboard shopbook shopboy shopbreaker shopbreaking shopfolk shopful shopgirl shopgirlish shophar shopkeeper shopkeeperess shopkeeperish shopkeeperism shopkeepery shopkeeping shopland shoplet shoplifter shoplifting shoplike shopmaid shopman shopmark shopmate shopocracy shopocrat shoppe shopper shopping shoppish shoppishness shoppy shopster shoptalk shopwalker shopwear shopwife shopwindow shopwoman shopwork shopworker shopworn shoq Shor shor shoran shore Shorea shoreberry shorebush shored shoregoing shoreland shoreless shoreman shorer shoreside shoresman shoreward shorewards shoreweed shoreyer shoring shorling shorn short shortage shortbread shortcake shortchange shortchanger shortclothes shortcoat shortcomer shortcoming shorten shortener shortening shorter shortfall shorthand shorthanded shorthandedness shorthander shorthead shorthorn Shortia shortish shortly shortness shorts shortschat shortsighted shortsightedly shortsightedness shortsome shortstaff shortstop shorttail Shortzy Shoshonean shoshonite shot shotbush shote shotgun shotless shotlike shotmaker shotman shotproof shotsman shotstar shott shotted shotten shotter shotty Shotweld shou should shoulder shouldered shoulderer shoulderette shouldering shouldna shouldnt shoupeltin shout shouter shouting shoutingly shoval shove shovegroat shovel shovelard shovelbill shovelboard shovelfish shovelful shovelhead shovelmaker shovelman shovelnose shovelweed shover show showable showance showbird showboard showboat showboater showboating showcase showdom showdown shower showerer showerful showeriness showerless showerlike showerproof showery showily showiness showing showish showless showman showmanism showmanry showmanship shown showpiece showroom showup showworthy showy showyard shoya shrab shraddha shradh shraf shrag shram shrank shrap shrapnel shrave shravey shreadhead shred shredcock shredder shredding shreddy shredless shredlike Shree shree shreeve shrend shrew shrewd shrewdish shrewdly shrewdness shrewdom shrewdy shrewish shrewishly shrewishness shrewlike shrewly shrewmouse shrewstruck shriek shrieker shriekery shriekily shriekiness shriekingly shriekproof shrieky shrieval shrievalty shrift shrike shrill shrilling shrillish shrillness shrilly shrimp shrimper shrimpfish shrimpi shrimpish shrimpishness shrimplike shrimpy shrinal Shrine shrine shrineless shrinelet shrinelike Shriner shrink shrinkable shrinkage shrinkageproof shrinker shrinkhead shrinking shrinkingly shrinkproof shrinky shrip shrite shrive shrivel shriven shriver shriving shroff shrog Shropshire shroud shrouded shrouding shroudless shroudlike shroudy Shrove shrove shrover Shrovetide shrub shrubbed shrubbery shrubbiness shrubbish shrubby shrubland shrubless shrublet shrublike shrubwood shruff shrug shruggingly shrunk shrunken shrups Shtokavski shtreimel Shu shuba shubunkin shuck shucker shucking shuckins shuckpen shucks shudder shudderful shudderiness shudderingly shuddersome shuddery shuff shuffle shuffleboard shufflecap shuffler shufflewing shuffling shufflingly shug Shuhali Shukria Shukulumbwe shul Shulamite shuler shulwaurs shumac shun Shunammite shune shunless shunnable shunner shunt shunter shunting shure shurf shush shusher Shuswap shut shutdown shutness shutoff shutout shuttance shutten shutter shuttering shutterless shutterwise shutting shuttle shuttlecock shuttleheaded shuttlelike shuttlewise shwanpan shy shydepoke shyer shyish Shylock Shylockism shyly shyness shyster si Sia siak sial sialaden sialadenitis sialadenoncus sialagogic sialagogue sialagoguic sialemesis Sialia sialic sialid Sialidae sialidan Sialis sialoangitis sialogenous sialoid sialolith sialolithiasis sialology sialorrhea sialoschesis sialosemeiology sialosis sialostenosis sialosyrinx sialozemia Siam siamang Siamese sib Sibbaldus sibbed sibbens sibber sibboleth sibby Siberian Siberic siberite sibilance sibilancy sibilant sibilantly sibilate sibilatingly sibilator sibilatory sibilous sibilus Sibiric sibling sibness sibrede sibship sibyl sibylesque sibylic sibylism sibylla sibylline sibyllist sic Sicambri Sicambrian Sicana Sicani Sicanian sicarian sicarious sicarius sicca siccaneous siccant siccate siccation siccative siccimeter siccity sice Sicel Siceliot Sicilian sicilian siciliana Sicilianism sicilica sicilicum sicilienne sicinnian sick sickbed sicken sickener sickening sickeningly sicker sickerly sickerness sickhearted sickish sickishly sickishness sickle sicklebill sickled sicklelike sickleman sicklemia sicklemic sicklepod sickler sicklerite sickless sickleweed sicklewise sicklewort sicklied sicklily sickliness sickling sickly sickness sicknessproof sickroom sicsac sicula sicular Siculi Siculian Sicyonian Sicyonic Sicyos Sida Sidalcea sidder Siddha Siddhanta Siddhartha Siddhi siddur side sideage sidearm sideboard sidebone sidebones sideburns sidecar sidecarist sidecheck sided sidedness sideflash sidehead sidehill sidekicker sidelang sideless sideline sideling sidelings sidelingwise sidelong sidenote sidepiece sider sideral sideration siderealize sidereally siderean siderin siderism siderite sideritic Sideritis siderognost siderographic siderographical siderographist siderography siderolite siderology sideromagnetic sideromancy sideromelane sideronatrite sideronym sideroscope siderose siderosis siderostat siderostatic siderotechny siderous Sideroxylon sidership siderurgical siderurgy sides sidesaddle sideshake sideslip sidesman sidesplitter sidesplitting sidesplittingly sidesway sideswipe sideswiper sidetrack sidewalk sideward sidewards sideway sideways sidewinder sidewipe sidewiper sidewise sidhe sidi siding sidle sidler sidling sidlingly Sidney Sidonian Sidrach sidth sidy sie siege siegeable siegecraft siegenite sieger siegework Siegfried Sieglingia Siegmund Siena Sienese sienna sier siering sierozem Sierra sierra sierran siesta siestaland Sieva sieve sieveful sievelike siever Sieversia sievings sievy sifac sifaka Sifatite sife siffilate siffle sifflement sifflet sifflot sift siftage sifted sifter sifting sig Siganidae Siganus sigatoka Sigaultian sigger sigh sigher sighful sighfully sighing sighingly sighingness sighless sighlike sight sightable sighted sighten sightening sighter sightful sightfulness sighthole sighting sightless sightlessly sightlessness sightlily sightliness sightly sightproof sightworthiness sightworthy sighty sigil sigilative Sigillaria Sigillariaceae sigillariaceous sigillarian sigillarid sigillarioid sigillarist sigillaroid sigillary sigillate sigillated sigillation sigillistic sigillographer sigillographical sigillography sigillum sigla siglarian siglos Sigma sigma sigmaspire sigmate sigmatic sigmation sigmatism sigmodont Sigmodontes sigmoid sigmoidal sigmoidally sigmoidectomy sigmoiditis sigmoidopexy sigmoidoproctostomy sigmoidorectostomy sigmoidoscope sigmoidoscopy sigmoidostomy Sigmund sign signable signal signalee signaler signalese signaletic signaletics signalism signalist signality signalize signally signalman signalment signary signatary signate signation signator signatory signatural signature signatureless signaturist signboard signee signer signet signetwise signifer signifiable significal significance significancy significant significantly significantness significate signification significatist significative significatively significativeness significator significatory significatrix significature significavit significian significs signifier signify signior signiorship signist signless signlike signman signorial signorship signory signpost signum signwriter Sihasapa Sika sika sikar sikatch sike sikerly sikerness siket Sikh sikhara Sikhism sikhra Sikinnis Sikkimese Siksika sil silage silaginoid silane Silas silbergroschen silcrete sile silen Silenaceae silenaceous Silenales silence silenced silencer silency Silene sileni silenic silent silential silentiary silentious silentish silently silentness silenus silesia Silesian Siletz silex silexite silhouette silhouettist silhouettograph silica silicam silicane silicate silication silicatization Silicea silicean siliceocalcareous siliceofelspathic siliceofluoric siliceous silicic silicicalcareous silicicolous silicide silicidize siliciferous silicification silicifluoric silicifluoride silicify siliciophite silicious Silicispongiae silicium siliciuretted silicize silicle silico silicoacetic silicoalkaline silicoaluminate silicoarsenide silicocalcareous silicochloroform silicocyanide silicoethane silicoferruginous Silicoflagellata Silicoflagellatae silicoflagellate Silicoflagellidae silicofluoric silicofluoride silicohydrocarbon Silicoidea silicomagnesian silicomanganese silicomethane silicon silicone siliconize silicononane silicopropane silicosis Silicospongiae silicotalcose silicotic silicotitanate silicotungstate silicotungstic silicula silicular silicule siliculose siliculous silicyl Silipan siliqua siliquaceous siliquae Siliquaria Siliquariidae silique siliquiferous siliquiform siliquose siliquous silk silkalene silkaline silked silken silker silkflower silkgrower silkie silkily silkiness silklike silkman silkness silksman silktail silkweed silkwoman silkwood silkwork silkworks silkworm silky sill sillabub silladar Sillaginidae Sillago sillandar sillar siller Sillery sillibouk sillikin sillily sillimanite silliness sillock sillograph sillographer sillographist sillometer sillon silly sillyhood sillyhow sillyish sillyism sillyton silo siloist Silpha silphid Silphidae silphium silt siltage siltation silting siltlike silty silundum Silures Silurian Siluric silurid Siluridae Siluridan siluroid Siluroidei Silurus silva silvan silvanity silvanry Silvanus silvendy silver silverback silverbeater silverbelly silverberry silverbill silverboom silverbush silvered silverer silvereye silverfin silverfish silverhead silverily silveriness silvering silverish silverite silverize silverizer silverleaf silverless silverlike silverling silverly silvern silverness silverpoint silverrod silverside silversides silverskin silversmith silversmithing silverspot silvertail silvertip silvertop silvervine silverware silverweed silverwing silverwood silverwork silverworker silvery Silvester Silvia silvical silvicolous silvics silvicultural silviculturally silviculture silviculturist Silvius Silybum silyl Sim sima Simaba simal simar Simarouba Simaroubaceae simaroubaceous simball simbil simblin simblot Simblum sime Simeon Simeonism Simeonite Simia simiad simial simian simianity simiesque Simiidae Simiinae similar similarity similarize similarly similative simile similimum similiter similitive similitude similitudinize simility similize similor simioid simious simiousness simity simkin simlin simling simmer simmeringly simmon simnel simnelwise simoleon Simon simoniac simoniacal simoniacally Simonian Simonianism simonious simonism Simonist simonist simony simool simoom simoon Simosaurus simous simp simpai simper simperer simperingly simple simplehearted simpleheartedly simpleheartedness simpleness simpler simpleton simpletonian simpletonianism simpletonic simpletonish simpletonism simplex simplexed simplexity simplicident Simplicidentata simplicidentate simplicist simplicitarian simplicity simplicize simplification simplificative simplificator simplified simplifiedly simplifier simplify simplism simplist simplistic simply simsim simson simulacra simulacral simulacre simulacrize simulacrum simulance simulant simular simulate simulation simulative simulatively simulator simulatory simulcast simuler simuliid Simuliidae simulioid Simulium simultaneity simultaneous simultaneously simultaneousness sin sina Sinae Sinaean Sinaic sinaite Sinaitic sinal sinalbin Sinaloa sinamay sinamine sinapate sinapic sinapine sinapinic Sinapis sinapis sinapism sinapize sinapoline sinarchism sinarchist sinarquism sinarquist sinarquista sinawa sincaline since sincere sincerely sincereness sincerity sincipital sinciput sind sinder Sindhi sindle sindoc sindon sindry sine sinecural sinecure sinecureship sinecurism sinecurist Sinesian sinew sinewed sinewiness sinewless sinewous sinewy sinfonia sinfonie sinfonietta sinful sinfully sinfulness sing singability singable singableness singally singarip singe singed singeing singeingly singer singey Singfo singh Singhalese singillatim singing singingly singkamas single singlebar singled singlehanded singlehandedly singlehandedness singlehearted singleheartedly singleheartedness singlehood singleness singler singles singlestick singlesticker singlet singleton singletree singlings singly Singpho Singsing singsong singsongy Singspiel singspiel singstress singular singularism singularist singularity singularization singularize singularly singularness singult singultous singultus sinh Sinhalese Sinian Sinic Sinicism Sinicization Sinicize Sinico Sinification Sinify sinigrin sinigrinase sinigrosid sinigroside Sinisian Sinism sinister sinisterly sinisterness sinisterwise sinistrad sinistral sinistrality sinistrally sinistration sinistrin sinistrocerebral sinistrocular sinistrodextral sinistrogyrate sinistrogyration sinistrogyric sinistromanual sinistrorsal sinistrorsally sinistrorse sinistrous sinistrously sinistruous Sinite Sinitic sink sinkable sinkage sinker sinkerless sinkfield sinkhead sinkhole sinking Sinkiuse sinkless sinklike sinkroom sinkstone sinky sinless sinlessly sinlessness sinlike sinnable sinnableness sinnen sinner sinneress sinnership sinnet Sinningia sinningly sinningness sinoatrial sinoauricular Sinogram sinoidal Sinolog Sinologer Sinological Sinologist Sinologue Sinology sinomenine Sinonism Sinophile Sinophilism sinopia Sinopic sinopite sinople sinproof Sinsiga sinsion sinsring sinsyne sinter Sinto sintoc Sintoism Sintoist Sintsink Sintu sinuate sinuated sinuatedentate sinuately sinuation sinuatocontorted sinuatodentate sinuatodentated sinuatopinnatifid sinuatoserrated sinuatoundulate sinuatrial sinuauricular sinuitis sinuose sinuosely sinuosity sinuous sinuously sinuousness Sinupallia sinupallial Sinupallialia Sinupalliata sinupalliate sinus sinusal sinusitis sinuslike sinusoid sinusoidal sinusoidally sinuventricular sinward siol Sion sion Sionite Siouan Sioux sip sipage sipe siper siphoid siphon siphonaceous siphonage siphonal Siphonales Siphonaptera siphonapterous Siphonaria siphonariid Siphonariidae Siphonata siphonate Siphoneae siphoneous siphonet siphonia siphonial Siphoniata siphonic Siphonifera siphoniferous siphoniform siphonium siphonless siphonlike Siphonobranchiata siphonobranchiate Siphonocladales Siphonocladiales siphonogam Siphonogama siphonogamic siphonogamous siphonogamy siphonoglyph siphonoglyphe siphonognathid Siphonognathidae siphonognathous Siphonognathus Siphonophora siphonophoran siphonophore siphonophorous siphonoplax siphonopore siphonorhinal siphonorhine siphonosome siphonostele siphonostelic siphonostely Siphonostoma Siphonostomata siphonostomatous siphonostome siphonostomous siphonozooid siphonula siphorhinal siphorhinian siphosome siphuncle siphuncled siphuncular Siphunculata siphunculate siphunculated Sipibo sipid sipidity siping sipling sipper sippet sippingly sippio Sipunculacea sipunculacean sipunculid Sipunculida sipunculoid Sipunculoidea Sipunculus sipylite Sir sir sircar sirdar sirdarship sire Siredon sireless siren sirene Sirenia sirenian sirenic sirenical sirenically Sirenidae sirening sirenize sirenlike sirenoid Sirenoidea Sirenoidei sireny sireship siress sirgang Sirian sirian Sirianian siriasis siricid Siricidae Siricoidea sirih siriometer Sirione siris Sirius sirkeer sirki sirky sirloin sirloiny Sirmian Sirmuellera siroc sirocco siroccoish siroccoishly sirpea sirple sirpoon sirrah sirree sirship siruaballi siruelas sirup siruped siruper sirupy Siryan Sis sis sisal siscowet sise sisel siserara siserary siserskite sish sisham sisi siskin Sisley sismotherapy siss Sisseton sissification sissify sissiness sissoo Sissu sissy sissyish sissyism sist Sistani sister sisterhood sisterin sistering sisterize sisterless sisterlike sisterliness sisterly sistern Sistine sistle sistomensin sistrum Sistrurus Sisymbrium Sisyphean Sisyphian Sisyphides Sisyphism Sisyphist Sisyphus Sisyrinchium sisyrinchium sit Sita sitao sitar sitatunga sitch site sitfast sith sithcund sithe sithement sithence sithens sitient sitio sitiology sitiomania sitiophobia Sitka Sitkan sitology sitomania Sitophilus sitophobia sitophobic sitosterin sitosterol sitotoxism Sitta sittee sitten sitter Sittidae Sittinae sittine sitting sittringy situal situate situated situation situational situla situlae situs Sium Siusi Siuslaw Siva siva Sivaism Sivaist Sivaistic Sivaite Sivan Sivapithecus sivathere Sivatheriidae Sivatheriinae sivatherioid Sivatherium siver sivvens Siwan Siwash siwash six sixain sixer sixfoil sixfold sixhaend sixhynde sixpence sixpenny sixpennyworth sixscore sixsome sixte sixteen sixteener sixteenfold sixteenmo sixteenth sixteenthly sixth sixthet sixthly sixtieth Sixtowns Sixtus sixty sixtyfold sixtypenny sizable sizableness sizably sizal sizar sizarship size sized sizeman sizer sizes siziness sizing sizy sizygia sizygium sizz sizzard sizzing sizzle sizzling sizzlingly sjambok skaddle skaff skaffie skag skaillie skainsmate skair skaitbird skal skalawag skaldship skance Skanda skandhas skart skasely Skat skat skate skateable skater skatikas skatiku skating skatist skatole skatosine skatoxyl skaw skean skeanockle skedaddle skedaddler skedge skedgewith skedlock skee skeed skeeg skeel skeeling skeely skeen skeenyie skeer skeered skeery skeesicks skeet skeeter skeezix skeg skegger skeif skeigh skeily skein skeiner skeipp skel skelder skelderdrake skeldrake skeletal skeletin skeletogenous skeletogeny skeletomuscular skeleton skeletonian skeletonic skeletonization skeletonize skeletonizer skeletonless skeletonweed skeletony skelf skelgoose skelic skell skellat skeller skelloch skellum skelly skelp skelper skelpin skelping skelter Skeltonian Skeltonic Skeltonical Skeltonics skemmel skemp sken skene skeo skeough skep skepful skeppist skeppund skeptic skeptical skeptically skepticalness skepticism skepticize sker skere skerret skerrick skerry sketch sketchability sketchable sketchbook sketchee sketcher sketchily sketchiness sketching sketchingly sketchist sketchlike sketchy skete sketiotai skeuomorph skeuomorphic skevish skew skewback skewbacked skewbald skewed skewer skewerer skewerwood skewings skewl skewly skewness skewwhiff skewwise skewy skey skeyting ski skiagram skiagraph skiagrapher skiagraphic skiagraphical skiagraphically skiagraphy skiameter skiametry skiapod skiapodous skiascope skiascopy skibby skibslast skice skid skidded skidder skidding skiddingly skiddoo skiddy Skidi skidpan skidproof skidway skied skieppe skiepper skier skies skiff skiffless skiffling skift skiing skijore skijorer skijoring skil skilder skildfel skilfish skill skillagalee skilled skillenton skillessness skillet skillful skillfully skillfulness skilligalee skilling skillion skilly skilpot skilts skim skimback skime skimmed skimmer skimmerton Skimmia skimming skimmingly skimmington skimmity skimp skimpily skimpiness skimpingly skimpy skin skinbound skinch skinflint skinflintily skinflintiness skinflinty skinful skink skinker skinking skinkle skinless skinlike skinned skinner skinnery skinniness skinning skinny skintight skinworm skiogram skiograph skiophyte skip skipbrain Skipetar skipjack skipjackly skipkennel skipman skippable skippel skipper skippered skippership skippery skippet skipping skippingly skipple skippund skippy skiptail skirl skirlcock skirling skirmish skirmisher skirmishing skirmishingly skirp skirr skirreh skirret skirt skirtboard skirted skirter skirting skirtingly skirtless skirtlike skirty skirwhit skirwort skit skite skiter skither Skitswish Skittaget Skittagetan skitter skittish skittishly skittishness skittle skittled skittler skittles skitty skittyboot skiv skive skiver skiverwood skiving skivvies sklate sklater sklent skleropelite sklinter skoal Skodaic skogbolite Skoinolon skokiaan Skokomish skomerite skoo skookum Skopets skoptsy skout skraeling skraigh skrike skrimshander skrupul skua skulduggery skulk skulker skulking skulkingly skull skullbanker skullcap skulled skullery skullfish skullful skully skulp skun skunk skunkbill skunkbush skunkdom skunkery skunkhead skunkish skunklet skunktop skunkweed skunky Skupshtina skuse skutterudite sky skybal skycraft Skye skyey skyful skyish skylark skylarker skyless skylight skylike skylook skyman skyphoi skyphos skyplast skyre skyrgaliard skyrocket skyrockety skysail skyscape skyscraper skyscraping skyshine skyugle skyward skywards skyway skywrite skywriter skywriting sla slab slabbed slabber slabberer slabbery slabbiness slabbing slabby slabman slabness slabstone slack slackage slacked slacken slackener slacker slackerism slacking slackingly slackly slackness slad sladang slade slae slag slaggability slaggable slagger slagging slaggy slagless slaglessness slagman slain slainte slaister slaistery slait slake slakeable slakeless slaker slaking slaky slam slammakin slammerkin slammock slammocking slammocky slamp slampamp slampant slander slanderer slanderful slanderfully slandering slanderingly slanderous slanderously slanderousness slanderproof slane slang slangily slanginess slangish slangishly slangism slangkop slangous slangster slanguage slangular slangy slank slant slantindicular slantindicularly slanting slantingly slantingways slantly slantways slantwise slap slapdash slapdashery slape slaphappy slapjack slapper slapping slapstick slapsticky slare slart slarth slash slashed slasher slashing slashingly slashy slat slatch slate slateful slatelike slatemaker slatemaking slater slateworks slateyard slath slather slatify slatiness slating slatish slatted slatter slattern slatternish slatternliness slatternly slatternness slattery slatting slaty slaughter slaughterer slaughterhouse slaughteringly slaughterman slaughterous slaughterously slaughteryard slaum Slav Slavdom Slave slave slaveborn slaved slaveholder slaveholding slaveland slaveless slavelet slavelike slaveling slavemonger slaveowner slaveownership slavepen slaver slaverer slavering slaveringly slavery Slavey slavey Slavi Slavian Slavic Slavicism Slavicize Slavification Slavify slavikite slaving Slavish slavish slavishly slavishness Slavism Slavist Slavistic Slavization Slavize slavocracy slavocrat slavocratic Slavonian Slavonianize Slavonic Slavonically Slavonicize Slavonish Slavonism Slavonization Slavonize Slavophile Slavophilism Slavophobe Slavophobist slaw slay slayable slayer slaying sleathy sleave sleaved sleaziness sleazy Sleb sleck sled sledded sledder sledding sledful sledge sledgeless sledgemeter sledger sledging sledlike slee sleech sleechy sleek sleeken sleeker sleeking sleekit sleekly sleekness sleeky sleep sleeper sleepered sleepful sleepfulness sleepify sleepily sleepiness sleeping sleepingly sleepland sleepless sleeplessly sleeplessness sleeplike sleepmarken sleepproof sleepry sleepwaker sleepwaking sleepwalk sleepwalker sleepwalking sleepward sleepwort sleepy sleepyhead sleer sleet sleetiness sleeting sleetproof sleety sleeve sleeveband sleeveboard sleeved sleeveen sleevefish sleeveful sleeveless sleevelessness sleevelet sleevelike sleever sleigh sleigher sleighing sleight sleightful sleighty slendang slender slenderish slenderize slenderly slenderness slent slepez slept slete sleuth sleuthdog sleuthful sleuthhound sleuthlike slew slewed slewer slewing sley sleyer slice sliceable sliced slicer slich slicht slicing slicingly slick slicken slickens slickenside slicker slickered slickery slicking slickly slickness slid slidable slidableness slidably slidage slidden slidder sliddery slide slideable slideableness slideably slided slidehead slideman slideproof slider slideway sliding slidingly slidingness slidometer slifter slight slighted slighter slightily slightiness slighting slightingly slightish slightly slightness slighty slim slime slimeman slimer slimily sliminess slimish slimishness slimly slimmish slimness slimpsy slimsy slimy sline sling slingball slinge slinger slinging slingshot slingsman slingstone slink slinker slinkily slinkiness slinking slinkingly slinkskin slinkweed slinky slip slipback slipband slipboard slipbody slipcase slipcoach slipcoat slipe slipgibbet sliphorn sliphouse slipknot slipless slipman slipover slippage slipped slipper slippered slipperflower slipperily slipperiness slipperlike slipperweed slipperwort slippery slipperyback slipperyroot slippiness slipping slippingly slipproof slippy slipshod slipshoddiness slipshoddy slipshodness slipshoe slipslap slipslop slipsloppish slipsloppism slipsole slipstep slipstring sliptopped slipway slirt slish slit slitch slite slither slithering slitheroo slithers slithery slithy slitless slitlike slitshell slitted slitter slitting slitty slitwise slive sliver sliverer sliverlike sliverproof slivery sliving slivovitz sloan Sloanea slob slobber slobberchops slobberer slobbers slobbery slobby slock slocken slod slodder slodge slodger sloe sloeberry sloebush sloetree slog slogan sloganeer sloganize slogger slogging slogwood sloka sloke slommock slon slone slonk sloo sloom sloomy sloop sloopman sloosh slop slopdash slope sloped slopely slopeness sloper slopeways slopewise sloping slopingly slopingness slopmaker slopmaking sloppage slopped sloppery sloppily sloppiness slopping sloppy slops slopseller slopselling slopshop slopstone slopwork slopworker slopy slorp slosh slosher sloshily sloshiness sloshy slot slote sloted sloth slothful slothfully slothfulness slothound slotted slotter slottery slotting slotwise slouch sloucher slouchily slouchiness slouching slouchingly slouchy slough sloughiness sloughy slour sloush Slovak Slovakian Slovakish sloven Slovene Slovenian Slovenish slovenlike slovenliness slovenly slovenwood Slovintzi slow slowbellied slowbelly slowdown slowgoing slowheaded slowhearted slowheartedness slowhound slowish slowly slowmouthed slowpoke slowrie slows slowworm sloyd slub slubber slubberdegullion slubberer slubbering slubberingly slubberly slubbery slubbing slubby slud sludder sluddery sludge sludged sludger sludgy slue sluer slug slugabed sluggard sluggarding sluggardize sluggardliness sluggardly sluggardness sluggardry slugged slugger slugging sluggingly sluggish sluggishly sluggishness sluggy sluglike slugwood sluice sluicelike sluicer sluiceway sluicing sluicy sluig sluit slum slumber slumberer slumberful slumbering slumberingly slumberland slumberless slumberous slumberously slumberousness slumberproof slumbersome slumbery slumbrous slumdom slumgullion slumgum slumland slummage slummer slumminess slumming slummock slummocky slummy slump slumpproof slumproof slumpwork slumpy slumward slumwise slung slungbody slunge slunk slunken slur slurbow slurp slurry slush slusher slushily slushiness slushy slut slutch slutchy sluther sluthood slutter sluttery sluttikin sluttish sluttishly sluttishness slutty sly slyboots slyish slyly slyness slype sma smachrie smack smackee smacker smackful smacking smackingly smacksman smaik Smalcaldian Smalcaldic small smallage smallclothes smallcoal smallen smaller smallhearted smallholder smalling smallish smallmouth smallmouthed smallness smallpox smalls smallsword smalltime smallware smally smalm smalt smalter smaltine smaltite smalts smaragd smaragdine smaragdite smaragdus smarm smarmy smart smarten smarting smartingly smartish smartism smartless smartly smartness smartweed smarty smash smashable smashage smashboard smasher smashery smashing smashingly smashment smashup smatter smatterer smattering smatteringly smattery smaze smear smearcase smeared smearer smeariness smearless smeary smectic smectis smectite Smectymnuan Smectymnuus smeddum smee smeech smeek smeeky smeer smeeth smegma smell smellable smellage smelled smeller smellful smellfungi smellfungus smelliness smelling smellproof smellsome smelly smelt smelter smelterman smeltery smeltman smeth smethe smeuse smew smich smicker smicket smiddie smiddum smidge smidgen smifligate smifligation smiggins Smilacaceae smilacaceous Smilaceae smilaceous smilacin Smilacina Smilax smilax smile smileable smileage smileful smilefulness smileless smilelessly smilelessness smilemaker smilemaking smileproof smiler smilet smiling smilingly smilingness Smilodon smily Smintheus Sminthian sminthurid Sminthuridae Sminthurus smirch smircher smirchless smirchy smiris smirk smirker smirking smirkingly smirkish smirkle smirkly smirky smirtle smit smitch smite smiter smith smitham smithcraft smither smithereens smithery Smithian Smithianism smithing smithite Smithsonian smithsonite smithwork smithy smithydander smiting smitten smitting smock smocker smockface smocking smockless smocklike smog smokables smoke smokeable smokebox smokebush smoked smokefarthings smokehouse smokejack smokeless smokelessly smokelessness smokelike smokeproof smoker smokery smokestack smokestone smoketight smokewood smokily smokiness smoking smokish smoky smokyseeming smolder smolderingness smolt smooch smoochy smoodge smoodger smook smoorich Smoos smoot smooth smoothable smoothback smoothbore smoothbored smoothcoat smoothen smoother smoothification smoothify smoothing smoothingly smoothish smoothly smoothmouthed smoothness smoothpate smopple smore smorgasbord smote smother smotherable smotheration smothered smotherer smotheriness smothering smotheringly smothery smotter smouch smoucher smous smouse smouser smout smriti smudge smudged smudgedly smudgeless smudgeproof smudger smudgily smudginess smudgy smug smuggery smuggish smuggishly smuggishness smuggle smuggleable smuggler smugglery smuggling smugism smugly smugness smuisty smur smurr smurry smuse smush smut smutch smutchin smutchless smutchy smutproof smutted smutter smuttily smuttiness smutty Smyrna Smyrnaite Smyrnean Smyrniot Smyrniote smyth smytrie snab snabbie snabble snack snackle snackman snaff snaffle snaffles snafu snag snagbush snagged snagger snaggled snaggletooth snaggy snagrel snail snaileater snailery snailfish snailflower snailish snailishly snaillike snails snaily snaith snake snakebark snakeberry snakebird snakebite snakefish snakeflower snakehead snakeholing snakeleaf snakeless snakelet snakelike snakeling snakemouth snakeneck snakeology snakephobia snakepiece snakepipe snakeproof snaker snakeroot snakery snakeship snakeskin snakestone snakeweed snakewise snakewood snakeworm snakewort snakily snakiness snaking snakish snaky snap snapback snapbag snapberry snapdragon snape snaper snaphead snapholder snapjack snapless snappable snapped snapper snappily snappiness snapping snappingly snappish snappishly snappishness snapps snappy snaps snapsack snapshot snapshotter snapweed snapwood snapwort snapy snare snareless snarer snaringly snark snarl snarler snarleyyow snarlingly snarlish snarly snary snaste snatch snatchable snatched snatcher snatchily snatching snatchingly snatchproof snatchy snath snathe snavel snavvle snaw snead sneak sneaker sneakiness sneaking sneakingly sneakingness sneakish sneakishly sneakishness sneaksby sneaksman sneaky sneap sneath sneathe sneb sneck sneckdraw sneckdrawing sneckdrawn snecker snecket sned snee sneer sneerer sneerful sneerfulness sneering sneeringly sneerless sneery sneesh sneeshing sneest sneesty sneeze sneezeless sneezeproof sneezer sneezeweed sneezewood sneezewort sneezing sneezy snell snelly Snemovna snerp snew snib snibble snibbled snibbler snibel snicher snick snickdraw snickdrawing snicker snickering snickeringly snickersnee snicket snickey snickle sniddle snide snideness sniff sniffer sniffily sniffiness sniffing sniffingly sniffish sniffishness sniffle sniffler sniffly sniffy snift snifter snifty snig snigger sniggerer sniggering sniggle sniggler sniggoringly snip snipe snipebill snipefish snipelike sniper sniperscope sniping snipish snipjack snipnose snipocracy snipper snippersnapper snipperty snippet snippetiness snippety snippiness snipping snippish snippy snipsnapsnorum sniptious snipy snirl snirt snirtle snitch snitcher snite snithe snithy snittle snivel sniveled sniveler sniveling snively snivy snob snobber snobbery snobbess snobbing snobbish snobbishly snobbishness snobbism snobby snobdom snobling snobocracy snobocrat snobographer snobography snobologist snobonomer snobscat snocher snock snocker snod snodly snoek snoeking snog snoga Snohomish snoke Snonowas snood snooded snooding snook snooker snookered snoop snooper snooperscope snoopy snoose snoot snootily snootiness snooty snoove snooze snoozer snooziness snoozle snoozy snop Snoqualmie Snoquamish snore snoreless snorer snoring snoringly snork snorkel snorker snort snorter snorting snortingly snortle snorty snot snotter snottily snottiness snotty snouch snout snouted snouter snoutish snoutless snoutlike snouty Snow snow Snowball snowball snowbank snowbell snowberg snowberry snowbird snowblink snowbound snowbreak snowbush snowcap snowcraft Snowdonian snowdrift snowdrop snowfall snowflake snowflight snowflower snowfowl snowhammer snowhouse snowie snowily snowiness snowish snowk snowl snowland snowless snowlike snowmanship snowmobile snowplow snowproof snowscape snowshade snowshed snowshine snowshoe snowshoed snowshoeing snowshoer snowslide snowslip snowstorm snowsuit snowworm snowy snozzle snub snubbable snubbed snubbee snubber snubbiness snubbing snubbingly snubbish snubbishly snubbishness snubby snubproof snuck snudge snuff snuffbox snuffboxer snuffcolored snuffer snuffers snuffiness snuffing snuffingly snuffish snuffle snuffler snuffles snuffless snuffliness snuffling snufflingly snuffly snuffman snuffy snug snugger snuggery snuggish snuggle snugify snugly snugness snum snup snupper snur snurl snurly snurp snurt snuzzle sny snying so soak soakage soakaway soaked soaken soaker soaking soakingly soakman soaky soally soam soap soapbark soapberry soapbox soapboxer soapbubbly soapbush soaper soapery soapfish soapily soapiness soaplees soapless soaplike soapmaker soapmaking soapmonger soaprock soaproot soapstone soapsud soapsuddy soapsuds soapsudsy soapweed soapwood soapwort soapy soar soarability soarable soarer soaring soaringly soary sob sobber sobbing sobbingly sobby sobeit sober soberer sobering soberingly soberize soberlike soberly soberness sobersault sobersided sobersides soberwise sobful soboles soboliferous sobproof Sobralia sobralite Sobranje sobrevest sobriety sobriquet sobriquetical soc socage socager soccer soccerist soccerite soce socht sociability sociable sociableness sociably social Sociales socialism socialist socialistic socialite sociality socializable socialization socialize socializer socially socialness sociation sociative societal societally societarian societarianism societary societified societism societist societologist societology society societyish societyless socii Socinian Socinianism Socinianistic Socinianize sociobiological sociocentric sociocracy sociocrat sociocratic sociocultural sociodrama sociodramatic socioeconomic socioeducational sociogenesis sociogenetic sociogeny sociography sociolatry sociolegal sociologian sociologic sociological sociologically sociologism sociologist sociologistic sociologize sociologizer sociologizing sociology sociomedical sociometric sociometry socionomic socionomics socionomy sociophagous sociopolitical socioreligious socioromantic sociostatic sociotechnical socius sock sockdolager socker socket socketful socketless sockeye sockless socklessness sockmaker sockmaking socky socle socman socmanry soco Socotran Socotri Socotrine Socratean Socratic Socratical Socratically Socraticism Socratism Socratist Socratize sod soda sodaclase sodaic sodaless sodalist sodalite sodalithite sodality sodamide sodbuster sodded sodden soddenly soddenness sodding soddite soddy sodic sodio sodioaluminic sodioaurous sodiocitrate sodiohydric sodioplatinic sodiosalicylate sodiotartrate sodium sodless sodoku Sodom sodomic Sodomist Sodomite sodomitess sodomitic sodomitical sodomitically Sodomitish sodomy sodwork sody soe soekoe soever sofa sofane sofar soffit Sofronia soft softa softball softbrained soften softener softening softhead softheaded softhearted softheartedly softheartedness softhorn softish softling softly softner softness softship softtack softwood softy sog Soga Sogdian Sogdianese Sogdianian Sogdoite soger soget soggarth soggendalite soggily sogginess sogging soggy soh soho Soiesette soiesette soil soilage soiled soiling soilless soilproof soilure soily soiree soixantine Soja soja sojourn sojourner sojourney sojournment sok soka soke sokeman sokemanemot sokemanry soken Sokoki Sokotri Sokulk Sol sol sola solace solaceful solacement solaceproof solacer solacious solaciously solaciousness solan Solanaceae solanaceous solanal Solanales solander solaneine solaneous solanidine solanine Solanum solanum solar solarism solarist solaristic solaristically solaristics Solarium solarium solarization solarize solarometer solate solatia solation solatium solay sold soldado Soldan soldan soldanel Soldanella soldanelle soldanrie solder solderer soldering solderless soldi soldier soldierbird soldierbush soldierdom soldieress soldierfish soldierhearted soldierhood soldiering soldierize soldierlike soldierliness soldierly soldierproof soldiership soldierwise soldierwood soldiery soldo sole Solea solea soleas solecism solecist solecistic solecistical solecistically solecize solecizer Soleidae soleiform soleil soleless solely solemn solemncholy solemnify solemnitude solemnity solemnization solemnize solemnizer solemnly solemnness Solen solen solenacean solenaceous soleness solenette solenial Solenidae solenite solenitis solenium solenoconch Solenoconcha solenocyte Solenodon solenodont Solenodontidae solenogaster Solenogastres solenoglyph Solenoglypha solenoglyphic solenoid solenoidal solenoidally Solenopsis solenostele solenostelic solenostomid Solenostomidae solenostomoid solenostomous Solenostomus solent solentine solepiece soleplate soleprint soler Solera soles soleus soleyn solfataric solfeggio solferino soli soliative solicit solicitant solicitation solicitationism solicited solicitee soliciter soliciting solicitor solicitorship solicitous solicitously solicitousness solicitress solicitrix solicitude solicitudinous solid Solidago solidago solidaric solidarily solidarism solidarist solidaristic solidarity solidarize solidary solidate solidi solidifiability solidifiable solidifiableness solidification solidifier solidiform solidify solidish solidism solidist solidistic solidity solidly solidness solidum Solidungula solidungular solidungulate solidus solifidian solifidianism solifluction solifluctional soliform Solifugae solifuge solifugean solifugid solifugous soliloquacious soliloquist soliloquium soliloquize soliloquizer soliloquizing soliloquizingly soliloquy solilunar Solio solio soliped solipedal solipedous solipsism solipsismal solipsist solipsistic solist solitaire solitarian solitarily solitariness solitary soliterraneous solitidal solitude solitudinarian solitudinize solitudinous solivagant solivagous sollar solleret Sollya solmizate solmization solo solod solodi solodization solodize soloecophanes soloist Solomon Solomonian Solomonic Solomonical Solomonitic Solon solon solonchak solonetz solonetzic solonetzicity Solonian Solonic solonist soloth solotink solotnik solpugid Solpugida Solpugidea Solpugides solstice solsticion solstitia solstitial solstitially solstitium solubility solubilization solubilize soluble solubleness solubly solum solute solution solutional solutioner solutionist solutize solutizer Solutrean solvability solvable solvableness solvate solvation solve solvement solvency solvend solvent solvently solventproof solver solvolysis solvolytic solvolyze solvsbergite Solyma Solymaean soma somacule Somal somal Somali somaplasm Somaschian somasthenia somata somatasthenia Somateria somatic somatical somatically somaticosplanchnic somaticovisceral somatics somatism somatist somatization somatochrome somatocyst somatocystic somatoderm somatogenetic somatogenic somatognosis somatognostic somatologic somatological somatologically somatologist somatology somatome somatomic somatophyte somatophytic somatoplasm somatopleural somatopleure somatopleuric somatopsychic somatosplanchnic somatotonia somatotonic somatotropic somatotropically somatotropism somatotype somatotyper somatotypy somatous somber somberish somberly somberness sombre sombrerite sombrero sombreroed sombrous sombrously sombrousness some somebody someday somedeal somegate somehow someone somepart someplace somers somersault somerset Somersetian somervillite somesthesia somesthesis somesthetic something somethingness sometime sometimes someway someways somewhat somewhatly somewhatness somewhen somewhence somewhere somewheres somewhile somewhiles somewhither somewhy somewise somital somite somitic somma sommaite sommelier somnambulance somnambulancy somnambulant somnambular somnambulary somnambulate somnambulation somnambulator somnambule somnambulency somnambulic somnambulically somnambulism somnambulist somnambulistic somnambulize somnambulous somnial somniative somnifacient somniferous somniferously somnific somnifuge somnify somniloquacious somniloquence somniloquent somniloquism somniloquist somniloquize somniloquous somniloquy Somniosus somnipathist somnipathy somnivolency somnivolent somnolence somnolency somnolent somnolently somnolescence somnolescent somnolism somnolize somnopathy somnorific somnus sompay sompne sompner son sonable sonance sonancy sonant sonantal sonantic sonantina sonantized sonar sonata sonatina sonation Sonchus sond sondation sondeli Sonderbund sonderclass Sondergotter Sondylomorum soneri song songbird songbook songcraft songfest songful songfully songfulness Songhai Songish songish songland songle songless songlessly songlessness songlet songlike songman Songo Songoi songster songstress songworthy songwright songy sonhood sonic soniferous sonification soniou sonk sonless sonlike sonlikeness sonly Sonneratia Sonneratiaceae sonneratiaceous sonnet sonnetary sonneteer sonneteeress sonnetic sonneting sonnetish sonnetist sonnetize sonnetlike sonnetwise sonnikins sonny sonobuoy sonometer Sonoran sonorant sonorescence sonorescent sonoric sonoriferous sonoriferously sonorific sonority sonorophone sonorosity sonorous sonorously sonorousness Sonrai sons sonship sonsy sontag soodle soodly sook Sooke sooky sool sooloos soon sooner soonish soonly Soorah soorawn soord soorkee Soot soot sooter sooterkin sooth soothe soother sootherer soothful soothing soothingly soothingness soothless soothsay soothsayer soothsayership soothsaying sootily sootiness sootless sootlike sootproof sooty sootylike sop sope soph Sopheric Sopherim Sophia sophia Sophian sophic sophical sophically sophiologic sophiology sophism Sophist sophister sophistic sophistical sophistically sophisticalness sophisticant sophisticate sophisticated sophistication sophisticative sophisticator sophisticism Sophistress sophistress sophistry Sophoclean sophomore sophomoric sophomorical sophomorically Sophora sophoria Sophronia sophronize Sophy sophy sopite sopition sopor soporiferous soporiferously soporiferousness soporific soporifical soporifically soporose sopper soppiness sopping soppy soprani sopranino sopranist soprano sora Sorabian sorage soral Sorb sorb Sorbaria sorbate sorbefacient sorbent Sorbian sorbic sorbile sorbin sorbinose Sorbish sorbite sorbitic sorbitize sorbitol Sorbonic Sorbonical Sorbonist Sorbonne sorbose sorboside Sorbus sorbus sorcer sorcerer sorceress sorcering sorcerous sorcerously sorcery sorchin sorda Sordaria Sordariaceae sordawalite sordellina Sordello sordes sordid sordidity sordidly sordidness sordine sordino sordor sore soredia soredial sorediate sorediferous sorediform soredioid soredium soree sorefalcon sorefoot sorehawk sorehead soreheaded soreheadedly soreheadedness sorehearted sorehon sorely sorema soreness Sorex sorgho Sorghum sorghum sorgo sori soricid Soricidae soricident Soricinae soricine soricoid Soricoidea soriferous sorite sorites soritical sorn sornare sornari sorner sorning soroban Soroptimist sororal sororate sororial sororially sororicidal sororicide sorority sororize sorose sorosis sorosphere Sorosporella Sorosporium sorption sorra sorrel sorrento sorrily sorriness sorroa sorrow sorrower sorrowful sorrowfully sorrowfulness sorrowing sorrowingly sorrowless sorrowproof sorrowy sorry sorryhearted sorryish sort sortable sortably sortal sortation sorted sorter sortie sortilege sortileger sortilegic sortilegious sortilegus sortilegy sortiment sortition sortly sorty sorus sorva sory sosh soshed Sosia soso sosoish Sospita soss sossle sostenuto sot Sotadean Sotadic Soter Soteres soterial soteriologic soteriological soteriology Sothiac Sothiacal Sothic Sothis Sotho sotie Sotik sotnia sotnik sotol sots sottage sotted sotter sottish sottishly sottishness sou souari soubise soubrette soubrettish soucar souchet Souchong souchong souchy soud soudagur souffle souffleed sough sougher soughing sought Souhegan soul soulack soulcake souled Souletin soulful soulfully soulfulness soulical soulish soulless soullessly soullessness soullike Soulmass soulsaving soulward souly soum soumansite soumarque sound soundable soundage soundboard sounder soundful soundheaded soundheadedness soundhearted soundheartednes sounding soundingly soundingness soundless soundlessly soundlessness soundly soundness soundproof soundproofing soup soupbone soupcon souper souple soupless souplike soupspoon soupy sour sourbelly sourberry sourbread sourbush sourcake source sourceful sourcefulness sourceless sourcrout sourdeline sourdine soured souredness souren sourer sourhearted souring sourish sourishly sourishness sourjack sourling sourly sourness sourock soursop sourtop sourweed sourwood soury sousaphone sousaphonist souse souser souslik soutane souter souterrain South south southard southbound Southcottian Southdown southeast southeaster southeasterly southeastern southeasternmost southeastward southeastwardly southeastwards souther southerland southerliness southerly southermost southern Southerner southerner southernism southernize southernliness southernly southernmost southernness southernwood southing southland southlander southmost southness southpaw Southron southron Southronie Southumbrian southward southwardly southwards southwest southwester southwesterly southwestern Southwesterner southwesternmost southwestward southwestwardly souvenir souverain souwester sov sovereign sovereigness sovereignly sovereignness sovereignship sovereignty soviet sovietdom sovietic sovietism sovietist sovietization sovietize sovite sovkhose sovkhoz sovran sovranty sow sowable sowan sowans sowar sowarry sowback sowbacked sowbane sowbelly sowbread sowdones sowel sowens sower sowfoot sowing sowins sowl sowle sowlike sowlth sown sowse sowt sowte Soxhlet soy soya soybean Soyot sozin sozolic sozzle sozzly spa space spaceband spaced spaceful spaceless spacer spacesaving spaceship spaciness spacing spaciosity spaciotemporal spacious spaciously spaciousness spack spacy spad spade spadebone spaded spadefish spadefoot spadeful spadelike spademan spader spadesman spadewise spadework spadger spadiceous spadices spadicifloral spadiciflorous spadiciform spadicose spadilla spadille spading spadix spadone spadonic spadonism spadrone spadroon spae spaebook spaecraft spaedom spaeman spaer spaewife spaewoman spaework spaewright spaghetti Spagnuoli spagyric spagyrical spagyrically spagyrist spahi spaid spaik spairge spak Spalacidae spalacine Spalax spald spalder spalding spale spall spallation spaller spalling spalpeen spalt span spancel spandle spandrel spandy spane spanemia spanemy spang spanghew spangle spangled spangler spanglet spangly spangolite Spaniard Spaniardization Spaniardize Spaniardo spaniel spaniellike spanielship spaning Spaniol Spaniolate Spanioli Spaniolize spanipelagic Spanish Spanishize Spanishly spank spanker spankily spanking spankingly spanky spanless spann spannel spanner spannerman spanopnoea spanpiece spantoon spanule spanworm Spar spar sparable sparada sparadrap sparagrass sparagus Sparassis sparassodont Sparassodonta Sparaxis sparaxis sparch spare spareable spareless sparely spareness sparer sparerib sparesome Sparganiaceae Sparganium sparganium sparganosis sparganum sparge sparger spargosis sparhawk sparid Sparidae sparing sparingly sparingness spark sparkback sparked sparker sparkiness sparking sparkish sparkishly sparkishness sparkle sparkleberry sparkler sparkless sparklessly sparklet sparklike sparkliness sparkling sparklingly sparklingness sparkly sparkproof sparks sparky sparlike sparling sparm Sparmannia Sparnacian sparoid sparpiece sparred sparrer sparring sparringly sparrow sparrowbill sparrowcide sparrowdom sparrowgrass sparrowish sparrowless sparrowlike sparrowtail sparrowtongue sparrowwort sparrowy sparry sparse sparsedly sparsely sparsile sparsioplast sparsity spart Spartacan Spartacide Spartacism Spartacist spartacist Spartan Spartanhood Spartanic Spartanically Spartanism Spartanize Spartanlike Spartanly sparteine sparterie sparth Spartiate Spartina Spartium spartle Sparus sparver spary spasm spasmatic spasmatical spasmatomancy spasmed spasmic spasmodic spasmodical spasmodically spasmodicalness spasmodism spasmodist spasmolytic spasmophilia spasmophilic spasmotin spasmotoxin spasmous spastic spastically spasticity spat spatalamancy Spatangida Spatangina spatangoid Spatangoida Spatangoidea spatangoidean Spatangus spatchcock spate spatha spathaceous spathal spathe spathed spatheful spathic Spathiflorae spathilae spathilla spathose spathous spathulate Spathyema spatial spatiality spatialization spatialize spatially spatiate spatiation spatilomancy spatiotemporal spatling spatted spatter spatterdashed spatterdasher spatterdock spattering spatteringly spatterproof spatterwork spatting spattle spattlehoe Spatula spatula spatulamancy spatular spatulate spatulation spatule spatuliform spatulose spave spaver spavie spavied spaviet spavin spavindy spavined spawn spawneater spawner spawning spawny spay spayad spayard spaying speak speakable speakableness speakably speaker speakeress speakership speakhouse speakies speaking speakingly speakingness speakless speaklessly speal spealbone spean spear spearcast spearer spearfish spearflower spearhead spearing spearman spearmanship spearmint spearproof spearsman spearwood spearwort speary spec specchie spece special specialism specialist specialistic speciality specialization specialize specialized specializer specially specialness specialty speciation specie species speciestaler specifiable specific specifical specificality specifically specificalness specificate specification specificative specificatively specificity specificize specificly specificness specifier specifist specify specillum specimen specimenize speciology speciosity specious speciously speciousness speck specked speckedness speckfall speckiness specking speckle specklebelly specklebreast speckled speckledbill speckledness speckless specklessly specklessness speckling speckly speckproof specks specksioneer specky specs spectacle spectacled spectacleless spectaclelike spectaclemaker spectaclemaking spectacles spectacular spectacularism spectacularity spectacularly spectator spectatordom spectatorial spectatorship spectatory spectatress spectatrix specter spectered specterlike spectra spectral spectralism spectrality spectrally spectralness spectrobolograph spectrobolographic spectrobolometer spectrobolometric spectrochemical spectrochemistry spectrocolorimetry spectrocomparator spectroelectric spectrogram spectrograph spectrographic spectrographically spectrography spectroheliogram spectroheliograph spectroheliographic spectrohelioscope spectrological spectrologically spectrology spectrometer spectrometric spectrometry spectromicroscope spectromicroscopical spectrophobia spectrophone spectrophonic spectrophotoelectric spectrophotograph spectrophotography spectrophotometer spectrophotometric spectrophotometry spectropolarimeter spectropolariscope spectropyrheliometer spectropyrometer spectroradiometer spectroradiometric spectroradiometry spectroscope spectroscopic spectroscopically spectroscopist spectroscopy spectrotelescope spectrous spectrum spectry specula specular Specularia specularly speculate speculation speculatist speculative speculatively speculativeness speculativism speculator speculatory speculatrices speculatrix speculist speculum specus sped speech speechcraft speecher speechful speechfulness speechification speechifier speechify speeching speechless speechlessly speechlessness speechlore speechmaker speechmaking speechment speed speedaway speedboat speedboating speedboatman speeder speedful speedfully speedfulness speedily speediness speeding speedingly speedless speedometer speedster speedway speedwell speedy speel speelken speelless speen speer speering speerity speiskobalt speiss spekboom spelaean spelder spelding speldring speleological speleologist speleology spelk spell spellable spellbind spellbinder spellbinding spellbound spellcraft spelldown speller spellful spelling spellingdown spellingly spellmonger spellproof spellword spellwork spelt spelter spelterman speltoid speltz speluncar speluncean spelunk spelunker spence Spencean spencer Spencerian Spencerianism Spencerism spencerite spend spendable spender spendful spendible spending spendless spendthrift spendthrifty Spenerism spense Spenserian spent speos Speotyto sperable Speranza sperate Spergula Spergularia sperity sperket sperling sperm sperma spermaceti spermacetilike spermaduct spermalist Spermaphyta spermaphyte spermaphytic spermarium spermary spermashion spermatangium spermatheca spermathecal spermatic spermatically spermatid spermatiferous spermatin spermatiogenous spermation spermatiophore spermatism spermatist spermatitis spermatium spermatize spermatoblast spermatoblastic spermatocele spermatocyst spermatocystic spermatocystitis spermatocytal spermatocyte spermatogemma spermatogenesis spermatogenetic spermatogenic spermatogenous spermatogeny spermatogonial spermatogonium spermatoid spermatolysis spermatolytic spermatophoral spermatophore spermatophorous Spermatophyta spermatophyte spermatophytic spermatoplasm spermatoplasmic spermatoplast spermatorrhea spermatospore spermatotheca spermatova spermatovum spermatoxin spermatozoa spermatozoal spermatozoan spermatozoic spermatozoid spermatozoon spermaturia spermic spermidine spermiducal spermiduct spermigerous spermine spermiogenesis spermism spermist spermoblast spermoblastic spermocarp spermocenter spermoderm spermoduct spermogenesis spermogenous spermogone spermogoniferous spermogonium spermogonous spermologer spermological spermologist spermology spermolysis spermolytic spermophile spermophiline Spermophilus spermophore spermophorium Spermophyta spermophyte spermophytic spermosphere spermotheca spermotoxin spermous spermoviduct spermy speronara speronaro sperone sperrylite spessartite spet spetch spetrophoby speuchan spew spewer spewiness spewing spewy spex sphacel Sphacelaria Sphacelariaceae sphacelariaceous Sphacelariales sphacelate sphacelated sphacelation sphacelia sphacelial sphacelism sphaceloderma Sphaceloma sphacelotoxin sphacelous sphacelus Sphaeralcea sphaeraphides Sphaerella sphaerenchyma Sphaeriaceae sphaeriaceous Sphaeriales sphaeridia sphaeridial sphaeridium Sphaeriidae Sphaerioidaceae sphaeristerium sphaerite Sphaerium sphaeroblast Sphaerobolaceae Sphaerobolus Sphaerocarpaceae Sphaerocarpales Sphaerocarpus sphaerocobaltite Sphaerococcaceae sphaerococcaceous Sphaerococcus sphaerolite sphaerolitic Sphaeroma Sphaeromidae Sphaerophoraceae Sphaerophorus Sphaeropsidaceae Sphaeropsidales Sphaeropsis sphaerosiderite sphaerosome sphaerospore Sphaerostilbe Sphaerotheca Sphaerotilus sphagion Sphagnaceae sphagnaceous Sphagnales sphagnicolous sphagnologist sphagnology sphagnous Sphagnum sphagnum Sphakiot sphalerite Sphargis sphecid Sphecidae Sphecina Sphecoidea spheges sphegid Sphegidae Sphegoidea sphendone sphene sphenethmoid sphenethmoidal sphenic sphenion Sphenisci Spheniscidae Sphenisciformes spheniscine spheniscomorph Spheniscomorphae spheniscomorphic Spheniscus sphenobasilar sphenobasilic sphenocephalia sphenocephalic sphenocephalous sphenocephaly Sphenodon sphenodon sphenodont Sphenodontia Sphenodontidae sphenoethmoid sphenoethmoidal sphenofrontal sphenogram sphenographic sphenographist sphenography sphenoid sphenoidal sphenoiditis sphenolith sphenomalar sphenomandibular sphenomaxillary sphenopalatine sphenoparietal sphenopetrosal Sphenophorus Sphenophyllaceae sphenophyllaceous Sphenophyllales Sphenophyllum Sphenopteris sphenosquamosal sphenotemporal sphenotic sphenotribe sphenotripsy sphenoturbinal sphenovomerine sphenozygomatic spherable spheral spherality spheraster spheration sphere sphereless spheric spherical sphericality spherically sphericalness sphericist sphericity sphericle sphericocylindrical sphericotetrahedral sphericotriangular spherics spheriform spherify spheroconic spherocrystal spherograph spheroidal spheroidally spheroidic spheroidical spheroidically spheroidicity spheroidism spheroidity spheroidize spheromere spherometer spheroquartic spherula spherular spherulate spherule spherulite spherulitic spherulitize sphery spheterize Sphex sphexide sphincter sphincteral sphincteralgia sphincterate sphincterectomy sphincterial sphincteric sphincterismus sphincteroscope sphincteroscopy sphincterotomy sphindid Sphindidae Sphindus sphingal sphinges sphingid Sphingidae sphingiform sphingine sphingoid sphingometer sphingomyelin sphingosine Sphingurinae Sphingurus sphinx sphinxian sphinxianness sphinxlike Sphoeroides sphragide sphragistic sphragistics sphygmia sphygmic sphygmochronograph sphygmodic sphygmogram sphygmograph sphygmographic sphygmography sphygmoid sphygmology sphygmomanometer sphygmomanometric sphygmomanometry sphygmometer sphygmometric sphygmophone sphygmophonic sphygmoscope sphygmus Sphyraena sphyraenid Sphyraenidae sphyraenoid Sphyrapicus Sphyrna Sphyrnidae Spica spica spical spicant Spicaria spicate spicated spiccato spice spiceable spiceberry spicebush spicecake spiced spiceful spicehouse spiceland spiceless spicelike spicer spicery spicewood spiciferous spiciform spicigerous spicilege spicily spiciness spicing spick spicket spickle spicknel spicose spicosity spicous spicousness spicula spiculae spicular spiculate spiculated spiculation spicule spiculiferous spiculiform spiculigenous spiculigerous spiculofiber spiculose spiculous spiculum spiculumamoris spicy spider spidered spiderflower spiderish spiderless spiderlike spiderling spiderly spiderweb spiderwork spiderwort spidery spidger spied spiegel spiegeleisen spiel spieler spier spiff spiffed spiffily spiffiness spiffing spiffy spiflicate spiflicated spiflication spig Spigelia Spigeliaceae Spigelian spiggoty spignet spigot spike spikebill spiked spikedness spikefish spikehorn spikelet spikelike spikenard spiker spiketail spiketop spikeweed spikewise spikily spikiness spiking spiky Spilanthes spile spilehole spiler spileworm spilikin spiling spilite spilitic spill spillage spiller spillet spillproof spillway spilly Spilogale spiloma spilosite spilt spilth spilus spin spina spinacene spinaceous spinach spinachlike Spinacia spinae spinage spinal spinales spinalis spinally spinate spinder spindlage spindle spindleage spindled spindleful spindlehead spindlelegs spindlelike spindler spindleshanks spindletail spindlewise spindlewood spindleworm spindliness spindling spindly spindrift spine spinebill spinebone spined spinel spineless spinelessly spinelessness spinelet spinelike spinescence spinescent spinet spinetail spingel spinibulbar spinicarpous spinicerebellar spinidentate spiniferous Spinifex spinifex spiniform spinifugal spinigerous spinigrade spininess spinipetal spinitis spinituberculate spink spinnable spinnaker spinner spinneret spinnerular spinnerule spinnery spinney spinning spinningly spinobulbar spinocarpous spinocerebellar spinogalvanization spinoglenoid spinoid spinomuscular spinoneural spinoperipheral spinose spinosely spinoseness spinosity spinosodentate spinosodenticulate spinosotubercular spinosotuberculate spinosympathetic spinotectal spinothalamic spinotuberculous spinous spinousness Spinozism Spinozist Spinozistic spinster spinsterdom spinsterhood spinsterial spinsterish spinsterishly spinsterism spinsterlike spinsterly spinsterous spinstership spinstress spintext spinthariscope spinthariscopic spintherism spinulate spinulation spinule spinulescent spinuliferous spinuliform Spinulosa spinulose spinulosely spinulosociliate spinulosodentate spinulosodenticulate spinulosogranulate spinulososerrate spinulous spiny spionid Spionidae Spioniformia spiracle spiracula spiracular spiraculate spiraculiferous spiraculiform spiraculum Spiraea Spiraeaceae spiral spirale spiraled spiraliform spiralism spirality spiralization spiralize spirally spiraloid spiraltail spiralwise spiran spirant Spiranthes spiranthic spiranthy spirantic spirantize spiraster spirate spirated spiration spire spirea spired spiregrass spireless spirelet spireme spirepole spireward spirewise spiricle Spirifer Spirifera Spiriferacea spiriferid Spiriferidae spiriferoid spiriferous spiriform spirignath spirignathous spirilla Spirillaceae spirillaceous spirillar spirillolysis spirillosis spirillotropic spirillotropism spirillum spiring spirit spiritally spiritdom spirited spiritedly spiritedness spiriter spiritful spiritfully spiritfulness spirithood spiriting spiritism spiritist spiritistic spiritize spiritland spiritleaf spiritless spiritlessly spiritlessness spiritlike spiritmonger spiritous spiritrompe spiritsome spiritual spiritualism spiritualist spiritualistic spiritualistically spirituality spiritualization spiritualize spiritualizer spiritually spiritualness spiritualship spiritualty spirituosity spirituous spirituously spirituousness spiritus spiritweed spirity spirivalve spirket spirketing spirling spiro Spirobranchia Spirobranchiata spirobranchiate Spirochaeta Spirochaetaceae spirochaetal Spirochaetales Spirochaete spirochetal spirochete spirochetemia spirochetic spirocheticidal spirocheticide spirochetosis spirochetotic Spirodela spirogram spirograph spirographidin spirographin Spirographis Spirogyra spiroid spiroloculine spirometer spirometric spirometrical spirometry Spironema spiropentane Spirophyton Spirorbis spiroscope Spirosoma spirous spirt Spirula spirulate spiry spise spissated spissitude Spisula spit spital spitball spitballer spitbox spitchcock spite spiteful spitefully spitefulness spiteless spiteproof spitfire spitful spithamai spithame spitish spitpoison spitscocked spitstick spitted spitten spitter spitting spittle spittlefork spittlestaff spittoon spitz Spitzenburg spitzkop spiv spivery Spizella spizzerinctum Splachnaceae splachnaceous splachnoid Splachnum splacknuck splairge splanchnapophysial splanchnapophysis splanchnectopia splanchnemphraxis splanchnesthesia splanchnesthetic splanchnic splanchnoblast splanchnocoele splanchnoderm splanchnodiastasis splanchnodynia splanchnographer splanchnographical splanchnography splanchnolith splanchnological splanchnologist splanchnology splanchnomegalia splanchnomegaly splanchnopathy splanchnopleural splanchnopleure splanchnopleuric splanchnoptosia splanchnoptosis splanchnosclerosis splanchnoscopy splanchnoskeletal splanchnoskeleton splanchnosomatic splanchnotomical splanchnotomy splanchnotribe splash splashboard splashed splasher splashiness splashing splashingly splashproof splashy splat splatch splatcher splatchy splathering splatter splatterdash splatterdock splatterer splatterfaced splatterwork splay splayed splayer splayfoot splayfooted splaymouth splaymouthed spleen spleenful spleenfully spleenish spleenishly spleenishness spleenless spleenwort spleeny spleet spleetnew splenadenoma splenalgia splenalgic splenalgy splenatrophia splenatrophy splenauxe splenculus splendacious splendaciously splendaciousness splendent splendently splender splendescent splendid splendidly splendidness splendiferous splendiferously splendiferousness splendor splendorous splendorproof splendourproof splenectama splenectasis splenectomist splenectomize splenectomy splenectopia splenectopy splenelcosis splenemia splenemphraxis spleneolus splenepatitis splenetic splenetical splenetically splenetive splenial splenic splenical splenicterus splenification spleniform splenitis splenitive splenium splenius splenization splenoblast splenocele splenoceratosis splenocleisis splenocolic splenocyte splenodiagnosis splenodynia splenography splenohemia splenoid splenolaparotomy splenology splenolymph splenolymphatic splenolysin splenolysis splenoma splenomalacia splenomedullary splenomegalia splenomegalic splenomegaly splenomyelogenous splenoncus splenonephric splenopancreatic splenoparectama splenoparectasis splenopathy splenopexia splenopexis splenopexy splenophrenic splenopneumonia splenoptosia splenoptosis splenorrhagia splenorrhaphy splenotomy splenotoxin splenotyphoid splenulus splenunculus splet spleuchan splice spliceable splicer splicing splinder spline splineway splint splintage splinter splinterd splinterless splinternew splinterproof splintery splintwood splinty split splitbeak splitfinger splitfruit splitmouth splitnew splitsaw splittail splitten splitter splitting splitworm splodge splodgy splore splosh splotch splotchily splotchiness splotchy splother splunge splurge splurgily splurgy splurt spluther splutter splutterer spoach spode spodiosite spodium spodogenic spodogenous spodomancy spodomantic spodumene spoffish spoffle spoffy spogel spoil spoilable spoilage spoilation spoiled spoiler spoilfive spoilful spoiling spoilless spoilment spoilsman spoilsmonger spoilsport spoilt Spokan spoke spokeless spoken spokeshave spokesman spokesmanship spokester spokeswoman spokeswomanship spokewise spoky spole spolia spoliarium spoliary spoliate spoliation spoliator spoliatory spolium spondaic spondaical spondaize spondean spondee spondiac Spondiaceae Spondias spondulics spondyl spondylalgia spondylarthritis spondylarthrocace spondylexarthrosis spondylic spondylid Spondylidae spondylioid spondylitic spondylitis spondylium spondylizema spondylocace Spondylocladium spondylodiagnosis spondylodidymia spondylodymus spondyloid spondylolisthesis spondylolisthetic spondylopathy spondylopyosis spondyloschisis spondylosis spondylosyndesis spondylotherapeutics spondylotherapist spondylotherapy spondylotomy spondylous Spondylus spondylus spong sponge spongecake sponged spongeful spongeless spongelet spongelike spongeous spongeproof sponger spongewood Spongiae spongian spongicolous spongiculture Spongida spongiferous spongiform Spongiidae Spongilla spongillid Spongillidae spongilline spongily spongin sponginblast sponginblastic sponginess sponging spongingly spongioblast spongioblastoma spongiocyte spongiolin spongiopilin spongioplasm spongioplasmic spongiose spongiosity spongiousness Spongiozoa spongiozoon spongoblast spongoblastic spongoid spongology spongophore Spongospora spongy sponsal sponsalia sponsibility sponsible sponsing sponsion sponsional sponson sponsor sponsorial sponsorship sponspeck spontaneity spontaneous spontaneously spontaneousness spontoon spoof spoofer spoofery spoofish spook spookdom spookery spookily spookiness spookish spookism spookist spookological spookologist spookology spooky spool spooler spoolful spoollike spoolwood spoom spoon spoonbill spoondrift spooner spoonerism spooneyism spooneyly spooneyness spoonflower spoonful spoonhutch spoonily spooniness spooning spoonism spoonless spoonlike spoonmaker spoonmaking spoonways spoonwood spoony spoonyism spoor spoorer spoot spor sporabola sporaceous sporades sporadial sporadic sporadical sporadically sporadicalness sporadicity sporadism sporadosiderite sporal sporange sporangia sporangial sporangidium sporangiferous sporangiform sporangioid sporangiola sporangiole sporangiolum sporangiophore sporangiospore sporangite Sporangites sporangium sporation spore spored sporeformer sporeforming sporeling sporicide sporid sporidesm sporidia sporidial sporidiferous sporidiole sporidiolum sporidium sporiferous sporification sporiparity sporiparous sporoblast Sporobolus sporocarp sporocarpium Sporochnaceae Sporochnus sporocyst sporocystic sporocystid sporocyte sporodochia sporodochium sporoduct sporogenesis sporogenic sporogenous sporogeny sporogone sporogonial sporogonic sporogonium sporogony sporoid sporologist sporomycosis sporont sporophore sporophoric sporophorous sporophydium sporophyll sporophyllary sporophyllum sporophyte sporophytic sporoplasm sporosac sporostegium sporostrote sporotrichosis sporotrichotic Sporotrichum sporous Sporozoa sporozoal sporozoan sporozoic sporozoite sporozoon sporran sport sportability sportable sportance sporter sportful sportfully sportfulness sportily sportiness sporting sportingly sportive sportively sportiveness sportless sportling sportly sports sportsman sportsmanlike sportsmanliness sportsmanly sportsmanship sportsome sportswear sportswoman sportswomanly sportswomanship sportula sportulae sporty sporular sporulate sporulation sporule sporuliferous sporuloid sposh sposhy spot spotless spotlessly spotlessness spotlight spotlighter spotlike spotrump spotsman spottable spotted spottedly spottedness spotteldy spotter spottily spottiness spotting spottle spotty spoucher spousage spousal spousally spouse spousehood spouseless spousy spout spouter spoutiness spouting spoutless spoutlike spoutman spouty sprachle sprack sprackish sprackle sprackly sprackness sprad spraddle sprag spragger spraggly spraich sprain spraint spraints sprang sprangle sprangly sprank sprat spratter spratty sprauchle sprawl sprawler sprawling sprawlingly sprawly spray sprayboard sprayer sprayey sprayful sprayfully sprayless spraylike sprayproof spread spreadation spreadboard spreaded spreader spreadhead spreading spreadingly spreadingness spreadover spready spreaghery spreath spreckle spree spreeuw Sprekelia spreng sprent spret sprew sprewl spridhogue spried sprier spriest sprig sprigged sprigger spriggy sprightful sprightfully sprightfulness sprightlily sprightliness sprightly sprighty spriglet sprigtail Spring spring springal springald springboard springbok springbuck springe springer springerle springfinger springfish springful springhaas springhalt springhead springhouse springily springiness springing springingly springle springless springlet springlike springly springmaker springmaking springtail springtide springtime springtrap springwood springworm springwort springwurzel springy sprink sprinkle sprinkled sprinkleproof sprinkler sprinklered sprinkling sprint sprinter sprit sprite spritehood spritsail sprittail sprittie spritty sproat sprocket sprod sprogue sproil sprong sprose sprottle sprout sproutage sprouter sproutful sprouting sproutland sproutling sprowsy spruce sprucely spruceness sprucery sprucification sprucify sprue spruer sprug spruiker spruit sprung sprunny sprunt spruntly spry spryly spryness spud spudder spuddle spuddy spuffle spug spuilyie spuilzie spuke spume spumescence spumescent spumiferous spumification spumiform spumone spumose spumous spumy spun spung spunk spunkie spunkily spunkiness spunkless spunky spunny spur spurflower spurgall spurge spurgewort spuriae spuriosity spurious spuriously spuriousness Spurius spurl spurless spurlet spurlike spurling spurmaker spurmoney spurn spurner spurnpoint spurnwater spurproof spurred spurrer spurrial spurrier spurrings spurrite spurry spurt spurter spurtive spurtively spurtle spurway spurwing spurwinged spurwort sput sputa sputative sputter sputterer sputtering sputteringly sputtery sputum sputumary sputumose sputumous spy spyboat spydom spyer spyfault spyglass spyhole spyism spyproof spyship spytower squab squabash squabasher squabbed squabbish squabble squabbler squabbling squabblingly squabbly squabby squacco squad squaddy squadrate squadrism squadron squadrone squadroned squail squailer squalene Squali squalid Squalida Squalidae squalidity squalidly squalidness squaliform squall squaller squallery squallish squally squalm Squalodon squalodont Squalodontidae squaloid Squaloidei squalor Squalus squam squama squamaceous squamae Squamariaceae Squamata squamate squamated squamatine squamation squamatogranulous squamatotuberculate squame squamella squamellate squamelliferous squamelliform squameous squamiferous squamiform squamify squamigerous squamipennate Squamipennes squamipinnate Squamipinnes squamocellular squamoepithelial squamoid squamomastoid squamoparietal squamopetrosal squamosa squamosal squamose squamosely squamoseness squamosis squamosity squamosodentated squamosoimbricated squamosomaxillary squamosoparietal squamosoradiate squamosotemporal squamosozygomatic squamosphenoid squamosphenoidal squamotemporal squamous squamously squamousness squamozygomatic Squamscot squamula squamulae squamulate squamulation squamule squamuliform squamulose squander squanderer squanderingly squandermania squandermaniac squantum squarable square squareage squarecap squared squaredly squareface squareflipper squarehead squarelike squarely squareman squaremouth squareness squarer squaretail squarewise squaring squarish squarishly squark squarrose squarrosely squarrous squarrulose squarson squarsonry squary squash squashberry squasher squashily squashiness squashy squat Squatarola squatarole Squatina squatina squatinid Squatinidae squatinoid Squatinoidei squatly squatment squatmore squatness squattage squatted squatter squatterarchy squatterdom squatterproof squattily squattiness squatting squattingly squattish squattocracy squattocratic squatty squatwise squaw squawberry squawbush squawdom squawfish squawflower squawk squawker squawkie squawking squawkingly squawky Squawmish squawroot Squawtits squawweed Squaxon squdge squdgy squeak squeaker squeakery squeakily squeakiness squeaking squeakingly squeaklet squeakproof squeaky squeakyish squeal squeald squealer squealing squeam squeamish squeamishly squeamishness squeamous squeamy Squedunk squeege squeegee squeezability squeezable squeezableness squeezably squeeze squeezeman squeezer squeezing squeezingly squeezy squelch squelcher squelchily squelchiness squelching squelchingly squelchingness squelchy squench squencher squeteague squib squibber squibbery squibbish squiblet squibling squid squiddle squidge squidgereen squidgy squiffed squiffer squiffy squiggle squiggly squilgee squilgeer Squill Squilla squilla squillagee squillery squillian squillid Squillidae squilloid Squilloidea squimmidge squin squinance squinancy squinch squinny squinsy squint squinted squinter squinting squintingly squintingness squintly squintness squinty squirage squiralty squire squirearch squirearchal squirearchical squirearchy squiredom squireen squirehood squireless squirelet squirelike squireling squirely squireocracy squireship squiress squiret squirewise squirish squirism squirk squirm squirminess squirming squirmingly squirmy squirr squirrel squirrelfish squirrelian squirreline squirrelish squirrellike squirrelproof squirreltail squirt squirter squirtiness squirting squirtingly squirtish squirty squish squishy squit squitch squitchy squitter squoze squush squushy sraddha sramana Sri sri sruti ssu st staab Staatsrat stab stabber stabbing stabbingly stabile stabilify stabilist stabilitate stability stabilization stabilizator stabilize stabilizer stable stableboy stableful stablekeeper stablelike stableman stableness stabler stablestand stableward stablewards stabling stablishment stably staboy stabproof stabulate stabulation stabwort staccato stacher stachydrin stachydrine stachyose Stachys stachys Stachytarpheta Stachyuraceae stachyuraceous Stachyurus stack stackage stackencloud stacker stackfreed stackful stackgarth Stackhousia Stackhousiaceae stackhousiaceous stackless stackman stackstand stackyard stacte stactometer stadda staddle staddling stade stadholder stadholderate stadholdership stadhouse stadia stadic stadimeter stadiometer stadion stadium stafette staff staffed staffelite staffer staffless staffman stag stagbush stage stageability stageable stageableness stageably stagecoach stagecoaching stagecraft staged stagedom stagehand stagehouse stageland stagelike stageman stager stagery stagese stagewise stageworthy stagewright staggard staggart staggarth stagger staggerbush staggerer staggering staggeringly staggers staggerweed staggerwort staggery staggie staggy staghead staghorn staghound staghunt staghunter staghunting stagiary stagily staginess staging Stagirite Stagiritic staglike stagmometer stagnance stagnancy stagnant stagnantly stagnantness stagnate stagnation stagnatory stagnature stagnicolous stagnize stagnum Stagonospora stagskin stagworm stagy Stahlhelm Stahlhelmer Stahlhelmist Stahlian Stahlianism Stahlism staia staid staidly staidness stain stainability stainable stainableness stainably stainer stainful stainierite staining stainless stainlessly stainlessness stainproof staio stair stairbeak stairbuilder stairbuilding staircase staired stairhead stairless stairlike stairstep stairway stairwise stairwork stairy staith staithman staiver stake stakehead stakeholder stakemaster staker stakerope Stakhanovism Stakhanovite stalactic stalactical stalactiform stalactital stalactite stalactited stalactitic stalactitical stalactitically stalactitiform stalactitious stalagma stalagmite stalagmitic stalagmitical stalagmitically stalagmometer stalagmometric stalagmometry stale stalely stalemate staleness staling Stalinism Stalinist Stalinite stalk stalkable stalked stalker stalkily stalkiness stalking stalkingly stalkless stalklet stalklike stalko stalky stall stallage stallar stallboard stallenger staller stallership stalling stallion stallionize stallman stallment stalwart stalwartism stalwartize stalwartly stalwartness stam stambha stambouline stamen stamened stamin stamina staminal staminate stamineal stamineous staminiferous staminigerous staminode staminodium staminody stammel stammer stammerer stammering stammeringly stammeringness stammerwort stamnos stamp stampable stampage stampedable stampede stampeder stampedingly stampee stamper stampery stamphead Stampian stamping stample stampless stampman stampsman stampweed stance stanch stanchable stanchel stancheled stancher stanchion stanchless stanchly stanchness stand standage standard standardbred standardizable standardization standardize standardized standardizer standardwise standee standel standelwelks standelwort stander standergrass standerwort standfast standing standish standoff standoffish standoffishness standout standpat standpatism standpatter standpipe standpoint standpost standstill stane stanechat stang Stangeria stanhope Stanhopea stanine stanjen stank stankie stannane stannary stannate stannator stannel stanner stannery stannic stannide stanniferous stannite stanno stannotype stannous stannoxyl stannum stannyl stanza stanzaed stanzaic stanzaical stanzaically stanze stap stapedectomy stapedial stapediform stapediovestibular stapedius Stapelia stapelia stapes staphisagria staphyle Staphylea Staphyleaceae staphyleaceous staphylectomy staphyledema staphylematoma staphylic staphyline staphylinic staphylinid Staphylinidae staphylinideous Staphylinoidea Staphylinus staphylion staphylitis staphyloangina staphylococcal staphylococci staphylococcic Staphylococcus staphylococcus staphylodermatitis staphylodialysis staphyloedema staphylohemia staphylolysin staphyloma staphylomatic staphylomatous staphylomycosis staphyloncus staphyloplastic staphyloplasty staphyloptosia staphyloptosis staphyloraphic staphylorrhaphic staphylorrhaphy staphyloschisis staphylosis staphylotome staphylotomy staphylotoxin staple stapled stapler staplewise stapling Star star starblind starbloom starboard starbolins starbright starch starchboard starched starchedly starchedness starcher starchflower starchily starchiness starchless starchlike starchly starchmaker starchmaking starchman starchness starchroot starchworks starchwort starchy starcraft stardom stare staree starer starets starfish starflower starfruit starful stargaze stargazer stargazing staring staringly stark starken starkly starkness starky starless starlessly starlessness starlet starlight starlighted starlights starlike starling starlit starlite starlitten starmonger starn starnel starnie starnose Staroobriadtsi starost starosta starosty starred starrily starriness starring starringly starry starshake starshine starship starshoot starshot starstone starstroke start starter startful startfulness starthroat starting startingly startish startle startler startling startlingly startlingness startlish startlishness startly startor starty starvation starve starveacre starved starvedly starveling starver starvy starward starwise starworm starwort stary stases stash stashie stasidion stasimetric stasimon stasimorphy stasiphobia stasis stassfurtite statable statal statant statcoulomb State state statecraft stated statedly stateful statefully statefulness statehood Statehouse stateless statelet statelich statelily stateliness stately statement statemonger statequake stater stateroom statesboy stateside statesider statesman statesmanese statesmanlike statesmanly statesmanship statesmonger stateswoman stateway statfarad stathmoi stathmos static statical statically Statice staticproof statics station stational stationarily stationariness stationary stationer stationery stationman stationmaster statiscope statism statist statistic statistical statistically statistician statisticize statistics statistology stative statoblast statocracy statocyst statolatry statolith statolithic statometer stator statoreceptor statorhab statoscope statospore statuarism statuarist statuary statue statuecraft statued statueless statuelike statuesque statuesquely statuesqueness statuette stature statured status statutable statutableness statutably statutary statute statutorily statutory statvolt staucher stauk staumer staun staunch staunchable staunchly staunchness staup stauracin stauraxonia stauraxonial staurion staurolatry staurolite staurolitic staurology Stauromedusae stauromedusan stauropegial stauropegion stauroscope stauroscopic stauroscopically staurotide stauter stave staveable staveless staver stavers staverwort stavesacre stavewise stavewood staving stavrite staw stawn staxis stay stayable stayed stayer staylace stayless staylessness staymaker staymaking staynil stays staysail stayship stchi stead steadfast steadfastly steadfastness steadier steadily steadiment steadiness steading steadman steady steadying steadyingly steadyish steak steal stealability stealable stealage stealed stealer stealing stealingly stealth stealthful stealthfully stealthily stealthiness stealthless stealthlike stealthwise stealthy stealy steam steamboat steamboating steamboatman steamcar steamer steamerful steamerless steamerload steamily steaminess steaming steamless steamlike steampipe steamproof steamship steamtight steamtightness steamy stean steaning steapsin stearate stearic steariform stearin stearolactone stearone stearoptene stearrhea stearyl steatin steatite steatitic steatocele steatogenous steatolysis steatolytic steatoma steatomatous steatopathic steatopyga steatopygia steatopygic steatopygous Steatornis Steatornithes Steatornithidae steatorrhea steatosis stech stechados steckling steddle Stedman steed steedless steedlike steek steekkan steekkannen steel Steelboy steeler steelhead steelhearted steelification steelify steeliness steeling steelless steellike steelmaker steelmaking steelproof steelware steelwork steelworker steelworks steely steelyard steen steenboc steenbock steenbok Steenie steenkirk steenstrupine steenth steep steepdown steepen steeper steepgrass steepish steeple steeplebush steeplechase steeplechaser steeplechasing steepled steepleless steeplelike steepletop steeply steepness steepweed steepwort steepy steer steerability steerable steerage steerageway steerer steering steeringly steerling steerman steermanship steersman steerswoman steeve steevely steever steeving steg steganogram steganographical steganographist steganography Steganophthalmata steganophthalmate steganophthalmatous Steganophthalmia steganopod steganopodan Steganopodes steganopodous stegnosis stegnotic stegocarpous Stegocephalia stegocephalian stegocephalous Stegodon stegodont stegodontine Stegomus Stegomyia stegosaur Stegosauria stegosaurian stegosauroid Stegosaurus steid steigh Stein stein Steinberger steinbok Steinerian steinful steinkirk Steironema stekan stela stelae stelai stelar stele stell Stella stella stellar Stellaria stellary stellate stellated stellately stellature stelleridean stellerine stelliferous stellification stelliform stellify stelling stellionate stelliscript Stellite stellite stellular stellularly stellulate stelography stem stema stemhead stemless stemlet stemlike stemma stemmata stemmatiform stemmatous stemmed stemmer stemmery stemming stemmy Stemona Stemonaceae stemonaceous stemple stempost stemson stemwards stemware sten stenar stench stenchel stenchful stenching stenchion stenchy stencil stenciler stencilmaker stencilmaking stend steng stengah stenion steno stenobathic stenobenthic stenobragmatic stenobregma stenocardia stenocardiac Stenocarpus stenocephalia stenocephalic stenocephalous stenocephaly stenochoria stenochrome stenochromy stenocoriasis stenocranial stenocrotaphia Stenofiber stenog stenogastric stenogastry Stenoglossa stenograph stenographer stenographic stenographical stenographically stenographist stenography stenohaline stenometer stenopaic Stenopelmatidae stenopetalous stenophile Stenophragma stenophyllous stenorhyncous stenosed stenosepalous stenosis stenosphere stenostomatous stenostomia Stenotaphrum stenotelegraphy stenothermal stenothorax stenotic stenotype stenotypic stenotypist stenotypy stent stenter stenterer stenton Stentor stentorian stentorianly stentorine stentorious stentoriously stentoriousness stentoronic stentorophonic stentrel step stepaunt stepbairn stepbrother stepbrotherhood stepchild stepdame stepdaughter stepfather stepfatherhood stepfatherly stepgrandchild stepgrandfather stepgrandmother stepgrandson Stephana stephane stephanial Stephanian stephanic stephanion stephanite Stephanoceros Stephanokontae stephanome stephanos Stephanotis stephanotis Stephanurus Stephen stepladder stepless steplike stepminnie stepmother stepmotherhood stepmotherless stepmotherliness stepmotherly stepnephew stepniece stepparent steppe stepped steppeland stepper stepping steppingstone steprelation steprelationship stepsire stepsister stepson stepstone stept stepuncle stepway stepwise steradian stercobilin stercolin stercophagic stercophagous stercoraceous stercoral Stercoranism Stercoranist Stercorariidae Stercorariinae stercorarious Stercorarius stercorary stercorate stercoration stercorean stercoremia stercoreous Stercorianism stercoricolous Stercorist stercorite stercorol stercorous stercovorous Sterculia Sterculiaceae sterculiaceous sterculiad stere stereagnosis Sterelmintha sterelminthic sterelminthous stereo stereobate stereobatic stereoblastula stereocamera stereocampimeter stereochemic stereochemical stereochemically stereochemistry stereochromatic stereochromatically stereochrome stereochromic stereochromically stereochromy stereocomparagraph stereocomparator stereoelectric stereofluoroscopic stereofluoroscopy stereogastrula stereognosis stereognostic stereogoniometer stereogram stereograph stereographer stereographic stereographical stereographically stereography stereoisomer stereoisomeric stereoisomerical stereoisomeride stereoisomerism stereomatrix stereome stereomer stereomeric stereomerical stereomerism stereometer stereometric stereometrical stereometrically stereometry stereomicrometer stereomonoscope stereoneural stereophantascope stereophonic stereophony stereophotogrammetry stereophotograph stereophotographic stereophotography stereophotomicrograph stereophotomicrography stereophysics stereopicture stereoplanigraph stereoplanula stereoplasm stereoplasma stereoplasmic stereopsis stereoptician stereopticon stereoradiograph stereoradiography Stereornithes stereornithic stereoroentgenogram stereoroentgenography stereoscope stereoscopic stereoscopically stereoscopism stereoscopist stereoscopy Stereospondyli stereospondylous stereostatic stereostatics stereotactic stereotactically stereotaxis stereotelemeter stereotelescope stereotomic stereotomical stereotomist stereotomy stereotropic stereotropism stereotypable stereotype stereotyped stereotyper stereotypery stereotypic stereotypical stereotyping stereotypist stereotypographer stereotypography stereotypy Stereum sterhydraulic steri steric sterically sterics steride sterigma sterigmata sterigmatic sterile sterilely sterileness sterilisable sterility sterilizability sterilizable sterilization sterilize sterilizer sterin sterk sterlet Sterling sterling sterlingly sterlingness Stern stern Sterna sterna sternad sternage sternal sternalis sternbergite sterncastle sterneber sternebra sternebrae sternebral sterned sternforemost Sterninae sternite sternitic sternly sternman sternmost sternness Sterno sternoclavicular sternocleidomastoid sternoclidomastoid sternocoracoid sternocostal sternofacial sternofacialis sternoglossal sternohumeral sternohyoid sternohyoidean sternomancy sternomastoid sternomaxillary sternonuchal sternopericardiac sternopericardial sternoscapular sternothere Sternotherus sternothyroid sternotracheal sternotribe sternovertebral sternoxiphoid sternpost sternson sternum sternutation sternutative sternutator sternutatory sternward sternway sternways sternworks stero steroid sterol Sterope sterrinck stert stertor stertorious stertoriously stertoriousness stertorous stertorously stertorousness sterve Stesichorean stet stetch stetharteritis stethogoniometer stethograph stethographic stethokyrtograph stethometer stethometric stethometry stethoparalysis stethophone stethophonometer stethoscope stethoscopic stethoscopical stethoscopically stethoscopist stethoscopy stethospasm stevedorage stevedore stevedoring stevel Steven steven Stevensonian Stevensoniana Stevia stevia stew stewable steward stewardess stewardly stewardry stewardship Stewart Stewartia stewartry stewarty stewed stewpan stewpond stewpot stewy stey sthenia sthenic sthenochire stib stibbler stibblerig stibethyl stibial stibialism stibiate stibiated stibic stibiconite stibine stibious stibium stibnite stibonium sticcado stich sticharion sticheron stichic stichically stichid stichidium stichomancy stichometric stichometrical stichometrically stichometry stichomythic stichomythy stick stickability stickable stickadore stickadove stickage stickball sticked sticker stickers stickfast stickful stickily stickiness sticking stickit stickle stickleaf stickleback stickler stickless sticklike stickling stickly stickpin sticks stickseed sticksmanship sticktail sticktight stickum stickwater stickweed stickwork sticky Sticta Stictaceae Stictidaceae stictiform Stictis stid stiddy stife stiff stiffen stiffener stiffening stiffhearted stiffish stiffleg stifflike stiffly stiffneck stiffness stiffrump stifftail stifle stifledly stifler stifling stiflingly stigma stigmai stigmal stigmaria stigmarian stigmarioid stigmasterol stigmata stigmatal stigmatic stigmatical stigmatically stigmaticalness stigmatiferous stigmatiform stigmatism stigmatist stigmatization stigmatize stigmatizer stigmatoid stigmatose stigme stigmeology stigmonose stigonomancy Stikine Stilbaceae Stilbella stilbene stilbestrol stilbite stilboestrol Stilbum stile stileman stilet stiletto stilettolike still stillage stillatitious stillatory stillbirth stillborn stiller stillhouse stillicide stillicidium stilliform stilling Stillingia stillion stillish stillman stillness stillroom stillstand Stillwater stilly Stilophora Stilophoraceae stilpnomelane stilpnosiderite stilt stiltbird stilted stilter stiltify stiltiness stiltish stiltlike Stilton stilty stim stime stimpart stimpert stimulability stimulable stimulance stimulancy stimulant stimulate stimulatingly stimulation stimulative stimulator stimulatory stimulatress stimulatrix stimuli stimulogenous stimulus stimy stine sting stingaree stingareeing stingbull stinge stinger stingfish stingily stinginess stinging stingingly stingingness stingless stingo stingproof stingray stingtail stingy stink stinkard stinkardly stinkball stinkberry stinkbird stinkbug stinkbush stinkdamp stinker stinkhorn stinking stinkingly stinkingness stinkpot stinkstone stinkweed stinkwood stinkwort stint stinted stintedly stintedness stinter stintingly stintless stinty stion stionic Stipa stipe stiped stipel stipellate stipend stipendial stipendiarian stipendiary stipendiate stipendium stipendless stipes stipiform stipitate stipitiform stipiture Stipiturus stippen stipple stippled stippler stippling stipply stipula stipulable stipulaceous stipulae stipular stipulary stipulate stipulation stipulator stipulatory stipule stipuled stipuliferous stipuliform stir stirabout stirk stirless stirlessly stirlessness stirp stirpicultural stirpiculture stirpiculturist stirps stirra stirrable stirrage stirrer stirring stirringly stirrup stirrupless stirruplike stirrupwise stitch stitchbird stitchdown stitcher stitchery stitching stitchlike stitchwhile stitchwork stitchwort stite stith stithy stive stiver stivy Stizolobium stoa stoach stoat stoater stob stocah stoccado stoccata stochastic stochastical stochastically stock stockade stockannet stockbow stockbreeder stockbreeding Stockbridge stockbroker stockbrokerage stockbroking stockcar stocker stockfather stockfish stockholder stockholding stockhouse stockily stockiness stockinet stocking stockinger stockingless stockish stockishly stockishness stockjobber stockjobbery stockjobbing stockjudging stockkeeper stockkeeping stockless stocklike stockmaker stockmaking stockman stockowner stockpile stockpot stockproof stockrider stockriding stocks stockstone stocktaker stocktaking Stockton stockwork stockwright stocky stockyard stod stodge stodger stodgery stodgily stodginess stodgy stoechas stoep stof stoff stog stoga stogie stogy Stoic stoic stoical stoically stoicalness stoicharion stoichiological stoichiology stoichiometric stoichiometrical stoichiometrically stoichiometry Stoicism stoicism Stokavci Stokavian Stokavski stoke stokehold stokehole stoker stokerless Stokesia stokesite stola stolae stole stoled stolelike stolen stolenly stolenness stolenwise stolewise stolid stolidity stolidly stolidness stolist stolkjaerre stollen stolon stolonate stoloniferous stoloniferously stolonlike stolzite stoma stomacace stomach stomachable stomachal stomacher stomachful stomachfully stomachfulness stomachic stomachically stomachicness stomaching stomachless stomachlessness stomachy stomapod Stomapoda stomapodiform stomapodous stomata stomatal stomatalgia stomate stomatic stomatiferous stomatitic stomatitis stomatocace Stomatoda stomatodaeal stomatodaeum stomatode stomatodeum stomatodynia stomatogastric stomatograph stomatography stomatolalia stomatologic stomatological stomatologist stomatology stomatomalacia stomatomenia stomatomy stomatomycosis stomatonecrosis stomatopathy Stomatophora stomatophorous stomatoplastic stomatoplasty stomatopod Stomatopoda stomatopodous stomatorrhagia stomatoscope stomatoscopy stomatose stomatosepsis stomatotomy stomatotyphus stomatous stomenorrhagia stomium stomodaea stomodaeal stomodaeum Stomoisia stomoxys stomp stomper stonable stond Stone stone stoneable stonebird stonebiter stoneboat stonebow stonebrash stonebreak stonebrood stonecast stonechat stonecraft stonecrop stonecutter stoned stonedamp stonefish stonegale stonegall stonehand stonehatch stonehead stonehearted Stonehenge stonelayer stonelaying stoneless stonelessness stonelike stoneman stonemason stonemasonry stonen stonepecker stoner stoneroot stoneseed stoneshot stonesmatch stonesmich stonesmitch stonesmith stonewall stonewaller stonewally stoneware stoneweed stonewise stonewood stonework stoneworker stonewort stoneyard stong stonied stonifiable stonify stonily stoniness stoning stonish stonishment stonker stony stonyhearted stonyheartedly stonyheartedness stood stooded stooden stoof stooge stook stooker stookie stool stoolball stoollike stoon stoond stoop stooper stoopgallant stooping stoopingly stoory stoot stoothing stop stopa stopback stopblock stopboard stopcock stope stoper stopgap stophound stoping stopless stoplessness stopover stoppability stoppable stoppableness stoppably stoppage stopped stopper stopperless stoppeur stopping stoppit stopple stopwater stopwork storable storage storax store storeen storehouse storehouseman storekeep storekeeper storekeeping storeman storer storeroom storeship storesman storge storiate storiation storied storier storiette storify storiological storiologist storiology stork storken storkish storklike storkling storkwise storm stormable Stormberg stormbird stormbound stormcock stormer stormful stormfully stormfulness stormily storminess storming stormingly stormish stormless stormlessness stormlike stormproof stormward stormwind stormwise stormy Storting story storybook storyless storymaker storymonger storyteller storytelling storywise storywork stosh stoss stosston stot stotinka stotter stotterel stoun stound stoundmeal stoup stoupful stour stouring stourliness stourness stoury stoush stout stouten stouth stouthearted stoutheartedly stoutheartedness stoutish stoutly stoutness stoutwood stouty stove stovebrush stoveful stovehouse stoveless stovemaker stovemaking stoveman stoven stovepipe stover stovewood stow stowable stowage stowaway stowbord stowbordman stowce stowdown stower stowing stownlins stowwood stra strabism strabismal strabismally strabismic strabismical strabismometer strabismometry strabismus strabometer strabometry strabotome strabotomy strack strackling stract Strad strad stradametrical straddle straddleback straddlebug straddler straddleways straddlewise straddling straddlingly strade stradine stradiot Stradivari Stradivarius stradl stradld stradlings strae strafe strafer Straffordian strag straggle straggler straggling stragglingly straggly stragular stragulum straight straightabout straightaway straightedge straighten straightener straightforward straightforwardly straightforwardness straightforwards straighthead straightish straightly straightness straighttail straightup straightwards straightway straightways straightwise straik strain strainable strainableness strainably strained strainedly strainedness strainer strainerman straining strainingly strainless strainlessly strainproof strainslip straint strait straiten straitlacedness straitlacing straitly straitness straitsman straitwork strake straked straky stram stramash stramazon stramineous stramineously strammel strammer stramonium stramony stramp strand strandage strander stranding strandless strandward strang strange strangeling strangely strangeness stranger strangerdom strangerhood strangerlike strangership strangerwise strangle strangleable stranglement strangler strangles strangletare strangleweed strangling stranglingly strangulable strangulate strangulation strangulative strangulatory strangullion strangurious strangury stranner strany strap straphang straphanger straphead strapless straplike strappable strappado strappan strapped strapper strapping strapple strapwork strapwort strass strata stratagem stratagematic stratagematical stratagematically stratagematist stratagemical stratagemically stratal stratameter stratege strategetic strategetics strategi strategian strategic strategical strategically strategics strategist strategize strategos strategy Stratfordian strath strathspey strati stratic straticulate straticulation stratification stratified stratiform stratify stratigrapher stratigraphic stratigraphical stratigraphically stratigraphist stratigraphy Stratiomyiidae Stratiotes stratlin stratochamber stratocracy stratocrat stratocratic stratographic stratographical stratographically stratography stratonic Stratonical stratopedarch stratoplane stratose stratosphere stratospheric stratospherical stratotrainer stratous stratum stratus straucht strauchten stravage strave straw strawberry strawberrylike strawbill strawboard strawbreadth strawen strawer strawflower strawfork strawless strawlike strawman strawmote strawsmall strawsmear strawstack strawstacker strawwalker strawwork strawworm strawy strawyard stray strayaway strayer strayling stre streahte streak streaked streakedly streakedness streaker streakily streakiness streaklike streakwise streaky stream streamer streamful streamhead streaminess streaming streamingly streamless streamlet streamlike streamline streamlined streamliner streamling streamside streamward streamway streamwort streamy streck streckly stree streek streel streeler streen streep street streetage streetcar streetful streetless streetlet streetlike streets streetside streetwalker streetwalking streetward streetway streetwise streite streke Strelitz Strelitzi strelitzi Strelitzia Streltzi streltzi stremma stremmatograph streng strengite strength strengthen strengthener strengthening strengtheningly strengthful strengthfulness strengthily strengthless strengthlessly strengthlessness strengthy strent strenth strenuity strenuosity strenuous strenuously strenuousness strepen strepent strepera streperous strephonade strephosymbolia strepitant strepitantly strepitation strepitous strepor Strepsiceros strepsiceros strepsinema Strepsiptera strepsipteral strepsipteran strepsipteron strepsipterous strepsis strepsitene streptaster streptobacilli streptobacillus Streptocarpus streptococcal streptococci streptococcic Streptococcus streptococcus streptolysin Streptomyces streptomycin Streptoneura streptoneural streptoneurous streptosepticemia streptothricial streptothricin streptothricosis Streptothrix streptotrichal streptotrichosis stress stresser stressful stressfully stressless stresslessness stret stretch stretchable stretchberry stretcher stretcherman stretchiness stretchneck stretchproof stretchy stretman strette stretti stretto strew strewage strewer strewment strewn strey streyne stria striae strial Striaria Striariaceae striatal striate striated striation striatum striature strich striche strick stricken strickenly strickenness stricker strickle strickler strickless strict striction strictish strictly strictness stricture strictured strid stridden striddle stride strideleg stridelegs stridence stridency strident stridently strider strideways stridhan stridhana stridhanum stridingly stridling stridlins stridor stridulant stridulate stridulation stridulator stridulatory stridulent stridulous stridulously stridulousness strife strifeful strifeless strifemaker strifemaking strifemonger strifeproof striffen strig Striga striga strigae strigal strigate Striges striggle stright Strigidae Strigiformes strigil strigilate strigilation strigilator strigiles strigilis strigillose strigilous Striginae strigine strigose strigous strigovite Strigula Strigulaceae strigulose strike strikeboat strikebreaker strikebreaking strikeless striker striking strikingly strikingness strind string stringboard stringcourse stringed stringency stringene stringent stringently stringentness stringer stringful stringhalt stringhalted stringhaltedness stringiness stringing stringless stringlike stringmaker stringmaking stringman stringpiece stringsman stringways stringwood stringy stringybark strinkle striola striolae striolate striolated striolet strip stripe striped stripeless striper striplet stripling strippage stripped stripper stripping strippit strippler stript stripy strit strive strived striven striver striving strivingly Strix strix stroam strobic strobila strobilaceous strobilae strobilate strobilation strobile strobili strobiliferous strobiliform strobiline strobilization strobiloid Strobilomyces Strobilophyta strobilus stroboscope stroboscopic stroboscopical stroboscopy strobotron strockle stroddle strode stroil stroke stroker strokesman stroking stroky strold stroll strolld stroller strom stroma stromal stromata Stromateidae stromateoid stromatic stromatiform stromatology Stromatopora Stromatoporidae stromatoporoid Stromatoporoidea stromatous stromb Strombidae strombiform strombite stromboid strombolian strombuliferous strombuliform Strombus strome stromeyerite stromming strone strong strongback strongbark strongbox strongbrained strongfully stronghand stronghead strongheadedly strongheadedness stronghearted stronghold strongish stronglike strongly strongness strongylate strongyle strongyliasis strongylid Strongylidae strongylidosis strongyloid Strongyloides strongyloidosis strongylon Strongyloplasmata Strongylosis strongylosis Strongylus strontia strontian strontianiferous strontianite strontic strontion strontitic strontium strook strooken stroot strop strophaic strophanhin Strophanthus Stropharia strophe strophic strophical strophically strophiolate strophiolated strophiole strophoid Strophomena Strophomenacea strophomenid Strophomenidae strophomenoid strophosis strophotaxis strophulus stropper stroppings stroth stroud strouding strounge stroup strouthiocamel strouthiocamelian strouthocamelian strove strow strowd strown stroy stroyer stroygood strub strubbly struck strucken structural structuralism structuralist structuralization structuralize structurally structuration structure structured structureless structurely structurist strudel strue struggle struggler struggling strugglingly Struldbrug Struldbruggian Struldbruggism strum struma strumae strumatic strumaticness strumectomy Strumella strumiferous strumiform strumiprivic strumiprivous strumitis strummer strumose strumous strumousness strumpet strumpetlike strumpetry strumstrum strumulose strung strunt strut struth struthian struthiform Struthio struthioid Struthiomimus Struthiones Struthionidae struthioniform Struthioniformes Struthiopteris struthious struthonine strutter strutting struttingly struv struvite strych strychnia strychnic strychnin strychnine strychninic strychninism strychninization strychninize strychnize strychnol Strychnos Strymon Stuart Stuartia stub stubachite stubb stubbed stubbedness stubber stubbiness stubble stubbleberry stubbled stubbleward stubbly stubborn stubbornhearted stubbornly stubbornness stubboy stubby stubchen stuber stuboy stubrunner stucco stuccoer stuccowork stuccoworker stuccoyer stuck stuckling stucturelessness stud studbook studder studdie studding studdle stude student studenthood studentless studentlike studentry studentship studerite studfish studflower studhorse studia studiable studied studiedly studiedness studier studio studious studiously studiousness Studite Studium studium studwork study stue stuff stuffed stuffender stuffer stuffgownsman stuffily stuffiness stuffing stuffy stug stuggy stuiver stull stuller stulm stultification stultifier stultify stultiloquence stultiloquently stultiloquious stultioquy stultloquent stum stumble stumbler stumbling stumblingly stumbly stumer stummer stummy stump stumpage stumper stumpily stumpiness stumpish stumpless stumplike stumpling stumpnose stumpwise stumpy stun Stundism Stundist stung stunk stunkard stunner stunning stunningly stunpoll stunsail stunsle stunt stunted stuntedly stuntedness stunter stuntiness stuntness stunty stupa stupe stupefacient stupefaction stupefactive stupefactiveness stupefied stupefiedness stupefier stupefy stupend stupendly stupendous stupendously stupendousness stupent stupeous stupex stupid stupidhead stupidish stupidity stupidly stupidness stupor stuporific stuporose stuporous stupose stupp stuprate stupration stuprum stupulose sturdied sturdily sturdiness sturdy sturdyhearted sturgeon sturine Sturiones sturionine sturk Sturmian Sturnella Sturnidae sturniform Sturninae sturnine sturnoid Sturnus sturt sturtan sturtin sturtion sturtite stuss stut stutter stutterer stuttering stutteringly sty styan styca styceric stycerin stycerinol stychomythia styful styfziekte Stygial Stygian stylar Stylaster Stylasteridae stylate style stylebook styledom styleless stylelessness stylelike styler stylet stylewort Stylidiaceae stylidiaceous Stylidium styliferous styliform styline styling stylish stylishly stylishness stylist stylistic stylistical stylistically stylistics stylite stylitic stylitism stylization stylize stylizer stylo styloauricularis stylobate Stylochus styloglossal styloglossus stylogonidium stylograph stylographic stylographical stylographically stylography stylohyal stylohyoid stylohyoidean stylohyoideus styloid stylolite stylolitic stylomandibular stylomastoid stylomaxillary stylometer Stylommatophora stylommatophorous stylomyloid Stylonurus Stylonychia stylopharyngeal stylopharyngeus stylopid Stylopidae stylopization stylopized stylopod stylopodium Stylops stylops Stylosanthes stylospore stylosporous stylostegium stylotypite stylus stymie Stymphalian Stymphalid Stymphalides Styphelia styphnate styphnic stypsis styptic styptical stypticalness stypticity stypticness Styracaceae styracaceous styracin Styrax styrax styrene Styrian styrogallol styrol styrolene styrone styryl styrylic stythe styward Styx Styxian suability suable suably suade Suaeda suaharo Sualocin Suanitian suant suantly suasible suasion suasionist suasive suasively suasiveness suasory suavastika suave suavely suaveness suaveolent suavify suaviloquence suaviloquent suavity sub subabbot subabdominal subability subabsolute subacademic subaccount subacetate subacid subacidity subacidly subacidness subacidulous subacrid subacrodrome subacromial subact subacuminate subacute subacutely subadditive subadjacent subadjutor subadministrate subadministration subadministrator subadult subaduncate subaerate subaeration subaerial subaerially subaetheric subaffluent subage subagency subagent subaggregate subah subahdar subahdary subahship subaid Subakhmimic subalary subalate subalgebra subalkaline suballiance subalmoner subalpine subaltern subalternant subalternate subalternately subalternating subalternation subalternity subanal subandean subangled subangular subangulate subangulated subanniversary subantarctic subantichrist subantique Subanun subapical subaponeurotic subapostolic subapparent subappearance subappressed subapprobation subapterous subaquatic subaquean subaqueous subarachnoid subarachnoidal subarachnoidean subarboraceous subarboreal subarborescent subarch subarchesporial subarchitect subarctic subarcuate subarcuated subarcuation subarea subareolar subareolet Subarian subarmor subarouse subarrhation subartesian subarticle subarytenoid subascending subassemblage subassembly subassociation subastragalar subastragaloid subastral subastringent subatom subatomic subattenuate subattenuated subattorney subaud subaudible subaudition subauditionist subauditor subauditur subaural subauricular subautomatic subaverage subaxillar subaxillary subbailie subbailiff subbailiwick subballast subband subbank subbasal subbasaltic subbase subbasement subbass subbeadle subbeau subbias subbifid subbing subbituminous subbookkeeper subboreal subbourdon subbrachycephalic subbrachycephaly subbrachyskelic subbranch subbranched subbranchial subbreed subbrigade subbrigadier subbroker subbromid subbromide subbronchial subbureau subcaecal subcalcareous subcalcarine subcaliber subcallosal subcampanulate subcancellate subcandid subcantor subcapsular subcaptain subcaption subcarbide subcarbonate Subcarboniferous subcarbureted subcarburetted subcardinal subcarinate subcartilaginous subcase subcash subcashier subcasino subcast subcaste subcategory subcaudal subcaudate subcaulescent subcause subcavate subcavity subcelestial subcell subcellar subcenter subcentral subcentrally subchairman subchamberer subchancel subchanter subchapter subchaser subchela subchelate subcheliform subchief subchloride subchondral subchordal subchorioid subchorioidal subchorionic subchoroid subchoroidal subcinctorium subcineritious subcingulum subcircuit subcircular subcision subcity subclaim Subclamatores subclan subclass subclassify subclause subclavate subclavia subclavian subclavicular subclavioaxillary subclaviojugular subclavius subclerk subclimate subclimax subclinical subclover subcoastal subcollateral subcollector subcollegiate subcolumnar subcommander subcommendation subcommended subcommissary subcommissaryship subcommission subcommissioner subcommit subcommittee subcompany subcompensate subcompensation subcompressed subconcave subconcession subconcessionaire subconchoidal subconference subconformable subconical subconjunctival subconjunctively subconnate subconnect subconnivent subconscience subconscious subconsciously subconsciousness subconservator subconsideration subconstable subconstellation subconsul subcontained subcontest subcontiguous subcontinent subcontinental subcontinual subcontinued subcontinuous subcontract subcontracted subcontractor subcontraoctave subcontrariety subcontrarily subcontrary subcontrol subconvex subconvolute subcool subcoracoid subcordate subcordiform subcoriaceous subcorneous subcorporation subcortex subcortical subcortically subcorymbose subcosta subcostal subcostalis subcouncil subcranial subcreative subcreek subcrenate subcrepitant subcrepitation subcrescentic subcrest subcriminal subcrossing subcrureal subcrureus subcrust subcrustaceous subcrustal subcrystalline subcubical subcuboidal subcultrate subcultural subculture subcurate subcurator subcuratorship subcurrent subcutaneous subcutaneously subcutaneousness subcuticular subcutis subcyaneous subcyanide subcylindric subcylindrical subdatary subdate subdeacon subdeaconate subdeaconess subdeaconry subdeaconship subdealer subdean subdeanery subdeb subdebutante subdecanal subdecimal subdecuple subdeducible subdefinition subdelegate subdelegation subdelirium subdeltaic subdeltoid subdeltoidal subdemonstrate subdemonstration subdenomination subdentate subdentated subdented subdenticulate subdepartment subdeposit subdepository subdepot subdepressed subdeputy subderivative subdermal subdeterminant subdevil subdiaconal subdiaconate subdial subdialect subdialectal subdialectally subdiapason subdiapente subdiaphragmatic subdichotomize subdichotomous subdichotomously subdichotomy subdie subdilated subdirector subdiscoidal subdisjunctive subdistich subdistichous subdistinction subdistinguish subdistinguished subdistrict subdititious subdititiously subdivecious subdiversify subdividable subdivide subdivider subdividing subdividingly subdivine subdivisible subdivision subdivisional subdivisive subdoctor subdolent subdolichocephalic subdolichocephaly subdolous subdolously subdolousness subdominant subdorsal subdorsally subdouble subdrain subdrainage subdrill subdruid subduable subduableness subduably subdual subduce subduct subduction subdue subdued subduedly subduedness subduement subduer subduing subduingly subduple subduplicate subdural subdurally subecho subectodermal subedit subeditor subeditorial subeditorship subeffective subelection subelectron subelement subelementary subelliptic subelliptical subelongate subemarginate subencephalon subencephaltic subendocardial subendorse subendorsement subendothelial subendymal subenfeoff subengineer subentire subentitle subentry subepidermal subepiglottic subepithelial subepoch subequal subequality subequally subequatorial subequilateral subequivalve suber suberane suberate suberect subereous suberic suberiferous suberification suberiform suberin suberinization suberinize Suberites Suberitidae suberization suberize suberone suberose suberous subescheator subesophageal subessential subetheric subexaminer subexcitation subexcite subexecutor subexternal subface subfacies subfactor subfactorial subfactory subfalcate subfalcial subfalciform subfamily subfascial subfastigiate subfebrile subferryman subfestive subfeu subfeudation subfeudatory subfibrous subfief subfigure subfissure subfix subflavor subflexuose subfloor subflooring subflora subflush subfluvial subfocal subfoliar subforeman subform subformation subfossil subfossorial subfoundation subfraction subframe subfreshman subfrontal subfulgent subfumigation subfumose subfunctional subfusc subfuscous subfusiform subfusk subgalea subgallate subganger subgape subgelatinous subgeneric subgenerical subgenerically subgeniculate subgenital subgens subgenual subgenus subgeometric subget subgit subglabrous subglacial subglacially subglenoid subglobose subglobosely subglobular subglobulose subglossal subglossitis subglottic subglumaceous subgod subgoverness subgovernor subgrade subgranular subgrin subgroup subgular subgwely subgyre subgyrus subhalid subhalide subhall subharmonic subhastation subhatchery subhead subheading subheadquarters subheadwaiter subhealth subhedral subhemispherical subhepatic subherd subhero subhexagonal subhirsute subhooked subhorizontal subhornblendic subhouse subhuman subhumid subhyaline subhyaloid subhymenial subhymenium subhyoid subhyoidean subhypothesis subhysteria subicle subicteric subicular subiculum subidar subidea subideal subimaginal subimago subimbricate subimbricated subimposed subimpressed subincandescent subincident subincise subincision subincomplete subindex subindicate subindication subindicative subindices subindividual subinduce subinfer subinfeud subinfeudate subinfeudation subinfeudatory subinflammation subinflammatory subinform subingression subinguinal subinitial subinoculate subinoculation subinsert subinsertion subinspector subinspectorship subintegumental subintellection subintelligential subintelligitur subintent subintention subintercessor subinternal subinterval subintestinal subintroduce subintroduction subintroductory subinvoluted subinvolution subiodide subirrigate subirrigation subitane subitaneous subitem Subiya subjacency subjacent subjacently subjack subject subjectability subjectable subjectdom subjected subjectedly subjectedness subjecthood subjectibility subjectible subjectification subjectify subjectile subjection subjectional subjectist subjective subjectively subjectiveness subjectivism subjectivist subjectivistic subjectivistically subjectivity subjectivize subjectivoidealistic subjectless subjectlike subjectness subjectship subjee subjicible subjoin subjoinder subjoint subjudge subjudiciary subjugable subjugal subjugate subjugation subjugator subjugular subjunct subjunction subjunctive subjunctively subjunior subking subkingdom sublabial sublaciniate sublacustrine sublanate sublanceolate sublanguage sublapsarian sublapsarianism sublapsary sublaryngeal sublate sublateral sublation sublative subleader sublease sublecturer sublegislation sublegislature sublenticular sublessee sublessor sublet sublethal sublettable subletter sublevaminous sublevate sublevation sublevel sublibrarian sublicense sublicensee sublid sublieutenancy sublieutenant subligation sublighted sublimable sublimableness sublimant sublimate sublimation sublimational sublimationist sublimator sublimatory sublime sublimed sublimely sublimeness sublimer subliminal subliminally sublimish sublimitation sublimity sublimize sublinear sublineation sublingua sublinguae sublingual sublinguate sublittoral sublobular sublong subloral subloreal sublot sublumbar sublunar sublunary sublunate sublustrous subluxate subluxation submaid submain submakroskelic submammary subman submanager submania submanic submanor submarginal submarginally submarginate submargined submarine submariner submarinism submarinist submarshal submaster submaxilla submaxillary submaximal submeaning submedial submedian submediant submediation submediocre submeeting submember submembranaceous submembranous submeningeal submental submentum submerge submerged submergement submergence submergibility submergible submerse submersed submersibility submersible submersion submetallic submeter submetering submicron submicroscopic submicroscopically submiliary submind subminimal subminister submiss submissible submission submissionist submissive submissively submissiveness submissly submissness submit submittal submittance submitter submittingly submolecule submonition submontagne submontane submontanely submontaneous submorphous submortgage submotive submountain submucosa submucosal submucous submucronate submultiple submundane submuriate submuscular Submytilacea subnarcotic subnasal subnascent subnatural subnect subnervian subness subneural subnex subnitrate subnitrated subniveal subnivean subnormal subnormality subnotation subnote subnotochordal subnubilar subnucleus subnude subnumber subnuvolar suboblique subobscure subobscurely subobtuse suboccipital subocean suboceanic suboctave suboctile suboctuple subocular suboesophageal suboffice subofficer subofficial subolive subopaque subopercle subopercular suboperculum subopposite suboptic suboptimal suboptimum suboral suborbicular suborbiculate suborbiculated suborbital suborbitar suborbitary subordain suborder subordinacy subordinal subordinary subordinate subordinately subordinateness subordinating subordinatingly subordination subordinationism subordinationist subordinative suborganic suborn subornation subornative suborner Suboscines suboval subovate subovated suboverseer subovoid suboxidation suboxide subpackage subpagoda subpallial subpalmate subpanel subparagraph subparallel subpart subpartition subpartitioned subpartitionment subparty subpass subpassage subpastor subpatron subpattern subpavement subpectinate subpectoral subpeduncle subpeduncular subpedunculate subpellucid subpeltate subpeltated subpentagonal subpentangular subpericardial subperiod subperiosteal subperiosteally subperitoneal subperitoneally subpermanent subpermanently subperpendicular subpetiolar subpetiolate subpharyngeal subphosphate subphratry subphrenic subphylar subphylum subpial subpilose subpimp subpiston subplacenta subplant subplantigrade subplat subpleural subplinth subplot subplow subpodophyllous subpoena subpoenal subpolar subpolygonal subpool subpopular subpopulation subporphyritic subport subpostmaster subpostmastership subpostscript subpotency subpotent subpreceptor subpreceptorial subpredicate subpredication subprefect subprefectorial subprefecture subprehensile subpress subprimary subprincipal subprior subprioress subproblem subproctor subproduct subprofessional subprofessor subprofessoriate subprofitable subproportional subprotector subprovince subprovincial subpubescent subpubic subpulmonary subpulverizer subpunch subpunctuation subpurchaser subpurlin subputation subpyramidal subpyriform subquadrangular subquadrate subquality subquestion subquinquefid subquintuple subrace subradial subradiance subradiate subradical subradius subradular subrailway subrameal subramose subramous subrange subrational subreader subreason subrebellion subrectangular subrector subreference subregent subregion subregional subregular subreguli subregulus subrelation subreligion subreniform subrent subrepand subrepent subreport subreptary subreption subreptitious subreputable subresin subretinal subrhombic subrhomboid subrhomboidal subrictal subrident subridently subrigid subrision subrisive subrisory subrogate subrogation subroot subrostral subround subrule subruler subsacral subsale subsaline subsalt subsample subsartorial subsatiric subsatirical subsaturated subsaturation subscapular subscapularis subscapulary subschedule subscheme subschool subscience subscleral subsclerotic subscribable subscribe subscriber subscribership subscript subscription subscriptionist subscriptive subscriptively subscripture subscrive subscriver subsea subsecive subsecretarial subsecretary subsect subsection subsecurity subsecute subsecutive subsegment subsemifusa subsemitone subsensation subsensible subsensual subsensuous subsept subseptuple subsequence subsequency subsequent subsequential subsequentially subsequently subsequentness subseries subserosa subserous subserrate subserve subserviate subservience subserviency subservient subserviently subservientness subsessile subset subsewer subsextuple subshaft subsheriff subshire subshrub subshrubby subside subsidence subsidency subsident subsider subsidiarie subsidiarily subsidiariness subsidiary subsiding subsidist subsidizable subsidization subsidize subsidizer subsidy subsilicate subsilicic subsill subsimilation subsimious subsimple subsinuous subsist subsistence subsistency subsistent subsistential subsistingly subsizar subsizarship subsmile subsneer subsocial subsoil subsoiler subsolar subsolid subsonic subsorter subsovereign subspace subspatulate subspecialist subspecialize subspecialty subspecies subspecific subspecifically subsphenoidal subsphere subspherical subspherically subspinous subspiral subspontaneous subsquadron substage substalagmite substalagmitic substance substanceless substanch substandard substandardize substant substantiability substantial substantialia substantialism substantialist substantiality substantialize substantially substantialness substantiate substantiation substantiative substantiator substantify substantious substantival substantivally substantive substantively substantiveness substantivity substantivize substantize substation substernal substituent substitutable substitute substituted substituter substituting substitutingly substitution substitutional substitutionally substitutionary substitutive substitutively substock substoreroom substory substract substraction substratal substrate substrati substrative substrator substratose substratosphere substratospheric substratum substriate substruct substruction substructional substructural substructure substylar substyle subsulfid subsulfide subsulphate subsulphid subsulphide subsult subsultive subsultorily subsultorious subsultory subsultus subsumable subsume subsumption subsumptive subsuperficial subsurety subsurface subsyndicate subsynod subsynodical subsystem subtack subtacksman subtangent subtarget subtartarean subtectal subtegminal subtegulaneous subtemperate subtenancy subtenant subtend subtense subtenure subtepid subteraqueous subterbrutish subtercelestial subterconscious subtercutaneous subterethereal subterfluent subterfluous subterfuge subterhuman subterjacent subtermarine subterminal subternatural subterpose subterposition subterrane subterraneal subterranean subterraneanize subterraneanly subterraneous subterraneously subterraneousness subterranity subterraqueous subterrene subterrestrial subterritorial subterritory subtersensual subtersensuous subtersuperlative subtersurface subtertian subtext subthalamic subthalamus subthoracic subthrill subtile subtilely subtileness subtilin subtilism subtilist subtility subtilization subtilize subtilizer subtill subtillage subtilty subtitle subtitular subtle subtleness subtlety subtlist subtly subtone subtonic subtorrid subtotal subtotem subtower subtract subtracter subtraction subtractive subtrahend subtranslucent subtransparent subtransverse subtrapezoidal subtread subtreasurer subtreasurership subtreasury subtrench subtriangular subtriangulate subtribal subtribe subtribual subtrifid subtrigonal subtrihedral subtriplicate subtriplicated subtriquetrous subtrist subtrochanteric subtrochlear subtropic subtropical subtropics subtrousers subtrude subtruncate subtrunk subtuberant subtunic subtunnel subturbary subturriculate subturriculated subtutor subtwined subtype subtypical subulate subulated subulicorn Subulicornia subuliform subultimate subumbellate subumbonal subumbral subumbrella subumbrellar subuncinate subunequal subungual subunguial Subungulata subungulate subunit subuniverse suburb suburban suburbandom suburbanhood suburbanism suburbanite suburbanity suburbanization suburbanize suburbanly suburbed suburbia suburbican suburbicarian suburbicary suburethral subursine subvaginal subvaluation subvarietal subvariety subvassal subvassalage subvein subvendee subvene subvention subventionary subventioned subventionize subventitious subventive subventral subventricose subvermiform subversal subverse subversed subversion subversionary subversive subversivism subvert subvertebral subverter subvertible subvertical subverticillate subvesicular subvestment subvicar subvicarship subvillain subvirate subvirile subvisible subvitalized subvitreous subvocal subvola subwarden subwater subway subwealthy subweight subwink subworker subworkman subzonal subzone subzygomatic succade succedanea succedaneous succedaneum succedent succeed succeedable succeeder succeeding succeedingly succent succentor succenturiate succenturiation success successful successfully successfulness succession successional successionally successionist successionless successive successively successiveness successivity successless successlessly successlessness successor successoral successorship successory succi succin succinamate succinamic succinamide succinanil succinate succinct succinctly succinctness succinctorium succinctory succincture succinic succiniferous succinimide succinite succinoresinol succinosulphuric succinous succinyl Succisa succise succivorous succor succorable succorer succorful succorless succorrhea succory succotash succourful succourless succous succub succuba succubae succube succubine succubous succubus succula succulence succulency succulent succulently succulentness succulous succumb succumbence succumbency succumbent succumber succursal succuss succussation succussatory succussion succussive such suchlike suchness Suchos suchwise sucivilized suck suckable suckabob suckage suckauhock sucken suckener sucker suckerel suckerfish suckerlike suckfish suckhole sucking suckle suckler suckless suckling suckstone suclat sucramine sucrate sucre sucroacid sucrose suction suctional Suctoria suctorial suctorian suctorious sucupira sucuri sucuriu sucuruju sud sudadero sudamen sudamina sudaminal Sudan Sudanese Sudani Sudanian Sudanic sudarium sudary sudate sudation sudatorium sudatory Sudburian sudburite sudd sudden suddenly suddenness suddenty Sudder sudder suddle suddy Sudic sudiform sudoral sudoresis sudoric sudoriferous sudoriferousness sudorific sudoriparous sudorous Sudra suds sudsman sudsy sue Suecism suede suer Suerre Suessiones suet suety Sueve Suevi Suevian Suevic Sufeism suff suffect suffection suffer sufferable sufferableness sufferably sufferance sufferer suffering sufferingly suffete suffice sufficeable sufficer sufficiency sufficient sufficiently sufficientness sufficing sufficingly sufficingness suffiction suffix suffixal suffixation suffixion suffixment sufflaminate sufflamination sufflate sufflation sufflue suffocate suffocating suffocatingly suffocation suffocative Suffolk suffragan suffraganal suffraganate suffragancy suffraganeous suffragatory suffrage suffragette suffragettism suffragial suffragism suffragist suffragistic suffragistically suffragitis suffrago suffrutescent suffrutex suffruticose suffruticous suffruticulose suffumigate suffumigation suffusable suffuse suffused suffusedly suffusion suffusive Sufi Sufiism Sufiistic Sufism Sufistic sugamo sugan sugar sugarberry sugarbird sugarbush sugared sugarelly sugarer sugarhouse sugariness sugarless sugarlike sugarplum sugarsweet sugarworks sugary sugent sugescent suggest suggestable suggestedness suggester suggestibility suggestible suggestibleness suggestibly suggesting suggestingly suggestion suggestionability suggestionable suggestionism suggestionist suggestionize suggestive suggestively suggestiveness suggestivity suggestment suggestress suggestum suggillate suggillation sugh sugi suguaro suhuaro Sui suicidal suicidalism suicidally suicidalwise suicide suicidical suicidism suicidist suid Suidae suidian suiform suilline suimate Suina suine suing suingly suint Suiogoth Suiogothic Suiones suisimilar suist suit suitability suitable suitableness suitably suitcase suite suithold suiting suitor suitoress suitorship suity suji Suk Sukey sukiyaki sukkenye Suku Sula Sulaba Sulafat Sulaib sulbasutra sulcal sulcalization sulcalize sulcar sulcate sulcated sulcation sulcatoareolate sulcatocostate sulcatorimose sulciform sulcomarginal sulcular sulculate sulculus sulcus suld sulea sulfa sulfacid sulfadiazine sulfaguanidine sulfamate sulfamerazin sulfamerazine sulfamethazine sulfamethylthiazole sulfamic sulfamidate sulfamide sulfamidic sulfamine sulfaminic sulfamyl sulfanilamide sulfanilic sulfanilylguanidine sulfantimonide sulfapyrazine sulfapyridine sulfaquinoxaline sulfarsenide sulfarsenite sulfarseniuret sulfarsphenamine Sulfasuxidine sulfatase sulfathiazole sulfatic sulfatize sulfato sulfazide sulfhydrate sulfhydric sulfhydryl sulfindigotate sulfindigotic sulfindylic sulfion sulfionide sulfoacid sulfoamide sulfobenzide sulfobenzoate sulfobenzoic sulfobismuthite sulfoborite sulfocarbamide sulfocarbimide sulfocarbolate sulfocarbolic sulfochloride sulfocyan sulfocyanide sulfofication sulfogermanate sulfohalite sulfohydrate sulfoindigotate sulfoleic sulfolysis sulfomethylic sulfonamic sulfonamide sulfonate sulfonation sulfonator sulfonephthalein sulfonethylmethane sulfonic sulfonium sulfonmethane sulfonyl sulfophthalein sulfopurpurate sulfopurpuric sulforicinate sulforicinic sulforicinoleate sulforicinoleic sulfoselenide sulfosilicide sulfostannide sulfotelluride sulfourea sulfovinate sulfovinic sulfowolframic sulfoxide sulfoxism sulfoxylate sulfoxylic sulfurage sulfuran sulfurate sulfuration sulfurator sulfurea sulfureous sulfureously sulfureousness sulfuret sulfuric sulfurization sulfurize sulfurosyl sulfurous sulfury sulfuryl Sulidae Sulides Suliote sulk sulka sulker sulkily sulkiness sulky sulkylike sull sulla sullage Sullan sullen sullenhearted sullenly sullenness sulliable sullow sully sulpha sulphacid sulphaldehyde sulphamate sulphamic sulphamidate sulphamide sulphamidic sulphamine sulphaminic sulphamino sulphammonium sulphamyl sulphanilate sulphanilic sulphantimonate sulphantimonial sulphantimonic sulphantimonide sulphantimonious sulphantimonite sulpharsenate sulpharseniate sulpharsenic sulpharsenide sulpharsenious sulpharsenite sulpharseniuret sulpharsphenamine sulphatase sulphate sulphated sulphatic sulphation sulphatization sulphatize sulphato sulphatoacetic sulphatocarbonic sulphazide sulphazotize sulphbismuthite sulphethylate sulphethylic sulphhemoglobin sulphichthyolate sulphidation sulphide sulphidic sulphidize sulphimide sulphinate sulphindigotate sulphine sulphinic sulphinide sulphinyl sulphitation sulphite sulphitic sulphmethemoglobin sulpho sulphoacetic sulphoamid sulphoamide sulphoantimonate sulphoantimonic sulphoantimonious sulphoantimonite sulphoarsenic sulphoarsenious sulphoarsenite sulphoazotize sulphobenzide sulphobenzoate sulphobenzoic sulphobismuthite sulphoborite sulphobutyric sulphocarbamic sulphocarbamide sulphocarbanilide sulphocarbimide sulphocarbolate sulphocarbolic sulphocarbonate sulphocarbonic sulphochloride sulphochromic sulphocinnamic sulphocyan sulphocyanate sulphocyanic sulphocyanide sulphocyanogen sulphodichloramine sulphofication sulphofy sulphogallic sulphogel sulphogermanate sulphogermanic sulphohalite sulphohaloid sulphohydrate sulphoichthyolate sulphoichthyolic sulphoindigotate sulphoindigotic sulpholeate sulpholeic sulpholipin sulpholysis sulphonal sulphonalism sulphonamic sulphonamide sulphonamido sulphonamine sulphonaphthoic sulphonate sulphonated sulphonation sulphonator sulphoncyanine sulphone sulphonephthalein sulphonethylmethane sulphonic sulphonium sulphonmethane sulphonphthalein sulphonyl sulphoparaldehyde sulphophosphate sulphophosphite sulphophosphoric sulphophosphorous sulphophthalein sulphophthalic sulphopropionic sulphoproteid sulphopupuric sulphopurpurate sulphoricinate sulphoricinic sulphoricinoleate sulphoricinoleic sulphosalicylic sulphoselenide sulphoselenium sulphosilicide sulphosol sulphostannate sulphostannic sulphostannide sulphostannite sulphostannous sulphosuccinic sulphosulphurous sulphotannic sulphotelluride sulphoterephthalic sulphothionyl sulphotoluic sulphotungstate sulphotungstic sulphourea sulphovanadate sulphovinate sulphovinic sulphowolframic sulphoxide sulphoxism sulphoxylate sulphoxylic sulphoxyphosphate sulphozincate sulphur sulphurage sulphuran sulphurate sulphuration sulphurator sulphurea sulphurean sulphureity sulphureonitrous sulphureosaline sulphureosuffused sulphureous sulphureously sulphureousness sulphureovirescent sulphuret sulphureted sulphuric sulphuriferous sulphurity sulphurization sulphurize sulphurless sulphurlike sulphurosyl sulphurous sulphurously sulphurousness sulphurproof sulphurweed sulphurwort sulphury sulphuryl sulphydrate sulphydric sulphydryl Sulpician sultam sultan sultana sultanaship sultanate sultane sultanesque sultaness sultanian sultanic sultanin sultanism sultanist sultanize sultanlike sultanry sultanship sultone sultrily sultriness sultry Sulu Suluan sulung sulvanite sulvasutra sum sumac Sumak Sumass Sumatra sumatra Sumatran sumbul sumbulic Sumdum Sumerian Sumerology sumless sumlessness summability summable summage summand summar summarily summariness summarist summarization summarize summarizer summary summate summation summational summative summatory summed summer summerbird summercastle summerer summerhead summeriness summering summerings summerish summerite summerize summerland summerlay summerless summerlike summerliness summerling summerly summerproof summertide summertime summertree summerward summerwood summery summist summit summital summitless summity summon summonable summoner summoningly summons summula summulist summut sumner Sumo sump sumpage sumper sumph sumphish sumphishly sumphishness sumphy sumpit sumpitan sumple sumpman sumpsimus sumpter sumption sumptuary sumptuosity sumptuous sumptuously sumptuousness sun sunbeam sunbeamed sunbeamy sunberry sunbird sunblink sunbonnet sunbonneted sunbow sunbreak sunburn sunburned sunburnedness sunburnproof sunburnt sunburntness sunburst suncherchor suncup sundae Sundanese Sundanesian sundang sundari Sunday Sundayfied Sundayish Sundayism Sundaylike Sundayness Sundayproof sundek sunder sunderable sunderance sunderer sunderment sunderwise sundew sundial sundik sundog sundown sundowner sundowning sundra sundri sundries sundriesman sundrily sundriness sundrops sundry sundryman sune sunfall sunfast sunfish sunfisher sunfishery sunflower Sung sung sungha sunglade sunglass sunglo sunglow sunk sunken sunket sunkland sunlamp sunland sunless sunlessly sunlessness sunlet sunlight sunlighted sunlike sunlit sunn Sunna Sunni Sunniah sunnily sunniness Sunnism Sunnite sunnud sunny sunnyhearted sunnyheartedness sunproof sunquake sunray sunrise sunrising sunroom sunscald sunset sunsetting sunsetty sunshade sunshine sunshineless sunshining sunshiny sunsmit sunsmitten sunspot sunspotted sunspottedness sunspottery sunspotty sunsquall sunstone sunstricken sunstroke sunt sunup sunward sunwards sunway sunways sunweed sunwise sunyie Suomi Suomic suovetaurilia sup supa Supai supari supawn supe supellex super superabduction superabhor superability superable superableness superably superabnormal superabominable superabomination superabound superabstract superabsurd superabundance superabundancy superabundant superabundantly superaccession superaccessory superaccommodating superaccomplished superaccrue superaccumulate superaccumulation superaccurate superacetate superachievement superacid superacidulated superacknowledgment superacquisition superacromial superactive superactivity superacute superadaptable superadd superaddition superadditional superadequate superadequately superadjacent superadministration superadmirable superadmiration superadorn superadornment superaerial superaesthetical superaffiliation superaffiuence superagency superaggravation superagitation superagrarian superalbal superalbuminosis superalimentation superalkaline superalkalinity superallowance superaltar superaltern superambitious superambulacral superanal superangelic superangelical superanimal superannuate superannuation superannuitant superannuity superapology superappreciation superaqueous superarbiter superarbitrary superarctic superarduous superarrogant superarseniate superartificial superartificially superaspiration superassertion superassociate superassume superastonish superastonishment superattachment superattainable superattendant superattraction superattractive superauditor superaural superaverage superavit superaward superaxillary superazotation superb superbelief superbeloved superbenefit superbenevolent superbenign superbias superbious superbity superblessed superblunder superbly superbness superbold superborrow superbrain superbrave superbrute superbuild superbungalow superbusy supercabinet supercalender supercallosal supercandid supercanine supercanonical supercanonization supercanopy supercapable supercaption supercarbonate supercarbonization supercarbonize supercarbureted supercargo supercargoship supercarpal supercatastrophe supercatholic supercausal supercaution supercelestial supercensure supercentral supercentrifuge supercerebellar supercerebral superceremonious supercharge supercharged supercharger superchemical superchivalrous superciliary superciliosity supercilious superciliously superciliousness supercilium supercivil supercivilization supercivilized superclaim superclass superclassified supercloth supercoincidence supercolossal supercolumnar supercolumniation supercombination supercombing supercommendation supercommentary supercommentator supercommercial supercompetition supercomplete supercomplex supercomprehension supercompression superconception superconductive superconductivity superconductor superconfident superconfirmation superconformable superconformist superconformity superconfusion supercongestion superconscious superconsciousness superconsecrated superconsequency superconservative superconstitutional supercontest supercontribution supercontrol supercool supercordial supercorporation supercow supercredit supercrescence supercrescent supercrime supercritic supercritical supercrowned supercrust supercube supercultivated supercurious supercycle supercynical superdainty superdanger superdebt superdeclamatory superdecoration superdeficit superdeity superdejection superdelegate superdelicate superdemand superdemocratic superdemonic superdemonstration superdensity superdeposit superdesirous superdevelopment superdevilish superdevotion superdiabolical superdiabolically superdicrotic superdifficult superdiplomacy superdirection superdiscount superdistention superdistribution superdividend superdivine superdivision superdoctor superdominant superdomineering superdonation superdose superdramatist superdreadnought superdubious superduplication superdural superdying superearthly supereconomy superedification superedify supereducation supereffective supereffluence supereffluently superego superelaborate superelastic superelated superelegance superelementary superelevated superelevation supereligible supereloquent supereminence supereminency supereminent supereminently superemphasis superemphasize superendorse superendorsement superendow superenergetic superenforcement superengrave superenrollment superepic superepoch superequivalent supererogant supererogantly supererogate supererogation supererogative supererogator supererogatorily supererogatory superespecial superessential superessentially superestablish superestablishment supereternity superether superethical superethmoidal superevangelical superevident superexacting superexalt superexaltation superexaminer superexceed superexceeding superexcellence superexcellency superexcellent superexcellently superexceptional superexcitation superexcited superexcitement superexcrescence superexert superexertion superexiguity superexist superexistent superexpand superexpansion superexpectation superexpenditure superexplicit superexport superexpressive superexquisite superexquisitely superexquisiteness superextend superextension superextol superextreme superfamily superfantastic superfarm superfat superfecundation superfecundity superfee superfeminine superfervent superfetate superfetation superfeudation superfibrination superficial superficialism superficialist superficiality superficialize superficially superficialness superficiary superficies superfidel superfinance superfine superfinical superfinish superfinite superfissure superfit superfix superfleet superflexion superfluent superfluid superfluitance superfluity superfluous superfluously superfluousness superflux superfoliaceous superfoliation superfolly superformal superformation superformidable superfortunate superfriendly superfrontal superfructified superfulfill superfulfillment superfunction superfunctional superfuse superfusibility superfusible superfusion supergaiety supergallant supergene supergeneric supergenerosity supergenerous supergenual supergiant superglacial superglorious superglottal supergoddess supergoodness supergovern supergovernment supergraduate supergrant supergratification supergratify supergravitate supergravitation superguarantee supergun superhandsome superhearty superheat superheater superheresy superhero superheroic superhet superheterodyne superhighway superhirudine superhistoric superhistorical superhive superhuman superhumanity superhumanize superhumanly superhumanness superhumeral superhypocrite superideal superignorant superillustrate superillustration superimpend superimpending superimpersonal superimply superimportant superimposable superimpose superimposed superimposition superimposure superimpregnated superimpregnation superimprobable superimproved superincentive superinclination superinclusive superincomprehensible superincrease superincumbence superincumbency superincumbent superincumbently superindependent superindiction superindifference superindifferent superindignant superindividual superindividualism superindividualist superinduce superinducement superinduct superinduction superindulgence superindulgent superindustrious superindustry superinenarrable superinfection superinfer superinference superinfeudation superinfinite superinfinitely superinfirmity superinfluence superinformal superinfuse superinfusion superingenious superingenuity superinitiative superinjustice superinnocent superinquisitive superinsaniated superinscription superinsist superinsistence superinsistent superinstitute superinstitution superintellectual superintend superintendence superintendency superintendent superintendential superintendentship superintender superintense superintolerable superinundation superior superioress superiority superiorly superiorness superiorship superirritability superius superjacent superjudicial superjurisdiction superjustification superknowledge superlabial superlaborious superlactation superlapsarian superlaryngeal superlation superlative superlatively superlativeness superlenient superlie superlikelihood superline superlocal superlogical superloyal superlucky superlunary superlunatical superluxurious supermagnificent supermagnificently supermalate superman supermanhood supermanifest supermanism supermanliness supermanly supermannish supermarginal supermarine supermarket supermarvelous supermasculine supermaterial supermathematical supermaxilla supermaxillary supermechanical supermedial supermedicine supermediocre supermental supermentality supermetropolitan supermilitary supermishap supermixture supermodest supermoisten supermolten supermoral supermorose supermunicipal supermuscan supermystery supernacular supernaculum supernal supernalize supernally supernatant supernatation supernation supernational supernationalism supernatural supernaturaldom supernaturalism supernaturalist supernaturality supernaturalize supernaturally supernaturalness supernature supernecessity supernegligent supernormal supernormally supernormalness supernotable supernova supernumeral supernumerariness supernumerary supernumeraryship supernumerous supernutrition superoanterior superobedience superobedient superobese superobject superobjection superobjectionable superobligation superobstinate superoccipital superoctave superocular superodorsal superoexternal superoffensive superofficious superofficiousness superofrontal superointernal superolateral superomedial superoposterior superopposition superoptimal superoptimist superoratorical superorbital superordain superorder superordinal superordinary superordinate superordination superorganic superorganism superorganization superorganize superornament superornamental superosculate superoutput superoxalate superoxide superoxygenate superoxygenation superparamount superparasite superparasitic superparasitism superparliamentary superpassage superpatient superpatriotic superpatriotism superperfect superperfection superperson superpersonal superpersonalism superpetrosal superphlogisticate superphlogistication superphosphate superphysical superpigmentation superpious superplausible superplease superplus superpolite superpolitic superponderance superponderancy superponderant superpopulation superposable superpose superposed superposition superpositive superpower superpowered superpraise superprecarious superprecise superprelatical superpreparation superprinting superprobability superproduce superproduction superproportion superprosperous superpublicity superpure superpurgation superquadrupetal superqualify superquote superradical superrational superrationally superreaction superrealism superrealist superrefine superrefined superrefinement superreflection superreform superreformation superregal superregeneration superregenerative superregistration superregulation superreliance superremuneration superrenal superrequirement superrespectable superresponsible superrestriction superreward superrheumatized superrighteous superromantic superroyal supersacerdotal supersacral supersacred supersacrifice supersafe supersagacious supersaint supersaintly supersalesman supersaliency supersalient supersalt supersanction supersanguine supersanity supersarcastic supersatisfaction supersatisfy supersaturate supersaturation superscandal superscholarly superscientific superscribe superscript superscription superscrive superseaman supersecret supersecretion supersecular supersecure supersedable supersede supersedeas supersedence superseder supersedure superselect superseminate supersemination superseminator supersensible supersensibly supersensitive supersensitiveness supersensitization supersensory supersensual supersensualism supersensualist supersensualistic supersensuality supersensually supersensuous supersensuousness supersentimental superseptal superseptuaginarian superseraphical superserious superservice superserviceable superserviceableness superserviceably supersesquitertial supersession supersessive supersevere supershipment supersignificant supersilent supersimplicity supersimplify supersincerity supersingular supersistent supersize supersmart supersocial supersoil supersolar supersolemn supersolemness supersolemnity supersolemnly supersolicit supersolicitation supersolid supersonant supersonic supersovereign supersovereignty superspecialize superspecies superspecification supersphenoid supersphenoidal superspinous superspiritual superspirituality supersquamosal superstage superstamp superstandard superstate superstatesman superstimulate superstimulation superstition superstitionist superstitionless superstitious superstitiously superstitiousness superstoical superstrain superstrata superstratum superstrenuous superstrict superstrong superstruct superstruction superstructor superstructory superstructural superstructure superstuff superstylish supersublimated supersuborder supersubsist supersubstantial supersubstantiality supersubstantiate supersubtilized supersubtle supersufficiency supersufficient supersulcus supersulphate supersulphuret supersulphureted supersulphurize supersuperabundance supersuperabundant supersuperabundantly supersuperb supersuperior supersupremacy supersupreme supersurprise supersuspicious supersweet supersympathy supersyndicate supersystem supertare supertartrate supertax supertaxation supertemporal supertempt supertemptation supertension superterranean superterraneous superterrene superterrestrial superthankful superthorough superthyroidism supertoleration supertonic supertotal supertower supertragic supertragical supertrain supertramp supertranscendent supertranscendently supertreason supertrivial supertuchun supertunic supertutelary superugly superultrafrostified superunfit superunit superunity superuniversal superuniverse superurgent supervalue supervast supervene supervenience supervenient supervenosity supervention supervestment supervexation supervictorious supervigilant supervigorous supervirulent supervisal supervisance supervise supervision supervisionary supervisive supervisor supervisorial supervisorship supervisory supervisual supervisure supervital supervive supervolition supervoluminous supervolute superwager superwealthy superweening superwise superwoman superworldly superwrought superyacht superzealous supinate supination supinator supine supinely supineness suppedaneum supper suppering supperless suppertime supperwards supping supplace supplant supplantation supplanter supplantment supple supplejack supplely supplement supplemental supplementally supplementarily supplementary supplementation supplementer suppleness suppletion suppletive suppletively suppletorily suppletory suppliable supplial suppliance suppliancy suppliant suppliantly suppliantness supplicancy supplicant supplicantly supplicat supplicate supplicating supplicatingly supplication supplicationer supplicative supplicator supplicatory supplicavit supplice supplier suppling supply support supportability supportable supportableness supportably supportance supporter supportful supporting supportingly supportive supportless supportlessly supportress supposable supposableness supposably supposal suppose supposed supposedly supposer supposing supposition suppositional suppositionally suppositionary suppositionless suppositious supposititious supposititiously supposititiousness suppositive suppositively suppository suppositum suppost suppress suppressal suppressed suppressedly suppresser suppressible suppression suppressionist suppressive suppressively suppressor supprise suppurant suppurate suppuration suppurative suppuratory suprabasidorsal suprabranchial suprabuccal supracaecal supracargo supracaudal supracensorious supracentenarian suprachorioid suprachorioidal suprachorioidea suprachoroid suprachoroidal suprachoroidea supraciliary supraclavicle supraclavicular supraclusion supracommissure supraconduction supraconductor supracondylar supracondyloid supraconscious supraconsciousness supracoralline supracostal supracoxal supracranial supracretaceous supradecompound supradental supradorsal supradural suprafeminine suprafine suprafoliaceous suprafoliar supraglacial supraglenoid supraglottic supragovernmental suprahepatic suprahistorical suprahuman suprahumanity suprahyoid suprailiac suprailium supraintellectual suprainterdorsal suprajural supralabial supralapsarian supralapsarianism supralateral supralegal supraliminal supraliminally supralineal supralinear supralocal supralocally supraloral supralunar supralunary supramammary supramarginal supramarine supramastoid supramaxilla supramaxillary supramaximal suprameatal supramechanical supramedial supramental supramolecular supramoral supramortal supramundane supranasal supranational supranatural supranaturalism supranaturalist supranaturalistic supranature supranervian supraneural supranormal supranuclear supraoccipital supraocclusion supraocular supraoesophagal supraoesophageal supraoptimal supraoptional supraoral supraorbital supraorbitar supraordinary supraordinate supraordination suprapapillary suprapedal suprapharyngeal supraposition supraprotest suprapubian suprapubic suprapygal supraquantivalence supraquantivalent suprarational suprarationalism suprarationality suprarenal suprarenalectomize suprarenalectomy suprarenalin suprarenine suprarimal suprasaturate suprascapula suprascapular suprascapulary suprascript suprasegmental suprasensible suprasensitive suprasensual suprasensuous supraseptal suprasolar suprasoriferous suprasphanoidal supraspinal supraspinate supraspinatus supraspinous suprasquamosal suprastandard suprastapedial suprastate suprasternal suprastigmal suprasubtle supratemporal supraterraneous supraterrestrial suprathoracic supratonsillar supratrochlear supratropical supratympanic supravaginal supraventricular supraversion supravital supraworld supremacy suprematism supreme supremely supremeness supremity sur sura suraddition surah surahi sural suralimentation suranal surangular surat surbase surbased surbasement surbate surbater surbed surcease surcharge surcharger surcingle surcoat surcrue surculi surculigerous surculose surculous surculus surd surdation surdeline surdent surdimutism surdity surdomute sure surely sureness sures surette surety suretyship surexcitation surf surface surfaced surfacedly surfaceless surfacely surfaceman surfacer surfacing surfactant surfacy surfbird surfboard surfboarding surfboat surfboatman surfeit surfeiter surfer surficial surfle surflike surfman surfmanship surfrappe surfuse surfusion surfy surge surgeful surgeless surgent surgeon surgeoncy surgeoness surgeonfish surgeonless surgeonship surgeproof surgerize surgery surgical surgically surginess surging surgy Suriana Surianaceae Suricata suricate suriga Surinam surinamine surlily surliness surly surma surmark surmaster surmisable surmisal surmisant surmise surmised surmisedly surmiser surmount surmountable surmountableness surmountal surmounted surmounter surmullet surname surnamer surnap surnay surnominal surpass surpassable surpasser surpassing surpassingly surpassingness surpeopled surplice surpliced surplicewise surplician surplus surplusage surpreciation surprint surprisable surprisal surprise surprisedly surprisement surpriseproof surpriser surprising surprisingly surprisingness surquedry surquidry surquidy surra surrealism surrealist surrealistic surrealistically surrebound surrebut surrebuttal surrebutter surrection surrejoin surrejoinder surrenal surrender surrenderee surrenderer surrenderor surreption surreptitious surreptitiously surreptitiousness surreverence surreverently surrey surrogacy surrogate surrogateship surrogation surrosion surround surrounded surroundedly surrounder surrounding surroundings sursaturation sursolid sursumduction sursumvergence sursumversion surtax surtout surturbrand surveillance surveillant survey surveyable surveyage surveyal surveyance surveying surveyor surveyorship survigrous survivability survivable survival survivalism survivalist survivance survivancy survive surviver surviving survivor survivoress survivorship Sus Susan Susanchite Susanna susannite suscept susceptance susceptibility susceptible susceptibleness susceptibly susception susceptive susceptiveness susceptivity susceptor suscitate suscitation susi Susian Susianian Susie suslik susotoxin suspect suspectable suspected suspectedness suspecter suspectful suspectfulness suspectible suspectless suspector suspend suspended suspender suspenderless suspenders suspendibility suspendible suspensation suspense suspenseful suspensely suspensibility suspensible suspension suspensive suspensively suspensiveness suspensoid suspensor suspensorial suspensorium suspensory suspercollate suspicion suspicionable suspicional suspicionful suspicionless suspicious suspiciously suspiciousness suspiration suspiratious suspirative suspire suspirious Susquehanna Sussex sussexite Sussexman sussultatory sussultorial sustain sustainable sustained sustainer sustaining sustainingly sustainment sustanedly sustenance sustenanceless sustentacula sustentacular sustentaculum sustentation sustentational sustentative sustentator sustention sustentive sustentor Susu susu Susuhunan Susuidae susurr susurrant susurrate susurration susurringly susurrous susurrus Sutaio suterbery suther Sutherlandia sutile sutler sutlerage sutleress sutlership sutlery Suto sutor sutorial sutorian sutorious sutra Suttapitaka suttee sutteeism sutten suttin suttle Sutu sutural suturally suturation suture suum suwarro suwe suz suzerain suzeraine suzerainship suzerainty Suzy Svan Svanetian Svanish Svantovit svarabhakti svarabhaktic Svarloka svelte Svetambara sviatonosite swa Swab swab swabber swabberly swabble Swabian swack swacken swacking swad swaddle swaddlebill swaddler swaddling swaddy Swadeshi Swadeshism swag swagbellied swagbelly swage swager swagger swaggerer swaggering swaggeringly swaggie swaggy swaglike swagman swagsman Swahilese Swahili Swahilian Swahilize swaimous swain swainish swainishness swainship Swainsona swainsona swaird swale swaler swaling swalingly swallet swallo swallow swallowable swallower swallowlike swallowling swallowpipe swallowtail swallowwort swam swami swamp swampable swampberry swamper swampish swampishness swampland swampside swampweed swampwood swampy swan swandown swanflower swang swangy swanherd swanhood swanimote swank swanker swankily swankiness swanking swanky swanlike swanmark swanmarker swanmarking swanneck swannecked swanner swannery swannish swanny swanskin Swantevit swanweed swanwort swap swape swapper swapping swaraj swarajism swarajist swarbie sward swardy sware swarf swarfer swarm swarmer swarming swarmy swarry swart swartback swarth swarthily swarthiness swarthness swarthy swartish swartly swartness swartrutter swartrutting swarty Swartzbois Swartzia swarve swash swashbuckle swashbuckler swashbucklerdom swashbucklering swashbucklery swashbuckling swasher swashing swashway swashwork swashy swastika swastikaed Swat swat swatch Swatchel swatcher swatchway swath swathable swathband swathe swatheable swather swathy Swati Swatow swatter swattle swaver sway swayable swayed swayer swayful swaying swayingly swayless Swazi Swaziland sweal sweamish swear swearer swearingly swearword sweat sweatband sweatbox sweated sweater sweatful sweath sweatily sweatiness sweating sweatless sweatproof sweatshop sweatweed sweaty Swede Swedenborgian Swedenborgianism Swedenborgism swedge Swedish sweeny sweep sweepable sweepage sweepback sweepboard sweepdom sweeper sweeperess sweepforward sweeping sweepingly sweepingness sweepings sweepstake sweepwasher sweepwashings sweepy sweer sweered sweet sweetberry sweetbread sweetbrier sweetbriery sweeten sweetener sweetening sweetfish sweetful sweetheart sweetheartdom sweethearted sweetheartedness sweethearting sweetheartship sweetie sweeting sweetish sweetishly sweetishness sweetleaf sweetless sweetlike sweetling sweetly sweetmaker sweetmeat sweetmouthed sweetness sweetroot sweetshop sweetsome sweetsop sweetwater sweetweed sweetwood sweetwort sweety swego swelchie swell swellage swelldom swelldoodle swelled sweller swellfish swelling swellish swellishness swellmobsman swellness swelltoad swelly swelp swelt swelter sweltering swelteringly swelth sweltry swelty swep swept swerd Swertia swerve swerveless swerver swervily swick swidge Swietenia swift swiften swifter swiftfoot swiftlet swiftlike swiftness swifty swig swigger swiggle swile swill swillbowl swiller swilltub swim swimmable swimmer swimmeret swimmily swimminess swimming swimmingly swimmingness swimmist swimmy swimsuit swimy Swinburnesque Swinburnian swindle swindleable swindledom swindler swindlership swindlery swindling swindlingly swine swinebread swinecote swinehead swineherd swineherdship swinehood swinehull swinelike swinely swinepipe swinery swinestone swinesty swiney swing swingable swingback swingdevil swingdingle swinge swingeing swinger swinging swingingly Swingism swingle swinglebar swingletail swingletree swingstock swingtree swingy swinish swinishly swinishness swink swinney swipe swiper swipes swiple swipper swipy swird swire swirl swirlingly swirly swirring swish swisher swishing swishingly swishy Swiss swiss Swissess swissing switch switchback switchbacker switchboard switched switchel switcher switchgear switching switchkeeper switchlike switchman switchy switchyard swith swithe swithen swither Swithin Switzer Switzeress swivel swiveled swiveleye swiveleyed swivellike swivet swivetty swiz swizzle swizzler swob swollen swollenly swollenness swom swonken swoon swooned swooning swooningly swoony swoop swooper swoosh sword swordbill swordcraft swordfish swordfisherman swordfishery swordfishing swordick swording swordless swordlet swordlike swordmaker swordmaking swordman swordmanship swordplay swordplayer swordproof swordsman swordsmanship swordsmith swordster swordstick swordswoman swordtail swordweed swore sworn swosh swot swotter swounds swow swum swung swungen swure syagush sybarism sybarist Sybarital Sybaritan Sybarite Sybaritic Sybaritical Sybaritically Sybaritish sybaritism Sybil sybotic sybotism sycamine sycamore syce sycee sychnocarpous sycock sycoma sycomancy Sycon Syconaria syconarian syconate Sycones syconid Syconidae syconium syconoid syconus sycophancy sycophant sycophantic sycophantical sycophantically sycophantish sycophantishly sycophantism sycophantize sycophantry sycosiform sycosis Sydneian Sydneyite sye syenite syenitic syenodiorite syenogabbro sylid syllab syllabarium syllabary syllabatim syllabation syllabe syllabi syllabic syllabical syllabically syllabicate syllabication syllabicness syllabification syllabify syllabism syllabize syllable syllabled syllabus syllepsis sylleptic sylleptical sylleptically Syllidae syllidian Syllis sylloge syllogism syllogist syllogistic syllogistical syllogistically syllogistics syllogization syllogize syllogizer sylph sylphic sylphid sylphidine sylphish sylphize sylphlike Sylphon sylphy sylva sylvae sylvage sylvan sylvanesque sylvanite sylvanitic sylvanity sylvanize sylvanly sylvanry sylvate sylvatic Sylvester sylvester sylvestral sylvestrene Sylvestrian sylvestrian Sylvestrine Sylvia Sylvian sylvic Sylvicolidae sylvicoline Sylviidae Sylviinae sylviine sylvine sylvinite sylvite symbasic symbasical symbasically symbasis symbiogenesis symbiogenetic symbiogenetically symbion symbiont symbiontic symbionticism symbiosis symbiot symbiote symbiotic symbiotically symbiotics symbiotism symbiotrophic symblepharon symbol symbolaeography symbolater symbolatrous symbolatry symbolic symbolical symbolically symbolicalness symbolicly symbolics symbolism symbolist symbolistic symbolistical symbolistically symbolization symbolize symbolizer symbolofideism symbological symbologist symbolography symbology symbololatry symbolology symbolry symbouleutic symbranch Symbranchia symbranchiate symbranchoid symbranchous symmachy symmedian symmelia symmelian symmelus symmetalism symmetral symmetric symmetrical symmetricality symmetrically symmetricalness symmetrist symmetrization symmetrize symmetroid symmetrophobia symmetry symmorphic symmorphism sympalmograph sympathectomize sympathectomy sympathetectomy sympathetic sympathetical sympathetically sympatheticism sympatheticity sympatheticness sympatheticotonia sympatheticotonic sympathetoblast sympathicoblast sympathicotonia sympathicotonic sympathicotripsy sympathism sympathist sympathize sympathizer sympathizing sympathizingly sympathoblast sympatholysis sympatholytic sympathomimetic sympathy sympatric sympatry Sympetalae sympetalous Symphalangus symphenomena symphenomenal symphile symphilic symphilism symphilous symphily symphogenous symphonetic symphonia symphonic symphonically symphonion symphonious symphoniously symphonist symphonize symphonous symphony Symphoricarpos symphoricarpous symphrase symphronistic symphyantherous symphycarpous Symphyla symphylan symphyllous symphylous symphynote symphyogenesis symphyogenetic symphyostemonous symphyseal symphyseotomy symphysial symphysian symphysic symphysion symphysiotomy symphysis symphysodactylia symphysotomy symphysy Symphyta symphytic symphytically symphytism symphytize Symphytum sympiesometer symplasm symplectic Symplegades symplesite Symplocaceae symplocaceous Symplocarpus symploce Symplocos sympode sympodia sympodial sympodially sympodium sympolity symposia symposiac symposiacal symposial symposiarch symposiast symposiastic symposion symposium symptom symptomatic symptomatical symptomatically symptomatics symptomatize symptomatography symptomatological symptomatologically symptomatology symptomical symptomize symptomless symptosis symtomology synacme synacmic synacmy synactic synadelphite synaeresis synagogal synagogian synagogical synagogism synagogist synagogue synalgia synalgic synallactic synallagmatic synaloepha synanastomosis synange synangia synangial synangic synangium synanthema synantherological synantherologist synantherology synantherous synanthesis synanthetic synanthic synanthous synanthrose synanthy synaphea synaposematic synapse synapses Synapsida synapsidan synapsis synaptai synaptase synapte synaptene Synaptera synapterous synaptic synaptical synaptically synapticula synapticulae synapticular synapticulate synapticulum Synaptosauria synaptychus synarchical synarchism synarchy synarmogoid Synarmogoidea synarquism synartesis synartete synartetic synarthrodia synarthrodial synarthrodially synarthrosis Synascidiae synascidian synastry synaxar synaxarion synaxarist synaxarium synaxary synaxis sync Syncarida syncarp syncarpia syncarpium syncarpous syncarpy syncategorematic syncategorematical syncategorematically syncategoreme syncephalic syncephalus syncerebral syncerebrum synch synchitic synchondoses synchondrosial synchondrosially synchondrosis synchondrotomy synchoresis synchro synchroflash synchromesh synchronal synchrone synchronic synchronical synchronically synchronism synchronistic synchronistical synchronistically synchronizable synchronization synchronize synchronized synchronizer synchronograph synchronological synchronology synchronous synchronously synchronousness synchrony synchroscope synchrotron synchysis Synchytriaceae Synchytrium syncladous synclastic synclinal synclinally syncline synclinical synclinore synclinorial synclinorian synclinorium synclitic syncliticism synclitism syncoelom syncopal syncopate syncopated syncopation syncopator syncope syncopic syncopism syncopist syncopize syncotyledonous syncracy syncraniate syncranterian syncranteric syncrasy syncretic syncretical syncreticism syncretion syncretism syncretist syncretistic syncretistical syncretize syncrisis Syncrypta syncryptic syncytia syncytial syncytioma syncytiomata syncytium syndactyl syndactylia syndactylic syndactylism syndactylous syndactyly syndectomy synderesis syndesis syndesmectopia syndesmitis syndesmography syndesmology syndesmoma Syndesmon syndesmoplasty syndesmorrhaphy syndesmosis syndesmotic syndesmotomy syndetic syndetical syndetically syndic syndical syndicalism syndicalist syndicalistic syndicalize syndicate syndicateer syndication syndicator syndicship syndoc syndrome syndromic syndyasmian Syndyoceras syne synecdoche synecdochic synecdochical synecdochically synecdochism synechia synechiological synechiology synechological synechology synechotomy synechthran synechthry synecology synecphonesis synectic synecticity Synedra synedral Synedria synedria synedrial synedrian Synedrion synedrion Synedrium synedrium synedrous syneidesis synema synemmenon synenergistic synenergistical synenergistically synentognath Synentognathi synentognathous syneresis synergastic synergetic synergia synergic synergically synergid synergidae synergidal synergism synergist synergistic synergistical synergistically synergize synergy synerize synesis synesthesia synesthetic synethnic syngamic syngamous syngamy Syngenesia syngenesian syngenesious syngenesis syngenetic syngenic syngenism syngenite Syngnatha Syngnathi syngnathid Syngnathidae syngnathoid syngnathous Syngnathus syngraph synizesis synkaryon synkatathesis synkinesia synkinesis synkinetic synneurosis synneusis synochoid synochus synocreate synod synodal synodalian synodalist synodally synodical synodically synodist synodite synodontid Synodontidae synodontoid synodsman Synodus synoecete synoeciosis synoecious synoeciously synoeciousness synoecism synoecize synoecy synoicous synomosy synonym synonymatic synonymic synonymical synonymicon synonymics synonymist synonymity synonymize synonymous synonymously synonymousness synonymy synophthalmus synopses synopsis synopsize synopsy synoptic synoptical synoptically Synoptist synoptist Synoptistic synorchidism synorchism synorthographic synosteology synosteosis synostose synostosis synostotic synostotical synostotically synousiacs synovectomy synovia synovial synovially synoviparous synovitic synovitis synpelmous synrhabdosome synsacral synsacrum synsepalous synspermous synsporous syntactic syntactical syntactically syntactician syntactics syntagma syntan syntasis syntax syntaxis syntaxist syntechnic syntectic syntelome syntenosis synteresis syntexis syntheme synthermal syntheses synthesis synthesism synthesist synthesization synthesize synthesizer synthete synthetic synthetical synthetically syntheticism synthetism synthetist synthetization synthetize synthetizer synthol synthroni synthronoi synthronos synthronus syntomia syntomy syntone syntonic syntonical syntonically syntonin syntonization syntonize syntonizer syntonolydian syntonous syntony syntripsis syntrope syntrophic syntropic syntropical syntropy syntype syntypic syntypicism Synura synusia synusiast syodicon sypher syphilide syphilidography syphilidologist syphiliphobia syphilis syphilitic syphilitically syphilization syphilize syphiloderm syphilodermatous syphilogenesis syphilogeny syphilographer syphilography syphiloid syphilologist syphilology syphiloma syphilomatous syphilophobe syphilophobia syphilophobic syphilopsychosis syphilosis syphilous Syracusan syre Syriac Syriacism Syriacist Syrian Syrianic Syrianism Syrianize Syriarch Syriasm syringa syringadenous syringe syringeal syringeful syringes syringin syringitis syringium syringocoele syringomyelia syringomyelic syringotome syringotomy syrinx Syriologist Syrma syrma Syrmian Syrnium Syrophoenician syrphian syrphid Syrphidae syrt syrtic Syrtis syrup syruped syruper syruplike syrupy Syryenian syssarcosis syssel sysselman syssiderite syssitia syssition systaltic systasis systatic system systematic systematical systematicality systematically systematician systematicness systematics systematism systematist systematization systematize systematizer systematology systemed systemic systemically systemist systemizable systemization systemize systemizer systemless systemproof systemwise systilius systolated systole systolic systyle systylous syzygetic syzygetically syzygial syzygium syzygy szaibelyite Szekler szlachta szopelka T t ta taa Taal Taalbond taar Tab tab tabacin tabacosis tabacum tabanid Tabanidae tabaniform tabanuco Tabanus tabard tabarded tabaret Tabasco tabasheer tabashir tabaxir tabbarea tabber tabbinet Tabby tabby Tabebuia tabefaction tabefy tabella Tabellaria Tabellariaceae tabellion taberdar taberna tabernacle tabernacler tabernacular Tabernaemontana tabernariae tabes tabescence tabescent tabet tabetic tabetiform tabetless tabic tabid tabidly tabidness tabific tabifical tabinet Tabira Tabitha tabitude tabla tablature table tableau tableaux tablecloth tableclothwise tableclothy tabled tablefellow tablefellowship tableful tableity tableland tableless tablelike tablemaid tablemaker tablemaking tableman tablemate tabler tables tablespoon tablespoonful tablet tabletary tableware tablewise tabling tablinum Tabloid tabloid tabog taboo tabooism tabooist taboot taboparalysis taboparesis taboparetic tabophobia tabor taborer taboret taborin Taborite tabour tabourer tabouret tabret Tabriz tabu tabula tabulable tabular tabulare tabularium tabularization tabularize tabularly tabulary Tabulata tabulate tabulated tabulation tabulator tabulatory tabule tabuliform tabut tacahout tacamahac Tacana Tacanan Tacca Taccaceae taccaceous taccada tach Tachardia Tachardiinae tache tacheless tacheography tacheometer tacheometric tacheometry tacheture tachhydrite tachibana Tachina Tachinaria tachinarian tachinid Tachinidae tachiol tachistoscope tachistoscopic tachogram tachograph tachometer tachometry tachoscope tachycardia tachycardiac tachygen tachygenesis tachygenetic tachygenic tachyglossal tachyglossate Tachyglossidae Tachyglossus tachygraph tachygrapher tachygraphic tachygraphical tachygraphically tachygraphist tachygraphometer tachygraphometry tachygraphy tachyhydrite tachyiatry tachylalia tachylite tachylyte tachylytic tachymeter tachymetric tachymetry tachyphagia tachyphasia tachyphemia tachyphrasia tachyphrenia tachypnea tachyscope tachyseism tachysterol tachysystole tachythanatous tachytomy tachytype tacit Tacitean tacitly tacitness taciturn taciturnist taciturnity taciturnly tack tacker tacket tackety tackey tackiness tacking tackingly tackle tackled tackleless tackleman tackler tackless tackling tackproof tacksman tacky taclocus tacmahack tacnode Taconian Taconic taconite tacso Tacsonia tact tactable tactful tactfully tactfulness tactic tactical tactically tactician tactics tactile tactilist tactility tactilogical tactinvariant taction tactite tactive tactless tactlessly tactlessness tactometer tactor tactosol tactual tactualist tactuality tactually tactus tacuacine Taculli Tad tad tade Tadjik Tadousac tadpole tadpoledom tadpolehood tadpolelike tadpolism tae tael taen taenia taeniacidal taeniacide Taeniada taeniafuge taenial taenian taeniasis Taeniata taeniate taenicide Taenidia taenidium taeniform taenifuge taeniiform Taeniobranchia taeniobranchiate Taeniodonta Taeniodontia Taeniodontidae Taenioglossa taenioglossate taenioid taeniosome Taeniosomi taeniosomous taenite taennin Taetsia taffarel tafferel taffeta taffety taffle taffrail Taffy taffy taffylike taffymaker taffymaking taffywise tafia tafinagh taft tafwiz tag Tagabilis Tagakaolo Tagal Tagala Tagalize Tagalo Tagalog tagasaste Tagassu Tagassuidae tagatose Tagaur Tagbanua tagboard Tagetes tagetol tagetone tagged tagger taggle taggy Taghlik tagilite Tagish taglet Tagliacotian Tagliacozzian taglike taglock tagrag tagraggery tagsore tagtail tagua taguan Tagula tagwerk taha Tahami taheen tahil tahin Tahiti Tahitian tahkhana Tahltan tahr tahseeldar tahsil tahsildar tahua Tai tai taiaha taich taiga taigle taiglesome taihoa taikhana tail tailage tailband tailboard tailed tailender tailer tailet tailfirst tailflower tailforemost tailge tailhead tailing tailings taille tailless taillessly taillessness taillie taillight taillike tailor tailorage tailorbird tailorcraft tailordom tailoress tailorhood tailoring tailorism tailorization tailorize tailorless tailorlike tailorly tailorman tailorship tailorwise tailory tailpiece tailpin tailpipe tailrace tailsman tailstock Tailte tailward tailwards tailwise taily tailzee tailzie taimen taimyrite tain Tainan Taino taint taintable taintless taintlessly taintlessness taintment taintor taintproof tainture taintworm Tainui taipan Taipi Taiping taipo tairge tairger tairn taisch taise Taisho taissle taistrel taistril tait taiver taivers taivert Taiwanhemp Taiyal taj Tajik takable takamaka takar take takedown takedownable takeful Takelma taken taker Takhaar Takhtadjy Takilman takin taking takingly takingness takings Takitumu takosis takt Taku taky takyr tal tala talabon talahib Talaing talaje talak talalgia Talamanca Talamancan talanton talao talapoin talar talari talaria talaric talayot talbot talbotype talc talcer Talcher talcky talclike talcochlorite talcoid talcomicaceous talcose talcous talcum tald tale talebearer talebearing talebook talecarrier talecarrying taled taleful Talegallinae Talegallus talemaster talemonger talemongering talent talented talentless talepyet taler tales talesman taleteller taletelling tali Taliacotian taliage taliation taliera taligrade Talinum talion talionic talipat taliped talipedic talipes talipomanus talipot talis talisay Talishi talisman talismanic talismanical talismanically talismanist talite Talitha talitol talk talkability talkable talkathon talkative talkatively talkativeness talker talkfest talkful talkie talkiness talking talkworthy talky tall tallage tallageability tallageable tallboy tallegalane taller tallero talles tallet talliable talliage talliar talliate tallier tallis tallish tallit tallith tallness talloel tallote tallow tallowberry tallower tallowiness tallowing tallowish tallowlike tallowmaker tallowmaking tallowman tallowroot tallowweed tallowwood tallowy tallwood tally tallyho tallyman tallymanship tallywag tallywalka tallywoman talma talmouse Talmud Talmudic Talmudical Talmudism Talmudist Talmudistic Talmudistical Talmudization Talmudize talocalcaneal talocalcanean talocrural talofibular talon talonavicular taloned talonic talonid taloscaphoid talose talotibial Talpa talpacoti talpatate talpetate talpicide talpid Talpidae talpiform talpify talpine talpoid talthib Taltushtuntude Taluche Taluhet taluk taluka talukdar talukdari talus taluto talwar talwood Talyshin tam Tama tamability tamable tamableness tamably Tamaceae Tamachek tamacoare tamale Tamanac Tamanaca Tamanaco tamandu tamandua tamanoas tamanoir tamanowus tamanu Tamara tamara tamarack tamaraite tamarao Tamaricaceae tamaricaceous tamarin tamarind Tamarindus tamarisk Tamarix Tamaroa tamas tamasha Tamashek Tamaulipecan tambac tambaroora tamber tambo tamboo Tambookie tambookie tambor Tambouki tambour tamboura tambourer tambouret tambourgi tambourin tambourinade tambourine tambourist tambreet Tambuki tamburan tamburello Tame tame tamehearted tameheartedness tamein tameless tamelessly tamelessness tamely tameness tamer Tamerlanism Tamias tamidine Tamil Tamilian Tamilic tamis tamise tamlung Tammanial Tammanize Tammany Tammanyism Tammanyite Tammanyize tammie tammock tammy Tamonea Tamoyo tamp tampala tampan tampang tamper tamperer tamperproof tampin tamping tampion tampioned tampon tamponade tamponage tamponment tampoon Tamul Tamulian Tamulic Tamus Tamworth Tamzine tan tana tanacetin tanacetone Tanacetum tanacetyl tanach tanager Tanagra Tanagraean Tanagridae tanagrine tanagroid Tanaidacea tanaist tanak Tanala tanan tanbark tanbur tancel Tanchelmian tanchoir tandan tandem tandemer tandemist tandemize tandemwise tandle tandour tane tanekaha Tang tang tanga Tangaloa tangalung tangantangan Tangaridae Tangaroa Tangaroan tanged tangeite tangelo tangence tangency tangent tangental tangentally tangential tangentiality tangentially tangently tanger Tangerine tangfish tangham tanghan tanghin Tanghinia tanghinin tangi tangibile tangibility tangible tangibleness tangibly tangie Tangier tangilin Tangipahoa tangka tanglad tangle tangleberry tanglefish tanglefoot tanglement tangleproof tangler tangleroot tanglesome tangless tanglewrack tangling tanglingly tangly tango tangoreceptor tangram tangs tangue tanguile tangum tangun Tangut tangy tanh tanha tanhouse tania tanica tanier tanist tanistic tanistry tanistship Tanite Tanitic tanjib tanjong tank tanka tankage tankah tankard tanked tanker tankerabogus tankert tankette tankful tankle tankless tanklike tankmaker tankmaking tankman tankodrome tankroom tankwise tanling tannable tannage tannaic tannaim tannaitic tannalbin tannase tannate tanned tanner tannery tannic tannide tanniferous tannin tannined tanning tanninlike tannocaffeic tannogallate tannogallic tannogelatin tannogen tannoid tannometer tannyl Tano tanoa Tanoan tanproof tanquam Tanquelinian tanquen tanrec tanstuff tansy tantadlin tantafflin tantalate Tantalean Tantalian Tantalic tantalic tantaliferous tantalifluoride tantalite tantalization tantalize tantalizer tantalizingly tantalizingness tantalofluoride tantalum Tantalus tantamount tantara tantarabobus tantarara tanti tantivy tantle Tantony tantra tantric tantrik tantrism tantrist tantrum tantum tanwood tanworks tanyard Tanyoan Tanystomata tanystomatous tanystome tanzeb tanzib Tanzine tanzy tao Taoism Taoist Taoistic Taonurus Taos taotai taoyin tap Tapa tapa Tapachula Tapachulteca tapacolo tapaculo Tapacura tapadera tapadero Tapajo tapalo tapamaker tapamaking tapas tapasvi Tape tape Tapeats tapeinocephalic tapeinocephalism tapeinocephaly tapeless tapelike tapeline tapemaker tapemaking tapeman tapen taper taperbearer tapered taperer tapering taperingly taperly tapermaker tapermaking taperness taperwise tapesium tapestring tapestry tapestrylike tapet tapetal tapete tapeti tapetless tapetum tapework tapeworm taphephobia taphole taphouse Taphria Taphrina Taphrinaceae tapia Tapijulapane tapinceophalism tapinocephalic tapinocephaly Tapinoma tapinophobia tapinophoby tapinosis tapioca tapir Tapiridae tapiridian tapirine Tapiro tapiroid Tapirus tapis tapism tapist taplash taplet Tapleyism tapmost tapnet tapoa Taposa tapoun tappa tappable tappableness tappall tappaul tappen tapper tapperer Tappertitian tappet tappietoorie tapping tappoon Taprobane taproom taproot taprooted taps tapster tapsterlike tapsterly tapstress tapu tapul Tapuya Tapuyan Tapuyo taqua tar tara tarabooka taraf tarafdar tarage Tarahumar Tarahumara Tarahumare Tarahumari Tarai tarairi tarakihi Taraktogenos taramellite Taramembe Taranchi tarand Tarandean Tarandian tarantara tarantass tarantella tarantism tarantist tarantula tarantular tarantulary tarantulated tarantulid Tarantulidae tarantulism tarantulite tarantulous tarapatch taraph tarapin Tarapon Tarasc Tarascan Tarasco tarassis tarata taratah taratantara taratantarize tarau taraxacerin taraxacin Taraxacum Tarazed tarbadillo tarbet tarboard tarbogan tarboggin tarboosh tarbooshed tarboy tarbrush tarbush tarbuttite Tardenoisian Tardigrada tardigrade tardigradous tardily tardiness tarditude tardive tardle tardy tare tarea tarefa tarefitch tarentala tarente Tarentine tarentism tarentola tarepatch tarfa tarflower targe targeman targer target targeted targeteer targetlike targetman Targum Targumic Targumical Targumist Targumistic Targumize Tarheel Tarheeler tarhood tari Tariana tarie tariff tariffable tariffication tariffism tariffist tariffite tariffize tariffless tarin Tariri tariric taririnic tarish Tarkalani Tarkani tarkashi tarkeean tarkhan tarlatan tarlataned tarletan tarlike tarltonize Tarmac tarmac tarman tarmined tarn tarnal tarnally tarnation tarnish tarnishable tarnisher tarnishment tarnishproof tarnlike tarnside taro taroc tarocco tarok taropatch tarot tarp tarpan tarpaulin tarpaulinmaker Tarpeia Tarpeian tarpon tarpot tarpum Tarquin Tarquinish tarr tarrack tarradiddle tarradiddler tarragon tarragona tarras tarrass Tarrateen Tarratine tarred tarrer tarri tarriance tarrie tarrier tarrify tarrily tarriness tarrish tarrock tarrow tarry tarrying tarryingly tarryingness tars tarsadenitis tarsal tarsale tarsalgia tarse tarsectomy tarsectopia tarsi tarsia tarsier Tarsiidae tarsioid Tarsipedidae Tarsipedinae Tarsipes tarsitis Tarsius tarsochiloplasty tarsoclasis tarsomalacia tarsome tarsometatarsal tarsometatarsus tarsonemid Tarsonemidae Tarsonemus tarsophalangeal tarsophyma tarsoplasia tarsoplasty tarsoptosis tarsorrhaphy tarsotarsal tarsotibal tarsotomy tarsus tart tartago Tartan tartan tartana tartane Tartar tartar tartarated Tartarean Tartareous tartareous tartaret Tartarian Tartaric tartaric Tartarin tartarish Tartarism Tartarization tartarization Tartarize tartarize Tartarized Tartarlike tartarly Tartarology tartarous tartarproof tartarum Tartarus Tartary tartemorion tarten tartish tartishly tartle tartlet tartly tartness tartramate tartramic tartramide tartrate tartrated tartratoferric tartrazine tartrazinic tartro tartronate tartronic tartronyl tartronylurea tartrous tartryl tartrylic Tartufe tartufery tartufian tartufish tartufishly tartufism tartwoman Taruma Tarumari tarve Tarvia tarweed tarwhine tarwood tarworks taryard Taryba Tarzan Tarzanish tasajo tascal tasco taseometer tash tasheriff tashie tashlik Tashnagist Tashnakist tashreef tashrif Tasian tasimeter tasimetric tasimetry task taskage tasker taskit taskless tasklike taskmaster taskmastership taskmistress tasksetter tasksetting taskwork taslet Tasmanian tasmanite Tass tass tassago tassah tassal tassard tasse tassel tasseler tasselet tasselfish tassellus tasselmaker tasselmaking tassely tasser tasset tassie tassoo tastable tastableness tastably taste tasteable tasteableness tasteably tasted tasteful tastefully tastefulness tastekin tasteless tastelessly tastelessness tasten taster tastily tastiness tasting tastingly tasty tasu Tat tat Tatar Tatarian Tataric Tatarization Tatarize Tatary tataupa tatbeb tatchy tate tater Tates tath Tatian Tatianist tatie tatinek tatler tatou tatouay tatpurusha Tatsanottine tatsman tatta tatter tatterdemalion tatterdemalionism tatterdemalionry tattered tatteredly tatteredness tatterly tatterwallop tattery tatther tattied tatting tattle tattlement tattler tattlery tattletale tattling tattlingly tattoo tattooage tattooer tattooing tattooist tattooment tattva tatty Tatu tatu tatukira Tatusia Tatusiidae tau Taube Tauchnitz taught taula Tauli taum taun Taungthu taunt taunter taunting tauntingly tauntingness Taunton tauntress taupe taupo taupou taur tauranga taurean Tauri Taurian taurian Tauric tauric tauricide tauricornous Taurid Tauridian tauriferous tauriform taurine Taurini taurite taurobolium tauroboly taurocephalous taurocholate taurocholic taurocol taurocolla Tauroctonus taurodont tauroesque taurokathapsia taurolatry tauromachian tauromachic tauromachy tauromorphic tauromorphous taurophile taurophobe Tauropolos Taurotragus Taurus tauryl taut tautaug tauted tautegorical tautegory tauten tautirite tautit tautly tautness tautochrone tautochronism tautochronous tautog tautologic tautological tautologically tautologicalness tautologism tautologist tautologize tautologizer tautologous tautologously tautology tautomer tautomeral tautomeric tautomerism tautomerizable tautomerization tautomerize tautomery tautometer tautometric tautometrical tautomorphous tautonym tautonymic tautonymy tautoousian tautoousious tautophonic tautophonical tautophony tautopodic tautopody tautosyllabic tautotype tautourea tautousian tautousious tautozonal tautozonality tav Tavast Tavastian Tave tave tavell taver tavern taverner tavernize tavernless tavernlike tavernly tavernous tavernry tavernwards tavers tavert Tavghi tavistockite tavola tavolatite Tavy taw tawa tawdered tawdrily tawdriness tawdry tawer tawery Tawgi tawie tawite tawkee tawkin tawn tawney tawnily tawniness tawnle tawny tawpi tawpie taws tawse tawtie tax taxability taxable taxableness taxably Taxaceae taxaceous taxameter taxaspidean taxation taxational taxative taxatively taxator taxeater taxeating taxed taxeme taxemic taxeopod Taxeopoda taxeopodous taxeopody taxer taxgatherer taxgathering taxi taxiable taxiarch taxiauto taxibus taxicab Taxidea taxidermal taxidermic taxidermist taxidermize taxidermy taximan taximeter taximetered taxine taxing taxingly taxinomic taxinomist taxinomy taxiplane taxis taxite taxitic taxless taxlessly taxlessness taxman Taxodiaceae Taxodium taxodont taxology taxometer taxon taxonomer taxonomic taxonomical taxonomically taxonomist taxonomy taxor taxpaid taxpayer taxpaying Taxus taxwax taxy tay Tayassu Tayassuidae tayer Taygeta tayir Taylor Taylorism Taylorite taylorite Taylorize tayra Tayrona taysaam tazia Tcawi tch tchai tcharik tchast tche tcheirek Tcheka Tcherkess tchervonets tchervonetz Tchetchentsish Tchetnitsi Tchi tchick tchu Tchwi tck Td te tea teaberry teaboard teabox teaboy teacake teacart teach teachability teachable teachableness teachably teache teacher teacherage teacherdom teacheress teacherhood teacherless teacherlike teacherly teachership teachery teaching teachingly teachless teachment teachy teacup teacupful tead teadish teaer teaey teagardeny teagle Teague Teagueland Teaguelander teahouse teaish teaism teak teakettle teakwood teal tealeafy tealery tealess teallite team teamaker teamaking teaman teameo teamer teaming teamland teamless teamman teammate teamsman teamster teamwise teamwork tean teanal teap teapot teapotful teapottykin teapoy tear tearable tearableness tearably tearage tearcat teardown teardrop tearer tearful tearfully tearfulness tearing tearless tearlessly tearlessness tearlet tearlike tearoom tearpit tearproof tearstain teart tearthroat tearthumb teary teasable teasableness teasably tease teaseable teaseableness teaseably teasehole teasel teaseler teaseller teasellike teaselwort teasement teaser teashop teasiness teasing teasingly teasler teaspoon teaspoonful teasy teat teataster teated teatfish teathe teather teatime teatlike teatling teatman teaty teave teaware teaze teazer tebbet Tebet Tebeth Tebu tec Teca teca tecali Tech tech techily techiness technetium technic technica technical technicalism technicalist technicality technicalize technically technicalness technician technicism technicist technicological technicology Technicolor technicon technics techniphone technique techniquer technism technist technocausis technochemical technochemistry technocracy technocrat technocratic technographer technographic technographical technographically technography technolithic technologic technological technologically technologist technologue technology technonomic technonomy technopsychology techous techy teck Tecla tecnoctonia tecnology Teco Tecoma tecomin tecon Tecpanec tectal tectibranch Tectibranchia tectibranchian Tectibranchiata tectibranchiate tectiform tectocephalic tectocephaly tectological tectology Tectona tectonic tectonics tectorial tectorium Tectosages tectosphere tectospinal Tectospondyli tectospondylic tectospondylous tectrices tectricial tectum tecum tecuma Tecuna ted Teda tedder Teddy tedescan tedge tediosity tedious tediously tediousness tediousome tedisome tedium tee teedle teel teem teemer teemful teemfulness teeming teemingly teemingness teemless teems teen teenage teenet teens teensy teenty teeny teer teerer teest Teeswater teet teetaller teetan teeter teeterboard teeterer teetertail teeth teethache teethbrush teethe teethful teethily teething teethless teethlike teethridge teethy teeting teetotal teetotaler teetotalism teetotalist teetotally teetotum teetotumism teetotumize teetotumwise teety teevee teewhaap teff teg Tegean Tegeticula tegmen tegmental tegmentum tegmina tegminal Tegmine tegua teguexin Teguima tegula tegular tegularly tegulated tegumen tegument tegumental tegumentary tegumentum tegurium Teheran tehseel tehseeldar tehsil tehsildar Tehuantepecan Tehueco Tehuelche Tehuelchean Tehuelet Teian teicher teiglech Teiidae teil teind teindable teinder teinland teinoscope teioid Teiresias Tejon tejon teju tekiah Tekintsi Tekke tekke tekken Tekkintzi teknonymous teknonymy tektite tekya telacoustic telakucha telamon telang telangiectasia telangiectasis telangiectasy telangiectatic telangiosis Telanthera telar telarian telary telautogram telautograph telautographic telautographist telautography telautomatic telautomatically telautomatics Telchines Telchinic tele teleanemograph teleangiectasia telebarograph telebarometer telecast telecaster telechemic telechirograph telecinematography telecode telecommunication telecryptograph telectroscope teledendrion teledendrite teledendron teledu telega telegenic Telegn telegnosis telegnostic telegonic telegonous telegony telegram telegrammatic telegrammic telegraph telegraphee telegrapheme telegrapher telegraphese telegraphic telegraphical telegraphically telegraphist telegraphone telegraphophone telegraphoscope telegraphy Telegu telehydrobarometer Telei Teleia teleianthous teleiosis telekinematography telekinesis telekinetic telelectric telelectrograph telelectroscope telemanometer Telemark telemark Telembi telemechanic telemechanics telemechanism telemetacarpal telemeteorograph telemeteorographic telemeteorography telemeter telemetric telemetrical telemetrist telemetrograph telemetrographic telemetrography telemetry telemotor telencephal telencephalic telencephalon telenergic telenergy teleneurite teleneuron Telenget telengiscope Telenomus teleobjective Teleocephali teleocephalous Teleoceras Teleodesmacea teleodesmacean teleodesmaceous teleodont teleologic teleological teleologically teleologism teleologist teleology teleometer teleophobia teleophore teleophyte teleoptile teleorganic teleoroentgenogram teleoroentgenography teleosaur teleosaurian Teleosauridae Teleosaurus teleost teleostean Teleostei teleosteous teleostomate teleostome Teleostomi teleostomian teleostomous teleotemporal teleotrocha teleozoic teleozoon telepathic telepathically telepathist telepathize telepathy telepheme telephone telephoner telephonic telephonical telephonically telephonist telephonograph telephonographic telephony telephote telephoto telephotograph telephotographic telephotography Telephus telepicture teleplasm teleplasmic teleplastic telepost teleprinter teleradiophone teleran telergic telergical telergically telergy telescope telescopic telescopical telescopically telescopiform telescopist Telescopium telescopy telescriptor teleseism teleseismic teleseismology teleseme telesia telesis telesmeter telesomatic telespectroscope telestereograph telestereography telestereoscope telesterion telesthesia telesthetic telestial telestic telestich teletactile teletactor teletape teletherapy telethermogram telethermograph telethermometer telethermometry telethon teletopometer teletranscription Teletype teletype teletyper teletypesetter teletypewriter teletyping Teleut teleuto teleutoform teleutosorus teleutospore teleutosporic teleutosporiferous teleview televiewer televise television televisional televisionary televisor televisual televocal televox telewriter Telfairia telfairic telfer telferage telford telfordize telharmonic telharmonium telharmony teli telial telic telical telically teliferous Telinga teliosorus teliospore teliosporic teliosporiferous teliostage telium tell tellable tellach tellee teller tellership telligraph Tellima Tellina Tellinacea tellinacean tellinaceous telling tellingly Tellinidae tellinoid tellsome tellt telltale telltalely telltruth tellural tellurate telluret tellureted tellurethyl telluretted tellurhydric tellurian telluric telluride telluriferous tellurion tellurism tellurist tellurite tellurium tellurize telluronium tellurous telmatological telmatology teloblast teloblastic telocentric telodendrion telodendron telodynamic telokinesis telolecithal telolemma telome telomic telomitic telonism Teloogoo Telopea telophase telophragma telopsis teloptic telosynapsis telosynaptic telosynaptist teloteropathic teloteropathically teloteropathy Telotremata telotrematous telotroch telotrocha telotrochal telotrochous telotrophic telotype telpath telpher telpherage telpherman telpherway telson telsonic telt Telugu telurgy telyn Tema temacha temalacatl Teman teman Temanite tembe temblor Tembu temenos temerarious temerariously temerariousness temeritous temerity temerous temerously temerousness temiak temin Temiskaming Temne Temnospondyli temnospondylous temp Tempe Tempean temper tempera temperability temperable temperably temperality temperament temperamental temperamentalist temperamentally temperamented temperance temperate temperately temperateness temperative temperature tempered temperedly temperedness temperer temperish temperless tempersome tempery tempest tempestical tempestive tempestively tempestivity tempestuous tempestuously tempestuousness tempesty tempi Templar templar templardom templarism templarlike templarlikeness templary template templater temple templed templeful templeless templelike templet Templetonia templeward templize tempo tempora temporal temporale temporalism temporalist temporality temporalize temporally temporalness temporalty temporaneous temporaneously temporaneousness temporarily temporariness temporary temporator temporization temporizer temporizing temporizingly temporoalar temporoauricular temporocentral temporocerebellar temporofacial temporofrontal temporohyoid temporomalar temporomandibular temporomastoid temporomaxillary temporooccipital temporoparietal temporopontine temporosphenoid temporosphenoidal temporozygomatic tempre temprely tempt temptability temptable temptableness temptation temptational temptationless temptatious temptatory tempter tempting temptingly temptingness temptress Tempyo temse temser temulence temulency temulent temulentive temulently ten tenability tenable tenableness tenably tenace tenacious tenaciously tenaciousness tenacity tenaculum tenai tenaille tenaillon Tenaktak tenancy tenant tenantable tenantableness tenanter tenantism tenantless tenantlike tenantry tenantship tench tenchweed Tencteri tend tendance tendant tendence tendency tendent tendential tendentious tendentiously tendentiousness tender tenderability tenderable tenderably tenderee tenderer tenderfoot tenderfootish tenderful tenderfully tenderheart tenderhearted tenderheartedly tenderheartedness tenderish tenderize tenderling tenderloin tenderly tenderness tenderometer tendersome tendinal tending tendingly tendinitis tendinous tendinousness tendomucoid tendon tendonous tendoplasty tendosynovitis tendotome tendotomy tendour tendovaginal tendovaginitis tendresse tendril tendriled tendriliferous tendrillar tendrilly tendrilous tendron tenebra Tenebrae tenebricose tenebrific tenebrificate Tenebrio tenebrionid Tenebrionidae tenebrious tenebriously tenebrity tenebrose tenebrosity tenebrous tenebrously tenebrousness tenectomy tenement tenemental tenementary tenementer tenementization tenementize tenendas tenendum tenent teneral Teneriffe tenesmic tenesmus tenet tenfold tenfoldness teng tengere tengerite Tenggerese tengu teniacidal teniacide tenible Tenino tenio tenline tenmantale tennantite tenne tenner Tennessean tennis tennisdom tennisy Tennysonian Tennysonianism Tenochtitlan tenodesis tenodynia tenography tenology tenomyoplasty tenomyotomy tenon tenonectomy tenoner Tenonian tenonitis tenonostosis tenontagra tenontitis tenontodynia tenontography tenontolemmitis tenontology tenontomyoplasty tenontomyotomy tenontophyma tenontoplasty tenontothecitis tenontotomy tenophony tenophyte tenoplastic tenoplasty tenor tenorist tenorister tenorite tenorless tenoroon tenorrhaphy tenositis tenostosis tenosuture tenotome tenotomist tenotomize tenotomy tenovaginitis tenpence tenpenny tenpin tenrec Tenrecidae tense tenseless tenselessness tensely tenseness tensibility tensible tensibleness tensibly tensify tensile tensilely tensileness tensility tensimeter tensiometer tension tensional tensionless tensity tensive tenson tensor tent tentability tentable tentacle tentacled tentaclelike tentacula tentacular Tentaculata tentaculate tentaculated Tentaculifera tentaculite Tentaculites Tentaculitidae tentaculocyst tentaculoid tentaculum tentage tentamen tentation tentative tentatively tentativeness tented tenter tenterbelly tenterer tenterhook tentful tenth tenthly tenthmeter tenthredinid Tenthredinidae tenthredinoid Tenthredinoidea Tenthredo tentiform tentigo tentillum tention tentless tentlet tentlike tentmaker tentmaking tentmate tentorial tentorium tenture tentwards tentwise tentwork tentwort tenty tenuate tenues tenuicostate tenuifasciate tenuiflorous tenuifolious tenuious tenuiroster tenuirostral tenuirostrate Tenuirostres tenuis tenuistriate tenuity tenuous tenuously tenuousness tenure tenurial tenurially teocalli teopan teosinte Teotihuacan tepache tepal Tepanec Tepecano tepee tepefaction tepefy Tepehua Tepehuane tepetate Tephillah tephillin tephramancy tephrite tephritic tephroite tephromalacia tephromyelitic Tephrosia tephrosis tepid tepidarium tepidity tepidly tepidness tepomporize teponaztli tepor tequila Tequistlateca Tequistlatecan tera teraglin terakihi teramorphous terap teraphim teras teratical teratism teratoblastoma teratogenesis teratogenetic teratogenic teratogenous teratogeny teratoid teratological teratologist teratology teratoma teratomatous teratoscopy teratosis terbia terbic terbium tercel tercelet tercentenarian tercentenarize tercentenary tercentennial tercer terceron tercet terchloride tercia tercine tercio terdiurnal terebate terebella terebellid Terebellidae terebelloid terebellum terebene terebenic terebenthene terebic terebilic terebinic terebinth Terebinthaceae terebinthial terebinthian terebinthic terebinthina terebinthinate terebinthine terebinthinous Terebinthus terebra terebral terebrant Terebrantia terebrate terebration Terebratula terebratular terebratulid Terebratulidae terebratuliform terebratuline terebratulite terebratuloid Terebridae Teredinidae teredo terek Terence Terentian terephthalate terephthalic Teresian Teresina terete teretial tereticaudate teretifolious teretipronator teretiscapular teretiscapularis teretish tereu Tereus terfez Terfezia Terfeziaceae tergal tergant tergeminate tergeminous tergiferous tergite tergitic tergiversant tergiversate tergiversation tergiversator tergiversatory tergiverse tergolateral tergum terlinguaite term terma termagancy Termagant termagant termagantish termagantism termagantly termage termatic termen termer Termes termillenary termin terminability terminable terminableness terminably terminal Terminalia Terminaliaceae terminalization terminalized terminally terminant terminate termination terminational terminative terminatively terminator terminatory termine terminer termini terminine terminism terminist terministic terminize termino terminological terminologically terminologist terminology terminus termital termitarium termitary termite termitic termitid Termitidae termitophagous termitophile termitophilous termless termlessly termlessness termly termolecular termon termor termtime tern terna ternal ternar ternariant ternarious ternary ternate ternately ternatipinnate ternatisect ternatopinnate terne terneplate ternery ternion ternize ternlet Ternstroemia Ternstroemiaceae teroxide terp terpadiene terpane terpene terpeneless terphenyl terpilene terpin terpine terpinene terpineol terpinol terpinolene terpodion Terpsichore terpsichoreal terpsichoreally Terpsichorean terpsichorean Terraba terrace terraceous terracer terracette terracewards terracewise terracework terraciform terracing terraculture terraefilial terraefilian terrage terrain terral terramara terramare terrane terranean terraneous Terrapene terrapin terraquean terraqueous terraqueousness terrar terrarium terrazzo terrella terremotive terrene terrenely terreneness terreplein terrestrial terrestrialism terrestriality terrestrialize terrestrially terrestrialness terrestricity terrestrious terret terreted terribility terrible terribleness terribly terricole terricoline terricolous terrier terrierlike terrific terrifical terrifically terrification terrificly terrificness terrifiedly terrifier terrify terrifying terrifyingly terrigenous terrine Territelae territelarian territorial territorialism territorialist territoriality territorialization territorialize territorially territorian territoried territory terron terror terrorful terrorific terrorism terrorist terroristic terroristical terrorization terrorize terrorizer terrorless terrorproof terrorsome Terry terry terse tersely terseness tersion tersulphate tersulphide tersulphuret tertenant tertia tertial tertian tertiana tertianship tertiarian tertiary tertiate tertius terton tertrinal Tertullianism Tertullianist teruncius terutero tervalence tervalency tervalent tervariant tervee terzetto terzina terzo tesack tesarovitch teschenite teschermacherite teskere teskeria Tess tessara tessarace tessaraconter tessaradecad tessaraglot tessaraphthong tessarescaedecahedron tessel tessella tessellar tessellate tessellated tessellation tessera tesseract tesseradecade tesseraic tesseral Tesserants tesserarian tesserate tesserated tesseratomic tesseratomy tessular test testa testable Testacea testacean testaceography testaceology testaceous testaceousness testacy testament testamental testamentally testamentalness testamentarily testamentary testamentate testamentation testamentum testamur testar testata testate testation testator testatorship testatory testatrices testatrix testatum teste tested testee tester testes testibrachial testibrachium testicardinate testicardine Testicardines testicle testicond testicular testiculate testiculated testiere testificate testification testificator testificatory testifier testify testily testimonial testimonialist testimonialization testimonialize testimonializer testimonium testimony testiness testing testingly testis teston testone testoon testor testosterone testril testudinal Testudinaria testudinarious Testudinata testudinate testudinated testudineal testudineous Testudinidae testudinous testudo testy Tesuque tetanic tetanical tetanically tetaniform tetanigenous tetanilla tetanine tetanism tetanization tetanize tetanoid tetanolysin tetanomotor tetanospasmin tetanotoxin tetanus tetany tetarcone tetarconid tetard tetartemorion tetartocone tetartoconid tetartohedral tetartohedrally tetartohedrism tetartohedron tetartoid tetartosymmetry tetch tetchy tete tetel teterrimous teth tethelin tether tetherball tethery tethydan Tethys Teton tetra tetraamylose tetrabasic tetrabasicity Tetrabelodon tetrabelodont tetrabiblos tetraborate tetraboric tetrabrach tetrabranch Tetrabranchia tetrabranchiate tetrabromid tetrabromide tetrabromo tetrabromoethane tetracadactylity tetracarboxylate tetracarboxylic tetracarpellary tetraceratous tetracerous Tetracerus tetrachical tetrachlorid tetrachloride tetrachloro tetrachloroethane tetrachloroethylene tetrachloromethane tetrachord tetrachordal tetrachordon tetrachoric tetrachotomous tetrachromatic tetrachromic tetrachronous tetracid tetracoccous tetracoccus tetracolic tetracolon tetracoral Tetracoralla tetracoralline tetracosane tetract tetractinal tetractine tetractinellid Tetractinellida tetractinellidan tetractinelline tetractinose tetracyclic tetrad tetradactyl tetradactylous tetradactyly tetradarchy tetradecane tetradecanoic tetradecapod Tetradecapoda tetradecapodan tetradecapodous tetradecyl Tetradesmus tetradiapason tetradic Tetradite tetradrachma tetradrachmal tetradrachmon tetradymite Tetradynamia tetradynamian tetradynamious tetradynamous tetraedron tetraedrum tetraethylsilane tetrafluoride tetrafolious tetragamy tetragenous tetraglot tetraglottic tetragon tetragonal tetragonally tetragonalness Tetragonia Tetragoniaceae tetragonidium tetragonous tetragonus tetragram tetragrammatic Tetragrammaton tetragrammatonic tetragyn Tetragynia tetragynian tetragynous tetrahedral tetrahedrally tetrahedric tetrahedrite tetrahedroid tetrahedron tetrahexahedral tetrahexahedron tetrahydrate tetrahydrated tetrahydric tetrahydride tetrahydro tetrahydroxy tetraiodid tetraiodide tetraiodo tetraiodophenolphthalein tetrakaidecahedron tetraketone tetrakisazo tetrakishexahedron tetralemma Tetralin tetralogic tetralogue tetralogy tetralophodont tetramastia tetramastigote Tetramera tetrameral tetrameralian tetrameric tetramerism tetramerous tetrameter tetramethyl tetramethylammonium tetramethylene tetramethylium tetramin tetramine tetrammine tetramorph tetramorphic tetramorphism tetramorphous tetrander Tetrandria tetrandrian tetrandrous tetrane tetranitrate tetranitro tetranitroaniline tetranuclear Tetranychus Tetrao Tetraodon tetraodont Tetraodontidae tetraonid Tetraonidae Tetraoninae tetraonine Tetrapanax tetrapartite tetrapetalous tetraphalangeate tetrapharmacal tetrapharmacon tetraphenol tetraphony tetraphosphate tetraphyllous tetrapla tetraplegia tetrapleuron tetraploid tetraploidic tetraploidy tetraplous Tetrapneumona Tetrapneumones tetrapneumonian tetrapneumonous tetrapod Tetrapoda tetrapodic tetrapody tetrapolar tetrapolis tetrapolitan tetrapous tetraprostyle tetrapteran tetrapteron tetrapterous tetraptote Tetrapturus tetraptych tetrapylon tetrapyramid tetrapyrenous tetraquetrous tetrarch tetrarchate tetrarchic tetrarchy tetrasaccharide tetrasalicylide tetraselenodont tetraseme tetrasemic tetrasepalous tetraskelion tetrasome tetrasomic tetrasomy tetraspermal tetraspermatous tetraspermous tetraspheric tetrasporange tetrasporangiate tetrasporangium tetraspore tetrasporic tetrasporiferous tetrasporous tetraster tetrastich tetrastichal tetrastichic Tetrastichidae tetrastichous Tetrastichus tetrastoon tetrastyle tetrastylic tetrastylos tetrastylous tetrasubstituted tetrasubstitution tetrasulphide tetrasyllabic tetrasyllable tetrasymmetry tetrathecal tetratheism tetratheite tetrathionates tetrathionic tetratomic tetratone tetravalence tetravalency tetravalent tetraxial tetraxon Tetraxonia tetraxonian tetraxonid Tetraxonida tetrazane tetrazene tetrazin tetrazine tetrazo tetrazole tetrazolium tetrazolyl tetrazone tetrazotization tetrazotize tetrazyl tetremimeral tetrevangelium tetric tetrical tetricity tetricous tetrigid Tetrigidae tetriodide Tetrix tetrobol tetrobolon tetrode Tetrodon tetrodont Tetrodontidae tetrole tetrolic tetronic tetronymal tetrose tetroxalate tetroxide tetrsyllabical tetryl tetrylene tetter tetterish tetterous tetterwort tettery Tettigidae tettigoniid Tettigoniidae tettix Tetum Teucer Teucri Teucrian teucrin Teucrium teufit teuk Teutolatry Teutomania Teutomaniac Teuton Teutondom Teutonesque Teutonia Teutonic Teutonically Teutonicism Teutonism Teutonist Teutonity Teutonization Teutonize Teutonomania Teutonophobe Teutonophobia Teutophil Teutophile Teutophilism Teutophobe Teutophobia Teutophobism teviss tew Tewa tewel tewer tewit tewly tewsome Texan Texas Texcocan texguino text textarian textbook textbookless textiferous textile textilist textlet textman textorial textrine textual textualism textualist textuality textually textuarist textuary textural texturally texture textureless tez Tezcatlipoca Tezcatzoncatl Tezcucan tezkere th tha thack thacker Thackerayan Thackerayana Thackerayesque thackless Thai Thais thakur thakurate thalamencephalic thalamencephalon thalami thalamic Thalamiflorae thalamifloral thalamiflorous thalamite thalamium thalamocele thalamocoele thalamocortical thalamocrural thalamolenticular thalamomammillary thalamopeduncular Thalamophora thalamotegmental thalamotomy thalamus Thalarctos thalassal Thalassarctos thalassian thalassic thalassinid Thalassinidea thalassinidian thalassinoid thalassiophyte thalassiophytous thalasso Thalassochelys thalassocracy thalassocrat thalassographer thalassographic thalassographical thalassography thalassometer thalassophilous thalassophobia thalassotherapy thalattology thalenite thaler Thalesia Thalesian Thalessa Thalia Thaliacea thaliacean Thalian Thaliard Thalictrum thalli thallic thalliferous thalliform thalline thallious thallium thallochlore thallodal thallogen thallogenic thallogenous thalloid thallome Thallophyta thallophyte thallophytic thallose thallous thallus thalposis thalpotic thalthan thameng Thamesis Thamnidium thamnium thamnophile Thamnophilinae thamnophiline Thamnophilus Thamnophis Thamudean Thamudene Thamudic thamuria Thamus Thamyras than thana thanadar thanage thanan thanatism thanatist thanatobiologic thanatognomonic thanatographer thanatography thanatoid thanatological thanatologist thanatology thanatomantic thanatometer thanatophidia thanatophidian thanatophobe thanatophobia thanatophobiac thanatophoby thanatopsis Thanatos thanatosis thanatotic thanatousia thane thanedom thanehood thaneland thaneship thank thankee thanker thankful thankfully thankfulness thankless thanklessly thanklessness thanks thanksgiver thanksgiving thankworthily thankworthiness thankworthy thapes Thapsia thapsia thar tharf tharfcake Thargelion tharginyah tharm Thasian Thaspium that thatch thatcher thatching thatchless thatchwood thatchwork thatchy thatn thatness thats thaught Thaumantian Thaumantias thaumasite thaumatogeny thaumatography thaumatolatry thaumatology thaumatrope thaumatropical thaumaturge thaumaturgia thaumaturgic thaumaturgical thaumaturgics thaumaturgism thaumaturgist thaumaturgy thaumoscopic thave thaw thawer thawless thawn thawy the Thea Theaceae theaceous theah theandric theanthropic theanthropical theanthropism theanthropist theanthropology theanthropophagy theanthropos theanthroposophy theanthropy thearchic thearchy theasum theat theater theatergoer theatergoing theaterless theaterlike theaterward theaterwards theaterwise Theatine theatral theatric theatricable theatrical theatricalism theatricality theatricalization theatricalize theatrically theatricalness theatricals theatrician theatricism theatricize theatrics theatrize theatrocracy theatrograph theatromania theatromaniac theatron theatrophile theatrophobia theatrophone theatrophonic theatropolis theatroscope theatry theave theb Thebaic Thebaid thebaine Thebais thebaism Theban Thebesian theca thecae thecal Thecamoebae thecaphore thecasporal thecaspore thecaspored thecasporous Thecata thecate thecia thecitis thecium Thecla thecla theclan thecodont thecoglossate thecoid Thecoidea Thecophora Thecosomata thecosomatous thee theek theeker theelin theelol Theemim theer theet theetsee theezan theft theftbote theftdom theftless theftproof theftuous theftuously thegether thegidder thegither thegn thegndom thegnhood thegnland thegnlike thegnly thegnship thegnworthy theiform Theileria theine theinism their theirn theirs theirselves theirsens theism theist theistic theistical theistically thelalgia Thelemite thelemite Thelephora Thelephoraceae Theligonaceae theligonaceous Theligonum thelitis thelium Thelodontidae Thelodus theloncus thelorrhagia Thelphusa thelphusian Thelphusidae thelyblast thelyblastic thelyotokous thelyotoky Thelyphonidae Thelyphonus thelyplasty thelytocia thelytoky thelytonic them thema themata thematic thematical thematically thematist theme themeless themelet themer Themis themis Themistian themsel themselves then thenabouts thenadays thenal thenar thenardite thence thenceafter thenceforth thenceforward thenceforwards thencefrom thenceward thenness theoanthropomorphic theoanthropomorphism theoastrological Theobald Theobroma theobromic theobromine theocentric theocentricism theocentrism theochristic theocollectivism theocollectivist theocracy theocrasia theocrasical theocrasy theocrat theocratic theocratical theocratically theocratist Theocritan Theocritean theodemocracy theodicaea theodicean theodicy theodidact theodolite theodolitic Theodora Theodore Theodoric Theodosia Theodosian Theodotian theodrama theody theogamy theogeological theognostic theogonal theogonic theogonism theogonist theogony theohuman theokrasia theoktonic theoktony theolatrous theolatry theolepsy theoleptic theologal theologaster theologastric theologate theologeion theologer theologi theologian theologic theological theologically theologician theologicoastronomical theologicoethical theologicohistorical theologicometaphysical theologicomilitary theologicomoral theologiconatural theologicopolitical theologics theologism theologist theologium theologization theologize theologizer theologoumena theologoumenon theologue theologus theology theomachia theomachist theomachy theomammomist theomancy theomania theomaniac theomantic theomastix theomicrist theomisanthropist theomorphic theomorphism theomorphize theomythologer theomythology theonomy theopantism Theopaschist Theopaschitally Theopaschite Theopaschitic Theopaschitism theopathetic theopathic theopathy theophagic theophagite theophagous theophagy Theophania theophania theophanic theophanism theophanous theophany Theophila theophilanthrope theophilanthropic theophilanthropism theophilanthropist theophilanthropy theophile theophilist theophilosophic Theophilus theophobia theophoric theophorous Theophrastaceae theophrastaceous Theophrastan Theophrastean theophylline theophysical theopneust theopneusted theopneustia theopneustic theopneusty theopolitician theopolitics theopolity theopsychism theorbist theorbo theorem theorematic theorematical theorematically theorematist theoremic theoretic theoretical theoreticalism theoretically theoretician theoreticopractical theoretics theoria theoriai theoric theorical theorically theorician theoricon theorics theorism theorist theorization theorize theorizer theorum theory theoryless theorymonger theosoph theosopheme theosophic theosophical theosophically theosophism theosophist theosophistic theosophistical theosophize theosophy theotechnic theotechnist theotechny theoteleological theoteleology theotherapy Theotokos theow theowdom theowman Theraean theralite therapeusis Therapeutae Therapeutic therapeutic therapeutical therapeutically therapeutics therapeutism therapeutist Theraphosa theraphose theraphosid Theraphosidae theraphosoid therapist therapsid Therapsida therapy therblig there thereabouts thereabove thereacross thereafter thereafterward thereagainst thereamong thereamongst thereanent thereanents therearound thereas thereat thereaway thereaways therebeside therebesides therebetween thereby thereckly therefor therefore therefrom therehence therein thereinafter thereinbefore thereinto therence thereness thereof thereoid thereologist thereology thereon thereout thereover thereright theres Theresa therese therethrough theretill thereto theretofore theretoward thereunder thereuntil thereunto thereup thereupon Thereva therevid Therevidae therewhile therewith therewithal therewithin Theria theriac theriaca theriacal therial therianthropic therianthropism theriatrics theridiid Theridiidae Theridion theriodic theriodont Theriodonta Theriodontia theriolatry theriomancy theriomaniac theriomimicry theriomorph theriomorphic theriomorphism theriomorphosis theriomorphous theriotheism theriotrophical theriozoic therm thermacogenesis thermae thermal thermalgesia thermality thermally thermanalgesia thermanesthesia thermantic thermantidote thermatologic thermatologist thermatology thermesthesia thermesthesiometer thermetograph thermetrograph thermic thermically Thermidorian thermion thermionic thermionically thermionics thermistor Thermit thermit thermite thermo thermoammeter thermoanalgesia thermoanesthesia thermobarograph thermobarometer thermobattery thermocautery thermochemic thermochemical thermochemically thermochemist thermochemistry thermochroic thermochrosy thermocline thermocouple thermocurrent thermodiffusion thermoduric thermodynamic thermodynamical thermodynamically thermodynamician thermodynamicist thermodynamics thermodynamist thermoelectric thermoelectrical thermoelectrically thermoelectricity thermoelectrometer thermoelectromotive thermoelement thermoesthesia thermoexcitory thermogalvanometer thermogen thermogenerator thermogenesis thermogenetic thermogenic thermogenous thermogeny thermogeographical thermogeography thermogram thermograph thermography thermohyperesthesia thermojunction thermokinematics thermolabile thermolability thermological thermology thermoluminescence thermoluminescent thermolysis thermolytic thermolyze thermomagnetic thermomagnetism thermometamorphic thermometamorphism thermometer thermometerize thermometric thermometrical thermometrically thermometrograph thermometry thermomotive thermomotor thermomultiplier thermonastic thermonasty thermonatrite thermoneurosis thermoneutrality thermonous thermonuclear thermopair thermopalpation thermopenetration thermoperiod thermoperiodic thermoperiodicity thermoperiodism thermophile thermophilic thermophilous thermophobous thermophone thermophore thermophosphor thermophosphorescence thermopile thermoplastic thermoplasticity thermoplegia thermopleion thermopolymerization thermopolypnea thermopolypneic Thermopsis thermoradiotherapy thermoreduction thermoregulation thermoregulator thermoresistance thermoresistant thermos thermoscope thermoscopic thermoscopical thermoscopically thermosetting thermosiphon thermostability thermostable thermostat thermostatic thermostatically thermostatics thermostimulation thermosynthesis thermosystaltic thermosystaltism thermotactic thermotank thermotaxic thermotaxis thermotelephone thermotensile thermotension thermotherapeutics thermotherapy thermotic thermotical thermotically thermotics thermotropic thermotropism thermotropy thermotype thermotypic thermotypy thermovoltaic therodont theroid therolatry therologic therological therologist therology Theromora Theromores theromorph Theromorpha theromorphia theromorphic theromorphism theromorphological theromorphology theromorphous Theron theropod Theropoda theropodous thersitean Thersites thersitical thesauri thesaurus these Thesean theses Theseum Theseus thesial thesicle thesis Thesium Thesmophoria Thesmophorian Thesmophoric thesmothetae thesmothete thesmothetes thesocyte Thespesia Thespesius Thespian Thessalian Thessalonian thestreen theta thetch thetic thetical thetically thetics thetin thetine Thetis theurgic theurgical theurgically theurgist theurgy Thevetia thevetin thew thewed thewless thewness thewy they theyll theyre thiacetic thiadiazole thialdine thiamide thiamin thiamine thianthrene thiasi thiasine thiasite thiasoi thiasos thiasote thiasus thiazine thiazole thiazoline thick thickbrained thicken thickener thickening thicket thicketed thicketful thickety thickhead thickheaded thickheadedly thickheadedness thickish thickleaf thicklips thickly thickneck thickness thicknessing thickset thickskin thickskull thickskulled thickwind thickwit thief thiefcraft thiefdom thiefland thiefmaker thiefmaking thiefproof thieftaker thiefwise Thielavia Thielaviopsis thienone thienyl thievable thieve thieveless thiever thievery thieving thievingly thievish thievishly thievishness thig thigger thigging thigh thighbone thighed thight thightness thigmonegative thigmopositive thigmotactic thigmotactically thigmotaxis thigmotropic thigmotropically thigmotropism Thilanottine thilk thill thiller thilly thimber thimble thimbleberry thimbled thimbleflower thimbleful thimblelike thimblemaker thimblemaking thimbleman thimblerig thimblerigger thimbleriggery thimblerigging thimbleweed thin thinbrained thine thing thingal thingamabob thinghood thinginess thingish thingless thinglet thinglike thinglikeness thingliness thingly thingman thingness thingstead thingum thingumajig thingumbob thingummy thingy think thinkable thinkableness thinkably thinker thinkful thinking thinkingly thinkingpart thinkling thinly thinner thinness thinning thinnish Thinocoridae Thinocorus thinolite thio thioacetal thioacetic thioalcohol thioaldehyde thioamide thioantimonate thioantimoniate thioantimonious thioantimonite thioarsenate thioarseniate thioarsenic thioarsenious thioarsenite Thiobacillus Thiobacteria thiobacteria Thiobacteriales thiobismuthite thiocarbamic thiocarbamide thiocarbamyl thiocarbanilide thiocarbimide thiocarbonate thiocarbonic thiocarbonyl thiochloride thiochrome thiocresol thiocyanate thiocyanation thiocyanic thiocyanide thiocyano thiocyanogen thiodiazole thiodiphenylamine thiofuran thiofurane thiofurfuran thiofurfurane thiogycolic thiohydrate thiohydrolysis thiohydrolyze thioindigo thioketone thiol thiolacetic thiolactic thiolic thionamic thionaphthene thionate thionation thioneine thionic thionine thionitrite thionium thionobenzoic thionthiolic thionurate thionyl thionylamine thiophen thiophene thiophenic thiophenol thiophosgene thiophosphate thiophosphite thiophosphoric thiophosphoryl thiophthene thiopyran thioresorcinol thiosinamine Thiospira thiostannate thiostannic thiostannite thiostannous thiosulphate thiosulphonic thiosulphuric Thiothrix thiotolene thiotungstate thiotungstic thiouracil thiourea thiourethan thiourethane thioxene thiozone thiozonide thir third thirdborough thirdings thirdling thirdly thirdness thirdsman thirl thirlage thirling thirst thirster thirstful thirstily thirstiness thirsting thirstingly thirstland thirstle thirstless thirstlessness thirstproof thirsty thirt thirteen thirteener thirteenfold thirteenth thirteenthly thirtieth thirty thirtyfold thirtyish this thishow thislike thisn thisness thissen thistle thistlebird thistled thistledown thistlelike thistleproof thistlery thistlish thistly thiswise thither thitherto thitherward thitsiol thiuram thivel thixle thixolabile thixotropic thixotropy Thlaspi Thlingchadinne Thlinget thlipsis Tho tho thob thocht thof thoft thoftfellow thoke thokish thole tholeiite tholepin tholi tholoi tholos tholus Thomaean Thomas Thomasa Thomasine thomasing Thomasite thomisid Thomisidae Thomism Thomist Thomistic Thomistical Thomite Thomomys thomsenolite Thomsonian Thomsonianism thomsonite thon thonder Thondracians Thondraki Thondrakians thone thong Thonga thonged thongman thongy thoo thooid thoom thoracalgia thoracaorta thoracectomy thoracentesis thoraces thoracic Thoracica thoracical thoracicoabdominal thoracicoacromial thoracicohumeral thoracicolumbar thoraciform thoracispinal thoracoabdominal thoracoacromial thoracobronchotomy thoracoceloschisis thoracocentesis thoracocyllosis thoracocyrtosis thoracodelphus thoracodidymus thoracodorsal thoracodynia thoracogastroschisis thoracograph thoracohumeral thoracolumbar thoracolysis thoracomelus thoracometer thoracometry thoracomyodynia thoracopagus thoracoplasty thoracoschisis thoracoscope thoracoscopy Thoracostei thoracostenosis thoracostomy Thoracostraca thoracostracan thoracostracous thoracotomy thoral thorascope thorax thore thoria thorianite thoriate thoric thoriferous thorina thorite thorium thorn thornback thornbill thornbush thorned thornen thornhead thornily thorniness thornless thornlessness thornlet thornlike thornproof thornstone thorntail thorny thoro thorocopagous thorogummite thoron thorough Thoroughbred thoroughbred thoroughbredness thoroughfare thoroughfarer thoroughfaresome thoroughfoot thoroughgoing thoroughgoingly thoroughgoingness thoroughgrowth thoroughly thoroughness thoroughpaced thoroughpin thoroughsped thoroughstem thoroughstitch thoroughstitched thoroughwax thoroughwort thorp thort thorter thortveitite Thos those thou though thought thoughted thoughten thoughtful thoughtfully thoughtfulness thoughtkin thoughtless thoughtlessly thoughtlessness thoughtlet thoughtness thoughtsick thoughty thousand thousandfold thousandfoldly thousandth thousandweight thouse thow thowel thowless thowt Thraces Thracian thrack thraep thrail thrain thrall thrallborn thralldom thram thrammle thrang thrangity thranite thranitic thrap thrapple thrash thrashel thrasher thrasherman thrashing thrasonic thrasonical thrasonically thrast Thraupidae thrave thraver thraw thrawcrook thrawn thrawneen Thrax thread threadbare threadbareness threadbarity threaded threaden threader threadfin threadfish threadflower threadfoot threadiness threadle threadless threadlet threadlike threadmaker threadmaking threadway threadweed threadworm thready threap threaper threat threaten threatenable threatener threatening threateningly threatful threatfully threatless threatproof three threefold threefolded threefoldedness threefoldly threefoldness threeling threeness threepence threepenny threepennyworth threescore threesome thremmatology threne threnetic threnetical threnode threnodial threnodian threnodic threnodical threnodist threnody threnos threonin threonine threose threpsology threptic thresh threshel thresher thresherman threshingtime threshold Threskiornithidae Threskiornithinae threw thribble thrice thricecock thridacium thrift thriftbox thriftily thriftiness thriftless thriftlessly thriftlessness thriftlike thrifty thrill thriller thrillful thrillfully thrilling thrillingly thrillingness thrillproof thrillsome thrilly thrimble thrimp Thrinax thring thrinter thrioboly thrip thripel Thripidae thripple thrips thrive thriveless thriven thriver thriving thrivingly thrivingness thro throat throatal throatband throated throatful throatily throatiness throating throatlash throatlatch throatless throatlet throatroot throatstrap throatwort throaty throb throbber throbbingly throbless throck throdden throddy throe thrombase thrombin thromboangiitis thromboarteritis thrombocyst thrombocyte thrombocytopenia thrombogen thrombogenic thromboid thrombokinase thrombolymphangitis thrombopenia thrombophlebitis thromboplastic thromboplastin thrombose thrombosis thrombostasis thrombotic thrombus thronal throne thronedom throneless thronelet thronelike throneward throng thronger throngful throngingly thronize thropple throstle throstlelike throttle throttler throttling throttlingly throu throuch throucht through throughbear throughbred throughcome throughgang throughganging throughgoing throughgrow throughknow throughout throughput throve throw throwaway throwback throwdown thrower throwing thrown throwoff throwout throwster throwwort thrum thrummer thrummers thrummy thrumwort thrush thrushel thrushlike thrushy thrust thruster thrustful thrustfulness thrusting thrustings thrutch thrutchings Thruthvang thruv thrymsa Thryonomys Thuban Thucydidean thud thudding thuddingly thug thugdom thuggee thuggeeism thuggery thuggess thuggish thuggism Thuidium Thuja thujene thujin thujone Thujopsis thujyl Thule thulia thulir thulite thulium thulr thuluth thumb thumbbird thumbed thumber thumbkin thumble thumbless thumblike thumbmark thumbnail thumbpiece thumbprint thumbrope thumbscrew thumbstall thumbstring thumbtack thumby thumlungur thump thumper thumping thumpingly Thunar Thunbergia thunbergilene thunder thunderation thunderball thunderbearer thunderbearing thunderbird thunderblast thunderbolt thunderburst thunderclap thundercloud thundercrack thunderer thunderfish thunderflower thunderful thunderhead thunderheaded thundering thunderingly thunderless thunderlike thunderous thunderously thunderousness thunderpeal thunderplump thunderproof thundershower thundersmite thundersquall thunderstick thunderstone thunderstorm thunderstrike thunderstroke thunderstruck thunderwood thunderworm thunderwort thundery thundrous thundrously thung thunge Thunnidae Thunnus Thunor thuoc Thurberia thurible thuribuler thuribulum thurifer thuriferous thurificate thurificati thurification thurify Thuringian thuringite Thurio thurl thurm thurmus Thurnia Thurniaceae thurrock Thursday thurse thurt thus thusgate Thushi thusly thusness thuswise thutter Thuyopsis thwack thwacker thwacking thwackingly thwackstave thwaite thwart thwartedly thwarteous thwarter thwarting thwartingly thwartly thwartman thwartness thwartover thwartsaw thwartship thwartships thwartways thwartwise thwite thwittle thy Thyestean Thyestes thyine thylacine thylacitis Thylacoleo Thylacynus thymacetin Thymallidae Thymallus thymate thyme thymectomize thymectomy thymegol Thymelaea Thymelaeaceae thymelaeaceous Thymelaeales thymelcosis thymele thymelic thymelical thymelici thymene thymetic thymic thymicolymphatic thymine thymiosis thymitis thymocyte thymogenic thymol thymolate thymolize thymolphthalein thymolsulphonephthalein thymoma thymonucleic thymopathy thymoprivic thymoprivous thymopsyche thymoquinone thymotactic thymotic Thymus thymus thymy thymyl thymylic thynnid Thynnidae Thyraden thyratron thyreoadenitis thyreoantitoxin thyreoarytenoid thyreoarytenoideus thyreocervical thyreocolloid Thyreocoridae thyreoepiglottic thyreogenic thyreogenous thyreoglobulin thyreoglossal thyreohyal thyreohyoid thyreoid thyreoidal thyreoideal thyreoidean thyreoidectomy thyreoiditis thyreoitis thyreolingual thyreoprotein thyreosis thyreotomy thyreotoxicosis thyreotropic thyridial Thyrididae thyridium Thyris thyrisiferous thyroadenitis thyroantitoxin thyroarytenoid thyroarytenoideus thyrocardiac thyrocele thyrocervical thyrocolloid thyrocricoid thyroepiglottic thyroepiglottidean thyrogenic thyroglobulin thyroglossal thyrohyal thyrohyoid thyrohyoidean thyroid thyroidal thyroidea thyroideal thyroidean thyroidectomize thyroidectomy thyroidism thyroiditis thyroidization thyroidless thyroidotomy thyroiodin thyrolingual thyronine thyroparathyroidectomize thyroparathyroidectomy thyroprival thyroprivia thyroprivic thyroprivous thyroprotein Thyrostraca thyrostracan thyrotherapy thyrotomy thyrotoxic thyrotoxicosis thyrotropic thyroxine thyrse thyrsiflorous thyrsiform thyrsoid thyrsoidal thyrsus Thysanocarpus thysanopter Thysanoptera thysanopteran thysanopteron thysanopterous Thysanoura thysanouran thysanourous Thysanura thysanuran thysanurian thysanuriform thysanurous thysel thyself thysen ti Tiahuanacan Tiam tiang tiao tiar tiara tiaralike tiarella Tiatinagua tib Tibbie Tibbu tibby Tiberian Tiberine Tiberius tibet Tibetan tibey tibia tibiad tibiae tibial tibiale tibicinist tibiocalcanean tibiofemoral tibiofibula tibiofibular tibiometatarsal tibionavicular tibiopopliteal tibioscaphoid tibiotarsal tibiotarsus Tibouchina tibourbou tiburon Tiburtine tic tical ticca tice ticement ticer Tichodroma tichodrome tichorrhine tick tickbean tickbird tickeater ticked ticken ticker ticket ticketer ticketing ticketless ticketmonger tickey tickicide tickie ticking tickle tickleback ticklebrain tickled ticklely ticklenburg tickleness tickleproof tickler ticklesome tickless tickleweed tickling ticklingly ticklish ticklishly ticklishness tickly tickney tickproof tickseed tickseeded ticktack ticktacker ticktacktoe ticktick ticktock tickweed ticky ticul Ticuna Ticunan tid tidal tidally tidbit tiddle tiddledywinks tiddler tiddley tiddling tiddlywink tiddlywinking tiddy tide tided tideful tidehead tideland tideless tidelessness tidelike tidely tidemaker tidemaking tidemark tiderace tidesman tidesurveyor Tideswell tidewaiter tidewaitership tideward tidewater tideway tidiable tidily tidiness tiding tidingless tidings tidley tidological tidology tidy tidyism tidytips tie tieback tied tiemaker tiemaking tiemannite tien tiepin tier tierce tierced tierceron tiered tierer tierlike tiersman tietick tiewig tiewigged tiff tiffany tiffanyite tiffie tiffin tiffish tiffle tiffy tifinagh tift tifter tig tige tigella tigellate tigelle tigellum tigellus tiger tigerbird tigereye tigerflower tigerfoot tigerhearted tigerhood tigerish tigerishly tigerishness tigerism tigerkin tigerlike tigerling tigerly tigernut tigerproof tigerwood tigery tigger tight tighten tightener tightfisted tightish tightly tightness tightrope tights tightwad tightwire tiglaldehyde tiglic tiglinic tignum Tigrai Tigre Tigrean tigress tigresslike Tigridia Tigrina tigrine Tigris tigroid tigrolysis tigrolytic tigtag Tigua Tigurine Tiki tikitiki tikka tikker tiklin tikolosh tikor tikur til tilaite tilaka tilasite tilbury Tilda tilde tile tiled tilefish tilelike tilemaker tilemaking tiler tileroot tilery tileseed tilestone tileways tilework tileworks tilewright tileyard Tilia Tiliaceae tiliaceous tilikum tiling till tillable Tillaea Tillaeastrum tillage Tillamook Tillandsia tiller tillering tillerless tillerman Tilletia Tilletiaceae tilletiaceous tilley tillite tillodont Tillodontia Tillodontidae tillot tillotter tilly tilmus tilpah Tilsit tilt tiltable tiltboard tilter tilth tilting tiltlike tiltmaker tiltmaking tiltup tilty tiltyard tilyer Tim timable Timaeus Timalia Timaliidae Timaliinae timaliine timaline Timani timar timarau timawa timazite timbal timbale timbang timbe timber timbered timberer timberhead timbering timberjack timberland timberless timberlike timberling timberman timbermonger timbern timbersome timbertuned timberwood timberwork timberwright timbery timberyard Timbira timbo timbre timbrel timbreled timbreler timbrologist timbrology timbromania timbromaniac timbromanist timbrophilic timbrophilism timbrophilist timbrophily time timeable timecard timed timeful timefully timefulness timekeep timekeeper timekeepership timeless timelessly timelessness Timelia Timeliidae timeliine timelily timeliness timeling timely timenoguy timeous timeously timepiece timepleaser timeproof timer times timesaver timesaving timeserver timeserving timeservingness timetable timetaker timetaking timeward timework timeworker timeworn Timias timid timidity timidly timidness timing timish timist Timne timocracy timocratic timocratical Timon timon timoneer Timonian Timonism Timonist Timonize timor Timorese timorous timorously timorousness Timote Timotean Timothean Timothy timothy timpani timpanist timpano Timucua Timucuan Timuquan Timuquanan tin Tina Tinamidae tinamine tinamou tinampipi tincal tinchel tinchill tinclad tinct tinction tinctorial tinctorially tinctorious tinctumutation tincture tind tindal tindalo tinder tinderbox tindered tinderish tinderlike tinderous tindery tine tinea tineal tinean tined tinegrass tineid Tineidae Tineina tineine tineman tineoid Tineoidea tinetare tinety tineweed tinful Ting ting tinge tinged tinger Tinggian tingi tingibility tingible tingid Tingidae Tingis tingitid Tingitidae tinglass tingle tingler tingletangle tingling tinglingly tinglish tingly tingtang tinguaite tinguaitic Tinguian tinguy tinhorn tinhouse tinily tininess tining tink tinker tinkerbird tinkerdom tinkerer tinkerlike tinkerly tinkershire tinkershue tinkerwise tinkle tinkler tinklerman tinkling tinklingly tinkly tinlet tinlike tinman Tinne tinned tinner tinnery tinnet Tinni tinnified tinnily tinniness tinning tinnitus tinnock tinny Tino Tinoceras tinosa tinsel tinsellike tinselly tinselmaker tinselmaking tinselry tinselweaver tinselwork tinsman tinsmith tinsmithing tinsmithy tinstone tinstuff tint tinta tintage tintamarre tintarron tinted tinter tintie tintiness tinting tintingly tintinnabula tintinnabulant tintinnabular tintinnabulary tintinnabulate tintinnabulation tintinnabulatory tintinnabulism tintinnabulist tintinnabulous tintinnabulum tintist tintless tintometer tintometric tintometry tinty tintype tintyper tinwald tinware tinwoman tinwork tinworker tinworking tiny tinzenite Tionontates Tionontati Tiou tip tipburn tipcart tipcat tipe tipful tiphead Tiphia Tiphiidae tipiti tiple tipless tiplet tipman tipmost tiponi tippable tipped tippee tipper tippet tipping tipple tippleman tippler tipply tipproof tippy tipsification tipsifier tipsify tipsily tipsiness tipstaff tipster tipstock tipsy tiptail tipteerer tiptilt tiptoe tiptoeing tiptoeingly tiptop tiptopness tiptopper tiptoppish tiptoppishness tiptopsome Tipula Tipularia tipulid Tipulidae tipuloid Tipuloidea tipup Tipura tirade tiralee tire tired tiredly tiredness tiredom tirehouse tireless tirelessly tirelessness tiremaid tiremaker tiremaking tireman tirer tireroom tiresmith tiresome tiresomely tiresomeness tiresomeweed tirewoman Tirhutia tiriba tiring tiringly tirl tirma tirocinium Tirolean Tirolese Tironian tirr tirralirra tirret Tirribi tirrivee tirrlie tirrwirr tirthankara Tirurai tirve tirwit tisane tisar Tishiya Tishri Tisiphone tissual tissue tissued tissueless tissuelike tissuey tisswood tiswin tit Titan titanate titanaugite Titanesque Titaness titania Titanian Titanic titanic Titanical Titanically Titanichthyidae Titanichthys titaniferous titanifluoride Titanism titanite titanitic titanium Titanlike titano titanocolumbate titanocyanide titanofluoride Titanolater Titanolatry Titanomachia Titanomachy titanomagnetite titanoniobate titanosaur Titanosaurus titanosilicate titanothere Titanotheridae Titanotherium titanous titanyl titar titbit titbitty tite titer titeration titfish tithable tithal tithe tithebook titheless tithemonger tithepayer tither titheright tithing tithingman tithingpenny tithonic tithonicity tithonographic tithonometer Tithymalopsis Tithymalus titi Titian titian Titianesque Titianic titien Tities titilate titillability titillant titillater titillating titillatingly titillation titillative titillator titillatory titivate titivation titivator titlark title titleboard titled titledom titleholder titleless titleproof titler titleship titlike titling titlist titmal titman Titmarsh Titmarshian titmouse Titoism Titoist titoki titrable titratable titrate titration titre titrimetric titrimetry titter titterel titterer tittering titteringly tittery tittie tittle tittlebat tittler tittup tittupy titty tittymouse titubancy titubant titubantly titubate titubation titular titularity titularly titulary titulation titule titulus Titurel Titus tiver Tivoli tivoli tivy Tiwaz tiza tizeur tizzy tjanting tji tjosite tlaco Tlakluit Tlapallan Tlascalan Tlingit tmema Tmesipteris tmesis to toa toad toadback toadeat toadeater toader toadery toadess toadfish toadflax toadflower toadhead toadier toadish toadless toadlet toadlike toadlikeness toadling toadpipe toadroot toadship toadstone toadstool toadstoollike toadwise toady toadyish toadyism toadyship Toag toast toastable toastee toaster toastiness toastmaster toastmastery toastmistress toasty toat toatoa Toba tobacco tobaccofied tobaccoism tobaccoite tobaccoless tobaccolike tobaccoman tobacconalian tobacconist tobacconistical tobacconize tobaccophil tobaccoroot tobaccoweed tobaccowood tobaccoy tobe Tobiah Tobias Tobikhar tobine tobira toboggan tobogganeer tobogganer tobogganist Toby toby tobyman tocalote toccata Tocharese Tocharian Tocharic Tocharish tocher tocherless tock toco Tocobaga tocodynamometer tocogenetic tocogony tocokinin tocological tocologist tocology tocome tocometer tocopherol tocororo tocsin tocusso Tod tod Toda today todayish todder toddick toddite toddle toddlekins toddler toddy toddyize toddyman tode Todea Todidae Todus tody toe toeboard toecap toecapped toed toeless toelike toellite toenail toeplate toernebohmite toetoe toff toffee toffeeman toffing toffish toffy toffyman Tofieldia toft tofter toftman toftstead tofu tog toga togaed togalike togata togate togated togawise together togetherhood togetheriness togetherness toggel toggery toggle toggler togless togs togt togue toher toheroa toho Tohome tohubohu tohunga toi toil toiled toiler toilet toileted toiletry toilette toiletted toiletware toilful toilfully toilinet toiling toilingly toilless toillessness toilsome toilsomely toilsomeness toilworn toise toit toitish toity Tokay tokay toke Tokelau token tokened tokenless toko tokology tokonoma tokopat tol tolamine tolan tolane tolbooth told toldo tole Toledan Toledo Toledoan tolerability tolerable tolerableness tolerablish tolerably tolerance tolerancy tolerant tolerantism tolerantly tolerate toleration tolerationism tolerationist tolerative tolerator tolerism Toletan tolfraedic tolguacha tolidine tolite toll tollable tollage tollbooth toller tollery tollgate tollgatherer tollhouse tolliker tolling tollkeeper tollman tollmaster tollpenny tolltaker tolly Tolowa tolpatch tolpatchery tolsester tolsey Tolstoyan Tolstoyism Tolstoyist tolt Toltec Toltecan tolter tolu tolualdehyde toluate toluene toluic toluide toluidide toluidine toluidino toluido Toluifera tolunitrile toluol toluquinaldine tolusafranine toluyl toluylene toluylenediamine toluylic tolyl tolylene tolylenediamine Tolypeutes tolypeutine Tom Toma tomahawk tomahawker tomalley toman tomatillo tomato tomb tombac tombal tombe tombic tombless tomblet tomblike tombola tombolo tomboy tomboyful tomboyish tomboyishly tomboyishness tomboyism tombstone tomcat tomcod tome tomeful tomelet toment tomentose tomentous tomentulose tomentum tomfool tomfoolery tomfoolish tomfoolishness tomial tomin tomish Tomistoma tomium tomjohn Tomkin tomkin Tommer Tomming Tommy tommy tommybag tommycod tommyrot tomnoddy tomnoup tomogram tomographic tomography Tomopteridae Tomopteris tomorn tomorrow tomorrower tomorrowing tomorrowness tomosis Tompion tompiper tompon tomtate tomtit Tomtitmouse ton tonal tonalamatl tonalist tonalite tonalitive tonality tonally tonant tonation tondino tone toned toneless tonelessly tonelessness toneme toneproof toner tonetic tonetically tonetician tonetics tong Tonga tonga Tongan Tongas tonger tongkang tongman Tongrian tongs tongsman tongue tonguecraft tongued tonguedoughty tonguefence tonguefencer tongueflower tongueful tongueless tonguelet tonguelike tongueman tonguemanship tongueplay tongueproof tonguer tongueshot tonguesman tonguesore tonguester tonguetip tonguey tonguiness tonguing tonic tonically tonicity tonicize tonicobalsamic tonicoclonic tonicostimulant tonify tonight Tonikan tonish tonishly tonishness tonite tonitrocirrus tonitruant tonitruone tonitruous tonjon tonk Tonkawa Tonkawan tonkin Tonkinese tonlet Tonna tonnage tonneau tonneaued tonner tonnish tonnishly tonnishness tonoclonic tonogram tonograph tonological tonology tonometer tonometric tonometry tonophant tonoplast tonoscope tonotactic tonotaxis tonous tonsbergite tonsil tonsilectomy tonsilitic tonsillar tonsillary tonsillectome tonsillectomic tonsillectomize tonsillectomy tonsillith tonsillitic tonsillitis tonsillolith tonsillotome tonsillotomy tonsilomycosis tonsor tonsorial tonsurate tonsure tonsured tontine tontiner Tonto tonus Tony tony tonyhoop too toodle toodleloodle took tooken tool toolbox toolbuilder toolbuilding tooler toolhead toolholder toolholding tooling toolless toolmaker toolmaking toolman toolmark toolmarking toolplate toolroom toolsetter toolslide toolsmith toolstock toolstone toom toomly toon Toona toonwood toop toorie toorock tooroo toosh toot tooter tooth toothache toothaching toothachy toothbill toothbrush toothbrushy toothchiseled toothcomb toothcup toothdrawer toothdrawing toothed toother toothflower toothful toothill toothing toothless toothlessly toothlessness toothlet toothleted toothlike toothpick toothplate toothproof toothsome toothsomely toothsomeness toothstick toothwash toothwork toothwort toothy tootle tootler tootlish tootsy toozle toozoo top topalgia toparch toparchia toparchical toparchy topass Topatopa topaz topazfels topazine topazite topazolite topazy topcap topcast topchrome topcoat topcoating tope topectomy topee topeewallah topeng topepo toper toperdom topesthesia topflight topfull topgallant toph tophaceous tophaike Tophet tophetic tophetize tophus tophyperidrosis topi topia topiarian topiarist topiarius topiary topic topical topicality topically topinambou Topinish topknot topknotted topless toplighted toplike topline toploftical toploftily toploftiness toplofty topmaker topmaking topman topmast topmost topmostly topnotch topnotcher topo topoalgia topochemical topognosia topognosis topograph topographer topographic topographical topographically topographics topographist topographize topographometric topography topolatry topologic topological topologist topology toponarcosis toponym toponymal toponymic toponymical toponymics toponymist toponymy topophobia topophone topotactic topotaxis topotype topotypic topotypical topped topper toppiece topping toppingly toppingness topple toppler topply toppy toprail toprope tops topsail topsailite topside topsl topsman topsoil topstone topswarm Topsy topsyturn toptail topwise toque tor tora torah Toraja toral toran torbanite torbanitic torbernite torc torcel torch torchbearer torchbearing torcher torchless torchlight torchlighted torchlike torchman torchon torchweed torchwood torchwort torcular torculus tordrillite tore toreador tored Torenia torero toreumatography toreumatology toreutic toreutics torfaceous torfel torgoch Torgot toric Toriest Torified torii Torilis Torinese Toriness torma tormen torment tormenta tormentable tormentation tormentative tormented tormentedly tormentful tormentil tormentilla tormenting tormentingly tormentingness tormentive tormentor tormentous tormentress tormentry tormentum tormina torminal torminous tormodont torn tornachile tornade tornadic tornado tornadoesque tornadoproof tornal tornaria tornarian tornese torney tornillo Tornit tornote tornus toro toroid toroidal torolillo Toromona Torontonian tororokombu Torosaurus torose torosity torotoro torous torpedineer Torpedinidae torpedinous torpedo torpedoer torpedoist torpedolike torpedoplane torpedoproof torpent torpescence torpescent torpid torpidity torpidly torpidness torpify torpitude torpor torporific torporize torquate torquated torque torqued torques torrefaction torrefication torrefy torrent torrentful torrentfulness torrential torrentiality torrentially torrentine torrentless torrentlike torrentuous torrentwise Torreya Torricellian torrid torridity torridly torridness Torridonian Torrubia torsade torse torsel torsibility torsigraph torsile torsimeter torsiogram torsiograph torsiometer torsion torsional torsionally torsioning torsionless torsive torsk torso torsoclusion torsometer torsoocclusion tort torta torteau torticollar torticollis torticone tortile tortility tortilla tortille tortious tortiously tortive tortoise tortoiselike Tortonian tortrices tortricid Tortricidae Tortricina tortricine tortricoid Tortricoidea Tortrix tortula Tortulaceae tortulaceous tortulous tortuose tortuosity tortuous tortuously tortuousness torturable torturableness torture tortured torturedly tortureproof torturer torturesome torturing torturingly torturous torturously toru torula torulaceous torulaform toruliform torulin toruloid torulose torulosis torulous torulus torus torve torvid torvity torvous Tory tory Torydom Toryess Toryfication Toryfy toryhillite Toryish Toryism Toryistic Toryize Toryship toryweed tosaphist tosaphoth toscanite Tosephta Tosephtas tosh toshakhana tosher toshery toshly toshnail toshy tosily Tosk Toskish toss tosser tossicated tossily tossing tossingly tossment tosspot tossup tossy tost tosticate tostication toston tosy tot total totalitarian totalitarianism totality totalization totalizator totalize totalizer totally totalness totanine Totanus totaquin totaquina totaquine totara totchka tote toteload totem totemic totemically totemism totemist totemistic totemite totemization totemy toter tother totient Totipalmatae totipalmate totipalmation totipotence totipotency totipotent totipotential totipotentiality totitive toto Totonac Totonacan Totonaco totora Totoro totquot totter totterer tottergrass tottering totteringly totterish tottery Tottie totting tottle tottlish totty tottyhead totuava totum toty totyman tou toucan toucanet Toucanid touch touchable touchableness touchback touchbell touchbox touchdown touched touchedness toucher touchhole touchily touchiness touching touchingly touchingness touchless touchline touchous touchpan touchpiece touchstone touchwood touchy toug tough toughen toughener toughhead toughhearted toughish toughly toughness tought tould toumnah Tounatea toup toupee toupeed toupet tour touraco tourbillion tourer tourette touring tourism tourist touristdom touristic touristproof touristry touristship touristy tourize tourmaline tourmalinic tourmaliniferous tourmalinization tourmalinize tourmalite tourn tournament tournamental tournant tournasin tournay tournee Tournefortia Tournefortian tourney tourneyer tourniquet tourte tousche touse touser tousle tously tousy tout touter tovar Tovaria Tovariaceae tovariaceous tovarish tow towable towage towai towan toward towardliness towardly towardness towards towboat towcock towd towel towelette toweling towelry tower towered towering toweringly towerless towerlet towerlike towerman towerproof towerwise towerwork towerwort towery towght towhead towheaded towhee towing towkay towlike towline towmast town towned townee towner townet townfaring townfolk townful towngate townhood townify towniness townish townishly townishness townist townland townless townlet townlike townling townly townman townsboy townscape Townsendia Townsendite townsfellow townsfolk township townside townsite townsman townspeople townswoman townward townwards townwear towny towpath towrope towser towy tox toxa toxalbumic toxalbumin toxalbumose toxamin toxanemia toxaphene toxcatl toxemia toxemic toxic toxicaemia toxical toxically toxicant toxicarol toxication toxicemia toxicity toxicodendrol Toxicodendron toxicoderma toxicodermatitis toxicodermatosis toxicodermia toxicodermitis toxicogenic toxicognath toxicohaemia toxicohemia toxicoid toxicologic toxicological toxicologically toxicologist toxicology toxicomania toxicopathic toxicopathy toxicophagous toxicophagy toxicophidia toxicophobia toxicosis toxicotraumatic toxicum toxidermic toxidermitis toxifer Toxifera toxiferous toxigenic toxihaemia toxihemia toxiinfection toxiinfectious toxin toxinemia toxinfection toxinfectious toxinosis toxiphobia toxiphobiac toxiphoric toxitabellae toxity Toxodon toxodont Toxodontia toxogenesis Toxoglossa toxoglossate toxoid toxology toxolysis toxon toxone toxonosis toxophil toxophile toxophilism toxophilite toxophilitic toxophilitism toxophilous toxophily toxophoric toxophorous toxoplasmosis toxosis toxosozin Toxostoma toxotae Toxotes Toxotidae Toxylon toy toydom toyer toyful toyfulness toyhouse toying toyingly toyish toyishly toyishness toyland toyless toylike toymaker toymaking toyman toyon toyshop toysome toytown toywoman toywort toze tozee tozer tra trabacolo trabal trabant trabascolo trabea trabeae trabeatae trabeated trabeation trabecula trabecular trabecularism trabeculate trabeculated trabeculation trabecule trabuch trabucho Tracaulon trace traceability traceable traceableness traceably traceless tracelessly tracer traceried tracery trachea tracheaectasy tracheal trachealgia trachealis trachean Trachearia trachearian tracheary Tracheata tracheate tracheation tracheid tracheidal tracheitis trachelagra trachelate trachelectomopexia trachelectomy trachelismus trachelitis trachelium tracheloacromialis trachelobregmatic tracheloclavicular trachelocyllosis trachelodynia trachelology trachelomastoid trachelopexia tracheloplasty trachelorrhaphy tracheloscapular Trachelospermum trachelotomy trachenchyma tracheobronchial tracheobronchitis tracheocele tracheochromatic tracheoesophageal tracheofissure tracheolar tracheolaryngeal tracheolaryngotomy tracheole tracheolingual tracheopathia tracheopathy tracheopharyngeal Tracheophonae tracheophone tracheophonesis tracheophonine tracheophony tracheoplasty tracheopyosis tracheorrhagia tracheoschisis tracheoscopic tracheoscopist tracheoscopy tracheostenosis tracheostomy tracheotome tracheotomist tracheotomize tracheotomy Trachinidae trachinoid Trachinus trachitis trachle Trachodon trachodont trachodontid Trachodontidae Trachoma trachomatous Trachomedusae trachomedusan trachyandesite trachybasalt trachycarpous Trachycarpus trachychromatic trachydolerite trachyglossate Trachylinae trachyline Trachymedusae trachymedusan trachyphonia trachyphonous Trachypteridae trachypteroid Trachypterus trachyspermous trachyte trachytic trachytoid tracing tracingly track trackable trackage trackbarrow tracked tracker trackhound trackingscout tracklayer tracklaying trackless tracklessly tracklessness trackman trackmanship trackmaster trackscout trackshifter tracksick trackside trackwalker trackway trackwork tract tractability tractable tractableness tractably tractarian Tractarianism tractarianize tractate tractator tractatule tractellate tractellum tractiferous tractile tractility traction tractional tractioneering Tractite tractlet tractor tractoration tractorism tractorist tractorization tractorize tractory tractrix tradable tradal trade tradecraft tradeful tradeless trademaster trader tradership Tradescantia tradesfolk tradesman tradesmanlike tradesmanship tradesmanwise tradespeople tradesperson tradeswoman tradiment trading tradite tradition traditional traditionalism traditionalist traditionalistic traditionality traditionalize traditionally traditionarily traditionary traditionate traditionately traditioner traditionism traditionist traditionitis traditionize traditionless traditionmonger traditious traditive traditor traditores traditorship traduce traducement traducent traducer traducian traducianism traducianist traducianistic traducible traducing traducingly traduction traductionist trady traffic trafficability trafficable trafficableness trafficless trafficway trafflicker trafflike trag tragacanth tragacantha tragacanthin tragal Tragasol tragedial tragedian tragedianess tragedical tragedienne tragedietta tragedist tragedization tragedize tragedy tragelaph tragelaphine Tragelaphus tragi tragic tragical tragicality tragically tragicalness tragicaster tragicize tragicly tragicness tragicofarcical tragicoheroicomic tragicolored tragicomedian tragicomedy tragicomic tragicomical tragicomicality tragicomically tragicomipastoral tragicoromantic tragicose tragopan Tragopogon Tragulidae Tragulina traguline traguloid Traguloidea Tragulus tragus trah traheen traik trail trailer trailery trailiness trailing trailingly trailless trailmaker trailmaking trailman trailside trailsman traily train trainable trainage trainagraph trainband trainbearer trainbolt trainboy trained trainee trainer trainful training trainless trainload trainman trainmaster trainsick trainster traintime trainway trainy traipse trait traitless traitor traitorhood traitorism traitorize traitorlike traitorling traitorous traitorously traitorousness traitorship traitorwise traitress traject trajectile trajection trajectitious trajectory trajet tralatician tralaticiary tralatition tralatitious tralatitiously tralira Trallian tram trama tramal tramcar trame Trametes tramful tramless tramline tramman trammel trammeled trammeler trammelhead trammeling trammelingly trammelled trammellingly trammer tramming trammon tramontane tramp trampage trampdom tramper trampess tramphood trampish trampishly trampism trample trampler tramplike trampolin trampoline trampoose trampot tramroad tramsmith tramway tramwayman tramyard trance tranced trancedly tranceful trancelike tranchefer tranchet trancoidal traneen trank tranka tranker trankum tranky tranquil tranquility tranquilization tranquilize tranquilizer tranquilizing tranquilizingly tranquillity tranquillization tranquillize tranquilly tranquilness transaccidentation transact transaction transactional transactionally transactioneer transactor transalpine transalpinely transalpiner transamination transanimate transanimation transannular transapical transappalachian transaquatic transarctic transatlantic transatlantically transatlantican transatlanticism transaudient transbaikal transbaikalian transbay transboard transborder transcalency transcalent transcalescency transcalescent Transcaucasian transceiver transcend transcendence transcendency transcendent transcendental transcendentalism transcendentalist transcendentalistic transcendentality transcendentalize transcendentally transcendently transcendentness transcendible transcending transcendingly transcendingness transcension transchannel transcolor transcoloration transconductance transcondylar transcondyloid transconscious transcontinental transcorporate transcorporeal transcortical transcreate transcribable transcribble transcribbler transcribe transcriber transcript transcription transcriptional transcriptionally transcriptitious transcriptive transcriptively transcriptural transcrystalline transcurrent transcurrently transcurvation transdermic transdesert transdialect transdiaphragmatic transdiurnal transducer transduction transect transection transelement transelementate transelementation transempirical transenna transept transeptal transeptally transequatorial transessentiate transeunt transexperiential transfashion transfeature transfer transferability transferable transferableness transferably transferal transferee transference transferent transferential transferography transferor transferotype transferred transferrer transferribility transferring transferror transferrotype transfigurate transfiguration transfigurative transfigure transfigurement transfiltration transfinite transfix transfixation transfixion transfixture transfluent transfluvial transflux transforation transform transformability transformable transformance transformation transformationist transformative transformator transformer transforming transformingly transformism transformist transformistic transfrontal transfrontier transfuge transfugitive transfuse transfuser transfusible transfusion transfusionist transfusive transfusively transgredient transgress transgressible transgressing transgressingly transgression transgressional transgressive transgressively transgressor transhape transhuman transhumanate transhumanation transhumance transhumanize transhumant transience transiency transient transiently transientness transigence transigent transiliac transilience transiliency transilient transilluminate transillumination transilluminator transimpression transincorporation transindividual transinsular transire transischiac transisthmian transistor transit transitable transiter transition transitional transitionally transitionalness transitionary transitionist transitival transitive transitively transitiveness transitivism transitivity transitman transitorily transitoriness transitory transitus Transjordanian translade translatable translatableness translate translater translation translational translationally translative translator translatorese translatorial translatorship translatory translatress translatrix translay transleithan transletter translinguate transliterate transliteration transliterator translocalization translocate translocation translocatory translucence translucency translucent translucently translucid transmarginal transmarine transmaterial transmateriation transmedial transmedian transmental transmentation transmeridional transmethylation transmigrant transmigrate transmigration transmigrationism transmigrationist transmigrative transmigratively transmigrator transmigratory transmissibility transmissible transmission transmissional transmissionist transmissive transmissively transmissiveness transmissivity transmissometer transmissory transmit transmittable transmittal transmittance transmittancy transmittant transmitter transmittible transmogrification transmogrifier transmogrify transmold transmontane transmorphism transmundane transmural transmuscle transmutability transmutable transmutableness transmutably transmutation transmutational transmutationist transmutative transmutatory transmute transmuter transmuting transmutive transmutual transnatation transnational transnatural transnaturation transnature transnihilation transnormal transocean transoceanic transocular transom transomed transonic transorbital transpacific transpadane transpalatine transpalmar transpanamic transparence transparency transparent transparentize transparently transparentness transparietal transparish transpeciate transpeciation transpeer transpenetrable transpeninsular transperitoneal transperitoneally transpersonal transphenomenal transphysical transpicuity transpicuous transpicuously transpierce transpirability transpirable transpiration transpirative transpiratory transpire transpirometer transplace transplant transplantability transplantable transplantar transplantation transplantee transplanter transplendency transplendent transplendently transpleural transpleurally transpolar transponibility transponible transpontine transport transportability transportable transportableness transportal transportance transportation transportational transportationist transportative transported transportedly transportedness transportee transporter transporting transportingly transportive transportment transposability transposable transposableness transposal transpose transposer transposition transpositional transpositive transpositively transpositor transpository transpour transprint transprocess transprose transproser transpulmonary transpyloric transradiable transrational transreal transrectification transrhenane transrhodanian transriverine transsegmental transsensual transseptal transsepulchral transshape transshift transship transshipment transsolid transstellar transsubjective transtemporal Transteverine transthalamic transthoracic transubstantial transubstantially transubstantiate transubstantiation transubstantiationalist transubstantiationite transubstantiative transubstantiatively transubstantiatory transudate transudation transudative transudatory transude transumpt transumption transumptive transuranian transuranic transuranium transuterine transvaal Transvaaler Transvaalian transvaluate transvaluation transvalue transvasate transvasation transvase transvectant transvection transvenom transverbate transverbation transverberate transverberation transversal transversale transversalis transversality transversally transversan transversary transverse transversely transverseness transverser transversion transversive transversocubital transversomedial transversospinal transversovertical transversum transversus transvert transverter transvest transvestism transvestite transvestitism transvolation transwritten Transylvanian trant tranter trantlum Tranzschelia trap Trapa Trapaceae trapaceous trapball trapes trapezate trapeze trapezia trapezial trapezian trapeziform trapezing trapeziometacarpal trapezist trapezium trapezius trapezohedral trapezohedron trapezoid trapezoidal trapezoidiform trapfall traphole trapiferous traplight traplike trapmaker trapmaking trappean trapped trapper trapperlike trappiness trapping trappingly Trappist trappist Trappistine trappoid trappose trappous trappy traprock traps trapshoot trapshooter trapshooting trapstick trapunto trasformism trash trashery trashify trashily trashiness traship trashless trashrack trashy trass Trastevere Trasteverine trasy traulism trauma traumasthenia traumatic traumatically traumaticin traumaticine traumatism traumatize traumatology traumatonesis traumatopnea traumatopyra traumatosis traumatotactic traumatotaxis traumatropic traumatropism Trautvetteria travail travale travally travated trave travel travelability travelable traveldom traveled traveler traveleress travelerlike traveling travellability travellable travelled traveller travelogue traveloguer traveltime traversable traversal traversary traverse traversed traversely traverser traversewise traversework traversing traversion travertin travertine travestier travestiment travesty travis travois travoy trawl trawlboat trawler trawlerman trawlnet tray trayful traylike treacher treacherous treacherously treacherousness treachery treacle treaclelike treaclewort treacliness treacly tread treadboard treader treading treadle treadler treadmill treadwheel treason treasonable treasonableness treasonably treasonful treasonish treasonist treasonless treasonmonger treasonous treasonously treasonproof treasurable treasure treasureless treasurer treasurership treasuress treasurous treasury treasuryship treat treatable treatableness treatably treatee treater treating treatise treatiser treatment treator treaty treatyist treatyite treatyless Trebellian treble trebleness trebletree trebly trebuchet trecentist trechmannite treckschuyt Treculia treddle tredecile tredille tree treebeard treebine treed treefish treeful treehair treehood treeify treeiness treeless treelessness treelet treelike treeling treemaker treemaking treeman treen treenail treescape treeship treespeeler treetop treeward treewards treey tref trefgordd trefle trefoil trefoiled trefoillike trefoilwise tregadyne tregerg tregohm trehala trehalase trehalose treillage trek trekker trekometer trekpath trellis trellised trellislike trelliswork Trema Tremandra Tremandraceae tremandraceous Trematoda trematode Trematodea Trematodes trematoid Trematosaurus tremble tremblement trembler trembling tremblingly tremblingness tremblor trembly Tremella Tremellaceae tremellaceous Tremellales tremelliform tremelline tremellineous tremelloid tremellose tremendous tremendously tremendousness tremetol tremie tremolando tremolant tremolist tremolite tremolitic tremolo tremor tremorless tremorlessly tremulant tremulate tremulation tremulous tremulously tremulousness trenail trench trenchancy trenchant trenchantly trenchantness trenchboard trenched trencher trencherless trencherlike trenchermaker trenchermaking trencherman trencherside trencherwise trencherwoman trenchful trenchlet trenchlike trenchmaster trenchmore trenchward trenchwise trenchwork trend trendle Trent trental Trentepohlia Trentepohliaceae trentepohliaceous Trentine Trenton trepan trepanation trepang trepanize trepanner trepanning trepanningly trephination trephine trephiner trephocyte trephone trepid trepidancy trepidant trepidate trepidation trepidatory trepidity trepidly trepidness Treponema treponematous treponemiasis treponemiatic treponemicidal treponemicide Trepostomata trepostomatous Treron Treronidae Treroninae tresaiel trespass trespassage trespasser trespassory tress tressed tressful tressilate tressilation tressless tresslet tresslike tresson tressour tressure tressured tressy trest trestle trestletree trestlewise trestlework trestling tret trevally trevet trews trewsman trey tri triable triableness triace triacetamide triacetate triacetonamine triachenium triacid triacontaeterid triacontane triaconter triact triactinal triactine triad triadelphous Triadenum triadic triadical triadically triadism triadist triaene triaenose triage triagonal triakisicosahedral triakisicosahedron triakisoctahedral triakisoctahedrid triakisoctahedron triakistetrahedral triakistetrahedron trial trialate trialism trialist triality trialogue triamid triamide triamine triamino triammonium triamylose triander Triandria triandrian triandrous triangle triangled triangler triangleways trianglewise trianglework Triangula triangular triangularity triangularly triangulate triangulately triangulation triangulator Triangulid trianguloid triangulopyramidal triangulotriangular Triangulum triannual triannulate Trianon triantelope trianthous triapsal triapsidal triarch triarchate triarchy triarctic triarcuated triareal triarii Triarthrus triarticulate Trias Triassic triaster triatic Triatoma triatomic triatomicity triaxial triaxon triaxonian triazane triazin triazine triazo triazoic triazole triazolic tribade tribadism tribady tribal tribalism tribalist tribally tribarred tribase tribasic tribasicity tribasilar tribble tribe tribeless tribelet tribelike tribesfolk tribeship tribesman tribesmanship tribespeople tribeswoman triblastic triblet triboelectric triboelectricity tribofluorescence tribofluorescent Tribolium triboluminescence triboluminescent tribometer Tribonema Tribonemaceae tribophosphorescence tribophosphorescent tribophosphoroscope triborough tribrac tribrach tribrachial tribrachic tribracteate tribracteolate tribromacetic tribromide tribromoethanol tribromophenol tribromphenate tribromphenol tribual tribually tribular tribulate tribulation tribuloid Tribulus tribuna tribunal tribunate tribune tribuneship tribunitial tribunitian tribunitiary tribunitive tributable tributarily tributariness tributary tribute tributer tributist tributorian tributyrin trica tricae tricalcic tricalcium tricapsular tricar tricarballylic tricarbimide tricarbon tricarboxylic tricarinate tricarinated tricarpellary tricarpellate tricarpous tricaudal tricaudate trice tricellular tricenarious tricenarium tricenary tricennial tricentenarian tricentenary tricentennial tricentral tricephal tricephalic tricephalous tricephalus triceps Triceratops triceria tricerion tricerium trichatrophia trichauxis Trichechidae trichechine trichechodont Trichechus trichevron trichi trichia trichiasis Trichilia Trichina trichina trichinae trichinal Trichinella trichiniasis trichiniferous trichinization trichinize trichinoid trichinopoly trichinoscope trichinoscopy trichinosed trichinosis trichinotic trichinous trichite trichitic trichitis trichiurid Trichiuridae trichiuroid Trichiurus trichloride trichlormethane trichloro trichloroacetic trichloroethylene trichloromethane trichloromethyl trichobacteria trichobezoar trichoblast trichobranchia trichobranchiate trichocarpous trichocephaliasis Trichocephalus trichoclasia trichoclasis trichocyst trichocystic trichode Trichoderma Trichodesmium Trichodontidae trichoepithelioma trichogen trichogenous trichoglossia Trichoglossidae Trichoglossinae trichoglossine Trichogramma Trichogrammatidae trichogyne trichogynial trichogynic trichoid Tricholaena trichological trichologist trichology Tricholoma trichoma Trichomanes trichomaphyte trichomatose trichomatosis trichomatous trichome trichomic trichomonad Trichomonadidae Trichomonas trichomoniasis trichomycosis trichonosus trichopathic trichopathy trichophore trichophoric trichophyllous trichophyte trichophytia trichophytic Trichophyton trichophytosis Trichoplax trichopore trichopter Trichoptera trichoptera trichopteran trichopteron trichopterous trichopterygid Trichopterygidae trichord trichorrhea trichorrhexic trichorrhexis Trichosanthes trichoschisis trichosis trichosporange trichosporangial trichosporangium Trichosporum trichostasis Trichostema trichostrongyle trichostrongylid Trichostrongylus trichothallic trichotillomania trichotomic trichotomism trichotomist trichotomize trichotomous trichotomously trichotomy trichroic trichroism trichromat trichromate trichromatic trichromatism trichromatist trichrome trichromic trichronous trichuriasis Trichuris trichy tricinium tricipital tricircular trick tricker trickery trickful trickily trickiness tricking trickingly trickish trickishly trickishness trickle trickless tricklet tricklike trickling tricklingly trickly trickment trickproof tricksical tricksily tricksiness tricksome trickster trickstering trickstress tricksy tricktrack tricky triclad Tricladida triclinate triclinia triclinial tricliniarch tricliniary triclinic triclinium triclinohedric tricoccose tricoccous tricolette tricolic tricolon tricolor tricolored tricolumnar tricompound triconch Triconodon triconodont Triconodonta triconodontid triconodontoid triconodonty triconsonantal triconsonantalism tricophorous tricorn tricornered tricornute tricorporal tricorporate tricoryphean tricosane tricosanone tricostate tricosyl tricosylic tricot tricotine tricotyledonous tricresol tricrotic tricrotism tricrotous tricrural tricurvate tricuspal tricuspid tricuspidal tricuspidate tricuspidated tricussate tricyanide tricycle tricyclene tricycler tricyclic tricyclist Tricyrtis Tridacna Tridacnidae tridactyl tridactylous tridaily triddler tridecane tridecene tridecilateral tridecoic tridecyl tridecylene tridecylic trident tridental tridentate tridentated tridentiferous Tridentine Tridentinian tridepside tridermic tridiametral tridiapason tridigitate tridimensional tridimensionality tridimensioned tridiurnal tridominium tridrachm triduan triduum tridymite tridynamous tried triedly trielaidin triene triennial trienniality triennially triennium triens triental Trientalis triequal trier trierarch trierarchal trierarchic trierarchy trierucin trieteric trieterics triethanolamine triethyl triethylamine triethylstibine trifa trifacial trifarious trifasciated triferous trifid trifilar trifistulary triflagellate trifle trifledom trifler triflet trifling triflingly triflingness trifloral triflorate triflorous trifluoride trifocal trifoil trifold trifoliate trifoliated trifoliolate trifoliosis Trifolium trifolium trifoly triforial triforium triform triformed triformin triformity triformous trifoveolate trifuran trifurcal trifurcate trifurcation trig trigamist trigamous trigamy trigeminal trigeminous trigeneric trigesimal trigger triggered triggerfish triggerless trigintal trigintennial Trigla triglandular triglid Triglidae triglochid Triglochin triglochin triglot trigly triglyceride triglyceryl triglyph triglyphal triglyphed triglyphic triglyphical trigness trigon Trigona trigonal trigonally trigone Trigonella trigonelline trigoneutic trigoneutism Trigonia Trigoniaceae trigoniacean trigoniaceous trigonic trigonid Trigoniidae trigonite trigonitis trigonocephalic trigonocephalous Trigonocephalus trigonocephaly trigonocerous trigonododecahedron trigonodont trigonoid trigonometer trigonometric trigonometrical trigonometrician trigonometry trigonon trigonotype trigonous trigonum trigram trigrammatic trigrammatism trigrammic trigraph trigraphic triguttulate trigyn Trigynia trigynian trigynous trihalide trihedral trihedron trihemeral trihemimer trihemimeral trihemimeris trihemiobol trihemiobolion trihemitetartemorion trihoral trihourly trihybrid trihydrate trihydrated trihydric trihydride trihydrol trihydroxy trihypostatic trijugate trijugous trijunction trikaya trike triker trikeria trikerion triketo triketone trikir trilabe trilabiate trilamellar trilamellated trilaminar trilaminate trilarcenous trilateral trilaterality trilaterally trilateralness trilaurin trilby trilemma trilinear trilineate trilineated trilingual trilinguar trilinolate trilinoleate trilinolenate trilinolenin Trilisa trilit trilite triliteral triliteralism triliterality triliterally triliteralness trilith trilithic trilithon trill trillachan trillet trilli Trilliaceae trilliaceous trillibub trilliin trilling trillion trillionaire trillionize trillionth Trillium trillium trillo trilobate trilobated trilobation trilobe trilobed Trilobita trilobite trilobitic trilocular triloculate trilogic trilogical trilogist trilogy Trilophodon trilophodont triluminar triluminous trim trimacer trimacular trimargarate trimargarin trimastigate trimellitic trimembral trimensual trimer Trimera trimercuric Trimeresurus trimeric trimeride trimerite trimerization trimerous trimesic trimesinic trimesitic trimesitinic trimester trimestral trimestrial trimesyl trimetalism trimetallic trimeter trimethoxy trimethyl trimethylacetic trimethylamine trimethylbenzene trimethylene trimethylmethane trimethylstibine trimetric trimetrical trimetrogon trimly trimmer trimming trimmingly trimness trimodal trimodality trimolecular trimonthly trimoric trimorph trimorphic trimorphism trimorphous trimotor trimotored trimstone trimtram trimuscular trimyristate trimyristin trin Trinacrian trinal trinality trinalize trinary trinational trindle trine trinely trinervate trinerve trinerved trineural Tringa tringine tringle tringoid Trinidadian trinidado Trinil Trinitarian trinitarian Trinitarianism trinitrate trinitration trinitride trinitrin trinitro trinitrocarbolic trinitrocellulose trinitrocresol trinitroglycerin trinitromethane trinitrophenol trinitroresorcin trinitrotoluene trinitroxylene trinitroxylol Trinity trinity trinityhood trink trinkerman trinket trinketer trinketry trinkety trinkle trinklement trinklet trinkums Trinobantes trinoctial trinodal trinode trinodine trinol trinomial trinomialism trinomialist trinomiality trinomially trinopticon Trinorantum Trinovant Trinovantes trintle trinucleate Trinucleus Trio trio triobol triobolon trioctile triocular triode triodia triodion Triodon Triodontes Triodontidae triodontoid Triodontoidea Triodontoidei Triodontophorus Trioecia trioecious trioeciously trioecism triolcous triole trioleate triolefin trioleic triolein triolet triology Trionychidae trionychoid Trionychoideachid trionychoidean trionym trionymal Trionyx trioperculate Triopidae Triops trior triorchis triorchism triorthogonal triose Triosteum triovulate trioxazine trioxide trioxymethylene triozonide trip tripal tripaleolate tripalmitate tripalmitin tripara tripart triparted tripartedly tripartible tripartient tripartite tripartitely tripartition tripaschal tripe tripedal tripel tripelike tripeman tripemonger tripennate tripenny tripeptide tripersonal tripersonalism tripersonalist tripersonality tripersonally tripery tripeshop tripestone tripetaloid tripetalous tripewife tripewoman triphammer triphane triphase triphaser Triphasia triphasic triphenyl triphenylamine triphenylated triphenylcarbinol triphenylmethane triphenylmethyl triphenylphosphine triphibian triphibious triphony Triphora triphthong triphyletic triphyline triphylite triphyllous Triphysite tripinnate tripinnated tripinnately tripinnatifid tripinnatisect Tripitaka triplane Triplaris triplasian triplasic triple tripleback triplefold triplegia tripleness triplet tripletail tripletree triplewise triplex triplexity triplicate triplication triplicative triplicature Triplice Triplicist triplicity triplicostate tripliform triplinerved tripling triplite triploblastic triplocaulescent triplocaulous Triplochitonaceae triploid triploidic triploidite triploidy triplopia triplopy triplum triplumbic triply tripmadam tripod tripodal tripodial tripodian tripodic tripodical tripody tripointed tripolar tripoli Tripoline tripoline Tripolitan tripolite tripos tripotassium trippant tripper trippet tripping trippingly trippingness trippist tripple trippler Tripsacum tripsill tripsis tripsome tripsomely triptane tripterous triptote triptych triptyque tripudial tripudiant tripudiary tripudiate tripudiation tripudist tripudium tripunctal tripunctate tripy Tripylaea tripylaean Tripylarian tripylarian tripyrenous triquadrantal triquetra triquetral triquetric triquetrous triquetrously triquetrum triquinate triquinoyl triradial triradially triradiate triradiated triradiately triradiation Triratna trirectangular triregnum trireme trirhombohedral trirhomboidal triricinolein trisaccharide trisaccharose trisacramentarian Trisagion trisalt trisazo trisceptral trisect trisected trisection trisector trisectrix triseme trisemic trisensory trisepalous triseptate triserial triserially triseriate triseriatim trisetose Trisetum trishna trisilane trisilicane trisilicate trisilicic trisinuate trisinuated triskele triskelion trismegist trismegistic trismic trismus trisoctahedral trisoctahedron trisodium trisome trisomic trisomy trisonant Trisotropis trispast trispaston trispermous trispinose trisplanchnic trisporic trisporous trisquare trist tristachyous Tristam Tristan Tristania tristate tristearate tristearin tristeness tristetrahedron tristeza tristful tristfully tristfulness tristich Tristichaceae tristichic tristichous tristigmatic tristigmatose tristiloquy tristisonous Tristram tristylous trisubstituted trisubstitution trisul trisula trisulcate trisulcated trisulphate trisulphide trisulphone trisulphonic trisulphoxide trisylabic trisyllabical trisyllabically trisyllabism trisyllabity trisyllable tritactic tritagonist tritangent tritangential tritanope tritanopia tritanopic tritaph trite Triteleia tritely tritemorion tritencephalon triteness triternate triternately triterpene tritetartemorion tritheism tritheist tritheistic tritheistical tritheite tritheocracy trithing trithioaldehyde trithiocarbonate trithiocarbonic trithionate trithionic Trithrinax tritical triticality tritically triticalness triticeous triticeum triticin triticism triticoid Triticum triticum tritish tritium tritocerebral tritocerebrum tritocone tritoconid Tritogeneia tritolo Tritoma tritomite Triton triton tritonal tritonality tritone Tritoness Tritonia Tritonic Tritonidae tritonoid tritonous tritonymph tritonymphal tritopatores tritopine tritor tritoral tritorium tritoxide tritozooid tritriacontane trittichan tritubercular Trituberculata trituberculism trituberculy triturable tritural triturate trituration triturator triturature triturium Triturus trityl Tritylodon Triumfetta Triumph triumph triumphal triumphance triumphancy triumphant triumphantly triumphator triumpher triumphing triumphwise triumvir triumviral triumvirate triumviri triumvirship triunal triune triungulin triunification triunion triunitarian triunity triunsaturated triurid Triuridaceae Triuridales Triuris trivalence trivalency trivalent trivalerin trivalve trivalvular trivant trivantly trivariant triverbal triverbial trivet trivetwise trivia trivial trivialism trivialist triviality trivialize trivially trivialness trivirga trivirgate trivium trivoltine trivvet triweekly Trix Trixie Trixy trizoic trizomal trizonal trizone Trizonia Troad troat troca trocaical trocar Trochaic trochaic trochaicality trochal trochalopod Trochalopoda trochalopodous trochanter trochanteric trochanterion trochantin trochantinian trochart trochate troche trocheameter trochee trocheeize trochelminth Trochelminthes trochi trochid Trochidae trochiferous trochiform Trochila Trochili trochili trochilic trochilics trochilidae trochilidine trochilidist trochiline trochilopodous Trochilus trochilus troching trochiscation trochiscus trochite trochitic Trochius trochlea trochlear trochleariform trochlearis trochleary trochleate trochleiform trochocephalia trochocephalic trochocephalus trochocephaly Trochodendraceae trochodendraceous Trochodendron trochoid trochoidal trochoidally trochoides trochometer trochophore Trochosphaera Trochosphaerida trochosphere trochospherical Trochozoa trochozoic trochozoon Trochus trochus trock troco troctolite trod trodden trode troegerite Troezenian troft trog trogger troggin troglodytal troglodyte Troglodytes troglodytic troglodytical Troglodytidae Troglodytinae troglodytish troglodytism trogon Trogones Trogonidae Trogoniformes trogonoid trogs trogue Troiades Troic troika troilite Trojan troke troker troll trolldom trolleite troller trolley trolleyer trolleyful trolleyman trollflower trollimog trolling Trollius trollman trollol trollop Trollopean Trollopeanism trollopish trollops trollopy trolly tromba trombe trombiculid trombidiasis Trombidiidae Trombidium trombone trombonist trombony trommel tromometer tromometric tromometrical tromometry tromp trompe trompil trompillo tromple tron trona tronador tronage tronc trondhjemite trone troner troolie troop trooper trooperess troopfowl troopship troopwise troostite troostitic troot tropacocaine tropaeolaceae tropaeolaceous tropaeolin Tropaeolum tropaion tropal troparia troparion tropary tropate trope tropeic tropeine troper tropesis trophaea trophaeum trophal trophallactic trophallaxis trophectoderm trophedema trophema trophesial trophesy trophi trophic trophical trophically trophicity trophied Trophis trophism trophobiont trophobiosis trophobiotic trophoblast trophoblastic trophochromatin trophocyte trophoderm trophodisc trophodynamic trophodynamics trophogenesis trophogenic trophogeny trophology trophonema trophoneurosis trophoneurotic Trophonian trophonucleus trophopathy trophophore trophophorous trophophyte trophoplasm trophoplasmatic trophoplasmic trophoplast trophosomal trophosome trophosperm trophosphere trophospongia trophospongial trophospongium trophospore trophotaxis trophotherapy trophothylax trophotropic trophotropism trophozoite trophozooid trophy trophyless trophywort tropic tropical Tropicalia Tropicalian tropicality tropicalization tropicalize tropically tropicopolitan tropidine Tropidoleptus tropine tropism tropismatic tropist tropistic tropocaine tropologic tropological tropologically tropologize tropology tropometer tropopause tropophil tropophilous tropophyte tropophytic troposphere tropostereoscope tropoyl troptometer tropyl trostera trot trotcozy troth trothful trothless trothlike trothplight trotlet trotline trotol trotter trottie trottles trottoir trottoired trotty trotyl troubadour troubadourish troubadourism troubadourist trouble troubledly troubledness troublemaker troublemaking troublement troubleproof troubler troublesome troublesomely troublesomeness troubling troublingly troublous troublously troublousness troubly trough troughful troughing troughlike troughster troughway troughwise troughy trounce trouncer troupand troupe trouper troupial trouse trouser trouserdom trousered trouserettes trouserian trousering trouserless trousers trousseau trousseaux trout troutbird trouter troutflower troutful troutiness troutless troutlet troutlike trouty trouvere trouveur trove troveless trover trow trowel trowelbeak troweler trowelful trowelman trowing trowlesworthite trowman trowth troy Troynovant Troytown truancy truandise truant truantcy truantism truantlike truantly truantness truantry truantship trub trubu truce trucebreaker trucebreaking truceless trucemaker trucemaking trucial trucidation truck truckage trucker truckful trucking truckle truckler trucklike truckling trucklingly truckload truckman truckmaster trucks truckster truckway truculence truculency truculent truculental truculently truculentness truddo trudellite trudge trudgen trudger Trudy true trueborn truebred truehearted trueheartedly trueheartedness truelike truelove trueness truepenny truer truff truffle truffled trufflelike truffler trufflesque trug truish truism truismatic truistic truistical trull Trullan truller trullization trullo truly trumbash trummel trump trumper trumperiness trumpery trumpet trumpetbush trumpeter trumpeting trumpetless trumpetlike trumpetry trumpetweed trumpetwood trumpety trumph trumpie trumpless trumplike trun truncage truncal truncate truncated Truncatella Truncatellidae truncately truncation truncator truncatorotund truncatosinuate truncature trunch trunched truncheon truncheoned truncher trunchman trundle trundlehead trundler trundleshot trundletail trundling trunk trunkback trunked trunkfish trunkful trunking trunkless trunkmaker trunknose trunkway trunkwork trunnel trunnion trunnioned trunnionless trush trusion truss trussed trussell trusser trussing trussmaker trussmaking trusswork trust trustability trustable trustableness trustably trustee trusteeism trusteeship trusten truster trustful trustfully trustfulness trustification trustify trustihood trustily trustiness trusting trustingly trustingness trustle trustless trustlessly trustlessness trustman trustmonger trustwoman trustworthily trustworthiness trustworthy trusty truth truthable truthful truthfully truthfulness truthify truthiness truthless truthlessly truthlessness truthlike truthlikeness truthsman truthteller truthtelling truthy Trutta truttaceous truvat truxillic truxilline try trygon Trygonidae tryhouse trying tryingly tryingness tryma tryout tryp trypa trypan trypaneid Trypaneidae trypanocidal trypanocide trypanolysin trypanolysis trypanolytic Trypanosoma trypanosoma trypanosomacidal trypanosomacide trypanosomal trypanosomatic Trypanosomatidae trypanosomatosis trypanosomatous trypanosome trypanosomiasis trypanosomic Tryparsamide Trypeta trypetid Trypetidae Tryphena Tryphosa trypiate trypograph trypographic trypsin trypsinize trypsinogen tryptase tryptic tryptogen tryptone tryptonize tryptophan trysail tryst tryster trysting tryt tryworks tsadik tsamba tsantsa tsar tsardom tsarevitch tsarina tsaritza tsarship tsatlee Tsattine tscharik tscheffkinite Tscherkess tsere tsessebe tsetse Tshi tsia Tsiltaden Tsimshian tsine tsingtauite tsiology Tsoneca Tsonecan tst tsuba tsubo Tsuga Tsuma tsumebite tsun tsunami tsungtu Tsutsutsi tu tua Tualati Tuamotu Tuamotuan tuan Tuareg tuarn tuart tuatara tuatera tuath tub Tuba tuba tubae tubage tubal tubaphone tubar tubate tubatoxin Tubatulabal tubba tubbable tubbal tubbeck tubber tubbie tubbiness tubbing tubbish tubboe tubby tube tubeflower tubeform tubeful tubehead tubehearted tubeless tubelet tubelike tubemaker tubemaking tubeman tuber Tuberaceae tuberaceous Tuberales tuberation tubercle tubercled tuberclelike tubercula tubercular Tubercularia Tuberculariaceae tuberculariaceous tubercularization tubercularize tubercularly tubercularness tuberculate tuberculated tuberculatedly tuberculately tuberculation tuberculatogibbous tuberculatonodose tuberculatoradiate tuberculatospinous tubercule tuberculed tuberculid tuberculide tuberculiferous tuberculiform tuberculin tuberculinic tuberculinization tuberculinize tuberculization tuberculize tuberculocele tuberculocidin tuberculoderma tuberculoid tuberculoma tuberculomania tuberculomata tuberculophobia tuberculoprotein tuberculose tuberculosectorial tuberculosed tuberculosis tuberculotherapist tuberculotherapy tuberculotoxin tuberculotrophic tuberculous tuberculously tuberculousness tuberculum tuberiferous tuberiform tuberin tuberization tuberize tuberless tuberoid tuberose tuberosity tuberous tuberously tuberousness tubesmith tubework tubeworks tubfish tubful tubicen tubicinate tubicination Tubicola Tubicolae tubicolar tubicolous tubicorn tubicornous tubifacient tubifer tubiferous Tubifex Tubificidae Tubiflorales tubiflorous tubiform tubig tubik tubilingual Tubinares tubinarial tubinarine tubing Tubingen tubiparous Tubipora tubipore tubiporid Tubiporidae tubiporoid tubiporous tublet tublike tubmaker tubmaking tubman tuboabdominal tubocurarine tubolabellate tuboligamentous tuboovarial tuboovarian tuboperitoneal tuborrhea tubotympanal tubovaginal tubular Tubularia tubularia Tubulariae tubularian Tubularida tubularidan Tubulariidae tubularity tubularly tubulate tubulated tubulation tubulator tubulature tubule tubulet tubuli tubulibranch tubulibranchian Tubulibranchiata tubulibranchiate Tubulidentata tubulidentate Tubulifera tubuliferan tubuliferous tubulifloral tubuliflorous tubuliform Tubulipora tubulipore tubuliporid Tubuliporidae tubuliporoid tubulization tubulodermoid tubuloracemose tubulosaccular tubulose tubulostriato tubulous tubulously tubulousness tubulure tubulus tubwoman Tucana Tucanae tucandera Tucano tuchit tuchun tuchunate tuchunism tuchunize tuck Tuckahoe tuckahoe tucker tuckermanity tucket tucking tuckner tuckshop tucktoo tucky tucum tucuma tucuman Tucuna tudel Tudesque Tudor Tudoresque tue tueiron Tuesday tufa tufaceous tufalike tufan tuff tuffaceous tuffet tuffing tuft tuftaffeta tufted tufter tufthunter tufthunting tuftily tufting tuftlet tufty tug tugboat tugboatman tugger tuggery tugging tuggingly tughra tugless tuglike tugman tugrik tugui tugurium tui tuik tuille tuillette tuilyie tuism tuition tuitional tuitionary tuitive tuke tukra Tukuler Tukulor tula Tulalip tulare tularemia tulasi Tulbaghia tulchan tulchin tule tuliac tulip Tulipa tulipflower tulipiferous tulipist tuliplike tulipomania tulipomaniac tulipwood tulipy tulisan Tulkepaia tulle Tullian tullibee Tulostoma tulsi Tulu tulwar tum tumasha tumatakuru tumatukuru tumbak tumbester tumble tumblebug tumbled tumbledung tumbler tumblerful tumblerlike tumblerwise tumbleweed tumblification tumbling tumblingly tumbly Tumboa tumbrel tume tumefacient tumefaction tumefy tumescence tumescent tumid tumidity tumidly tumidness Tumion tummals tummel tummer tummock tummy tumor tumored tumorlike tumorous tump tumpline tumtum tumular tumulary tumulate tumulation tumuli tumulose tumulosity tumulous tumult tumultuarily tumultuariness tumultuary tumultuate tumultuation tumultuous tumultuously tumultuousness tumulus Tumupasa tun tuna tunable tunableness tunably tunbellied tunbelly tunca tund tundagslatta tunder tundish tundra tundun tune Tunebo tuned tuneful tunefully tunefulness tuneless tunelessly tunelessness tunemaker tunemaking tuner tunesome tunester tunful tung Tunga Tungan tungate tungo tungstate tungsten tungstenic tungsteniferous tungstenite tungstic tungstite tungstosilicate tungstosilicic Tungus Tungusian Tungusic tunhoof tunic Tunica Tunican tunicary Tunicata tunicate tunicated tunicin tunicked tunicle tunicless tuniness tuning tunish Tunisian tunist tunk Tunker tunket tunlike tunmoot tunna tunnel tunneled tunneler tunneling tunnelist tunnelite tunnellike tunnelly tunnelmaker tunnelmaking tunnelman tunnelway tunner tunnery Tunnit tunnland tunnor tunny tuno tunu tuny tup Tupaia Tupaiidae tupakihi tupanship tupara tupek tupelo Tupi Tupian tupik Tupinamba Tupinaqui tupman tuppence tuppenny Tupperian Tupperish Tupperism Tupperize tupuna tuque tur turacin Turacus Turanian Turanianism Turanism turanose turb turban turbaned turbanesque turbanette turbanless turbanlike turbantop turbanwise turbary turbeh Turbellaria turbellarian turbellariform turbescency turbid turbidimeter turbidimetric turbidimetry turbidity turbidly turbidness turbinaceous turbinage turbinal turbinate turbinated turbination turbinatoconcave turbinatocylindrical turbinatoglobose turbinatostipitate turbine turbinectomy turbined turbinelike Turbinella Turbinellidae turbinelloid turbiner turbines Turbinidae turbiniform turbinoid turbinotome turbinotomy turbit turbith turbitteen Turbo turbo turboalternator turboblower turbocompressor turbodynamo turboexciter turbofan turbogenerator turbomachine turbomotor turbopump turbosupercharge turbosupercharger turbot turbotlike turboventilator turbulence turbulency turbulent turbulently turbulentness Turcian Turcic Turcification Turcism Turcize Turco turco Turcoman Turcophilism turcopole turcopolier turd Turdetan Turdidae turdiform Turdinae turdine turdoid Turdus tureen tureenful turf turfage turfdom turfed turfen turfiness turfing turfite turfless turflike turfman turfwise turfy turgency turgent turgently turgesce turgescence turgescency turgescent turgescible turgid turgidity turgidly turgidness turgite turgoid turgor turgy Turi turicata turio turion turioniferous turjaite turjite Turk turk Turkana Turkdom turken Turkery Turkess Turkey turkey turkeyback turkeyberry turkeybush Turkeydom turkeyfoot Turkeyism turkeylike Turki Turkic Turkicize Turkification Turkify turkis Turkish Turkishly Turkishness Turkism Turkize turkle Turklike Turkman Turkmen Turkmenian Turkologist Turkology Turkoman Turkomania Turkomanic Turkomanize Turkophil Turkophile Turkophilia Turkophilism Turkophobe Turkophobist turlough Turlupin turm turma turment turmeric turmit turmoil turmoiler turn turnable turnabout turnagain turnaround turnaway turnback turnbout turnbuckle turncap turncoat turncoatism turncock turndown turndun turned turnel turner Turnera Turneraceae turneraceous Turneresque Turnerian Turnerism turnerite turnery turney turngate turnhall Turnhalle Turnices Turnicidae turnicine Turnicomorphae turnicomorphic turning turningness turnip turniplike turnipweed turnipwise turnipwood turnipy Turnix turnix turnkey turnoff turnout turnover turnpike turnpiker turnpin turnplate turnplow turnrow turns turnscrew turnsheet turnskin turnsole turnspit turnstile turnstone turntable turntail turnup turnwrest turnwrist Turonian turp turpantineweed turpentine turpentineweed turpentinic turpeth turpethin turpid turpidly turpitude turps turquoise turquoiseberry turquoiselike turr turret turreted turrethead turretlike turrical turricle turricula turriculae turricular turriculate turriferous turriform turrigerous Turrilepas turrilite Turrilites turriliticone Turrilitidae Turritella turritella turritellid Turritellidae turritelloid turse Tursenoi Tursha tursio Tursiops Turtan turtle turtleback turtlebloom turtledom turtledove turtlehead turtleize turtlelike turtler turtlet turtling turtosa tururi turus Turveydrop Turveydropdom Turveydropian turwar Tusayan Tuscan Tuscanism Tuscanize Tuscanlike Tuscany Tuscarora tusche Tusculan Tush tush tushed Tushepaw tusher tushery tusk tuskar tusked Tuskegee tusker tuskish tuskless tusklike tuskwise tusky tussah tussal tusser tussicular Tussilago tussis tussive tussle tussock tussocked tussocker tussocky tussore tussur tut tutania tutball tute tutee tutela tutelage tutelar tutelary Tutelo tutenag tuth tutin tutiorism tutiorist tutly tutman tutor tutorage tutorer tutoress tutorhood tutorial tutorially tutoriate tutorism tutorization tutorize tutorless tutorly tutorship tutory tutoyer tutress tutrice tutrix tuts tutsan tutster tutti tuttiman tutty tutu tutulus Tututni tutwork tutworker tutworkman tuwi tux tuxedo tuyere Tuyuneiri tuza Tuzla tuzzle twa Twaddell twaddle twaddledom twaddleize twaddlement twaddlemonger twaddler twaddlesome twaddling twaddlingly twaddly twaddy twae twaesome twafauld twagger twain twaite twal twale twalpenny twalpennyworth twalt Twana twang twanger twanginess twangle twangler twangy twank twanker twanking twankingly twankle twanky twant twarly twas twasome twat twatchel twatterlight twattle twattler twattling tway twayblade twazzy tweag tweak tweaker tweaky twee tweed tweeded tweedle tweedledee tweedledum tweedy tweeg tweel tween tweenlight tweeny tweesh tweesht tweest tweet tweeter tweeze tweezer tweezers tweil twelfhynde twelfhyndeman twelfth twelfthly Twelfthtide twelve twelvefold twelvehynde twelvehyndeman twelvemo twelvemonth twelvepence twelvepenny twelvescore twentieth twentiethly twenty twentyfold twentymo twere twerp Twi twibil twibilled twice twicer twicet twichild twick twiddle twiddler twiddling twiddly twifoil twifold twifoldly twig twigful twigged twiggen twigger twiggy twigless twiglet twiglike twigsome twigwithy twilight twilightless twilightlike twilighty twilit twill twilled twiller twilling twilly twilt twin twinable twinberry twinborn twindle twine twineable twinebush twineless twinelike twinemaker twinemaking twiner twinflower twinfold twinge twingle twinhood twiningly twinism twink twinkle twinkledum twinkleproof twinkler twinkles twinkless twinkling twinklingly twinkly twinleaf twinlike twinling twinly twinned twinner twinness twinning twinship twinsomeness twinter twiny twire twirk twirl twirler twirligig twirly twiscar twisel twist twistable twisted twistedly twistened twister twisterer twistical twistification twistily twistiness twisting twistingly twistiways twistiwise twistle twistless twisty twit twitch twitchel twitcheling twitcher twitchet twitchety twitchfire twitchily twitchiness twitchingly twitchy twite twitlark twitten twitter twitteration twitterboned twitterer twittering twitteringly twitterly twittery twittingly twitty twixt twixtbrain twizzened twizzle two twodecker twofold twofoldly twofoldness twoling twoness twopence twopenny twosome twyblade twyhynde Tybalt Tyburn Tyburnian Tyche tychism tychite Tychonian Tychonic tychoparthenogenesis tychopotamic tycoon tycoonate tyddyn tydie tye tyee tyg Tyigh tying tyke tyken tykhana tyking tylarus tyleberry Tylenchus Tylerism Tylerite Tylerize tylion tyloma tylopod Tylopoda tylopodous Tylosaurus tylose tylosis tylosteresis Tylostoma Tylostomaceae tylostylar tylostyle tylostylote tylostylus Tylosurus tylotate tylote tylotic tylotoxea tylotoxeate tylotus tylus tymbalon tymp tympan tympana tympanal tympanectomy tympani tympanic tympanichord tympanichordal tympanicity tympaniform tympaning tympanism tympanist tympanites tympanitic tympanitis tympanocervical tympanohyal tympanomalleal tympanomandibular tympanomastoid tympanomaxillary tympanon tympanoperiotic tympanosis tympanosquamosal tympanostapedial tympanotemporal tympanotomy Tympanuchus tympanum tympany tynd Tyndallization Tyndallize tyndallmeter Tynwald typal typarchical type typecast Typees typeholder typer typescript typeset typesetter typesetting typewrite typewriter typewriting Typha Typhaceae typhaceous typhemia typhia typhic typhinia typhization typhlatonia typhlatony typhlectasis typhlectomy typhlenteritis typhlitic typhlitis typhloalbuminuria typhlocele typhloempyema typhloenteritis typhlohepatitis typhlolexia typhlolithiasis typhlology typhlomegaly Typhlomolge typhlon typhlopexia typhlopexy typhlophile typhlopid Typhlopidae Typhlops typhloptosis typhlosis typhlosolar typhlosole typhlostenosis typhlostomy typhlotomy typhobacillosis Typhoean typhoemia typhogenic typhoid typhoidal typhoidin typhoidlike typholysin typhomalaria typhomalarial typhomania typhonia Typhonian Typhonic typhonic typhoon typhoonish typhopneumonia typhose typhosepsis typhosis typhotoxine typhous Typhula typhus typic typica typical typicality typically typicalness typicon typicum typification typifier typify typist typo typobar typocosmy typographer typographia typographic typographical typographically typographist typography typolithographic typolithography typologic typological typologically typologist typology typomania typometry typonym typonymal typonymic typonymous typophile typorama typoscript typotelegraph typotelegraphy typothere Typotheria Typotheriidae typothetae typp typtological typtologist typtology typy tyramine tyranness Tyranni tyrannial tyrannic tyrannical tyrannically tyrannicalness tyrannicidal tyrannicide tyrannicly Tyrannidae Tyrannides Tyranninae tyrannine tyrannism tyrannize tyrannizer tyrannizing tyrannizingly tyrannoid tyrannophobia tyrannosaur Tyrannosaurus tyrannous tyrannously tyrannousness Tyrannus tyranny tyrant tyrantcraft tyrantlike tyrantship tyre tyremesis Tyrian tyriasis tyro tyrocidin tyrocidine tyroglyphid Tyroglyphidae Tyroglyphus Tyrolean Tyrolese Tyrolienne tyrolite tyrology tyroma tyromancy tyromatous tyrone tyronic tyronism tyrosinase tyrosine tyrosinuria tyrosyl tyrotoxicon tyrotoxine Tyrr Tyrrhene Tyrrheni Tyrrhenian Tyrsenoi Tyrtaean tysonite tyste tyt Tyto Tytonidae Tzaam Tzapotec tzaritza Tzendal Tzental tzolkin tzontle Tzotzil Tzutuhil U u uang Uaraycu Uarekena Uaupe uayeb Ubbenite Ubbonite uberant uberous uberously uberousness uberty ubi ubication ubiety Ubii Ubiquarian ubiquarian ubiquious Ubiquist ubiquit Ubiquitarian ubiquitarian Ubiquitarianism ubiquitariness ubiquitary Ubiquitism Ubiquitist ubiquitous ubiquitously ubiquitousness ubiquity ubussu Uca Ucal Ucayale Uchean Uchee uckia Ud udal udaler udaller udalman udasi udder uddered udderful udderless udderlike udell Udi Udic Udish udo Udolphoish udometer udometric udometry udomograph Uds Ueueteotl ug Ugandan Ugarono ugh uglification uglifier uglify uglily ugliness uglisome ugly Ugrian Ugric Ugroid ugsome ugsomely ugsomeness uhlan uhllo uhtensang uhtsong Uigur Uigurian Uiguric uily uinal Uinta uintaite uintathere Uintatheriidae Uintatherium uintjie Uirina Uitotan uitspan uji ukase uke ukiyoye Ukrainer Ukrainian ukulele ula ulatrophia ulcer ulcerable ulcerate ulceration ulcerative ulcered ulceromembranous ulcerous ulcerously ulcerousness ulcery ulcuscle ulcuscule ule ulema ulemorrhagia ulerythema uletic Ulex ulex ulexine ulexite Ulidia Ulidian uliginose uliginous ulitis ull ulla ullage ullaged ullagone uller ulling ullmannite ulluco Ulmaceae ulmaceous Ulmaria ulmic ulmin ulminic ulmo ulmous Ulmus ulna ulnad ulnae ulnar ulnare ulnaria ulnocarpal ulnocondylar ulnometacarpal ulnoradial uloborid Uloboridae Uloborus ulocarcinoma uloid Ulonata uloncus Ulophocinae ulorrhagia ulorrhagy ulorrhea Ulothrix Ulotrichaceae ulotrichaceous Ulotrichales ulotrichan Ulotriches Ulotrichi ulotrichous ulotrichy ulrichite ulster ulstered ulsterette Ulsterian ulstering Ulsterite Ulsterman ulterior ulteriorly ultima ultimacy ultimata ultimate ultimately ultimateness ultimation ultimatum ultimity ultimo ultimobranchial ultimogenitary ultimogeniture ultimum Ultonian ultra ultrabasic ultrabasite ultrabelieving ultrabenevolent ultrabrachycephalic ultrabrachycephaly ultrabrilliant ultracentenarian ultracentenarianism ultracentralizer ultracentrifuge ultraceremonious ultrachurchism ultracivil ultracomplex ultraconcomitant ultracondenser ultraconfident ultraconscientious ultraconservatism ultraconservative ultracordial ultracosmopolitan ultracredulous ultracrepidarian ultracrepidarianism ultracrepidate ultracritical ultradandyism ultradeclamatory ultrademocratic ultradespotic ultradignified ultradiscipline ultradolichocephalic ultradolichocephaly ultradolichocranial ultraeducationist ultraeligible ultraelliptic ultraemphasis ultraenergetic ultraenforcement ultraenthusiasm ultraenthusiastic ultraepiscopal ultraevangelical ultraexcessive ultraexclusive ultraexpeditious ultrafantastic ultrafashionable ultrafastidious ultrafederalist ultrafeudal ultrafidian ultrafidianism ultrafilter ultrafilterability ultrafilterable ultrafiltrate ultrafiltration ultraformal ultrafrivolous ultragallant ultragaseous ultragenteel ultragood ultragrave ultraheroic ultrahonorable ultrahuman ultraimperialism ultraimperialist ultraimpersonal ultrainclusive ultraindifferent ultraindulgent ultraingenious ultrainsistent ultraintimate ultrainvolved ultraism ultraist ultraistic ultralaborious ultralegality ultralenient ultraliberal ultraliberalism ultralogical ultraloyal ultraluxurious ultramarine ultramaternal ultramaximal ultramelancholy ultramicrochemical ultramicrochemist ultramicrochemistry ultramicrometer ultramicron ultramicroscope ultramicroscopic ultramicroscopical ultramicroscopy ultraminute ultramoderate ultramodern ultramodernism ultramodernist ultramodernistic ultramodest ultramontane ultramontanism ultramontanist ultramorose ultramulish ultramundane ultranational ultranationalism ultranationalist ultranatural ultranegligent ultranice ultranonsensical ultraobscure ultraobstinate ultraofficious ultraoptimistic ultraornate ultraorthodox ultraorthodoxy ultraoutrageous ultrapapist ultraparallel ultraperfect ultrapersuasive ultraphotomicrograph ultrapious ultraplanetary ultraplausible ultrapopish ultraproud ultraprudent ultraradical ultraradicalism ultrarapid ultrareactionary ultrared ultrarefined ultrarefinement ultrareligious ultraremuneration ultrarepublican ultrarevolutionary ultrarevolutionist ultraritualism ultraromantic ultraroyalism ultraroyalist ultrasanguine ultrascholastic ultraselect ultraservile ultrasevere ultrashrewd ultrasimian ultrasolemn ultrasonic ultrasonics ultraspartan ultraspecialization ultraspiritualism ultrasplendid ultrastandardization ultrastellar ultrasterile ultrastrenuous ultrastrict ultrasubtle ultrasystematic ultratechnical ultratense ultraterrene ultraterrestrial ultratotal ultratrivial ultratropical ultraugly ultrauncommon ultraurgent ultravicious ultraviolent ultraviolet ultravirtuous ultravirus ultravisible ultrawealthy ultrawise ultrayoung ultrazealous ultrazodiacal ultroneous ultroneously ultroneousness ulu Ulua ulua uluhi ululant ululate ululation ululative ululatory ululu Ulva Ulvaceae ulvaceous Ulvales Ulvan Ulyssean Ulysses um umangite Umatilla Umaua umbeclad umbel umbeled umbella Umbellales umbellar umbellate umbellated umbellately umbellet umbellic umbellifer Umbelliferae umbelliferone umbelliferous umbelliflorous umbelliform umbelloid Umbellula Umbellularia umbellulate umbellule Umbellulidae umbelluliferous umbelwort umber umbethink umbilectomy umbilic umbilical umbilically umbilicar Umbilicaria umbilicate umbilicated umbilication umbilici umbiliciform umbilicus umbiliform umbilroot umble umbo umbolateral umbonal umbonate umbonated umbonation umbone umbones umbonial umbonic umbonulate umbonule Umbra umbra umbracious umbraciousness umbraculate umbraculiferous umbraculiform umbraculum umbrae umbrage umbrageous umbrageously umbrageousness umbral umbrally umbratile umbrel umbrella umbrellaed umbrellaless umbrellalike umbrellawise umbrellawort umbrette Umbrian Umbriel umbriferous umbriferously umbriferousness umbril umbrine umbrose umbrosity umbrous Umbundu ume umiak umiri umlaut ump umph umpirage umpire umpirer umpireship umpiress umpirism Umpqua umpteen umpteenth umptekite umptieth umpty umquhile umu un Una unabandoned unabased unabasedly unabashable unabashed unabashedly unabatable unabated unabatedly unabating unabatingly unabbreviated unabetted unabettedness unabhorred unabiding unabidingly unabidingness unability unabject unabjured unable unableness unably unabolishable unabolished unabraded unabrased unabridgable unabridged unabrogated unabrupt unabsent unabsolute unabsolvable unabsolved unabsolvedness unabsorb unabsorbable unabsorbed unabsorbent unabstract unabsurd unabundance unabundant unabundantly unabused unacademic unacademical unaccelerated unaccent unaccented unaccentuated unaccept unacceptability unacceptable unacceptableness unacceptably unacceptance unacceptant unaccepted unaccessibility unaccessible unaccessibleness unaccessibly unaccessional unaccessory unaccidental unaccidentally unaccidented unacclimated unacclimation unacclimatization unacclimatized unaccommodable unaccommodated unaccommodatedness unaccommodating unaccommodatingly unaccommodatingness unaccompanable unaccompanied unaccompanying unaccomplishable unaccomplished unaccomplishedness unaccord unaccordable unaccordance unaccordant unaccorded unaccording unaccordingly unaccostable unaccosted unaccountability unaccountable unaccountableness unaccountably unaccounted unaccoutered unaccoutred unaccreditated unaccredited unaccrued unaccumulable unaccumulate unaccumulated unaccumulation unaccuracy unaccurate unaccurately unaccurateness unaccursed unaccusable unaccusably unaccuse unaccusing unaccustom unaccustomed unaccustomedly unaccustomedness unachievable unachieved unaching unacidulated unacknowledged unacknowledgedness unacknowledging unacknowledgment unacoustic unacquaint unacquaintable unacquaintance unacquainted unacquaintedly unacquaintedness unacquiescent unacquirable unacquirableness unacquirably unacquired unacquit unacquittable unacquitted unacquittedness unact unactability unactable unacted unacting unactinic unaction unactivated unactive unactively unactiveness unactivity unactorlike unactual unactuality unactually unactuated unacute unacutely unadapt unadaptability unadaptable unadaptableness unadaptably unadapted unadaptedly unadaptedness unadaptive unadd unaddable unadded unaddicted unaddictedness unadditional unaddress unaddressed unadequate unadequately unadequateness unadherence unadherent unadherently unadhesive unadjacent unadjacently unadjectived unadjourned unadjournment unadjudged unadjust unadjustably unadjusted unadjustment unadministered unadmirable unadmire unadmired unadmiring unadmissible unadmissibly unadmission unadmittable unadmittableness unadmittably unadmitted unadmittedly unadmitting unadmonished unadopt unadoptable unadoptably unadopted unadoption unadorable unadoration unadored unadoring unadorn unadornable unadorned unadornedly unadornedness unadornment unadult unadulterate unadulterated unadulteratedly unadulteratedness unadulterately unadulterous unadulterously unadvanced unadvancedly unadvancedness unadvancement unadvancing unadvantaged unadvantageous unadventured unadventuring unadventurous unadventurously unadverse unadversely unadverseness unadvertency unadvertised unadvertisement unadvertising unadvisability unadvisable unadvisableness unadvisably unadvised unadvisedly unadvisedness unadvocated unaerated unaesthetic unaesthetical unafeard unafeared unaffable unaffably unaffected unaffectedly unaffectedness unaffecting unaffectionate unaffectionately unaffectioned unaffianced unaffied unaffiliated unaffiliation unaffirmation unaffirmed unaffixed unafflicted unafflictedly unafflicting unaffliction unaffordable unafforded unaffranchised unaffrighted unaffrightedly unaffronted unafire unafloat unaflow unafraid unaged unaggravated unaggravating unaggregated unaggression unaggressive unaggressively unaggressiveness unaghast unagile unagility unaging unagitated unagitatedly unagitatedness unagitation unagonize unagrarian unagreeable unagreeableness unagreeably unagreed unagreeing unagreement unagricultural unaidable unaided unaidedly unaiding unailing unaimed unaiming unaired unaisled Unakhotana unakin unakite unal Unalachtigo unalarm unalarmed unalarming Unalaska unalcoholized unaldermanly unalert unalertly unalertness unalgebraical unalienable unalienableness unalienably unalienated unalignable unaligned unalike unalimentary unalist unalive unallayable unallayably unallayed unalleged unallegorical unalleviably unalleviated unalleviation unalliable unallied unalliedly unalliedness unallotment unallotted unallow unallowable unallowed unallowedly unallowing unalloyed unallurable unallured unalluring unalluringly unalmsed unalone unaloud unalphabeted unalphabetic unalphabetical unalterability unalterable unalterableness unalterably unalteration unaltered unaltering unalternated unamalgamable unamalgamated unamalgamating unamassed unamazed unamazedly unambiguity unambiguous unambiguously unambiguousness unambition unambitious unambitiously unambitiousness unambrosial unambush unamenability unamenable unamenableness unamenably unamend unamendable unamended unamendedly unamending unamendment unamerced Unami unamiability unamiable unamiableness unamiably unamicable unamicably unamiss unamo unamortization unamortized unample unamplifiable unamplified unamply unamputated unamusable unamusably unamused unamusement unamusing unamusingly unamusive unanalogical unanalogous unanalogously unanalogousness unanalytic unanalytical unanalyzable unanalyzed unanalyzing unanatomizable unanatomized unancestored unancestried unanchor unanchored unanchylosed unancient unaneled unangelic unangelical unangrily unangry unangular unanimalized unanimate unanimated unanimatedly unanimatedness unanimately unanimism unanimist unanimistic unanimistically unanimity unanimous unanimously unanimousness unannealed unannex unannexed unannexedly unannexedness unannihilable unannihilated unannotated unannounced unannoyed unannoying unannullable unannulled unanointed unanswerability unanswerable unanswerableness unanswerably unanswered unanswering unantagonistic unantagonizable unantagonized unantagonizing unanticipated unanticipating unanticipatingly unanticipation unanticipative unantiquated unantiquatedness unantique unantiquity unanxiety unanxious unanxiously unanxiousness unapart unapocryphal unapologetic unapologizing unapostatized unapostolic unapostolical unapostolically unapostrophized unappalled unappareled unapparent unapparently unapparentness unappealable unappealableness unappealably unappealed unappealing unappeasable unappeasableness unappeasably unappeased unappeasedly unappeasedness unappendaged unapperceived unappertaining unappetizing unapplauded unapplauding unapplausive unappliable unappliableness unappliably unapplianced unapplicable unapplicableness unapplicably unapplied unapplying unappoint unappointable unappointableness unappointed unapportioned unapposite unappositely unappraised unappreciable unappreciableness unappreciably unappreciated unappreciating unappreciation unappreciative unappreciatively unappreciativeness unapprehendable unapprehendableness unapprehendably unapprehended unapprehending unapprehensible unapprehensibleness unapprehension unapprehensive unapprehensively unapprehensiveness unapprenticed unapprised unapprisedly unapprisedness unapproachability unapproachable unapproachableness unapproached unapproaching unapprobation unappropriable unappropriate unappropriated unappropriately unappropriateness unappropriation unapprovable unapprovableness unapprovably unapproved unapproving unapprovingly unapproximate unapproximately unaproned unapropos unapt unaptitude unaptly unaptness unarbitrarily unarbitrariness unarbitrary unarbitrated unarch unarchdeacon unarched unarchitectural unarduous unarguable unarguableness unarguably unargued unarguing unargumentative unargumentatively unarisen unarising unaristocratic unaristocratically unarithmetical unarithmetically unark unarm unarmed unarmedly unarmedness unarmored unarmorial unaromatized unarousable unaroused unarousing unarraignable unarraigned unarranged unarray unarrayed unarrestable unarrested unarresting unarrival unarrived unarriving unarrogance unarrogant unarrogating unarted unartful unartfully unartfulness unarticled unarticulate unarticulated unartificial unartificiality unartificially unartistic unartistical unartistically unartistlike unary unascendable unascendableness unascended unascertainable unascertainableness unascertainably unascertained unashamed unashamedly unashamedness unasinous unaskable unasked unasking unasleep unaspersed unasphalted unaspirated unaspiring unaspiringly unaspiringness unassailable unassailableness unassailably unassailed unassailing unassassinated unassaultable unassaulted unassayed unassaying unassembled unassented unassenting unasserted unassertive unassertiveness unassessable unassessableness unassessed unassibilated unassiduous unassignable unassignably unassigned unassimilable unassimilated unassimilating unassimilative unassisted unassisting unassociable unassociably unassociated unassociative unassociativeness unassoiled unassorted unassuageable unassuaged unassuaging unassuetude unassumable unassumed unassuming unassumingly unassumingness unassured unassuredly unassuredness unassuring unasterisk unastonish unastonished unastonishment unastray unathirst unathletically unatmospheric unatonable unatoned unatoning unattach unattachable unattached unattackable unattackableness unattackably unattacked unattainability unattainable unattainableness unattainably unattained unattaining unattainment unattaint unattainted unattaintedly unattempered unattemptable unattempted unattempting unattendance unattendant unattended unattentive unattenuated unattested unattestedness unattire unattired unattractable unattractableness unattracted unattracting unattractive unattractively unattractiveness unattributable unattributed unattuned unau unauctioned unaudible unaudibleness unaudibly unaudienced unaudited unaugmentable unaugmented unauspicious unauspiciously unauspiciousness unaustere unauthentic unauthentical unauthentically unauthenticated unauthenticity unauthorish unauthoritative unauthoritatively unauthoritativeness unauthoritied unauthoritiveness unauthorizable unauthorize unauthorized unauthorizedly unauthorizedness unautomatic unautumnal unavailability unavailable unavailableness unavailably unavailed unavailful unavailing unavailingly unavengeable unavenged unavenging unavenued unaveraged unaverred unaverted unavertible unavertibleness unavertibly unavian unavoidable unavoidableness unavoidably unavoidal unavoided unavoiding unavouchable unavouchableness unavouchably unavouched unavowable unavowableness unavowably unavowed unavowedly unawakable unawakableness unawake unawaked unawakened unawakenedness unawakening unawaking unawardable unawardableness unawardably unawarded unaware unawared unawaredly unawareness unawares unaway unawed unawful unawfully unawkward unawned unaxled unazotized unbackboarded unbacked unbackward unbadged unbaffled unbaffling unbag unbagged unbailable unbailableness unbailed unbain unbait unbaited unbaized unbaked unbalance unbalanceable unbalanceably unbalanced unbalancement unbalancing unbalconied unbale unbalked unballast unballasted unballoted unbandage unbandaged unbanded unbanished unbank unbankable unbankableness unbankably unbanked unbankrupt unbannered unbaptize unbaptized unbar unbarb unbarbarize unbarbarous unbarbed unbarbered unbare unbargained unbark unbarking unbaronet unbarrable unbarred unbarrel unbarreled unbarren unbarrenness unbarricade unbarricaded unbarricadoed unbase unbased unbasedness unbashful unbashfully unbashfulness unbasket unbastardized unbaste unbasted unbastilled unbastinadoed unbated unbathed unbating unbatted unbatten unbatterable unbattered unbattling unbay unbe unbeached unbeaconed unbeaded unbear unbearable unbearableness unbearably unbeard unbearded unbearing unbeast unbeatable unbeatableness unbeatably unbeaten unbeaued unbeauteous unbeauteously unbeauteousness unbeautified unbeautiful unbeautifully unbeautifulness unbeautify unbeavered unbeclogged unbeclouded unbecome unbecoming unbecomingly unbecomingness unbed unbedabbled unbedaggled unbedashed unbedaubed unbedded unbedecked unbedewed unbedimmed unbedinned unbedizened unbedraggled unbefit unbefitting unbefittingly unbefittingness unbefool unbefriend unbefriended unbefringed unbeget unbeggar unbegged unbegilt unbeginning unbeginningly unbeginningness unbegirded unbegirt unbegot unbegotten unbegottenly unbegottenness unbegreased unbegrimed unbegrudged unbeguile unbeguiled unbeguileful unbegun unbehaving unbeheaded unbeheld unbeholdable unbeholden unbeholdenness unbeholding unbehoveful unbehoving unbeing unbejuggled unbeknown unbeknownst unbelied unbelief unbeliefful unbelieffulness unbelievability unbelievable unbelievableness unbelievably unbelieve unbelieved unbeliever unbelieving unbelievingly unbelievingness unbell unbellicose unbelligerent unbelonging unbeloved unbelt unbemoaned unbemourned unbench unbend unbendable unbendableness unbendably unbended unbending unbendingly unbendingness unbendsome unbeneficed unbeneficent unbeneficial unbenefitable unbenefited unbenefiting unbenetted unbenevolence unbenevolent unbenevolently unbenight unbenighted unbenign unbenignant unbenignantly unbenignity unbenignly unbent unbenumb unbenumbed unbequeathable unbequeathed unbereaved unbereft unberouged unberth unberufen unbeseem unbeseeming unbeseemingly unbeseemingness unbeseemly unbeset unbesieged unbesmeared unbesmirched unbesmutted unbesot unbesought unbespeak unbespoke unbespoken unbesprinkled unbestarred unbestowed unbet unbeteared unbethink unbethought unbetide unbetoken unbetray unbetrayed unbetraying unbetrothed unbetterable unbettered unbeveled unbewailed unbewailing unbewilder unbewildered unbewilled unbewitch unbewitched unbewitching unbewrayed unbewritten unbias unbiasable unbiased unbiasedly unbiasedness unbibulous unbickered unbickering unbid unbidable unbiddable unbidden unbigged unbigoted unbilled unbillet unbilleted unbind unbindable unbinding unbiographical unbiological unbirdlike unbirdlimed unbirdly unbirthday unbishop unbishoply unbit unbiting unbitt unbitted unbitten unbitter unblacked unblackened unblade unblamable unblamableness unblamably unblamed unblaming unblanched unblanketed unblasphemed unblasted unblazoned unbleached unbleaching unbled unbleeding unblemishable unblemished unblemishedness unblemishing unblenched unblenching unblenchingly unblendable unblended unblent unbless unblessed unblessedness unblest unblighted unblightedly unblightedness unblind unblindfold unblinking unblinkingly unbliss unblissful unblistered unblithe unblithely unblock unblockaded unblocked unblooded unbloodied unbloodily unbloodiness unbloody unbloom unbloomed unblooming unblossomed unblossoming unblotted unbloused unblown unblued unbluestockingish unbluffed unbluffing unblunder unblundered unblundering unblunted unblurred unblush unblushing unblushingly unblushingness unboarded unboasted unboastful unboastfully unboasting unboat unbodied unbodiliness unbodily unboding unbodkined unbody unbodylike unbog unboggy unbohemianize unboiled unboisterous unbokel unbold unbolden unboldly unboldness unbolled unbolster unbolstered unbolt unbolted unbombast unbondable unbondableness unbonded unbone unboned unbonnet unbonneted unbonny unbooked unbookish unbooklearned unboot unbooted unboraxed unborder unbordered unbored unboring unborn unborne unborough unborrowed unborrowing unbosom unbosomer unbossed unbotanical unbothered unbothering unbottle unbottom unbottomed unbought unbound unboundable unboundableness unboundably unbounded unboundedly unboundedness unboundless unbounteous unbountiful unbountifully unbountifulness unbow unbowable unbowdlerized unbowed unbowel unboweled unbowered unbowing unbowingness unbowled unbowsome unbox unboxed unboy unboyish unboylike unbrace unbraced unbracedness unbracelet unbraceleted unbracing unbragged unbragging unbraid unbraided unbrailed unbrained unbran unbranched unbranching unbrand unbranded unbrandied unbrave unbraved unbravely unbraze unbreachable unbreached unbreaded unbreakable unbreakableness unbreakably unbreakfasted unbreaking unbreast unbreath unbreathable unbreathableness unbreathed unbreathing unbred unbreech unbreeched unbreezy unbrent unbrewed unbribable unbribableness unbribably unbribed unbribing unbrick unbridegroomlike unbridgeable unbridged unbridle unbridled unbridledly unbridledness unbridling unbrief unbriefed unbriefly unbright unbrightened unbrilliant unbrimming unbrined unbrittle unbroached unbroad unbroadcasted unbroidered unbroiled unbroke unbroken unbrokenly unbrokenness unbronzed unbrooch unbrooded unbrookable unbrookably unbrothered unbrotherlike unbrotherliness unbrotherly unbrought unbrown unbrowned unbruised unbrushed unbrutalize unbrutalized unbrute unbrutelike unbrutify unbrutize unbuckle unbuckramed unbud unbudded unbudgeability unbudgeable unbudgeableness unbudgeably unbudged unbudgeted unbudging unbuffed unbuffered unbuffeted unbuild unbuilded unbuilt unbulky unbulled unbulletined unbumped unbumptious unbunched unbundle unbundled unbung unbungling unbuoyant unbuoyed unburden unburdened unburdenment unburdensome unburdensomeness unburgessed unburiable unburial unburied unburlesqued unburly unburn unburnable unburned unburning unburnished unburnt unburrow unburrowed unburst unburstable unburstableness unburthen unbury unbush unbusied unbusily unbusiness unbusinesslike unbusk unbuskin unbuskined unbustling unbusy unbutchered unbutcherlike unbuttered unbutton unbuttoned unbuttonment unbuttressed unbuxom unbuxomly unbuxomness unbuyable unbuyableness unbuying unca uncabined uncabled uncadenced uncage uncaged uncake uncalcareous uncalcified uncalcined uncalculable uncalculableness uncalculably uncalculated uncalculating uncalculatingly uncalendered uncalk uncalked uncall uncalled uncallow uncallower uncalm uncalmed uncalmly uncalumniated uncambered uncamerated uncamouflaged uncanceled uncancellable uncancelled uncandid uncandidly uncandidness uncandied uncandor uncaned uncankered uncanned uncannily uncanniness uncanny uncanonic uncanonical uncanonically uncanonicalness uncanonize uncanonized uncanopied uncantoned uncantonized uncanvassably uncanvassed uncap uncapable uncapableness uncapably uncapacious uncapacitate uncaparisoned uncapitalized uncapped uncapper uncapsizable uncapsized uncaptained uncaptioned uncaptious uncaptiously uncaptivate uncaptivated uncaptivating uncaptived uncapturable uncaptured uncarbonated uncarboned uncarbureted uncarded uncardinal uncardinally uncareful uncarefully uncarefulness uncaressed uncargoed Uncaria uncaricatured uncaring uncarnate uncarnivorous uncaroled uncarpentered uncarpeted uncarriageable uncarried uncart uncarted uncartooned uncarved uncase uncased uncasemated uncask uncasked uncasketed uncasque uncassock uncast uncaste uncastigated uncastle uncastled uncastrated uncasual uncatalogued uncatchable uncate uncatechised uncatechisedness uncatechized uncatechizedness uncategorized uncathedraled uncatholcity uncatholic uncatholical uncatholicalness uncatholicize uncatholicly uncaucusable uncaught uncausatively uncaused uncauterized uncautious uncautiously uncautiousness uncavalier uncavalierly uncave unceasable unceased unceasing unceasingly unceasingness unceded unceiled unceilinged uncelebrated uncelebrating uncelestial uncelestialized uncellar uncement uncemented uncementing uncensorable uncensored uncensorious uncensoriously uncensoriousness uncensurable uncensured uncensuring uncenter uncentered uncentral uncentrality uncentrally uncentred uncentury uncereclothed unceremented unceremonial unceremonious unceremoniously unceremoniousness uncertain uncertainly uncertainness uncertainty uncertifiable uncertifiableness uncertificated uncertified uncertifying uncertitude uncessant uncessantly uncessantness unchafed unchain unchainable unchained unchair unchaired unchalked unchallengeable unchallengeableness unchallengeably unchallenged unchallenging unchambered unchamfered unchampioned unchance unchancellor unchancy unchange unchangeability unchangeable unchangeableness unchangeably unchanged unchangedness unchangeful unchangefulness unchanging unchangingly unchangingness unchanneled unchannelled unchanted unchaperoned unchaplain unchapleted unchapter unchaptered uncharacter uncharactered uncharacteristic uncharacteristically uncharacterized uncharge unchargeable uncharged uncharging uncharily unchariness unchariot uncharitable uncharitableness uncharitably uncharity uncharm uncharmable uncharmed uncharming uncharnel uncharred uncharted unchartered unchary unchased unchaste unchastely unchastened unchasteness unchastisable unchastised unchastising unchastity unchatteled unchauffeured unchawed uncheat uncheated uncheating uncheck uncheckable unchecked uncheckered uncheerable uncheered uncheerful uncheerfully uncheerfulness uncheerily uncheeriness uncheering uncheery unchemical unchemically uncherished uncherishing unchested unchevroned unchewable unchewableness unchewed unchid unchidden unchided unchiding unchidingly unchild unchildish unchildishly unchildishness unchildlike unchilled unchiming unchinked unchipped unchiseled unchiselled unchivalric unchivalrous unchivalrously unchivalrousness unchivalry unchloridized unchoicely unchokable unchoked uncholeric unchoosable unchopped unchoral unchorded unchosen unchrisom unchristen unchristened unchristian unchristianity unchristianize unchristianized unchristianlike unchristianly unchristianness unchronicled unchronological unchronologically unchurch unchurched unchurchlike unchurchly unchurn unci uncia uncial uncialize uncially uncicatrized unciferous unciform unciliated uncinal Uncinaria uncinariasis uncinariatic Uncinata uncinate uncinated uncinatum uncinch uncinct uncinctured uncini Uncinula uncinus uncipher uncircular uncircularized uncirculated uncircumcised uncircumcisedness uncircumcision uncircumlocutory uncircumscribable uncircumscribed uncircumscribedness uncircumscript uncircumscriptible uncircumscription uncircumspect uncircumspection uncircumspectly uncircumspectness uncircumstanced uncircumstantial uncirostrate uncite uncited uncitied uncitizen uncitizenlike uncitizenly uncity uncivic uncivil uncivilish uncivility uncivilizable uncivilization uncivilize uncivilized uncivilizedly uncivilizedness uncivilly uncivilness unclad unclaimed unclaiming unclamorous unclamp unclamped unclarified unclarifying unclarity unclashing unclasp unclasped unclassable unclassableness unclassably unclassed unclassible unclassical unclassically unclassifiable unclassifiableness unclassification unclassified unclassify unclassifying unclawed unclay unclayed uncle unclead unclean uncleanable uncleaned uncleanlily uncleanliness uncleanly uncleanness uncleansable uncleanse uncleansed uncleansedness unclear uncleared unclearing uncleavable uncleave uncledom uncleft unclehood unclement unclemently unclementness unclench unclergy unclergyable unclerical unclericalize unclerically unclericalness unclerklike unclerkly uncleship unclever uncleverly uncleverness unclew unclick uncliented unclify unclimaxed unclimb unclimbable unclimbableness unclimbably unclimbed unclimbing unclinch uncling unclinical unclip unclipped unclipper uncloak uncloakable uncloaked unclog unclogged uncloister uncloistered uncloistral unclosable unclose unclosed uncloseted unclothe unclothed unclothedly unclothedness unclotted uncloud unclouded uncloudedly uncloudedness uncloudy unclout uncloven uncloyable uncloyed uncloying unclub unclubbable unclubby unclustered unclustering unclutch unclutchable unclutched unclutter uncluttered unco uncoach uncoachable uncoachableness uncoached uncoacted uncoagulable uncoagulated uncoagulating uncoat uncoated uncoatedness uncoaxable uncoaxed uncoaxing uncock uncocked uncockneyfy uncocted uncodded uncoddled uncoded uncodified uncoerced uncoffer uncoffin uncoffined uncoffle uncogent uncogged uncogitable uncognizable uncognizant uncognized uncognoscibility uncognoscible uncoguidism uncoherent uncoherently uncoherentness uncohesive uncoif uncoifed uncoil uncoiled uncoin uncoined uncoked uncoking uncollapsed uncollapsible uncollar uncollared uncollated uncollatedness uncollected uncollectedly uncollectedness uncollectible uncollectibleness uncollectibly uncolleged uncollegian uncollegiate uncolloquial uncolloquially uncolonellike uncolonial uncolonize uncolonized uncolorable uncolorably uncolored uncoloredly uncoloredness uncoloured uncolouredly uncolouredness uncolt uncoly uncombable uncombatable uncombated uncombed uncombinable uncombinableness uncombinably uncombine uncombined uncombining uncombiningness uncombustible uncome uncomelily uncomeliness uncomely uncomfort uncomfortable uncomfortableness uncomfortably uncomforted uncomforting uncomfy uncomic uncommanded uncommandedness uncommanderlike uncommemorated uncommenced uncommendable uncommendableness uncommendably uncommended uncommensurability uncommensurable uncommensurableness uncommensurate uncommented uncommenting uncommerciable uncommercial uncommercially uncommercialness uncommingled uncomminuted uncommiserated uncommiserating uncommissioned uncommitted uncommitting uncommixed uncommodious uncommodiously uncommodiousness uncommon uncommonable uncommonly uncommonness uncommonplace uncommunicable uncommunicableness uncommunicably uncommunicated uncommunicating uncommunicative uncommunicatively uncommunicativeness uncommutable uncommutative uncommuted uncompact uncompacted Uncompahgre uncompahgrite uncompaniable uncompanied uncompanioned uncomparable uncomparably uncompared uncompass uncompassable uncompassed uncompassion uncompassionate uncompassionated uncompassionately uncompassionateness uncompassionating uncompassioned uncompatible uncompatibly uncompellable uncompelled uncompelling uncompensable uncompensated uncompetent uncompetitive uncompiled uncomplacent uncomplained uncomplaining uncomplainingly uncomplainingness uncomplaint uncomplaisance uncomplaisant uncomplaisantly uncomplemental uncompletable uncomplete uncompleted uncompletely uncompleteness uncomplex uncompliability uncompliable uncompliableness uncompliance uncompliant uncomplicated uncomplimentary uncomplimented uncomplimenting uncomplying uncomposable uncomposeable uncomposed uncompoundable uncompounded uncompoundedly uncompoundedness uncompounding uncomprehended uncomprehending uncomprehendingly uncomprehendingness uncomprehensible uncomprehension uncomprehensive uncomprehensively uncomprehensiveness uncompressed uncompressible uncomprised uncomprising uncomprisingly uncompromised uncompromising uncompromisingly uncompromisingness uncompulsive uncompulsory uncomputable uncomputableness uncomputably uncomputed uncomraded unconcatenated unconcatenating unconcealable unconcealableness unconcealably unconcealed unconcealing unconcealingly unconcealment unconceded unconceited unconceivable unconceivableness unconceivably unconceived unconceiving unconcern unconcerned unconcernedly unconcernedness unconcerning unconcernment unconcertable unconcerted unconcertedly unconcertedness unconcessible unconciliable unconciliated unconciliatedness unconciliating unconciliatory unconcludable unconcluded unconcluding unconcludingness unconclusive unconclusively unconclusiveness unconcocted unconcordant unconcrete unconcreted unconcurrent unconcurring uncondemnable uncondemned uncondensable uncondensableness uncondensed uncondensing uncondescending uncondescension uncondition unconditional unconditionality unconditionally unconditionalness unconditionate unconditionated unconditionately unconditioned unconditionedly unconditionedness uncondoled uncondoling unconducing unconducive unconduciveness unconducted unconductive unconductiveness unconfected unconfederated unconferred unconfess unconfessed unconfessing unconfided unconfidence unconfident unconfidential unconfidentialness unconfidently unconfiding unconfinable unconfine unconfined unconfinedly unconfinedness unconfinement unconfining unconfirm unconfirmative unconfirmed unconfirming unconfiscable unconfiscated unconflicting unconflictingly unconflictingness unconformability unconformable unconformableness unconformably unconformed unconformedly unconforming unconformist unconformity unconfound unconfounded unconfoundedly unconfrontable unconfronted unconfusable unconfusably unconfused unconfusedly unconfutable unconfuted unconfuting uncongeal uncongealable uncongealed uncongenial uncongeniality uncongenially uncongested unconglobated unconglomerated unconglutinated uncongratulate uncongratulated uncongratulating uncongregated uncongregational uncongressional uncongruous unconjecturable unconjectured unconjoined unconjugal unconjugated unconjunctive unconjured unconnected unconnectedly unconnectedness unconned unconnived unconniving unconquerable unconquerableness unconquerably unconquered unconscienced unconscient unconscientious unconscientiously unconscientiousness unconscionable unconscionableness unconscionably unconscious unconsciously unconsciousness unconsecrate unconsecrated unconsecratedly unconsecratedness unconsecration unconsecutive unconsent unconsentaneous unconsented unconsenting unconsequential unconsequentially unconsequentialness unconservable unconservative unconserved unconserving unconsiderable unconsiderate unconsiderately unconsiderateness unconsidered unconsideredly unconsideredness unconsidering unconsideringly unconsignable unconsigned unconsistent unconsociable unconsociated unconsolable unconsolably unconsolatory unconsoled unconsolidated unconsolidating unconsolidation unconsoling unconsonancy unconsonant unconsonantly unconsonous unconspicuous unconspicuously unconspicuousness unconspired unconspiring unconspiringly unconspiringness unconstancy unconstant unconstantly unconstantness unconstellated unconstipated unconstituted unconstitutional unconstitutionalism unconstitutionality unconstitutionally unconstrainable unconstrained unconstrainedly unconstrainedness unconstraining unconstraint unconstricted unconstruable unconstructed unconstructive unconstructural unconstrued unconsular unconsult unconsultable unconsulted unconsulting unconsumable unconsumed unconsuming unconsummate unconsummated unconsumptive uncontagious uncontainable uncontainableness uncontainably uncontained uncontaminable uncontaminate uncontaminated uncontemned uncontemnedly uncontemplated uncontemporaneous uncontemporary uncontemptuous uncontended uncontending uncontent uncontentable uncontented uncontentedly uncontentedness uncontenting uncontentingness uncontentious uncontentiously uncontentiousness uncontestable uncontestableness uncontestably uncontested uncontestedly uncontestedness uncontinence uncontinent uncontinental uncontinented uncontinently uncontinual uncontinued uncontinuous uncontorted uncontract uncontracted uncontractedness uncontractile uncontradictable uncontradictableness uncontradictably uncontradicted uncontradictedly uncontradictious uncontradictory uncontrastable uncontrasted uncontrasting uncontributed uncontributing uncontributory uncontrite uncontrived uncontriving uncontrol uncontrollability uncontrollable uncontrollableness uncontrollably uncontrolled uncontrolledly uncontrolledness uncontrolling uncontroversial uncontroversially uncontrovertable uncontrovertableness uncontrovertably uncontroverted uncontrovertedly uncontrovertible uncontrovertibleness uncontrovertibly unconvenable unconvened unconvenience unconvenient unconveniently unconventional unconventionalism unconventionality unconventionalize unconventionally unconventioned unconversable unconversableness unconversably unconversant unconversational unconversion unconvert unconverted unconvertedly unconvertedness unconvertibility unconvertible unconveyable unconveyed unconvicted unconvicting unconvince unconvinced unconvincedly unconvincedness unconvincibility unconvincible unconvincing unconvincingly unconvincingness unconvoluted unconvoyed unconvulsed uncookable uncooked uncooled uncoop uncooped uncoopered uncooping uncope uncopiable uncopied uncopious uncopyrighted uncoquettish uncoquettishly uncord uncorded uncordial uncordiality uncordially uncording uncore uncored uncork uncorked uncorker uncorking uncorned uncorner uncoronated uncoroneted uncorporal uncorpulent uncorrect uncorrectable uncorrected uncorrectible uncorrectly uncorrectness uncorrelated uncorrespondency uncorrespondent uncorresponding uncorrigible uncorrigibleness uncorrigibly uncorroborated uncorroded uncorrugated uncorrupt uncorrupted uncorruptedly uncorruptedness uncorruptibility uncorruptible uncorruptibleness uncorruptibly uncorrupting uncorruption uncorruptive uncorruptly uncorruptness uncorseted uncosseted uncost uncostliness uncostly uncostumed uncottoned uncouch uncouched uncouching uncounselable uncounseled uncounsellable uncounselled uncountable uncountableness uncountably uncounted uncountenanced uncounteracted uncounterbalanced uncounterfeit uncounterfeited uncountermandable uncountermanded uncountervailed uncountess uncountrified uncouple uncoupled uncoupler uncourageous uncoursed uncourted uncourteous uncourteously uncourteousness uncourtierlike uncourting uncourtlike uncourtliness uncourtly uncous uncousinly uncouth uncouthie uncouthly uncouthness uncouthsome uncovenant uncovenanted uncover uncoverable uncovered uncoveredly uncoveted uncoveting uncovetingly uncovetous uncowed uncowl uncoy uncracked uncradled uncraftily uncraftiness uncrafty uncram uncramp uncramped uncrampedness uncranked uncrannied uncrated uncravatted uncraven uncraving uncravingly uncrazed uncream uncreased uncreatability uncreatable uncreatableness uncreate uncreated uncreatedness uncreating uncreation uncreative uncreativeness uncreaturely uncredentialed uncredentialled uncredibility uncredible uncredibly uncreditable uncreditableness uncreditably uncredited uncrediting uncredulous uncreeping uncreosoted uncrest uncrested uncrevassed uncrib uncried uncrime uncriminal uncriminally uncrinkle uncrinkled uncrinkling uncrippled uncrisp uncritical uncritically uncriticisable uncriticised uncriticising uncriticisingly uncriticism uncriticizable uncriticized uncriticizing uncriticizingly uncrochety uncrook uncrooked uncrooking uncropped uncropt uncross uncrossable uncrossableness uncrossed uncrossexaminable uncrossexamined uncrossly uncrowded uncrown uncrowned uncrowning uncrucified uncrudded uncrude uncruel uncrumbled uncrumple uncrumpling uncrushable uncrushed uncrusted uncrying uncrystaled uncrystalled uncrystalline uncrystallizability uncrystallizable uncrystallized unction unctional unctioneer unctionless unctious unctiousness unctorium unctuose unctuosity unctuous unctuously unctuousness uncubbed uncubic uncuckold uncuckolded uncudgelled uncuffed uncular unculled uncultivability uncultivable uncultivate uncultivated uncultivation unculturable unculture uncultured uncumber uncumbered uncumbrous uncunning uncunningly uncunningness uncupped uncurable uncurableness uncurably uncurb uncurbable uncurbed uncurbedly uncurbing uncurd uncurdled uncurdling uncured uncurious uncuriously uncurl uncurled uncurling uncurrent uncurrently uncurrentness uncurricularized uncurried uncurse uncursed uncursing uncurst uncurtailed uncurtain uncurtained uncus uncushioned uncusped uncustomable uncustomarily uncustomariness uncustomary uncustomed uncut uncuth uncuticulate uncuttable uncynical uncynically uncypress undabbled undaggled undaily undaintiness undainty undallying undam undamageable undamaged undamaging undamasked undammed undamming undamn undamped undancing undandiacal undandled undangered undangerous undangerousness undared undaring undark undarken undarkened undarned undashed undatable undate undateable undated undatedness undaub undaubed undaughter undaughterliness undaughterly undauntable undaunted undauntedly undauntedness undaunting undawned undawning undazed undazing undazzle undazzled undazzling unde undead undeadened undeaf undealable undealt undean undear undebarred undebased undebatable undebated undebating undebauched undebilitated undebilitating undecagon undecanaphthene undecane undecatoic undecayable undecayableness undecayed undecayedness undecaying undeceased undeceitful undeceivable undeceivableness undeceivably undeceive undeceived undeceiver undeceiving undecency undecennary undecennial undecent undecently undeception undeceptious undeceptitious undeceptive undecidable undecide undecided undecidedly undecidedness undeciding undecimal undeciman undecimole undecipher undecipherability undecipherable undecipherably undeciphered undecision undecisive undecisively undecisiveness undeck undecked undeclaimed undeclaiming undeclamatory undeclarable undeclare undeclared undeclinable undeclinableness undeclinably undeclined undeclining undecocted undecoic undecolic undecomposable undecomposed undecompounded undecorated undecorative undecorous undecorously undecorousness undecorticated undecoyed undecreased undecreasing undecree undecreed undecried undecyl undecylenic undecylic undedicate undedicated undeducible undeducted undeeded undeemed undeemous undeemously undeep undefaceable undefaced undefalcated undefamed undefaming undefatigable undefaulted undefaulting undefeasible undefeat undefeatable undefeated undefeatedly undefeatedness undefecated undefectible undefective undefectiveness undefendable undefendableness undefendably undefended undefending undefense undefensed undefensible undeferential undeferentially undeferred undefiant undeficient undefied undefilable undefiled undefiledly undefiledness undefinable undefinableness undefinably undefine undefined undefinedly undefinedness undeflected undeflowered undeformed undeformedness undefrauded undefrayed undeft undegeneracy undegenerate undegenerated undegenerating undegraded undegrading undeification undeified undeify undeistical undejected undelated undelayable undelayed undelayedly undelaying undelayingly undelectable undelectably undelegated undeleted undeliberate undeliberated undeliberately undeliberateness undeliberating undeliberatingly undeliberative undeliberativeness undelible undelicious undelight undelighted undelightful undelightfully undelightfulness undelighting undelightsome undelimited undelineated undeliverable undeliverableness undelivered undelivery undeludable undelude undeluded undeluding undeluged undelusive undelusively undelve undelved undelylene undemagnetizable undemanded undemised undemocratic undemocratically undemocratize undemolishable undemolished undemonstrable undemonstrably undemonstratable undemonstrated undemonstrative undemonstratively undemonstrativeness undemure undemurring unden undeniable undeniableness undeniably undenied undeniedly undenizened undenominated undenominational undenominationalism undenominationalist undenominationalize undenominationally undenoted undenounced undenuded undepartableness undepartably undeparted undeparting undependable undependableness undependably undependent undepending undephlegmated undepicted undepleted undeplored undeported undeposable undeposed undeposited undepraved undepravedness undeprecated undepreciated undepressed undepressible undepressing undeprivable undeprived undepurated undeputed under underabyss underaccident underaccommodated underact underacted underacting underaction underactor underadjustment underadmiral underadventurer underage underagency underagent underagitation underaid underaim underair underalderman underanged underarch underargue underarm underaverage underback underbailiff underbake underbalance underballast underbank underbarber underbarring underbasal underbeadle underbeak underbeam underbear underbearer underbearing underbeat underbeaten underbed underbelly underbeveling underbid underbidder underbill underbillow underbishop underbishopric underbit underbite underbitted underbitten underboard underboated underbodice underbody underboil underboom underborn underborne underbottom underbough underbought underbound underbowed underbowser underbox underboy underbrace underbraced underbranch underbreath underbreathing underbred underbreeding underbrew underbridge underbrigadier underbright underbrim underbrush underbubble underbud underbuild underbuilder underbuilding underbuoy underburn underburned underburnt underbursar underbury underbush underbutler underbuy undercanopy undercanvass undercap undercapitaled undercapitalization undercapitalize undercaptain undercarder undercarriage undercarry undercarter undercarve undercarved undercase undercasing undercast undercause underceiling undercellar undercellarer underchamber underchamberlain underchancellor underchanter underchap undercharge undercharged underchief underchime underchin underchord underchurched undercircle undercitizen underclad underclass underclassman underclay underclearer underclerk underclerkship undercliff underclift undercloak undercloth underclothe underclothed underclothes underclothing underclub underclutch undercoachman undercoat undercoated undercoater undercoating undercollector undercolor undercolored undercoloring undercommander undercomment undercompounded underconcerned undercondition underconsciousness underconstable underconsume underconsumption undercook undercool undercooper undercorrect undercountenance undercourse undercourtier undercover undercovering undercovert undercrawl undercreep undercrest undercrier undercroft undercrop undercrust undercry undercrypt undercup undercurl undercurrent undercurve undercut undercutter undercutting underdauber underdeacon underdead underdebauchee underdeck underdepth underdevelop underdevelopment underdevil underdialogue underdig underdip underdish underdistinction underdistributor underditch underdive underdo underdoctor underdoer underdog underdoing underdone underdose underdot underdown underdraft underdrag underdrain underdrainage underdrainer underdraught underdraw underdrawers underdrawn underdress underdressed underdrift underdrive underdriven underdrudgery underdrumming underdry underdunged underearth undereat undereaten underedge undereducated underemployment underengraver underenter underer underescheator underestimate underestimation underexcited underexercise underexpose underexposure undereye underface underfaction underfactor underfaculty underfalconer underfall underfarmer underfeathering underfeature underfed underfeed underfeeder underfeeling underfeet underfellow underfiend underfill underfilling underfinance underfind underfire underfitting underflame underflannel underfleece underflood underfloor underflooring underflow underfold underfolded underfong underfoot underfootage underfootman underforebody underform underfortify underframe underframework underframing underfreight underfrequency underfringe underfrock underfur underfurnish underfurnisher underfurrow undergabble undergamekeeper undergaoler undergarb undergardener undergarment undergarnish undergauge undergear undergeneral undergentleman undergird undergirder undergirding undergirdle undergirth underglaze undergloom underglow undergnaw undergo undergod undergoer undergoing undergore undergoverness undergovernment undergovernor undergown undergrad undergrade undergraduate undergraduatedom undergraduateness undergraduateship undergraduatish undergraduette undergraining undergrass undergreen undergrieve undergroan underground undergrounder undergroundling undergrove undergrow undergrowl undergrown undergrowth undergrub underguard underguardian undergunner underhabit underhammer underhand underhanded underhandedly underhandedness underhang underhanging underhangman underhatch underhead underheat underheaven underhelp underhew underhid underhill underhint underhistory underhive underhold underhole underhonest underhorse underhorsed underhousemaid underhum underhung underided underinstrument underisive underissue underivable underivative underived underivedly underivedness underjacket underjailer underjanitor underjaw underjawed underjobbing underjudge underjungle underkeel underkeeper underkind underking underkingdom underlaborer underlaid underlain underland underlanguaged underlap underlapper underlash underlaundress underlawyer underlay underlayer underlaying underleaf underlease underleather underlegate underlessee underlet underletter underlevel underlever underlid underlie underlier underlieutenant underlife underlift underlight underliking underlimbed underlimit underline underlineation underlineman underlinement underlinen underliner underling underlining underlip underlive underload underlock underlodging underloft underlook underlooker underlout underlunged underly underlye underlying undermade undermaid undermaker underman undermanager undermanned undermanning undermark undermarshal undermarshalman undermasted undermaster undermatch undermatched undermate undermath undermeal undermeaning undermeasure undermediator undermelody undermentioned undermiller undermimic underminable undermine underminer undermining underminingly underminister underministry undermist undermoated undermoney undermoral undermost undermotion undermount undermountain undermusic undermuslin undern undername undernatural underneath underness underniceness undernote undernoted undernourish undernourished undernourishment undernsong underntide underntime undernurse undernutrition underoccupied underofficer underofficered underofficial underogating underogatory underopinion underorb underorganization underorseman underoverlooker underoxidize underpacking underpaid underpain underpainting underpan underpants underparticipation underpartner underpass underpassion underpay underpayment underpeep underpeer underpen underpeopled underpetticoat underpetticoated underpick underpier underpilaster underpile underpin underpinner underpinning underpitch underpitched underplain underplan underplant underplate underplay underplot underplotter underply underpoint underpole underpopulate underpopulation underporch underporter underpose underpossessor underpot underpower underpraise underprefect underprentice underpresence underpresser underpressure underprice underpriest underprincipal underprint underprior underprivileged underprize underproduce underproduction underproductive underproficient underprompt underprompter underproof underprop underproportion underproportioned underproposition underpropped underpropper underpropping underprospect underpry underpuke underqualified underqueen underquote underranger underrate underratement underrating underreach underread underreader underrealize underrealm underream underreamer underreceiver underreckon underrecompense underregion underregistration underrent underrented underrenting underrepresent underrepresentation underrespected underriddle underriding underrigged underring underripe underripened underriver underroarer underroast underrobe underrogue underroll underroller underroof underroom underroot underrooted underrower underrule underruler underrun underrunning undersacristan undersailed undersally undersap undersatisfaction undersaturate undersaturation undersavior undersaw undersawyer underscale underscheme underschool underscoop underscore underscribe underscript underscrub underscrupulous undersea underseam underseaman undersearch underseas underseated undersecretary undersecretaryship undersect undersee underseeded underseedman undersell underseller underselling undersense undersequence underservant underserve underservice underset undersetter undersetting undersettle undersettler undersettling undersexton undershapen undersharp undersheathing undershepherd undersheriff undersheriffry undersheriffship undersheriffwick undershield undershine undershining undershire undershirt undershoe undershoot undershore undershorten undershot undershrievalty undershrieve undershrievery undershrub undershrubbiness undershrubby undershunter undershut underside undersight undersighted undersign undersignalman undersigner undersill undersinging undersitter undersize undersized underskin underskirt undersky undersleep undersleeve underslip underslope undersluice underslung undersneer undersociety undersoil undersole undersomething undersong undersorcerer undersort undersoul undersound undersovereign undersow underspar undersparred underspecies underspecified underspend undersphere underspin underspinner undersplice underspore underspread underspring undersprout underspurleather undersquare understaff understage understain understairs understamp understand understandability understandable understandableness understandably understander understanding understandingly understandingness understate understatement understay understeer understem understep understeward understewardship understimulus understock understocking understood understory understrain understrap understrapper understrapping understratum understream understress understrew understride understriding understrife understrike understring understroke understrung understudy understuff understuffing undersuck undersuggestion undersuit undersupply undersupport undersurface underswain underswamp undersward underswearer undersweat undersweep underswell undertakable undertake undertakement undertaker undertakerish undertakerlike undertakerly undertakery undertaking undertakingly undertalk undertapster undertaxed underteacher underteamed underteller undertenancy undertenant undertenter undertenure underterrestrial undertest underthane underthaw underthief underthing underthink underthirst underthought underthroating underthrob underthrust undertide undertided undertie undertime undertimed undertint undertitle undertone undertoned undertook undertow undertrader undertrained undertread undertreasurer undertreat undertribe undertrick undertrodden undertruck undertrump undertruss undertub undertune undertunic underturf underturn underturnkey undertutor undertwig undertype undertyrant underusher undervaluation undervalue undervaluement undervaluer undervaluing undervaluinglike undervaluingly undervalve undervassal undervaulted undervaulting undervegetation underventilation underverse undervest undervicar underviewer undervillain undervinedresser undervitalized undervocabularied undervoice undervoltage underwage underwaist underwaistcoat underwalk underward underwarden underwarmth underwarp underwash underwatch underwatcher underwater underwave underway underweapon underwear underweft underweigh underweight underweighted underwent underwheel underwhistle underwind underwing underwit underwitch underwitted underwood underwooded underwork underworker underworking underworkman underworld underwrap underwrite underwriter underwriting underwrought underyield underyoke underzeal underzealot undescendable undescended undescendible undescribable undescribably undescribed undescried undescript undescriptive undescrying undesert undeserted undeserting undeserve undeserved undeservedly undeservedness undeserver undeserving undeservingly undeservingness undesign undesignated undesigned undesignedly undesignedness undesigning undesigningly undesigningness undesirability undesirable undesirableness undesirably undesire undesired undesiredly undesiring undesirous undesirously undesirousness undesisting undespaired undespairing undespairingly undespatched undespised undespising undespoiled undespondent undespondently undesponding undespotic undestined undestroyable undestroyed undestructible undestructive undetachable undetached undetailed undetainable undetained undetectable undetected undetectible undeteriorated undeteriorating undeterminable undeterminate undetermination undetermined undetermining undeterred undeterring undetested undetesting undethronable undethroned undetracting undetractingly undetrimental undevelopable undeveloped undeveloping undeviated undeviating undeviatingly undevil undevious undeviously undevisable undevised undevoted undevotion undevotional undevoured undevout undevoutly undevoutness undewed undewy undexterous undexterously undextrous undextrously undiademed undiagnosable undiagnosed undialed undialyzed undiametric undiamonded undiapered undiaphanous undiatonic undichotomous undictated undid undidactic undies undieted undifferenced undifferent undifferential undifferentiated undifficult undiffident undiffracted undiffused undiffusible undiffusive undig undigenous undigest undigestable undigested undigestible undigesting undigestion undigged undight undighted undigitated undignified undignifiedly undignifiedness undignify undiked undilapidated undilatable undilated undilatory undiligent undiligently undilute undiluted undilution undiluvial undim undimensioned undimerous undimidiate undiminishable undiminishableness undiminishably undiminished undiminishing undiminutive undimmed undimpled Undine undine undined undinted undiocesed undiphthongize undiplomaed undiplomatic undipped undirect undirected undirectional undirectly undirectness undirk undisabled undisadvantageous undisagreeable undisappearing undisappointable undisappointed undisappointing undisarmed undisastrous undisbanded undisbarred undisburdened undisbursed undiscardable undiscarded undiscerned undiscernedly undiscernible undiscernibleness undiscernibly undiscerning undiscerningly undischargeable undischarged undiscipled undisciplinable undiscipline undisciplined undisciplinedness undisclaimed undisclosed undiscolored undiscomfitable undiscomfited undiscomposed undisconcerted undisconnected undiscontinued undiscordant undiscording undiscounted undiscourageable undiscouraged undiscouraging undiscoursed undiscoverable undiscoverableness undiscoverably undiscovered undiscreditable undiscredited undiscreet undiscreetly undiscreetness undiscretion undiscriminated undiscriminating undiscriminatingly undiscriminatingness undiscriminative undiscursive undiscussable undiscussed undisdained undisdaining undiseased undisestablished undisfigured undisfranchised undisfulfilled undisgorged undisgraced undisguisable undisguise undisguised undisguisedly undisguisedness undisgusted undisheartened undished undisheveled undishonored undisillusioned undisinfected undisinheritable undisinherited undisintegrated undisinterested undisjoined undisjointed undisliked undislocated undislodgeable undislodged undismantled undismay undismayable undismayed undismayedly undismembered undismissed undismounted undisobedient undisobeyed undisobliging undisordered undisorderly undisorganized undisowned undisowning undisparaged undisparity undispassionate undispatchable undispatched undispatching undispellable undispelled undispensable undispensed undispensing undispersed undispersing undisplaced undisplanted undisplay undisplayable undisplayed undisplaying undispleased undispose undisposed undisposedness undisprivacied undisprovable undisproved undisproving undisputable undisputableness undisputably undisputatious undisputatiously undisputed undisputedly undisputedness undisputing undisqualifiable undisqualified undisquieted undisreputable undisrobed undisrupted undissected undissembled undissembledness undissembling undissemblingly undisseminated undissenting undissevered undissimulated undissipated undissociated undissoluble undissolute undissolvable undissolved undissolving undissonant undissuadable undissuadably undissuade undistanced undistant undistantly undistasted undistasteful undistempered undistend undistended undistilled undistinct undistinctive undistinctly undistinctness undistinguish undistinguishable undistinguishableness undistinguishably undistinguished undistinguishing undistinguishingly undistorted undistorting undistracted undistractedly undistractedness undistracting undistractingly undistrained undistraught undistress undistressed undistributed undistrusted undistrustful undisturbable undisturbance undisturbed undisturbedly undisturbedness undisturbing undisturbingly unditched undithyrambic undittoed undiuretic undiurnal undivable undivergent undiverging undiverse undiversified undiverted undivertible undivertibly undiverting undivested undivestedly undividable undividableness undividably undivided undividedly undividedness undividing undivinable undivined undivinelike undivinely undivining undivisible undivisive undivorceable undivorced undivorcedness undivorcing undivulged undivulging undizened undizzied undo undoable undock undocked undoctor undoctored undoctrinal undoctrined undocumentary undocumented undocumentedness undodged undoer undoffed undog undogmatic undogmatical undoing undoingness undolled undolorous undomed undomestic undomesticate undomesticated undomestication undomicilable undomiciled undominated undomineering undominical undominoed undon undonated undonating undone undoneness undonkey undonnish undoomed undoped undormant undose undosed undoting undotted undouble undoubled undoubtable undoubtableness undoubtably undoubted undoubtedly undoubtedness undoubtful undoubtfully undoubtfulness undoubting undoubtingly undoubtingness undouched undoughty undovelike undoweled undowered undowned undowny undrab undraftable undrafted undrag undragoned undragooned undrainable undrained undramatic undramatical undramatically undramatizable undramatized undrape undraped undraperied undraw undrawable undrawn undreaded undreadful undreadfully undreading undreamed undreaming undreamlike undreamt undreamy undredged undreggy undrenched undress undressed undried undrillable undrilled undrinkable undrinkableness undrinkably undrinking undripping undrivable undrivableness undriven undronelike undrooping undropped undropsical undrossy undrowned undrubbed undrugged undrunk undrunken undry undryable undrying undualize undub undubbed undubitable undubitably unducal unduchess undue unduelling undueness undug unduke undulant undular undularly undulatance undulate undulated undulately undulating undulatingly undulation undulationist undulative undulatory undull undulled undullness unduloid undulose undulous unduly undumped unduncelike undunged undupable unduped unduplicability unduplicable unduplicity undurable undurableness undurably undust undusted unduteous undutiable undutiful undutifully undutifulness unduty undwarfed undwelt undwindling undy undye undyeable undyed undying undyingly undyingness uneager uneagerly uneagerness uneagled unearly unearned unearnest unearth unearthed unearthliness unearthly unease uneaseful uneasefulness uneasily uneasiness uneastern uneasy uneatable uneatableness uneaten uneath uneating unebbed unebbing unebriate uneccentric unecclesiastical unechoed unechoing uneclectic uneclipsed uneconomic uneconomical uneconomically uneconomicalness uneconomizing unecstatic unedge unedged unedible unedibleness unedibly unedified unedifying uneditable unedited uneducable uneducableness uneducably uneducate uneducated uneducatedly uneducatedness uneducative uneduced uneffaceable uneffaceably uneffaced uneffected uneffectible uneffective uneffectless uneffectual uneffectually uneffectualness uneffectuated uneffeminate uneffeminated uneffervescent uneffete unefficacious unefficient uneffigiated uneffused uneffusing uneffusive unegoist unegoistical unegoistically unegregious unejaculated unejected unelaborate unelaborated unelaborately unelaborateness unelapsed unelastic unelasticity unelated unelating unelbowed unelderly unelect unelectable unelected unelective unelectric unelectrical unelectrified unelectrify unelectrifying unelectrized unelectronic uneleemosynary unelegant unelegantly unelegantness unelemental unelementary unelevated unelicited unelided unelidible uneligibility uneligible uneligibly uneliminated unelongated uneloped uneloping uneloquent uneloquently unelucidated unelucidating uneluded unelusive unemaciated unemancipable unemancipated unemasculated unembalmed unembanked unembarrassed unembarrassedly unembarrassedness unembarrassing unembarrassment unembased unembattled unembayed unembellished unembezzled unembittered unemblazoned unembodied unembodiment unembossed unembowelled unembowered unembraceable unembraced unembroidered unembroiled unembryonic unemendable unemended unemerged unemerging unemigrating uneminent uneminently unemitted unemolumentary unemolumented unemotional unemotionalism unemotionally unemotionalness unemotioned unempaneled unemphatic unemphatical unemphatically unempirical unempirically unemploy unemployability unemployable unemployableness unemployably unemployed unemployment unempoisoned unempowered unempt unemptiable unemptied unempty unemulative unemulous unemulsified unenabled unenacted unenameled unenamored unencamped unenchafed unenchant unenchanted unencircled unenclosed unencompassed unencored unencounterable unencountered unencouraged unencouraging unencroached unencroaching unencumber unencumbered unencumberedly unencumberedness unencumbering unencysted unendable unendamaged unendangered unendeared unendeavored unended unending unendingly unendingness unendorsable unendorsed unendowed unendowing unendued unendurability unendurable unendurably unendured unenduring unenduringly unenergetic unenergized unenervated unenfeebled unenfiladed unenforceable unenforced unenforcedly unenforcedness unenforcibility unenfranchised unengaged unengaging unengendered unengineered unenglish unengraved unengraven unengrossed unenhanced unenjoined unenjoyable unenjoyed unenjoying unenjoyingly unenkindled unenlarged unenlightened unenlightening unenlisted unenlivened unenlivening unennobled unennobling unenounced unenquired unenquiring unenraged unenraptured unenrichable unenrichableness unenriched unenriching unenrobed unenrolled unenshrined unenslave unenslaved unensnared unensouled unensured unentailed unentangle unentangleable unentangled unentanglement unentangler unenterable unentered unentering unenterprise unenterprised unenterprising unenterprisingly unenterprisingness unentertainable unentertained unentertaining unentertainingly unentertainingness unenthralled unenthralling unenthroned unenthusiasm unenthusiastic unenthusiastically unenticed unenticing unentire unentitled unentombed unentomological unentrance unentranced unentrapped unentreated unentreating unentrenched unentwined unenumerable unenumerated unenveloped unenvenomed unenviable unenviably unenvied unenviedly unenvious unenviously unenvironed unenvying unenwoven unepauleted unephemeral unepic unepicurean unepigrammatic unepilogued unepiscopal unepiscopally unepistolary unepitaphed unepithelial unepitomized unequable unequableness unequably unequal unequalable unequaled unequality unequalize unequalized unequally unequalness unequated unequatorial unequestrian unequiangular unequiaxed unequilateral unequilibrated unequine unequipped unequitable unequitableness unequitably unequivalent unequivalve unequivalved unequivocal unequivocally unequivocalness uneradicable uneradicated unerasable unerased unerasing unerect unerected unermined uneroded unerrable unerrableness unerrably unerrancy unerrant unerratic unerring unerringly unerringness unerroneous unerroneously unerudite unerupted uneruptive unescaladed unescalloped unescapable unescapableness unescapably unescaped unescheated uneschewable uneschewably uneschewed Unesco unescorted unescutcheoned unesoteric unespied unespousable unespoused unessayed unessence unessential unessentially unessentialness unestablish unestablishable unestablished unestablishment unesteemed unestimable unestimableness unestimably unestimated unestopped unestranged unetched uneternal uneternized unethereal unethic unethical unethically unethicalness unethnological unethylated unetymological unetymologizable uneucharistical uneugenic uneulogized uneuphemistical uneuphonic uneuphonious uneuphoniously uneuphoniousness unevacuated unevadable unevaded unevaluated unevanescent unevangelic unevangelical unevangelized unevaporate unevaporated unevasive uneven unevenly unevenness uneventful uneventfully uneventfulness uneverted unevicted unevidenced unevident unevidential unevil unevinced unevirated uneviscerated unevitable unevitably unevokable unevoked unevolutionary unevolved unexacerbated unexact unexacted unexactedly unexacting unexactingly unexactly unexactness unexaggerable unexaggerated unexaggerating unexalted unexaminable unexamined unexamining unexampled unexampledness unexasperated unexasperating unexcavated unexceedable unexceeded unexcelled unexcellent unexcelling unexceptable unexcepted unexcepting unexceptionability unexceptionable unexceptionableness unexceptionably unexceptional unexceptionally unexceptionalness unexceptive unexcerpted unexcessive unexchangeable unexchangeableness unexchanged unexcised unexcitability unexcitable unexcited unexciting unexclaiming unexcludable unexcluded unexcluding unexclusive unexclusively unexclusiveness unexcogitable unexcogitated unexcommunicated unexcoriated unexcorticated unexcrescent unexcreted unexcruciating unexculpable unexculpably unexculpated unexcursive unexcusable unexcusableness unexcusably unexcused unexcusedly unexcusedness unexcusing unexecrated unexecutable unexecuted unexecuting unexecutorial unexemplary unexemplifiable unexemplified unexempt unexempted unexemptible unexempting unexercisable unexercise unexercised unexerted unexhalable unexhaled unexhausted unexhaustedly unexhaustedness unexhaustible unexhaustibleness unexhaustibly unexhaustion unexhaustive unexhaustiveness unexhibitable unexhibitableness unexhibited unexhilarated unexhilarating unexhorted unexhumed unexigent unexilable unexiled unexistence unexistent unexisting unexonerable unexonerated unexorable unexorableness unexorbitant unexorcisable unexorcisably unexorcised unexotic unexpandable unexpanded unexpanding unexpansive unexpectable unexpectant unexpected unexpectedly unexpectedness unexpecting unexpectingly unexpectorated unexpedient unexpeditated unexpedited unexpeditious unexpelled unexpendable unexpended unexpensive unexpensively unexpensiveness unexperience unexperienced unexperiencedness unexperient unexperiential unexperimental unexperimented unexpert unexpertly unexpertness unexpiable unexpiated unexpired unexpiring unexplainable unexplainableness unexplainably unexplained unexplainedly unexplainedness unexplaining unexplanatory unexplicable unexplicableness unexplicably unexplicated unexplicit unexplicitly unexplicitness unexploded unexploitation unexploited unexplorable unexplorative unexplored unexplosive unexportable unexported unexporting unexposable unexposed unexpostulating unexpoundable unexpounded unexpress unexpressable unexpressableness unexpressably unexpressed unexpressedly unexpressible unexpressibleness unexpressibly unexpressive unexpressively unexpressiveness unexpressly unexpropriable unexpropriated unexpugnable unexpunged unexpurgated unexpurgatedly unexpurgatedness unextended unextendedly unextendedness unextendible unextensible unextenuable unextenuated unextenuating unexterminable unexterminated unexternal unexternality unexterritoriality unextinct unextinctness unextinguishable unextinguishableness unextinguishably unextinguished unextirpated unextolled unextortable unextorted unextractable unextracted unextradited unextraneous unextraordinary unextravagance unextravagant unextravagating unextravasated unextreme unextricable unextricated unextrinsic unextruded unexuberant unexuded unexultant uneye uneyeable uneyed unfabled unfabling unfabricated unfabulous unfacaded unface unfaceable unfaced unfaceted unfacetious unfacile unfacilitated unfact unfactional unfactious unfactitious unfactorable unfactored unfactual unfadable unfaded unfading unfadingly unfadingness unfagged unfagoted unfailable unfailableness unfailably unfailed unfailing unfailingly unfailingness unfain unfaint unfainting unfaintly unfair unfairly unfairminded unfairness unfairylike unfaith unfaithful unfaithfully unfaithfulness unfaked unfallacious unfallaciously unfallen unfallenness unfallible unfallibleness unfallibly unfalling unfallowed unfalse unfalsifiable unfalsified unfalsifiedness unfalsity unfaltering unfalteringly unfamed unfamiliar unfamiliarity unfamiliarized unfamiliarly unfanatical unfanciable unfancied unfanciful unfancy unfanged unfanned unfantastic unfantastical unfantastically unfar unfarced unfarcical unfarewelled unfarmed unfarming unfarrowed unfarsighted unfasciated unfascinate unfascinated unfascinating unfashion unfashionable unfashionableness unfashionably unfashioned unfast unfasten unfastenable unfastened unfastener unfastidious unfastidiously unfastidiousness unfasting unfather unfathered unfatherlike unfatherliness unfatherly unfathomability unfathomable unfathomableness unfathomably unfathomed unfatigue unfatigueable unfatigued unfatiguing unfattable unfatted unfatten unfauceted unfaultfinding unfaulty unfavorable unfavorableness unfavorably unfavored unfavoring unfavorite unfawning unfealty unfeared unfearful unfearfully unfearing unfearingly unfeary unfeasable unfeasableness unfeasably unfeasibility unfeasible unfeasibleness unfeasibly unfeasted unfeather unfeathered unfeatured unfecund unfecundated unfed unfederal unfederated unfeeble unfeed unfeedable unfeeding unfeeing unfeelable unfeeling unfeelingly unfeelingness unfeignable unfeignableness unfeignably unfeigned unfeignedly unfeignedness unfeigning unfeigningly unfeigningness unfele unfelicitated unfelicitating unfelicitous unfelicitously unfelicitousness unfeline unfellable unfelled unfellied unfellow unfellowed unfellowlike unfellowly unfellowshiped unfelon unfelonious unfeloniously unfelony unfelt unfelted unfemale unfeminine unfemininely unfeminineness unfemininity unfeminist unfeminize unfence unfenced unfendered unfenestrated unfeoffed unfermentable unfermentableness unfermentably unfermented unfermenting unfernlike unferocious unferreted unferried unfertile unfertileness unfertility unfertilizable unfertilized unfervent unfervid unfester unfestered unfestival unfestive unfestively unfestooned unfetchable unfetched unfeted unfetter unfettered unfettled unfeudal unfeudalize unfeudalized unfeued unfevered unfeverish unfew unfibbed unfibbing unfiber unfibered unfibrous unfickle unfictitious unfidelity unfidgeting unfielded unfiend unfiendlike unfierce unfiery unfight unfightable unfighting unfigurable unfigurative unfigured unfilamentous unfilched unfile unfiled unfilial unfilially unfilialness unfill unfillable unfilled unfilleted unfilling unfilm unfilmed unfiltered unfiltrated unfinable unfinancial unfine unfined unfinessed unfingered unfinical unfinish unfinishable unfinished unfinishedly unfinishedness unfinite unfired unfireproof unfiring unfirm unfirmamented unfirmly unfirmness unfiscal unfishable unfished unfishing unfishlike unfissile unfistulous unfit unfitly unfitness unfittable unfitted unfittedness unfitten unfitting unfittingly unfittingness unfitty unfix unfixable unfixated unfixed unfixedness unfixing unfixity unflag unflagged unflagging unflaggingly unflaggingness unflagitious unflagrant unflaky unflamboyant unflaming unflanged unflank unflanked unflapping unflashing unflat unflated unflattened unflatterable unflattered unflattering unflatteringly unflaunted unflavored unflawed unflayed unflead unflecked unfledge unfledged unfledgedness unfleece unfleeced unfleeing unfleeting unflesh unfleshed unfleshliness unfleshly unfleshy unfletched unflexed unflexible unflexibleness unflexibly unflickering unflickeringly unflighty unflinching unflinchingly unflinchingness unflintify unflippant unflirtatious unflitched unfloatable unfloating unflock unfloggable unflogged unflooded unfloor unfloored unflorid unflossy unflounced unfloured unflourished unflourishing unflouted unflower unflowered unflowing unflown unfluctuating unfluent unfluid unfluked unflunked unfluorescent unflurried unflush unflushed unflustered unfluted unflutterable unfluttered unfluttering unfluvial unfluxile unflying unfoaled unfoaming unfocused unfoggy unfoilable unfoiled unfoisted unfold unfoldable unfolded unfolder unfolding unfoldment unfoldure unfoliaged unfoliated unfollowable unfollowed unfollowing unfomented unfond unfondled unfondness unfoodful unfool unfoolable unfooled unfooling unfoolish unfooted unfootsore unfoppish unforaged unforbade unforbearance unforbearing unforbid unforbidden unforbiddenly unforbiddenness unforbidding unforceable unforced unforcedly unforcedness unforceful unforcible unforcibleness unforcibly unfordable unfordableness unforded unforeboded unforeboding unforecasted unforegone unforeign unforeknowable unforeknown unforensic unforeordained unforesee unforeseeable unforeseeableness unforeseeably unforeseeing unforeseeingly unforeseen unforeseenly unforeseenness unforeshortened unforest unforestallable unforestalled unforested unforetellable unforethought unforethoughtful unforetold unforewarned unforewarnedness unforfeit unforfeitable unforfeited unforgeability unforgeable unforged unforget unforgetful unforgettable unforgettableness unforgettably unforgetting unforgettingly unforgivable unforgivableness unforgivably unforgiven unforgiveness unforgiver unforgiving unforgivingly unforgivingness unforgone unforgot unforgotten unfork unforked unforkedness unforlorn unform unformal unformality unformalized unformally unformalness unformative unformed unformidable unformulable unformularizable unformularize unformulated unformulistic unforsaken unforsaking unforsook unforsworn unforthright unfortifiable unfortified unfortify unfortuitous unfortunate unfortunately unfortunateness unfortune unforward unforwarded unfossiliferous unfossilized unfostered unfought unfoughten unfoul unfoulable unfouled unfound unfounded unfoundedly unfoundedness unfoundered unfountained unfowllike unfoxy unfractured unfragrance unfragrant unfragrantly unfrail unframable unframableness unframably unframe unframed unfranchised unfrank unfrankable unfranked unfrankly unfrankness unfraternal unfraternizing unfraudulent unfraught unfrayed unfreckled unfree unfreed unfreedom unfreehold unfreely unfreeman unfreeness unfreezable unfreeze unfreezing unfreighted unfrenchified unfrenzied unfrequency unfrequent unfrequented unfrequentedness unfrequently unfrequentness unfret unfretful unfretting unfriable unfriarlike unfricative unfrictioned unfried unfriend unfriended unfriendedness unfriending unfriendlike unfriendlily unfriendliness unfriendly unfriendship unfrighted unfrightenable unfrightened unfrightenedness unfrightful unfrigid unfrill unfrilled unfringe unfringed unfrisky unfrivolous unfrizz unfrizzled unfrizzy unfrock unfrocked unfroglike unfrolicsome unfronted unfrost unfrosted unfrosty unfrounced unfroward unfrowardly unfrowning unfroze unfrozen unfructed unfructified unfructify unfructuous unfructuously unfrugal unfrugally unfrugalness unfruitful unfruitfully unfruitfulness unfruity unfrustrable unfrustrably unfrustratable unfrustrated unfrutuosity unfuddled unfueled unfulfill unfulfillable unfulfilled unfulfilling unfulfillment unfull unfulled unfully unfulminated unfulsome unfumbled unfumbling unfumed unfumigated unfunctional unfundamental unfunded unfunnily unfunniness unfunny unfur unfurbelowed unfurbished unfurcate unfurious unfurl unfurlable unfurnish unfurnished unfurnishedness unfurnitured unfurred unfurrow unfurrowable unfurrowed unfurthersome unfused unfusible unfusibleness unfusibly unfussed unfussing unfussy unfutile unfuturistic ungabled ungag ungaged ungagged ungain ungainable ungained ungainful ungainfully ungainfulness ungaining ungainlike ungainliness ungainly ungainness ungainsaid ungainsayable ungainsayably ungainsaying ungainsome ungainsomely ungaite ungallant ungallantly ungallantness ungalling ungalvanized ungamboling ungamelike unganged ungangrened ungarbed ungarbled ungardened ungargled ungarland ungarlanded ungarment ungarmented ungarnered ungarnish ungarnished ungaro ungarrisoned ungarter ungartered ungashed ungassed ungastric ungathered ungaudy ungauged ungauntlet ungauntleted ungazetted ungazing ungear ungeared ungelatinizable ungelatinized ungelded ungelt ungeminated ungenerable ungeneral ungeneraled ungeneralized ungenerate ungenerated ungenerative ungeneric ungenerical ungenerosity ungenerous ungenerously ungenerousness ungenial ungeniality ungenially ungenialness ungenitured ungenius ungenteel ungenteelly ungenteelness ungentile ungentility ungentilize ungentle ungentled ungentleman ungentlemanize ungentlemanlike ungentlemanlikeness ungentlemanliness ungentlemanly ungentleness ungentlewomanlike ungently ungenuine ungenuinely ungenuineness ungeodetical ungeographic ungeographical ungeographically ungeological ungeometric ungeometrical ungeometrically ungeometricalness ungerminated ungerminating ungermlike ungerontic ungesting ungesturing unget ungettable unghostlike unghostly ungiant ungibbet ungiddy ungifted ungiftedness ungild ungilded ungill ungilt ungingled unginned ungird ungirded ungirdle ungirdled ungirlish ungirt ungirth ungirthed ungive ungiveable ungiven ungiving ungka unglaciated unglad ungladden ungladdened ungladly ungladness ungladsome unglamorous unglandular unglassed unglaze unglazed ungleaned unglee ungleeful unglimpsed unglistening unglittering ungloating unglobe unglobular ungloom ungloomed ungloomy unglorified unglorify unglorifying unglorious ungloriously ungloriousness unglory unglosed ungloss unglossaried unglossed unglossily unglossiness unglossy unglove ungloved unglowing unglozed unglue unglued unglutinate unglutted ungluttonous ungnarred ungnaw ungnawn ungnostic ungoaded ungoatlike ungod ungoddess ungodlike ungodlily ungodliness ungodly ungodmothered ungold ungolden ungone ungood ungoodliness ungoodly ungored ungorge ungorged ungorgeous ungospel ungospelized ungospelled ungospellike ungossiping ungot ungothic ungotten ungouged ungouty ungovernable ungovernableness ungovernably ungoverned ungovernedness ungoverning ungown ungowned ungrace ungraced ungraceful ungracefully ungracefulness ungracious ungraciously ungraciousness ungradated ungraded ungradual ungradually ungraduated ungraduating ungraft ungrafted ungrain ungrainable ungrained ungrammar ungrammared ungrammatic ungrammatical ungrammatically ungrammaticalness ungrammaticism ungrand ungrantable ungranted ungranulated ungraphic ungraphitized ungrapple ungrappled ungrappler ungrasp ungraspable ungrasped ungrasping ungrassed ungrassy ungrated ungrateful ungratefully ungratefulness ungratifiable ungratified ungratifying ungrating ungrave ungraved ungraveled ungravelly ungravely ungraven ungrayed ungrazed ungreased ungreat ungreatly ungreatness ungreeable ungreedy ungreen ungreenable ungreened ungreeted ungregarious ungrieve ungrieved ungrieving ungrilled ungrimed ungrindable ungrip ungripe ungrizzled ungroaning ungroined ungroomed ungrooved ungropeable ungross ungrotesque unground ungroundable ungroundably ungrounded ungroundedly ungroundedness ungroupable ungrouped ungrow ungrowing ungrown ungrubbed ungrudged ungrudging ungrudgingly ungrudgingness ungruesome ungruff ungrumbling ungual unguaranteed unguard unguardable unguarded unguardedly unguardedness ungueal unguent unguentaria unguentarium unguentary unguentiferous unguentous unguentum unguerdoned ungues unguessable unguessableness unguessed unguical unguicorn unguicular Unguiculata unguiculate unguiculated unguidable unguidableness unguidably unguided unguidedly unguiferous unguiform unguiled unguileful unguilefully unguilefulness unguillotined unguiltily unguiltiness unguilty unguinal unguinous unguirostral unguis ungula ungulae ungular Ungulata ungulate ungulated unguled unguligrade ungull ungulous ungulp ungum ungummed ungushing ungutted unguttural unguyed unguzzled ungymnastic ungypsylike ungyve ungyved unhabit unhabitable unhabitableness unhabited unhabitual unhabitually unhabituate unhabituated unhacked unhackled unhackneyed unhackneyedness unhad unhaft unhafted unhaggled unhaggling unhailable unhailed unhair unhaired unhairer unhairily unhairiness unhairing unhairy unhallooed unhallow unhallowed unhallowedness unhaloed unhalsed unhalted unhalter unhaltered unhalting unhalved unhammered unhamper unhampered unhand unhandcuff unhandcuffed unhandicapped unhandily unhandiness unhandled unhandseled unhandsome unhandsomely unhandsomeness unhandy unhang unhanged unhap unhappen unhappily unhappiness unhappy unharangued unharassed unharbor unharbored unhard unharden unhardenable unhardened unhardihood unhardily unhardiness unhardness unhardy unharked unharmable unharmed unharmful unharmfully unharming unharmonic unharmonical unharmonious unharmoniously unharmoniousness unharmonize unharmonized unharmony unharness unharnessed unharped unharried unharrowed unharsh unharvested unhashed unhasp unhasped unhaste unhasted unhastened unhastily unhastiness unhasting unhasty unhat unhatchability unhatchable unhatched unhatcheled unhate unhated unhateful unhating unhatingly unhatted unhauled unhaunt unhaunted unhave unhawked unhayed unhazarded unhazarding unhazardous unhazardousness unhazed unhead unheaded unheader unheady unheal unhealable unhealableness unhealably unhealed unhealing unhealth unhealthful unhealthfully unhealthfulness unhealthily unhealthiness unhealthsome unhealthsomeness unhealthy unheaped unhearable unheard unhearing unhearsed unheart unhearten unheartsome unhearty unheatable unheated unheathen unheaved unheaven unheavenly unheavily unheaviness unheavy unhectored unhedge unhedged unheed unheeded unheededly unheedful unheedfully unheedfulness unheeding unheedingly unheedy unheeled unheelpieced unhefted unheightened unheired unheld unhele unheler unhelm unhelmed unhelmet unhelmeted unhelpable unhelpableness unhelped unhelpful unhelpfully unhelpfulness unhelping unhelved unhemmed unheppen unheralded unheraldic unherd unherded unhereditary unheretical unheritable unhermetic unhero unheroic unheroical unheroically unheroism unheroize unherolike unhesitant unhesitating unhesitatingly unhesitatingness unheuristic unhewable unhewed unhewn unhex unhid unhidable unhidableness unhidably unhidated unhidden unhide unhidebound unhideous unhieratic unhigh unhilarious unhinderable unhinderably unhindered unhindering unhinge unhingement unhinted unhipped unhired unhissed unhistoric unhistorical unhistorically unhistory unhistrionic unhit unhitch unhitched unhittable unhive unhoard unhoarded unhoarding unhoary unhoaxed unhobble unhocked unhoed unhogged unhoist unhoisted unhold unholiday unholily unholiness unhollow unhollowed unholy unhome unhomelike unhomelikeness unhomeliness unhomely unhomish unhomogeneity unhomogeneous unhomogeneously unhomologous unhoned unhonest unhonestly unhoneyed unhonied unhonorable unhonorably unhonored unhonoured unhood unhooded unhoodwink unhoodwinked unhoofed unhook unhooked unhoop unhooped unhooper unhooted unhoped unhopedly unhopedness unhopeful unhopefully unhopefulness unhoping unhopingly unhopped unhoppled unhorizoned unhorizontal unhorned unhorny unhoroscopic unhorse unhose unhosed unhospitable unhospitableness unhospitably unhostile unhostilely unhostileness unhostility unhot unhoundlike unhouse unhoused unhouseled unhouselike unhousewifely unhuddle unhugged unhull unhulled unhuman unhumanize unhumanized unhumanly unhumanness unhumble unhumbled unhumbledness unhumbleness unhumbly unhumbugged unhumid unhumiliated unhumored unhumorous unhumorously unhumorousness unhumoured unhung unhuntable unhunted unhurdled unhurled unhurried unhurriedly unhurriedness unhurrying unhurryingly unhurt unhurted unhurtful unhurtfully unhurtfulness unhurting unhusbanded unhusbandly unhushable unhushed unhushing unhusk unhusked unhustled unhustling unhutched unhuzzaed unhydraulic unhydrolyzed unhygienic unhygienically unhygrometric unhymeneal unhymned unhyphenated unhyphened unhypnotic unhypnotizable unhypnotize unhypocritical unhypocritically unhypothecated unhypothetical unhysterical uniambic uniambically uniangulate uniarticular uniarticulate Uniat uniat Uniate uniate uniauriculate uniauriculated uniaxal uniaxally uniaxial uniaxially unibasal unibivalent unible unibracteate unibracteolate unibranchiate unicalcarate unicameral unicameralism unicameralist unicamerate unicapsular unicarinate unicarinated unice uniced unicell unicellate unicelled unicellular unicellularity unicentral unichord uniciliate unicism unicist unicity uniclinal unicolor unicolorate unicolored unicolorous uniconstant unicorn unicorneal unicornic unicornlike unicornous unicornuted unicostate unicotyledonous unicum unicursal unicursality unicursally unicuspid unicuspidate unicycle unicyclist unidactyl unidactyle unidactylous unideaed unideal unidealism unidealist unidealistic unidealized unidentate unidentated unidenticulate unidentifiable unidentifiableness unidentifiably unidentified unidentifiedly unidentifying unideographic unidextral unidextrality unidigitate unidimensional unidiomatic unidiomatically unidirect unidirected unidirection unidirectional unidle unidleness unidly unidolatrous unidolized unidyllic unie uniembryonate uniequivalent uniface unifaced unifacial unifactorial unifarious unifiable unific unification unificationist unificator unified unifiedly unifiedness unifier unifilar uniflagellate unifloral uniflorate uniflorous uniflow uniflowered unifocal unifoliar unifoliate unifoliolate Unifolium uniform uniformal uniformalization uniformalize uniformally uniformation uniformed uniformist uniformitarian uniformitarianism uniformity uniformization uniformize uniformless uniformly uniformness unify unigenesis unigenetic unigenist unigenistic unigenital unigeniture unigenous uniglandular uniglobular unignitable unignited unignitible unignominious unignorant unignored unigravida uniguttulate unijugate unijugous unilabiate unilabiated unilamellar unilamellate unilaminar unilaminate unilateral unilateralism unilateralist unilaterality unilateralization unilateralize unilaterally unilinear unilingual unilingualism uniliteral unilludedly unillumed unilluminated unilluminating unillumination unillumined unillusioned unillusory unillustrated unillustrative unillustrious unilobal unilobar unilobate unilobe unilobed unilobular unilocular unilocularity uniloculate unimacular unimaged unimaginable unimaginableness unimaginably unimaginary unimaginative unimaginatively unimaginativeness unimagine unimagined unimanual unimbanked unimbellished unimbezzled unimbibed unimbibing unimbittered unimbodied unimboldened unimbordered unimbosomed unimbowed unimbowered unimbroiled unimbrowned unimbrued unimbued unimedial unimitable unimitableness unimitably unimitated unimitating unimitative unimmaculate unimmanent unimmediate unimmerged unimmergible unimmersed unimmigrating unimmolated unimmortal unimmortalize unimmortalized unimmovable unimmured unimodal unimodality unimodular unimolecular unimolecularity unimpair unimpairable unimpaired unimpartable unimparted unimpartial unimpassionate unimpassioned unimpassionedly unimpassionedness unimpatient unimpawned unimpeachability unimpeachable unimpeachableness unimpeachably unimpeached unimpearled unimped unimpeded unimpededly unimpedible unimpedness unimpelled unimpenetrable unimperative unimperial unimperialistic unimperious unimpertinent unimpinging unimplanted unimplicable unimplicate unimplicated unimplicit unimplicitly unimplied unimplorable unimplored unimpoisoned unimportance unimportant unimportantly unimported unimporting unimportunate unimportunately unimportuned unimposed unimposedly unimposing unimpostrous unimpounded unimpoverished unimpowered unimprecated unimpregnable unimpregnate unimpregnated unimpressed unimpressibility unimpressible unimpressibleness unimpressibly unimpressionability unimpressionable unimpressive unimpressively unimpressiveness unimprinted unimprison unimprisonable unimprisoned unimpropriated unimprovable unimprovableness unimprovably unimproved unimprovedly unimprovedness unimprovement unimproving unimprovised unimpugnable unimpugned unimpulsive unimpurpled unimputable unimputed unimucronate unimultiplex unimuscular uninaugurated unincantoned unincarcerated unincarnate unincarnated unincensed uninchoative unincidental unincised unincisive unincited uninclinable uninclined uninclining uninclosed uninclosedness unincludable unincluded uninclusive uninclusiveness uninconvenienced unincorporate unincorporated unincorporatedly unincorporatedness unincreasable unincreased unincreasing unincubated uninculcated unincumbered unindebted unindebtedly unindebtedness unindemnified unindentable unindented unindentured unindexed unindicable unindicated unindicative unindictable unindicted unindifference unindifferency unindifferent unindifferently unindigent unindignant unindividual unindividualize unindividualized unindividuated unindorsed uninduced uninductive unindulged unindulgent unindulgently unindurated unindustrial unindustrialized unindustrious unindustriously unindwellable uninebriated uninebriating uninervate uninerved uninfallibility uninfallible uninfatuated uninfectable uninfected uninfectious uninfectiousness uninfeft uninferred uninfested uninfiltrated uninfinite uninfiniteness uninfixed uninflamed uninflammability uninflammable uninflated uninflected uninflectedness uninflicted uninfluenceable uninfluenced uninfluencing uninfluencive uninfluential uninfluentiality uninfolded uninformed uninforming uninfracted uninfringeable uninfringed uninfringible uninfuriated uninfused uningenious uningeniously uningeniousness uningenuity uningenuous uningenuously uningenuousness uningested uningrafted uningrained uninhabitability uninhabitable uninhabitableness uninhabitably uninhabited uninhabitedness uninhaled uninheritability uninheritable uninherited uninhibited uninhibitive uninhumed uninimical uniniquitous uninitialed uninitialled uninitiate uninitiated uninitiatedness uninitiation uninjectable uninjected uninjurable uninjured uninjuredness uninjuring uninjurious uninjuriously uninjuriousness uninked uninlaid uninn uninnate uninnocence uninnocent uninnocently uninnocuous uninnovating uninoculable uninoculated uninodal uninominal uninquired uninquiring uninquisitive uninquisitively uninquisitiveness uninquisitorial uninsane uninsatiable uninscribed uninserted uninshrined uninsinuated uninsistent uninsolvent uninspected uninspirable uninspired uninspiring uninspiringly uninspirited uninspissated uninstalled uninstanced uninstated uninstigated uninstilled uninstituted uninstructed uninstructedly uninstructedness uninstructible uninstructing uninstructive uninstructively uninstructiveness uninstrumental uninsular uninsulate uninsulated uninsultable uninsulted uninsulting uninsurability uninsurable uninsured unintegrated unintellective unintellectual unintellectualism unintellectuality unintellectually unintelligence unintelligent unintelligently unintelligentsia unintelligibility unintelligible unintelligibleness unintelligibly unintended unintendedly unintensive unintent unintentional unintentionality unintentionally unintentionalness unintently unintentness unintercalated unintercepted uninterchangeable uninterdicted uninterested uninterestedly uninterestedness uninteresting uninterestingly uninterestingness uninterferedwith uninterjected uninterlaced uninterlarded uninterleave uninterleaved uninterlined uninterlinked uninterlocked unintermarrying unintermediate unintermingled unintermission unintermissive unintermitted unintermittedly unintermittedness unintermittent unintermitting unintermittingly unintermittingness unintermixed uninternational uninterpleaded uninterpolated uninterposed uninterposing uninterpretable uninterpreted uninterred uninterrogable uninterrogated uninterrupted uninterruptedly uninterruptedness uninterruptible uninterruptibleness uninterrupting uninterruption unintersected uninterspersed unintervening uninterviewed unintervolved uninterwoven uninthroned unintimate unintimated unintimidated unintitled unintombed unintoned unintoxicated unintoxicatedness unintoxicating unintrenchable unintrenched unintricate unintrigued unintriguing unintroduced unintroducible unintroitive unintromitted unintrospective unintruded unintruding unintrusive unintrusively unintrusted unintuitive unintwined uninuclear uninucleate uninucleated uninundated uninured uninurned uninvadable uninvaded uninvaginated uninvalidated uninveighing uninveigled uninvented uninventful uninventibleness uninventive uninventively uninventiveness uninverted uninvested uninvestigable uninvestigated uninvestigating uninvestigative uninvidious uninvidiously uninvigorated uninvincible uninvite uninvited uninvitedly uninviting uninvoiced uninvoked uninvolved uninweaved uninwoven uninwrapped uninwreathed Unio unio uniocular unioid Uniola union unioned unionic unionid Unionidae unioniform unionism unionist unionistic unionization unionize unionoid unioval uniovular uniovulate unipara uniparental uniparient uniparous unipartite uniped unipeltate uniperiodic unipersonal unipersonalist unipersonality unipetalous uniphase uniphaser uniphonous uniplanar uniplicate unipod unipolar unipolarity uniporous unipotence unipotent unipotential unipulse uniquantic unique uniquely uniqueness uniquity uniradial uniradiate uniradiated uniradical uniramose uniramous unirascible unireme unirenic unirhyme uniridescent unironed unironical unirradiated unirrigated unirritable unirritant unirritated unirritatedly unirritating unisepalous uniseptate uniserial uniserially uniseriate uniseriately uniserrate uniserrulate unisexed unisexual unisexuality unisexually unisilicate unisoil unisolable unisolate unisolated unisomeric unisometrical unisomorphic unison unisonal unisonally unisonance unisonant unisonous unisotropic unisparker unispiculate unispinose unispiral unissuable unissued unistylist unisulcate unit unitage unital unitalicized Unitarian unitarian Unitarianism Unitarianize unitarily unitariness unitarism unitarist unitary unite uniteability uniteable uniteably united unitedly unitedness unitemized unitentacular uniter uniting unitingly unition unitism unitistic unitive unitively unitiveness unitize unitooth unitrivalent unitrope unituberculate unitude unity uniunguiculate uniungulate univalence univalency univalent univalvate univalve univalvular univariant univerbal universal universalia Universalian Universalism universalism Universalist universalist Universalistic universalistic universality universalization universalize universalizer universally universalness universanimous universe universeful universitarian universitarianism universitary universitize university universityless universitylike universityship universological universologist universology univied univocability univocacy univocal univocalized univocally univocity univoltine univorous unjacketed unjaded unjagged unjailed unjam unjapanned unjarred unjarring unjaundiced unjaunty unjealous unjealoused unjellied unjesting unjesuited unjesuitical unjesuitically unjewel unjeweled unjewelled Unjewish unjilted unjocose unjocund unjogged unjogging unjoin unjoinable unjoint unjointed unjointedness unjointured unjoking unjokingly unjolly unjolted unjostled unjournalized unjovial unjovially unjoyed unjoyful unjoyfully unjoyfulness unjoyous unjoyously unjoyousness unjudgable unjudge unjudged unjudgelike unjudging unjudicable unjudicial unjudicially unjudicious unjudiciously unjudiciousness unjuggled unjuiced unjuicy unjumbled unjumpable unjust unjustice unjusticiable unjustifiable unjustifiableness unjustifiably unjustified unjustifiedly unjustifiedness unjustify unjustled unjustly unjustness unjuvenile unkaiserlike unkamed unked unkeeled unkembed unkempt unkemptly unkemptness unken unkenned unkennedness unkennel unkenneled unkenning unkensome unkept unkerchiefed unket unkey unkeyed unkicked unkid unkill unkillability unkillable unkilled unkilling unkilned unkin unkind unkindhearted unkindled unkindledness unkindlily unkindliness unkindling unkindly unkindness unkindred unkindredly unking unkingdom unkinged unkinger unkinglike unkingly unkink unkinlike unkirk unkiss unkissed unkist unknave unkneaded unkneeling unknelled unknew unknight unknighted unknightlike unknit unknittable unknitted unknitting unknocked unknocking unknot unknotted unknotty unknow unknowability unknowable unknowableness unknowably unknowen unknowing unknowingly unknowingness unknowledgeable unknown unknownly unknownness unknownst unkodaked unkoshered unlabeled unlabialize unlabiate unlaborable unlabored unlaboring unlaborious unlaboriously unlaboriousness unlace unlaced unlacerated unlackeyed unlacquered unlade unladen unladled unladyfied unladylike unlagging unlaid unlame unlamed unlamented unlampooned unlanced unland unlanded unlandmarked unlanguaged unlanguid unlanguishing unlanterned unlap unlapped unlapsed unlapsing unlarded unlarge unlash unlashed unlasher unlassoed unlasting unlatch unlath unlathed unlathered unlatinized unlatticed unlaudable unlaudableness unlaudably unlauded unlaugh unlaughing unlaunched unlaundered unlaureled unlaved unlaving unlavish unlavished unlaw unlawed unlawful unlawfully unlawfulness unlawlearned unlawlike unlawly unlawyered unlawyerlike unlay unlayable unleached unlead unleaded unleaderly unleaf unleafed unleagued unleaguer unleakable unleaky unleal unlean unleared unlearn unlearnability unlearnable unlearnableness unlearned unlearnedly unlearnedness unlearning unlearnt unleasable unleased unleash unleashed unleathered unleave unleaved unleavenable unleavened unlectured unled unleft unlegacied unlegal unlegalized unlegally unlegalness unlegate unlegislative unleisured unleisuredness unleisurely unlenient unlensed unlent unless unlessened unlessoned unlet unlettable unletted unlettered unletteredly unletteredness unlettering unletterlike unlevel unleveled unlevelly unlevelness unlevied unlevigated unlexicographical unliability unliable unlibeled unliberal unliberalized unliberated unlibidinous unlicensed unlicentiated unlicentious unlichened unlickable unlicked unlid unlidded unlie unlifelike unliftable unlifted unlifting unligable unligatured unlight unlighted unlightedly unlightedness unlightened unlignified unlikable unlikableness unlikably unlike unlikeable unlikeableness unlikeably unliked unlikelihood unlikeliness unlikely unliken unlikeness unliking unlimb unlimber unlime unlimed unlimitable unlimitableness unlimitably unlimited unlimitedly unlimitedness unlimitless unlimned unlimp unline unlineal unlined unlingering unlink unlinked unlionlike unliquefiable unliquefied unliquid unliquidatable unliquidated unliquidating unliquidation unliquored unlisping unlist unlisted unlistened unlistening unlisty unlit unliteral unliterally unliteralness unliterary unliterate unlitigated unlitten unlittered unliturgical unliturgize unlivable unlivableness unlivably unlive unliveable unliveableness unliveably unliveliness unlively unliveried unlivery unliving unlizardlike unload unloaded unloaden unloader unloafing unloanably unloaned unloaning unloath unloathed unloathful unloathly unloathsome unlobed unlocal unlocalizable unlocalize unlocalized unlocally unlocated unlock unlockable unlocked unlocker unlocking unlocomotive unlodge unlodged unlofty unlogged unlogic unlogical unlogically unlogicalness unlonely unlook unlooked unloop unlooped unloosable unloosably unloose unloosen unloosening unloosing unlooted unlopped unloquacious unlord unlorded unlordly unlosable unlosableness unlost unlotted unlousy unlovable unlovableness unlovably unlove unloveable unloveableness unloveably unloved unlovelily unloveliness unlovely unloverlike unloverly unloving unlovingly unlovingness unlowered unlowly unloyal unloyally unloyalty unlubricated unlucent unlucid unluck unluckful unluckily unluckiness unlucky unlucrative unludicrous unluffed unlugged unlugubrious unluminous unlumped unlunar unlured unlust unlustily unlustiness unlustrous unlusty unlute unluted unluxated unluxuriant unluxurious unlycanthropize unlying unlyrical unlyrically unmacadamized unmacerated unmachinable unmackly unmad unmadded unmaddened unmade unmagic unmagical unmagisterial unmagistratelike unmagnanimous unmagnetic unmagnetical unmagnetized unmagnified unmagnify unmaid unmaidenlike unmaidenliness unmaidenly unmail unmailable unmailableness unmailed unmaimable unmaimed unmaintainable unmaintained unmajestic unmakable unmake unmaker unmalevolent unmalicious unmalignant unmaligned unmalleability unmalleable unmalleableness unmalled unmaltable unmalted unmammalian unmammonized unman unmanacle unmanacled unmanageable unmanageableness unmanageably unmanaged unmancipated unmandated unmanducated unmaned unmaneged unmanful unmanfully unmangled unmaniable unmaniac unmaniacal unmanicured unmanifest unmanifested unmanipulatable unmanipulated unmanlike unmanlily unmanliness unmanly unmanned unmanner unmannered unmanneredly unmannerliness unmannerly unmannish unmanored unmantle unmantled unmanufacturable unmanufactured unmanumissible unmanumitted unmanurable unmanured unmappable unmapped unmarbled unmarch unmarching unmarginal unmarginated unmarine unmaritime unmarkable unmarked unmarketable unmarketed unmarled unmarred unmarriable unmarriageability unmarriageable unmarried unmarring unmarry unmarrying unmarshaled unmartial unmartyr unmartyred unmarvelous unmasculine unmashed unmask unmasked unmasker unmasking unmasquerade unmassacred unmassed unmast unmaster unmasterable unmastered unmasterful unmasticable unmasticated unmatchable unmatchableness unmatchably unmatched unmatchedness unmate unmated unmaterial unmaterialistic unmateriate unmaternal unmathematical unmathematically unmating unmatriculated unmatrimonial unmatronlike unmatted unmature unmatured unmaturely unmatureness unmaturing unmaturity unmauled unmaze unmeaning unmeaningly unmeaningness unmeant unmeasurable unmeasurableness unmeasurably unmeasured unmeasuredly unmeasuredness unmeated unmechanic unmechanical unmechanically unmechanistic unmechanize unmechanized unmedaled unmedalled unmeddle unmeddled unmeddlesome unmeddling unmeddlingly unmeddlingness unmediaeval unmediated unmediatized unmedicable unmedical unmedicated unmedicative unmedicinable unmedicinal unmeditated unmeditative unmediumistic unmedullated unmeek unmeekly unmeekness unmeet unmeetable unmeetly unmeetness unmelancholy unmeliorated unmellow unmellowed unmelodic unmelodious unmelodiously unmelodiousness unmelodized unmelodramatic unmeltable unmeltableness unmeltably unmelted unmeltedness unmelting unmember unmemoired unmemorable unmemorialized unmemoried unmemorized unmenaced unmenacing unmendable unmendableness unmendably unmendacious unmended unmenial unmenseful unmenstruating unmensurable unmental unmentionability unmentionable unmentionableness unmentionables unmentionably unmentioned unmercantile unmercenariness unmercenary unmercerized unmerchantable unmerchantlike unmerchantly unmerciful unmercifully unmercifulness unmercurial unmeretricious unmerge unmerged unmeridional unmerited unmeritedly unmeritedness unmeriting unmeritorious unmeritoriously unmeritoriousness unmerry unmesh unmesmeric unmesmerize unmesmerized unmet unmetaled unmetalized unmetalled unmetallic unmetallurgical unmetamorphosed unmetaphorical unmetaphysic unmetaphysical unmeted unmeteorological unmetered unmethodical unmethodically unmethodicalness unmethodized unmethodizing unmethylated unmeticulous unmetric unmetrical unmetrically unmetricalness unmetropolitan unmettle unmew unmewed unmicaceous unmicrobic unmicroscopic unmidwifed unmighty unmigrating unmildewed unmilitant unmilitarily unmilitariness unmilitaristic unmilitarized unmilitary unmilked unmilled unmillinered unmilted unmimicked unminable unminced unmincing unmind unminded unmindful unmindfully unmindfulness unminding unmined unmineralized unmingle unmingleable unmingled unmingling unminimized unminished unminister unministered unministerial unministerially unminted unminuted unmiracled unmiraculous unmiraculously unmired unmirrored unmirthful unmirthfully unmirthfulness unmiry unmisanthropic unmiscarrying unmischievous unmiscible unmisconceivable unmiserly unmisgiving unmisgivingly unmisguided unmisinterpretable unmisled unmissable unmissed unmissionary unmissionized unmist unmistakable unmistakableness unmistakably unmistakedly unmistaken unmistakingly unmistressed unmistrusted unmistrustful unmistrusting unmisunderstandable unmisunderstanding unmisunderstood unmiter unmitigable unmitigated unmitigatedly unmitigatedness unmitigative unmittened unmix unmixable unmixableness unmixed unmixedly unmixedness unmoaned unmoated unmobbed unmobilized unmocked unmocking unmockingly unmodel unmodeled unmodelled unmoderate unmoderately unmoderateness unmoderating unmodern unmodernity unmodernize unmodernized unmodest unmodifiable unmodifiableness unmodifiably unmodified unmodifiedness unmodish unmodulated unmoiled unmoist unmoisten unmold unmoldable unmolded unmoldered unmoldering unmoldy unmolested unmolestedly unmolesting unmollifiable unmollifiably unmollified unmollifying unmolten unmomentary unmomentous unmomentously unmonarch unmonarchical unmonastic unmonetary unmoneyed unmonistic unmonitored unmonkish unmonkly unmonopolize unmonopolized unmonopolizing unmonotonous unmonumented unmoor unmoored unmooted unmopped unmoral unmoralist unmorality unmoralize unmoralized unmoralizing unmorally unmoralness unmorbid unmordanted unmoribund unmorose unmorphological unmortal unmortared unmortgage unmortgageable unmortgaged unmortified unmortifiedly unmortifiedness unmortise unmortised unmossed unmothered unmotherly unmotionable unmotivated unmotivatedly unmotivatedness unmotived unmotorized unmottled unmounded unmount unmountable unmountainous unmounted unmounting unmourned unmournful unmourning unmouthable unmouthed unmouthpieced unmovability unmovable unmovableness unmovably unmoved unmovedly unmoving unmovingly unmovingness unmowed unmown unmucilaged unmudded unmuddied unmuddle unmuddled unmuddy unmuffle unmuffled unmulcted unmulish unmulled unmullioned unmultipliable unmultiplied unmultipliedly unmultiply unmummied unmummify unmunched unmundane unmundified unmunicipalized unmunificent unmunitioned unmurmured unmurmuring unmurmuringly unmurmurous unmuscled unmuscular unmusical unmusicality unmusically unmusicalness unmusicianly unmusked unmussed unmusted unmusterable unmustered unmutated unmutation unmuted unmutilated unmutinous unmuttered unmutual unmutualized unmuzzle unmuzzled unmuzzling unmyelinated unmysterious unmysteriously unmystery unmystical unmysticize unmystified unmythical unnabbed unnagged unnagging unnail unnailed unnaked unnamability unnamable unnamableness unnamably unname unnameability unnameable unnameableness unnameably unnamed unnapkined unnapped unnarcotic unnarrated unnarrow unnation unnational unnationalized unnative unnatural unnaturalism unnaturalist unnaturalistic unnaturality unnaturalizable unnaturalize unnaturalized unnaturally unnaturalness unnature unnautical unnavigability unnavigable unnavigableness unnavigably unnavigated unneaped unnearable unneared unnearly unnearness unneat unneatly unneatness unnebulous unnecessarily unnecessariness unnecessary unnecessitated unnecessitating unnecessity unneeded unneedful unneedfully unneedfulness unneedy unnefarious unnegated unneglected unnegligent unnegotiable unnegotiableness unnegotiably unnegotiated unnegro unneighbored unneighborlike unneighborliness unneighborly unnephritic unnerve unnerved unnervous unnest unnestle unnestled unneth unnethe unnethes unnethis unnetted unnettled unneurotic unneutral unneutralized unneutrally unnew unnewly unnewness unnibbed unnibbied unnice unnicely unniceness unniched unnicked unnickeled unnickelled unnicknamed unniggard unniggardly unnigh unnimbed unnimble unnimbleness unnimbly unnipped unnitrogenized unnobilitated unnobility unnoble unnobleness unnobly unnoised unnomadic unnominated unnonsensical unnoosed unnormal unnorthern unnose unnosed unnotable unnotched unnoted unnoteworthy unnoticeable unnoticeableness unnoticeably unnoticed unnoticing unnotified unnotify unnoting unnourishable unnourished unnourishing unnovel unnovercal unnucleated unnullified unnumberable unnumberableness unnumberably unnumbered unnumberedness unnumerical unnumerous unnurtured unnutritious unnutritive unnuzzled unnymphlike unoared unobdurate unobedience unobedient unobediently unobese unobeyed unobeying unobjected unobjectionable unobjectionableness unobjectionably unobjectional unobjective unobligated unobligatory unobliged unobliging unobligingly unobligingness unobliterable unobliterated unoblivious unobnoxious unobscene unobscure unobscured unobsequious unobsequiously unobsequiousness unobservable unobservance unobservant unobservantly unobservantness unobserved unobservedly unobserving unobservingly unobsessed unobsolete unobstinate unobstruct unobstructed unobstructedly unobstructedness unobstructive unobstruent unobtainable unobtainableness unobtainably unobtained unobtruded unobtruding unobtrusive unobtrusively unobtrusiveness unobtunded unobumbrated unobverted unobviated unobvious unoccasional unoccasioned unoccidental unoccluded unoccupancy unoccupation unoccupied unoccupiedly unoccupiedness unoccurring unoceanic unocular unode unodious unodoriferous unoecumenic unoecumenical unoffendable unoffended unoffendedly unoffender unoffending unoffendingly unoffensive unoffensively unoffensiveness unoffered unofficed unofficered unofficerlike unofficial unofficialdom unofficially unofficialness unofficiating unofficinal unofficious unofficiously unofficiousness unoffset unoften unogled unoil unoiled unoiling unoily unold unomened unominous unomitted unomnipotent unomniscient Unona unonerous unontological unopaque unoped unopen unopenable unopened unopening unopenly unopenness unoperably unoperated unoperatic unoperating unoperative unoperculate unoperculated unopined unopinionated unoppignorated unopportune unopportunely unopportuneness unopposable unopposed unopposedly unopposedness unopposite unoppressed unoppressive unoppressively unoppressiveness unopprobrious unoppugned unopulence unopulent unoratorial unoratorical unorbed unorbital unorchestrated unordain unordainable unordained unorder unorderable unordered unorderly unordinarily unordinariness unordinary unordinate unordinately unordinateness unordnanced unorganic unorganical unorganically unorganicalness unorganizable unorganized unorganizedly unorganizedness unoriental unorientalness unoriented unoriginal unoriginality unoriginally unoriginalness unoriginate unoriginated unoriginatedness unoriginately unoriginateness unorigination unoriginative unoriginatively unoriginativeness unorn unornamental unornamentally unornamentalness unornamented unornate unornithological unornly unorphaned unorthodox unorthodoxically unorthodoxly unorthodoxness unorthodoxy unorthographical unorthographically unoscillating unosculated unossified unostensible unostentation unostentatious unostentatiously unostentatiousness unoutgrown unoutlawed unoutraged unoutspeakable unoutspoken unoutworn unoverclouded unovercome unoverdone unoverdrawn unoverflowing unoverhauled unoverleaped unoverlooked unoverpaid unoverpowered unoverruled unovert unovertaken unoverthrown unovervalued unoverwhelmed unowed unowing unown unowned unoxidable unoxidated unoxidizable unoxidized unoxygenated unoxygenized unpacable unpaced unpacifiable unpacific unpacified unpacifiedly unpacifiedness unpacifist unpack unpacked unpacker unpadded unpadlocked unpagan unpaganize unpaged unpaginal unpaid unpained unpainful unpaining unpainstaking unpaint unpaintability unpaintable unpaintableness unpaintably unpainted unpaintedly unpaintedness unpaired unpalatability unpalatable unpalatableness unpalatably unpalatal unpalatial unpale unpaled unpalisaded unpalisadoed unpalled unpalliable unpalliated unpalpable unpalped unpalpitating unpalsied unpampered unpanegyrized unpanel unpaneled unpanelled unpanged unpanniered unpanoplied unpantheistic unpanting unpapal unpapaverous unpaper unpapered unparaded unparadise unparadox unparagoned unparagonized unparagraphed unparallel unparallelable unparalleled unparalleledly unparalleledness unparallelness unparalyzed unparaphrased unparasitical unparcel unparceled unparceling unparcelled unparcelling unparch unparched unparching unpardon unpardonable unpardonableness unpardonably unpardoned unpardonedness unpardoning unpared unparented unparfit unpargeted unpark unparked unparking unparliamentary unparliamented unparodied unparrel unparriable unparried unparroted unparrying unparsed unparsimonious unparsonic unparsonical unpartable unpartableness unpartably unpartaken unpartaking unparted unpartial unpartiality unpartially unpartialness unparticipant unparticipated unparticipating unparticipative unparticular unparticularized unparticularizing unpartisan unpartitioned unpartizan unpartnered unpartook unparty unpass unpassable unpassableness unpassably unpassed unpassing unpassionate unpassionately unpassionateness unpassioned unpassive unpaste unpasted unpasteurized unpasting unpastor unpastoral unpastured unpatched unpatent unpatentable unpatented unpaternal unpathed unpathetic unpathwayed unpatient unpatiently unpatientness unpatriarchal unpatrician unpatriotic unpatriotically unpatriotism unpatristic unpatrolled unpatronizable unpatronized unpatronizing unpatted unpatterned unpaunch unpaunched unpauperized unpausing unpausingly unpave unpaved unpavilioned unpaving unpawed unpawn unpawned unpayable unpayableness unpayably unpaying unpayment unpeace unpeaceable unpeaceableness unpeaceably unpeaceful unpeacefully unpeacefulness unpealed unpearled unpebbled unpeccable unpecked unpecuniarily unpedagogical unpedantic unpeddled unpedestal unpedigreed unpeel unpeelable unpeelableness unpeeled unpeerable unpeered unpeg unpejorative unpelagic unpelted unpen unpenal unpenalized unpenanced unpenciled unpencilled unpenetrable unpenetrated unpenetrating unpenitent unpenitently unpenitentness unpenned unpennied unpennoned unpensionable unpensionableness unpensioned unpensioning unpent unpenurious unpeople unpeopled unpeopling unperceived unperceivedly unperceptible unperceptibly unperceptive unperch unperched unpercipient unpercolated unpercussed unperfect unperfected unperfectedly unperfectedness unperfectly unperfectness unperfidious unperflated unperforate unperforated unperformable unperformance unperformed unperforming unperfumed unperilous unperiodic unperiodical unperiphrased unperishable unperishableness unperishably unperished unperishing unperjured unpermanency unpermanent unpermanently unpermeable unpermeated unpermissible unpermissive unpermitted unpermitting unpermixed unpernicious unperpendicular unperpetrated unperpetuated unperplex unperplexed unperplexing unpersecuted unpersecutive unperseverance unpersevering unperseveringly unperseveringness unpersonable unpersonableness unpersonal unpersonality unpersonified unpersonify unperspicuous unperspirable unperspiring unpersuadable unpersuadableness unpersuadably unpersuaded unpersuadedness unpersuasibleness unpersuasion unpersuasive unpersuasively unpersuasiveness unpertaining unpertinent unpertinently unperturbed unperturbedly unperturbedness unperuked unperused unpervaded unperverse unpervert unperverted unpervious unpessimistic unpestered unpestilential unpetal unpetitioned unpetrified unpetrify unpetticoated unpetulant unpharasaic unpharasaical unphased unphenomenal unphilanthropic unphilanthropically unphilological unphilosophic unphilosophically unphilosophicalness unphilosophize unphilosophized unphilosophy unphlegmatic unphonetic unphoneticness unphonographed unphosphatized unphotographed unphrasable unphrasableness unphrased unphrenological unphysical unphysically unphysicianlike unphysicked unphysiological unpicaresque unpick unpickable unpicked unpicketed unpickled unpictorial unpictorially unpicturability unpicturable unpictured unpicturesque unpicturesquely unpicturesqueness unpiece unpieced unpierceable unpierced unpiercing unpiety unpigmented unpile unpiled unpilfered unpilgrimlike unpillaged unpillared unpilled unpilloried unpillowed unpiloted unpimpled unpin unpinched unpining unpinion unpinioned unpinked unpinned unpious unpiped unpiqued unpirated unpitched unpiteous unpiteously unpiteousness unpitiable unpitiably unpitied unpitiedly unpitiedness unpitiful unpitifully unpitifulness unpitted unpitying unpityingly unpityingness unplacable unplacably unplacated unplace unplaced unplacid unplagiarized unplagued unplaid unplain unplained unplainly unplainness unplait unplaited unplan unplaned unplanished unplank unplanked unplanned unplannedly unplannedness unplant unplantable unplanted unplantlike unplashed unplaster unplastered unplastic unplat unplated unplatted unplausible unplausibleness unplausibly unplayable unplayed unplayful unplaying unpleached unpleadable unpleaded unpleading unpleasable unpleasant unpleasantish unpleasantly unpleasantness unpleasantry unpleased unpleasing unpleasingly unpleasingness unpleasurable unpleasurably unpleasure unpleat unpleated unplebeian unpledged unplenished unplenteous unplentiful unplentifulness unpliable unpliableness unpliably unpliancy unpliant unpliantly unplied unplighted unplodding unplotted unplotting unplough unploughed unplow unplowed unplucked unplug unplugged unplugging unplumb unplumbed unplume unplumed unplummeted unplump unplundered unplunge unplunged unplutocratic unplutocratically unpoached unpocket unpocketed unpodded unpoetic unpoetically unpoeticalness unpoeticized unpoetize unpoetized unpoignard unpointed unpointing unpoise unpoised unpoison unpoisonable unpoisoned unpoisonous unpolarizable unpolarized unpoled unpolemical unpolemically unpoliced unpolicied unpolish unpolishable unpolished unpolishedness unpolite unpolitely unpoliteness unpolitic unpolitical unpolitically unpoliticly unpollarded unpolled unpollutable unpolluted unpollutedly unpolluting unpolymerized unpompous unpondered unpontifical unpooled unpope unpopular unpopularity unpopularize unpopularly unpopularness unpopulate unpopulated unpopulous unpopulousness unporous unportable unportended unportentous unportioned unportly unportmanteaued unportraited unportrayable unportrayed unportuous unposed unposing unpositive unpossessable unpossessed unpossessedness unpossessing unpossibility unpossible unpossibleness unpossibly unposted unpostered unposthumous unpostmarked unpostponable unpostponed unpostulated unpot unpotted unpouched unpoulticed unpounced unpounded unpoured unpowdered unpower unpowerful unpowerfulness unpracticability unpracticable unpracticableness unpracticably unpractical unpracticality unpractically unpracticalness unpractice unpracticed unpragmatical unpraisable unpraise unpraised unpraiseful unpraiseworthy unpranked unpray unprayable unprayed unprayerful unpraying unpreach unpreached unpreaching unprecarious unprecautioned unpreceded unprecedented unprecedentedly unprecedentedness unprecedential unprecedently unprecious unprecipitate unprecipitated unprecise unprecisely unpreciseness unprecluded unprecludible unprecocious unpredacious unpredestinated unpredestined unpredicable unpredicated unpredict unpredictable unpredictableness unpredictably unpredicted unpredictedness unpredicting unpredisposed unpredisposing unpreened unprefaced unpreferable unpreferred unprefigured unprefined unprefixed unpregnant unprejudged unprejudicated unprejudice unprejudiced unprejudicedly unprejudicedness unprejudiciable unprejudicial unprejudicially unprejudicialness unprelatic unprelatical unpreluded unpremature unpremeditate unpremeditated unpremeditatedly unpremeditatedness unpremeditately unpremeditation unpremonished unpremonstrated unprenominated unprenticed unpreoccupied unpreordained unpreparation unprepare unprepared unpreparedly unpreparedness unpreparing unpreponderated unpreponderating unprepossessedly unprepossessing unprepossessingly unprepossessingness unpreposterous unpresaged unpresageful unpresaging unpresbyterated unprescient unprescinded unprescribed unpresentability unpresentable unpresentableness unpresentably unpresented unpreservable unpreserved unpresidential unpresiding unpressed unpresumable unpresumed unpresuming unpresumingness unpresumptuous unpresumptuously unpresupposed unpretended unpretending unpretendingly unpretendingness unpretentious unpretentiously unpretentiousness unpretermitted unpreternatural unprettiness unpretty unprevailing unprevalent unprevaricating unpreventable unpreventableness unpreventably unprevented unpreventible unpreventive unpriceably unpriced unpricked unprickled unprickly unpriest unpriestlike unpriestly unpriggish unprim unprime unprimed unprimitive unprimmed unprince unprincelike unprinceliness unprincely unprincess unprincipal unprinciple unprincipled unprincipledly unprincipledness unprint unprintable unprintableness unprintably unprinted unpriority unprismatic unprison unprisonable unprisoned unprivate unprivileged unprizable unprized unprobated unprobationary unprobed unprobity unproblematic unproblematical unprocessed unproclaimed unprocrastinated unprocreant unprocreated unproctored unprocurable unprocurableness unprocure unprocured unproded unproduceable unproduceableness unproduceably unproduced unproducedness unproducible unproducibleness unproducibly unproductive unproductively unproductiveness unproductivity unprofanable unprofane unprofaned unprofessed unprofessing unprofessional unprofessionalism unprofessionally unprofessorial unproffered unproficiency unproficient unproficiently unprofit unprofitable unprofitableness unprofitably unprofited unprofiteering unprofiting unprofound unprofuse unprofusely unprofuseness unprognosticated unprogressed unprogressive unprogressively unprogressiveness unprohibited unprohibitedness unprohibitive unprojected unprojecting unproliferous unprolific unprolix unprologued unprolonged unpromiscuous unpromise unpromised unpromising unpromisingly unpromisingness unpromotable unpromoted unprompted unpromptly unpromulgated unpronounce unpronounceable unpronounced unpronouncing unproofread unprop unpropagated unpropelled unpropense unproper unproperly unproperness unpropertied unprophesiable unprophesied unprophetic unprophetical unprophetically unprophetlike unpropitiable unpropitiated unpropitiatedness unpropitiatory unpropitious unpropitiously unpropitiousness unproportion unproportionable unproportionableness unproportionably unproportional unproportionality unproportionally unproportionate unproportionately unproportionateness unproportioned unproportionedly unproportionedness unproposed unproposing unpropounded unpropped unpropriety unprorogued unprosaic unproscribable unproscribed unprosecutable unprosecuted unprosecuting unproselyte unproselyted unprosodic unprospected unprospective unprosperably unprospered unprosperity unprosperous unprosperously unprosperousness unprostitute unprostituted unprostrated unprotectable unprotected unprotectedly unprotectedness unprotective unprotestant unprotestantize unprotested unprotesting unprotruded unprotruding unprotrusive unproud unprovability unprovable unprovableness unprovably unproved unprovedness unproven unproverbial unprovidable unprovide unprovided unprovidedly unprovidedness unprovidenced unprovident unprovidential unprovidently unprovincial unproving unprovision unprovisioned unprovocative unprovokable unprovoke unprovoked unprovokedly unprovokedness unprovoking unproximity unprudence unprudent unprudently unpruned unprying unpsychic unpsychological unpublic unpublicity unpublishable unpublishableness unpublishably unpublished unpucker unpuckered unpuddled unpuffed unpuffing unpugilistic unpugnacious unpulled unpulleyed unpulped unpulverable unpulverize unpulverized unpulvinate unpulvinated unpumicated unpummeled unpummelled unpumpable unpumped unpunched unpunctated unpunctilious unpunctual unpunctuality unpunctually unpunctuated unpunctuating unpunishable unpunishably unpunished unpunishedly unpunishedness unpunishing unpunishingly unpurchasable unpurchased unpure unpurely unpureness unpurgeable unpurged unpurifiable unpurified unpurifying unpuritan unpurled unpurloined unpurpled unpurported unpurposed unpurposelike unpurposely unpurposing unpurse unpursed unpursuable unpursued unpursuing unpurveyed unpushed unput unputrefiable unputrefied unputrid unputtied unpuzzle unquadded unquaffed unquailed unquailing unquailingly unquakerlike unquakerly unquaking unqualifiable unqualification unqualified unqualifiedly unqualifiedness unqualify unqualifying unqualifyingly unqualitied unquality unquantified unquantitative unquarantined unquarreled unquarreling unquarrelled unquarrelling unquarrelsome unquarried unquartered unquashed unquayed unqueen unqueened unqueening unqueenlike unqueenly unquellable unquelled unquenchable unquenchableness unquenchably unquenched unqueried unquested unquestionability unquestionable unquestionableness unquestionably unquestionate unquestioned unquestionedly unquestionedness unquestioning unquestioningly unquestioningness unquibbled unquibbling unquick unquickened unquickly unquicksilvered unquiescence unquiescent unquiescently unquiet unquietable unquieted unquieting unquietly unquietness unquietude unquilleted unquilted unquit unquittable unquitted unquivered unquivering unquizzable unquizzed unquotable unquote unquoted unrabbeted unrabbinical unraced unrack unracked unracking unradiated unradical unradicalize unraffled unraftered unraided unrailed unrailroaded unrailwayed unrainy unraised unrake unraked unraking unrallied unram unrambling unramified unrammed unramped unranched unrancid unrancored unrandom unrank unranked unransacked unransomable unransomed unrapacious unraped unraptured unrare unrarefied unrash unrasped unratable unrated unratified unrational unrattled unravaged unravel unravelable unraveled unraveler unraveling unravellable unravelled unraveller unravelling unravelment unraving unravished unravishing unray unrayed unrazed unrazored unreachable unreachably unreached unreactive unread unreadability unreadable unreadableness unreadably unreadily unreadiness unready unreal unrealism unrealist unrealistic unreality unrealizable unrealize unrealized unrealizing unreally unrealmed unrealness unreaped unreared unreason unreasonability unreasonable unreasonableness unreasonably unreasoned unreasoning unreasoningly unreassuring unreassuringly unreave unreaving unrebated unrebel unrebellious unrebuffable unrebuffably unrebuilt unrebukable unrebukably unrebuked unrebuttable unrebuttableness unrebutted unrecallable unrecallably unrecalled unrecalling unrecantable unrecanted unrecaptured unreceding unreceipted unreceivable unreceived unreceiving unrecent unreceptant unreceptive unreceptivity unreciprocal unreciprocated unrecited unrecked unrecking unreckingness unreckon unreckonable unreckoned unreclaimable unreclaimably unreclaimed unreclaimedness unreclaiming unreclined unreclining unrecognition unrecognizable unrecognizableness unrecognizably unrecognized unrecognizing unrecognizingly unrecoined unrecollected unrecommendable unrecompensable unrecompensed unreconcilable unreconcilableness unreconcilably unreconciled unrecondite unreconnoitered unreconsidered unreconstructed unrecordable unrecorded unrecordedness unrecording unrecountable unrecounted unrecoverable unrecoverableness unrecoverably unrecovered unrecreant unrecreated unrecreating unrecriminative unrecruitable unrecruited unrectangular unrectifiable unrectifiably unrectified unrecumbent unrecuperated unrecurrent unrecurring unrecusant unred unredacted unredeemable unredeemableness unredeemably unredeemed unredeemedly unredeemedness unredeeming unredressable unredressed unreduceable unreduced unreducible unreducibleness unreducibly unreduct unreefed unreel unreelable unreeled unreeling unreeve unreeving unreferenced unreferred unrefilled unrefine unrefined unrefinedly unrefinedness unrefinement unrefining unrefitted unreflected unreflecting unreflectingly unreflectingness unreflective unreflectively unreformable unreformed unreformedness unreforming unrefracted unrefracting unrefrainable unrefrained unrefraining unrefreshed unrefreshful unrefreshing unrefreshingly unrefrigerated unrefulgent unrefunded unrefunding unrefusable unrefusably unrefused unrefusing unrefusingly unrefutable unrefuted unrefuting unregainable unregained unregal unregaled unregality unregally unregard unregardable unregardant unregarded unregardedly unregardful unregeneracy unregenerate unregenerately unregenerateness unregenerating unregeneration unregimented unregistered unregressive unregretful unregretfully unregretfulness unregrettable unregretted unregretting unregular unregulated unregulative unregurgitated unrehabilitated unrehearsable unrehearsed unrehearsing unreigning unreimbodied unrein unreined unreinstated unreiterable unreiterated unrejectable unrejoiced unrejoicing unrejuvenated unrelapsing unrelated unrelatedness unrelating unrelational unrelative unrelatively unrelaxable unrelaxed unrelaxing unrelaxingly unreleasable unreleased unreleasing unrelegated unrelentance unrelented unrelenting unrelentingly unrelentingness unrelentor unrelevant unreliability unreliable unreliableness unreliably unreliance unrelievable unrelievableness unrelieved unrelievedly unreligion unreligioned unreligious unreligiously unreligiousness unrelinquishable unrelinquishably unrelinquished unrelinquishing unrelishable unrelished unrelishing unreluctant unreluctantly unremaining unremanded unremarkable unremarked unremarried unremediable unremedied unremember unrememberable unremembered unremembering unremembrance unreminded unremissible unremittable unremitted unremittedly unremittent unremittently unremitting unremittingly unremittingness unremonstrant unremonstrated unremonstrating unremorseful unremorsefully unremote unremotely unremounted unremovable unremovableness unremovably unremoved unremunerated unremunerating unremunerative unremuneratively unremunerativeness unrenderable unrendered unrenewable unrenewed unrenounceable unrenounced unrenouncing unrenovated unrenowned unrenownedly unrenownedness unrent unrentable unrented unreorganized unrepaid unrepair unrepairable unrepaired unrepartable unreparted unrepealability unrepealable unrepealableness unrepealably unrepealed unrepeatable unrepeated unrepellable unrepelled unrepellent unrepent unrepentable unrepentance unrepentant unrepentantly unrepentantness unrepented unrepenting unrepentingly unrepentingness unrepetitive unrepined unrepining unrepiningly unrepiqued unreplaceable unreplaced unreplenished unrepleviable unreplevined unrepliable unrepliably unreplied unreplying unreportable unreported unreportedly unreportedness unrepose unreposed unreposeful unreposefulness unreposing unrepossessed unreprehended unrepresentable unrepresentation unrepresentative unrepresented unrepresentedness unrepressed unrepressible unreprievable unreprievably unreprieved unreprimanded unreprinted unreproachable unreproachableness unreproachably unreproached unreproachful unreproachfully unreproaching unreproachingly unreprobated unreproducible unreprovable unreprovableness unreprovably unreproved unreprovedly unreprovedness unreproving unrepublican unrepudiable unrepudiated unrepugnant unrepulsable unrepulsed unrepulsing unrepulsive unreputable unreputed unrequalified unrequested unrequickened unrequired unrequisite unrequitable unrequital unrequited unrequitedly unrequitedness unrequitement unrequiter unrequiting unrescinded unrescued unresemblant unresembling unresented unresentful unresenting unreserve unreserved unreservedly unreservedness unresifted unresigned unresistable unresistably unresistance unresistant unresistantly unresisted unresistedly unresistedness unresistible unresistibleness unresistibly unresisting unresistingly unresistingness unresolute unresolvable unresolve unresolved unresolvedly unresolvedness unresolving unresonant unresounded unresounding unresourceful unresourcefulness unrespect unrespectability unrespectable unrespected unrespectful unrespectfully unrespectfulness unrespective unrespectively unrespectiveness unrespirable unrespired unrespited unresplendent unresponding unresponsible unresponsibleness unresponsive unresponsively unresponsiveness unrest unrestable unrested unrestful unrestfully unrestfulness unresting unrestingly unrestingness unrestorable unrestored unrestrainable unrestrainably unrestrained unrestrainedly unrestrainedness unrestraint unrestrictable unrestricted unrestrictedly unrestrictedness unrestrictive unresty unresultive unresumed unresumptive unretainable unretained unretaliated unretaliating unretardable unretarded unretentive unreticent unretinued unretired unretiring unretorted unretouched unretractable unretracted unretreating unretrenchable unretrenched unretrievable unretrieved unretrievingly unretted unreturnable unreturnably unreturned unreturning unreturningly unrevealable unrevealed unrevealedness unrevealing unrevealingly unrevelationize unrevenged unrevengeful unrevengefulness unrevenging unrevengingly unrevenue unrevenued unreverberated unrevered unreverence unreverenced unreverend unreverendly unreverent unreverential unreverently unreverentness unreversable unreversed unreversible unreverted unrevertible unreverting unrevested unrevetted unreviewable unreviewed unreviled unrevised unrevivable unrevived unrevocable unrevocableness unrevocably unrevoked unrevolted unrevolting unrevolutionary unrevolutionized unrevolved unrevolving unrewardable unrewarded unrewardedly unrewarding unreworded unrhetorical unrhetorically unrhetoricalness unrhyme unrhymed unrhythmic unrhythmical unrhythmically unribbed unribboned unrich unriched unricht unricked unrid unridable unridableness unridably unridden unriddle unriddleable unriddled unriddler unriddling unride unridely unridered unridged unridiculed unridiculous unrife unriffled unrifled unrifted unrig unrigged unrigging unright unrightable unrighted unrighteous unrighteously unrighteousness unrightful unrightfully unrightfulness unrightly unrightwise unrigid unrigorous unrimpled unrind unring unringable unringed unringing unrinsed unrioted unrioting unriotous unrip unripe unriped unripely unripened unripeness unripening unrippable unripped unripping unrippled unrippling unripplingly unrisen unrising unriskable unrisked unrisky unritual unritualistic unrivalable unrivaled unrivaledly unrivaledness unrived unriven unrivet unriveted unriveting unroaded unroadworthy unroaming unroast unroasted unrobbed unrobe unrobed unrobust unrocked unrococo unrodded unroiled unroll unrollable unrolled unroller unrolling unrollment unromantic unromantical unromantically unromanticalness unromanticized unroof unroofed unroofing unroomy unroost unroosted unroosting unroot unrooted unrooting unrope unroped unrosed unrosined unrostrated unrotated unrotating unroted unrotted unrotten unrotund unrouged unrough unroughened unround unrounded unrounding unrousable unroused unroutable unrouted unrove unroved unroving unrow unrowed unroweled unroyal unroyalist unroyalized unroyally unroyalness Unrra unrubbed unrubbish unrubified unrubrical unrubricated unruddered unruddled unrueful unruffable unruffed unruffle unruffled unruffling unrugged unruinable unruinated unruined unrulable unrulableness unrule unruled unruledly unruledness unruleful unrulily unruliness unruly unruminated unruminating unruminatingly unrummaged unrumored unrumple unrumpled unrun unrung unruptured unrural unrushed Unrussian unrust unrusted unrustic unrusticated unrustling unruth unsabbatical unsabered unsabled unsabred unsaccharic unsacerdotal unsacerdotally unsack unsacked unsacramental unsacramentally unsacramentarian unsacred unsacredly unsacrificeable unsacrificeably unsacrificed unsacrificial unsacrificing unsacrilegious unsad unsadden unsaddened unsaddle unsaddled unsaddling unsafe unsafeguarded unsafely unsafeness unsafety unsagacious unsage unsagging unsaid unsailable unsailed unsailorlike unsaint unsainted unsaintlike unsaintly unsalability unsalable unsalableness unsalably unsalaried unsalesmanlike unsaline unsalivated unsallying unsalmonlike unsalt unsaltable unsaltatory unsalted unsalubrious unsalutary unsaluted unsaluting unsalvability unsalvable unsalvableness unsalvaged unsalved unsampled unsanctification unsanctified unsanctifiedly unsanctifiedness unsanctify unsanctifying unsanctimonious unsanctimoniously unsanctimoniousness unsanction unsanctionable unsanctioned unsanctioning unsanctitude unsanctity unsanctuaried unsandaled unsanded unsane unsanguinary unsanguine unsanguinely unsanguineness unsanguineous unsanguineously unsanitariness unsanitary unsanitated unsanitation unsanity unsaponifiable unsaponified unsapped unsappy unsarcastic unsardonic unsartorial unsash unsashed unsatable unsatanic unsated unsatedly unsatedness unsatiability unsatiable unsatiableness unsatiably unsatiate unsatiated unsatiating unsatin unsatire unsatirical unsatirically unsatirize unsatirized unsatisfaction unsatisfactorily unsatisfactoriness unsatisfactory unsatisfiable unsatisfiableness unsatisfiably unsatisfied unsatisfiedly unsatisfiedness unsatisfying unsatisfyingly unsatisfyingness unsaturable unsaturated unsaturatedly unsaturatedness unsaturation unsatyrlike unsauced unsaurian unsavable unsaveable unsaved unsaving unsavored unsavoredly unsavoredness unsavorily unsavoriness unsavory unsawed unsawn unsay unsayability unsayable unscabbard unscabbarded unscabbed unscaffolded unscalable unscalableness unscalably unscale unscaled unscaledness unscalloped unscaly unscamped unscandalize unscandalized unscandalous unscannable unscanned unscanted unscanty unscarb unscarce unscared unscarfed unscarified unscarred unscathed unscathedly unscathedness unscattered unscavengered unscenic unscent unscented unscepter unsceptered unsceptical unsceptre unsceptred unscheduled unschematic unschematized unscholar unscholarlike unscholarly unscholastic unschool unschooled unschooledly unschooledness unscienced unscientific unscientifical unscientifically unscintillating unscioned unscissored unscoffed unscoffing unscolded unsconced unscooped unscorched unscored unscorified unscoring unscorned unscornful unscornfully unscornfulness unscotch unscotched unscottify unscoured unscourged unscowling unscramble unscrambling unscraped unscratchable unscratched unscratching unscratchingly unscrawled unscreen unscreenable unscreenably unscreened unscrew unscrewable unscrewed unscrewing unscribal unscribbled unscribed unscrimped unscriptural unscripturally unscripturalness unscrubbed unscrupled unscrupulosity unscrupulous unscrupulously unscrupulousness unscrutable unscrutinized unscrutinizing unscrutinizingly unsculptural unsculptured unscummed unscutcheoned unseafaring unseal unsealable unsealed unsealer unsealing unseam unseamanlike unseamanship unseamed unseaming unsearchable unsearchableness unsearchably unsearched unsearcherlike unsearching unseared unseason unseasonable unseasonableness unseasonably unseasoned unseat unseated unseaworthiness unseaworthy unseceding unsecluded unseclusive unseconded unsecrecy unsecret unsecretarylike unsecreted unsecreting unsecretly unsecretness unsectarian unsectarianism unsectarianize unsectional unsecular unsecularize unsecularized unsecure unsecured unsecuredly unsecuredness unsecurely unsecureness unsecurity unsedate unsedentary unseditious unseduce unseduced unseducible unseductive unsedulous unsee unseeable unseeded unseeing unseeingly unseeking unseeming unseemingly unseemlily unseemliness unseemly unseen unseethed unsegmented unsegregable unsegregated unsegregatedness unseignorial unseismic unseizable unseized unseldom unselect unselected unselecting unselective unself unselfish unselfishly unselfishness unselflike unselfness unselling unsenatorial unsenescent unsensational unsense unsensed unsensibility unsensible unsensibleness unsensibly unsensitive unsensitize unsensitized unsensory unsensual unsensualize unsensualized unsensually unsensuous unsensuousness unsent unsentenced unsententious unsentient unsentimental unsentimentalist unsentimentality unsentimentalize unsentimentally unsentineled unsentinelled unseparable unseparableness unseparably unseparate unseparated unseptate unseptated unsepulcher unsepulchered unsepulchral unsepulchre unsepulchred unsepultured unsequenced unsequential unsequestered unseraphical unserenaded unserene unserflike unserious unseriousness unserrated unserried unservable unserved unserviceability unserviceable unserviceableness unserviceably unservicelike unservile unsesquipedalian unset unsetting unsettle unsettleable unsettled unsettledness unsettlement unsettling unseverable unseverableness unsevere unsevered unseveredly unseveredness unsew unsewed unsewered unsewing unsewn unsex unsexed unsexing unsexlike unsexual unshackle unshackled unshackling unshade unshaded unshadow unshadowable unshadowed unshady unshafted unshakable unshakably unshakeable unshakeably unshaken unshakenly unshakenness unshaking unshakingness unshaled unshamable unshamableness unshamably unshameable unshameableness unshameably unshamed unshamefaced unshamefacedness unshameful unshamefully unshamefulness unshammed unshanked unshapable unshape unshapeable unshaped unshapedness unshapeliness unshapely unshapen unshapenly unshapenness unsharable unshared unsharedness unsharing unsharp unsharped unsharpen unsharpened unsharpening unsharping unshattered unshavable unshaveable unshaved unshavedly unshavedness unshaven unshavenly unshavenness unshawl unsheaf unsheared unsheathe unsheathed unsheathing unshed unsheet unsheeted unsheeting unshell unshelled unshelling unshelterable unsheltered unsheltering unshelve unshepherded unshepherding unsheriff unshewed unshieldable unshielded unshielding unshiftable unshifted unshiftiness unshifting unshifty unshimmering unshingled unshining unship unshiplike unshipment unshipped unshipping unshipshape unshipwrecked unshirking unshirted unshivered unshivering unshockable unshocked unshod unshodden unshoe unshoed unshoeing unshop unshore unshored unshorn unshort unshortened unshot unshotted unshoulder unshouted unshouting unshoved unshoveled unshowable unshowed unshowmanlike unshown unshowy unshredded unshrew unshrewd unshrewish unshrill unshrine unshrined unshrinement unshrink unshrinkability unshrinkable unshrinking unshrinkingly unshrived unshriveled unshrivelled unshriven unshroud unshrouded unshrubbed unshrugging unshrunk unshrunken unshuddering unshuffle unshuffled unshunnable unshunned unshunted unshut unshutter unshuttered unshy unshyly unshyness unsibilant unsiccated unsick unsickened unsicker unsickerly unsickerness unsickled unsickly unsided unsiding unsiege unsifted unsighing unsight unsightable unsighted unsighting unsightliness unsightly unsigmatic unsignable unsignaled unsignalized unsignalled unsignatured unsigned unsigneted unsignificancy unsignificant unsignificantly unsignificative unsignified unsignifying unsilenceable unsilenceably unsilenced unsilent unsilentious unsilently unsilicified unsilly unsilvered unsimilar unsimilarity unsimilarly unsimple unsimplicity unsimplified unsimplify unsimulated unsimultaneous unsin unsincere unsincerely unsincereness unsincerity unsinew unsinewed unsinewing unsinewy unsinful unsinfully unsinfulness unsing unsingability unsingable unsingableness unsinged unsingle unsingled unsingleness unsingular unsinister unsinkability unsinkable unsinking unsinnable unsinning unsinningness unsiphon unsipped unsister unsistered unsisterliness unsisterly unsizable unsizableness unsizeable unsizeableness unsized unskaithd unskeptical unsketchable unsketched unskewed unskewered unskilful unskilfully unskilled unskilledly unskilledness unskillful unskillfully unskillfulness unskimmed unskin unskinned unskirted unslack unslacked unslackened unslackening unslacking unslagged unslain unslakable unslakeable unslaked unslammed unslandered unslanderous unslapped unslashed unslate unslated unslating unslaughtered unslave unslayable unsleaved unsleek unsleepably unsleeping unsleepingly unsleepy unsleeve unsleeved unslender unslept unsliced unsliding unslighted unsling unslip unslipped unslippery unslipping unslit unslockened unsloped unslopped unslot unslothful unslothfully unslothfulness unslotted unsloughed unsloughing unslow unsluggish unsluice unsluiced unslumbering unslumberous unslumbrous unslung unslurred unsly unsmacked unsmart unsmartly unsmartness unsmeared unsmelled unsmelling unsmelted unsmiled unsmiling unsmilingly unsmilingness unsmirched unsmirking unsmitten unsmokable unsmokeable unsmoked unsmokified unsmoking unsmoky unsmooth unsmoothed unsmoothly unsmoothness unsmote unsmotherable unsmothered unsmudged unsmuggled unsmutched unsmutted unsmutty unsnaffled unsnagged unsnaggled unsnaky unsnap unsnapped unsnare unsnared unsnarl unsnatch unsnatched unsneck unsneering unsnib unsnipped unsnobbish unsnoring unsnouted unsnow unsnubbable unsnubbed unsnuffed unsoaked unsoaped unsoarable unsober unsoberly unsoberness unsobriety unsociability unsociable unsociableness unsociably unsocial unsocialism unsocialistic unsociality unsocializable unsocialized unsocially unsocialness unsociological unsocket unsodden unsoft unsoftened unsoftening unsoggy unsoil unsoiled unsoiledness unsolaced unsolacing unsolar unsold unsolder unsoldered unsoldering unsoldier unsoldiered unsoldierlike unsoldierly unsole unsoled unsolemn unsolemness unsolemnize unsolemnized unsolemnly unsolicitated unsolicited unsolicitedly unsolicitous unsolicitously unsolicitousness unsolid unsolidarity unsolidifiable unsolidified unsolidity unsolidly unsolidness unsolitary unsolubility unsoluble unsolvable unsolvableness unsolvably unsolved unsomatic unsomber unsombre unsome unson unsonable unsonant unsonlike unsonneted unsonorous unsonsy unsoothable unsoothed unsoothfast unsoothing unsooty unsophistical unsophistically unsophisticate unsophisticated unsophisticatedly unsophisticatedness unsophistication unsophomoric unsordid unsore unsorrowed unsorrowing unsorry unsort unsortable unsorted unsorting unsotted unsought unsoul unsoulful unsoulfully unsoulish unsound unsoundable unsoundableness unsounded unsounding unsoundly unsoundness unsour unsoured unsoused unsovereign unsowed unsown unspaced unspacious unspaded unspan unspangled unspanked unspanned unspar unsparable unspared unsparing unsparingly unsparingness unsparkling unsparred unsparse unspatial unspatiality unspattered unspawned unspayed unspeak unspeakability unspeakable unspeakableness unspeakably unspeaking unspeared unspecialized unspecializing unspecific unspecified unspecifiedly unspecious unspecked unspeckled unspectacled unspectacular unspectacularly unspecterlike unspectrelike unspeculating unspeculative unspeculatively unsped unspeed unspeedy unspeered unspell unspellable unspelled unspelt unspendable unspending unspent unspewed unsphere unsphered unsphering unspiable unspiced unspicy unspied unspike unspillable unspin unspinsterlike unspinsterlikeness unspiral unspired unspirit unspirited unspiritedly unspiriting unspiritual unspirituality unspiritualize unspiritualized unspiritually unspiritualness unspissated unspit unspited unspiteful unspitted unsplashed unsplattered unsplayed unspleened unspleenish unspleenishly unsplendid unspliced unsplinted unsplintered unsplit unspoil unspoilable unspoilableness unspoilably unspoiled unspoken unspokenly unsponged unspongy unsponsored unspontaneous unspontaneously unspookish unsported unsportful unsporting unsportive unsportsmanlike unsportsmanly unspot unspotlighted unspottable unspotted unspottedly unspottedness unspoused unspouselike unspouted unsprained unsprayed unspread unsprightliness unsprightly unspring unspringing unspringlike unsprinkled unsprinklered unsprouted unsproutful unsprouting unspruced unsprung unspun unspurned unspurred unspying unsquandered unsquarable unsquare unsquared unsquashed unsqueamish unsqueezable unsqueezed unsquelched unsquinting unsquire unsquired unsquirelike unsquirted unstabbed unstability unstable unstabled unstableness unstablished unstably unstack unstacked unstacker unstaffed unstaged unstaggered unstaggering unstagnating unstagy unstaid unstaidly unstaidness unstain unstainable unstainableness unstained unstainedly unstainedness unstaled unstalked unstalled unstammering unstamped unstampeded unstanch unstanchable unstandard unstandardized unstanzaic unstar unstarch unstarched unstarlike unstarred unstarted unstarting unstartled unstarved unstatable unstate unstateable unstated unstately unstatesmanlike unstatic unstating unstation unstationary unstationed unstatistic unstatistical unstatued unstatuesque unstatutable unstatutably unstaunch unstaunchable unstaunched unstavable unstaveable unstaved unstayable unstayed unstayedness unstaying unsteadfast unsteadfastly unsteadfastness unsteadied unsteadily unsteadiness unsteady unsteadying unstealthy unsteamed unsteaming unsteck unstecked unsteel unsteeled unsteep unsteeped unsteepled unsteered unstemmable unstemmed unstentorian unstep unstercorated unstereotyped unsterile unsterilized unstern unstethoscoped unstewardlike unstewed unstick unsticking unstickingness unsticky unstiffen unstiffened unstifled unstigmatized unstill unstilled unstillness unstilted unstimulated unstimulating unsting unstinged unstinging unstinted unstintedly unstinting unstintingly unstippled unstipulated unstirrable unstirred unstirring unstitch unstitched unstitching unstock unstocked unstocking unstockinged unstoic unstoical unstoically unstoicize unstoked unstoken unstolen unstonable unstone unstoned unstoniness unstony unstooping unstop unstoppable unstopped unstopper unstoppered unstopple unstore unstored unstoried unstormed unstormy unstout unstoved unstow unstowed unstraddled unstrafed unstraight unstraightened unstraightforward unstraightness unstrain unstrained unstraitened unstrand unstranded unstrange unstrangered unstrangled unstrangulable unstrap unstrapped unstrategic unstrategically unstratified unstraying unstreaked unstrength unstrengthen unstrengthened unstrenuous unstressed unstressedly unstressedness unstretch unstretched unstrewed unstrewn unstriated unstricken unstrictured unstridulous unstrike unstriking unstring unstringed unstringing unstrip unstriped unstripped unstriving unstroked unstrong unstructural unstruggling unstrung unstubbed unstubborn unstuccoed unstuck unstudded unstudied unstudious unstuff unstuffed unstuffing unstultified unstumbling unstung unstunned unstunted unstupefied unstupid unstuttered unstuttering unsty unstyled unstylish unstylishly unstylishness unsubdivided unsubduable unsubduableness unsubduably unsubducted unsubdued unsubduedly unsubduedness unsubject unsubjectable unsubjected unsubjectedness unsubjection unsubjective unsubjectlike unsubjugate unsubjugated unsublimable unsublimated unsublimed unsubmerged unsubmergible unsubmerging unsubmission unsubmissive unsubmissively unsubmissiveness unsubmitted unsubmitting unsubordinate unsubordinated unsuborned unsubpoenaed unsubscribed unsubscribing unsubservient unsubsided unsubsidiary unsubsiding unsubsidized unsubstanced unsubstantial unsubstantiality unsubstantialize unsubstantially unsubstantialness unsubstantiate unsubstantiated unsubstantiation unsubstituted unsubtle unsubtleness unsubtlety unsubtly unsubtracted unsubventioned unsubventionized unsubversive unsubvertable unsubverted unsubvertive unsucceedable unsucceeded unsucceeding unsuccess unsuccessful unsuccessfully unsuccessfulness unsuccessive unsuccessively unsuccessiveness unsuccinct unsuccorable unsuccored unsucculent unsuccumbing unsucked unsuckled unsued unsufferable unsufferableness unsufferably unsuffered unsuffering unsufficed unsufficience unsufficiency unsufficient unsufficiently unsufficing unsufficingness unsufflated unsuffocate unsuffocated unsuffocative unsuffused unsugared unsugary unsuggested unsuggestedness unsuggestive unsuggestiveness unsuit unsuitability unsuitable unsuitableness unsuitably unsuited unsuiting unsulky unsullen unsulliable unsullied unsulliedly unsulliedness unsulphonated unsulphureous unsulphurized unsultry unsummable unsummarized unsummed unsummered unsummerlike unsummerly unsummonable unsummoned unsumptuary unsumptuous unsun unsunburned unsundered unsung unsunk unsunken unsunned unsunny unsuperable unsuperannuated unsupercilious unsuperficial unsuperfluous unsuperior unsuperlative unsupernatural unsupernaturalize unsupernaturalized unsuperscribed unsuperseded unsuperstitious unsupervised unsupervisedly unsupped unsupplantable unsupplanted unsupple unsuppled unsupplemented unsuppliable unsupplicated unsupplied unsupportable unsupportableness unsupportably unsupported unsupportedly unsupportedness unsupporting unsupposable unsupposed unsuppressed unsuppressible unsuppressibly unsuppurated unsuppurative unsupreme unsurcharge unsurcharged unsure unsurfaced unsurfeited unsurfeiting unsurgical unsurging unsurmised unsurmising unsurmountable unsurmountableness unsurmountably unsurmounted unsurnamed unsurpassable unsurpassableness unsurpassably unsurpassed unsurplice unsurpliced unsurprised unsurprising unsurrendered unsurrendering unsurrounded unsurveyable unsurveyed unsurvived unsurviving unsusceptibility unsusceptible unsusceptibleness unsusceptibly unsusceptive unsuspectable unsuspectably unsuspected unsuspectedly unsuspectedness unsuspectful unsuspectfulness unsuspectible unsuspecting unsuspectingly unsuspectingness unsuspective unsuspended unsuspicion unsuspicious unsuspiciously unsuspiciousness unsustainable unsustained unsustaining unsutured unswabbed unswaddle unswaddled unswaddling unswallowable unswallowed unswanlike unswapped unswarming unswathable unswathe unswathed unswathing unswayable unswayed unswayedness unswaying unswear unswearing unsweat unsweated unsweating unsweepable unsweet unsweeten unsweetened unsweetenedness unsweetly unsweetness unswell unswelled unswelling unsweltered unswept unswervable unswerved unswerving unswervingly unswilled unswing unswingled unswitched unswivel unswollen unswooning unsworn unswung unsyllabic unsyllabled unsyllogistical unsymbolic unsymbolical unsymbolically unsymbolicalness unsymbolized unsymmetrical unsymmetrically unsymmetricalness unsymmetrized unsymmetry unsympathetic unsympathetically unsympathizability unsympathizable unsympathized unsympathizing unsympathizingly unsympathy unsymphonious unsymptomatic unsynchronized unsynchronous unsyncopated unsyndicated unsynonymous unsyntactical unsynthetic unsyringed unsystematic unsystematical unsystematically unsystematized unsystematizedly unsystematizing unsystemizable untabernacled untabled untabulated untack untacked untacking untackle untackled untactful untactfully untactfulness untagged untailed untailorlike untailorly untaint untaintable untainted untaintedly untaintedness untainting untakable untakableness untakeable untakeableness untaken untaking untalented untalkative untalked untalking untall untallied untallowed untamable untamableness untame untamed untamedly untamedness untamely untameness untampered untangential untangibility untangible untangibleness untangibly untangle untangled untangling untanned untantalized untantalizing untap untaped untapered untapering untapestried untappable untapped untar untarnishable untarnished untarred untarried untarrying untartarized untasked untasseled untastable untaste untasteable untasted untasteful untastefully untastefulness untasting untasty untattered untattooed untaught untaughtness untaunted untaut untautological untawdry untawed untax untaxable untaxed untaxing unteach unteachable unteachableness unteachably unteacherlike unteaching unteam unteamed unteaming untearable unteased unteasled untechnical untechnicalize untechnically untedded untedious unteem unteeming unteethed untelegraphed untell untellable untellably untelling untemper untemperamental untemperate untemperately untemperateness untempered untempering untempested untempestuous untempled untemporal untemporary untemporizing untemptability untemptable untemptably untempted untemptible untemptibly untempting untemptingly untemptingness untenability untenable untenableness untenably untenacious untenacity untenant untenantable untenantableness untenanted untended untender untendered untenderly untenderness untenible untenibleness untenibly untense untent untentaculate untented untentered untenty unterminable unterminableness unterminably unterminated unterminating unterraced unterrestrial unterrible unterribly unterrifiable unterrific unterrified unterrifying unterrorized untessellated untestable untestamentary untested untestifying untether untethered untethering untewed untextual unthank unthanked unthankful unthankfully unthankfulness unthanking unthatch unthatched unthaw unthawed unthawing untheatric untheatrical untheatrically untheistic unthematic untheological untheologically untheologize untheoretic untheoretical untheorizable untherapeutical unthick unthicken unthickened unthievish unthink unthinkability unthinkable unthinkableness unthinkably unthinker unthinking unthinkingly unthinkingness unthinned unthinning unthirsting unthirsty unthistle untholeable untholeably unthorn unthorny unthorough unthought unthoughted unthoughtedly unthoughtful unthoughtfully unthoughtfulness unthoughtlike unthrall unthralled unthrashed unthread unthreadable unthreaded unthreading unthreatened unthreatening unthreshed unthrid unthridden unthrift unthriftihood unthriftily unthriftiness unthriftlike unthrifty unthrilled unthrilling unthriven unthriving unthrivingly unthrivingness unthrob unthrone unthroned unthronged unthroning unthrottled unthrowable unthrown unthrushlike unthrust unthumbed unthumped unthundered unthwacked unthwarted untiaraed unticketed untickled untidal untidily untidiness untidy untie untied untight untighten untightness until untile untiled untill untillable untilled untilling untilt untilted untilting untimbered untimed untimedness untimeliness untimely untimeous untimeously untimesome untimorous untin untinct untinctured untine untinged untinkered untinned untinseled untinted untippable untipped untippled untipt untirability untirable untire untired untiredly untiring untiringly untissued untithability untithable untithed untitled untittering untitular unto untoadying untoasted untogaed untoggle untoggler untoiled untoileted untoiling untold untolerable untolerableness untolerably untolerated untomb untombed untonality untone untoned untongued untonsured untooled untooth untoothed untoothsome untoothsomeness untop untopographical untopped untopping untormented untorn untorpedoed untorpid untorrid untortuous untorture untortured untossed untotaled untotalled untottering untouch untouchability untouchable untouchableness untouchably untouched untouchedness untouching untough untoured untouristed untoward untowardliness untowardly untowardness untowered untown untownlike untrace untraceable untraceableness untraceably untraced untraceried untracked untractability untractable untractableness untractably untractarian untractible untractibleness untradeable untraded untradesmanlike untrading untraditional untraduced untraffickable untrafficked untragic untragical untrailed untrain untrainable untrained untrainedly untrainedness untraitored untraitorous untrammed untrammeled untrammeledness untramped untrampled untrance untranquil untranquilized untranquillize untranquillized untransacted untranscended untranscendental untranscribable untranscribed untransferable untransferred untransfigured untransfixed untransformable untransformed untransforming untransfused untransfusible untransgressed untransient untransitable untransitive untransitory untranslatability untranslatable untranslatableness untranslatably untranslated untransmigrated untransmissible untransmitted untransmutable untransmuted untransparent untranspassable untranspired untranspiring untransplanted untransportable untransported untransposed untransubstantiated untrappable untrapped untrashed untravelable untraveled untraveling untravellable untravelling untraversable untraversed untravestied untreacherous untread untreadable untreading untreasonable untreasure untreasured untreatable untreatableness untreatably untreated untreed untrekked untrellised untrembling untremblingly untremendous untremulous untrenched untrepanned untrespassed untrespassing untress untressed untriable untribal untributary untriced untrickable untricked untried untrifling untrig untrigonometrical untrill untrim untrimmable untrimmed untrimmedness untrinitarian untripe untrippable untripped untripping untrite untriturated untriumphable untriumphant untriumphed untrochaic untrod untrodden untroddenness untrolled untrophied untropical untrotted untroublable untrouble untroubled untroubledly untroubledness untroublesome untroublesomeness untrounced untrowed untruant untruck untruckled untruckling untrue untrueness untruism untruly untrumped untrumpeted untrumping untrundled untrunked untruss untrussed untrusser untrussing untrust untrustably untrusted untrustful untrustiness untrusting untrustworthily untrustworthiness untrustworthy untrusty untruth untruther untruthful untruthfully untruthfulness untrying untubbed untuck untucked untuckered untucking untufted untugged untumbled untumefied untumid untumultuous untunable untunableness untunably untune untuneable untuneableness untuneably untuned untuneful untunefully untunefulness untuning untunneled untupped unturbaned unturbid unturbulent unturf unturfed unturgid unturn unturnable unturned unturning unturpentined unturreted untusked untutelar untutored untutoredly untutoredness untwilled untwinable untwine untwineable untwined untwining untwinkling untwinned untwirl untwirled untwirling untwist untwisted untwister untwisting untwitched untying untypical untypically untyrannic untyrannical untyrantlike untz unubiquitous unugly unulcerated unultra unumpired ununanimity ununanimous ununanimously ununderstandable ununderstandably ununderstanding ununderstood unundertaken unundulatory Unungun ununifiable ununified ununiform ununiformed ununiformity ununiformly ununiformness ununitable ununitableness ununitably ununited ununiting ununiversity ununiversitylike unupbraiding unupbraidingly unupholstered unupright unuprightly unuprightness unupset unupsettable unurban unurbane unurged unurgent unurging unurn unurned unusable unusableness unusably unuse unused unusedness unuseful unusefully unusefulness unushered unusual unusuality unusually unusualness unusurious unusurped unusurping unutilizable unutterability unutterable unutterableness unutterably unuttered unuxorial unuxorious unvacant unvaccinated unvacillating unvailable unvain unvaleted unvaletudinary unvaliant unvalid unvalidated unvalidating unvalidity unvalidly unvalidness unvalorous unvaluable unvaluableness unvaluably unvalue unvalued unvamped unvanishing unvanquishable unvanquished unvantaged unvaporized unvariable unvariableness unvariably unvariant unvaried unvariedly unvariegated unvarnished unvarnishedly unvarnishedness unvarying unvaryingly unvaryingness unvascular unvassal unvatted unvaulted unvaulting unvaunted unvaunting unvauntingly unveering unveil unveiled unveiledly unveiledness unveiler unveiling unveilment unveined unvelvety unvendable unvendableness unvended unvendible unvendibleness unveneered unvenerable unvenerated unvenereal unvenged unveniable unvenial unvenom unvenomed unvenomous unventable unvented unventilated unventured unventurous unvenued unveracious unveracity unverbalized unverdant unverdured unveridical unverifiable unverifiableness unverifiably unverified unverifiedness unveritable unverity unvermiculated unverminous unvernicular unversatile unversed unversedly unversedness unversified unvertical unvessel unvesseled unvest unvested unvetoed unvexed unviable unvibrated unvibrating unvicar unvicarious unvicariously unvicious unvictimized unvictorious unvictualed unvictualled unviewable unviewed unvigilant unvigorous unvigorously unvilified unvillaged unvindicated unvindictive unvindictively unvindictiveness unvinous unvintaged unviolable unviolated unviolenced unviolent unviolined unvirgin unvirginal unvirginlike unvirile unvirility unvirtue unvirtuous unvirtuously unvirtuousness unvirulent unvisible unvisibleness unvisibly unvision unvisionary unvisioned unvisitable unvisited unvisor unvisored unvisualized unvital unvitalized unvitalness unvitiated unvitiatedly unvitiatedness unvitrescibility unvitrescible unvitrifiable unvitrified unvitriolized unvituperated unvivacious unvivid unvivified unvizard unvizarded unvocal unvocalized unvociferous unvoice unvoiced unvoiceful unvoicing unvoidable unvoided unvolatile unvolatilize unvolatilized unvolcanic unvolitioned unvoluminous unvoluntarily unvoluntariness unvoluntary unvolunteering unvoluptuous unvomited unvoracious unvote unvoted unvoting unvouched unvouchedly unvouchedness unvouchsafed unvowed unvoweled unvoyageable unvoyaging unvulcanized unvulgar unvulgarize unvulgarized unvulgarly unvulnerable unwadable unwadded unwadeable unwaded unwading unwafted unwaged unwagered unwaggable unwaggably unwagged unwailed unwailing unwainscoted unwaited unwaiting unwaked unwakeful unwakefulness unwakened unwakening unwaking unwalkable unwalked unwalking unwall unwalled unwallet unwallowed unwan unwandered unwandering unwaning unwanted unwanton unwarbled unware unwarely unwareness unwarily unwariness unwarlike unwarlikeness unwarm unwarmable unwarmed unwarming unwarn unwarned unwarnedly unwarnedness unwarnished unwarp unwarpable unwarped unwarping unwarrant unwarrantability unwarrantable unwarrantableness unwarrantably unwarranted unwarrantedly unwarrantedness unwary unwashable unwashed unwashedness unwassailing unwastable unwasted unwasteful unwastefully unwasting unwastingly unwatchable unwatched unwatchful unwatchfully unwatchfulness unwatching unwater unwatered unwaterlike unwatermarked unwatery unwattled unwaved unwaverable unwavered unwavering unwaveringly unwaving unwax unwaxed unwayed unwayward unweaken unweakened unweal unwealsomeness unwealthy unweaned unweapon unweaponed unwearable unweariability unweariable unweariableness unweariably unwearied unweariedly unweariedness unwearily unweariness unwearing unwearisome unwearisomeness unweary unwearying unwearyingly unweathered unweatherly unweatherwise unweave unweaving unweb unwebbed unwebbing unwed unwedded unweddedly unweddedness unwedge unwedgeable unwedged unweeded unweel unweelness unweened unweeping unweeting unweetingly unweft unweighable unweighed unweighing unweight unweighted unweighty unwelcome unwelcomed unwelcomely unwelcomeness unweld unweldable unwelded unwell unwellness unwelted unwept unwestern unwesternized unwet unwettable unwetted unwheedled unwheel unwheeled unwhelmed unwhelped unwhetted unwhig unwhiglike unwhimsical unwhining unwhip unwhipped unwhirled unwhisked unwhiskered unwhisperable unwhispered unwhispering unwhistled unwhite unwhited unwhitened unwhitewashed unwholesome unwholesomely unwholesomeness unwidened unwidowed unwield unwieldable unwieldily unwieldiness unwieldly unwieldy unwifed unwifelike unwifely unwig unwigged unwild unwilily unwiliness unwill unwilled unwillful unwillfully unwillfulness unwilling unwillingly unwillingness unwilted unwilting unwily unwincing unwincingly unwind unwindable unwinding unwindingly unwindowed unwindy unwingable unwinged unwinking unwinkingly unwinnable unwinning unwinnowed unwinsome unwinter unwintry unwiped unwire unwired unwisdom unwise unwisely unwiseness unwish unwished unwishful unwishing unwist unwistful unwitch unwitched unwithdrawable unwithdrawing unwithdrawn unwitherable unwithered unwithering unwithheld unwithholden unwithholding unwithstanding unwithstood unwitless unwitnessed unwitted unwittily unwitting unwittingly unwittingness unwitty unwive unwived unwoeful unwoful unwoman unwomanish unwomanize unwomanized unwomanlike unwomanliness unwomanly unwomb unwon unwonder unwonderful unwondering unwonted unwontedly unwontedness unwooded unwooed unwoof unwooly unwordable unwordably unwordily unwordy unwork unworkability unworkable unworkableness unworkably unworked unworkedness unworker unworking unworkmanlike unworkmanly unworld unworldliness unworldly unwormed unwormy unworn unworried unworriedly unworriedness unworshiped unworshipful unworshiping unworshipped unworshipping unworth unworthily unworthiness unworthy unwotting unwound unwoundable unwoundableness unwounded unwoven unwrangling unwrap unwrapped unwrapper unwrapping unwrathful unwrathfully unwreaked unwreathe unwreathed unwreathing unwrecked unwrench unwrenched unwrested unwrestedly unwresting unwrestled unwretched unwriggled unwrinkle unwrinkleable unwrinkled unwrit unwritable unwrite unwriteable unwriting unwritten unwronged unwrongful unwrought unwrung unyachtsmanlike unyeaned unyearned unyearning unyielded unyielding unyieldingly unyieldingness unyoke unyoked unyoking unyoung unyouthful unyouthfully unze unzealous unzealously unzealousness unzen unzephyrlike unzone unzoned up upaisle upaithric upalley upalong upanishadic upapurana uparch uparching uparise uparm uparna upas upattic upavenue upbank upbar upbay upbear upbearer upbeat upbelch upbelt upbend upbid upbind upblacken upblast upblaze upblow upboil upbolster upbolt upboost upborne upbotch upboulevard upbound upbrace upbraid upbraider upbraiding upbraidingly upbray upbreak upbred upbreed upbreeze upbrighten upbrim upbring upbristle upbroken upbrook upbrought upbrow upbubble upbuild upbuilder upbulging upbuoy upbuoyance upburn upburst upbuy upcall upcanal upcanyon upcarry upcast upcatch upcaught upchamber upchannel upchariot upchimney upchoke upchuck upcity upclimb upclose upcloser upcoast upcock upcoil upcolumn upcome upcoming upconjure upcountry upcourse upcover upcrane upcrawl upcreek upcreep upcrop upcrowd upcry upcurl upcurrent upcurve upcushion upcut updart update updeck updelve updive updo updome updraft updrag updraw updrink updry upeat upend upeygan upfeed upfield upfill upfingered upflame upflare upflash upflee upflicker upfling upfloat upflood upflow upflower upflung upfly upfold upfollow upframe upfurl upgale upgang upgape upgather upgaze upget upgird upgirt upgive upglean upglide upgo upgorge upgrade upgrave upgrow upgrowth upgully upgush uphand uphang upharbor upharrow uphasp upheal upheap uphearted upheaval upheavalist upheave upheaven upheld uphelm uphelya upher uphill uphillward uphoard uphoist uphold upholden upholder upholster upholstered upholsterer upholsteress upholsterous upholstery upholsterydom upholstress uphung uphurl upisland upjerk upjet upkeep upkindle upknell upknit upla upladder uplaid uplake upland uplander uplandish uplane uplay uplead upleap upleg uplick uplift upliftable uplifted upliftedly upliftedness uplifter uplifting upliftingly upliftingness upliftitis upliftment uplight uplimb uplimber upline uplock uplong uplook uplooker uploom uploop uplying upmaking upmast upmix upmost upmount upmountain upmove upness upo upon uppard uppent upper upperch uppercut upperer upperest upperhandism uppermore uppermost uppers uppertendom uppile upping uppish uppishly uppishness uppity upplough upplow uppluck uppoint uppoise uppop uppour uppowoc upprick upprop uppuff uppull uppush upquiver upraisal upraise upraiser upreach uprear uprein uprend uprender uprest uprestore uprid upridge upright uprighteous uprighteously uprighteousness uprighting uprightish uprightly uprightness uprights uprip uprisal uprise uprisement uprisen upriser uprising uprist uprive upriver uproad uproar uproariness uproarious uproariously uproariousness uproom uproot uprootal uprooter uprose uprouse uproute uprun uprush upsaddle upscale upscrew upscuddle upseal upseek upseize upsend upset upsetment upsettable upsettal upsetted upsetter upsetting upsettingly upsey upshaft upshear upsheath upshoot upshore upshot upshoulder upshove upshut upside upsides upsighted upsiloid upsilon upsilonism upsit upsitten upsitting upslant upslip upslope upsmite upsnatch upsoak upsoar upsolve upspeak upspear upspeed upspew upspin upspire upsplash upspout upspread upspring upsprinkle upsprout upspurt upstaff upstage upstair upstairs upstamp upstand upstander upstanding upstare upstart upstartism upstartle upstartness upstate upstater upstaunch upstay upsteal upsteam upstem upstep upstick upstir upstraight upstream upstreamward upstreet upstretch upstrike upstrive upstroke upstruggle upsuck upsun upsup upsurge upsurgence upswallow upswarm upsway upsweep upswell upswing uptable uptake uptaker uptear uptemper uptend upthrow upthrust upthunder uptide uptie uptill uptilt uptorn uptoss uptower uptown uptowner uptrace uptrack uptrail uptrain uptree uptrend uptrill uptrunk uptruss uptube uptuck upturn uptwined uptwist Upupa Upupidae upupoid upvalley upvomit upwaft upwall upward upwardly upwardness upwards upwarp upwax upway upways upwell upwent upwheel upwhelm upwhir upwhirl upwind upwith upwork upwound upwrap upwreathe upwrench upwring upwrought upyard upyoke ur ura urachal urachovesical urachus uracil uraemic uraeus Uragoga Ural ural urali Uralian Uralic uraline uralite uralitic uralitization uralitize uralium uramido uramil uramilic uramino Uran uran uranalysis uranate Urania Uranian uranic Uranicentric uranidine uraniferous uraniid Uraniidae uranin uranine uraninite uranion uraniscochasma uraniscoplasty uraniscoraphy uraniscorrhaphy uranism uranist uranite uranitic uranium uranocircite uranographer uranographic uranographical uranographist uranography uranolatry uranolite uranological uranology uranometria uranometrical uranometry uranophane uranophotography uranoplastic uranoplasty uranoplegia uranorrhaphia uranorrhaphy uranoschisis uranoschism uranoscope uranoscopia uranoscopic Uranoscopidae Uranoscopus uranoscopy uranospathite uranosphaerite uranospinite uranostaphyloplasty uranostaphylorrhaphy uranotantalite uranothallite uranothorite uranotil uranous Uranus uranyl uranylic urao urare urari Urartaean Urartic urase urataemia urate uratemia uratic uratoma uratosis uraturia urazine urazole urbacity urbainite Urban urban urbane urbanely urbaneness urbanism Urbanist urbanist urbanite urbanity urbanization urbanize urbarial urbian urbic Urbicolae urbicolous urbification urbify urbinate urceiform urceolar urceolate urceole urceoli Urceolina urceolus urceus urchin urchiness urchinlike urchinly urd urde urdee Urdu ure urea ureal ureameter ureametry urease urechitin urechitoxin uredema Uredinales uredine Uredineae uredineal uredineous uredinia uredinial Urediniopsis urediniospore urediniosporic uredinium uredinoid uredinologist uredinology uredinous Uredo uredo uredosorus uredospore uredosporic uredosporiferous uredosporous uredostage ureic ureid ureide ureido uremia uremic Urena urent ureometer ureometry ureosecretory uresis uretal ureter ureteral ureteralgia uretercystoscope ureterectasia ureterectasis ureterectomy ureteric ureteritis ureterocele ureterocervical ureterocolostomy ureterocystanastomosis ureterocystoscope ureterocystostomy ureterodialysis ureteroenteric ureteroenterostomy ureterogenital ureterogram ureterograph ureterography ureterointestinal ureterolith ureterolithiasis ureterolithic ureterolithotomy ureterolysis ureteronephrectomy ureterophlegma ureteroplasty ureteroproctostomy ureteropyelitis ureteropyelogram ureteropyelography ureteropyelonephritis ureteropyelostomy ureteropyosis ureteroradiography ureterorectostomy ureterorrhagia ureterorrhaphy ureterosalpingostomy ureterosigmoidostomy ureterostegnosis ureterostenoma ureterostenosis ureterostoma ureterostomy ureterotomy ureterouteral ureterovaginal ureterovesical urethan urethane urethra urethrae urethragraph urethral urethralgia urethrameter urethrascope urethratome urethratresia urethrectomy urethremphraxis urethreurynter urethrism urethritic urethritis urethroblennorrhea urethrobulbar urethrocele urethrocystitis urethrogenital urethrogram urethrograph urethrometer urethropenile urethroperineal urethrophyma urethroplastic urethroplasty urethroprostatic urethrorectal urethrorrhagia urethrorrhaphy urethrorrhea urethrorrhoea urethroscope urethroscopic urethroscopical urethroscopy urethrosexual urethrospasm urethrostaxis urethrostenosis urethrostomy urethrotome urethrotomic urethrotomy urethrovaginal urethrovesical urethylan uretic ureylene urf urfirnis urge urgence urgency urgent urgently urgentness urger Urginea urging urgingly Urgonian urheen Uria Uriah urial Urian uric uricacidemia uricaciduria uricaemia uricaemic uricemia uricemic uricolysis uricolytic uridrosis Uriel urinaemia urinal urinalist urinalysis urinant urinarium urinary urinate urination urinative urinator urine urinemia uriniferous uriniparous urinocryoscopy urinogenital urinogenitary urinogenous urinologist urinology urinomancy urinometer urinometric urinometry urinoscopic urinoscopist urinoscopy urinose urinosexual urinous urinousness urite urlar urled urling urluch urman urn urna urnae urnal urnflower urnful urning urningism urnism urnlike urnmaker Uro uroacidimeter uroazotometer urobenzoic urobilin urobilinemia urobilinogen urobilinogenuria urobilinuria urocanic urocele Urocerata urocerid Uroceridae urochloralic urochord Urochorda urochordal urochordate urochrome urochromogen Urocoptidae Urocoptis urocyanogen Urocyon urocyst urocystic Urocystis urocystitis urodaeum Urodela urodelan urodele urodelous urodialysis urodynia uroedema uroerythrin urofuscohematin urogaster urogastric urogenic urogenital urogenitary urogenous uroglaucin Uroglena urogram urography urogravimeter urohematin urohyal urolagnia uroleucic uroleucinic urolith urolithiasis urolithic urolithology urologic urological urologist urology urolutein urolytic uromancy uromantia uromantist Uromastix uromelanin uromelus uromere uromeric urometer Uromyces Uromycladium uronephrosis uronic uronology uropatagium Uropeltidae urophanic urophanous urophein Urophlyctis urophthisis uroplania uropod uropodal uropodous uropoetic uropoiesis uropoietic uroporphyrin uropsile Uropsilus uroptysis Uropygi uropygial uropygium uropyloric urorosein urorrhagia urorrhea urorubin urosaccharometry urosacral uroschesis uroscopic uroscopist uroscopy urosepsis uroseptic urosis urosomatic urosome urosomite urosomitic urostea urostealith urostegal urostege urostegite urosteon urosternite urosthene urosthenic urostylar urostyle urotoxia urotoxic urotoxicity urotoxin urotoxy uroxanate uroxanic uroxanthin uroxin urradhus urrhodin urrhodinic Ursa ursal ursicidal ursicide Ursid Ursidae ursiform ursigram ursine ursoid ursolic urson ursone ursuk Ursula Ursuline Ursus Urtica urtica Urticaceae urticaceous Urticales urticant urticaria urticarial urticarious Urticastrum urticate urticating urtication urticose urtite Uru urubu urucu urucuri Uruguayan uruisg Urukuena urunday urus urushi urushic urushinic urushiol urushiye urva us usability usable usableness usage usager usance usar usara usaron usation use used usedly usedness usednt usee useful usefullish usefully usefulness usehold useless uselessly uselessness usent user ush ushabti ushabtiu Ushak Usheen usher usherance usherdom usherer usheress usherette Usherian usherian usherism usherless ushership usings Usipetes usitate usitative Uskara Uskok Usnea usnea Usneaceae usneaceous usneoid usnic usninic Uspanteca usque usquebaugh usself ussels usselven ussingite ust Ustarana uster Ustilaginaceae ustilaginaceous Ustilaginales ustilagineous Ustilaginoidea Ustilago ustion ustorious ustulate ustulation Ustulina usual usualism usually usualness usuary usucapient usucapion usucapionary usucapt usucaptable usucaption usucaptor usufruct usufructuary Usun usure usurer usurerlike usuress usurious usuriously usuriousness usurp usurpation usurpative usurpatively usurpatory usurpature usurpedly usurper usurpership usurping usurpingly usurpment usurpor usurpress usury usward uswards ut Uta uta Utah Utahan utahite utai utas utch utchy Ute utees utensil uteralgia uterectomy uteri uterine uteritis uteroabdominal uterocele uterocervical uterocystotomy uterofixation uterogestation uterogram uterography uterointestinal uterolith uterology uteromania uterometer uteroovarian uteroparietal uteropelvic uteroperitoneal uteropexia uteropexy uteroplacental uteroplasty uterosacral uterosclerosis uteroscope uterotomy uterotonic uterotubal uterovaginal uteroventral uterovesical uterus utfangenethef utfangethef utfangthef utfangthief utick utile utilitarian utilitarianism utilitarianist utilitarianize utilitarianly utility utilizable utilization utilize utilizer utinam utmost utmostness Utopia utopia Utopian utopian utopianism utopianist Utopianize Utopianizer utopianizer utopiast utopism utopist utopistic utopographer Utraquism utraquist utraquistic Utrecht utricle utricul utricular Utricularia Utriculariaceae utriculate utriculiferous utriculiform utriculitis utriculoid utriculoplastic utriculoplasty utriculosaccular utriculose utriculus utriform utrubi utrum utsuk utter utterability utterable utterableness utterance utterancy utterer utterless utterly uttermost utterness utu utum uturuncu uva uval uvalha uvanite uvarovite uvate uvea uveal uveitic uveitis Uvella uveous uvic uvid uviol uvitic uvitinic uvito uvitonic uvrou uvula uvulae uvular Uvularia uvularly uvulitis uvuloptosis uvulotome uvulotomy uvver uxorial uxoriality uxorially uxoricidal uxoricide uxorious uxoriously uxoriousness uzan uzara uzarin uzaron Uzbak Uzbeg Uzbek V v vaagmer vaalite Vaalpens vacabond vacancy vacant vacanthearted vacantheartedness vacantly vacantness vacantry vacatable vacate vacation vacational vacationer vacationist vacationless vacatur Vaccaria vaccary vaccenic vaccicide vaccigenous vaccina vaccinable vaccinal vaccinate vaccination vaccinationist vaccinator vaccinatory vaccine vaccinee vaccinella vaccinia Vacciniaceae vacciniaceous vaccinial vaccinifer vacciniform vacciniola vaccinist Vaccinium vaccinium vaccinization vaccinogenic vaccinogenous vaccinoid vaccinophobia vaccinotherapy vache Vachellia vachette vacillancy vacillant vacillate vacillating vacillatingly vacillation vacillator vacillatory vacoa vacona vacoua vacouf vacual vacuate vacuation vacuefy vacuist vacuity vacuolar vacuolary vacuolate vacuolated vacuolation vacuole vacuolization vacuome vacuometer vacuous vacuously vacuousness vacuum vacuuma vacuumize vade vadimonium vadimony vadium vadose vady vag vagabond vagabondage vagabondager vagabondia vagabondish vagabondism vagabondismus vagabondize vagabondizer vagabondry vagal vagarian vagarious vagariously vagarish vagarisome vagarist vagaristic vagarity vagary vagas vage vagiform vagile vagina vaginal vaginalectomy vaginaless vaginalitis vaginant vaginate vaginated vaginectomy vaginervose Vaginicola vaginicoline vaginicolous vaginiferous vaginipennate vaginismus vaginitis vaginoabdominal vaginocele vaginodynia vaginofixation vaginolabial vaginometer vaginomycosis vaginoperineal vaginoperitoneal vaginopexy vaginoplasty vaginoscope vaginoscopy vaginotome vaginotomy vaginovesical vaginovulvar vaginula vaginulate vaginule vagitus Vagnera vagoaccessorius vagodepressor vagoglossopharyngeal vagogram vagolysis vagosympathetic vagotomize vagotomy vagotonia vagotonic vagotropic vagotropism vagrance vagrancy vagrant vagrantism vagrantize vagrantlike vagrantly vagrantness vagrate vagrom vague vaguely vagueness vaguish vaguity vagulous vagus vahine Vai Vaidic vail vailable vain vainful vainglorious vaingloriously vaingloriousness vainglory vainly vainness vair vairagi vaire vairy Vaishnava Vaishnavism vaivode vajra vajrasana vakass vakia vakil vakkaliga valance valanced valanche valbellite vale valediction valedictorian valedictorily valedictory valence Valencia Valencian valencianite Valenciennes valency valent Valentide Valentine valentine Valentinian Valentinianism valentinite valeral valeraldehyde valeramide valerate Valeria valerian Valeriana Valerianaceae valerianaceous Valerianales valerianate Valerianella Valerianoides valeric valerin valerolactone valerone valeryl valerylene valet valeta valetage valetdom valethood valetism valetry valetudinarian valetudinarianism valetudinariness valetudinarist valetudinarium valetudinary valeur valeward valgoid valgus valhall Valhalla Vali vali valiance valiancy valiant valiantly valiantness valid validate validation validatory validification validity validly validness valine valise valiseful valiship Valkyr Valkyria Valkyrian Valkyrie vall vallancy vallar vallary vallate vallated vallation vallecula vallecular valleculate vallevarite valley valleyful valleyite valleylet valleylike valleyward valleywise vallicula vallicular vallidom vallis Valliscaulian Vallisneria Vallisneriaceae vallisneriaceous Vallombrosan Vallota vallum Valmy Valois valonia Valoniaceae valoniaceous valor valorization valorize valorous valorously valorousness Valsa Valsaceae Valsalvan valse valsoid valuable valuableness valuably valuate valuation valuational valuator value valued valueless valuelessness valuer valuta valva valval Valvata valvate Valvatidae valve valved valveless valvelet valvelike valveman valviferous valviform valvotomy valvula valvular valvulate valvule valvulitis valvulotome valvulotomy valyl valylene vambrace vambraced vamfont vammazsa vamoose vamp vamped vamper vamphorn vampire vampireproof vampiric vampirish vampirism vampirize vamplate vampproof Vampyrella Vampyrellidae Vampyrum Van van vanadate vanadiate vanadic vanadiferous vanadinite vanadium vanadosilicate vanadous vanadyl Vanaheim vanaprastha vancourier Vancouveria Vanda Vandal Vandalic vandalish vandalism vandalistic vandalization vandalize vandalroot Vandemonian Vandemonianism Vandiemenian Vandyke vane vaned vaneless vanelike Vanellus Vanessa vanessian vanfoss vang vangee vangeli vanglo vanguard Vanguardist Vangueria vanilla vanillal vanillaldehyde vanillate vanille vanillery vanillic vanillin vanillinic vanillism vanilloes vanillon vanilloyl vanillyl Vanir vanish vanisher vanishing vanishingly vanishment Vanist vanitarianism vanitied vanity vanjarrah vanman vanmost Vannai vanner vannerman vannet Vannic vanquish vanquishable vanquisher vanquishment vansire vantage vantageless vantbrace vantbrass vanward vapid vapidism vapidity vapidly vapidness vapocauterization vapographic vapography vapor vaporability vaporable vaporarium vaporary vaporate vapored vaporer vaporescence vaporescent vaporiferous vaporiferousness vaporific vaporiform vaporimeter vaporing vaporingly vaporish vaporishness vaporium vaporizable vaporization vaporize vaporizer vaporless vaporlike vaporograph vaporographic vaporose vaporoseness vaporosity vaporous vaporously vaporousness vaportight vapory vapulary vapulate vapulation vapulatory vara varahan varan Varanger Varangi Varangian varanid Varanidae Varanoid Varanus vardapet vardy vare varec vareheaded vareuse vargueno vari variability variable variableness variably Variag variance variancy variant variate variation variational variationist variatious variative variatively variator varical varicated varication varicella varicellar varicellate varicellation varicelliform varicelloid varicellous varices variciform varicoblepharon varicocele varicoid varicolored varicolorous varicose varicosed varicoseness varicosis varicosity varicotomy varicula varied variedly variegate variegated variegation variegator varier varietal varietally varietism varietist variety variform variformed variformity variformly varigradation variocoupler variola variolar Variolaria variolate variolation variole variolic varioliform variolite variolitic variolitization variolization varioloid variolous variolovaccine variolovaccinia variometer variorum variotinted various variously variousness variscite varisse varix varlet varletaille varletess varletry varletto varment varna varnashrama varnish varnished varnisher varnishing varnishlike varnishment varnishy varnpliktige varnsingite Varolian Varronia Varronian varsha varsity Varsovian varsoviana Varuna varus varve varved vary varyingly vas Vasa vasa vasal Vascons vascular vascularity vascularization vascularize vascularly vasculated vasculature vasculiferous vasculiform vasculitis vasculogenesis vasculolymphatic vasculomotor vasculose vasculum vase vasectomize vasectomy vaseful vaselet vaselike Vaseline vasemaker vasemaking vasewise vasework vashegyite vasicentric vasicine vasifactive vasiferous vasiform vasoconstricting vasoconstriction vasoconstrictive vasoconstrictor vasocorona vasodentinal vasodentine vasodilatation vasodilatin vasodilating vasodilation vasodilator vasoepididymostomy vasofactive vasoformative vasoganglion vasohypertonic vasohypotonic vasoinhibitor vasoinhibitory vasoligation vasoligature vasomotion vasomotor vasomotorial vasomotoric vasomotory vasoneurosis vasoparesis vasopressor vasopuncture vasoreflex vasorrhaphy vasosection vasospasm vasospastic vasostimulant vasostomy vasotomy vasotonic vasotribe vasotripsy vasotrophic vasovesiculectomy vasquine vassal vassalage vassaldom vassaless vassalic vassalism vassality vassalize vassalless vassalry vassalship vast vastate vastation vastidity vastily vastiness vastitude vastity vastly vastness vasty vasu Vasudeva Vasundhara vat Vateria vatful vatic vatically Vatican vaticanal vaticanic vaticanical Vaticanism Vaticanist Vaticanization Vaticanize vaticide vaticinal vaticinant vaticinate vaticination vaticinator vaticinatory vaticinatress vaticinatrix vatmaker vatmaking vatman Vatteluttu vatter vau Vaucheria Vaucheriaceae vaucheriaceous vaudeville vaudevillian vaudevillist Vaudism Vaudois vaudy vaugnerite vault vaulted vaultedly vaulter vaulting vaultlike vaulty vaunt vauntage vaunted vaunter vauntery vauntful vauntiness vaunting vauntingly vauntmure vaunty vauquelinite Vauxhall Vauxhallian vauxite vavasor vavasory vaward Vayu Vazimba Veadar veal vealer vealiness veallike vealskin vealy vectigal vection vectis vectograph vectographic vector vectorial vectorially vecture Veda Vedaic Vedaism Vedalia vedana Vedanga Vedanta Vedantic Vedantism Vedantist Vedda Veddoid vedette Vedic vedika Vediovis Vedism Vedist vedro Veduis veduis vee veen veep veer veerable veeringly veery Vega vegasite vegeculture vegetability vegetable vegetablelike vegetablewise vegetablize vegetably vegetal vegetalcule vegetality vegetant vegetarian vegetarianism vegetate vegetation vegetational vegetationless vegetative vegetatively vegetativeness vegete vegeteness vegetism vegetive vegetivorous vegetoalkali vegetoalkaline vegetoalkaloid vegetoanimal vegetobituminous vegetocarbonaceous vegetomineral vehemence vehemency vehement vehemently vehicle vehicular vehicularly vehiculary vehiculate vehiculation vehiculatory Vehmic vei veigle veil veiled veiledly veiledness veiler veiling veilless veillike veilmaker veilmaking Veiltail veily vein veinage veinal veinbanding veined veiner veinery veininess veining veinless veinlet veinous veinstone veinstuff veinule veinulet veinwise veinwork veiny Vejoces vejoces Vejovis Vejoz vela velal velamen velamentous velamentum velar velardenite velaric velarium velarize velary velate velated velation velatura Velchanos veldcraft veldman veldschoen veldt veldtschoen Velella velellidous velic veliferous veliform veliger veligerous Velika velitation vell vellala velleda velleity vellicate vellication vellicative vellinch vellon vellosine Vellozia Velloziaceae velloziaceous vellum vellumy velo velociman velocimeter velocious velociously velocipedal velocipede velocipedean velocipedic velocitous velocity velodrome velometer velours veloutine velte velum velumen velure Velutina velutinous velveret velvet velvetbreast velveted velveteen velveteened velvetiness velveting velvetleaf velvetlike velvetry velvetseed velvetweed velvetwork velvety venada venal venality venalization venalize venally venalness Venantes venanzite venatic venatical venatically venation venational venator venatorial venatorious venatory vencola Vend vend vendace Vendean vendee vender vendetta vendettist vendibility vendible vendibleness vendibly vendicate Vendidad vending venditate venditation vendition venditor vendor vendue Vened Venedotian veneer veneerer veneering venefical veneficious veneficness veneficous venenate venenation venene veneniferous venenific venenosalivary venenous venenousness venepuncture venerability venerable venerableness venerably Veneracea veneracean veneraceous veneral Veneralia venerance venerant venerate veneration venerational venerative veneratively venerativeness venerator venereal venerealness venereologist venereology venerer Veneres venerial Veneridae veneriform venery venesect venesection venesector venesia Venetes Veneti Venetian Venetianed Venetic venezolano Venezuelan vengeable vengeance vengeant vengeful vengefully vengefulness vengeously venger venial veniality venially venialness Venice venie venin veniplex venipuncture venireman venison venisonivorous venisonlike venisuture Venite Venizelist vennel venner venoatrial venoauricular venom venomed venomer venomization venomize venomly venomness venomosalivary venomous venomously venomousness venomproof venomsome venomy venosal venosclerosis venose venosinal venosity venostasis venous venously venousness vent ventage ventail venter Ventersdorp venthole ventiduct ventifact ventil ventilable ventilagin ventilate ventilating ventilation ventilative ventilator ventilatory ventless ventometer ventose ventoseness ventosity ventpiece ventrad ventral ventrally ventralmost ventralward ventric ventricle ventricolumna ventricolumnar ventricornu ventricornual ventricose ventricoseness ventricosity ventricous ventricular ventricularis ventriculite Ventriculites ventriculitic Ventriculitidae ventriculogram ventriculography ventriculoscopy ventriculose ventriculous ventriculus ventricumbent ventriduct ventrifixation ventrilateral ventrilocution ventriloqual ventriloqually ventriloque ventriloquial ventriloquially ventriloquism ventriloquist ventriloquistic ventriloquize ventriloquous ventriloquously ventriloquy ventrimesal ventrimeson ventrine ventripotency ventripotent ventripotential ventripyramid ventroaxial ventroaxillary ventrocaudal ventrocystorrhaphy ventrodorsad ventrodorsal ventrodorsally ventrofixation ventrohysteropexy ventroinguinal ventrolateral ventrolaterally ventromedial ventromedian ventromesal ventromesial ventromyel ventroposterior ventroptosia ventroptosis ventroscopy ventrose ventrosity ventrosuspension ventrotomy venture venturer venturesome venturesomely venturesomeness Venturia venturine venturous venturously venturousness venue venula venular venule venulose Venus Venusian venust Venutian venville Veps Vepse Vepsish vera veracious veraciously veraciousness veracity veranda verandaed verascope veratral veratralbine veratraldehyde veratrate veratria veratric veratridine veratrine veratrinize veratrize veratroidine veratrole veratroyl Veratrum veratryl veratrylidene verb verbal verbalism verbalist verbality verbalization verbalize verbalizer verbally verbarian verbarium verbasco verbascose Verbascum verbate verbatim verbena Verbenaceae verbenaceous verbenalike verbenalin Verbenarius verbenate verbene verbenone verberate verberation verberative Verbesina verbiage verbicide verbiculture verbid verbification verbify verbigerate verbigeration verbigerative verbile verbless verbolatry verbomania verbomaniac verbomotor verbose verbosely verboseness verbosity verbous verby verchok verd verdancy verdant verdantly verdantness verdea verdelho verderer verderership verdet verdict verdigris verdigrisy verdin verditer verdoy verdugoship verdun verdure verdured verdureless verdurous verdurousness verecund verecundity verecundness verek veretilliform Veretillum veretillum verge vergeboard vergence vergency vergent vergentness verger vergeress vergerism vergerless vergership vergery vergi vergiform Vergilianism verglas vergobret veri veridic veridical veridicality veridically veridicalness veridicous veridity verifiability verifiable verifiableness verifiably verificate verification verificative verificatory verifier verify verily verine verisimilar verisimilarly verisimilitude verisimilitudinous verisimility verism verist veristic veritability veritable veritableness veritably verite veritism veritist veritistic verity verjuice vermeil vermeologist vermeology Vermes vermetid Vermetidae vermetidae Vermetus vermian vermicelli vermicidal vermicide vermicious vermicle vermicular Vermicularia vermicularly vermiculate vermiculated vermiculation vermicule vermiculite vermiculose vermiculosity vermiculous vermiform Vermiformia vermiformis vermiformity vermiformous vermifugal vermifuge vermifugous vermigerous vermigrade Vermilingues Vermilinguia vermilinguial vermilion vermilionette vermilionize vermin verminal verminate vermination verminer verminicidal verminicide verminiferous verminlike verminly verminosis verminous verminously verminousness verminproof verminy vermiparous vermiparousness vermis vermivorous vermivorousness vermix Vermont Vermonter Vermontese vermorel vermouth vernacle vernacular vernacularism vernacularist vernacularity vernacularization vernacularize vernacularly vernacularness vernaculate vernal vernality vernalization vernalize vernally vernant vernation vernicose vernier vernile vernility vernin vernine vernition Vernonia vernoniaceous Vernonieae vernonin Verona Veronal veronalism Veronese Veronica Veronicella Veronicellidae Verpa verre verrel verriculate verriculated verricule verruca verrucano Verrucaria Verrucariaceae verrucariaceous verrucarioid verrucated verruciferous verruciform verrucose verrucoseness verrucosis verrucosity verrucous verruculose verruga versability versable versableness versal versant versate versatile versatilely versatileness versatility versation versative verse versecraft versed verseless verselet versemaker versemaking verseman versemanship versemonger versemongering versemongery verser versesmith verset versette verseward versewright versicle versicler versicolor versicolorate versicolored versicolorous versicular versicule versifiable versifiaster versification versificator versificatory versificatrix versifier versiform versify versiloquy versine version versional versioner versionist versionize versipel verso versor verst versta versual versus vert vertebra vertebrae vertebral vertebraless vertebrally Vertebraria vertebrarium vertebrarterial Vertebrata vertebrate vertebrated vertebration vertebre vertebrectomy vertebriform vertebroarterial vertebrobasilar vertebrochondral vertebrocostal vertebrodymus vertebrofemoral vertebroiliac vertebromammary vertebrosacral vertebrosternal vertex vertibility vertible vertibleness vertical verticalism verticality vertically verticalness vertices verticil verticillary verticillaster verticillastrate verticillate verticillated verticillately verticillation verticilliaceous verticilliose Verticillium verticillus verticity verticomental verticordious vertiginate vertigines vertiginous vertigo vertilinear vertimeter Vertumnus Verulamian veruled verumontanum vervain vervainlike verve vervecine vervel verveled vervelle vervenia vervet very Vesalian vesania vesanic vesbite vesicae vesical vesicant vesicate vesication vesicatory vesicle vesicoabdominal vesicocavernous vesicocele vesicocervical vesicoclysis vesicofixation vesicointestinal vesicoprostatic vesicopubic vesicorectal vesicosigmoid vesicospinal vesicotomy vesicovaginal vesicular Vesicularia vesicularly vesiculary vesiculase Vesiculata Vesiculatae vesiculate vesiculation vesicule vesiculectomy vesiculiferous vesiculiform vesiculigerous vesiculitis vesiculobronchial vesiculocavernous vesiculopustular vesiculose vesiculotomy vesiculotubular vesiculotympanic vesiculotympanitic vesiculous vesiculus vesicupapular veskit Vespa vespacide vespal vesper vesperal vesperian vespering vespers vespertide vespertilian Vespertilio vespertilio Vespertiliones vespertilionid Vespertilionidae Vespertilioninae vespertilionine vespertinal vespertine vespery vespiary vespid Vespidae vespiform Vespina vespine vespoid Vespoidea vessel vesseled vesselful vessignon vest Vesta vestal Vestalia vestalia vestalship Vestas vestee vester vestiarian vestiarium vestiary vestibula vestibular vestibulary vestibulate vestibule vestibuled vestibulospinal vestibulum vestige vestigial vestigially Vestigian vestigiary vestigium vestiment vestimental vestimentary vesting Vestini Vestinian vestiture vestlet vestment vestmental vestmented vestral vestralization vestrical vestrification vestrify vestry vestrydom vestryhood vestryish vestryism vestryize vestryman vestrymanly vestrymanship vestuary vestural vesture vesturer Vesuvian vesuvian vesuvianite vesuviate vesuvite vesuvius veszelyite vet veta vetanda vetch vetchling vetchy veteran veterancy veteraness veteranize veterinarian veterinarianism veterinary vetitive vetivene vetivenol vetiver Vetiveria vetiveria vetivert vetkousie veto vetoer vetoism vetoist vetoistic vetoistical vetust vetusty veuglaire veuve vex vexable vexation vexatious vexatiously vexatiousness vexatory vexed vexedly vexedness vexer vexful vexil vexillar vexillarious vexillary vexillate vexillation vexillum vexingly vexingness vext via viability viable viaduct viaggiatory viagram viagraph viajaca vial vialful vialmaker vialmaking vialogue viameter viand viander viatic viatica viatical viaticum viatometer viator viatorial viatorially vibetoite vibex vibgyor vibix vibracular vibracularium vibraculoid vibraculum vibrance vibrancy vibrant vibrantly vibraphone vibrate vibratile vibratility vibrating vibratingly vibration vibrational vibrationless vibratiuncle vibratiunculation vibrative vibrato vibrator vibratory Vibrio vibrioid vibrion vibrionic vibrissa vibrissae vibrissal vibrograph vibromassage vibrometer vibromotive vibronic vibrophone vibroscope vibroscopic vibrotherapeutics viburnic viburnin Viburnum vicar vicarage vicarate vicaress vicarial vicarian vicarianism vicariate vicariateship vicarious vicariously vicariousness vicarly vicarship vice vicecomes vicecomital vicegeral vicegerency vicegerent vicegerentship viceless vicelike vicenary vicennial viceregal viceregally vicereine viceroy viceroyal viceroyalty viceroydom viceroyship vicety viceversally Vichyite vichyssoise Vicia vicianin vicianose vicilin vicinage vicinal vicine vicinity viciosity vicious viciously viciousness vicissitous vicissitude vicissitudinary vicissitudinous vicissitudinousness vicoite vicontiel victim victimhood victimizable victimization victimize victimizer victless victor victordom victorfish Victoria Victorian Victorianism Victorianize Victorianly victoriate victoriatus victorine victorious victoriously victoriousness victorium victory victoryless victress victrix Victrola victrola victual victualage victualer victualing victuallership victualless victualry victuals vicuna Viddhal viddui videndum video videogenic vidette Vidian vidonia vidry Vidua viduage vidual vidually viduate viduated viduation Viduinae viduine viduity viduous vidya vie vielle Vienna Viennese vier vierling viertel viertelein Vietminh Vietnamese view viewable viewably viewer viewiness viewless viewlessly viewly viewpoint viewsome viewster viewworthy viewy vifda viga vigentennial vigesimal vigesimation vigia vigil vigilance vigilancy vigilant vigilante vigilantism vigilantly vigilantness vigilate vigilation vigintiangular vigneron vignette vignetter vignettist vignin vigonia vigor vigorist vigorless vigorous vigorously vigorousness vihara vihuela vijao viking vikingism vikinglike vikingship vila vilayet vile vilehearted Vilela vilely vileness Vili vilicate vilification vilifier vilify vilifyingly vilipend vilipender vilipenditory vility vill villa villadom villaette village villageful villagehood villageless villagelet villagelike villageous villager villageress villagery villaget villageward villagey villagism villain villainage villaindom villainess villainist villainous villainously villainousness villainproof villainy villakin villaless villalike villanage villanella villanelle villanette villanous villanously Villanova Villanovan villar villate villatic ville villein villeinage villeiness villeinhold villenage villiaumite villiferous villiform villiplacental Villiplacentalia villitis villoid villose villosity villous villously villus vim vimana vimen vimful Viminal viminal vimineous vina vinaceous vinaconic vinage vinagron vinaigrette vinaigretted vinaigrier vinaigrous vinal Vinalia vinasse vinata Vincent vincent Vincentian Vincetoxicum vincetoxin vincibility vincible vincibleness vincibly vincular vinculate vinculation vinculum Vindelici vindemial vindemiate vindemiation vindemiatory Vindemiatrix vindex vindhyan vindicability vindicable vindicableness vindicably vindicate vindication vindicative vindicatively vindicativeness vindicator vindicatorily vindicatorship vindicatory vindicatress vindictive vindictively vindictiveness vindictivolence vindresser vine vinea vineal vineatic vined vinegar vinegarer vinegarette vinegarish vinegarist vinegarroon vinegarweed vinegary vinegerone vinegrower vineity vineland vineless vinelet vinelike viner vinery vinestalk vinewise vineyard Vineyarder vineyarding vineyardist vingerhoed Vingolf vinhatico vinic vinicultural viniculture viniculturist vinifera viniferous vinification vinificator Vinland vinny vino vinoacetous vinolence vinolent vinologist vinology vinometer vinomethylic vinose vinosity vinosulphureous vinous vinously vinousness vinquish vint vinta vintage vintager vintaging vintem vintener vintlite vintner vintneress vintnership vintnery vintress vintry viny vinyl vinylbenzene vinylene vinylic vinylidene viol viola violability violable violableness violably Violaceae violacean violaceous violaceously violal Violales violanin violaquercitrin violate violater violation violational violative violator violatory violature violence violent violently violentness violer violescent violet violetish violetlike violette violetwise violety violin violina violine violinette violinist violinistic violinlike violinmaker violinmaking violist violmaker violmaking violon violoncellist violoncello violone violotta violuric viosterol Vip viper Vipera viperan viperess viperfish viperian viperid Viperidae viperiform Viperina Viperinae viperine viperish viperishly viperlike viperling viperoid Viperoidea viperous viperously viperousness vipery vipolitic vipresident viqueen Vira viragin viraginian viraginity viraginous virago viragoish viragolike viragoship viral Virales Virbius vire virelay viremia viremic virent vireo vireonine virescence virescent virga virgal virgate virgated virgater virgation virgilia Virgilism virgin virginal Virginale virginalist virginality virginally virgineous virginhead Virginia Virginian Virginid virginitis virginity virginityship virginium virginlike virginly virginship Virgo virgula virgular Virgularia virgularian Virgulariidae virgulate virgule virgultum virial viricide virid viridene viridescence viridescent viridian viridigenous viridine viridite viridity virific virify virile virilely virileness virilescence virilescent virilify viriliously virilism virilist virility viripotent viritrate virl virole viroled virological virologist virology viron virose virosis virous virtu virtual virtualism virtualist virtuality virtualize virtually virtue virtued virtuefy virtuelessness virtueproof virtuless virtuosa virtuose virtuosi virtuosic virtuosity virtuoso virtuosoship virtuous virtuouslike virtuously virtuousness virucidal virucide viruela virulence virulency virulent virulented virulently virulentness viruliferous virus viruscidal viruscide virusemic vis visa visage visaged visagraph visarga Visaya Visayan viscacha viscera visceral visceralgia viscerally viscerate visceration visceripericardial visceroinhibitory visceromotor visceroparietal visceroperitioneal visceropleural visceroptosis visceroptotic viscerosensory visceroskeletal viscerosomatic viscerotomy viscerotonia viscerotonic viscerotrophic viscerotropic viscerous viscid viscidity viscidize viscidly viscidness viscidulous viscin viscoidal viscolize viscometer viscometrical viscometrically viscometry viscontal viscoscope viscose viscosimeter viscosimetry viscosity viscount viscountcy viscountess viscountship viscounty viscous viscously viscousness viscus vise viseman Vishnavite Vishnu Vishnuism Vishnuite Vishnuvite visibility visibilize visible visibleness visibly visie Visigoth Visigothic visile vision visional visionally visionarily visionariness visionary visioned visioner visionic visionist visionize visionless visionlike visionmonger visionproof visit visita visitable Visitandine visitant visitation visitational visitative visitator visitatorial visite visitee visiter visiting visitment visitor visitoress visitorial visitorship visitress visitrix visive visne vison visor visorless visorlike vista vistaed vistal vistaless vistamente visto Vistulian visual visualist visuality visualization visualize visualizer visually visuoauditory visuokinesthetic visuometer visuopsychic visuosensory vita Vitaceae Vitaglass vital vitalic vitalism vitalist vitalistic vitalistically vitality vitalization vitalize vitalizer vitalizing vitalizingly Vitallium vitally vitalness vitals vitamer vitameric vitamin vitaminic vitaminize vitaminology vitapath vitapathy vitaphone vitascope vitascopic vitasti vitativeness vitellarian vitellarium vitellary vitellicle vitelliferous vitelligenous vitelligerous vitellin vitelline vitellogene vitellogenous vitellose vitellus viterbite Viti vitiable vitiate vitiated vitiation vitiator viticetum viticulose viticultural viticulture viticulturer viticulturist vitiferous vitiliginous vitiligo vitiligoidea vitiosity Vitis vitium vitochemic vitochemical vitrage vitrail vitrailed vitrailist vitrain vitraux vitreal vitrean vitrella vitremyte vitreodentinal vitreodentine vitreoelectric vitreosity vitreous vitreouslike vitreously vitreousness vitrescence vitrescency vitrescent vitrescibility vitrescible vitreum vitric vitrics vitrifaction vitrifacture vitrifiability vitrifiable vitrification vitriform vitrify Vitrina vitrine vitrinoid vitriol vitriolate vitriolation vitriolic vitrioline vitriolizable vitriolization vitriolize vitriolizer vitrite vitrobasalt vitrophyre vitrophyric vitrotype vitrous Vitruvian Vitruvianism vitta vittate vitular vituline vituperable vituperate vituperation vituperative vituperatively vituperator vituperatory vituperious viuva viva vivacious vivaciously vivaciousness vivacity vivandiere vivarium vivary vivax vive vively vivency viver Viverridae viverriform Viverrinae viverrine vivers vives vivianite vivicremation vivid vividialysis vividiffusion vividissection vividity vividly vividness vivific vivificate vivification vivificative vivificator vivifier vivify viviparism viviparity viviparous viviparously viviparousness vivipary viviperfuse vivisect vivisection vivisectional vivisectionally vivisectionist vivisective vivisector vivisectorium vivisepulture vixen vixenish vixenishly vixenishness vixenlike vixenly vizard vizarded vizardless vizardlike vizardmonger vizier vizierate viziercraft vizierial viziership vizircraft Vlach vlei voar vocability vocable vocably vocabular vocabularian vocabularied vocabulary vocabulation vocabulist vocal vocalic vocalion vocalise vocalism vocalist vocalistic vocality vocalization vocalize vocalizer vocaller vocally vocalness vocate vocation vocational vocationalism vocationalization vocationalize vocationally vocative vocatively Vochysiaceae vochysiaceous vocicultural vociferance vociferant vociferate vociferation vociferative vociferator vociferize vociferosity vociferous vociferously vociferousness vocification vocimotor vocular vocule Vod vodka voe voet voeten Voetian vog vogesite voglite vogue voguey voguish Vogul voice voiced voiceful voicefulness voiceless voicelessly voicelessness voicelet voicelike voicer voicing void voidable voidableness voidance voided voidee voider voiding voidless voidly voidness voile voiturette voivode voivodeship vol volable volage Volans volant volantly Volapuk Volapuker Volapukism Volapukist volar volata volatic volatile volatilely volatileness volatility volatilizable volatilization volatilize volatilizer volation volational volborthite Volcae volcan Volcanalia volcanian volcanic volcanically volcanicity volcanism volcanist volcanite volcanity volcanization volcanize volcano volcanoism volcanological volcanologist volcanologize volcanology Volcanus vole volemitol volency volent volently volery volet volhynite volipresence volipresent volitant volitate volitation volitational volitiency volitient volition volitional volitionalist volitionality volitionally volitionary volitionate volitionless volitive volitorial Volkerwanderung volley volleyball volleyer volleying volleyingly volost volplane volplanist Volsci Volscian volsella volsellum Volstead Volsteadism volt Volta voltaelectric voltaelectricity voltaelectrometer voltaelectrometric voltage voltagraphy voltaic Voltairian Voltairianize Voltairish Voltairism voltaism voltaite voltameter voltametric voltammeter voltaplast voltatype voltinism voltivity voltize voltmeter voltzite volubilate volubility voluble volubleness volubly volucrine volume volumed volumenometer volumenometry volumescope volumeter volumetric volumetrical volumetrically volumetry volumette voluminal voluminosity voluminous voluminously voluminousness volumist volumometer volumometrical volumometry voluntariate voluntarily voluntariness voluntarism voluntarist voluntaristic voluntarity voluntary voluntaryism voluntaryist voluntative volunteer volunteerism volunteerly volunteership volupt voluptary voluptas voluptuarian voluptuary voluptuate voluptuosity voluptuous voluptuously voluptuousness volupty Voluspa voluta volutate volutation volute voluted Volutidae volutiform volutin volution volutoid volva volvate volvelle volvent Volvocaceae volvocaceous volvulus vomer vomerine vomerobasilar vomeronasal vomeropalatine vomica vomicine vomit vomitable vomiter vomiting vomitingly vomition vomitive vomitiveness vomito vomitory vomiture vomiturition vomitus vomitwort vondsira vonsenite voodoo voodooism voodooist voodooistic voracious voraciously voraciousness voracity voraginous vorago vorant vorhand vorlooper vorondreo vorpal vortex vortical vortically vorticel Vorticella vorticellid Vorticellidae vortices vorticial vorticiform vorticism vorticist vorticity vorticose vorticosely vorticular vorticularly vortiginous Vortumnus Vosgian vota votable votal votally votaress votarist votary votation Vote vote voteen voteless voter voting Votish votive votively votiveness votometer votress Votyak vouch vouchable vouchee voucher voucheress vouchment vouchsafe vouchsafement vouge Vougeot Vouli voussoir vow vowed vowel vowelish vowelism vowelist vowelization vowelize vowelless vowellessness vowellike vowely vower vowess vowless vowmaker vowmaking voyage voyageable voyager voyance voyeur voyeurism vraic vraicker vraicking vrbaite vriddhi vrother Vu vug vuggy Vulcan Vulcanalia Vulcanalial Vulcanalian Vulcanian Vulcanic vulcanicity vulcanism vulcanist vulcanite vulcanizable vulcanizate vulcanization vulcanize vulcanizer vulcanological vulcanologist vulcanology vulgar vulgare vulgarian vulgarish vulgarism vulgarist vulgarity vulgarization vulgarize vulgarizer vulgarlike vulgarly vulgarness vulgarwise Vulgate vulgate vulgus vuln vulnerability vulnerable vulnerableness vulnerably vulnerary vulnerate vulneration vulnerative vulnerose vulnific vulnose Vulpecula vulpecular Vulpeculid Vulpes vulpic vulpicidal vulpicide vulpicidism Vulpinae vulpine vulpinism vulpinite vulsella vulsellum vulsinite Vultur vulture vulturelike vulturewise Vulturidae Vulturinae vulturine vulturish vulturism vulturn vulturous vulva vulval vulvar vulvate vulviform vulvitis vulvocrural vulvouterine vulvovaginal vulvovaginitis vum vying vyingly W w Wa wa Waac waag waapa waar Waasi wab wabber wabble wabbly wabby wabe Wabena wabeno Wabi wabster Wabuma Wabunga Wac wacago wace Wachaga Wachenheimer wachna Wachuset wack wacke wacken wacker wackiness wacky Waco wad waddent wadder wadding waddler waddlesome waddling waddlingly waddly waddy waddywood wade wadeable wader wadi wading wadingly wadlike wadmaker wadmaking wadmal wadmeal wadna wadset wadsetter wae waeg waer waesome waesuck Waf Wafd Wafdist wafer waferer waferish wafermaker wafermaking waferwoman waferwork wafery waff waffle wafflike waffly waft waftage wafter wafture wafty wag Waganda waganging wagaun wagbeard wage waged wagedom wageless wagelessness wagenboom Wagener wager wagerer wagering wages wagesman wagework wageworker wageworking waggable waggably waggel wagger waggery waggie waggish waggishly waggishness waggle waggling wagglingly waggly Waggumbura waggy waglike wagling Wagneresque Wagnerian Wagneriana Wagnerianism Wagnerism Wagnerist Wagnerite wagnerite Wagnerize Wagogo Wagoma wagon wagonable wagonage wagoner wagoness wagonette wagonful wagonload wagonmaker wagonmaking wagonman wagonry wagonsmith wagonway wagonwayman wagonwork wagonwright wagsome wagtail Waguha wagwag wagwants Wagweno wagwit wah Wahabi Wahabiism Wahabit Wahabitism wahahe Wahehe Wahima wahine Wahlenbergia wahoo wahpekute Wahpeton waiata Waibling Waicuri Waicurian waif Waiguli Waiilatpuan waik waikly waikness wail Wailaki wailer wailful wailfully wailingly wailsome waily wain wainage wainbote wainer wainful wainman wainrope wainscot wainscoting wainwright waipiro wairch waird wairepo wairsh waise waist waistband waistcloth waistcoat waistcoated waistcoateer waistcoathole waistcoating waistcoatless waisted waister waisting waistless waistline wait waiter waiterage waiterdom waiterhood waitering waiterlike waitership waiting waitingly waitress waivatua waive waiver waivery waivod Waiwai waiwode wajang waka Wakamba wakan Wakashan wake wakeel wakeful wakefully wakefulness wakeless waken wakener wakening waker wakes waketime wakf Wakhi wakif wakiki waking wakingly wakiup wakken wakon wakonda Wakore Wakwafi waky Walach Walachian walahee Walapai Walchia Waldenses Waldensian waldflute waldgrave waldgravine Waldheimia waldhorn waldmeister Waldsteinia wale waled walepiece Waler waler walewort wali waling walk walkable walkaway walker walking walkist walkmill walkmiller walkout walkover walkrife walkside walksman walkway walkyrie wall wallaba wallaby Wallach wallah wallaroo Wallawalla wallbird wallboard walled waller Wallerian wallet walletful walleye walleyed wallflower wallful wallhick walling wallise wallless wallman Wallon Wallonian Walloon walloon wallop walloper walloping wallow wallower wallowish wallowishly wallowishness wallpaper wallpapering wallpiece Wallsend wallwise wallwork wallwort wally walnut Walpapi Walpolean Walpurgis walpurgite walrus walsh walt walter walth Waltonian waltz waltzer waltzlike walycoat wamara wambais wamble wambliness wambling wamblingly wambly Wambuba Wambugu Wambutti wame wamefou wamel wammikin wamp Wampanoag wampee wample wampum wampumpeag wampus wamus wan Wanapum wanchancy wand wander wanderable wanderer wandering wanderingly wanderingness Wanderjahr wanderlust wanderluster wanderlustful wanderoo wandery wanderyear wandflower wandle wandlike wandoo Wandorobo wandsman wandy wane Waneatta waned waneless wang wanga wangala wangan Wangara wangateur wanghee wangle wangler Wangoni wangrace wangtooth wanhope wanhorn wanigan waning wankapin wankle wankliness wankly wanle wanly wanner wanness wannish wanny wanrufe wansonsy want wantage wanter wantful wanthill wanthrift wanting wantingly wantingness wantless wantlessness wanton wantoner wantonlike wantonly wantonness wantwit wanty wanwordy wanworth wany Wanyakyusa Wanyamwezi Wanyasa Wanyoro wap wapacut Wapato wapatoo wapentake Wapisiana wapiti Wapogoro Wapokomo wapp Wappato wappenschaw wappenschawing wapper wapping Wappinger Wappo war warabi waratah warble warbled warblelike warbler warblerlike warblet warbling warblingly warbly warch warcraft ward wardable wardage wardapet warday warded Warden warden wardency wardenry wardenship warder warderer wardership wardholding warding wardite wardless wardlike wardmaid wardman wardmote wardress wardrobe wardrober wardroom wardship wardsmaid wardsman wardswoman wardwite wardwoman ware Waregga warehou warehouse warehouseage warehoused warehouseful warehouseman warehouser wareless waremaker waremaking wareman wareroom warf warfare warfarer warfaring warful warily wariness Waring waringin warish warison wark warkamoowee warl warless warlessly warlike warlikely warlikeness warlock warluck warly warm warmable warman warmed warmedly warmer warmful warmhearted warmheartedly warmheartedness warmhouse warming warmish warmly warmness warmonger warmongering warmouth warmth warmthless warmus warn warnel warner warning warningly warningproof warnish warnoth warnt Warori warp warpable warpage warped warper warping warplane warple warplike warproof warpwise warragal warrambool warran warrand warrandice warrant warrantable warrantableness warrantably warranted warrantee warranter warrantise warrantless warrantor warranty warratau Warrau warree warren warrener warrenlike warrer Warri warrin warrior warrioress warriorhood warriorism warriorlike warriorship warriorwise warrok Warsaw warsaw warse warsel warship warsle warsler warst wart warted wartern wartflower warth wartime wartless wartlet wartlike wartproof wartweed wartwort warty wartyback Warua Warundi warve warwards Warwick warwickite warwolf warworn wary was wasabi Wasagara Wasandawi Wasango Wasat Wasatch Wasco wase Wasegua wasel wash washability washable washableness Washaki washaway washbasin washbasket washboard washbowl washbrew washcloth washday washdish washdown washed washen washer washerless washerman washerwife washerwoman washery washeryman washhand washhouse washin washiness washing Washington Washingtonia Washingtonian Washingtoniana Washita washland washmaid washman Washo Washoan washoff washout washpot washproof washrag washroad washroom washshed washstand washtail washtray washtrough washtub washway washwoman washwork washy Wasir wasnt Wasoga Wasp wasp waspen wasphood waspily waspish waspishly waspishness wasplike waspling waspnesting waspy wassail wassailer wassailous wassailry wassie wast wastable wastage waste wastebasket wasteboard wasted wasteful wastefully wastefulness wastel wasteland wastelbread wasteless wasteman wastement wasteness wastepaper wasteproof waster wasterful wasterfully wasterfulness wastethrift wasteword wasteyard wasting wastingly wastingness wastland wastrel wastrife wasty Wasukuma Waswahili Wat wat Watala watap watch watchable watchboat watchcase watchcry watchdog watched watcher watchfree watchful watchfully watchfulness watchglassful watchhouse watching watchingly watchkeeper watchless watchlessness watchmaker watchmaking watchman watchmanly watchmanship watchmate watchment watchout watchtower watchwise watchwoman watchword watchwork water waterage waterbailage waterbelly Waterberg waterboard waterbok waterbosh waterbrain waterchat watercup waterdoe waterdrop watered waterer waterfall waterfinder waterflood waterfowl waterfront waterhead waterhorse waterie waterily wateriness watering wateringly wateringman waterish waterishly waterishness Waterlander Waterlandian waterleave waterless waterlessly waterlessness waterlike waterline waterlog waterlogged waterloggedness waterlogger waterlogging Waterloo waterman watermanship watermark watermaster watermelon watermonger waterphone waterpot waterproof waterproofer waterproofing waterproofness waterquake waterscape watershed watershoot waterside watersider waterskin watersmeet waterspout waterstead watertight watertightal watertightness waterward waterwards waterway waterweed waterwise waterwoman waterwood waterwork waterworker waterworm waterworn waterwort watery wath wathstead Watsonia watt wattage wattape wattle wattlebird wattled wattless wattlework wattling wattman wattmeter Watusi wauble wauch wauchle waucht wauf waugh waughy wauken waukit waukrife waul waumle wauner wauns waup waur Waura wauregan wauve wavable wavably Wave wave waved waveless wavelessly wavelessness wavelet wavelike wavellite wavemark wavement wavemeter waveproof waver waverable waverer wavering waveringly waveringness waverous wavery waveson waveward wavewise wavey wavicle wavily waviness waving wavingly Wavira wavy waw wawa wawah wawaskeesh wax waxberry waxbill waxbird waxbush waxchandler waxchandlery waxen waxer waxflower Waxhaw waxhearted waxily waxiness waxing waxingly waxlike waxmaker waxmaking waxman waxweed waxwing waxwork waxworker waxworking waxy way wayaka wayang Wayao wayback wayberry waybill waybird waybook waybread waybung wayfare wayfarer wayfaring wayfaringly wayfellow waygang waygate waygoing waygone waygoose wayhouse waying waylaid waylaidlessness waylay waylayer wayleave wayless waymaker wayman waymark waymate waypost ways wayside waysider waysliding waythorn wayward waywarden waywardly waywardness waywiser waywode waywodeship wayworn waywort wayzgoose Wazir we Wea weak weakbrained weaken weakener weakening weakfish weakhanded weakhearted weakheartedly weakheartedness weakish weakishly weakishness weakliness weakling weakly weakmouthed weakness weaky weal weald Wealden wealdsman wealth wealthily wealthiness wealthless wealthmaker wealthmaking wealthmonger Wealthy wealthy weam wean weanable weanedness weanel weaner weanling Weanoc weanyer Weapemeoc weapon weaponed weaponeer weaponless weaponmaker weaponmaking weaponproof weaponry weaponshaw weaponshow weaponshowing weaponsmith weaponsmithy wear wearability wearable wearer weariable weariableness wearied weariedly weariedness wearier weariful wearifully wearifulness weariless wearilessly wearily weariness wearing wearingly wearish wearishly wearishness wearisome wearisomely wearisomeness wearproof weary wearying wearyingly weasand weasel weaselfish weasellike weaselly weaselship weaselskin weaselsnout weaselwise weaser weason weather weatherboard weatherboarding weatherbreak weathercock weathercockish weathercockism weathercocky weathered weatherer weatherfish weatherglass weathergleam weatherhead weatherheaded weathering weatherliness weatherly weathermaker weathermaking weatherman weathermost weatherology weatherproof weatherproofed weatherproofing weatherproofness weatherward weatherworn weathery weavable weave weaveable weaved weavement weaver weaverbird weaveress weaving weazen weazened weazeny web webbed webber webbing webby weber Weberian webeye webfoot webfooter webless weblike webmaker webmaking webster Websterian websterite webwork webworm wecht wed wedana wedbed wedbedrip wedded weddedly weddedness wedder wedding weddinger wede wedge wedgeable wedgebill wedged wedgelike wedger wedgewise Wedgie wedging Wedgwood wedgy wedlock Wednesday wedset wee weeble weed weeda weedable weedage weeded weeder weedery weedful weedhook weediness weedingtime weedish weedless weedlike weedling weedow weedproof weedy week weekday weekend weekender weekly weekwam weel weelfard weelfaured weemen ween weendigo weeness weening weenong weeny weep weepable weeper weepered weepful weeping weepingly weeps weepy weesh weeshy weet weetbird weetless weever weevil weeviled weevillike weevilproof weevily weewow weeze weft weftage wefted wefty Wega wegenerian wegotism wehrlite Wei weibyeite weichselwood Weierstrassian Weigela weigelite weigh weighable weighage weighbar weighbauk weighbridge weighbridgeman weighed weigher weighership weighhouse weighin weighing weighman weighment weighshaft weight weightchaser weighted weightedly weightedness weightily weightiness weighting weightless weightlessly weightlessness weightometer weighty weinbergerite Weinmannia weinschenkite weir weirangle weird weirdful weirdish weirdless weirdlessness weirdlike weirdliness weirdly weirdness weirdsome weirdward weirdwoman weiring weisbachite weiselbergite weism Weismannian Weismannism weissite Weissnichtwo Weitspekan wejack weka wekau wekeen weki welcome welcomeless welcomely welcomeness welcomer welcoming welcomingly weld weldability weldable welder welding weldless weldment weldor Welf welfare welfaring Welfic welk welkin welkinlike well wellat wellaway wellborn wellcurb wellhead wellhole welling wellington Wellingtonia wellish wellmaker wellmaking wellman wellnear wellness wellring Wellsian wellside wellsite wellspring wellstead wellstrand welly wellyard wels Welsh welsh welsher Welshery Welshism Welshland Welshlike Welshman Welshness Welshry Welshwoman Welshy welsium welt welted welter welterweight welting Welwitschia wem wemless wen wench wencher wenchless wenchlike Wenchow Wenchowese Wend wend wende Wendic Wendish wene Wenlock Wenlockian wennebergite wennish wenny Wenonah Wenrohronon went wentletrap wenzel wept wer Werchowinci were werebear werecalf werefolk werefox werehyena werejaguar wereleopard werent weretiger werewolf werewolfish werewolfism werf wergil weri Wernerian Wernerism wernerite werowance wert Werther Wertherian Wertherism wervel wese weskit Wesleyan Wesleyanism Wesleyism wesselton Wessexman west westaway westbound weste wester westering westerliness westerly westermost western westerner westernism westernization westernize westernly westernmost westerwards westfalite westing westland Westlander westlandways westmost westness Westphalian Westralian Westralianism westward westwardly westwardmost westwards westy wet weta wetback wetbird wetched wetchet wether wetherhog wetherteg wetly wetness wettability wettable wetted wetter wetting wettish Wetumpka weve wevet Wewenoc wey Wezen Wezn wha whabby whack whacker whacking whacky whafabout whale whaleback whalebacker whalebird whaleboat whalebone whaleboned whaledom whalehead whalelike whaleman whaler whaleroad whalery whaleship whaling whalish whally whalm whalp whaly wham whamble whame whammle whamp whampee whample whan whand whang whangable whangam whangdoodle whangee whanghee whank whap whappet whapuka whapukee whapuku whar whare whareer wharf wharfage wharfhead wharfholder wharfing wharfinger wharfland wharfless wharfman wharfmaster wharfrae wharfside wharl wharp wharry whart wharve whase whasle what whata whatabouts whatever whatkin whatlike whatna whatness whatnot whatreck whats whatso whatsoeer whatsoever whatsomever whatten whau whauk whaup whaur whauve wheal whealworm whealy wheam wheat wheatbird wheatear wheateared wheaten wheatgrower wheatland wheatless wheatlike wheatstalk wheatworm wheaty whedder whee wheedle wheedler wheedlesome wheedling wheedlingly wheel wheelage wheelband wheelbarrow wheelbarrowful wheelbird wheelbox wheeldom wheeled wheeler wheelery wheelhouse wheeling wheelingly wheelless wheellike wheelmaker wheelmaking wheelman wheelrace wheelroad wheelsman wheelsmith wheelspin wheelswarf wheelway wheelwise wheelwork wheelwright wheelwrighting wheely wheem wheen wheencat wheenge wheep wheeple wheer wheerikins wheesht wheetle wheeze wheezer wheezily wheeziness wheezingly wheezle wheezy wheft whein whekau wheki whelk whelked whelker whelklike whelky whelm whelp whelphood whelpish whelpless whelpling whelve whemmel when whenabouts whenas whence whenceeer whenceforth whenceforward whencesoeer whencesoever whencever wheneer whenever whenness whenso whensoever whensomever where whereabout whereabouts whereafter whereanent whereas whereat whereaway whereby whereer wherefor wherefore wherefrom wherein whereinsoever whereinto whereness whereof whereon whereout whereover whereso wheresoeer wheresoever wheresomever wherethrough wheretill whereto wheretoever wheretosoever whereunder whereuntil whereunto whereup whereupon wherever wherewith wherewithal wherret wherrit wherry wherryman whet whether whetile whetrock whetstone whetter whew whewellite whewer whewl whewt whey wheybeard wheyey wheyeyness wheyface wheyfaced wheyish wheyishness wheylike wheyness whiba which whichever whichsoever whichway whichways whick whicken whicker whid whidah whidder whiff whiffenpoof whiffer whiffet whiffle whiffler whifflery whiffletree whiffling whifflingly whiffy whift Whig whig Whiggamore whiggamore Whiggarchy Whiggery Whiggess Whiggification Whiggify Whiggish Whiggishly Whiggishness Whiggism Whiglet Whigling whigmaleerie whigship whikerby while whileen whilere whiles whilie whilk Whilkut whill whillaballoo whillaloo whillilew whilly whillywha whilock whilom whils whilst whilter whim whimberry whimble whimbrel whimling whimmy whimper whimperer whimpering whimperingly whimsey whimsic whimsical whimsicality whimsically whimsicalness whimsied whimstone whimwham whin whinberry whinchacker whinchat whincheck whincow whindle whine whiner whinestone whing whinge whinger whininess whiningly whinnel whinner whinnock whinny whinstone whiny whinyard whip whipbelly whipbird whipcat whipcord whipcordy whipcrack whipcracker whipcraft whipgraft whipjack whipking whiplash whiplike whipmaker whipmaking whipman whipmanship whipmaster whippa whippable whipparee whipped whipper whippersnapper whippertail whippet whippeter whippiness whipping whippingly whippletree whippoorwill whippost whippowill whippy whipsaw whipsawyer whipship whipsocket whipstaff whipstalk whipstall whipster whipstick whipstitch whipstock whipt whiptail whiptree whipwise whipworm whir whirken whirl whirlabout whirlblast whirlbone whirlbrain whirled whirler whirley whirlgig whirlicane whirligig whirlimagig whirling whirlingly whirlmagee whirlpool whirlpuff whirlwig whirlwind whirlwindish whirlwindy whirly whirlygigum whirret whirrey whirroo whirry whirtle whish whisk whisker whiskerage whiskerando whiskerandoed whiskered whiskerer whiskerette whiskerless whiskerlike whiskery whiskey whiskful whiskied whiskified whisking whiskingly whisky whiskyfied whiskylike whisp whisper whisperable whisperation whispered whisperer whisperhood whispering whisperingly whisperingness whisperless whisperous whisperously whisperproof whispery whissle Whisson whist whister whisterpoop whistle whistlebelly whistlefish whistlelike whistler Whistlerian whistlerism whistlewing whistlewood whistlike whistling whistlingly whistly whistness Whistonian Whit whit white whiteback whitebait whitebark whitebeard whitebelly whitebill whitebird whiteblaze whiteblow whitebottle Whiteboy Whiteboyism whitecap whitecapper Whitechapel whitecoat whitecomb whitecorn whitecup whited whiteface Whitefieldian Whitefieldism Whitefieldite whitefish whitefisher whitefishery Whitefoot whitefoot whitefootism whitehanded whitehass whitehawse whitehead whiteheart whitehearted whitelike whitely whiten whitener whiteness whitening whitenose whitepot whiteroot whiterump whites whitesark whiteseam whiteshank whiteside whitesmith whitestone whitetail whitethorn whitethroat whitetip whitetop whitevein whitewall whitewards whiteware whitewash whitewasher whiteweed whitewing whitewood whiteworm whitewort whitfinch whither whitherso whithersoever whitherto whitherward whiting whitish whitishness whitleather Whitleyism whitling whitlow whitlowwort Whitmanese Whitmanesque Whitmanism Whitmanize Whitmonday whitneyite whitrack whits whitster Whitsun Whitsunday Whitsuntide whittaw whitten whittener whitter whitterick whittle whittler whittling whittret whittrick whity whiz whizgig whizzer whizzerman whizziness whizzing whizzingly whizzle who whoa whodunit whoever whole wholehearted wholeheartedly wholeheartedness wholeness wholesale wholesalely wholesaleness wholesaler wholesome wholesomely wholesomeness wholewise wholly whom whomble whomever whomso whomsoever whone whoo whoof whoop whoopee whooper whooping whoopingly whooplike whoops whoosh whop whopper whopping whorage whore whoredom whorelike whoremaster whoremasterly whoremastery whoremonger whoremonging whoreship whoreson whorish whorishly whorishness whorl whorled whorlflower whorly whorlywort whort whortle whortleberry whose whosen whosesoever whosever whosomever whosumdever whud whuff whuffle whulk whulter whummle whun whunstane whup whush whuskie whussle whute whuther whutter whuttering whuz why whyever whyfor whyness whyo wi wice Wichita wicht wichtisite wichtje wick wickawee wicked wickedish wickedlike wickedly wickedness wicken wicker wickerby wickerware wickerwork wickerworked wickerworker wicket wicketkeep wicketkeeper wicketkeeping wicketwork wicking wickiup wickless wickup wicky wicopy wid widbin widdendream widder widdershins widdifow widdle widdy wide widegab widehearted widely widemouthed widen widener wideness widespread widespreadedly widespreadly widespreadness widewhere widework widgeon widish widow widowed widower widowered widowerhood widowership widowery widowhood widowish widowlike widowly widowman widowy width widthless widthway widthways widthwise widu wield wieldable wielder wieldiness wieldy wiener wienerwurst wienie wierangle wiesenboden wife wifecarl wifedom wifehood wifeism wifekin wifeless wifelessness wifelet wifelike wifeling wifelkin wifely wifeship wifeward wifie wifiekie wifish wifock wig wigan wigdom wigful wigged wiggen wigger wiggery wigging wiggish wiggishness wiggism wiggle wiggler wiggly wiggy wight wightly wightness wigless wiglet wiglike wigmaker wigmaking wigtail wigwag wigwagger wigwam wiikite Wikeno Wikstroemia Wilbur Wilburite wild wildbore wildcat wildcatter wildcatting wildebeest wilded wilder wilderedly wildering wilderment wilderness wildfire wildfowl wildgrave wilding wildish wildishly wildishness wildlife wildlike wildling wildly wildness wildsome wildwind wile wileful wileless wileproof Wilfred wilga wilgers Wilhelm Wilhelmina Wilhelmine wilily wiliness wilk wilkeite wilkin Wilkinson Will will willable willawa willed willedness willemite willer willet willey willeyer willful willfully willfulness William williamsite Williamsonia Williamsoniaceae Willie willie willier willies willing willinghearted willinghood willingly willingness williwaw willmaker willmaking willness willock willow willowbiter willowed willower willowish willowlike willowware willowweed willowworm willowwort willowy Willugbaeya Willy willy willyard willyart willyer wilsome wilsomely wilsomeness Wilsonian wilt wilter Wilton wiltproof Wiltshire wily wim wimberry wimble wimblelike wimbrel wime wimick wimple wimpleless wimplelike Win win winberry wince wincer wincey winch wincher Winchester winchman wincing wincingly Wind wind windable windage windbag windbagged windbaggery windball windberry windbibber windbore windbracing windbreak Windbreaker windbreaker windbroach windclothes windcuffer winddog winded windedly windedness winder windermost Windesheimer windfall windfallen windfanner windfirm windfish windflaw windflower windgall windgalled windhole windhover windigo windily windiness winding windingly windingness windjammer windjamming windlass windlasser windle windles windless windlessly windlessness windlestrae windlestraw windlike windlin windling windmill windmilly windock windore window windowful windowless windowlessness windowlet windowlight windowlike windowmaker windowmaking windowman windowpane windowpeeper windowshut windowward windowwards windowwise windowy windpipe windplayer windproof windring windroad windroot windrow windrower windscreen windshield windshock Windsor windsorite windstorm windsucker windtight windup windward windwardly windwardmost windwardness windwards windway windwayward windwaywardly windy wine wineball wineberry winebibber winebibbery winebibbing Winebrennerian wineconner wined wineglass wineglassful winegrower winegrowing winehouse wineless winelike winemay winepot winer winery Winesap wineshop wineskin winesop winetaster winetree winevat Winfred winful wing wingable wingbeat wingcut winged wingedly wingedness winger wingfish winghanded wingle wingless winglessness winglet winglike wingman wingmanship wingpiece wingpost wingseed wingspread wingstem wingy Winifred winish wink winkel winkelman winker winkered winking winkingly winkle winklehawk winklehole winklet winly winna winnable winnard Winnebago Winnecowet winnel winnelstrae winner Winnie winning winningly winningness winnings winninish Winnipesaukee winnle winnonish winnow winnower winnowing winnowingly Winona winrace winrow winsome winsomely winsomeness wint winter Winteraceae winterage Winteranaceae winterberry winterbloom winterbourne winterdykes wintered winterer winterfeed wintergreen winterhain wintering winterish winterishly winterishness winterization winterize winterkill winterkilling winterless winterlike winterliness winterling winterly winterproof wintersome wintertide wintertime winterward winterwards winterweed wintle wintrify wintrily wintriness wintrish wintrous wintry Wintun winy winze winzeman wipe wiper wippen wips wir wirable wirble wird wire wirebar wirebird wired wiredancer wiredancing wiredraw wiredrawer wiredrawn wirehair wireless wirelessly wirelessness wirelike wiremaker wiremaking wireman wiremonger Wirephoto wirepull wirepuller wirepulling wirer wiresmith wirespun wiretail wireway wireweed wirework wireworker wireworking wireworks wireworm wirily wiriness wiring wirl wirling Wiros wirr wirra wirrah wirrasthru wiry wis Wisconsinite wisdom wisdomful wisdomless wisdomproof wisdomship wise wiseacre wiseacred wiseacredness wiseacredom wiseacreish wiseacreishness wiseacreism wisecrack wisecracker wisecrackery wisehead wisehearted wiseheartedly wiseheimer wiselike wiseling wisely wiseman wisen wiseness wisenheimer wisent wiser wiseweed wisewoman wish wisha wishable wishbone wished wishedly wisher wishful wishfully wishfulness wishing wishingly wishless wishly wishmay wishness Wishoskan Wishram wisht wishtonwish Wisigothic wisket wiskinky wisp wispish wisplike wispy wiss wisse wissel wist Wistaria wistaria wiste wistened Wisteria wisteria wistful wistfully wistfulness wistit wistiti wistless wistlessness wistonwish wit witan Witbooi witch witchbells witchcraft witched witchedly witchen witchering witchery witchet witchetty witchhood witching witchingly witchleaf witchlike witchman witchmonger witchuck witchweed witchwife witchwoman witchwood witchwork witchy witcraft wite witeless witenagemot witepenny witess witful with withal withamite Withania withdraught withdraw withdrawable withdrawal withdrawer withdrawing withdrawingness withdrawment withdrawn withdrawnness withe withen wither witherband withered witheredly witheredness witherer withergloom withering witheringly witherite witherly withernam withers withershins withertip witherwards witherweight withery withewood withheld withhold withholdable withholdal withholder withholdment within withindoors withinside withinsides withinward withinwards withness witholden without withoutdoors withouten withoutforth withoutside withoutwards withsave withstand withstander withstandingness withstay withstood withstrain withvine withwind withy withypot withywind witjar witless witlessly witlessness witlet witling witloof witmonger witness witnessable witnessdom witnesser witney witneyer Witoto witship wittal wittawer witteboom witted witter wittering witticaster wittichenite witticism witticize wittified wittily wittiness witting wittingly wittol wittolly witty Witumki witwall witzchoura wive wiver wivern Wiyat Wiyot wiz wizard wizardess wizardism wizardlike wizardly wizardry wizardship wizen wizened wizenedness wizier wizzen wloka wo woad woader woadman woadwaxen woady woak woald woan wob wobbegong wobble wobbler wobbliness wobbling wobblingly wobbly wobster wocheinite Wochua wod woddie wode Wodenism wodge wodgy woe woebegone woebegoneness woebegonish woeful woefully woefulness woehlerite woesome woevine woeworn woffler woft wog wogiet Wogulian woibe wokas woke wokowi wold woldlike woldsman woldy wolf wolfachite wolfberry wolfdom wolfen wolfer Wolffia Wolffian Wolffianism wolfhood wolfhound Wolfian wolfish wolfishly wolfishness wolfkin wolfless wolflike wolfling wolfram wolframate wolframic wolframine wolframinium wolframite wolfsbane wolfsbergite wolfskin wolfward wolfwards wollastonite wollomai wollop Wolof wolter wolve wolveboon wolver wolverine woman womanbody womandom womanfolk womanfully womanhead womanhearted womanhood womanhouse womanish womanishly womanishness womanism womanist womanity womanization womanize womanizer womankind womanless womanlike womanliness womanly womanmuckle womanness womanpost womanproof womanship womanways womanwise womb wombat wombed womble wombstone womby womenfolk womenfolks womenkind womera wommerala won wonder wonderberry wonderbright wondercraft wonderer wonderful wonderfully wonderfulness wondering wonderingly wonderland wonderlandish wonderless wonderment wondermonger wondermongering wondersmith wondersome wonderstrong wonderwell wonderwork wonderworthy wondrous wondrously wondrousness wone wonegan wong wonga Wongara wongen wongshy wongsky woning wonky wonna wonned wonner wonning wonnot wont wonted wontedly wontedness wonting woo wooable wood woodagate woodbark woodbin woodbind woodbine woodbined woodbound woodburytype woodbush woodchat woodchuck woodcock woodcockize woodcracker woodcraft woodcrafter woodcraftiness woodcraftsman woodcrafty woodcut woodcutter woodcutting wooded wooden woodendite woodenhead woodenheaded woodenheadedness woodenly woodenness woodenware woodenweary woodeny woodfish woodgeld woodgrub woodhack woodhacker woodhole woodhorse woodhouse woodhung woodine woodiness wooding woodish woodjobber woodkern woodknacker woodland woodlander woodless woodlessness woodlet woodlike woodlocked woodly woodman woodmancraft woodmanship woodmonger woodmote woodness woodpeck woodpecker woodpenny woodpile woodprint woodranger woodreeve woodrick woodrock woodroof woodrow woodrowel Woodruff woodruff woodsere woodshed woodshop Woodsia woodside woodsilver woodskin woodsman woodspite woodstone woodsy woodwall woodward Woodwardia woodwardship woodware woodwax woodwaxen woodwise woodwork woodworker woodworking woodworm woodwose woodwright woody woodyard wooer woof woofed woofell woofer woofy woohoo wooing wooingly wool woold woolder woolding wooled woolen woolenet woolenization woolenize wooler woolert woolfell woolgatherer woolgathering woolgrower woolgrowing woolhead wooliness woollike woolly woollyhead woollyish woolman woolpack woolpress woolsack woolsey woolshearer woolshearing woolshears woolshed woolskin woolsorter woolsorting woolsower woolstock woolulose Woolwa woolwasher woolweed woolwheel woolwinder woolwork woolworker woolworking woom woomer woomerang woon woons woorali woorari woosh wootz woozle woozy wop woppish wops worble worcester word wordable wordably wordage wordbook wordbuilding wordcraft wordcraftsman worded Worden worder wordily wordiness wording wordish wordishly wordishness wordle wordless wordlessly wordlessness wordlike wordlorist wordmaker wordmaking wordman wordmanship wordmonger wordmongering wordmongery wordplay wordsman wordsmanship wordsmith wordspite wordster Wordsworthian Wordsworthianism wordy wore work workability workable workableness workaday workaway workbag workbasket workbench workbook workbox workbrittle workday worked worker workfellow workfolk workfolks workgirl workhand workhouse workhoused working workingly workingman workingwoman workless worklessness workloom workman workmanlike workmanlikeness workmanliness workmanly workmanship workmaster workmistress workout workpan workpeople workpiece workplace workroom works workship workshop worksome workstand worktable worktime workways workwise workwoman workwomanlike workwomanly worky workyard world worlded worldful worldish worldless worldlet worldlike worldlily worldliness worldling worldly worldmaker worldmaking worldproof worldquake worldward worldwards worldway worldy worm wormed wormer wormhole wormholed wormhood Wormian wormil worming wormless wormlike wormling wormproof wormroot wormseed wormship wormweed wormwood wormy worn wornil wornness worral worriable worricow worried worriedly worriedness worrier worriless worriment worrisome worrisomely worrisomeness worrit worriter worry worrying worryingly worryproof worrywart worse worsement worsen worseness worsening worser worserment worset worship worshipability worshipable worshiper worshipful worshipfully worshipfulness worshipingly worshipless worshipworth worshipworthy worst worsted wort worth worthful worthfulness worthiest worthily worthiness worthless worthlessly worthlessness worthship worthward worthy wosbird wot wote wots wottest wotteth woubit wouch wouf wough would wouldest wouldnt wouldst wound woundability woundable woundableness wounded woundedly wounder woundily wounding woundingly woundless wounds woundwort woundworth woundy wourali wourari wournil wove woven Wovoka wow wowser wowserdom wowserian wowserish wowserism wowsery wowt woy Woyaway wrack wracker wrackful Wraf wraggle wrainbolt wrainstaff wrainstave wraith wraithe wraithlike wraithy wraitly wramp wran wrang wrangle wrangler wranglership wranglesome wranglingly wrannock wranny wrap wrappage wrapped wrapper wrapperer wrappering wrapping wraprascal wrasse wrastle wrastler wrath wrathful wrathfully wrathfulness wrathily wrathiness wrathlike wrathy wraw wrawl wrawler wraxle wreak wreakful wreakless wreat wreath wreathage wreathe wreathed wreathen wreather wreathingly wreathless wreathlet wreathlike wreathmaker wreathmaking wreathwise wreathwork wreathwort wreathy wreck wreckage wrecker wreckfish wreckful wrecking wrecky Wren wren wrench wrenched wrencher wrenchingly wrenlet wrenlike wrentail wrest wrestable wrester wresting wrestingly wrestle wrestler wrestlerlike wrestling wretch wretched wretchedly wretchedness wretchless wretchlessly wretchlessness wretchock wricht wrick wride wried wrier wriest wrig wriggle wriggler wrigglesome wrigglingly wriggly wright wrightine wring wringbolt wringer wringman wringstaff wrinkle wrinkleable wrinkled wrinkledness wrinkledy wrinkleful wrinkleless wrinkleproof wrinklet wrinkly wrist wristband wristbone wristed wrister wristfall wristikin wristlet wristlock wristwork writ writability writable writation writative write writee writer writeress writerling writership writh writhe writhed writhedly writhedness writhen writheneck writher writhing writhingly writhy writing writinger writmaker writmaking writproof written writter wrive wrizzled wro wrocht wroke wroken wrong wrongdoer wrongdoing wronged wronger wrongful wrongfully wrongfulness wronghead wrongheaded wrongheadedly wrongheadedness wronghearted wrongheartedly wrongheartedness wrongish wrongless wronglessly wrongly wrongness wrongous wrongously wrongousness wrongwise Wronskian wrossle wrote wroth wrothful wrothfully wrothily wrothiness wrothly wrothsome wrothy wrought wrox wrung wrungness wry wrybill wryly wrymouth wryneck wryness wrytail Wu Wuchereria wud wuddie wudge wudu wugg wulfenite wulk wull wullawins wullcat Wullie wulliwa wumble wumman wummel wun Wundtian wungee wunna wunner wunsome wup wur wurley wurmal Wurmian wurrus wurset wurtzilite wurtzite Wurzburger wurzel wush wusp wuss wusser wust wut wuther wuzu wuzzer wuzzle wuzzy wy Wyandot Wyandotte Wycliffian Wycliffism Wycliffist Wycliffite wyde wye Wyethia wyke Wykehamical Wykehamist wyle wyliecoat wymote wyn wynd wyne wynkernel wynn Wyomingite wyomingite wype wyson wyss wyve wyver X x xanthaline xanthamic xanthamide xanthane xanthate xanthation xanthein xanthelasma xanthelasmic xanthelasmoidea xanthene Xanthian xanthic xanthide Xanthidium xanthin xanthine xanthinuria xanthione Xanthisma xanthite Xanthium xanthiuria xanthocarpous Xanthocephalus Xanthoceras Xanthochroi xanthochroia Xanthochroic xanthochroid xanthochroism xanthochromia xanthochromic xanthochroous xanthocobaltic xanthocone xanthoconite xanthocreatinine xanthocyanopsia xanthocyanopsy xanthocyanopy xanthoderm xanthoderma xanthodont xanthodontous xanthogen xanthogenamic xanthogenamide xanthogenate xanthogenic xantholeucophore xanthoma xanthomata xanthomatosis xanthomatous Xanthomelanoi xanthomelanous xanthometer Xanthomonas xanthomyeloma xanthone xanthophane xanthophore xanthophose Xanthophyceae xanthophyll xanthophyllite xanthophyllous Xanthopia xanthopia xanthopicrin xanthopicrite xanthoproteic xanthoprotein xanthoproteinic xanthopsia xanthopsin xanthopsydracia xanthopterin xanthopurpurin xanthorhamnin Xanthorrhiza Xanthorrhoea xanthorrhoea xanthosiderite xanthosis Xanthosoma xanthospermous xanthotic Xanthoura xanthous Xanthoxalis xanthoxenite xanthoxylin xanthuria xanthydrol xanthyl xarque Xaverian xebec Xema xenacanthine Xenacanthini xenagogue xenagogy Xenarchi Xenarthra xenarthral xenarthrous xenelasia xenelasy xenia xenial xenian Xenicidae Xenicus xenium xenobiosis xenoblast Xenocratean Xenocratic xenocryst xenodochium xenogamous xenogamy xenogenesis xenogenetic xenogenic xenogenous xenogeny xenolite xenolith xenolithic xenomania xenomaniac Xenomi Xenomorpha xenomorphic xenomorphosis xenon xenoparasite xenoparasitism xenopeltid Xenopeltidae Xenophanean xenophile xenophilism xenophobe xenophobia xenophobian xenophobism xenophoby Xenophonic Xenophontean Xenophontian Xenophontic Xenophontine Xenophora xenophoran Xenophoridae xenophthalmia xenophya xenopodid Xenopodidae xenopodoid Xenopsylla xenopteran Xenopteri xenopterygian Xenopterygii Xenopus Xenorhynchus Xenos xenosaurid Xenosauridae xenosauroid Xenosaurus xenotime Xenurus xenyl xenylamine xerafin xeransis Xeranthemum xeranthemum xerantic xerarch xerasia Xeres xeric xerically xeriff xerocline xeroderma xerodermatic xerodermatous xerodermia xerodermic xerogel xerography xeroma xeromata xeromenia xeromorph xeromorphic xeromorphous xeromorphy xeromyron xeromyrum xeronate xeronic xerophagia xerophagy xerophil xerophile xerophilous xerophily xerophobous xerophthalmia xerophthalmos xerophthalmy Xerophyllum xerophyte xerophytic xerophytically xerophytism xeroprinting xerosis xerostoma xerostomia xerotes xerotherm xerotic xerotocia xerotripsis Xerus xi Xicak Xicaque Ximenia Xina Xinca Xipe Xiphias xiphias xiphihumeralis xiphiid Xiphiidae xiphiiform xiphioid xiphiplastra xiphiplastral xiphiplastron xiphisterna xiphisternal xiphisternum Xiphisura xiphisuran Xiphiura Xiphius xiphocostal Xiphodon Xiphodontidae xiphodynia xiphoid xiphoidal xiphoidian xiphopagic xiphopagous xiphopagus xiphophyllous xiphosterna xiphosternum Xiphosura xiphosuran xiphosure Xiphosuridae xiphosurous Xiphosurus xiphuous Xiphura Xiphydria xiphydriid Xiphydriidae Xiraxara Xmas xoana xoanon Xosa xurel xyla xylan Xylaria Xylariaceae xylate Xyleborus xylem xylene xylenol xylenyl xyletic Xylia xylic xylidic xylidine Xylina xylindein xylinid xylite xylitol xylitone xylobalsamum xylocarp xylocarpous Xylocopa xylocopid Xylocopidae xylogen xyloglyphy xylograph xylographer xylographic xylographical xylographically xylography xyloid xyloidin xylol xylology xyloma xylomancy xylometer xylon xylonic Xylonite xylonitrile Xylophaga xylophagan xylophage xylophagid Xylophagidae xylophagous Xylophagus xylophilous xylophone xylophonic xylophonist Xylopia xyloplastic xylopyrography xyloquinone xylorcin xylorcinol xylose xyloside Xylosma xylostroma xylostromata xylostromatoid xylotile xylotomist xylotomous xylotomy Xylotrya xylotypographic xylotypography xyloyl xylyl xylylene xylylic xyphoid Xyrichthys xyrid Xyridaceae xyridaceous Xyridales Xyris xyst xyster xysti xystos xystum xystus Y y ya yaba yabber yabbi yabble yabby yabu yacal yacca yachan yacht yachtdom yachter yachting yachtist yachtman yachtmanship yachtsman yachtsmanlike yachtsmanship yachtswoman yachty yad Yadava yade yaff yaffingale yaffle yagger yaghourt yagi Yagnob yagourundi Yagua yagua yaguarundi yaguaza yah yahan Yahgan Yahganan Yahoo yahoo Yahoodom Yahooish Yahooism Yahuna Yahuskin Yahweh Yahwism Yahwist Yahwistic yair yaird yaje yajeine yajenine Yajna Yajnavalkya yajnopavita yak Yaka Yakala yakalo yakamik Yakan yakattalo Yakima yakin yakka yakman Yakona Yakonan Yakut Yakutat yalb Yale yale Yalensian yali yalla yallaer yallow yam Yamacraw Yamamadi yamamai yamanai yamaskite Yamassee Yamato Yamel yamen Yameo yamilke yammadji yammer yamp yampa yamph yamshik yamstchik yan Yana Yanan yancopin yander yang yangtao yank Yankee Yankeedom Yankeefy Yankeeism Yankeeist Yankeeize Yankeeland Yankeeness yanking Yankton Yanktonai yanky Yannigan Yao yaoort yaourti yap yapa yaply Yapman yapness yapok yapp yapped yapper yappiness yapping yappingly yappish yappy yapster Yaqui Yaquina yar yarak yaray yarb Yarborough yard yardage yardang yardarm yarder yardful yarding yardkeep yardland yardman yardmaster yardsman yardstick yardwand yare yareta yark Yarkand yarke yarl yarly yarm yarn yarnen yarner yarnwindle yarpha yarr yarraman yarran yarringle yarrow yarth yarthen Yaru Yarura Yaruran Yaruro yarwhelp yarwhip yas yashiro yashmak Yasht Yasna yat yataghan yatalite yate yati Yatigan yatter Yatvyag Yauapery yaud yauld yaupon yautia yava Yavapai yaw yawl yawler yawlsman yawmeter yawn yawner yawney yawnful yawnfully yawnily yawniness yawning yawningly yawnproof yawnups yawny yawp yawper yawroot yaws yawweed yawy yaxche yaya Yazdegerdian Yazoo ycie yday ye yea yeah yealing yean yeanling year yeara yearbird yearbook yeard yearday yearful yearling yearlong yearly yearn yearnful yearnfully yearnfulness yearning yearnling yearock yearth yeast yeastily yeastiness yeasting yeastlike yeasty yeat yeather yed yede yee yeel yeelaman yees yegg yeggman yeguita yeld yeldrin yeldrock yelk yell yeller yelling yelloch yellow yellowammer yellowback yellowbelly yellowberry yellowbill yellowbird yellowcrown yellowcup yellowfin yellowfish yellowhammer yellowhead yellowing yellowish yellowishness Yellowknife yellowlegs yellowly yellowness yellowroot yellowrump yellows yellowseed yellowshank yellowshanks yellowshins yellowtail yellowthorn yellowthroat yellowtop yellowware yellowweed yellowwood yellowwort yellowy yelm yelmer yelp yelper yelt Yemen Yemeni Yemenic Yemenite yen yender Yengee Yengeese yeni Yenisei Yeniseian yenite yentnite yeo yeoman yeomaness yeomanette yeomanhood yeomanlike yeomanly yeomanry yeomanwise yeorling yeowoman yep yer Yerava Yeraver yerb yerba yercum yerd yere yerga yerk yern yerth yes yese Yeshibah Yeshiva yeso yesso yest yester yesterday yestereve yestereven yesterevening yestermorn yestermorning yestern yesternight yesternoon yesterweek yesteryear yestreen yesty yet yeta yetapa yeth yether yetlin yeuk yeukieness yeuky yeven yew yex yez Yezdi Yezidi yezzy ygapo Yid Yiddish Yiddisher Yiddishism Yiddishist yield yieldable yieldableness yieldance yielden yielder yielding yieldingly yieldingness yieldy yigh Yikirgaulit Yildun yill yilt Yin yin yince yinst yip yird yirk yirm yirmilik yirn yirr yirth yis yite ym yn ynambu yo yobi yocco yochel yock yockel yodel yodeler yodelist yodh yoe yoga yogasana yogh yoghurt yogi yogin yogism yogist yogoite yohimbe yohimbi yohimbine yohimbinization yohimbinize yoi yoick yoicks yojan yojana Yojuane yok yoke yokeable yokeableness yokeage yokefellow yokel yokeldom yokeless yokelish yokelism yokelry yokemate yokemating yoker yokewise yokewood yoking Yokuts yoky yolden Yoldia yoldring yolk yolked yolkiness yolkless yolky yom yomer Yomud yon yoncopin yond yonder Yonkalla yonner yonside yont yook yoop yor yore yoretime york Yorker yorker Yorkish Yorkist Yorkshire Yorkshireism Yorkshireman Yoruba Yoruban yot yotacism yotacize yote you youd youden youdendrift youdith youff youl young youngberry younger younghearted youngish younglet youngling youngly youngness youngster youngun younker youp your yourn yours yoursel yourself yourselves youse youth youthen youthful youthfullity youthfully youthfulness youthhead youthheid youthhood youthily youthless youthlessness youthlike youthlikeness youthsome youthtide youthwort youthy youve youward youwards youze yoven yow yowie yowl yowler yowley yowlring yowt yox yoy yperite Yponomeuta Yponomeutid Yponomeutidae ypsiliform ypsiloid Ypurinan Yquem yr ytterbia ytterbic ytterbium yttria yttrialite yttric yttriferous yttrious yttrium yttrocerite yttrocolumbite yttrocrasite yttrofluorite yttrogummite yttrotantalite Yuan yuan Yuapin yuca Yucatec Yucatecan Yucateco Yucca yucca Yuchi yuck yuckel yucker yuckle yucky Yuechi yuft Yuga yugada Yugoslav Yugoslavian Yugoslavic yuh Yuit Yukaghir Yuki Yukian yukkel yulan yule yuleblock yuletide Yuma Yuman yummy Yun Yunca Yuncan yungan Yunnanese Yurak Yurok yurt yurta Yurucare Yurucarean Yurucari Yurujure Yuruk Yuruna Yurupary yus yusdrum Yustaga yutu yuzlik yuzluk Yvonne Z z za Zabaean zabaglione Zabaism Zaberma zabeta Zabian Zabism zabra zabti zabtie zac zacate Zacatec Zacateco zacaton Zach Zachariah zachun zad Zadokite zadruga zaffar zaffer zafree zag zagged Zaglossus zaibatsu zain Zaitha zak zakkeu Zaklohpakap zalambdodont Zalambdodonta Zalophus zaman zamang zamarra zamarro Zambal Zambezian zambo zamboorak Zamenis Zamia Zamiaceae Zamicrus zamindar zamindari zamorin zamouse Zan Zanclidae Zanclodon Zanclodontidae Zande zander zandmole zanella Zaniah Zannichellia Zannichelliaceae Zanonia zant zante Zantedeschia zantewood Zanthorrhiza Zanthoxylaceae Zanthoxylum zanthoxylum Zantiot zantiote zany zanyish zanyism zanyship Zanzalian zanze Zanzibari Zapara Zaparan Zaparo Zaparoan zapas zapatero zaphara Zaphetic zaphrentid Zaphrentidae Zaphrentis zaphrentoid Zapodidae Zapodinae Zaporogian Zaporogue zapota Zapotec Zapotecan Zapoteco zaptiah zaptieh Zaptoeca zapupe Zapus zaqqum Zaque zar zarabanda Zaramo Zarathustrian Zarathustrianism Zarathustrism zaratite Zardushti zareba Zarema zarf zarnich zarp zarzuela zat zati zattare Zaurak Zauschneria Zavijava zax zayat zayin Zea zeal Zealander zealful zealless zeallessness zealot zealotic zealotical zealotism zealotist zealotry zealous zealously zealousness zealousy zealproof zebra zebraic zebralike zebrass zebrawood Zebrina zebrine zebrinny zebroid zebrula zebrule zebu zebub Zebulunite zeburro zecchini zecchino zechin Zechstein zed zedoary zee zeed Zeelander Zeguha zehner Zeidae zein zeism zeist Zeke zel Zelanian zelator zelatrice zelatrix Zelkova Zeltinger zemeism zemi zemimdari zemindar zemmi zemni zemstroist zemstvo Zen Zenaga Zenaida Zenaidinae Zenaidura zenana Zend Zendic zendician zendik zendikite Zenelophon zenick zenith zenithal zenithward zenithwards Zenobia zenocentric zenographic zenographical zenography Zenonian Zenonic zenu Zeoidei zeolite zeolitic zeolitization zeolitize zeoscope Zep zepharovichite zephyr Zephyranthes zephyrean zephyrless zephyrlike zephyrous zephyrus zephyry Zeppelin zeppelin zequin zer zerda Zerma zermahbub zero zeroaxial zeroize zerumbet zest zestful zestfully zestfulness zesty zeta zetacism zetetic Zeuctocoelomata zeuctocoelomatic zeuctocoelomic Zeuglodon zeuglodon zeuglodont Zeuglodonta Zeuglodontia Zeuglodontidae zeuglodontoid zeugma zeugmatic zeugmatically Zeugobranchia Zeugobranchiata zeunerite Zeus Zeuxian Zeuzera zeuzerian Zeuzeridae Zhmud ziamet ziara ziarat zibeline zibet zibethone zibetone zibetum ziega zieger zietrisikite ziffs zig ziganka ziggurat zigzag zigzagged zigzaggedly zigzaggedness zigzagger zigzaggery zigzaggy zigzagwise zihar zikurat Zilla zillah zimarra zimb zimbabwe zimbalon zimbaloon zimbi zimentwater zimme Zimmerwaldian Zimmerwaldist zimmi zimmis zimocca zinc Zincalo zincate zincic zincide zinciferous zincification zincify zincing zincite zincize zincke zincky zinco zincograph zincographer zincographic zincographical zincography zincotype zincous zincum zincuret zinfandel zing zingaresca zingel zingerone Zingiber Zingiberaceae zingiberaceous zingiberene zingiberol zingiberone zink zinkenite Zinnia zinnwaldite zinsang zinyamunga Zinzar Zinziberaceae zinziberaceous Zion Zionism Zionist Zionistic Zionite Zionless Zionward zip Zipa ziphian Ziphiidae Ziphiinae ziphioid Ziphius Zipper zipper zipping zippingly zippy Zips zira zirai Zirak Zirbanit zircite zircofluoride zircon zirconate zirconia zirconian zirconic zirconiferous zirconifluoride zirconium zirconofluoride zirconoid zirconyl Zirian Zirianian zirkelite zither zitherist Zizania Zizia Zizyphus zizz zloty Zmudz zo Zoa zoa zoacum Zoanthacea zoanthacean Zoantharia zoantharian zoanthid Zoanthidae Zoanthidea zoanthodeme zoanthodemic zoanthoid zoanthropy Zoanthus Zoarces zoarcidae zoaria zoarial Zoarite zoarium zobo zobtenite zocco zoccolo zodiac zodiacal zodiophilous zoea zoeaform zoeal zoeform zoehemera zoehemerae zoetic zoetrope zoetropic zogan zogo Zohak Zoharist Zoharite zoiatria zoiatrics zoic zoid zoidiophilous zoidogamous Zoilean Zoilism Zoilist zoisite zoisitization zoism zoist zoistic zokor Zolaesque Zolaism Zolaist Zolaistic Zolaize zoll zolle Zollernia zollpfund zolotink zolotnik zombi zombie zombiism zomotherapeutic zomotherapy zonal zonality zonally zonar Zonaria zonary zonate zonated zonation zone zoned zoneless zonelet zonelike zonesthesia Zongora zonic zoniferous zoning zonite Zonites zonitid Zonitidae Zonitoides zonochlorite zonociliate zonoid zonolimnetic zonoplacental Zonoplacentalia zonoskeleton Zonotrichia Zonta Zontian zonular zonule zonulet zonure zonurid Zonuridae zonuroid Zonurus zoo zoobenthos zooblast zoocarp zoocecidium zoochemical zoochemistry zoochemy Zoochlorella zoochore zoocoenocyte zoocultural zooculture zoocurrent zoocyst zoocystic zoocytial zoocytium zoodendria zoodendrium zoodynamic zoodynamics zooecia zooecial zooecium zooerastia zooerythrin zoofulvin zoogamete zoogamous zoogamy zoogene zoogenesis zoogenic zoogenous zoogeny zoogeographer zoogeographic zoogeographical zoogeographically zoogeography zoogeological zoogeologist zoogeology zoogloea zoogloeal zoogloeic zoogonic zoogonidium zoogonous zoogony zoograft zoografting zoographer zoographic zoographical zoographically zoographist zoography zooid zooidal zooidiophilous zooks zoolater zoolatria zoolatrous zoolatry zoolite zoolith zoolithic zoolitic zoologer zoologic zoological zoologically zoologicoarchaeologist zoologicobotanical zoologist zoologize zoology zoom zoomagnetic zoomagnetism zoomancy zoomania zoomantic zoomantist Zoomastigina Zoomastigoda zoomechanical zoomechanics zoomelanin zoometric zoometry zoomimetic zoomimic zoomorph zoomorphic zoomorphism zoomorphize zoomorphy zoon zoonal zoonerythrin zoonic zoonist zoonite zoonitic zoonomia zoonomic zoonomical zoonomist zoonomy zoonosis zoonosologist zoonosology zoonotic zoons zoonule zoopaleontology zoopantheon zooparasite zooparasitic zoopathological zoopathologist zoopathology zoopathy zooperal zooperist zoopery Zoophaga zoophagan Zoophagineae zoophagous zoopharmacological zoopharmacy zoophile zoophilia zoophilic zoophilism zoophilist zoophilite zoophilitic zoophilous zoophily zoophobia zoophobous zoophoric zoophorus zoophysical zoophysics zoophysiology Zoophyta zoophytal zoophyte zoophytic zoophytical zoophytish zoophytography zoophytoid zoophytological zoophytologist zoophytology zooplankton zooplanktonic zooplastic zooplasty zoopraxiscope zoopsia zoopsychological zoopsychologist zoopsychology zooscopic zooscopy zoosis zoosmosis zoosperm zoospermatic zoospermia zoospermium zoosphere zoosporange zoosporangia zoosporangial zoosporangiophore zoosporangium zoospore zoosporic zoosporiferous zoosporocyst zoosporous zootaxy zootechnic zootechnics zootechny zooter zoothecia zoothecial zoothecium zootheism zootheist zootheistic zootherapy zoothome zootic Zootoca zootomic zootomical zootomically zootomist zootomy zoototemism zootoxin zootrophic zootrophy zootype zootypic zooxanthella zooxanthellae zooxanthin zoozoo zopilote Zoque Zoquean Zoraptera zorgite zoril zorilla Zorillinae zorillo Zoroastrian Zoroastrianism Zoroastrism Zorotypus zorrillo zorro Zosma zoster Zostera Zosteraceae zosteriform Zosteropinae Zosterops Zouave zounds zowie Zoysia Zubeneschamali zuccarino zucchetto zucchini zudda zugtierlast zugtierlaster zuisin Zuleika Zulhijjah Zulinde Zulkadah Zulu Zuludom Zuluize zumatic zumbooruk Zuni Zunian zunyite zupanate Zutugil zuurveldt zuza zwanziger Zwieback zwieback Zwinglian Zwinglianism Zwinglianist zwitter zwitterion zwitterionic zyga zygadenine Zygadenus Zygaena zygaenid Zygaenidae zygal zygantra zygantrum zygapophyseal zygapophysis zygion zygite Zygnema Zygnemaceae Zygnemales Zygnemataceae zygnemataceous Zygnematales zygobranch Zygobranchia Zygobranchiata zygobranchiate Zygocactus zygodactyl Zygodactylae Zygodactyli zygodactylic zygodactylism zygodactylous zygodont zygolabialis zygoma zygomata zygomatic zygomaticoauricular zygomaticoauricularis zygomaticofacial zygomaticofrontal zygomaticomaxillary zygomaticoorbital zygomaticosphenoid zygomaticotemporal zygomaticum zygomaticus zygomaxillare zygomaxillary zygomorphic zygomorphism zygomorphous zygomycete Zygomycetes zygomycetous zygon zygoneure zygophore zygophoric Zygophyceae zygophyceous Zygophyllaceae zygophyllaceous Zygophyllum zygophyte zygopleural Zygoptera Zygopteraceae zygopteran zygopterid Zygopterides Zygopteris zygopteron zygopterous Zygosaccharomyces zygose zygosis zygosperm zygosphenal zygosphene zygosphere zygosporange zygosporangium zygospore zygosporic zygosporophore zygostyle zygotactic zygotaxis zygote zygotene zygotic zygotoblast zygotoid zygotomere zygous zygozoospore zymase zyme zymic zymin zymite zymogen zymogene zymogenesis zymogenic zymogenous zymoid zymologic zymological zymologist zymology zymolyis zymolysis zymolytic zymome zymometer zymomin zymophore zymophoric zymophosphate zymophyte zymoplastic zymoscope zymosimeter zymosis zymosterol zymosthenic zymotechnic zymotechnical zymotechnics zymotechny zymotic zymotically zymotize zymotoxic zymurgy Zyrenian Zyrian Zyryan zythem Zythia zythum Zyzomys Zyzzogeton n yot yotacism yotacize yote you youd youden youdendrift youdith youff youl young youngberry younger younghearted youngish younglet youngling youngly youngness youngster youngun younker youp your yourn yours yoursel yourself yourselves youse youth youthen youthful youthfullity youthfully youthfulness youthhead youthheid youthhood youthily youthless youthlessness youthlike youthlikeness youthsome youthtide youthwort youthy youve youward youwards youze yoven yow yowie yowl yowler dict/web2a 644 0 12 3671772 3526563432 6015 A acid abacus major abacus pythagoricus A battery abbey counter abbey laird abbey lands abbey lubber abbot cloth Abbott papyrus abb wool A-b-c book A-b-c method abdomino-uterotomy Abdul-baha a-be aberrant duct aberration constant abiding place able-bodied able-bodiedness able-minded able-mindedness able seaman aboli fruit A bond Abor-miri a-borning about-face about ship about-sledge above-cited above-found above-given above-mentioned above-named above-quoted above-reported above-said above-water above-written Abraham-man abraum salts abraxas stone Abri audit culture abruptly acuminate abruptly pinnate absciss layer absence state absentee voting absent-minded absent-mindedly absent-mindedness absent treatment absent voter Absent voting absinthe green absinthe oil absorption bands absorption circuit absorption coefficient absorption current absorption dynamometer absorption factor absorption lines absorption pipette absorption screen absorption spectrum absorption system A b station abstinence theory abstract group Abt system abundance declaree aburachan seed abutment arch abutment pier abutting joint acacia veld academy blue academy board academy figure acajou balsam acanthosis nigricans acanthus family acanthus leaf acaroid resin Acca larentia acceleration note accelerator nerve accent mark acceptance bill acceptance house acceptance supra protest acceptor supra protest accession book accession number accession service access road accident insurance acclamation medal acclimation fever accommodate distribution accommodation acceptance accommodation bill accommodation draft accommodation group accommodation ladder accommodation train accommodation works accompaniment figure accompanying fire accountant general account book account current account days account duty account render account rendered account sales accounts payable accounts payable ledger accounts receivable account stated accretion borer accretion cutting accrual basis accrued interest accrued liability accumulation factor accusative-dative ace-high ace point acetate green acetone alcohol acetone body acetone chloroform acetone oil acetous fermentation acetyl benzoyl peroxide acetyl bromide acetyl carbinol acetyl chloride acetylene acid acetylene alcohol acetylene black acetylene burner acetylene dichloride acetylene dinitrile acetylene gas acetylene generator acetylene linkage acetylene series acetylene tetrabromide acetylene tetrachloride acetylene torch acetylene urea acetylene welder acetylene welding acetyl index acetyl number acetyl oxide acetyl value acey-deucy Achaean league achemon sphinx achievement age achievement quotient achievement test achylia gastrica acid albumin acid albuminate acid alizarin black acid alizarin red acid amide acid anhydride acid anthracene brown acid azide acid bath acid bessemer process acid-binding acid black acid blast acid blower acid boiler acid bronze acid brown acid burner acid casein acid cell acid color acid concentrator acid dipper acid dye acid dyspepsia acid egg acid ester acid-fast acid-fastness acid-forming acid fuchsine acid gloss acid green acid halide acid honey acid hydrolysis acidity coefficient acid kiln acid metaprotein acid-mordant dye acid nitrile acid number acid oil acidophilus milk acid phosphate acid ponceau acid process acid purifier acid radical acid reaction acid reserve acid resist acid salt acid sludge acid sodium carbonate acid steel acid test acid tide acid-treat acid value acid violet acid wood acid worker acid works acid yellow ack-ack ack emma ack-pirate aclinic line acme harrow acme screw thread acme thread aconite violet acorn barnacle acorn chair acorn cup acorn duck acorn moth acorn shell acorn squash acorn tube acorn weevil acorn worm acouchi resin acquittance roll acre-dale acre-foot acre-inch acridine dyes acridine yellow across-the-board acrylic acid series act drop actinium emanation action busher action consciousness action current action extension action filer action finisher action forger action freer action jointer action machiner action noun action rail action regulator action sermon action-taking action theory action time action viewer activated sludge activated-sludge process active-bodied active-limbed active list active-minded activity coefficient activity stream activity theory actor-manager actor-proof act psychology Act term actuality theory acute angle acute-angled acuyari palm acuyari wood acyclic co-ordinates Adam-and-eve Adamkiewicz reaction Adamson act Adamson flue Adamson ring Adam tiler add-add addendum circle adder bead adder fly adder gem adder pike adder stone adding machine addition algebra addition axiom addition compound addition logarithm addition product addition table addition theorem addle egg addressing machine adductor canal adductor impressions Adelie penguin adenosine triphosphate A derrick ader wax Adi-buddha ad infinitum ad interim adjective equivalent adjective pronoun adjoint curve adjustment bond adjustment mortgage adjutant bird adjutant crane adjutant general ad lib ad libitum ad limina administrative engineer administrator ad litem admiral shell Admiral togo admiralty alloy admiralty bond admiralty brass Admiralty constants Admiralty flag admiralty law admiralty mile admiration mark Admission day adobe bug adobe lily adobe tick adolescent stream Adrianople red adsorption compound adsorption isotherm adult education ad valorem advance note advance party advance sheets advance signal advance tracks advancing color advantage ground Advent sunday adverb equivalent advertisement canvasser advertisement contractor advice boat advocatus ecclesiae adz block adz eye adzuki bean Aeginetan marbles aerating root aero arrow aero-otitis aero-otitis media aerosol bomb Aesop prawn affine connection affine geometry affine transformation affinity constant aff loof afghani rupee afghan stitch A-flat A-flat major afore-acted afore-cited afore-coming afore-decried afore-given afore-going afore-granted afore-heard afore-known afore-mentioned afore-planned afore-quoted afore-running afore-seeing afore-seen afore-spoken afore-stated afore-told Afrikander bond Afro-american Afro-asiatic Afro-european Afro-semitic after-acquired afterbirth weed after-born after bridge after-described after-designed after-dinner after-mentioned after-named afternoon lady after-specified after-stampable after-theater after-theatre after-written Agadir incident agal-agal agar-agar agate glass agate gray agate jasper agate opal agate shell agate snail agave cactus age-adorning age-bent age class age coating age-coeval age-cracked age-despoiled age-dispelling age distribution age-enfeebled age grade age-harden age-honored age-lasting age limit age norm agent-general agent intellect agent noun age-old age-peeled ageratum blue age score age society age-struck age-weary age-weathered age-worn agger nasi aggregate fruit aggregate polarization aggressor nation Agin court agitator feed agnus castus Agnus scythicus agony column agreed case agrimony bark agrimony water hemp Agudath yisrael ague bark ague cake ague drop ague-faced ague grass ague-plagued ague-rid ague-sore ague-struck ague tree aguja volador Ahura-mazda Aich metal Aida canvas aide-de-camp aide-de-campship aid grant aid prayer aid station ailanthus family ailanthus moth ailanthus silkworm aiming point air age air arm air base air bath air bed air bell air belt air bends air billow air-bind air bladder air blast air-blasted air blow air-blown air blue air-born air-borne air box air brake air-braked air-braving air-break switch air-breathing air-bred air brick air bridge air bubble air-built air bump air casing air castle air cataract air cell air chamber air-chambered air-cheeked air chest air chuck air circuit breaker air cleaner air-clear air-clutch reverse air cock air compressor air condenser air-condition air-conditioned air conditioner air conditioning air control air-conveying air-cool air-cooled air cooling Air corps air corridor Air council aircraft carrier aircraft division aircraft section aircraft station air crossing air-cure air cushion air cylinder air-defiling air drain air drainage air-drawn air drill air-driven air-dry air duct Airedale terrier air ejector air embolism air-embraced air engine air express air-faring air-filled air filter air fleet air float air-floated air force air-formed air furnace air gap air gas air gauge air gun air hammer air harbor air-hardening air-hardening steel air-heating air hoist air hole air horn air hunger air injection air injector air-insulated air jack air jacket air lance air lane air law air layering air leak airle-penny air letter air level air lift air line air lock air log air machine air map air mass air mattress Air medal air meter air-minded air-mindedness Air minister Air ministry air motor air oven air passage air-pervious air philately air photography air pillow airplane carrier airplane cloth airplane flare air plant air plug air pocket air pore air post air potato air propeller air pump air raid air raider air remover air rifle air sac air scoop air scout air scuttle air-season air-seasoned air separation air service air shaft air shovel air-shy air-slake air sleeve air sock air space air spade air speed air-speed indicator air-spray air sprayer air spring air-spun air station air-stirring air stone air stove air strainer air stream air strike air survey air-swallowing air system air thermometer air thread air-threatening air train air-trampling air trap air trumpet air trunk air twist air-twisted air valve air vent air vesicle air volcano air washer air well air-wise air-wiseness air wood airy sign air zone aisle seat Aix-la-chapelle Ajanen fir ajowan oil akamushi mite Akas-mukhi Akeley camera a la a la king A la marengo A la maryland a la mire alamo vine alang-alang alang grass alant camphor Al araf alar cartilages alar ligaments alarm bell alarm bird alarm clock alarm gauge alarm post alarm valve alar septum alar thoracic artery Al bali Alban saint albatross cloth albedo unguis Albee operation Alberti bass Albion ware albite law Alb sunday album board Album elegans Album graecum Album grandiflorum albuminoid ammonia albumin tannate album paper Al chiba alcohol acid alcohol engine alco-ometer alco-ometric alco-ometrical alco-ometry Alcora porcelain alcresta ipecac aldehyde ammonia aldehyde collidine aldehyde group aldehyde resin alder blight alder buckthorn alder dogwood alder fly alder flycatcher alder-leaved alderman lizard aldol condensation ale-blown ale-born ale brewer ale brewing ale drinker ale drinking ale feast ale-fed ale gallon ale garland ale glass alekey trout Alencon diamond Alencon lace ale pitcher ale seller ale selling ale stain ale-swilling ale tun aleurone grains aleurone layer A level ale vinegar ale-washed Alexandrine liturgies Alexandrine rat alfalfa butterfly alfalfa caterpillar alfalfa hopper alfalfa looper alfalfa meal alfalfa weevil algae layer algae zone algal-algal algal disease algal fungus algarroba bean algid cholera algid fever Algol variable alias dictus alias writ Alice blue alienable right alienation office alien corporation alien enemy alien priory alien property custodian alien water alignment chart aliquot tone alizarin black s alizarin blue black s alizarin blue s alizarin brown alizarin cyanine alizarin cyanine green alizarin dye alizarin red alizarin saphirol alizarin yellow alkali albumin alkali blue alkali cellulose alkali chlorosis alkali disease alkali grass alkali heath alkali metal alkali mustard alkaline cell alkaline-earth metals alkaline earths alkaline metal alkaline reaction alkaline tide alkaline water alkali reserve alkali waste alkali weed alkali yellow r alk gum alk gum tree alkyl cyanide alkyl halide alkyl hydrosulphide all-abhorred all-able all abroad all-absorbing all-accomplished all-acting all-admired all-admiring all-advised all-affecting all-afflicting all-aged all-air all along all-amazed All-american all-a-mort allan hawk all-appaled all-appointing all-approved all-approving all-armed all-around all-arraigning all-arranging all-assistless all-atoning all-attempting all-availing all-bearing all-beauteous all-beautiful all-beholding all-bestowing all-binding all-bitter all-black all-blasting all-blessing all-bounteous all-bountiful all-bright all-brilliant All-british all but All-caucasian all-changing all-cheering all clear all-collected all-colored all comers all-comfortless all-commander all-commanding all-compelling all-complying all-composing all-comprehending all-comprehensive all-concealing all-conceiving all-concerning all-confounding all-conquering all-conscious all-considering all-constant all-constraining all-consuming all-content all-controlling all-convincing all-convincingly all-covering all-creating all-creator all-curing all-daring all-day all-dazzling all-deciding all-defiance all-defying all-depending all-designing all-desired all-despising all-destroyer all-destroying all-devastating all-devouring all-dimming all-directing all-discerning all-discovering all-disgraced all-dispensing all-disposer all-disposing all-divine all-divining all-dreaded all-dreadful all-drowsy all-earnest all-eating allee couverte all-efficacious all-efficient Allegro l all-eloquent allemande sauce all-embracing all-embracingness all-encompasser all-ending all-enduring all-engrossing all-enlightened all-enlightening all-enraged all-envied all-essential all-evil all-excellent all-eyed all-fair All-father All-fatherhood All-fatherly all-filling all-fired all-firedly all fives all-flaming all-flotation all-foreseeing all-forgetful all-forgetting all-forgiving all-forgotten all fours all-fullness all-gas all-giver all-glorious all-golden all-governing all-gracious all-grasping all-great all-guiding all-hallowed all hands all-happy all-healing all-hearing all-heeding all-helping all-hiding all-holy all-honored all-hoping all-hurting allice shad all-idolizing alligation alternate alligation medial alligator apple alligator bonnets alligator buttons alligator cacao alligator fish alligator forceps alligator gar alligator head alligator jaw alligator juniper alligator lizard alligator pear alligator shears alligator snapper alligator tree alligator wampee alligator weed alligator wrench all-illuminating all-imitating all-important all-impressive all-in all-including all-inclusive all-inclusiveness All-india all-infolding all-informing all-in-one all-interesting all-interpreting all-invading all-involving all-jarred all-judging all-just all-justifying all-kind all-knavish all-knowing all-knowingness all-land all-lavish all-licensed all-lovely all-loving all-maintaining all-maker all-making all-maturing all-meaningness all-merciful all-metal all-might all-miscreative all-murdering all-noble all-nourishing all-obedient all-obeying all-oblivious all-obscuring all-oil all one allo-octaploid all-ordering all-out all-overish all-overishness all-overpowering all-overs all-overtopping allowance account alloy balance alloy charge alloy steel all-panting all-parent all-patient all-peaceful all-penetrating all-peopled all-perceptive all-perfect all-perfection all-perfectness all-perficient all-persuasive all-pervading all-pervadingness all-pervasive all-pervasiveness all-piercing all-pitiless all-pitying all-pondering all-possessed all-potency all-potent all-potential all-power all-powerful all-powerfully all-powerfulness all-praised all-praiseworthy all-present all-prevailing all-prevailingness all-prevalency all-prevalent all-preventing all-prolific all-protecting all-provident all-providing all-puissant all-pure all-quickening all-rail all-rapacious all-reaching All red all-redeeming all-relieving all-rending all right all-righteous all round all-roundedness all-rounder all-round price all-rubber all-ruling All-russia All-russian all-sacred all-sanctifying all-satiating all-satisfying all-saving all-sayer all-sea all-searching all-seeing all-seeingly all-seeingness all-seer all set all-shaking all-shamed all-shaped all-shrouding all-shunned all-sided all-silent all-sized all-sliming all-soothing all-soul All-southern allspice oil allspice tree all-spreading all square all squares all standing all-star all-stars all-steel all-strangling all-subduing all-submissive all-substantial all-sufficiency all-sufficient all-sufficiently all-sufficing all-surpassing all-surrounding all-surveying all-sustainer all-sustaining all-swallowing all-swaying all-telling all-terrible all that all the all there all-thorny all threes all-time all to all told all-tolerating all-transcending all-triumphing all-truth all-turned all-turning all two all-understanding all-unwilling all up all-upholder all-upholding alluring gland all-various all-vast all-watched all-water all-weak all-weather all-weight all-wisdom all-wise all-wisely all-wiseness all-wondrous all-wood all-wool all-working all-worshiped all-worthy all-wrongness allyl alcohol allyl aldehyde allyl isothiocyanate allyl mustard oil allyl thiocarbamide Alma mater alma-materism almenn turma almond black almond brown almond cake almond extract almond-eyed almond family almond green almond kernel almond-leaved almond-leaved willow almond meal almond milk almond oil almond paste almond peach almond-shaped almond tumbler almond willow alms bag alms basin alms basket alms box alms bread alms chest alms-dealing alms dish alms-fed alms fee alms gate alms land alms penny alms priest alms purse almucantar staff Al nasi Al niyat aloe creole aloe-emodin aloe hemp aloe lace aloe malgache aloes green Alost lace alouchi resin alphabet book alphabet method alphabet plant alphabet soup alpha brass alpha-cellulose alpha-eucaine alpha iron alpha-naphthol alpha-naphthylamine alpha particle alpha privative alpha radiator alpha ray alpha score alpha test alpha-truxilline alpine anemone alpine aster alpine azalea alpine bartsia alpine beardtongue alpine bent grass alpine birch alpine bistort alpine brook saxifrage alpine campion alpine catchfly alpine chough alpine clover alpine cress Alpine dock alpine eyebright alpine fir alpine fireweed alpine forget-me-not alpine garden alpine geranium alpine glacier alpine goldenrod alpine hemlock alpine holy grass alpine lady fern alpine larch alpine lousewort alpine molewort alpine oat grass Alpine parnassia alpine poppy Alpine race alpine rice grass alpine rock cress alpine rose alpine sedge alpine spring beauty alpine spruce alpine strawberry alpine umbrella plant alpine whitebark pine alpine whorl grass alpine woodsia Al rischa Alsace gum Alsace-lorrainer alsike clover also-ran Al tais altar boy altar bread altar carpet altar chime altar desk altar dues Al tarf altar facing altar hearse altar mound altar plate altar rail altar side altar slab altar stair altar stead altar stole altar stone altar tomb altar wine alta vox alter ego alternate-leaved alti-rilievi alto clarinet alto clef alto-cumulus alto-cumulus-castellatus alto flute alto horn alto-relievo alto saxhorn alto-stratus aluchi resin aludel furnace Alula australis Alula borealis alum cake alum carmine alum cochineal alum flower alum glass alum haematoxylin alum-hypo toning process alumina cement alumina cream aluminous cake aluminum bronze aluminum chloride aluminum family aluminum gold aluminum hydroxide aluminum oxide aluminum sulphate alum meal alum rock alum schist alum shale alum stone alun-alun alva marina alveololabial sulci alveololingual sulci A major amalgam arc amalgamation process Amana society amanita hemolysin amanita toxin Amara-kosha amarant family amaranth family amaranth pink amaranth-purple Amarna letters amaryllis family amateur band Amazon ant Amazon lily Amazon water lily ambary hemp amber brown amber-clear amber-colored amber-dropping amber forest amber-headed amber-hued amber jack amber-locked amber malt amber mica amber miner amber oil amber opal amber pear amber seed amber snail amber-tinted amber-tipped amber tree amber-weeping amber-white amber yellow amber-yielding ambient temperature ambil-anak ambretta seed ambrosia beetle ambulance chaser ambuling communion ambush bug amen corner amende honorable amende profitable Amen-ra Americano-european Americas cup amethyst cutter amethyst violet Amherst papyrus Amici prism amide powder amidonaphthol red amido-urea amino acid amino nitrogen amino-oxypurin A minor ammonia alum ammonia condenser ammoniac plant ammonia gelatin ammonia liquor ammonia meter ammonia nitrogen ammonia process ammonia soda ammonia soda ash ammonia soda process ammonia turpeth ammonia valve ammonia water ammonium alum ammonium amalgam ammonium base ammonium bromide ammonium carbonate ammonium chloride ammonium cyanate ammonium hydrosulphide ammonium hydroxide ammonium molybdate ammonium nitrate ammonium oxalate ammonium persulphate ammonium phosphate ammonium sulphate ammonium sulphide ammono base ammono salt ammunition bread ammunition chest ammunition hoist ammunition legs ammunition scuttle ammunition shoes amoeba disease amorphous ergotinine amorphous phosphorus amount limit amparo blue amparo purple ampere arc ampere balance ampere-foot ampere-hour ampere-minute ampere-second ampere turn amphibole group amplification factor amplitude compass amplitude factor ampullar sense amrad gum Amsha-spand Amsha-spend Amur cork Amur maple amygdaloid nucleus amygdalo-uvular amygdonitrile glucoside amyl acetate amyl-acetate lamp amyl alcohol amylene hydrate amyl ether amyl isovalerate amyl nitrite amyloid degeneration amyl oxide amyl salicylate amylum body amylum center amylum grain amylum star amyris oil anacardium nut anaconda gourd Anaheim disease analcite basalt analogy test analysis situs analytico-architectural anamite yeast ananas oil Anastasi papyri anathema maranatha A natural ance errand ancestor worship anchieta bark anchor ball anchor bar anchor bed anchor bolt anchor box anchor buoy anchor chock anchor dart anchor drag anchor escapement anchor hold anchor hoy anchor ice anchor knot anchor lift anchor light anchor lining anchor link anchor log anchor money anchor nurse anchor plant anchor plate anchor ring anchor rocket anchor rod anchor shackle anchor-shaped anchor shot anchor space anchor tee anchor watch anchor watchman anchor well anchovy pear Ancon sheep anda-assu anda-assu oil anda oil Andes berry Andover green Andra kammaren Andy-over anemone camphor anemone-flowered dahlia anesthetic ether Angami-naga angel bed angel-borne angel-bright angel-builded angel cake angel-eyed angel-faced angel food angel gold angel-guarded angel-heralded angelica-root angelin seeds angel light angel red angel-seeming angel shark angel shot angel sleeve angel tree Angelus bell angel-warned angel water angico gum angina pectoris angioneurotic edema ang-khak angle bar angle bead angle beam angle brace angle bracket angle brick angle bulb angle capital angle chair angle clip angled draft angled-toothed angle gear angle iron angle meter angle plate angle-rack tool angle rafter angle reflector angle rib angle set angle shaft angle shear angle staff angle steel Angleterre edge Angleterre lace angle tie Anglo-abyssinian Anglo-afghan Anglo-african Anglo-america Anglo-american Anglo-americanism Anglo-asian Anglo-asiatic Anglo-australian Anglo-austrian Anglo-belgian Anglo-boer Anglo-brazilian Anglo-canadian Anglo-catholic Anglo-catholicism Anglo-chinese Anglo-danish Anglo-dutch Anglo-dutchman Anglo-ecclesiastical Anglo-ecuadorian Anglo-egyptian Anglo-french Anglo-gallic Anglo-german Anglo-greek Anglo-hibernian Anglo-indian Anglo-irish Anglo-irishism Anglo-israel Anglo-israelism Anglo-israelite Anglo-italian Anglo-japanese Anglo-jewish Anglo-judaic Anglo-latin Anglo-maltese Anglo-manx Anglo-mexican Anglo-mohammedan Anglo-norman Anglo-norwegian Anglo-nubian Anglo-persian Anglo-portuguese Anglo-russian Anglo-saxon Anglo-saxondom Anglo-saxonic Anglo-saxonism Anglo-scottish Anglo-serbian Anglo-soviet Anglo-spanish Anglo-swedish Anglo-swiss Anglo-teutonic Anglo-turkish Anglo-venetian angostura bark Angoumois grain moth Angoumois moth angry-eyed angry-looking angstrom unit angular-toothed angular-winged katydid anhalonium alkaloid anhydro base anidian monster aniline black aniline blue aniline dye aniline hydrochloride aniline purple aniline salt aniline yellow anima aloes anima bruta anima humana animal black animal carver animal cellulose animal charcoal animal color animal cracker animal dyestuff animal electricity animal faith animal flower animal force animal heat animal husbandman animal husbandry animal hypnosis animal kingdom animal magnetism animal mechanics animal mound animal oat animal oil animal pole animal psychology animal rouge animal size animal-sized animal soul animal spirit animal starch animal unit animal worship anima mundi animated oat animation photography animus cancellandi animus capiendi animus derelinquendi animus furandi animus injuriandi animus lucrandi animus manendi animus possidendi animus recipiendi animus remanendi animus revertendi animus revocandi animus testandi anise camphor aniseed fox aniseed oil aniseed star aniseed tree anise hyssop anise oil anise plant anise-scented goldenrod ankle boot ankle clonus ankle cutter ankle-deep ankle-jacked ankle jerk ankle ring ankle strap ankle tie Annabel lee Annam-muong annatto tree Anno domini annual bluegrass annuity gift Annunciation lily Annunciation style anode rays anodyne necklace anorthite-basalt another-gates another-guess another-guise ansa hypoglossi ansa subclavia ansate cross anserine skin answer-back answer book answering pennant ant acacia Antarctic barrier antarctic beech ant bear ant bird ant catcher ant cattle ant cow Ante-babylonish ante bellum antecedent right Ante-christian Ante-cuvierian ante-ecclesiastical ante-eternity ant egg Ante-gothic Ante-hieronymian Ante-justinian antelope brush antelope chipmunk Antelope state ante meridiem ante mortem ante-mortem clot Ante-mosaic Ante-mosaical Ante-nicene antenna array antenna circuit antennae sword antenna grounding switch antenna inductance antennal lobe antenna resistance antenna switch Ante-norman antenuptial contract antenuptial settlement anterograde amnesia Ante-victorian ant fly ant heap anther cell anther lobe anther sac anther smut ant hillock anthracene brown anthracene oil anthracene yellow anthracite black anthrax vaccine antiaircraft barrage Anti-allied Anti-ally Anti-american Anti-americanism Anti-anglican Anti-arab Anti-arian Anti-aristotelian Anti-armenian Anti-arminian Anti-arminianism Anti-athanasian Anti-athenian Anti-austrian Anti-babylonianism Anti-bartholomew Anti-biblic Anti-biblical Anti-birmingham Anti-bohemian Anti-bolshevik Anti-bolshevist Anti-bonapartist Anti-british Anti-britishism Antiburgher kirk Anti-caesar Anti-calvinism Anti-calvinist Anti-calvinistic Anti-calvinistically Anti-cathedralist Anti-catholic anti-christian Anti-christian Anti-christianism Anti-christianity Anti-christianize Anti-christianly Anti-corn-law league Anticosti group Anti-darwinian Anti-darwinism Anti-docetae antidote cacoon antidote lily Anti-dreyfusard Anti-english Anti-entente Anti-european Anti-fascism Anti-fascist Anti-fascisti Anti-fourierist Anti-french Anti-freudian antifriction curve antifriction metal antifriction wheels anti-gallic anti-gallican Anti-gallican anti-gallican hitch anti-gallicanism Anti-german Anti-germanism Anti-gnostic Anti-gothicist Anti-hanoverian anti-hog-cholera Anti-ibsenite anti-icer anti-icteric anti-idealist anti-idolatrous anti-immigrationist anti-immune anti-imperialism anti-imperialist anti-imperialistic anti-incrustator anti-indemnity anti-induction anti-inductive anti-infallibilist anti-infantal anti-innovationist anti-intellectual anti-intellectualism anti-intellectualist anti-intermediary Anti-irishism anti-isolysin Anti-italian anti-jacobin anti-jacobinism Anti-jansenist Anti-japanese Anti-japanism Anti-jesuit Anti-jewish Anti-judaic Anti-judaism Anti-klan Anti-klanism anti-laissez-faire Anti-lamarckian Anti-latin Anti-laudism anti-leaguer anti-lecomption anti-lecomptom Anti-liberal Anti-macedonian Anti-macedonianism Anti-malthusian anti-maniacal Anti-messiah Anti-mexican Anti-mohammedan Anti-mongolian antimony blende antimony bloom antimony chloride antimony cinnabar antimony crocus antimony crude antimony glance antimony glass antimony hydride antimony ocher antimony orange antimony oxide antimony pentachloride antimony pentasulphide antimony pentoxide antimony red antimony regulus antimony rubber antimony saffron antimony salt antimony sulphide antimony tetroxide antimony trichloride antimony trioxide antimony trisulphide antimony vermilion antimony white antimony yellow Anti-mosaical Anti-nationalist anti-nebraska anti-nicaean Anti-nihilist Anti-noahite Anti-nordic Antiopa butterfly anti-open-shop antiophthalmic vitamin Anti-oriental anti-over Anti-paul Anti-pauline Anti-pelagian Anti-philippizing Anti-platonic Anti-polish anti-pre-existentiary Anti-protestant antique brass antique bronze antique brown antique cloth antique crown antique dealer antique drab antique green antique red Anti-republican Anti-roman Anti-romanist Anti-ruskinian Anti-russian Anti-sabbatarian Anti-sabian Anti-saxonism Anti-scriptural Anti-scripturism Anti-scripturist Anti-semite Anti-semitic Anti-semitically Anti-semitism Anti-serb Anti-shelleyan Anti-shemite Anti-shemitic Anti-shemitism Anti-slav Anti-slovene Anti-socinian Anti-soviet Anti-spanish antisterility factor antisymmetrical tensor Anti-teuton Anti-teutonic Anti-tribonian Anti-trinitarian Anti-trinitarianism Antitrust act Anti-turkish Anti-unitarian Anti-venizelist Anti-volstead Anti-volsteadian Anti-whig Anti-wycliffist Anti-wycliffite Anti-zionism Anti-zionist Anti-zwinglian ant king antler moth ant lion Antony-over ant pipit ant plant ant rice ant shrike ant thrush ant tree ant worm ant wren anvil block anvil chisel anvil cloud anvil cupper anvil cutter anvil-drilling anvil dross anvil-faced anvil-facing anvil forger anvil-headed anvil maker anvil vise anxiety equivalent anxiety hysteria anxiety neurosis any he any more anything but anything like anywhere near A one apache dance Apache pine Apache plume Apache state Apache yuma apartment building apartment hotel apartment house ape fissure ape hand ape-headed ape man aperture ratio aperture vignette apex beat apex rule aphid rosette aphis fly aphis foot aphis lion aphis wolf aphthous fever aphthous stomatitis apocha trium annorum Apogon iris A pole Apollinaris water apostle bird apostle jug apostle spoon A powder Apparatus sculptoris appearance money appendico-enterostomy appendix vermiformis apperception mass Appian way Appii forum apple anthracnose apple aphid apple banana apple bee apple blight apple blotch apple box apple brandy apple bucculatrix apple butter apple canker apple-cheeked apple cheese apple curculio apple dumpling apple-eating apple essence apple-faced apple-fallow apple family apple fly apple fritter apple geranium apple grain aphid apple green apple grunt apple gum apple haw apple juice apple leaf apple maggot apple mildew apple mint apple moss apple moth apple oil apple pie apple pox apple psylla apple rosette apple rust apple scab apple scald apple scale apple-scented apple-shaped apple shell apple slump apple snail apple-stealing apple sucker apple tart apple toddy apple tree apple turnover apple-twig apple-twig beetle apple-twig borer apple weevil apple wine apple worm applicate number application lace applique lace apportionment bill apposition beach appositive genitive appraisal clause apprentice seaman apprentice teacher approach trench appropriation bill approval book approval sheet a prendre apricot-kernal apricot palm apricot plum apricot scale apricot vine April fool April fools day April gentleman April-gowk apron conveyer apron lining apron man apron piece apron plate apron roll apron shield apron-squire apron stage apron string apron wall apse aisle aptitude test aqua ammoniae aqua aromatica aqua bromata aqua bulliens aqua caelestis aqua camphirae aqua chlorata aqua fortis aqua labyrinthi aqua marina aquamarine chrysolite aquamarine topaz aqua mirabilis aqua phagedaenica nigra aqua pura aqua regia aqua rosae aqua tofana aqua vitae aqueduct bridge aquiline-nosed aquo-ion Arabian millet Arabo-byzantine arachis oil arachnoid granulation Aragon spar Arapaho formation arbitrated par arbitration treaty Arbor day arborization block arbor press arbor shaft arbor vine arborvitae leaf miner Arc du carrousel arc flame arc generator Ar-chang arch bar arch barrel arch brace arch-brahman arch brick arch bridge arch buttress arch-christendom arch-christianity arch dam Arches court archetypal world archil extract archil liquor archippus butterfly arch order arch press arch-protestant arch ring arch solid arch spring arch stone arch support arch-whig arcing contact arcing jaws arc lamp arc light arc-over arc pitch arc process arc-shaped arc spectrum Arctic-alpine zone Arctic circle arctico-altaic arctic timothy arc transmitter arc weld arc welder arc welding Ardebil carpet Ardi-ea ardor urinae area gate area graph area-moment method area rule area sneak area vector area wall areca catechu areca nut areca palm areolate mildew argan oil argan tree argemone oil argentella lace argentine thistle arginine phosphagen argle-bargie Argo navis argue-bargue argus brown Argus-eyed argus pheasant argus shell argus tortoise beetle argy-bargy Argyle purple Argyll-robertson pupil Argyll-robertson sign arid region ariel petrel ariel toucan arithmetico-geometric arithmetico-geometrical Ariyalur group arjun wax ark shell arle penny arles penny armature assembler armature bander armature binder armature winder armature winding arm band arm board arm coil Armeno-turkish arm garter arm gear arm-great arm guard arm-headed Armistice day arm-linked armor-bearer armor belt armor-clad armor grating armor-piercing armor plate armor-plated arm-shaped arm stake arm viol army ant army area army brown army corps Army council army cutworm army engineer army engineering Army list army troops army worm arnica bud Arran chief arriere fee arriere tenant arriere vassal arris fillet arris gutter arris rail arrow arum arrow-back arrow-back chair arrow-bearing arrow cane arrow grass arrow-grass family arrow horn arrow-leaved arrow maker arrow making arrow mehl arrow release arrow rest arrowroot family arrow-shaped arrow shot arrow-slain arrow-smitten arrow snake arrow stave arrow straightener arrow-toothed arrow-wounded arroyo grape arroyo willow arsenic antidote arsenic bloom arsenic calciner arsenic eater arsenic eating arsenic glass arsenic mirror arsenic mold arsenic orange arsenic refiner arsenic smelter arsenic yellow arsha rite art brown art-colored art column art composition art-conscious art critic art criticism art dealer art department art design art editor artemisia green artery forceps artesian borer art exhibition art expression art gallery art gray art green art guild arthritis deformans artichoke bottom artichoke green Article x artificer branch artillery hub artillery park artillery plant artillery train artillery wagon artillery wheel art league art manual art museum art music art paper art period art school arts college art shade art song art square art student art supervisor art teacher art union arum family arum lily Aryo-dravidian Aryo-indian aryteno-epiglottic Asa bridge asa dulcis asafetida oil asarum camphor asarum oil asbestos blanket asbestos board asbestos braid asbestos carder asbestos cement asbestos cloth asbestos-coated asbestos-corrugated asbestos-covered asbestos covering asbestos crusher asbestos doubler asbestos felt asbestos fiber asbestos filter asbestos flooring asbestos lagging asbestos lining asbestos listing asbestos lumber asbestos-packed asbestos paper asbestos porcelain asbestos-protected asbestos rock asbestos toaster asbestos weaver asbestos-welded asbestos wood ascending aorta ascending colon Ascension day Ascension lily Ascidiae compositae Ascidiae simplices asclepias butterfly ascot tan ascus fruit a-sea Asellus australis Asellus borealis Ashanti pepper A-shaped A-sharp ash barrel ash-bellied ash bin ash-blue ash bread ash bud ash can ash canker ash cart ash chute ash collector ash-colored ash cone ash-free ash furnace ash gray ash-gray blister beetle ash heap ash hopper ash key ashlar brick ashlar line ash leaf ash-leaved ash-looking ash oven ash pile ash pole ash pumpkin ash rock ash spear ash staff ash-staved ash-throated ash tray ash tree Ash wednesday ash-white ash wood asparagus bean asparagus broccoli asparagus fern asparagus lettuce asparagus pea asparagus stone aspect ratio aspen poplar asphalt-base asphalt cement asphalt grout asphalt macadam asphalt mastic asphalt oil asphalt paint asphalt rock asphodel green asphyxia neonatorum asphyxiating gas aspirating stroke aspiration pneumonia assai palm Assam rubber Assam silk Assassination plot assassin bug assault line assay balance assay bar assay beam assay crucible assay flask assay foot assay furnace assay mill assay office assay-office bar assay oven assay pound assay ton ass-ear assembling mark assembly conveyer assembly line assembly room assessment company assessment insurance assessment work asset currency ass-headed assistant agent assistant auditor assistant barber assistant bookkeeper assistant buyer assistant cashier assistant chemist assistant chief assistant clerk assistant deputy assistant director assistant driver assistant druggist assistant editor assistant engineer assistant examiner assistant foreman assistant guard assistant housekeeper assistant inspector assistant janitor assistant janitress assistant librarian assistant manager association area association book association football association psychology association test association time ass parsley ass-ship Assyro-babylonian A star astasia-abasia aster family asterias swallowtail aster purple aster ray aster yellows asthma herb asthma paper asthmatic cigarette asthma weed A switchboard As-yakh atamasco lily atef crown atelets sauce at-home at-homeish at-homeishness at-homeness a thousandfold a-tiptoe Atlanto-mediterranean atlas folio atlee gall atloido-occipital atlo-odontoid atomic hydrogen torch atomic hydrogen welding atom model atom soul attache case attachment disk attachment plug attack plane attack squadron attention signal attenuation charge attic order attic story attorney general attorney-generalship attorneys general attracted-disk attraction cone attraction sphere auburn-haired auction bridge auction euchre auction hearts auction pinochle auction pitch auction pool aucuba green aucuba mosaic audibility meter audience court audio-frequency audio-visual audit ale audit book audit certificate audit date audit house audit office auditor-general auditors-general audit room augen-gabbro augen-gneiss auger bit auger box auger crank auger drill auger feed auger handle auger hole auger lathe auger machine auger-nose auger press auger shell auger stem auger tongue auger-type auger worm augite-porphyrite augite-porphyry au gratin August meteors auld-farran auld-farrand auld-farrant Auld kirker auld-warld Aunt jericho aureolin yellow auricula purple auriculo-infraorbital auriculo-occipital auri-iodide aurora australis aurora borealis aurora glory aurora orange aurora polaris aurora sauce aurora trout aurora yellow aussage test Austral-english Australian bent grass Australian-oak Australian-oak family Austro-columbia Austro-columbian Austro-hungarian Austro-malayan Austro-swiss author catalogue author-created author-entry author mark author number author-publisher author-ridden auto-audible auto carrier autoconvection gradient auto court auto-da-fe auto laundry auto lorry autolysate-precipitate auto mechanic auto mechanics automobile board automobile insurance automobile sled automorphic-granular automotive engineer automotive engineering auto-objective auto-observation auto-omnibus auto-ophthalmoscope auto-ophthalmoscopy auto-oxidation auto-oxidize autotransformer starter autotuberculin test autourine test autre vie autumn bellflower autumn blond autumn-brown autumn catchfly autumn crocus autumn green autumn leaf autumn mange autumn oak autumn snowflake autumn-spring autumn squill autumn violet autumn willow avalanche conduction avalanche lily avant-courier avant-garde avant-gardism avant-gardist average adjuster average book average clause average life average-life period average stater aviation beacon avocado fat avocado oil avocado weevil avoirdupois pound avoirdupois weight away-going awe-awakening awe-bound awe-commanding awe-compelling awe-filled awe-inspired awe-inspiring awe-stricken awe-strike awe-struck awful-eyed awful-gleaming awful-looking awful-voiced awl bird awl-fruited awl-leaved awl-shaped awned wheat grass awn grass awning cloth awning deck awnless brome grass ax-adz ax eye ax grinder ax handle ax helve axial-flow axial-flow turbine axis cylinder axis deer axle adjuster axle arm axle assembler axle bar axle bearing axle bender axle-bending axle bolt axle-boring axle box axle bush axle cap axle case axle centerer axle-centering axle cutter axle dresser axle ender axle filer axle finisher axle forger axle-forging axle grease axle grinder axle guard axle guide axle hammer axle hammerman axle hardener axle hook axle journal axle lagger axle lathe axle load axle oiler axle packer axle pin axle pinner axle press axle rougher axle saddle axle seat axle setter axle shaft axle sleeve axle slotter axle spindle axle stool axle straightener axle tooth axletree arm axle turner axle wad axle worker ax-shaped ax sheath ax wedge aye-aye aye-ceaseless aye-during aye-dwelling aye-lasting aye-living ayer-ayer aye-remaining aye-renewed aye-restless aye-rolling aye-running aye-sought aye-troubled aye-turning aye-varied aye-welcome Azilian-tardenoisian azimuth circle azimuth compass azimuth co-ordinate azimuth dial azimuth distance azimuth error azomethine group azonium base azonium salt azo-orange azo-orchil azo-orseilline azoxy group azure-blazoned azure-blue azure-canopied azure-circled azure-colored azure-domed azure-eyed azure-footed azure-inlaid azure-mantled azure-penciled azure-plumed azure-tinted azure-vaulted azure-veined Baal-berith baal marriage baba-koto babassu oil babbitting jig Babbitt metal babe-faced baby act baby beef baby blue baby blue-eyes baby bond baby-browed baby bunting baby eyes baby-faced baby farm baby farmer baby farming baby-featured baby fern baby grand baby heathberry baby-kissing baby lace baby orchid baby pin baby pink baby primrose baby rambler baby ribbon baby seal baby-sit baby sitter baby-sitting baby-snatching baby talk baby tears baby threader bacalao bird bachelor girl bachelor perch backache brake backache root back-acting back-acting steam engine back action back-action steam engine back airing back air pipe back-angle back answer back balance back bar Back bay back beam back bench back bender back block back-blocker back-blowing back bond back-breathing back-broken back center back check back choir back cloth back comb back-coming back-connected back-connected switch back country back dive back door back draft back-drawing back-drawn back eccentric backed-off back electromotive force back end back entry backer-up back-face back-facing back-fanged back fat back file back fillet back-filleted back-flung back focus back-focused back formation back gear back-geared back-glancing back-going back hair backhand rent back head backing jointer backing metal backing-off backing-off lathe backing out backing paper back-leaning back letter back-lighted back line back liner back lining back link back-list back-looking back-lying back maker back-making back number back order back overman back-paddle back page back-paint back-palm back paternoster backpedaling brake back pitch back-plaster back plastering back play back pressure back-pressure valve back-pulling back-putty back-racket back-raking back rest back road back rod back sail back scene back score back-scratcher back-scratching back seat back-set bed back-sey back shaft back shop back shutter back side back sinew back slang back-slanging back-spiker back stairs back-starting backstay stools back step back-stepping back-stope back-strapped back strapper back stream back street back-streeter back-surging back swath back swimmer back talk back-tan back tendon back-titrate back-titration back track back trail back-trailer back-trip back turn back vent back venting backward blessing back yard bacon beetle bacon hog bacterio-opsonic bacterio-opsonin bad blood bad cess bad debt badger baiting badger bird badger dog badger-legged badger skunk Badger state badging hook bad-headed bad-hearted bad-humored bad-looking badly off bad-minded bad-order freight bad-tempered baeberry bark baffle gate baffle painting baffle plate baffling wind bag bearer bag-bearing bag beater bag-bedded bag boom bag bundler bag-bundling bag cap bag-cheeked bag clasp bag cleaner bag-closing bag cutter bag-cutting Bagdad boil bag dryer bag feeder bag filler bag-filling bag filter bag fitter bag folder bag-folding bag fox bag frame bag framer baggage agent baggage car baggage cart baggage check baggage clerk baggage inspector baggage porter baggage rack baggage room baggage-smasher baggage train baggage van baggage wagon bag holder bag loader bag machinist bag marker bag mender bag net bag packer bag picker bag printer bag-printing bag rack bag repairer bag riveter bag sewer bag-sewing bag-shaped bag sleeve bag sorter bag stacker bag stitcher bag table bag twine bag work bag worker bagworm moths Bahama bay rush Bahama fiber Bahama grass Bahama hemp Bahama mahogany Bahama redwood Bahama tea Bahama whitewood Bahia grass Bahia piassava Bahia powder baib grass bail bond Bail court bail-dock bailer shell bait bug bait casting bait set bake cart baked-apple baked beans bake kettle baker bird baker-knee baker-kneed baker-leg baker-legged baker sheet bakery moth bakery proofer Bakewell pudding baking powder baking soda balance adjuster balance arm balance beam balance bob balance bridge balance clerk balance cock balance coil balance crane balance dock balance electrometer balance fish balance frame balance gate balance level balance link balance lug balance maker balance pin balance piston balance pit balance plane balance rail balance reef balance ring balance rope balancer set balance rudder balance rynd balance screw balance sheet balance spring balance staff balance step balance valve balance watch balance weight balance wheel balancing band balancing coil balancing condenser balancing flap balancing link balancing ring balancing set balancing ways balanophore wax balas ruby balata belt duck balata gum Balcones fault zone balder-brae balder-herb bald-faced bald-headed bald-pated bald-patedness Balearic crane bale band bale breaker bale buckle bale conveyor bale feeder bale goods bale hook bale jumper bale marker bale opener bale stick bale stitcher bale strap bale tie bale tier balk day balk line balk-line game ballad horn ballad maker ballad making ballad measure ballad meter ballad opera ballad poetry ballad reciter ballad rhyme ballad singer ballad singing ballad stanza ballad style ballad writer ball-and-claw foot ball-and-socket joint ballast brakesman ballast car ballast cleaner ballast-cleaning ballast crusher ballast-crushing ballast engine ballast fin ballast ganger ballast heaver ballast hole ballast inspector ballast line ballast loader ballast-loading ballast master ballast plant ballast port ballast pump ballast spreader ballast stone ballast tank ballast tipper ballast track ballast trimmer ballast unloader ball bearing ball boy ball breaker ball cactus ball cartridge ball caster ball clay ball cock ballet dancer ballet dancing ballet girl ballet master ballet mistress ballet music ballet slipper ball fern ball-flower ball foot ball gentle ball grinder ball gudgeon ball handle ball-hooter balli buntl ballibuntl hat balling furnace balling gun balling head balling iron ball ironstone ball joint ball lever ball lightning ball mill ball moss ball mustard balloon bed balloon cloth balloon fabric balloon feather balloon foresail balloon frame balloon framing ballooning spider balloon jib balloon sail balloon sickness balloon sleeve balloon tire balloon vine ballot box ball park ball peen ball-planting ball-point ball python ball reamer ball rest ball rose ball sage ball screw ball seater ball-shaped ball smut ball snake ball stitch ball tap ball thistle ball-thrombus ball top ball valve bally gum balm apple balm-breathing balm cottonwood balm cricket balm dew balm fir balm leaf balm-leaved balm mint balm oil balm pine balm-shed balm shrub balm tea balm wine balsam apple balsam bog balsam copaiba balsam cucumber balsam fig balsam fir balsam flowers balsam groundsel balsam herb balsam hickory balsam pear balsam poplar balsam shrub balsam spruce balsam spurge balsam tree balsam-tree family balsam vine Balsam wool Baltimore belle Baltimore bird Baltimore catechism Baltimore heater Baltimore oriole Baltimore shilling Baltimore truss Baltimore yellow Balto-slav Balto-slavic Balto-slavonic baluster column baluster shaft baluster stem bambara butter Bambara groundnut Bamberg bible Bamboo books bamboo brier bamboo fern bamboo fish bamboo grass bamboo money bamboo oyster bamboo palm bamboo partridge bamboo rat bamboo reed bamboo sugar bamboo vine bamboo ware bambui butter bambuk butter banana bean banana bird banana boa banana eater banana family banana fish banana flour banana fly banana freckle banana liquid banana moth banana oil banana quit banana root borer banana shrub banana solution banana water lily banana weevil banana wilt Bancus regis Bandar-log band bracelet band brake band chain band conveyer band course band creaser band cutter band driver banded purple band filter band iron bandle linen band major band maker band mill bandoleer fruit band-pass filter band plant band pulley band resaw band saw band-saw file band-sawing band-sawyer band screen band-shaped band shell band spectrum band steel band-tailed band wagon band wheel bandy-bandy bandy leg bandy-legged bang beggar Bangkok hat bangle ear bangtail muster bang-up banister-back banjo clock banjo frame banjo signal banjo-ukulele bank acceptance bank account bank accountant bank agent bank annuities bank assets bank assistant bank auditor bank barn bank beaver bank bill bank bird bank boss bank brakesman bank call bank cashier bank charter bank check bank claim bank clearings bank clerk bank cod bank court bank credit bank cress bank deposit bank discount bank draft bank engine banker-mark banker-out bank examiner bank fish bank fisher bank fisheries bank footman bank foreman bank gravel bank guaranty bank head bank heading bank-high bank holiday banking doctrine banking file banking indicator banking pin banking principle banking screw banking stud banking wax bank inspector bank jug bank laborer bank ledger bank loan bank manager bank martin bank messenger bank molder bank money bank note bank oddman bank overman banko ware bank paper bank post bill bank ranger bank rate bank receipt bank receiver bank reference bank repairer bank report bank reserve bank return bank roll bank run bankrupt law bank shot banksia rose bank-sided bank sill bank smack bank statement bank stock Bank stock bank superintendent bank swallow bank teller bank tender bank thistle bankul nut bank vole bank walker bank water bank weigher bank winding bank woman bank-wound banner bearer banner cloth banner cloud banner cry banner-fashioned banner name banner painter banner plant banner pole banner pompano banner screen banner-shaped banner staff banner stone bannock fluke bannock stick banquette slope banquette tread banyan day banyan tree Baraboo quartzite bara-picklet Barbados aloes Barbados cabbage tree Barbados cherry Barbados-cherry family Barbados cotton Barbados earth Barbados gooseberry Barbados leg Barbados lily Barbados liquor Barbados maidenhair Barbados nut Barbados pride Barbados sour grass Barbados tar Barbados trumpet flower Barbados water Barbados yam Barbary ape Barbary buttons Barbary corn Barbary dove Barbary ducat Barbary fig Barbary horse Barbary mastic Barbary oak Barbary pepper Barbary pigeon Barbary sheep Barbary thorn barb bolt bar beat barbed cat barbed wire bar bell barber bug barber-bug fever barberry family barberry fig barberry rust barbershop chords barbershop harmony barbette carriage barbette gun bar bit barbital sodium Barbizon school Barcelona nut bar cent bar chuck Barcoo grass Barcoo vomit bar discharger bare-ankled bare-armed bare-bitten bare-bosomed bare-branched bare-chested bare-clawed bare fallow bare-fingered barefoot tea bare-gnawn bare-kneed bare-picked bare-ribbed bare-skinned bare-skulled bare-throated bare-toed bare-walled bare-worn bar fee bargain basement bargain counter bargain day bargain driver bargain hunter bargain-hunting bargain penny bargain price bargain sale bargain table bargain work barge boom barge canal barge couple barge course barge-laden barge rig barge-rigged barge spike barge stone bar gown bar graph bar-headed goose bar iron Barisal guns barium carbonate barium chloride barium chromate barium chrome barium dioxide barium hydroxide barium monoxide barium nitrate barium oxide barium peroxide barium sulphate barium sulphide barium yellow bar joist bark-bared bark beetle bark blazer bark canker bark chopper bark cloth bark conveyer bark crusher bark-cutting bark disease bark dryer bar keel bark extract bark feeder bark-formed bark-galled bark-galling bark gouge bark grafting bark grinder bark-grinding bark house barking bill barking drum barking iron bark liquor bark louse bark maple bark mark bark mill bark parenchyma bark picker bark pit bark scaler bark shredder bark-shredding bark spud bark spudder bark stripper bark-tanned bark tree Bar-le-duc barley-bree barley-broo barley broth barley cake barley candy barley carrier barley cleaner barley clipper barley-clipping barley coal barley crusher barley-fed barley flour barley fork barley grass barley-grinding barley-hulling barley mill barley reel barley scald barley scourer barley smut barley straw barley stripe barley sugar barley water barley wine bar line bar magnet Barmecide feast bar money bar movement Barna-brahman Barnaby day barnacle-eater barnacle goose barnacle grass barnacle scale barn boards barn dance barn-door fowl barn-door skate barney-clapper barn fowl barn gallon barn grass barn gun barn lantern barn owl barn-raising barns-breaking barn swallow barnyard fowl barnyard golf barnyard grass barnyard millet barometer gauge barometer paper baron bailie baron court bar opal Barosma camphor bar parlor bar pin bar plate bar point barrack emperors barrage balloon barrage receiver barrage reception barrel amalgamation barrel arch barrel-bellied barrel bolt barrel-boring barrel-branding barrel bulk barrel cactus barrel chest barrel contractor barrel copper barrel drain barrel driver barrel-driving barrel fish barrel gentian barrel header barrel-heading barrel helm barrel hoop barrel house barrel organ barrel packer barrel-packing barrel palm barrel pen barrel pier barrel process barrel quartz barrel repairer barrel roll barrel roof barrel saw barrel sewer barrel shackle barrel-shaped barrel stave barrel tile barrel tree barrel vault barrel-vaulted barren brome grass Barren ground bear Barren ground caribou Barren grounds barrer-off barrette file barrier beach barrier berg barrier gate barrier ice barrier pillar barrier reef barrier treaty barring out bar roller barrow tram barrow truck barry-bendy barry-nebuly barry-pily barry-wavy bar screen bars gemels bar share bar-share plow bar shoe bar shot bar sight bar sinister bar spade bar stall bar-stock lathe bar-tailed barter unit Bartholomew fair bar tin Barton clay bar tracery Bartram oak Barus camphor bar winding bar-wound baryta feldspar baryta paper baryta water baryta white baryta yellow basal-cell carcinoma basal-nerved basalt glass basalt-porphyry basalt quarrier bascine case bascule bridge bascule escapement base angle base animals baseball rounders base-begged base-begot base bend base block base box base broom base bullion base-burner base camp base cinnamon base circle base clef base course base-court base depot base exchange base fee base-forming base fuse base hit base horehound base hospital base knob base level base-level plain base line base load base map basement complex basement house basement membrane base metal base-mettled base-minded base-mindedly base-mindedness base net base oil base pay base piece base plate base plug base point base right base ring base rocker base rocket base runner base running base-souled base speed base-spirited base-spiritedness base stone base tree base vervain base wage base wallah base-witted bas-fond bashi-bazouk bashi-bazoukery basic-lined basil balm basil mint basil penny royal basil thyme basing point basing tariff basin range basis bundle basis rate basket ash basket beagle basket bearer basket-bearing basket boat basket button basket capital basket carriage basket cells basket chair basket clerk basket cloth basket couching basket elm basket fern basket fish basket flower basket grass basket-handle arch basket hare basket hilt basket-hilted basket hoop Basket maker basket mast basket oak basket osier basket palm basket plant basket salt basket stitch basket tree basket weave Basket weaver basket willow basket withe basking shark Basonga-mina bas-relief bass-bar bass broom bass bug bass clef bass deafness bass drum basse danse basset griffon basset horn basset hound basset oboe bass fiber bass flute bass fly bass hogfish bass horn bassi-rilievi bass killy basso profundo Bassora gum bass player bassra locust bass-relief bass sunfish bass viol bastard acacia bastard agrimony bastard alkanet bastard aloe bastard apple bastard ash bastard ashlar bastard asphodel bastard baldmoney bastard balm bastard bar bastard blue gum bastard box bastard bryony bastard bullet tree bastard canna bastard cedar bastard cherry bastard chestnut bastard chickweed bastard chinaroot bastard cinnamon bastard clover bastard cork tree bastard cress bastard cusk bastard-cut bastard daisy bastard dittany bastard dogwood bastard dory bastard eigne bastard elder bastard elm bastard fallow bastard feverfew bastard fig bastard file bastard gemsbok bastard gentian bastard gidgee bastard goosefoot bastard grain bastard granite bastard gromwell bastard halibut bastard hartebeest bastard hawkweed bastard hellbore bastard hemp bastard horehound bastard hyssop bastard indigo bastard ipecac bastard ironwood bastard jarrah bastard jasmine bastard jute bastard lignum vitae bastard locust bastard locust tree bastard lupine bastard mahogany bastard manchineel bastard margaret bastard marjoram bastard measles bastard mouse-ear bastard myall bastard nettle bastard nightshade bastard olive bastard parsley bastard pellitory bastard pennyroyal bastard pimpernel bastard pine bastard plantain bastard plover bastard quartz bastard quince bastard rhubarb bastard rocket bastard rosewood bastard saffron bastard sago palm bastard sandalwood bastard-saw bastard sea grape bastard senna bastard sensitive plant bastard service tree bastard snapper bastard speedwell bastard spikenard bastard spruce bastard strangles bastard sugar bastard sycamore bastard tamarind bastard teak bastard thread bastard title bastard toadflax bastard tree bastard trefoil bastard trout bastard trumpeter bastard turtle bastard type bastard vervain bastard vetchling bastard weakfish bastard windflower bastard wing bastard wormwood bastard yellowlegs bastard yellowwood bast cell bastel house bast fiber Bastille day bastille house bast palm bast parenchyma bast tree bast vessel Batavia cassia bat bolt bat boy batcher plant bat dance bat ear bateau bridge bateau neck batement light Baten kaitos bath asparagus Bath brick Bath bun bath cabinet Bath chair Bath coating Bath coup bathing beach bathing beauty bathing cap bathing costume bathing gown bathing hut bathing machine bathing sandal bathing shoe bathing suit bathing trunks Bath king-of-arms bath-loving bath mat Bath metal Bath note Bath oliver bath salts Bath-sheba bath slipper bath soap bath sponge Bath stone bath towel Bathurst bur batiator root Bat indian bat-minded bat-mindedness bat money bat-mule bat printing batswing burner batswing coral battalia pie Battenberg lace batten door batten ends batten plate batter board batter brace batter bread battering-ram battering train batter-out batter pile batter post batter pudding batter rule battery case battery cell battery charger battery-charging battery chart battery eliminator battery maker battery mud battery tester battery-testing battery wagon battery water bat tick batting average batting block batting eye batting hammer battle array battle-ax battle brand battle call battle clasp battle club battle cruiser battle cry battle din battle-fallen battle flag battle fleet battle front battle gaff battle game battle horn battle hymn battle lantern battle line battle piece battle place battle police battle position battle quoit battle range battle royal battle-scarred battle shield battleship gray battle shout battle sight battle-slain battle smoke battle song battle-spent battle twig battle word battle-writhen bat tree batule board batwing burner batwing sleeve Baudouin reagent Baudouin test baum marten bauple nut bauson-faced Baveno twin Baveno twinning bawsay fern Baxter print bayacura root bayamo winds bay antler bay bar bay-bay bay bean bayberry bark bayberry family bayberry oil bayberry wax bay bird bay-breasted bay camphor bay cat bay cedar bay-cedar family bay coot Bayer process Bayeux tapestry bay floe bay goose bay grass bay holly bay hops bay ice bay lambs bay laurel bay lavender bay leaf bay-leaf willow bay lynx bay mackerel bay mahogany bay mare bay myrtle bay oak bay oil bayonet clasp bayonet joint bayonet leg bayonet plant bayou bass Bayou state bay plum bay point bay poplar bay rum bay-rum tree bay salt bay snipe bay stall Bay state bay stone bay-top palmetto bay tree bay willow bay winders bay window bay-winged bay yarn beach apple beach bird beach clam beach crab beach cusp beach flea beach goldenrod beach grass beach heather beach-la-mar beach pea beach plant beach plover beach plum beach ridge beach robin beach-sap beach strawberry beach tan beach wagon beach wormwood beaded-edge bead edging bead-eyed bead furnace beading plane beading tool bead lightning bead plant bead-ruby bead slick bead snake bead tree beady-eyed beak-bearing beaker culture beaker folk beak flute beakhorn stake beaking joint beak molding beak rush beak sedge beak-shaped beak wattles beak willow be-all beam anchor beam antenna beam arm beam-bending beam board beam bridge beam caliper beam center beam compass beam-ends beam engine beaming knife beaming machine beam knee beam knife beam light beam maker beam net beam plate beam pump beam roll beam sea beam-straightening beam texture beam trawl beam trawler beam trawling beam tree beam well beam wind bean anthracnose bean aphis bean beetle bean blight bean blower bean cake bean caper bean-caper family bean-cleaning bean clover bean crake bean-crushing bean curd bean cutworm bean dolphin bean-fed bean flour bean goose bean harvester bean hole bean honey bean house bean king bean ladybird bean leaf beetle bean leaf roller bean louse bean mildew bean mosaic bean oil bean picker bean planter bean-planting bean-pod borer bean pole bean polisher bean-polishing bean pot bean rick bean rust bean-shaped bean thresher bean tree bean trefoil bean tressel bean vine bean weevil bear animalcule bear brush bear bush bear cap bear cat bear caterpillar bear clover bear corn bear cub beard grass bearding line bearding machine beard lichen beard moss beard plant Bear driver beard tree bearer bar bearer-off bearer plate bearer security bear festival Bear flag bear garden bear grape bear grass bear huckleberry bear hug bearing arrow bearing bar bearing block bearing bow bearing brass bearing cloth bearing door bearing gear bearing metal bearing neck bearing note bearing pile bearing plate bearing rein bearing ring bearing robe bearing timber bear-lead bear leader bear mat bear moss bearnaise sauce bear oak bear pig bear pit bear plum bear skeiters bearskin gray bearskin jobber Bear state bear trap bear-trap dam bear warden bear whortleberry beast epic beast fable beast fly beast god beast tale beat block beat board beater-out beater press beaters-up beater-up beating machine beating orders beating reed beat note beat pin beat reception beatrix antelope beat tone beat-up Beau brummell Beaufort myrtle beau ideal beau-idealize beau monde beaumont root beau-pleader beauty-beaming beauty-berry beauty-blind beauty-blooming beauty-blushing beauty-breathing beauty-bright beauty-clad beauty contest beauty culture beauty culturist beauty-fruit beauty-loving beauty parlor beauty pin beauty plaster beauty-proof beauty shop beauty sleep beauty spot beauty-waning beauty wash Beauvais tapestry beaux ideal beaver brown beaver cloth beaver eater beaver finish beaver lily beaver poison beaver rat Beaver state beaver stones beaver top beaver tree beazor nuts Becchi test bechamel sauce beche-le-mar becket bend Becke test becking hammerman Beckmann rearrangement Beckmann thermometer beckoning crab Becquerel rays becuiba fat bed ale Bedaux system bed bolt bedbug hunter bed check bed curtain bedda nut bedding block bedding course bedding fault bedding plane Bedford cord Bedford limestone Bedford shale bed fuel bed head bed hinge bed jacket bed joint bedlam beggar bedlam cowslip bed lamp bed lathe bed light bed linen Bedlington terrier bed mold bed molding bed pad bed piece bed plane bed reach bedroom slipper bed rot bed sandwort bed sheet bed shoes bed-sitting-room bed slat bedstead fitter bedstead wrench bed steps bed stone bedstraw bellflower bed timber bedtime story bed tray bed vein bed warmer bed-wetting be-east bee balm bee beetle bee bird bee block bee brush bee-butt bee candy bee cellar beech agaric beech cherry beech coal beech family beech fern beech-green beech leaf snake beech marten beech mast beechnut oil beech oil beech-seedling mildew beech tree beech wheat beechwood creosote bee eater bee escape beef apple beef-brained beef cattle beef dodger beef-eating bee feed beef extract beef-faced beef ham beef juice bee fly beef marrow beefsteak fungus beefsteak geranium beefsteak plant beefsteak saxifrage beef stearin beef-suet tree beef tea beef-witted beef-wittedly beef-wittedness beefwood family bee glue bee gum bee hawk bee-headed beehive coke beehive house beehive kiln beehive oven beehive-shaped beehive shelf Beehive state beehive tomb bee killer bee kite bee larkspur bee laurel bee-loud bee louse bee martin bee milk bee moth beena marriage bee nettle bee orchis bee plant beer barrel beer bottle beer bottler beer brewer beer cellar beer chiller beer drinker beer engine beer fall beer gallon beer garden beer glass beer grains beer heart beer keg beer money beer mug beer pump beer scale beer stone beer vat beer vinegar beer yeast bee scap bee smoker bee space beeswax flint beet army worm beet blight beet blocker beet greens beet heart rot beet leafhopper beetle brow beetle-browed beetle-green beet lifter beetling machine beet puller bee tree beet root beet rot beet scab beet sugar beet webworm bee wine bee wolf before-cited before-created before-delivered before-going before-known before-mentioned before-named before-noticed before-recited before-said before-tasted before-thought before-told before-warned before-written beggar boy beggar brushes beggar girl beggar-lice beggar maid beggar-my-neighbor beggar-patched beggar-ticks begging hermits begonia family begonia rose behavior psychology behen oil behenolic acid Behistun inscription belaying pin Belgaum walnut belladonna lily belladonna ointment bell-alarm switch bell animalcule bell arch bell beaker bell-bearer bell borer bell-bottomed bell buoy bell button bell cage bell canopy bell caster bell casting bell chasuble bell chime bell chuck bell cord bell cot bell crank bell-cranked bell crater bell-crowned bell deck Belleek ware Belle isle cress Bellerophon limestone belles-lettres bell-faced bell-flowered bellflower family bell founder bell founding bell gable bell gamba bell glass bell harp bell heather bell-hooded bell horse belli causa bell jar bell kite bell-less bell-like bell ling bell loft bell magpie bell mare bell metal bell-metal ore bell moth bell-nosed bell olive tree bellows blower bellows boy bellows engine bellows fish bellows mender bellows pneumatic bellows treader bell pepper bell polyp bell punch bell push bell ringer bell ringing bell rope bell scraper bell screw bell-shaped Bell system bell tent bell thistle bell tower bell transformer bell trap bell tree bell-up bell vine bell wire belly-beaten belly-blind belly-bound belly brace belly button belly-devout belly doublet belly-fed belly friend belly-god belly-gulled belly guy belly-laden belly-naked belly offal belly-pinched belly-proud belly rail belly roll belly-sprung belly stay belly truss belly worshiper belly-worshiping belt awl belt carrier belt clamp belt conveyer belt-coupled belt coupler belt course belt cutter belt-cutting belt-driven belt-folding belt fork belt hoist belt idler belt insulation belt knitter belt lacing belt line belt pulley belt punch belt railroad belt-repairing belt sander belt-sanding belt saw Belt series belt-sewing belt shifter belt shipper belt slip belt speeder belt tenter belt-tightening bench clamp ben chervil bench-hardened bench hardening bench holdfast bench hook bench key bench-kneed bench knife bench lathe bench-legged bench-made bench mark bench plane bench press bench root bench scales bench show bench stamper bench stop bench strip bench table bench terrace bench tester bench warmer bench warrant bench winder Ben day process Bendigeit vran bending moment bending press bending punch bending shackle bending works Bendix drive bend leather bend pipe bend sinister bendy tree bendy-wavy beneficiary heir benefit association benefit club benefit society Bengal catechu Bengal gram Bengal grass Bengal hemp Bengal isinglass Bengal light Bengal lily Bengal madder Bengal monkey Bengal quince Bengal root Bengal rose Bengal sage Bengal silk Bengal stripes Bengal tiger Benguella current Benham disk Beni abbas Beni amer Beni-israel benjamin bush benjamin tree Benkulen clove Benkulen tea benne oil benneting time benni cake Bennington pottery ben nut ben oil Benoist scale Ben-oni ben-teak bent grass Bentinck boom Bentinck shrouds bent land bent-taildog benzal chloride benzene hexachloride benzene nucleus benzene ring benzene series benzidine colors benzidine dye benzidine rearrangement benzine cup benzo fast scarlet benzoic acid benzoic aldehyde benzoic sulphinide benzol distiller benzol extractor benzo orange benzo paradiazine benzo paroxazine benzoyl acetyl peroxide benzoyl chloride benzoyl green benzoyl hydride benzyl alcohol benzyl benzoate benzyl bromide benzyl chloride benzyl cyanide benzyl fumarate benzyl succinate berberine tree berberonic acid Berea grit Berea sandstone berg adder bergamot camphor bergamot mint bergamot oil berg crystal Berg damara berg ice Bergius process berg till Bering sea culture Berkefeld filter Berlin black Berlin blue Berlin canvas berline-landaulet berlin eye Berlin glove Berlin green berlin head Berlin iron Berlin kettle Berlin papyri Berlin porcelain Berlin shop Berlin ware Berlin warehouse Berlin wool Berlin work Bermuda arrowroot Bermuda berry Bermuda buttercup Bermuda catfish Bermuda cedar Bermuda chub Bermuda cress Bermuda flag Bermuda grass Bermuda iris Bermuda juniper Bermuda lily Bermuda-lily disease Bermuda maidenhair Bermuda mulberry Bermuda olivewood bark Bermuda onion Bermuda potloo-cedar Bermuda shilling Bermuda snowberry Bern bureau bernicle goose berry alder berry-bearing berrybone fish berry-brown berry cone berry-formed berry-on-bone berry patch berry pepper berry pie berry-shaped berry tree Bersag horn berth cargo berth deck Bertillon system Bertrand curves Bertrand lens beryl blue beryl-green beryllium oxide besom moss Bessel functions Bessemer converter Bessemer copper Bessemer iron Bessemer process Bessemer steel Bessy cerka best-able best-abused best-accomplished best-agreeable best-armed best-ball foursome best-ball match best-beloved best-bred best-built best-clad best-conditioned best-conducted best-considered best-consulted best-cultivated best-dressed best-established best-esteemed best-formed best-graced best-grounded best-hated best-humored best-informed best-intentioned best-known best-laid best-learned best-liked best-loved best-made best-managed best-meaning best-meant best-minded best-natured best-nourishing best-paid best-paying best-pleasing best-preserved best-principled best-read best-resolved best-selling best-sighted best-skilled best-tempered best-trained beta brass beta-eucaine beta function beta-glucose beta iron beta-naphthol beta-naphthyl beta-naphthyl benzoate beta-naphthyl salicylate beta-orcin beta-orcinol beta particle beta radiator beta ray beta test betel nut betel palm betel pepper betel phenol bete noire Bethlehem sage better-advised better-affected better-balanced better-becoming better-behaved better-born better-bred better-considered better-disposed better-dressed better-humored better-informed better-knowing better-known better-liked better-liking better-meant betterment tax better-natured better-omened better-principled better-regulated better-seasoned better-taught better-witted betting machine Betts process Betty lamp betula camphor between decks bevel edge bevel-edged bevel gauge bevel gear bevel gearing beveling edge bevel pinion bevel protractor bevel siding bevel square bevel washer bevel wheel Bewcastle cross bez antler bezoar antelope bezoar goat bezoar mineral bezoar stone Bezold-brucke effect bez tine B-flat B-flat major B-flat minor Bhutan cypress Bhutan pine bhut-bali bibble-babble bi-bivalent Bible box Bible christians Bible clerk Bible communism Bible oath Bible paper Bible society bib nozzle bib pout bicarbonate of soda Bice blue bice green bichromate cell bichromate filter Bickford fuse bicuspid valve bicycle chain bid-a-bid bid ale bid bond biddery ware bidding prayer biddy-bid biddy-biddy bid euchre biding place bid prayer bid price Biebrich scarlet Bielo-russian bier right bifurcation theory big-antlered big-armed big-bearded big-bellied Big bend state big bluestem big-bodied big-boned big-bosomed big-breasted big-bulked big-chested big-cone pine big-cone spruce big-eared Bigelow willow big-endian Big-endian big-eyed big-footed Big four yellow big-framed big-gaited big-handed big-headed big-hoofed Big injun sand big-jawed big-leaf ivy big-leaf laurel big-leaf maple big league big-leaguer big-leaved Big lime biglip sucker big-looking big-name big-nosed big-souled big-sounding big-swollen big-time big-timer big-voiced big-waisted bihar tree bi-iliac bi-ischiadic bi-ischiatic Bilbao glass bile acid bile cyst bile duct bile pigment bile salt bile vessel bilge block bilge board bilge coad bilge keel bilge keelson bilge log bilge piece bilge pump bilge saw bilge strake bilge water bilge ways Bilgram diagram biliment lace bill book bill broker bill case Bill chamber bill clerk bill collector bill discounter bill discounting billet boy billet breaker billet chipper billet cutter billet-doux billet heater billet man billet piler billet rolls billets-doux billet wheeler billet worker bill file billiard ball billiard cloth billiard cue billiard green billiard match billiard player billiard room billiard table billing machine billion-dollar grass billow cloud bill-patched Billy blind Billy brighteye billy-button billy check Billy clipper billy fairplay billy gar billy gate billy goat billy-goat weed billy owl billy playfair billy tea Billy webb Biltmore ash Biltmore stick Bimbli hemp bin-burn Binche lace bind day binder board binder course binder pulley binder twine binding course binding edge binding post binding rafter binding receipt binding screw binding tape binding twine bindle stiff bind rail bindweed nightshade Binet age Binet scale Bingley terrier binnacle list binodal quartic bio-aeration bio-assay bio-economic bio-electric bio-electrogenesis bio-energetics biological method biological product biological species biological stain biological supplies bio-osmosis bio-osmotic biphenyl rearrangement birch-bark call birch-bark oil birch beech birch beer birch borer birch camphor birch family birch-leaf mahogany birch-leaf skeletonizer birch oil birch partridge birch skeletonizer birch-tar oil birch wine bird augury bird-batting bird bell bird bolt bird brier bird cactus bird cage bird cherry Bird day bird dog bird duffer bird eagles bird-egg pea bird eye bird-eyed bird-faced bird fancier bird-fingered bird flower bird fly bird font bird food bird-foot bird grape bird grass birding piece bird-in-the-bush bird knotgrass bird life bird louse bird malaria bird mite bird-nest bird net bird pepper bird pest bird plant bird pox bird preserver bird rattle bird refuge bird-ridden bird sanctuary birdseed grass birdseed rape bird shop bird shot birds-in-the-bush bird skin bird snake bird song bird spider bird stuffer bird thistle bird tick bird vetch bird whistle bird-witted Birkeland-eyde process Birmingham caucus Birmingham economists Birmingham school Birmingham wire gauge birth canal birth control birth controller birth date birthday cake birthday suit birth flower birth gift birth hour birth month birth name birth pain birth palsy birth pangs birth phantasy birth rate birth sin birth theory birth throe birth trauma birthwort family birth year Biscay green biscuit bag biscuit baker biscuit baking biscuit beetle biscuit box biscuit-brained biscuit china biscuit clay biscuit-colored biscuit cutter biscuit drawer biscuit fire biscuit fireman biscuit firing biscuit kilnman biscuit leaves biscuit oven biscuit painter biscuit pan biscuit plant biscuit porcelain biscuit pottery biscuit-shaped biscuit ware biscuit warehouse biscuit weevil biscuit worm bisecting compass bisecting dividers bishop bird bishop coadjutor bishop cotton bishop pine bishop ray bishop sleeve bishop stool bishop suffragan Bismarck brown bismuth blende bismuth glance bismuth ocher bismuth oxychloride bismuth oxynitrate bismuth spar bismuth subchloride bismuth subnitrate bismuth tribromphenate bismuth white bismuth yellow bismuthyl chloride Bissell truck bister green bitch chain bite-tongue biting angle bit key bito tree bit pincers bitten-leaf disease bitter almond bitter-almond oil bitter-biting bitter-end bitter-ender bitter-enderism bitter orange bitter-orange oil bitter-rinded bitter-sweeting bitter-tasting bitter-tongued bitt pin bitumen process bit-wise biuret reaction biuret test blab school black-and-tan black-and-white black-aproned black-a-visaged black-a-vised black-backed black-banded black-bark pine black-bearded black-bellied black bent black-berried blackberry bark blackberry lily blackberry token black-billed blackbird bindweed black-blooded black-blue black-bodied black-boding black-bordered black-boughed blackboy gum black-breasted black-browed black-brown black-bulb thermometer black-bundle disease black-capped Black cayuga black-chinned black-clad black-coated Black code black-colored black-cornered Black country black-crested black-crowned black currant black-currant rust Black current black-eared black-ears black-edged black eye black-eye bean black-eyed black-eye sunfish black-faced Black-faced highland black-favored black-feathered black-figured black-fin snapper blackfish oil black-footed black-fruited black-gowned black-hafted black-haired Black hand blackhead disease black-headed blackhead grass blackhead minnow blackheart plover black heat black-hilted black-hooded black-hoofed blackjack pine blackland plow black-legged black-lidded black-lipped black list black-looking black-maned black-margined black-market black marketeer black marketer black-mouthed black-necked black-nosed black-out black-peopled black-plumed black-red black-robed black-rooted black rot black sand black-sander black scoter Black shirt black-shouldered black-skinned blacksmith welding black spot black-spot canker black-spotted black-stoled blackstrap molasses black-tailed black-throated black-toed black-tongued black-tressed black-tufted black-varnish tree black-veiled black-visaged Blackwall hitch blackwater fever Blackwater state black-whiskered blad apple bladder campion bladder catchfly bladder cherry bladder fern bladder fucus bladder green bladder herb bladder kelp bladder ketmie bladdernut family bladder plum bladder sedge bladder senna bladder snout bladder tangle bladder tree bladder worm bladderwort family bladder wrack blade apple blade buffer blade harrow blade-point blanc fixe Blanchard lathe blanch farm Blanch lion Blanch lyon blanco perch blanket alga blanket ballot blanket binder blanket binding blanket cloth blanket deposit blanket fish blanket holder Blanket indian blanket leaf blanket mortgage blanket moss blanket policy blanket rate blanket roll blanket scum blanket sheet blanket stiff blanket stitch blanket washer blanket weaver blanket weaving blankety blank blank-eyed blanking die blanking press blanking punch blank-looking blank-minded blast bloomery blast-borne blast engine blast fan blast furnace blasting cap blasting cartridge blasting circuit blasting detonator blasting fuse blasting gelatin blasting machine blasting mat blasting needle blasting oil blasting paper blasting powder blasting spoon blasting tools blasting tube blast lamp blast pipe blast roasting blatti family blaze current bleaching clay bleaching croft bleaching engine bleaching field bleaching green bleaching ground bleaching powder bleaching tank bleach liquor bleach process bleach wax blear-eyed blear-eyedness blear-witted bleary-eyed bleeding disease bleeding heart bleeding-heart pigeon blending inheritance blend-word Blenheim spaniel bles mole blight canker blindfold chess blind-loaded blind-nail blind pig blind-pigger blind-pigging blind-punch blind-stamp blind-stamped blind stamping blind-tool blind-tooled blind tooling blind-your-eyes blink beer blink comparator blinker lamp blinker tube blink-eyed blink microscope blister beetle blister blight blister bush blister canker blister cone blister copper blister flower blister fly blister mite blister pearl blister plant blister plaster blister rust blister spot blister steel blithe-looking bloat clover bloat colic bloater whitefish bloat herring blobber lip blobber-lipped blockade-runner blockade-running block anesthesia block ball block bond block book block booking block brake block-caving block chain block chords block coal block coefficient block colors block core block diamond blocked-out blocker-out block faulting block foot block front block furnace blockhead board block hole block-in-course bond blocking condenser blocking course blocking drive blocking hammer blocking press blocking process block irrigation block lava block letter block line block mold block mountain block pattern block plan block plane block print block-printed block printing block punch block rate block-saw block signal block signaling block-signal system block sugar block system block teeth block tin block vote blond-haired blood albumin blood-albumin glue blood baptism blood-bedabbled blood-bespotted blood-besprinkled blood blister blood-boltered blood bond blood-bought blood bread blood brother blood brotherhood blood carcake blood cast blood cell blood-cemented blood clam blood clot blood-colored blood-consuming blood corpuscle blood count blood covenant blood crisis blood crystals blood culture blood cup blood-defiled blood-discolored blood disease blood disk blood dock blood donor blood-drenched blood-drunk blood dust blood-dyed blood-extorting blood-faced blood feud blood-filled blood fine blood-fired blood-flecked blood flour blood fluke blood-frozen blood geranium blood gill blood gland blood glue blood groove blood group blood grouping blood-gushing blood heat blood horse blood-hot blood-hued blood islands blood lily blood-loving blood lust blood-lye salt blood-mad blood mare blood meal blood mole blood money blood orange blood pheasant blood picture blood pink blood plant blood-plashed blood plasma blood platelet blood plum blood poisoning blood-polluted blood-polluting blood pressure blood pudding blood rain blood-raw blood-red blood refiner blood relation blood relationship blood relative blood revenge blood rite blood royal blood sacrifice blood sausage blood-scrawled blood seller blood serum blood-shaken blood-sized blood spavin blood sport blood spot blood-stirring blood-stirringness blood strain blood stream blood sugar blood-swelled blood-swoln blood test blood-tinctured blood transfusion blood tree blood type blood typing blood-vascular blood vengeance blood vessel blood vine blood-warm blood-won bloodwort family bloody-back bloody-eyed bloody-faced bloody-handed bloody-hearted bloody-minded bloody-mindedness bloody-mouthed bloody-nosed bloody-red bloody-sceptered bloody-veined bloom boy bloom bud bloom-colored bloom conveyer bloom cutter bloomer pit bloom heater bloom hook blooming mill blooming rolls bloom loader bloom mill bloom oil bloom poison bloom runner bloom saw Bloomsbury group bloom shearer bloom-shearing bloom shears bloom side bloom slinger bloom smithy bloom swinger bloom tongs bloom yard bloomy-down blossom-bearing blossom-billed blossom blight blossom-bordered blossom bud blossom-crested blossom-end rot blossom-faced blossom-headed blossom-laden blossom-nosed blossom withy blotch-shaped blotting book blotting case blotting pad blotting paper blow accordion blow case blower-up blowing charge blowing cylinder blowing engine blowing fan blowing furnace blowing iron blowing machine blowing mold blowing pipe blowing tube blow milk blown-out blowout grass blowout magnet blowpipe analysis blowpipe reaction blow post blow snake blow-through blow valve blubber cask blubber-cheeked blubber chopper blubber-fed blubber fork blubber grass blubber lamp blubber oil blubber ship blubber spade blubber stove blue-annealed blue-aproned blue-arc phenomenon blue-backed blueback mullet blueback salmon blueback trout blue-banded blue bed blue-bellied blue-berried blueberry ash blueberry cornel blueberry maggot blueberry root blueberry tree blue-billed blue-black blue-blackness blue-blind blue blindness blue blood blue-blooded blue-bloused blue-breasted blue-breasted darter blue-checked blue-cheeked bluecoat boys blue-coated bluecoat school blue-colored blue-crested blue-cross blue-cross gas blue-cross shell blue-curls blue devil blue-devilage blue-devilism blue dyer blue-eared blue-eye blue-eyed blue-faced blue-flowered blue-footed blue-fronted blue-glancing blue-glimmering Bluegrass state blue-gray blue-green blue gum blue-gum leaves blue-haired blue-headed bluehead sucker blue-hot blue iron earth bluejack oak blue-leaved blue-lined blue mangler blue-mantled blue mill blue mixer blue mold blue-molded blue-molding blue-mottled blue-mouthed blue-pencil blue point blue presser blue pressman blueprint paper blue-rayed blue-red blue ribbon blue-ribboner blue-ribbonism blue-ribbonist blue-roan blue-rolled blue-sailors Blue shirt blue-sighted blue-sky blue-slate blue-spotted blue-stained blue star grass blue-starry blue-stemmed blue-striped blue-tailed blue-throated blue-tinted blue-tongued blue trucker blue-veined blue-washed blue-wattled blue-white blue-winged blue-yellow blue-yellow-blind blue-yellow blindness bluff-bowed bluff formation bluff-headed blunt-angled blunt-edged blunt-ended blunt-faced blunt-headed blunt-leaved blunt-lobed blunt-nosed blunt-pointed blunt-spoken blunt-witted blur circle blush-colored blush-compelling blush-faced blush rose blush-suffused blush-tinted Blythe process B major B mi B minor B natural boa constrictor board check board chopper board cloth board combiner board company board cover boarder-up board foot boarding nettings boarding officer boarding-out system boarding pike boarding school board liner board lot board maker board measure boar dog board rack board room board rubber board rule board scale board school board wages board work board worker boar grunt boar hunt boar-hunting boar stag boar thistle boar tree boasting chisel boat ax boat boy boat bridge boat chock boat club boat crane boat deck boat-green boat hand boat hire boat hook boat line boat livery boat-lowering boat pan boat race boat seaplane boat-shaped boat steerer boat-tailed boat train bobbery pack bobbin barreler bobbin board bobbin borer bobbin boy bobbin carrier bobbin chucker bobbin cleaner bobbin filler bobbin lace bobbin maker bobbin making bobbin net bobbin polisher bobbin riveter bobbin shifter bobbin sinker bobbin stripper bobbin tester bobbin tier Bobby joe bobby pin bobby-socker bobby socks bobby-soxer bob-cherry bob-haired bob runner bob skate bobtail drawbridge bobtail flush bobtail straight bob veal bob wheel bob wig bock beer bodhi tree bodies seven bodkin beard body armor body axis body bag body blight body blow body brace body-breaking Body brussels body cavity body cell body-centered body centrode body check body cloth body clothes body clothing body coat body color body constituent body corporate body curer body designer body ease body erector body fat body finisher body fluid body former body garment body girth body gripper body harness body heat body height body ill body ironer body-killing body-line bowling body linen body lining body loop body louse body-mind body mounter body pain body physician body pigment body plague body plan body plasm body politic body post body scent body servant body slave body snatcher body snatching body stealing body surface body track body type body varnish body washer body weight body white body whorl bog arum bog asphodel bog bean bog bilberry bog birch bog blitter bog blueberry bog-bred bog bull bog bulrush bog butter bog cotton bog cutting bog deal bog-down bog earth bog-eyed bog featherfoil bog fern bog gale bog garden bog gentian bog glede boggle-dy-botch bog grass bog hay Boghead coal bog hop bogie engine bogie roll bog iron bog iron ore bog jumper bog lemming bog lime bog manganese bog mine bog mold bog moss bog myrtle bog nut bog oak Bogodo lama bog onion bog orchis bog ore bog peat bog pimpernel bog pine bog pink bog plant bog rhubarb bog rose bog rosemary bog rush bog spavin bog spruce bog stalker bog star bog stitchwort bog strawberry bog timber bog torch bog trefoil bog turf bog violet bog whortleberry bog willow Bohemian-tartar bohun upas boiler alarm boiler blower boiler cleaner boiler-cleaning boiler compound boiler coverer boiler fitter boiler fixer boiler flue boiler head boiler inspector boiler iron boiler-off boiler-out boiler plate boiler room boiler scale boiler shell boiler shop boiler tenter boiler-testing boiler tube boiler tuber boiler-washing boiling-house boiling point boiling-point constant boiling process boiling spring boiling stone boil smut Bojig-ngiji bold-beating bold-face bold-faced bold-facedly bold-facedness bold-following bold-looking bold-minded boldo family bold-spirited bollard timber Bolle poplar boll hull boll rot boll weevil bolly cotton bolo-bolo Bologna flask Bologna phosphorus Bologna sausage Bologna stone bolster plate bolt action bolt auger bolt chisel bolt-cutting bolter-down bolters-down bolters-up bolter-up bolt forger bolt-forging bolt hook bolting cloth bolting house bolting hutch bolting tub bolt knife Bolton counts Bolton sheeting bolt-pointing bolt-shaped bolt threader bolt-threading bolt-turning bolt upright bolt upsetter bolus alba bomah nut bomahnut oil bombaje palm bombanassa palm bombardier beetle bombardment squadron Bombax cotton Bombay arrowroot Bombay catechu Bombay ceiba Bombay duck Bombay furniture Bombay hemp Bombay mace Bombay mastic Bombay merchant Bombay seed Bombay senna Bombay sumbul bomb bay bomb calorimeter bombing machine bombing sap bomb ketch bomb lance bomb plane bomb thrower bomb-throwing bomb tube bomb vessel bona activa bon-accord bonace tree bonaci arara bonaci cardenal bonaci gato bonae fidei bona fide bona fide holder bona fide purchaser Bon ami limestone Bonanza state bona roba bonaventure mizzen bonbon spoon bon chretien bond coat bond course bond debt bond paper bond timber bonduc nut bone-ace bone ash bone bed bone black bone bleacher bone boiler bone-breaking bone breccia bone-bred bone brown bone cartilage bone cell bone char bone china bone corpuscle bone crusher bone-crushing bone cutter bone-dry bone-dryness bone dust bone earth bone-eater bone fat bone forceps bone glass bone grinder bone-grinding bone-hard bone heap bone house bone-idle bone jack bone lace bone-laced bone meal bone oil bone pain bone phosphate bone-piercing bone pitch bone plombe bone polisher bone porcelain bone pot bone precipitate bone-rotting bone shark bone sorter bone spavin bone spirit bone tallow bone tankage bone tar bone-tired bone turquoise bone waste bone whale bone-white bone yard bon mot Bonneterre limestone bonnet gourd bonnet grass bonnet-headed bonnethead shark bonnet laird bonnet limpet bonnet macaque bonnet monkey bonnet pepper bonnet piece bonnet shark bonnet shell bonnet skate bonnet top Bon silene bons vivants bon ton bont tick bonus system bon vivant bon voyage booby gannet booby hatch booby hutch booby prize booby trap book account book agent book canvasser book card book clamp book clasp book cloth book club book collecting book collector book corner book cover book credit book debt book end book fair book-fed book fell book-folder book gill book hand book house booking clerk booking office book inventory book isinglass book jacket book knowledge book-leaf trachea book-learned book learning booklet leaf booklet pane book-lined book list book louse book lung book machine book madness book-match book-minded book muslin book name book notice Book oath book packet book palm book post book postage book printer book printing book profit book publisher book review book reviewer book reviewing book scorpion book-sewer book-sewing bookstall keeper book stamp book stitcher book-stitching book support book table book-taught book tile book tray book truck book value book wagon book-wise boom brace boom-ended boom foresail boom hoist boom iron boom jigger boom mainsail boom pole boom rat boom sail boom stay boom tackle boom yard boon day boon earth boon loaf boon work booster battery booster charge booster pump boot cleaner boot-cleaning boot closer boot cloth boot crimp boot dressing boot hook boot ironer bootle-blade bootleg sucker boot needle boot polish boot polisher boot powder boot spur boot stretcher boot top boot-topping boot tree booze fighter borage family borax bead borax carmine borax glass borax honey borax usta Bordeaux mixture Bordeaux pine Bordeaux red Bordeaux turpentine Bordelaise sauce border ground border irrigation border line border pen Border pricker Border rider Border ruffian border service Border song Border state border stone Border terrier Border thief Border warden Border warrant border world bord gate bore bit bore meal boring bar boring block boring head boring journal boring rod boring tool boring tube Borna disease born days Borneo camphor Borneo rubber Borneo tallow borning day boron carbide boron nitride borough council Borough-english borough-holder borough reeve borracha entrefina borracha fina borracha grossa borrowing days borrow pit Borstal system Boskop skull bosom-breathing bosom-deep bosom-felt bosom-folded bosom ironer bosom maker bosom making bosom staff bosom-stricken boss-eyed boss plate Boston bag Boston baked beans Botany bay Botany bay greens Botany bay gum Botany card Botany wool both-handed both-handedness both-hands bo tree bottery tree bott hammer bottle-bellied bottle blower bottle-blowing bottle boot bottle brush bottle-brush buckeye bottle bump bottle-butted bottle cap bottle capper bottle-capping bottle carrier bottle-carrying bottle cleaner bottle-cleaning bottle coaster bottle cod bottle corker bottle-corking bottle-fed bottle feeding bottle fern bottle filler bottle-filling bottle gentian bottle glass bottle gourd bottle grass bottle green bottle heath bottle imp bottle jack bottle jaw bottle kiln bottle labeler bottle labeling bottle mold bottle molder bottle-nosed bottlenose oil bottle opener bottle ore bottle palm bottle pool bottle rinser bottle-rinsing bottle screw bottle-shaped bottle slider bottle soaker bottle-soaking bottle sterilizer bottle-sterilizing bottle stopper bottle swallow bottle-tailed bottle-tight bottle tit bottle tree bottle washer bottle-washing bottling works bottom boards bottom canch bottom disease bottom drawer bottom-dump bucket bottom fermentation bottom glade bottom grass bottom heat bottom ice bottoming hole bottoming tap bottom land bottom plate bottom rake bottom-road bridge bottom rot bottom sawyer bottom-set bottom stope bottom tool bottom water bottom yeast botulismus toxin boudoir photograph bought note bouillon cube bouillon cup bouillon spoon boulder bast boulder belt boulder clay boulder fern boulder flat boulder gravel bouldering stone Boulder period boulder train boulevard stop bouncing-pin indicator boundary point boundary rider bound bailiff bound charge bound foot bounding bow bounty-fed bounty jumper bounty jumping Bourbon cotton Bourbon lily Bourbon red bourbon whisky bourdon lace Boursault rose Bouton dor bouton pearl Bovey coal bow-back bow-backed bow-beaked bow bearer Bow-bell Bow bells bow-bending bow brace bow cap bow chaser bow chasing Bow china bow compass bow divider bow drill bow dye bow-dyer bowel-hive grass Bowen knot bower plant bow fast bow file bow hair bow hand bowhead bird bow-houghd bowie knife bowing acquaintance bowing stone bow light bowline bridle bowline cringle bowline knot bowling alley bowling average bowling crease bowling green bowling stump bowl-shaped bowl spirit bow-necked bow net bow oar bow pen bow pencil bow pulpit Bow river series bow rudder bow saw bow-shaped bowsprit bed bowsprit cap bowsprit shroud bow stiffener Bow street Bow street officer bowstring beam bowstring bridge bowstring creeper bowstring girder bowstring hemp bowstring roof bowstring truss bow thistle bow tie bow trolley bow wave bow window bow-windowed bowwow theory box barberry box barrage box barrow box beam box bed box bill box-bordered box-branding box bridge box brier box buggy box caisson box calf box camera box canyon box chisel box chronometer box chuck box-cleating box clip box cloth box coat box cooper box coot box couch box coupling box coverer box-covering box crab box cutter box day box dolly box drain box dresser box-edged box edging box elder box-elder aphid box-elder bug box end boxer-off boxer-up box family box frame box front box gauge box girder box grave box green box groove box hardening box heading box hedge box hinging box holder box holly box hook box house box huckleberry Boxing day boxing glove Boxing night boxing shutter box iron box jig box key box kite box-leaved box level box lid box-locking box metal box midge box myrtle box nail box nailer box-nailing box nut box oak box office box opener box oyster box pew box plait box-plaited box plaiter box plaiting box poison box press box respirator box scald box score box seat box set box settle box sextant box-shaped box shook box shop box shutter box sleigh box spanner box spring box stall box staple box stew box stove box strap box-strapping box strike box string box tail box taler box tenon box toe box tool box tortoise box trap box tree box-trimming box truck box-turning box wagon box wrench boyar palm boy bishop boy scout B powder B power supply B quadrum Brabant rose brab tree brace bit brace block brace box brace bumpkin brace comb brace game brace head bracelet tie bracelet wood brace molding brace pendant brace piece brace root brace wrench brachialis anticus bracken sickness bracket capital bracket clock bracket crab bracket foot bracket fungus bracket plate bracket trail Bracklesham beds bract scale Bradley text brad punch Bragget sunday Brahma samaj Brahmo samaj braid bonnet braid fern braid wool brain-begot brain-born brain box brain-breaking brain-bred brain cactus brain case brain cavity brain cell brain child brain coral brain-cracked brain-crazed brain-crumpled brain fever brain-fever bird brain-fevered brain-fretting brain nerve brain power brain-purging brain sand brain-smoking brain-spattering brain specialist brain-spun brain stem brainstone coral brain storm brain-strong brain-tire brain trust brain truster brain vesicle brain wave Braj bhasha brake assembler brake band brake bar brake beam brake block brake chain brake clevis brake compartment brake cylinder brake drum brake examiner brake fitter brake gear brake hanger brake horsepower brake hose brake lever brake lining brake meter brake operator brake pedal brake pipe brake power brake repairer brake rod brake shoe brake spring brake stripper brake tester brake-testing brake valve brake van brake wheel braking power braking ratio bramble finch bramble rose bramble shark bramble worm bran boil branch bank branch banking branch bar branch-bearing branch-building branch-charmed branch-climber branch cut branch depot branch-embellished branch gap branch grass branch herring branch mark branch point branch-rent branch-strewn branch trace brand goose brand iron brand-new brand-newness bran drench bran duster brandy-bottle brandy-burnt brandy-faced brandy mazzard brandy mint brandy-pawnee brandy smash brandy snap brandy sour brank-new bran mash bran-new bran steep brant bird brant fox brant goose brant snipe brass-armed brass band brass-bold brass-browed brass buffer brass buttons brass-cheeked brass-colored brass-eyed brass finisher brass-finishing brass-fitted brass fitter brass-footed brass founder brass-fronted brass-handled brass-headed brass-hilted brass-hooved brass-lined brass-melting brass molder brass-mounted brass-plated brass-renting brass-shapen brass-smith brass spinner brass-tipped brass turner brass-visaged brass-working brave-horsed brave-looking brave-minded brave-sensed brave-showing brave-souled brave-spirited brave-spiritedness braze-jointed brazen-barking brazen-browed brazen-clawed brazen-colored brazen-faced brazen-fisted brazen-floored brazen-footed brazen-fronted brazen-gated brazen-headed brazen-hilted brazen-hoofed brazen-imaged brazen-leaved brazen-lunged brazen-mailed brazen-pointed Brazil current Brazil nut Brazil-nut oil Brazil red Brazil wax bread bag bread baker bread-baking bread beetle bread corn bread crumb bread crumber bread-crumbing bread crust bread-crust bomb bread cutter bread-cutting bread-eating bread-faced bread flour bread grain bread knife bread line bread-liner bread mold bread pan bread plate bread pudding bread rack bread sauce bread slicer bread stick breadth extreme breadth index breadth molded bread toaster bread tray bread tree bread wheat bread wrapper bread-wrapping break bean breakbone fever break-circuit breaker card breaker-down breaker-off breaker strip breaker-up breakfast bacon breakfast bell breakfast food breakfast knife breakfast nook breakfast plate breakfast room breakfast set breakfast table breakfast time break flour break front break-in breaking engine breaking joint breaking load breaking piece breaking plow breaking point breaking strength break iron break jaws break joint break lathe break line break pin break point break-promise break shock break-through breakup switch breakup value break van breast auger breast backstay breast board breast collar breast cut breast cylinder breast-deep breast drill breast fast breast-fed breast harness breast-high breast hoe breast hole breasting knife breast kerchief breast knee breast laws breast line breast milk breast molding breast pang breast pocket breast pump breast-rending breast roll breast stoping breast strap breast stroke breast tea breast wall breast wheel breastwork log breath-bereaving breath-blown breather pipe breath-giving breath glide breath group breathing capacity breathing mark breathing place breathing pore breathing space breathing spell breath-stopping breath-sucking breath-tainted breath-taking breech action breechblock plunger breech bolt breech delivery breeches buoy breeches money breeches pipe breeching body breeching loop breeching strap breech-loading breech mechanism breech piece breech pin breech plug breech screw breech sight breeder tulip breeding ground breeding sore breeze-borne breeze box breeze burner breeze carrier breeze-fanned breeze filler breeze fly breeze-lifted breeze loader breeze oven breeze picker breeze plant breeze riddler breeze-shaken breeze-swept breeze tallyman breeze washer breeze wheeler breeze-wooing Bremen blue Bremen green brent-new Bretonne sauce breve rest bribe broker bribe-devouring bribe-free bribery oath bric-a-brac bric-a-brackery brick arch brick archer brick ax brick-barred brick beam brick-bound brick-building brick-built brick burner brick-burning brick carrier brick cheese brick chipper brick chisel brick clay brick-colored brick cutter brick-cutting brick drier brick-drying brick dust brick-dust deposit brick earth brick factory brick-fronted brick-grinding brick hammer brick-hemmed brick hod brick machine brick machinist brick mold brick molder brick nog brick-nogged brick nogging brick-paved brick paver brick pointer brick press brick presser brick red brick sorter brick stamp brick stitch brick tea brick-testing brick trimmer brick-walled brick wheeler bride-ale bride duck bride price bridge bar bridge bird bridge bracket bridge circuit bridge coupler bridge crane bridge deck bridge engineer bridge engineering bridge grafting bridge guard bridge house bridge islet bridge joint bridge lamp bridge lock bridge money bridge passage bridge pewee bridge piece bridge rail bridge seat bridge stay bridge stone bridge table bridge tower bridge train bridge wall bridge whist bridle bar bridle bridge bridle cable bridle chain bridle gate bridle hand bridle iron bridle joint bridle path bridle port bridle rein bridle rod bridle stricture bridle tape bridle wire bridle-wise brief bag brief case brier bamboo brier rose brier stitch brigade major brigadier general Brigham tea bright-bloomed bright-cheeked bright-colored bright-dyed bright-eyed bright-faced bright-featured bright-haired bright-headed bright-hued bright-leaved bright-line spectrum bright-minded brightness equation brightness temperature bright-robed bright-spotted bright-striped bright-studded bright-tinted bright-witted brilliant-cut brimstone acid brimstone butterfly brimstone yellow brindled gnu brine-bound brine-cooler brine-cooling brine-dripping brine fly brine gauge brine pan brine pit brine pump brine pumper brine-pumping brine shrimp brine-soaked brine worm bringer-up bringing-up brisket disease bristle cell bristle-faced bristle fern bristle grass bristle moss bristle picker bristle-pointed bristle-pointed oat bristle rat bristle-stalked bristle-tailed bristle-thighed bristle-toothed bristle worm bristlewort family Britannia joint britannia metal britannia ware British-israel Brito-icelandic Brittany cloth broach post broach turner broad-backed broad-based broad-beamed broad bean broad-bean weevil broadbill dipper broad-billed broad-bladed broad-blown broad-bodied broad-bosomed broad-bottomed broad-boughed broad-bowed broad-breasted broad-brimmed broad-built broad-chested broad-chinned broad-crested broad-eared broad-eyed broad-faced broad-flapped broad-fronted broad-gauge broad-gauged broad-handed broad-headed broad-hoofed broad-horned broad jump broad jumper broadleaf tree broad-leaved broad-limbed broad-lipped broad-listed broad-margined broad-minded broad-mindedly broad-mindedness broad-mouthed broad-nosed broad-ribbed broad-roomed broad-set broad-shouldered broadside aspect broad-skirted broad-souled broad-spoken broad-spreading broad-sterned broad-striped broadtail cloth broad-tailed broad-thighed broad-tired broad-toed broad-wayed broad-wheeled broad-winged broccoli brown brock-faced brogue hole broken arch broken-arched broken-backed broken-bellied broken-down broken-ended broken-footed broken-fortuned broken-handed broken-headed broken-hipped broken-hoofed broken-kneed broken-legged broken-minded broken-mouthed broken-nosed broken-paced broken-shanked broken-spirited broken wind broken-winded broken-winged brome grass bromide paper bromine water bromoil process bromoil transfer bronco grass bronze-bearing bronze-bound bronze-brown bronze caster bronze-casting bronze-clad bronze-covered bronze-foreheaded bronze-gilt bronze-gleaming bronze-golden bronze-haired bronze-purple bronze-shod bronze smelter bronze-winged bronze-yellow brood bud brood cell brood chamber brooder house brood gemma brood matron brood nest brood pouch broody coop brook bean brook betony brook celandine brook feather brook lamprey brook lobelia brook mint brook pimpernel brook runner brook silk brook sunflower brook tongue brook trout broom birch broom brush broom clover broomcorn millet broom crowberry broom cypress broom goosefoot broom grass broom handle broom heath broom hickory broom-leaved broom millet broom moss broom palm broom pine broomrape family broom sage broom sedge broom-sewing broomstick marriage broom straw broom tea tree broom toadflax broom tops broom tree broom twine broom wattle brother-german brother-in-law brothers-in-law B rotundum brougham-landaulet brow ague brow antler brow-bent brown-armed brown-backed brown-banded brown-barreled brown-bearded brown bent brown-berried brown-colored brown-complexioned browned off brown-eyed brown-faced brown-green brown-haired brown-headed browning solution brown-leaved brown-locked brown-purple brown-red brown-roofed brown rot brown-sailed brown-skinned brown-sleeve brown-spotted brown-stemmed brownstone front brown-strained brown-tailed brown-washed brow point browsing room brow tine brow-wreathed brumbo pulley brunch coat brunch-word brush apple brush ax brush back brush borer brush boring brush box brush breaker brush-breaking brush bronzewing brush broom brush case brush cherry brush coating brush deal brush discharge brush drag brush driller brush drilling brusher-off brusher-up brush fashioner brush fiber brush filler brush-footed brush hand brush harrow brush heap brush holder brush hook brush kangaroo brush keeper brush myrtle brush-off brush ore brush pile brush polisher brush puller brush rabbit brush sawyer brush scythe brush-shaped brush shunt brush stick brush stock brush-tail brush-tailed brush-tongued brush-treat brush trimmer brush turkey brush turner brush varnisher brush wheel brush wolf brush yoke bruzz iron B-shaped B-type buaze fiber bubble glass bubble sextant bubble shell bubble tower bubble tube bubbly-jock bucco camphor buchu camphor buchu oil buck ague buck basket buck bean buck-bean family bucker-up bucket brigade bucket carrier bucket conveyer bucket dredge bucket-eyed bucket hook bucket hooker bucket orchid bucket pump bucket rope bucket-shaped bucket shop bucket snapper bucket well bucket wheel buck-eyed buckeye rot buck fat buck fever buck finch buck fleece buck grass buckhorn brake buckhorn plantain buckhorn sight bucking board bucking hammer bucking kier bucking plate buck knee buck law buckle-beggar buckle bobber buckle burnisher buckle chain buckle coverer buckle finisher buckle forger buckle maker buckle mounter buckle presser buckler fern buckler-headed buckler maker buckler mustard buckle rollerer buckler play buckler player buckler-shaped buckle stamper buckle tongue buckle tonguer buck moth buck passer buck private buck rake buck sail buck scraper buck thistle buckthorn brown buckthorn family buck-toothed buckwheat cake buckwheat coal buckwheat family buckwheat sage buckwheat tree buckwheat vine bucolic caesura bud brush buddy sap budge bachelor budge barrel bud grafting bud gum bud moth bud mutation bud rot bud sage bud scale bud sport bud variation bud variety buffalo apple buffalo berry buffalo bird buffalo bug buffalo bur buffalo bush buffalo cholera buffalo cloth buffalo clover buffalo cod buffalo currant buffalo dance buffalo disease buffalo fish buffalo fly buffalo gnat buffalo gourd buffalo grass buffalo-headed buffalo jack buffalo mange buffalo moth buffalo nut buffalo pea buffalo sunfish buffalo thorn buffalo tree buffalo tree hopper buffalo weed buff-backed buff-breasted buff-citrine buff-colored buffer bar buffer beam buffer block buffer salt buffer state buffer value buffet car buffing apparatus buffing head buffing wheel buffle duck buffle-headed buff nor stye buff-orange buff stick buff-tipped buff-washed buff wheel buff-yellow bug agaric bug-eyed bugging machine buggy cultivator buggy plow bug juice bugle horn bug light bugloss cowslip bug word buhl clock Buhl stage building anchor building block building code building construction building contractor building cradle building inspector building iron building law building lease building line building lot building mover building paper building permit building rigger building slip building society building surveyor building trade build-up built-in built-up bulb angle bulb bar bulb fly bulb iron bulb mite bulbo-urethral bulbous-rooted bulb plate bulb rectifier bulb rot bulb scale bulb-tee bulge hoop bulkhead line bulk line bulk-material conveyer bulk-pile bullace grape bull apple bulla tympani bull bait bull bay bull-bearing bull birch bull bit bull block bull-bragging bull brier bull-browed bull buttercup bull chain bull cook bull daisy bull ditcher bulldog ant bulldog bat bulldog edition bulldog forceps bulldog pipe bulldog spear bulldog wrench bull donkey bull earing bullen-bullen bullen nail bullet bolt bullet catch bullet compass bullet hawk bulletin board bullet money bullet screw bullet shell bullet tree bull-faced bull fiddle bull-fronted bull gear bull-god bull grape bull grass bull-grip bullhead kelp bullhead lily bullhead shark bull-horn bull-horn acacia bulling bar bullion balance bullion lace bullion melter bullion point bullion smelter bullion stitch Bulli soil bullit grape bull kelp bull-like bull mackerel bull-man bull meat Bull moose Bull mooser bull-mouthed bull-necked bull net bull nettle bull-nosed bullnose tool bull oak bullock block bull peep bull pen bull pine bull plum bull point bull press bull pump bull quartz bull rattle bull redfish bull ring bull riveter bull-roarer bull-roaring bull rope bull-run bull-running bull snake bull stag bull terrier bull thistle bull tongue bull train bull trout bull-voiced bull wheel bully beef bully-off bully tree bulrush millet bulwark plating bumblebee coot bumblebee hawk moth bumblebee root bump ball bumper beam bumper spring bumping bag bumping hammer bumping post bumping race bump joint bumpy ash bunch-backed bunch bean bunch evergreen bunchflower family bunch grape bunch grass bunch light bunch oyster bunch peanut bunch pink bunch plum bunch-word bunchy top bundle branch bundle branch block bundle browning bundle burial bundle pillar bundle-rooted bundle sheath bundle work bun foot bunghole oil bung start bunji-bunji bunk chain bunker coal bunker oil bunk fence bunko steerer bunny hug bunny rabbit bun ochra Bunsen burner bunter dog bunt glut bunting crow bunting iron bunting lark buntline cloth buono fresco bur artichoke buratto lace burble point bur chervil bur clover bur cucumber burden adjustment burden stitch burdock grass bureau company bureau system burg-bryce burgess-ship bur gherkin burglar alarm bur grass burial case burial ground burial jar burial mound burial peal burial place burial service burial tree burial urn burial vault burial yard burly-boned burly-faced burly-headed burmannia family Burmo-chinese burn blue burned-over burner gas burner-off burnet bloodwort burnet clover burnet moth burnet rose burnet saxifrage burning ghat burning glass burning mirror burning oil burning point burning spot burning-wood burnished-gold burnishing die burn-nose burn-nose bark burnt ale burnt almond burnt-child burn-the-wind burnt-out burnt-umber burnt-up bur oak bur parsley burr chisel bur reed burrel fly burrel shot burring machine burro-back burrow duck Burr truss bur sage bursting charge bursting strength bur thistle Burton myrtle Burton skate bur vervain burying ground burying place bus bar bus boy bus conductor bush baby bush basil bush bean bush canary bush cat bush cinquefoil bush clover bush cow bush cranberry bush disease bush doe bush dog bush dove bush forest bush fruit bush goat bush grape bush-grown bush-haired bush harrow bush hawk bush-head bush-headed bush honeysuckle bush hook bush huckleberry bush lark bush lawyer bush league bush leaguer bush maple bush marrow bush metal bush morning-glory Bush negro bush nut bush oak bush pea bush pepper bush pig bush poppy bush pumpkin bush quail bush rat bush rice grass bush robin bush scythe bush shrike bush sickness bush-skirted bush soul bush swamp bush-tailed bush tamarind bush tea bush tit bush trefoil bush vetch bush warbler bush wren bushy aster bushy-bearded bushy-browed bushy-eared bushy-haired bushy-headed bushy-legged bushy-tailed bushy-whiskered bushy-wigged business card business cycle business double Business english business life insurance business paper business pass business reply card business school business suit bus line bus rod busser-in bustamente furnace bustard quail bust hammer bustle pipe bust-up busy-brained busy-fingered busy-headed busy-idle busy-tongued butea gum butea seed but piece butt block butt bolt butt chain butt chisel butt cut butt end butter ale butter basket butter bean butter-billed butter blender butter boat butterboat-bill butterboat-billed butter carrier butter chip butter color butter-colored butter cooler butter cress butter crock buttercup family buttercup yellow butter cutter butter-cutting butter daisy butter dealer butter dipper butter dish butter dock butter duck butter firkin butterfly bush butterfly dam butterfly damper butterfly dance butterfly dock butterfly fish butterfly flower butterfly lily butterfly map butterfly orchid butterfly orchis butterfly pea butterfly plant butterfly ray butterfly table butterfly tulip butterfly valve butterfly weed butter grinder butter kit butter knife butter merchant butter mold butter-mouthed butter muslin butter oil butter packer butter pat butter pear butter pick butter plate butter plum butter print butter-rigged butter roller butter-rose butter sauce butter server butter shop butter-smooth butter spreader butter tooth butter-toothed butter tree butter tub butter weight buttery bar butter yellow buttery hatch butt fitter butt handler butt haulier butt head butt-headed butt joint butt knuckle butt leather butt lifter buttock line buttock mail button aster button balance button blank button borer button bottomer button burnisher button cactus button chrysanthemum button clamper button cleaner button clover button coverer button-covering button cutter button die button dipper button disease button driller button ear button-eared buttoner-up button fastener button-fastening button finisher button flower button gauge button grass button-headed buttonhead rivet button hole buttonhole stitch button lac button maker button making button mangrove button mottler button pearl button piercer button polisher button quail button sage button saw button scar button seal button sedge button sewer button-sewing button shank button shanker button-shaped button shoe button-slitting button snakeroot button snakeweed button sorter button stamper button stick button strike button switch button thistle button tree button-tufting button turner button willow buttonwood shrub button worker butt packer butt plate butt puller buttress pier buttress root buttress thread buttress tower butt roller butt rot butt saw butt shaft butt shooting butt sling butt strap butt striker butt weld butt welding butty lark butyl-chloral buyer four buyer ten buying option buzzard clock buzzard curlew buzzard grass buzz planer buzz saw by-alley by-altar by-bidder by-bidding by-blow by cards by-channel by-child by-cock by-common by-corner by-day by-dependency by-design by-doing by-drinking by-dweller bye-bye bye-election by-effect by-election bye-low by-end bye-stake bye-turn bye-water bye-wood by-fellow by-fellowship by-form by-gold by-hour by-interest by-issue by-job by-lane by-lead by-line by-matter by-motive by-office by-passage bypass burner bypass condenser by-place by-plot by-product by-product oven by-reaction by-respect by-result by-room by-route by-sitter by-speech by-stake by-stroke by-talk by-term by-thing by-throw by-thrust by-time by-tone by-track by-trail by tricks by-turning by-view by-walking by-wash by-water by-wipe by-wood caaing whale cabbage aphis cabbage bark cabbage-leaf miner cabbage-root maggot cabbage-tree hat cabbaging press cab fare cab hire cabin boy cabin car cabinet beetle cabinet cherry cable address cable bend cable-laid cable road Cabul clover ca canny cacao bean cacao butter cache-cache cactus alkaloid cactus family caddie bag caddis bait caddis case cadet blue cadet cloth Cadmean victory cadmium carmine cadmium standard cell cadmium sulphate cadmium sulphide cadmium vermilion cadmium yellow Caela sculptoris Caen stone Caesar weed cafe chantant cafe concert cafe dansant cafe society caffoy paper Caffre cat cage antenna cage bird cager-on caging knob Cahill quill cahinca root Cahokia mound cahoun palm Cain-colored cain law cairn-headed cairn tangle cairn terrier caisson body caisson limber cajeput oil cajuput oil cake baker caked breast caked lac cake-eater cake griddle cake-mixing cake pan caking coal Calabar bean Calabar ebony calabash nutmeg calabash tree Calabrian manna calabur tree calamander wood calamint balm calamity howler calamus oil Calaveras skull Calaveras warbler Calcaire grossier calcaneocuboid ligament calc-aphanite calcium arsenate calcium bisulphite calcium carbide calcium carbonate calcium caseinate calcium chloride calcium creosotate calcium cyanamide calcium cyanide calcium dibromobehenate calcium fluoride calcium hydroxide calcium hypochlorite calcium iodobehenate calcium lactate calcium light calcium nitrate calcium oxide calcium oxychloride calcium phosphate calcium soap calcium sulphate calcium sulphite calc-sinter calc-spar calc-tufa calculating machine Calcutta ginger Calcutta hemp caldron bottom calendar clock calendar day calf feed calf leather caliatour wood caliber compass calibrating terminal calico ash calico aster calico scale Calicut ginger caliper compass caliper gauge caliph willow calisaya bark Cali yuga calk weld calla green calla lily call bell call bird callcedra wood call-down called on calling-over calliope hummingbird callis sand Calliste green call-off call-out call-over call-up calm-eyed calm-minded calm-throated Calon-segur Caloosa grape calore sore calorimeter bomb calumet dance Calvary clover Calvary cross Calvo doctrine calyx drill calyx spray calyx teeth calyx tube camadula seed camara nutmeg camass rat camber arch camber beam camber-keeled Camberwell beauty cambe wood cambric grass cambric muslin Cambro-briton camb sizer cam chain cam contactor cam-contactor switch cam-cutting machine camel-backed camel caravan camel driver camel-faced camel grass camel-grazing camel-haired camel hay cameline oil camel insect camel-kneed camel-shaped cameo blue cameo conch cameo stamper camera angle camera assembler camera booth camera lucida camera obscura camera-shy camomile oil campaign book campaign medal campaign wig Campanula blue Campanula purple Campanula violet camp ball camp bed camp bird camp ceiling camp chair camp circle camp color camp disease campeachy wood Camperdown elm camp fever Camp fire campfire girl camp flux camp follower camphane group camphorated oil camphor ball camphor gum camphor ice camphor laurel camphor liniment camphor oil camphor tree camphor water camphor weed camp hospital camp meeting cam press camp robber camp root camp royal camp sheathing cam squeezer cam switch cam wheel cana brava Canada anemone Canada balsam Canada goose cana espina canal barge canal-built canal cell canal coal canal lock canal rays canal system cananga oil Canary balm Canary bellflower canary bird canary-bird flower canary flower canary glass canary grass Canary island bellflower Canary island date palm canary moss canary nut canary seed canary stone canary vine canary weed canary wine canary wood canary yellow can-beading can-boxing can buoy can burnisher can-burnishing can capper can-capping can carrier cancellation clause cancer cell cancer eye cancer jalap cancer parasite can-cleaning can-closing can coverer can crimper can-crimping cancrinite-syenite cancrum oris candelabra lamp holder candelabra plant candelabrum tree candelilla wax candle alder candle anemone candle auction candle bearer candle-bearing candleberry bark candleberry myrtle candleberry tree candle-branch candle cactus candle case candle-dipper candle end candle fly candle-foot candle gleam candle grease candle hour candle larkspur candle lumen Candlemas day candle-meter candle mold candle molder candlenut oil candle paper candle plant candle power candle rush candle shade candle-shaped candle snuff candle snuffer candle-snuff fungus candlestick lily candle-tapering candle tree candle tube candlewick bedspread candle wicking candlewood pine candy carrot candy grass candy kitchen candy pull candy pulling cane apple cane ash cane-backed cane blight cane borer cane-bottomed cane bottoming canebrake rattler cane brimstone cane cactus cane chair cane crusher cane cutter cane field cane fruit cane grass cane gun cane killer cane knife canella alba canella bark canella-bark family cane mill cane osier cane palm cane press cane rat cane reed cane rush cane rust cane seat cane-seated cane seating cane splicer cane sugar Canes venatici Canes venaticid cane trash cane weaver cane webbing cane withy can faucet can filler can-filling can-flanging can floater can frame can header can-heading can hook canicola fever Canis major Canis minor Canis minorid canister shot can jacket canker-bit canker-bitten canker bloom canker blossom canker-eaten canker-hearted canker lettuce canker-mouthed canker rash canker rose canker sore canker-toothed canker violet can key can-labeling can-lacquering can liner can-lining can-marking cannabis indica canna-down canna family cannel coal cannon ball cannon-ball fruit cannon-ball tree cannon bit cannon bone cannon cracker cannon curl cannon fodder cannon metal cannon pinion cannon-royal cannon shot cannon stove canoe adz canoe birch canoe burial canoe cedar canoe gum canoe yacht canoe yawl canon bit canon law canon lawyer canons regular can opener can-opening canopy switch can plug can-polishing can press can-quaffing can-salting can-scoring can sealer can-sealing can-seaming can-slitting can solderer can-soldering can-squeezing can-stamping can sterilizer can-sterilizing can system cant block cant body cant chisel cant dog Canterbury bell Canterbury gallop Canterbury lamb Canterbury palm Canterbury tale can-testing cant file cant frame cantharides cerate cantharid luster cant hook cantilever spring canting arms canting coat canting quoin cantle bar cant molding canton blue Canton crepe cant purchase cant ribband cant spar cant strip cant timber canvas baster canvas-covered canvas dam canvas dresser canvas maker canvas primer canvas quilter canvas shoe canvas stitch canvas stitcher canvas work canvas worker can washer can-washing can-weighing can-wiping can-wrapping canyon gooseberry canyon grape canyon live oak canyon wren capacitor motor capacity coupling capacity factor capacity load capacity load factor capacity reactance cap-a-pie cap bolt cap cell cap cloud Cape aloe Cape anteater Cape armadillo cape chisel Cape codder Cape cod lighter Cape cod turkey Cape dutch Cape flyaway Cape hottentot Cape magnum Cape may warbler cape parvum caper berry caper-cut caper family caper sauce caper spurge caper tea caper tree capeseed oil Cape town cap-flash cap flashing cap fungus capillary analysis capillary attraction capillary capacity capillary chemistry capillary electrometer capillary potential capillary pyrites capillary water Capitalis curia regis Capitan pasha capitation grant cap nut cap octavo capoor cutchery Cappagh brown cap paper capping plane capple-faced Capri blue capricorn beetle caprifig wasp cap rock cap screw cap scuttle capsicum wool cap square capstan bar capstan bolt capstan-headed capstan lathe capstan screw capstan tool rest captaincy general captain general captain-generalcy captain lieutenant captains general capture theory capuchin capers Capuchin cross Capuchin nun capucine buff capucine lake capucine madder capucine orange capucine red capucine yellow Caracas kino car accounting caramel cutter carapa nut carapa oil carapa tree carapa wood carap nut carap oil carap tree carap wood carat grains caravan boiler caraway oil caraway seed caraway-seed fern car bit carbon black carbon copy carbon diamond carbon dichloride carbon dioxide carbon-dioxide recorder carbon-dioxide snow carbon disulphide carbon flame carbonic acid carbonic-acid gas carbonization process carbon knock carbon lamp carbon light carbon microphone carbon monoxide carbon oxide carbon oxychloride carbon paper carbon pencil carbon point carbon process carbon silicide carbon spot carbon star carbon steel carbon sulphochloride carbon telephone carbon tetrachloride carbon tissue carbon transfer carbon transmitter carbon trichloride carbon tube carbonyl chloride car-borne carborundum cloth car brake carbureted-hydrogen gas carcass beef carcass flooring carcass roofing car coupler car coupling cardamom oil card bends card brusher card catalogue card cheating card cleaner card cloth card clothier card-counting card cutter card-cutting card-devoted card doffer card drawer card dresser card end card ender carder bee card feeder card fettler card filler card gatherer card grinder Cardiff giant cardigan jacket cardinal archbishop cardinal bird cardinal bishop Cardinal camerlingo cardinal climber cardinal cloth cardinal deacon cardinal dean cardinal fish cardinal flower cardinal grosbeak Cardinalis datarius cardinal priest cardinal red card-index carding hair carding machine carding thistle carding wool cardio-aortic cardio-inhibitory Cardium clay card ledger card measurer card parer card-perforating card-printing card roller card setter card-setting machine card sorter card-sorting card strip card stripper card table card teasel card tenter card thistle card tray car dumper car-dumping card voting card winder card wire card writer care-bewitching care-bringing care-charming care-crazed care-crossed care-defying care-dispelling care-eluding care-encumbered career diplomat career man careers master care-fraught care-killing care-laden care-lined care-scorched care-tired care-tuned care-wounded car ferry car float car frame car framer cargo boat cargo carrier cargo checker cargo clerk cargo coal cargo lighter cargo liner cargo mill cargo ship cargo worker car greaser car heater Caribou-eater Caribou eskimo caribou moss caricature plant caring fair Caring sunday carl hemp carline thistle carline wife Carling sunday carload lot carload rate car lot car-mile car mileage Carmine beauty carmine lake car movement carnal-minded carnal-mindedness carnation grass carnation red carnation rose carnation rust carnauba wax carnelian red carnival lace carob bean carob brown carob gum carob tree Carolina allspice Carolina anemone Carolina ash caroline hat Carolus dollar carom ball Carony bark Carpatho-russian Carpatho-ruthenian carpenter ant carpenter bee carpenter bird carpenter grass carpenter moth carpet alterer carpet beating carpet bed carpet bedding carpet beetle carpet binding carpet braid carpet broom carpet brush carpet chair carpet cleaner carpet cleaning carpet-covered carpet dance carpet dealer carpet drive carpet dyer carpet fastener carpet filler carpet fillings carpet finisher carpet fitter carpet fixer carpet folder carpet grass carpet hemmer carpet knight carpet lining carpet loom carpet machinist carpet mill carpet moth carpet needle carpet opener carpet picker carpet pink carpet planner carpet printer carpet printing carpet rags carpet renovator carpet repairer carpet rod carpet sewer carpet shark carpet shell carpet shredder carpet slipper carpet-smooth carpet snake carpet sorter carpet stitch carpet stretcher carpet sweeper carpet tack carpet thread carpet twisting carpet weaver carpet weaving carpetweed family carpet wool carpet yarn carp louse carpo-olecranal carp sucker car rail Carrara marble car replacer car-replacing car retarder carriage apron carriage blind carriage body carriage bolt carriage boot carriage bow carriage bridge carriage builder carriage building carriage cleaner carriage cleaning carriage company carriage coupler carriage coupling carriage dog carriage driver carriage-free carriage gate carriage guard carriage harness carriage head carriage horse carriage hub carriage iron carriage ironer carriage joiner carriage lady carriage lamp carriage lampman carriage maker carriage making carriage painter carriage piece carriage pole carriage porch carriage rider carriage road carriage searcher carriage seat carriage setter carriage shackle carriage shaft carriage shed carriage spring carriage springer carriage step carriage strap carriage top carriage trade carriage trimmer carriage trimming carriage washer carriage wheel carriage works carriage wrench carrick bend carrick bitt Carrickmacross applique Carrickmacross guipure Carrickmacross lace car ride carrier pigeon carrier ring carrier shell carrier snail carrier suppression carrion beetle carrion buzzard carrion crow carrion flower carrion fly carrion fungus carrion hawk carron oil carrot beetle carrot-colored carrot eating carrot family carrot fern carrot-head carrot-headed carrot orange carrot-pated carrot red carrot rust fly carrot-shaped carrot soft rot carrot tree carry bag carry forward carry-in carrying charge carrying cost carrying-on carrying place carryings-on carrying trade carry-log carry-over car sealer carse deposit car service car shed car sickness car starter car step cartage contractor Cartagena bark Cartagena ipecac cart aver cart driver carte blanche cartel ship Carter grass Carter process cartes blanches Carthamus red cart horse cartilage cell cartilage pit cart ladder cart leather car track cartridge annealer cartridge bag cartridge belt cartridge blocker cartridge box cartridge brass cartridge buff cartridge case cartridge filler cartridge fuse cartridge gauge cartridge heater cartridge loader cartridge loading cartridge maker cartridge making cartridge paper cartridge primer cartridge priming cart road cart rope cart-rutted cart-track plant car-tunnel kiln cart wheel cart whip carvel-built carvel joint carvel-planked carving knife car wheel car wheeler casaba melon casagha pine casca bark cascade amplification cascade-connect cascade connection cascade control cascade converter Cascade fir cascade method cascade system cascara amarga cascara buckthorn cascara sagrada cascarilla oil case bay case-bearer case binding case bolt case bottle case-bound case count case ending case furniture case goods case gun case hammer case history casein glue casein paint casein plastic case knife case law case lawyer case made casement cloth casement window case method case oil case phrase caser-in case shot case springs case stake case system case tablet cash account cash advance cash assets cash basis cash capital cash carrier cash clerk cash contract cash credit cash crop cash customer cash discount cash dividend cash drawer cashew apple cashew bird cashew family cashew lake cashew nut cash line Cashmere goat Cashmere palmette Cashmere shawl Cashmere stag cash money cash payment cash price cash purchase cash railway cash-refund annuity cash register cash remittance cash sale cash store cash tenant cash terms cash value casing cutter casing dog casing head casing-head gas casing-head gasoline casing knife casing shoe casing spear casing splitter casing spool casing swab casino pink cask marker cask-shaped cassava wood Cassel brown Cassel earth casse paper casserole fish casse-tete cassia bark cassia bud cassia fistula cassia flask cassia lignea cassia nut cassia oil cassia pod cassia pulp cassia-stick tree cassia tree cassie paper Cassius purple cassowary tree castana nut cast-back cast-by caste mark caste-ridden caster-off cast gear Castile earth Castile soap Castilla rubber casting bottle casting box casting counter casting director casting line casting net casting table casting vote casting wax casting weight cast iron castle-builder castle-building castle-built castle-buttressed castle-crowned castle ditch castle earth castle gate castle gilliflower castle-guard castle-guarded castle nut castle top castle town castle wall castor aralia castor bean castor-bean tick castor cake castor gray castor oil castor-oil plant castor pomace castor seed castor tree Castor ware castor wheel cast plow cast scrap cast-weld casualty insurance casualty ward Catalina cherry catalpa sphinx cat-and-dog cat-and-doggish catapult flight catapult fruit cataract bird catastrophe hazard catastrophe reserve catastrophe risk catawba rhododendron catawba rose bay catawba tree cat back cat beam cat-bed catbird grape cat block cat brier cat-built cat castle cat chain catch basin catch boom catch box catch crop catch cropping catch drain catchfly grass catch line catch meadow catchment area cat-chop catch phrase catch pit catch points catch question catch siding catch stitch catch title catchwater drain catchword entry catclaw acacia cat-clover cat cradle cat davit catenary system cater-cornered cater-cousin cater-cousinship caterpillar catcher caterpillar fern caterpillar fungus caterpillar hunter caterpillar plant caterpillar tractor cater trey cat-eyed cat flea catfoot poplar cat grape cat hair cat ham cat-hammed cat haw cathead chuck cathead stopper cathedral builder cathedral chimes cathedral church cathedral close cathedral dome cathedral glass cathedral music cathedral service cathedral tower cathedral town cathedral walk Catherine pear Catherine wheel Catherine-wheel window catheter fever cat hip cathode current cathode drop cathode luminescence cathode particle cathode ray cathode-ray oscillograph cathode-ray tube Catholic league Catholic leaguer cat hook cat house cat ice cation-active cat ladder cat-locks cat nap cat-o-nine-tails cat owl cat pea cat pine cat purchase cat rig cat-rigged cat salt cat shark cat silver cat sleep cat snake cat spruce cat squirrel cat stopper cat tackle cattail family cattail flag cattail fungus cattail grass cattail millet cattail rush cat thyme cattle boat cattle breeder cattle breeding cattle buyer cattle camp cattle car cattle crossing Cattle damara cattle dealer cattle dehorner cattle dog cattle drover cattle farcy cattle farm cattle farmer cattle feed cattle feeder cattle feeding cattle float cattle floater cattle grub cattle guard cattle horn cattle leader cattle loader cattle louse cattle mange cattle marker cattle marking cattle pass cattle pen cattle plague cattle pump cattle raising cattle ranch cattle range cattle run cattle scab cattle ship cattle shipper cattle show cattle-specked cattle stall cattle station cattle stealing cattle steamer cattle tender cattle thief cattle tick cattle trade cattle trader cattle train cattle wire cattleya fly cattley guava cat tree cat whisker cat-whistles cat-witted cauda galli cauda-galli grit caul board caul fat cauliflower disease cauliflower ear cauliflower-eared cauliflower excrescence cauliflower ware causeway grass caution card caution money cavalier battery cavalier projection cavalier servant cavalier servitude cavalry bone cave art cave bear cave beetle cave cricket cave drawing cave dweller cave dwelling cave earth cave fish cave-guarded cave hunter cave hyena cave-in cave-keeping cave lion cave-lodged cave-loving cave man cave pearl cave period cave rat cave right cave tomb caving system cavi-relievi cavity source caviuna wood cavo-relievo Cayenne cherry Cayenne incense cayenne pepper Cayuga duck C battery Ccapac cocha Ccapac raymi Ccapac situa C clef Ceara rubber Cebu hemp Cecropia moth cedar apple cedar-brown cedar camphor cedar chest cedar-colored cedar elm cedar grass cedar green cedar leaf cedar maker cedar manna cedar moss cedar nut cedar pine cedar rust cedar swamp cedar tree cedar waxwing cedarwood oil cee spring ceiling board ceiling floor ceiling hook ceiling joist celadon green celandine green celandine poppy celery blight celery cabbage celery family celery grass celery-leaved celery mosaic celery oil celery pine celery salt celery seed celery-topped celery yellows celestial blue cellar book cellar pipe cell-blockade cell body cell bridge cell cavity cell charger cell cleavage cell count cell cup cell division cell doctrine cell family cell house cell kernel cell membrane cell multiplication cell nest cell nucleus cell organ cell plasm cell plate cell product cell proliferation cell sap cell-shaped cell substance cell tester cell theory cellulose acetate cellulose flour cellulose nitrate cellulose xanthate cell wall Celto-ligyes Celto-roman Celto-slavic Celto-thracians cembal damore cembra nut cembra pine cement-coated cement conveyer cement-covered cement disease cement-drying cement dusting cement-faced cement filler cement-forming cement gauger cement gland cement grinder Cement gun cement hardener cement kiln cement layer cement-lined cement-lining cement mill cement miller cement organ cement paver cement pulverizer cement rod cement sprayer cement-temper cement tester cendres blue censer box censer pot census taker centauro-triton center bit centerboard trunk center circle center drill center field center fielder center-fire center-freeze system center gambit center gauge centering machine centering square center jam center line center mold center punch center reamer center-sawed center seal center-second center spider center square center staff center tester center valve center wheel center zone centimeter-gram centimeter-gram-second centipede grass centipede legs centipede locomotive centipede plant central-fire centum languages centuple calorie century aloe century plant ceramic engineer ceramic engineering cercis-leaf cerebello-olivary cerebro-ocular cerium dioxide cerium oxide cerro green cervico-occipital cervico-orbicular ceryl alcohol Cesaro sum Cesaro summability Cevenole race chac-chac Cha-cha chack-bird Chac-mool Chaetura black Chaetura drab chafe iron chaffer whale chaff-flower chaff scale chafing dish chafing gear chafing pan Chagres fever chagual gum chai meu chain argument chain armor chain-bag chain banking chain belt chain bit chain block chain boat chain bolt chain brake chain cable chain cent chain closure chain conveyer chain coral chain coupling chain creeper chain discount chain dog chain drill chain drive chain-driven chain driving chain-drooped chain fern chain gang chain gear chain gearing chain grab chain grate chain-grate stoker chain guard chain harrow chain hoist chain hook chain isomerism chain joiner chain jointer chain knot chain letter chain lightning chain line chain linker chain locker chain mail chain-mail armor chain mark chain mechanism chain pickerel chain pillar chain pin chain pipe chain plate chain pulley chain-pull lamp holder chain-pull switch chain pump chain reaction chain reactor chain reasoning chain reflex chain riveting chain rule chain saw chain-shaped chain shot chain snake chain splice chain-spotted chain stitch chain store chain survey chain-swung chain syllogism chain tape chain-testing chain tongs chain towing chain twist chain warper chain welder chain-welding chain well chain wheel chain whip chain winding chain wrench chair arm chair back chair bed chair binder chair bottom chair bottomer chair cane chair car chair-fast chair leg chair lift chair-mortising chair organ chair rail chair seat chair seater chair-shaped chair shaper chair table chair turner chaise cart chaise longue chai vai chakazzi copal chalcedony yellow chalcis fly Chaldae-pahlavi Chaldee church Chaldee paraphrase chalice cell chalice flower chalice moss chalice veil chalk burner chalk cliff chalk down chalk dust chalk-eating chalk engraving chalk-eyed chalk flint chalk hill chalk lime chalk line chalk maple chalk mixture chalk pit chalk plant chalk-plate process chalk process chalk quarry chalk-talk chalk-white challenge cup chamber acid chamber barrister chamber blast chamber composer chamber concert chamber council chamber counsel chamber fellow chamber filter chamber gas chamber horse chamber kiln chamber master chamber mastering chamber music chamber orchestra chamber organ chamber pot chamber practice chamber process chamber sonata chamber stool chamber study chamber train chamber vessel chameleon grass chameleon mineral chameleon tree frog chamfer bit chamfer plane chamois skin chamois yellow champaca oil champagne cup champion oak champion tooth Champlain epoch Champlain forge Cham-selung chance arrival chance bairn Chance-claus process chance-dropped chance-hit chance-hurt Chancelade race chancel organ chancel table chance-medley chance-met chance-poised chancery hand chance-shot chance-sown chance-taken chance-won Chan-chan chandelier tree chang awn change bowler change-case key change gear change house change key change-over change-over switch change point change ratio change ringing changer-off change-speed gear change wheel changing bag changing note channel bar channel bass channel board channel bolt channel cat channel goose channel iron channel plate channel rail channel steel channel stone chantry priest chaparral cock chaparral pea chapel child chapel royal chapel text chapter house character dance character dancing character loan character part character piece character sketch character study charcoal black charcoal burner charcoal drawing charcoal fire charcoal furnace charcoal gray charcoal iron charcoal oven charcoal paper charcoal pencil charcoal pit charcoal plate charcoal point charcoal powder charcoal rot charcoal tree charcoal wood charge account charge book charge hand charge-off charges forward charge sheet charge weigher charging order charging rate charging stick chariot driver chariot driving chariot plane chariot pole chariot race chariot racer chariot-shaped chariot side chariot wheel charity ball charity bazaar charity boy charity commission charity girl charity house charity school charity stamp charity work charity worker Charley horse Charley pitcher Charlier shoe charlotte russe Charlton white charm-bound charm-built charm-engirdled charm-struck charnel house Charta charitatis Charter boy charter colony charter hand charter hold charter land charter member charter party chartreuse green chartreuse yellow chase gun chase halter chase hoop chase-hooped chase-hooping chase mortise chase-mortised chase piece chase port chaser hob chase ring chasing lathe chassis fitter chassis painter Chateau ausone Chateau brane-cantenac Chateau dyquem chateau gray Chateau hautbrion Chateau lafite Chattahoochee formation chattel interest chattel mortgage chatterbox tree chatter mark chatter water chaud-melle cheadle dock Cheap-jack cheap skate che-choy check binding check boy check brace check-canceling check chamber check collar check endorser check-endorsing checker-brick checker tree checker-up check exchange check-flood check folio check gauge check girl checking account check key check line check list check lock check nut check-perforating check punch check puncher check rail check ring check roller check side check stamp check stamper check stopper check system check valve check washer check-writing cheek block cheek knee cheek pouch cheek strap cheek tooth cheer pine cheese bail cheese basket cheese block cheese bolt cheese cement cheese chandler cheese color cheese dream cheese finger cheese fly cheese grater cheese-head cheese-headed cheese hoop cheese knife cheese maggot cheese maker cheese making cheese mite cheese mold cheese pitch cheese plate cheese press cheese rack cheese rennet cheese running cheese scoop cheese straw cheese toaster cheese trier cheese tub cheese vat cheese wring chemical lead chemically pure chemic mixer chenille carpet cheoplastic metal Cherneviye tatars cheroonjie nut cherry aphid cherry apple cherry bay cherry birch cherry bird cherry bounce cherry brandy cherry-cheeked cherry chopper cherry coal cherry coffee cherry-colored cherry cordial cherry country cherry crab cherry-crimson cherry crush cherry currant cherry fair cherry finch cherry-flavored cherry fruit fly cherry fruit sawfly cherry grader cherry gum cherry holly cherry laurel cherry-laurel oil cherry leaf beetle cherry leaf spot cherry-lipped cherry maggot cherry mildew cherry orange cherry pepper cherry picker cherry pie cherry pit cherry pitter cherry plum cherry red cherry-ripe cherry-rose cherry rum cherry scab cherry scale cherry seeder cherry slug cherry smash cherry stone cherry stoner cherry sucker cherry tomato cherry-tree gum cherry wine cherry-wood chert quarrier chess apple chess notation chess opening chess rook chessylite blue chest-deep chest expander chest founder chest-foundered chest foundering chest lid chest lock chest maker chest measurer chest note chestnut-backed chestnut-bark disease chestnut bean chestnut-bellied chestnut blight chestnut borer chestnut brown chestnut bud chestnut coal chestnut-collared chestnut-colored chestnut-crested chestnut-crowned chestnut extract chestnut flour chestnut oak chestnut-red chestnut-roan chestnut roaster chestnut sedge chestnut-sided chestnut stuffing chestnut timber worm chestnut tongue chestnut tree chestnut weevil chestnut-winged chest protector chest register chest tone chest wall chest weight Cheval blanc cheval glass chevalier bird chevalier crab chevron-shaped chewing gum chica red Chichester elm chickasaw plum chicken-billed chicken bird chicken-brained chicken breast chicken-breasted chicken broth chicken cholera chicken coop chicken corn chicken fancier chicken farm chicken farmer chicken farming chicken feed chicken grape chicken gumbo chicken halibut chicken hawk chicken hazard chicken heart chicken house chicken mite chicken pepper chicken pest chicken plover chicken pox chicken roost chicken septicemia chicken snake chicken-spirited chickens-toes chicken thief chicken tick chicken-toed chicken tortoise chicken wire chicken yard chickling vetch chick-pea chickweed family chickweed phlox chickweed wintergreen chicle bleeder chico mamey chicory family chief-justiceship chief-pledge chiff chaff Chiffney bit chigoe-poison chih hsien Chihuahua pine child-bereft child-fashion child-god child-hearted child-heartedness child labor child life child-loving child mind child-minded child-mindedness child rearing Chile hazel chili con carne chi-lin chili pepper chili sauce chili vinegar chill-cast chill casting chilli pepper chill mold chill plow chiming bell chimley neuck chimney bar chimney bellflower chimney board chimney cap chimney corner chimney flute chimney glass chimney hook chimney jack chimney lug chimney money chimney piece chimney pink chimney plant chimney pot chimney repairer chimney rock chimney stack chimney stalk chimney swallow chimney sweep chimney sweeper chimney swift chimney tax chimney throat chimney top chimney tun chimney wing china decorator china painter china painting china shop chinbeak molding chin-bearded chinch bug chin-chin chin-deep chine gall chine hoop chin fly Ching ming Ching-tu chin-high chink-backed chinked back chinking course Chinle formation chin music Chino-japanese Chinook licorice chinquapin oak chin rest chin shield chin stay chin strap chin-wag chin whiskers chip ax chip bird chip board chip break chip budding chip carving chip-hat palm chipper-up chipping ax chipping bit chipping chisel chipping hammer chipping piece chipping squirrel chip ring chip shot chiquichiqui palm Chi-rho monogram chir pine chisel bit chisel-cut chisel-edged chisel grinder chisel maker chisel making chisel-pointed chisel-shaped chisel temper chisel tooth chi-square chitino-arenaceous chito melon Chittagong wood chittam bark chittem bark chitter-chatter chittim bark chloric ether chloride paper chlorinated lime chlorine azide chlorine dioxide chlorine family chlorine peroxide chlorine water chlorophyll body chock cheese chock-full chock stone chocolate brown chocolate candy chocolate-coated chocolate-colored chocolate corn chocolate coverer chocolate dipper chocolate family chocolate mill chocolate mixer chocolate mold chocolate molder chocolate molding chocolate packer chocolate-red chocolate sifter chocolate wrapper choctaw-root choice-drawn choice reaction choir aisle choir invisible choir loft choir manual choir organ choir rail choir school choir screen choir stall choir wall choke apple choke coil choke pear choker setter choking coil cholane series cholera horn cholera infantum cholera morbus cholera nostras choline esterase chondroitin-sulphuric chondro-osseous chop-cherry chop-chop chop dollar chopper cot chopping block chopping knife chop suey chor bishop chorda dorsalis chordae tendineae chorda tympani chord packing chord pitch chorea minor chorus girl chorus reed chose local chose transitory chota hazri chou moellier chou paste Choveve zion chow mein Christanna indian Christ-borne Christ child Christ-confessing Christe eleison Christ follower Christ-given Christ-hymning Christiana standard christian dor Christiania epoch Christiania standard Christiano-platonic Christian science Christian scientist Christian-socialize Christ-imitating Christ-inspired Christmas bells Christmas bush Christmas card Christmas fern Christmas rose Christmas shield fern Christmas tree Christ-professing Christ row Christ-taught chroma-blind chrome alum chrome aventurine chrome black chrome brick chrome green chrome iron chrome leather chrome lemon chrome liquor chrome-nickel chrome-nickel steel chrome orange chrome primrose chrome red chrome scarlet chrome sole chrome spinel chrome steel chrome-tanned chrome tanning chrome-vanadium steel chrome vermillion chrome yellow chromium family chromium green chromium oxide chromium sesquioxide chromium steel chromium trioxide chromium yellow chromo-arsenate chromosome number chromyl chloride chronicle drama chronicle history chronicle play chronometer escapement chrysalis oil chrysanthemum dog chrysanthemum rust chrysolite green chrysoprase green Chuar group chub-faced chub mackerel chub sucker chuck-a-luck chuck-farthing chucking lathe chucking reamer chuck-luck chuck plate chuck rib chuck wagon chucky-chuck chucky-chucky chug-chug chukker brown chulan family Chulyma tatars chump end chupa-chupa church-ale Church army Church assembly church bell church door church house church mouse church school Church slavic church-soken church work church worker churchyard cross churn-butted churn drill churn supper churr-owl chute system ciba blue cicada killer cider brandy cider cup cider gum cider jack cider maker cider making cider tree cider vinegar cider wine cigar beetle cigar binder cigar box cigar-box cedar cigar case cigar case-bearer cigar clipper cigar cutter cigarette beetle cigarette case cigarette drain cigarette factory cigarette holder cigarette lighter cigarette machine cigarette maker cigarette making cigarette paper cigarette roller cigarette sorter cigarette tobacco cigar holder cigar lighter cigar-loving cigar machine cigar machinist cigar maker cigar making cigar mold cigar molder cigar packer cigar roller cigar rolling cigar-shaped cigar smoker cigar sorter cigar spot cigar store Cigar-store indian ciliate-leaved ciliate-toothed cinch bill cinder block cinder breaker cinder concrete cinder cone cinder frame cinder gray cinder mill cinder notch cinder path cinder pig cinder pit cinder tap cinder track cinema operator cinema red cineres clavellati Cingulum veneris cinnabar green cinnabar red cinnamic aldehyde cinnamon apple cinnamon bark cinnamon-bark oil cinnamon bear cinnamon brown cinnamon fern cinnamon flower cinnamon honeysuckle cinnamon-leaf oil cinnamon oak cinnamon oil cinnamon rose cinnamon sedge cinnamon stone cinnamon teal cinnamon vine cinnamon water cinque point Cinque port cinque-spotted cipher disk circle-branching circle brick circle cutter circle driller circle finisher circle geometry circle graph circle setter circle shear circle-shearing circle shears circle squarer circle-squaring circling boy circuit binding circuit breaker circuit court circuit drive circuit justice circuit rider circular constant circular-cut circular-cut file circular-knit circulating equation circulating library Circum-arean Circumcision style Circum-cytherean Circum-jovial Circum-mercurial Circum-neptunian Circum-saturnal Circum-saturnian Circum-uranian circus movement cire-perdue cirl bunting cirque-couchant cirro-cumular cirro-cumulative cirro-cumulous cirro-cumulus cirro-filum cirro-macula cirro-nebula cirro-stome cirro-strative cirro-stratous cirro-stratus cirro-velum cirrus haze cirrus stripe Cis-elizabethan cis-elysian Cis-reformation cistern barometer cist grave cis-trans citricola scale citron butterfly citron-colored citronella grass citronella oil citron green citron melon citron water citron yellow citrus anthracnose citrus black fly citrus blast citrus canker citrus fruit citrus nematode citrus rust mite citrus scab citrus white fly city-born city-bound city-bred city-commonwealth city company city council city councilman city court city crop city edition city editor city father city gas city-god city hall city man city manager city-manager plan city mission city missionary city plan city planning city-state city ward city-wide civet bean civet cat civette green clack box clack door clack goose clack valve claim agent claim jumper clair-obscure clamp bushing clamp cell clamp connection clamp coupling clamp dog clamp jig clamshell brake clamshell bucket clang association clang color clan tartan clan totemism Clanwilliam cedar clapper block clapper box clapper rail clapper valve clap sill clare-obscure claret brown claret cup claret dun claret red claribel flute clarinet flute clarion-voiced clash gear clasp hook clasping-leaved clasp knife clasp lock clasp nut class bond class-cleavage class-conscious class consciousness class day class dialect classico-lombardic classification society classification track classification yard class interval class leader class lottery class mark class meeting class name class number class publication class rate class struggle claver grass clavicembal damour claviculo-humeral claw balk claw bar claw clutch claw fern claw foot claw-footed claw hammer claw-hammer coat claw hand claw hatchet claw nut claw sickness claw-tailed clay agitator clay band clay-bound clay-built clay burner clay burning clay-cold clay-colored clay crusher clay digger clay-digging clay-dimmed clay drab clay drier clay-drying clay eater clay-faced clay fever clay-filtering clay-forming clay grinder clay-grinding clay iron clay-lined clay marl clay mill clay miner clay mixer clay-mixing clay modeler clay pan clay pit clay press clay pressman clay pugger clay pulverizer clay shale clay slate clay soil clay stacker clay stone clay temperer clay-tempering clayver-grass clay washer clay-washing clay works clay worsted clay-wrapped clean-appearing clean-armed clean-boled clean-bred clean-built clean-complexioned clean-cut cleaner cell cleaner-off cleaner-out cleaner tooth cleaner-up clean-faced clean-feeding clean-fingered clean-grained cleaning crop cleaning hinge cleaning shoe cleaning woman clean-legged clean-limbed clean-lived clean-living clean-looking clean-made clean-minded clean-moving clean-sailing clean-saying clean-seeming clean-shanked clean-shaped clean-shaved clean-shaven clean-skinned clean-smelling clean-souled clean-speaking clean-sweeping clean-thinking clean-timbered clean-washed clearance angle clearance fit clearance loan clearance papers clearance size clearance space clear-boled clear-complexioned clear-crested clear-cut clear-cutness clear-cutting clear-eye clear-eyed clear-faced clear-featured clear hawse clear-hawse breeches clear-hawse pendant clearing agent clearinghouse agent clearinghouse stock clearing lease clearing nut clear-minded clear-mindedness clear obscure clear-sighted clear-sightedly clear-sightedness clear-skinned clear-spirited clear-starcher clear-stemmed clear-sunned clear-throated clear-tinted clear-toned clear-up clear-visioned clear-voiced clear-walled clear-witted cleat work cleavage cavity cleavage cell cleavage crystal cleavage nucleus cleft-footed cleft-graft cleft grafting cleft weld cleido-occipital clench-built clerico-political clerk-ale Clerk register clerks regular clerk vicar clever-handed clevis bolt clew garnet clew jigger clew line clew rope click beetle click catch click-clack clickety-clack click hook click iron click pulley click wheel cliff-bound cliff brake cliff-chafed cliff dweller cliff dwelling cliff edge cliff elm cliff face cliff-girdled cliff-marked cliff path cliff rose cliff ruin cliff swallow cliff top cliff wall cliff-worn climax basket climax forest climb-down clinch-built clincher-built clincher tire clincher work clinching iron clinch joint clinch nail clinch work cling-rascal clink-clank clinker beech clinker boat clinker brick clinker-built clinker work clinkety-clink clink shell clinkum bell clintonite group clip bond clip-clop clip-edged clip hook clip-marked clipper bow clipper-built clipper ship clipper sled clipping bureau clipping time clip plate clip tongs clip-winged clip yoke clish-clash cloacae maximae cloaca maxima cloak baster cloak dealer cloak-fashion cloak fern cloak fitter cloak hanger cloak ironer cloak operator cloak pin cloak presser cloak trimming clock chart clock correction clock error clockface method clock golf clock meter clock-minded clock plant clock setter clock spring clock stamp clock star clock tower clock watch clock winder clock winding clod-brown clod crusher clod crushing clodding press clod fender clod pulverizer clod roller clod smasher clod-tongued clog almanac clog dance clog dancer clog dancing cloister garth cloister text cloister vault clop-clop close-annealed close-banded close-barred close-bitten close-bodied close-bred close-buttoned close call close-clad close-clapped close-clipped close-coifed close-compacted close-connected close-couched close-coupled close-cropped close-curled close-curtained close-cut closed-circuit closed-circuit cell closed-circuit grinding closed-circuit winding closed-coil closed-coil armature close-drawn close-eared close-fertilize close-fibered close fit close-fitting close-gleaning close-grain close-grained close-grated close harmony close-hauled close-headed close-herd close-hooded close-jointed close-kept close-knit close-latticed close-legged close line close-lipped close-lying close-meshed close-minded close-out close-packed close-partnered close-pent close-piled close-pressed close-reefed close-ribbed close-rounded close-set close-shanked close-shaven close-shut close-soled close-standing close-sticking closet drama close-tempered close-thinking close-tongued close-up close-visaged close-winded close-woven close-written closing error closing machine cloth-backed cloth baler cloth beam cloth beetler cloth binding cloth board cloth brusher cloth-calendering cloth carbonizer cloth cleaner cloth clipper cloth-covered cloth-cropping cloth cutter cloth-cutting cloth doubler cloth dresser cloth drier cloth-drying cloth-dyeing clothes beater clothes chest clothes closet clothes-drying clothes hamper clothes hanger clothes louse clothes maid clothes moth clothes peg clothes pole clothes post clothes presser clothes rack clothes screen clothes spoiling clothes stick clothes tree clothes-washing clothes wringer cloth-faced cloth finisher cloth-finishing cloth folder cloth-folding cloth fuller cloth hall clothing wool cloth-inserted cloth lapper cloth-laying cloth-lined cloth measure cloth measurer cloth-measuring cloth mercer cloth miller cloth napper cloth numberer cloth oil cloth packer cloth paper cloth piecer cloth plate cloth press cloth presser cloth printer cloth prover cloth red cloth scourer cloth shearer cloth-shearing cloth shrinker cloth-shrinking cloth slitter cloth-smoothing cloth sorter cloth-sponger cloth-spreading cloth stamper cloth-stamping cloth stitch cloth stretcher cloth tenter cloth tester cloth-testing cloth warper cloth weaver cloth-weaving cloth weigher cloth-winding cloth-yard cloud-ascending cloud band cloud bank cloud banner cloud-barred cloud belt cloud-born cloud-built cloud-capped cloud chamber cloud city cloud-compacted cloud-compeller cloud-compelling cloud-covered cloud-crammed cloud-crossed Cloud-cuckoo-land cloud-curtained cloud-dispelling cloud-dividing cloud drift cloud-drowned cloud-eclipsed cloud-enveloped cloud-flecked cloud forest cloud funnel cloud-girt cloud grass cloud gray cloud-headed cloud-hidden cloud-kissing cloud-laden cloud-led cloud-piercing cloud point cloud rack cloud ring cloud-rocked cloud-scaling cloud-shaped cloud stone cloud-surmounting cloud-surrounded cloud-topped cloud-touching cloud-woven cloud-wrapped clout nail clout-shoe clout shoot clout shot clove brown clove carnation clove cassia clove cinnamon clove currant clove gillyflower clove hitch clove hook cloven foot cloven-footed cloven-footedness cloven-hoofed clove nutmeg clove oil clove pepper clove pink clover aphid clover bloom clover blossom clover broom clover broomrape clover cent clover dodder clover fern clover grass clover hay clover hay worm clover head clover leaf clover-leaf midge clover mite clover root clover root borer clover rot clover seed clover-seed midge clover-sick clover-sickness clover stubble clover weevil clover wilt clover worm clove-strip clove tree club-armed club car club chair club cheese club compass club-ended clubfoot moss club fungus club grass club head club-headed club-high club law club link club mold club moss club-moss family club palm club rush club sandwich club-shaped club shell club skate club steak club tooth club topsail club wheat clumber spaniel clump block clump foot clump-head grass clumsy-fisted Cluny guipure Cluny lace cluster bean cluster cup cluster-cup lichen cluster-cup stage cluster fig cluster fir cluster flower cluster fly cluster pine cluster variable cluster wheat clutch shaft Clydesdale terrier C major C minor C natural coach box coach carver coach dog coach driver coach driving coach guard coach hire coach horse coach house coach painter coach road coach screw coachwhip bird coachwhip snake coadjutor bishop coal backer coal backing coal ball coal barge coal barrow coal basket coal-bearing coal-black coal blacking coal blende coal-blue coal boat coal-boring coal brass coal breaker coal-breaking coal bucket coal bunker coal-burning coal car coal cart coal cartman coal cellar coal checker coal chute coal cleaner coal contractor coal conveyer coal crusher coal cutter coal-cutting coal-dark coal depot coal digger coal discharger coal dredger coal drill coal dump coal-dumping coal dust coal-elevating coal elevator coal-eyed coal-faced coal field coal-fired coal flap coal fleet coal gas coal goose coal grinder coal-handling coal hauler coal hawker coal heaver coal hewer coal hod coal hoist coaling station coal kiln coal labeler coal-laden coal leveler coal-leveling co-allied coal loader coal-loading coal lumper co-ally coal measures coal-meter coal mine coal miner coal mining coal oil coal operator coal passer coal picker coal-picking coal pipe coal plant coal pocket coal producer coal-producing coal pulverizer coal-pulverizing coal refiner coal scoop coal screen coal screener coal scuttle coal shaker coal ship coal shovel coal shoveler coal sieve coal-sifting coal sorter coal spreader coal sprinkler coal stacker coal storage coal tallyman coal tar coal-tar crude coal-tester coal tipper coal tipple coal tit coal tongs coal trimmer coal truck coal unloader coal wagon coal washer coal washery coal weigher coal wharf coal wharfinger coal-whipper coal-whipping coal workings coal works coarse-featured coarse-fibered coarse-grained coarse-grainedness coarse-haired coarse-handed coarse-lipped coarse-minded coarse-skinned coarse-spoken coarse-spun coarse-tongued coarse-toothed coarse-wrought coast artillery coast belt coaster brake coast fever coast-fishing coast grass coast guard coasting lead coast jointweed coast lily coast live oak coast nutmeg coast patrol coast pilot coast rat coast redwood Coast salish coast station coast trade coat armor coat arms coat card coat flower coat hanger coating paper coat money coat shirt cobalt bloom cobalt blue cobalt bronze cobalt chloride cobalt crust cobalt glance cobalt glass cobalt green cobalt red cobalt sulphate cobalt ultramarine cobalt violet cobalt vitriol cobalt yellow cobble coal cobble gravel cobble rammer cob cactus cob coal cob meal cob money cobra-hooded cobra plant cob swan cob wall cobweb bird cobweb houseleek cobweb micrometer cocaine family cocaine plant cocculus indicus coccygeo-anal coccygeo-mesenteric cochil sapota Cochin china ulcer cochineal cactus cochineal fig cochineal insect Cochin ginger cochin oil cochit zapotl cochleariform process cochylis moth cock-a-doodle cock-a-doodle-doo cock-a-hoop cock-a-hooping cock-a-hoopish cock-a-hoopness cock ale cockatoo bush cockatoo farmer cockatoo fence cockatoo fish cockatoo grass cockatoo orchis cockatoo parakeet cock bead cock-brained cock bread cock broth cocker spaniel cocket center cockeye pilot cock feather cock-feathered cock-feathering cocking cart cock-laird cockle-bread cockle button cockle garden cockle hat cockle-headed cockle oast cockle stairs cockle stove cockle strewer cockle wheat Cock lorel cock metal cock penny cock robin cock schnapper cockscomb grass cock sorrel cock sparrow cock-sparrowish cockspur flower cockspur grass cockspur hawthorn cockspur rye cockspur thorn cockspur vine cock-stride cock-tailed cocktail sauce cocktail shaker cock-throppled cockyolly bird co-clause cocoa beans cocoa brown cocoa butter cocoa plant cocoa presser cocoa red cocoa sedge cocoa tea coco grass coconut beetle coconut brown coconut bud rot coconut cake coconut crab coconut jelly coconut meal coconut mealy bug coconut milk coconut oil coconut palm coconut-palm rot coconut shy coconut walk coconut water coco palm coco plum coco sedge coda mark coddy-moddy code duello cod end code pennant code state codfish aristocracy cod line codling moth cod liver cod-liver meal cod-liver oil cod net cod oil cod-smack coercive force coffee bar coffee bean coffee berry coffee-blending coffee blight coffee borer coffee bread coffee break coffee-brown coffee cherry coffee-cleaning coffee-color coffee-colored coffee corn coffee cream coffee cup coffee disease coffee-faced coffee fern coffee-grading coffee grinder coffee-grinding coffee-imbibing coffee-making coffee mill coffee nib coffee nut coffee pea coffee plant coffee planter coffee-planting coffee-polishing coffee roaster coffee-roasting coffee-scented coffee senna coffee shell coffee stall coffee strainer coffee tree coffee wit cofferdam bulkhead coff-fronted coffin boat coffin bone coffin carrier coffin-fashioned coffin finisher coffin handle coffin-headed coffin joint coffin-joint lameness coffin nail coffin plate coffin-shaped coffin spark coffin text coffin trimmer cogging mill cognac oil cogwheel respiration Co-hong cohune fat cohune nut cohune oil coil bobbin coil box coiler can coiler plate coil-filling coil former coil pottery coil-testing coil-winding coinage ratio coin assorter coin bag coin box coin case coin changer coin check coin collector coin-controlled coin counter coin-counting coin envelope coin fancier coin gold coin guard coin holder coining press coining punch coin lock coin-made coin-operated coin-operating coin planchet coin pouch coin ringer coin sack coin-separating coin-shaped coin shell coin silver coin slot coin sorter coin stamper coinsurance clause coin tester coin tray coin-weighing coin weight coin wrapper coke breeze coke dust coke iron coke oven coke plate coker-sack coke tin coke tower cola seed colatitude circle colcannon night colchicum root cold abcess cold blast cold-blooded cold-bloodedly cold-bloodedness cold-braving cold-catching cold-chisel cold-complexioned cold-cream cold-draw cold-drawing cold-drawn cold-engendered cold-faced cold-flow cold-forge cold-hammer cold-hammered cold-head cold-meat fork cold-natured cold-nipped cold-pack method cold-patch cold-pated cold-press cold-producing cold-roll cold-rolled cold-saw cold-short cold-shortness cold-shoulder cold-shut cold-slain cold-spirited cold-storage cold-store cold straightener cold-swage cold-sweat cold-taking cold-water glue cold-water paint cold-wave flag cold-white cold-work colen-bell cole titmouse colewort green co-life coliseum ivy collapse ring collapsing tap collar bag collar beam collar bearing collar blight collar bolt collar-bound collar box collar button collar buttoner collar case collar cell collar cutter collar-cutting collar day collar disease collar edger collar fastener collar finisher collar fungus collar gauge collar girdle collar iron collar ironer collar machinist collar maker collar making collar nut collar pad collar polisher collar rot collar shaper collar-shaping collar starcher collar stitcher collar stud collar tie collar-to-collar collar-wearing collar work collating mark collecting battalion collecting hair collector ring colleen deas colleen donn college-bred college cap college church college ice college man college pheasant college pudding college widow college year Collery horn Collery stick collet chuck colliery manager collimating eyepiece collimating lens collimation axis collimation error collimation line collimation plane collision bulkhead collision clause collision insurance collision-proof collodion cotton collodion process colloid carcinoma colloid chemistry cologne plant colon bacillus Colonel bogey colonel commandant colonel-commandantship Colonel fuller colonel general colorado loco vetch color analysis color analyzer color balance color-ball pool color bar color base color-bearer color blender color-blind color blindness color blocker color blower color box color brush color camera color card color cell color changeling color chart color chest color cinematography color circle color company color cone color constant color contrast color cycle color designer color diagram color dimension color doctor color dominance color dryer color drying color dry sifter color dyer color emissivity color etcher color-fading color filter color-free color gamut color grinder color-grinding color guard color hearing color index coloring tool color intensity color line color matcher color-matching color measurement color mill color miller color mixer color mixture color-mixture curve color music color musician color organ color party color phase color photography color point color print color printing color quality color ratio color salute color scale color scheme color screen color sense color-sensitize color sentinel color separation color sergeant color slab color solid color spectrum color spreader color striker color target color temperature color-testing color tone color top color tree color vision color wash color-washed color weakness color wheel color zone Colour index colpach heifer colt ale colt distemper colt evil colt-herb Colt revolver coltsfoot snakeroot Columbatz fly Columbia formation Columbia lava plateau columbine blue columbium pentoxide columbo wood Columbus day columella auris columella cranii Columna bellica columna rostrata columnar structure column bone column formula column inch column lathe column rule column shaper column still colza oil Coma berenices Coma berenicid coma vigil combat group combat intelligence combat post combat practice combat service combat train combat unit combat zone comb-back comb bearer comb-broach comb-brush comb-building comb case comb disease comb duck Combe-capelle comber board comb fern comb-footed comb foundation comb-fringed grass comb grain comb-grained comb holder comb honey combination analysis combination button combination car combination center drill combination chuck combination crossing combination fuse combination jig combination last combination lathe combination lock combination longwall combination note combination pedal combination piston combination plane combination plate combination plow combination rate combination room combination rubber combination shot combination square combination tone combing hair combing machine combining weight comb jelly comb marbling comb-out comb pot comb pottery comb rat comb-shaped comb speedwell comb-toothed shark combustion cell combustion chamber combustion engine combustion engineer combustion engineering combustion furnace combustion lag combustion method combustion motor combustion spoon combustion train combustion tube combust way comb ware comb wheat grass come-all-ye come-along come-at-ability come-at-able come-at-ableness come-between comedy ballet comedy drama come-hither come-hithery comely-featured come-off come-on come-out come-outer comet aster comet finder comet seeker comfort station comic-iambic comic strip comic supplement coming in coming-on coming out Comitia centuriata Comitia curiata Comitia tributa comma bacillus comma blunder command post comma splice commelina blue commendation ninepence commerce destroyer commerce raider commerce raiding commercial engineer commercial engineering commissary court commissary general commission day commissioner-general commission-manager plan commission merchant commission officer commission plan committee stage commode step commodity dollar commodity money commodity paper common-law common-law estoppel common-law lien common-law marriage common-law trust commonplace book common reed communication room communications zone communication trench community center community chest community church community house community supervision community trust commutating pole commutation ticket commutative algebra commutative contract commutator filling commutator pitch commutator shell commutator subgroup Como formation companion cell companion crop companion cropping companion flange companion hatch companion hatchway companion ladder company man company reserve line company store company union comparison lamp comparison slip comparison spectrum comparison star compass bearing compass board compass bowl compass brick compass calipers compass card compass corrector compass dial compass error compass flower compass-headed compass key compass plane compass plant compass rafter compass roof compass rose compass saw compass weed compensation act compensation balance compensation bar compensation insurance compensation law compensation pendulum compensation water complement-binding complement deviation complement-fixing completion test composed throughout composing rule composing stick composite arch composite balance composition carver composition cloth composition face composition factor composition formula composition metal composition pedal composition piston composition roofing composition series compos mentis compost heap compound-wound compressed-air drill compression bib compression coupling compression cup compression member compression ratio compression spring compression stroke compression tap compromise formation compromise joint compulsion neurosis computing machine computing scale Comstock lode concatenation control concatenation system concavo-concave concavo-convex concentration ring concert band concert border concert etude concert grand concert overture conch hat concho grass conch shell conciliation court Concord buggy concrete block concrete layer concrete mixer concrete paint concussion bellows concussion fuse condensation point condenser antenna condenser microphone condensing engine condensing hygrometer condensing lens condictio triticaria conduction current conduct money conductor head conductor plug conductor rail conduit box conduit pipe conduit railway conduit system cone adaptation cone anchor cone bearing cone-billed cone bit cone brake cone center cone chuck cone clutch cone compass cone coupling cone delta cone friction clutch cone gamba cone-headed conehead rivet conehead toggle cone joint cone key cone lathe cone mandrel Conemaugh formation cone number cone pepper cone plate cone pulley cone-shaped cone shaver cone shell cone speaker Conestoga wagon cone tree cone valve cone wheat cone wheel coney parsley confectionery decorator conference room confession equality confidence game confidence man conform map projection conform representation congee house conger doust conger eel conglobate gland Congo brown Congo dye congress boot congruence sign conical-shaped conico-cylindrical conico-elongate conico-hemispherical conico-ovate conico-ovoid conico-subhemispherical conico-subulate coniferyl alcohol conjugation canal conjugation cell conjugato-palmate conjugato-pinnate conjure man con man connate-perfoliate connection angle connection bar conning tower conoido-hemispherical conoido-rotundate conscience clause conscience-proof conscience-smitten conscience-stricken conscience-striken consent decree consent rule consignment marketing Consistory court consolation game consolation match console table consonant shifting Constitution state construct form construction bond construction engineer construction engineering construct state consulate general consul general consumer credit consumption goods consumption weed contact action contact agent contact flight contact flying contact lens contact maker contact making contactor switch container car contango day content subject continent-wide contingency method continuation day continuation school continuity writer contour check contour curve contra-acting contra-approach contra bassoon contract bond contract bridge contractile cell contraction fit contraction rule contraction theory contract quasi contra-ion contrary-minded contrary motion contrary terms contra trombone contribution clause control account control assay controller general conval lily convection current convent cloth Conventicle acts Convention parliament convergence frequency convergency factor conversation piece converse motion conversion cost convex-concave convexo-concave convexo-convex convexo-plane convex point set convex polygon convict goods convolvulus moth convulsion root cony-catch co-obligant co-oblige co-obligor co-occupant co-occupy coochin york coo-coo cooee bird cook-general cook wrasse cooky cutter coom-ceiled co-omnipotent co-omniscient coon bear coon cat co-op cooped-in co-operable co-operancy co-operant co-operate co-operation co-operationist co-operative co-operatively co-operativeness co-operator co-operculum co-opt co-optate co-optation co-optative co-option co-optive co-ordain co-ordainer co-order co-ordinacy co-ordinal co-ordinance co-ordinancy co-ordinate co-ordinately co-ordinateness co-ordination co-ordination formula co-ordination number co-ordinative co-ordinator co-ordinatory co-organize co-origin co-original co-originality co-orthogonal co-ossification co-ossify cooter grass coot-footed co-owner co-ownership copaiba balsam copaiva oil copaiye wood copal ether cope chisel cope cutter copen blue coping stone copper acetate copper-alloyed copperas black copper barilla copper-bearing copper-bellied copper-belly copper bender copper-bottomed copper brazer copper caster copper-coated copper-colored copper-covered copper engraver copper extractor copper-faced copper-fastened copper foil copper-headed copper-lined copper-melting copper mill copper millman copper mine copper miner copper mining copperplate press copper refiner copper refinery copper-skinned copper smelter copper-smelting copper-toed copper worker coppery-tailed coppice-feathered coppice oak coppice shoot coppice-topped copple-crowned copra oil copse-clad copse-covered copse cutter copy desk copy editor copy paper coquille lens coral bead coral-beaded coral-bead tree coral bean coral-bound coral-built coral-buttoned coral fern coral-fishing coral-girt coral grinder coral island Coralline zone coral-making coral-producing coral-red coral-rooted coral-secreting coral snake cor arteriosum corbel table corbel vault corbie gable corbin bone Cor caroli cordage tree cordate-amplexicaul cordate-lanceolate cordate-oblong cordate-sagittate cord conductor cord connector cord-connector body cordeau detonant cordeau fuse cord grass corduroy road core-baking core bar core binder core boring core builder core-cutting core-drying core flour core-jarring core sand core tester core vent core wire Cor hydrae coriander oil cork-barked cork-bark elm cork-bearing cork borer cork-boring cork cutter cork-cutting cork-forming cork-grinding cork-heeled cork jacket cork-lined cork puller corkscrew flower corkscrew grass cork shredder cork sorter corkwood cotton corky-headed corky-winged Cor leonis corn-beads corn cleaner corncob pipe corn color corn-colored Corncracker state corn-devouring corn drier cornea lens corn-ear worm corn-eater cornelian cherry corner bead corner block corner man cornet-a-pistons corn-exporting corn-fed corn-feeding cornfield pea cornflower blue corn fritter corn grass corn grinder corn-growing corn huller cornice brake corno flute corn picker corn-planting corn-producing corn shock corn shocker corn shredder corn snake corn stack cornstalk disease cornstalk pine corn stubble corn tester corn thresher cornu ammonis corolla limb coromandel wood Corona borealis corona discharge coronal roots coronation oath corozo nut Corporation act corps area corpse candle corpse gate Corpus christi corpus delicti Corpus domini correction line correlation coefficient correspondence school corrosion borders corrugation irrigation Cor scorpii Cor serpentis corset cover corset designer cor sinistrum Cor tauri cortex parenchyma corydalis green Corypha palm cosine circle cosmico-natural cossack green Cossack post cost accountant costal-nerved Costa rican cost-free cost keeping cost ledger cost plus costume designer costus oil cotarnine hydrochloride cot bar cote-hardie Cotinga purple cottage bonnet cottage cheese cottage industry cotta grass cotter drill cotter file cotter mill cotter pin cottier system cotton anthracnose cotton aphid cotton back cotton-backed cotton bagging cotton-baling cotton baller cotton batting cotton bill cotton-bleaching cotton boll cotton bollworm cotton broker cotton buyer cotton cake cotton candy cotton chiffon cotton chopper cotton-clad cotton cleaner cotton comber cotton-covered cotton coverer cotton crepe cotton cutter cotton damask cotton dryer cotton duck cotton-dyeing cotton dyer cotton factor cotton factory cotton feeder cotton fern cotton field cotton filler cotton floater cotton gin cotton ginner cotton-ginning cotton grass cotton grower cotton-growing cotton gum cotton harvester cotton jenny cotton-knitting cotton lint cotton linters cotton mill cotton mixer cotton moth cotton mouse cotton mule cotton netting cotton oil cotton opener cotton packer cotton picker cotton-picking cotton plant cotton planter cotton-planting cotton plugger cotton plush cotton pongee cotton powder cotton preparer cotton press cotton print cotton printer cotton-printing cotton-producing cotton raiser cotton rat cotton rock cotton-root bark cotton root rot cotton rose cotton rush cotton rust cotton sampler cotton-sampling cotton seed cottonseed cake cottonseed feed cottonseed meal cottonseed oil cottonseed tree cotton shipper cotton-sick cotton sled cotton sorter cotton speeder cotton spinner cotton-spinning cotton spooler cotton stainer cotton stripper cotton sugar cotton sweep cotton tapestry cotton teal cotton teaser cotton thistle cotton thread cotton tree cotton twist cotton twister cotton wadding cotton warehouseman cotton warp cotton-weaving cotton weigher cotton wick cotton-wicked cotton wicking cotton wilt cotton winder cotton works cotton worm cotton yarn couch bed couch grass couching stitch couch wheat cough drop cough sirup coulee cricket coulomb meter coumarone resin council bill council board council fire council table council tool counsel-keeper count book counter borer counter-off counter relief counterscarp gallery counter septum countertenor clef counter timber count hook counting glass counting machine counting-out rhyme counting room counting scales count number count palatine count plate country almond country bank country bishop country borage country-born country-bred country club country cousin country damage country-dance country day school country-fashion country fig country gentleman country gooseberry country hide country house country jake country licorice country-made country mallow country party country peach country pepper country rock country store country-style country walnut country-wide count wheel county agent county attorney county borough county constabulary county council county court county fair county farm county library county mutual county palatine county rate county road county seat county town county-wide coup-cart coup feather couple-close coupler socket coupling box coupling coefficient coupling pin coupling rein coupling rod coupling strap coupon bond courbaril copal courge green coursing joint court-baron court bond court bouillon court card court cupboard court dance court day court dress courtesy light courtesy title court fool court gray court guide court hand courting chair courting glass court-leet court-martial court-noue court party court plaster court roll courtship-and-matrimony court shoe court tennis co-use cousin-german cousin-in-law Covenant-israel Covent garden Covent garden theatre cove oyster cover charge cover crop cover design cover glass cover memory cover paper cover plate cover-point cover-shame cover slip cover stone covert-baron covert cloth cover title covin-tree co-walker cow ant cow barn cow basil cow bean cow beet cowboy boot cowboy pool cow bunting cow byre cow chervil cow chips cow clover cow cocky cow corn cow creamer cow cress cow-eyed cow-fat cow garlic cow-goddess cow grass cowhage cherry cow-headed cow-hitch cow hock cow-hocked co-widow co-wife co-winner cow killer cow-lice cow lily cowl lamp cowl-shaped cow-mumble cow-nosed cow oak co-work co-worker co-worship cow parsley cow parsnip cowpea weevil cowpea wilt cow pilot cow plant cow poison cow pony cow rattle cowry bird cow shark cow sorrel cow-stealing cow testing cow thistle cow tree cow vetch coy duck coyote blast coyote weed C power supply crab apple crabbing machine crab cactus crab claw crabeater seal crab-eating crab-faced crab float crab grass crab harrow crab locomotive crab louse crab meat Crab nebula crab nut crab oil crab plover crab pot crab reel locomotive crab-shed crab spider crab stock crab thistle crab tree crab winch cracker bonbon cracker mill cracker-off cracker-open cracking still crackling bread crack-loo crack-the-whip crack-up crack willow cradle bar cradle book cradle cannon cradle holding cradle orchid cradle roll cradle roof cradle scythe cradle-shaped cradle snatcher cradle snatching cradle vault craft guild craft paper craft union craft unionist crag-bound crag-built crag-carven crag-covered crag-fast crag martin crag swallow crake-needles cram-full cramp bark cramp bone cramp iron cramp ring cranberry blast cranberry bog cranberry bush cranberry gall cranberry gourd cranberry marsh cranberry scald cranberry tree cranberry worm crance iron crane driver crane fly crane gray crane line cranio-acromial cranio-aural cranium amulet crank arm crank axle crank brace crank chain crank-driven crank hanger crank path crank pit crank plane crank press crank shaper crank-sided crank throw crank web crank wheel crapaud stone crape fern crape myrtle crape needle crape ring crap game crap grass crappit head crap shooting crap table crash cymbal crash dive crash-land crash program cratch cradle crater basin craw-craw crawl-a-bottom crawler tractor crawl-up crayon board crazed-headed crazy bone crazy-drunk crazy-headed crazy-looking crazy-mad crazy-pate cream beige cream buff cream buyer cream caustic cream cheese cream-color cream-colored cream cooler cream dipper cream-faced cream-flowered cream freezer cream gatherer cream gauge cream ladle cream nut cream pitcher cream puff cream sauce cream separator cream-slice cream soup cream-soup cup cream-soup spoon cream stirrer cream tester cream tube cream whip cream whipper cream-white cream-yellow Creation epic creature comfort credence shelf credence table credentials committee credenza bookcase credenza buffet credit currency credit instrument credit insurance credit line credit man credit money credit slip credit union Credo play creek broadbill creek chub creek duck creek fern creek grass creek gum creek maple creek nettle creek sedge creek thatch creeper tractor creeping sheet creeping sickness Cree potato crenate-leaved crenate-toothed creole dialect creosote bush creosote carbonate creosote oil crepe-backed crepe lisse crepe meteor crepe paper crepe rubber crepe suzette crescendo pedal crescent-formed crescent-lit crescent-pointed crescent-shaped crescent spot cresol iodide cresol red cress family cress green cress rocket crest coronet crested hair grass crest factor crest table crest tile crest voltmeter Creto-mycenaean crew-cropped crew cut crewel needle crewel stitch crew haircut crew list crew neck crew-necked crew neckline cribbage board crib-bite crib-biter crib biting crib strap cricket-bat willow cricket bird cricket frog cricket teal crime wave criminal anthropology criminal conversation criminal law crimping brake crimping house crimping iron crimping pin crimpy-haired crimson-banded crimson-barred crimson-billed crimson-carmine crimson-colored crimson-dyed crimson-fronted crimson-lined crimson-petaled crimson-purple crimson-scarfed crimson-spotted crimson-tipped crimson-veined crimson-violet Crim tatar cringle-crangle crinkle-crankle crinkly-haired crinkum-crankum cripple stopper crisped-leaved crisping iron crisping pin crisp-leaved crissal thrasher crisscross inheritance critico-analytically critico-historical critico-poetical critico-theological croaking sac Croatan indian crochet file crockery cement crocodile bird crocodile shears crocodile squeezer crocodile tears crocus antimonii crocus bag crocus cloth crocus metallorum crocus sack Cro-magnon Cro-magnon race Crommyonian sow crooked-backed crooked-billed crooked-branched crooked-clawed crooked-eyed crooked-foot crooked-legged crooked-limbed crooked-lined crooked-lipped crooked-nosed crooked-pated crooked-shouldered crooked-stemmed crooked-toothed crooked-winged crooked-wood crook rafter croon song crop-bound crop drier crop-ear crop-eared crop-farming crop-full crop grass crop-haired crop-headed crop hide crop index crop-nosed crop pasture crop-producing crop rotation crop seed crop-shaped crop-tailed cross action cross-adoring cross agglutination cross aisle cross-appeal cross-armed cross axle cross-banded cross-banding crossbar micrometer crossbar shot cross-bearer cross-bearing cross bearings cross-bedded cross-bedding cross-bench cross-benched cross-benchedness cross-bencher cross-bias cross-biased cross-biassed cross-bind cross birth cross bit cross bitt cross bond cross brace cross bracing cross break cross-bridge cross bridging cross-brush cross buck cross bun cross-buttock cross-buttocker cross-carve cross-channel cross-check cross-church cross-claim cross complaint cross-compound cross-connect cross correspondence cross counter cross-country cross-cousin cross-crosslet cross-curve crosscut chisel crosscut file crosscut method crosscut saw crosscut-saw file cross cylinder cross-datable cross-date cross-drain cross drawing cross-dye cross-dyeing crosse check crossed-out cross education cross-elbowed cross estoile cross-examine cross-examiner cross-eye cross-eyed cross-eyedness cross-face cross facet cross fault cross-feed cross-fertile cross-fertilizable cross-fertilization cross-fertilize cross-fiber cross field cross file cross-finger cross-fingered cross fire cross-fissured cross flute cross flux cross-folded cross forked cross-fur cross-gagged cross-garnet cross grain cross-grained cross-grainedly cross-grainedness cross guard cross hair cross-handed cross-handled cross-hatcher cross-hatching cross-headed cross heading cross hilt cross-hilted cross-immunity cross-immunization cross index crossing file crossing sweeper cross-interrogate cross-interrogatory cross-invite cross-jack yard cross-joined cross-jostle cross keelson cross keys cross kick cross-laced cross-laminated cross-latticed cross-leaved cross-legged cross-leggedly cross-leggedness cross-level cross liability cross-license cross-lift cross lock cross-locking cross lode cross-lots cross-lot strut cross-magnetizing field cross-marked cross-mate cross mint cross modulation cross multiplication cross order cross-out cross-out test cross-pawl cross-peal cross peen cross-piled cross-plow cross-pollenize cross-pollinate cross-pollination cross potent cross product cross-purpose cross-question cross-questionable cross-ratio cross-ratio group cross-reaction cross-refer cross reference cross relation cross remainder cross rhythm cross sea cross seat cross section cross-sectional cross-section paper cross-shaped cross sighting cross signal cross slide cross-spale cross-spall cross spider cross springer cross-staff cross-star cross-sterile cross-sterility cross-stitch cross-stitch canvas cross-stone cross strap cross-stratification cross-stratified cross street cross-striated cross-striped cross stroke cross-sue cross-surge cross tag cross-tine cross-town cross turret cross vault cross-vaulted cross-vaulting cross vein cross-veined cross vine cross-voting cross whitefish cross-wind force cross wire cross-worder crossword puzzle cross-wrapped crotch chain crotch tongue croton-chloral hydrate croton oil crouch ware croup kettle crowberry family crow blackbird crow call crow corn crowd grass crowding engine crow duck crow fig crow flight crowfoot family crowfoot grama crowfoot grass crowfoot violet crow garlic crow ling crown aloes crown animalcule crown antler crown bar crown block crown brace crown canker crown canopy crown cap crown-capping machine crown class crown colony crown cork crown daisy crown debt crown density crow needle crown escapement crown filler crown fire crown gall crown gate crown gear crown glass crown gold crown grafting crown gum crown head crown imperial crown knot crown land crown law crown lawyer crown leather crown lens crown living crown monkey crown octavo crown office crown palm crown paper crown piece crown pigeon crown plate crown post crown prince crown princess crown prosecutor crown pulley crown roast crown rot crown-rump length crown rust crown saw crown scab crown-shaped crown sheet crown shell crown side crown sparrow crown system crown tax crown tile crown vent crown vetch crown wart crown wheel crown-wheel escapement crownwort family crow onion crow pea crow pheasant crow poison crow-quill crow sheaf crow shrike crow-silk crow-soap crow tit crow-tread crow-victuals crucible furnace crucible steel crucifixion thorn cruet stand cruiser stern cruiser weight cruising radius crumb brush crupper bone crush breccia crush conglomerate crusher sand crush hat crushing rolls crush plane crush zone crust fold crust fracture crust-hunt crust-hunter crust-hunting crust roan crutch-cross Crutched friar crutch paralysis crutch stake cryolite glass Crypto-calvinism Crypto-calvinist Crypto-calvinistic Crypto-catholic Crypto-catholicism Crypto-christian Crypto-fenian Crypto-jesuit Crypto-jew Crypto-jewish Crypto-protestant Crypto-royalist Crypto-socinian crystal carbonate crystal-clear crystal detector crystal-dropping crystal flower crystal-flowing crystal form crystal-gazer crystal gazing crystal-girded crystal glass crystal gray crystal-leaved crystal malt Crystal palace crystal-palace blue crystal-palace green crystal-producing crystal rectifier crystal sand crystal set crystal-smooth crystal-streaming crystal tea crystal vinegar crystal violet crystal vision crystal water crystal-winged C-shaped C-sharp C-sharp minor C spring C-star C three cub-drawn cubeb camphor cubeb oil cube ore cube root cube-shaped cube spar cube sugar cubit arm cubo-octahedral cubo-octahedron cub reporter cub shark cucking stool cuckold dock cuckoo-babies cuckoo bee cuckoo-bread cuckoo-bud cuckoo-button cuckoo clock cuckoo clover cuckoo dove cuckoo falcon cuckoo fly cuckoo-fool cuckoo froth cuckoo gillyflower cuckoo grass cuckoo hawk cuckoo lamb cuckoo-meat cuckoo orchis cuckoo owl cuckoo ray cuckoo shoe cuckoo shrike cuckoo sorrel cuckoo spit cuckoo wasp cuckoo wrasse cucumber beetle cucumber family cucumber fish cucumber flea beetle cucumber fly cucumber melon cucumber mildew cucumber mosaic cucumber root cucumber scab cucumber tree cucurbit mosaic cucurbit wilt cud-chewing cuddy heel cudgel play cudweed mugwort Cuenca bark cue owl cuff ironer cuff link culilawan bark cull board culm dump culm measures cultivator shield cult-title cultural-nomadic culture area culture center culture complex culture contact culture drift culture epoch culture flask culture fluid culture hero culture medium culture mixing culture myth culture organism culture pattern culture pearl culture phenomenon culture plate culture sequence culture stage culture system culture trait culture word cultus cod cultus image cumin oil cummin oil cumu-cirro-stratus cumular-spherulite cumulo-cirro-stratus cumulo-cirrus cumulo-nimbus cumulo-stratus cumulo-volcano cumulus oophorus cuneate lobe cup barometer cup bell cupboard love cupboard lover cup coral cup custard cup drill cup escutcheon cup fern cup fungus cup grease cup-headed cup hole cup hook cupid cake cup joint cup leather cup lichen cup-mark cup-marked cup marker cup moss cup mushroom cup nutseed cupola builder cupola-capped cupola charger cupola feeder cupola fettler cupola furnace cupola liner cupola potman cupola rammer cupola-roofed cupola smelter cupola tapper cupola tenter cup packing leather cupping glass cup plant cuprammonium rayon cuprea bark cup sculpture cup set cup shake cup-shaped cup sponge cup tie cup-tossing cup valve cup washer curb bit curb box curb broker curb key curb market curb pin curb roof curb sender curb-sending curcas oil curcuma paper curcuma starch curd soap cure-all curl cloud curled-leaved curlew bug curlew jack curlew sandpiper curl-flowered curling die curling dies curling iron curling machine curling paper curling press curling punch curly-coated curly-haired curly-headed curly-locked curly-pate curly-pated curly-polled curly-toed currant aphid currant borer currant bush currant clearwing currant fruit fly currant-leaf currant leaf spot currant moth currant red currant rust currant sawfly currant spanworm currant stem girdler currant tomato currant tree currant worm currency bond currency doctrine currency note current breaker current density current electricity current gauge current intensity current limiter current-limiting reactor current mark current meter current mill current pulse current relay current tap current transformer current wheel currycomb file curry-leaf tree curry powder cursing stone cursing well curtain angle curtain call curtain dam curtain dryer curtain drying curtain fire curtain folder curtain frame curtain framer curtain hook curtain knitter curtain lecture curtain lifter curtain light curtain line curtain net curtain pin curtain pole curtain raiser curtain ring curtain rod curtain roller curtain speech curtain stretcher curtain tune curtain wall curtesy initiate Curt-hose curtle ax curvature invariant curvature tensor curve-billed curved-fruited curved-horned curve-drawing meter curved-veined curve fitting curve-fruited curve-veined cusco bark cusco china cuscus oil cush-cush cushion aloe cushion block cushion capital cushion carom cushion dance cushion felt cushion filler cushion fillings cushion-footed cushion head cushion iris cushion maker cushion pink cushion plant cushion rafter cushion scale cushion-shaped cushion shot cushion sole cushion spurge cushion star cushion stitch cushion tire cushion-tired cusk eel cusparia bark cuspidate tooth cusp locus cusp-shaped cuss word custard apple custard cup custard-cups custom builder custom-built custom-cut customer agent customer ownership custom hatching custom-made custom mill customs bond customs-exempt customs-house custom tailor custom-tailored custom work custom worker cutaway coat cut-down cut-finger cut-flight conveyer cut-grass cuticula dentis cutlass fish cut-leaf cut-leaved cutlery buffer cutoff drainage cutoff saw cutoff valve cutout switch cut-paper cut price cut-rate cutter arbor cutter bar cutter block cutter brig cutter-built cutter-down cutter gig cutter-off cutter-out cutter rig cutter-rigged cutter sloop cutter-up cutter yacht cutthroat grass cut-through cut time cutting almond cutting angle cutting blowpipe cutting board cutting compound cutting die cutting drift cutting lubricant cutting-off tool cutting oil cutting press cutting punch cutting rule cutting sand cutting shoe cutting stage cutting torch cut-toothed cut-under cut up cutwater bow C washer cyanamide process cyan blue cyanide mill cyanide process cyani flower cyanine blue cyanogen bromide cyanogen chloride cycad fern cycas family cyclamen mite cycle form cyclone cellar cyclone center cyclone collector cyclone juice cyclone-proof cyclone separator cylinder block cylinder bore cylinder-bored cylinder-boring cylinder-dried cylinder escapement cylinder front cylinder gate cylinder glass cylinder grinder cylinder-grinding cylinder head cylinder machine cylinder metal cylinder mill cylinder oil cylinder planer cylinder press cylinder pressman cylinder reamer cylinder saw cylinder scale cylinder-shaped cylinder sinker cylinder slasher cylinder snake cylinder splitter cylindric-campanulate cylindric-fusiform cylindric-oblong cylindric-ovoid cylindric-subulate cypress grass cypress green cypress knee cypress koromiko cypress lawn cypress-leaf oil cypress moss cypress oil cypress pine cypress spurge cypress thatch cypress vine Cypro-phoenician cyprus cat Cyprus earth cyrilla family daber locks Dacca banana Dachstein limestone daddy longlegs daddynut tree dado head dado plane dado rail daffodil garlic daffodil lily daffodil yellow daft days Dagger ale dagger board dagger cocklebur dagger fern dagger knee dagger money dagger moth dagger plank dagger plant dagger-shaped dagger wood daghesh forte daghesh lene dag-tailed Dahlgren gun dahlia carmine dahlia purple dahlia sugar dahlia sunflower dahlia wartlet dahoon holly Dail eireann Dai nichi dainty-eared dainty-fingered dainty-limbed dainty-mouthed dainty-tongued dainty-toothed dairy barn dairy butter dairy cattle dairy cheese dairy cooler dairy-cooling dairy country dairy farm dairy farmer dairy farming dairy-fed dairy house dairy husbandry dairy lunch dairy-made dairy milk dairy product dairy salt dairy school Dairy shorthorn dairy society dairy truck dairy wagon daisy-blossomed daisy chain daisy cutter daisy-cutting daisy-dappled daisy-dimpled daisy fleabane daisy-painted daisy-spangled daisy tree dak boat dak bungalow daker hen Dalai lama dale-backed dale end dale head dale land dale lander Dallis grass damage feasant Damascus steel Damascus ware damask carpet damask rose dame school dammar pine damp course damper action damper block damper crank damper head damper pedal damper rail damper spoon damper stop damper valve damper winding damping constant damping factor damping machine damping-off damp sap damp-stained damp-worn damsel-errant damsel fly damson pie damson plum dance band dance drama dance favor dance floor dance fly dance form dance hall dance house dance leader dance-loving dance music dance palace dance pantomime dance program dance rhythm dance society dance song dance step dance tune dancing assembly Dancing chancellor dancing dervish dancing disease dancing floor dancing-girls dancing hall dancing lesson dancing mania dancing master dancing match dancing mistress dancing partner dancing party dancing room dancing school dancing step dandelion digger dandelion-leaved dandelion puller Dandie dinmont terrier dandy brush dandy cart dandy-cock dandy-hen danger angle danger ball danger bearing danger-fearing danger flag danger-fraught danger-free danger instinct danger line danger-loving danger point danger signal danger-teaching danger whistle danger zone Dano-eskimo Dano-norwegian Dan tucker daoine sithe dap-dap daphne pink daphne red dap joint dapple-gray dare-base dark adaptation dark-adapted dark-bearded dark-blue dark-bosomed dark-boughed dark-breasted dark-browed dark-closed dark-colored dark-complexioned dark-embrowned dark-eyed dark-featured dark-field dark-fired dark-flowing dark-fringed dark-glancing dark-gray dark-green dark-grown dark-haired dark-hued dark-hulled dark-leaved dark-line spectrum darkling beetle dark-minded dark-orange dark-prisoned dark-red dark-rolling dark-shining dark-sighted dark-skinned dark-splendid dark-stemmed dark-suited dark-veiled dark-veined dark-visaged dark-working Darling lily Darling pea Darling plum darning ball darning cotton darning egg darning gourd darning needle darning silk darning stitch darning work darning worsted daroo tree darrein presentment darrein resort Darsham fern dart grass Dartmouth college case dart snake dart thrower dartwaza band dasher block dash lamp dash light date-bearing date brandy date coffee date fever date fig date grove date line date palm date plum date shell date stamp date-stamping date sugar date tree date wine dating nail datum line datum plane datum point Daun stage Davy lamp dawn dew dawn goddess dawn-illumined Dawn man dawn-tinted day-and-night day-appearing day bed day bell day blindness day breeze day-bright day-clear day clock day clothes day coach day-day day degree day-detesting day-devouring day-dispensing day-distracting day drift day-eyed day fireman day fishing day-flying day gang day gate day god day gown day guest day hand day hater day-hating day haul day-hired day hour day house day jasmine day journeying day labor day laborer day-lasting day letter daylight blue daylight factor daylight glass daylight lamp daylight projection daylight saving daylight-saving time daylight vision day lily day-lived day loan day-loving day nettle day nurse day nursery day owl day-peep day rate day reflection day rule day scholar day school day servant day shift day-shining day sight day sleeper day slumber day task day-to-day loan day-to-day money day vision day waiter day watchman day water day-wearied day wind dazzle painting dazzle system D-borneol deacon seat dead-afraid dead ahead dead-air dead-alive dead-alivism dead-arm dead-ball line deadbeat escapement dead-blanched Dead borneo dead-bright dead-burn dead-cold dead-color dead-colored dead-dip dead-drifting dead-drunk dead-drunkenness dead-end dead-face dead-front dead-frozen dead-grown dead-heat dead-heater dead-heavy Dea dia dead-kill dead-leaf dead-letter dead-live dead-man control dead-rise dead-rise line dead-roast Dead sea apple Dead sea fruit dead-seeming dead-set dead-sick dead-smooth dead-soft dead-stick dead-stroke dead-stroke hammer dead-struck dead-weight dead-weight safety valve deadwood fence deaf-and-dumb alphabet deaf-dumb deaf-dumbness deaf-eared deaf-minded deaf-mute deaf-muteness deaf-mutism deal board deal carrier dealer acceptance dealer allowance dealer help dealing box deal merchant deal porter deal runner deal worker deal yard De-americanization De-americanize dea-nettle De-anglicization De-anglicize dear-bought Dea tacita death adder death agony death alder death angel death angle death-bearing deathbed deed deathbed repentance death-begirt death bell death benefit death bill death-black death blast death-boding death bolt death bone death-braving death-bringing death camass death candle death chamber death chime death cloth death-cold death-come-quickly death cord death-counterfeiting death cry death cup death damp death dance death-darting death-deaf death-deafened death-dealing death-deep death defiance death demon death-devoted death dew death-dewed death dirge death-divided death-divining death-doing death-doom death drink death drum death-due death duty death feint death feud death fire death flame death grapple death grip death groan death herb death hour death house death hymn death knell death-laden death light death-marked death mask death note death-pale death pang death peal death penalty death penny death point death-polluted death-practiced death prayer death rate death rattle death ray death roll death rope death ruckle death sentence death-shadowed death-sheeted death shriek death sleep death song death stab death-stiffening death-stricken death stroke death-struck death-subduing death sweat death-swimming death thirst death-threatening death throe death tick death trance death vacancy death warrant death-weary death weight death-winged death-worthy death-wounded death wraith debenture stock debit ticket debris glacier debt book debt limit debt service debts recovery court decade ring De-calvinize decapod locomotive decay coefficient Deccan hemp Deccan trap De-celticize decimal point deck beam deck block deck board deck boy deck bridge deck car deck cargo deck chair deck curb deck elevator deck feather deck floor deck hand deck hook decking chain deck iron deck key deck kicker deckle edge deckle-edged deckle strap deck light deck log deck molding deck nail deck officer deck passage deck passenger deck-piercing deck-piercing shell deck pipe deck plate deck plating deck pump deck quoits deck roof deck seat deck sheet deck steward deck stool deck stopper deck stringer deck tackle deck tennis deck transom deck turret deck watch declination axis declination circle declination compass declination parallel decoction process decomposition potential decompression chamber Decoration day decoy duck decree dative decree law decree nisi Decretum gratiani decubitus ulcer dedendum circle Dedication festival deed poll de-educate de-electrify de-electrization de-electrize de-emanate de-emanation de-emulsibility de-emulsify de-emulsivity de-energize deep-affected deep-affrighted deep-asleep deep-bellied deep-biting deep-bodied deep-bosomed deep-brained deep-breasted deep-breathing deep-brooding deep-browed deep-buried deep-chested deep-colored deep-contemplative deep-crimsoned deep-cut deep-damasked deep-discerning deep-dish deep-domed deep-down deep-drawing deep-drawn deep-drenched deep-drinking deep-drunk deep-dyed deep-echoing deep-embattled deep-engraven deep-eyed deep-faced deep-felt deep-fermenting deep-fetched deep-fixed deep-flewed deep-going deep-green deep-groaning deep-grounded deep-grown deep-laden deep-laid deep-level mine deep-lunged deep-lying deep-musing deep-naked deep-persuading deep-piled deep-pitched deep-pointed deep-pondering deep-premeditated deep-questioning deep-reaching deep-read deep-revolving deep-rooted deep-rootedness deep-rooting deep-sea deep-searching deep-seated deep-set deep-settled deep-sided deep-sighted deep-sinking deep-skirted deep-sore deep-stapled deep-sunk deep-sunken deep-sweet deep-sworn deep-tangled deep-thinking deep-thoughted deep-thrilling deep-throated deep-toned deep-transported deep-trenching deep-troubled deep-uddered deep-vaulted deep-versed deep-voiced deep-waisted deep-worn deep-wounded deer brush deer cabbage deer call deer cart deer-eyed deer fence deer fern deer-fly fever deer foot deer forest deer grass deer hide deerhorn cactus deer keeper deer laurel deer lick deer mouse deer-neck deer park Deer park deer tick deer tiger deer vine deerwort boneset de-ethicization de-ethicize defending line defense mechanism defense test deficiency account deficiency bill deficiency disease deficiency judgment definite-proportions law definite-time deflagrating spoon deflecting bar deflecting torque deflection angle deflection method deflection offset deflection scale deformation curve deformation ellipsoid deft-fingered De gaullism De gaullist degeneration disease De-germanize degree-cut degree-day De-hellenize deion circuit breaker dei plenus deisel engine De-italianize De-jansenize De-judaize delayed-action fuse del credere deleb palm delft blue Delian problem delicate-handed delirium tremens delivery order delivery ticket delph blue delta connection delta current delta plain delta plateau delta potential delta-shaped delta winding delta wing demand bill demand deposit demand limiter demand-load limiter demand loan demand meter demand note demand rate dementia paralytica dementia praecox demerit mark Demi-atlas Demi-christian demi-incognito demi-island demi-islander demi-landau Demi-mohammedan Demi-moor Demi-norman Demi-pelagian demipirouette volt Democratic-republican demon star Denatura deorum De-nazify Deneb algedi Deneb kaitos dense-flowered dense-headed dense-minded dense-wooded density rule dental hygienist dental length dentary-splenial dentate-ciliate dentate-crenate dentate-serrate dentate-sinuate dent corn dentil band den-tree department hospital department store dephlogisticated air dephosphorizing process deposit account deposit banking deposit copy deposit currency deposit premium company deposit slip depot ship depreciation charge depressed-bed depressed-bed method depression range finder depression slide depression spring depressor nerve De-protestantize depth bomb depth charge depth gauge depthing tool depth measure depth psychology depth table deputy collector deputy commissioner deputy sheriff derailing switch derb fine dermato-autoplasty dermoid cyst derrick block derrick boat derrick boatman derrick car derrick chain derrick crab derrick crane derrick elevator derrick engine derrick floor derrick floorman derrick forge derrick fork derrick hoist derrick lamp derrick maker derrick making derrick mast derrick master derrick sheaves derrick sill derrick skid derrick skip derrick spring derrick stacker derrick stool derrick stove derrick timber derrick tower derrick truck derrick wheel derring-do derry-down de-russianize de-saxonize descant clef descant viol descension theory descent cast de-semiticize desert-bred desert cat desert fox desert kumquat desert lark desert lemon desert lily desert-locked desert lynx desert oak desert palm desert pea desert plant desert poisonbush desert polish desert rat desert rod desert she-oak desert ship desert trumpeter desert trumpet flower desert varnish desert-wearied desert weed desert willow design bedding desk room despite that dessert fork dessert knife dessert plate destroyer escort destroyer leader detail drawing detective story detent escapement detention home detention hospital determinative clause detonating powder detonating tube detritus tank deuce-ace deuce game deuce point deuce set deuce shot deuces wild deutero-malayan Deutero-nicene developing dye developing-out paper development section development theory deviation factor deviation warranty devil bolt devil-born devil carriage devil chaser devil dance devil dancer devil dancing devil-devil devil-diver devil-dodger devil dog devil-giant devil-god devil grass devil-haired devil-inspired devil lore devil-may-care devil murder devil-porter devil ray devil-ridden devil-tender devil worship devil worshiper devil worshiping De vinne dew-beat dew-beater dew-bedabbled dew-bediamonded dew-bent dew-bespangled dew-bespattered dew-besprinkled dew bit dew-boine dew-bolne dew bow dew-bright dew cap dew-clad dew-cold dew-dabbled dew-drenched dew-dripped dew-dropping dew-drunk dew-fed dew-gemmed dew grass dew-laden dew-lipped dew-lit dew-pearled dew plant dew point dew pond dew snail dew-sprent dew-sprinkled dewy-bright dewy-dark dewy-eyed dewy-feathered dewy-fresh dewy-pinioned dextro camphor D-flat D-flat major dhobie itch dhobie tongs diabase-porphyrite diabetes sugar diabetes weed di-adapan diadem lemur diadem spider diagonal-built diagram factor dial bird dialect atlas dialect geography dial enameler dial feed dial foot dial gauge dialing globe dial press dial recorder dial telegraph dial telephone dial work diameter tape diamine dye Diamine scarlet b Diamine violet n diamond anniversary diamond-backed diamondback moth diamondback rattlesnake diamondback terrapin diamondback watersnake diamond bed diamond beetle diamond bird diamond black diamond borer diamond-boring diamond boron diamond bort diamond breaker diamond-bright diamond broker diamond cement diamond chisel diamond couching diamond crossing diamond cut diamond diamond dash diamond die diamond digger diamond digging diamond dresser diamond drill diamond dust diamond edition diamond factory diamond field diamond fig diamond file diamond flounder diamond flower diamond gauge diamond gravel diamond green diamond groove diamond hammer diamond-headed diamond hitch diamond jubilee diamond knot diamond-leaf laurel diamond linen diamond merchant diamond mill diamond mine diamond mortar diamond-paned diamond panel diamond paste diamond pencil diamond photograph diamond plant diamond plate diamond plow diamond point diamond-pointed diamond polisher diamond powder diamond-producing diamond rattlesnake diamond ring diamond saw diamond setter diamond-shaped diamond-skin disease diamond snake diamond sparrow diamond splitter diamond stitching diamond-tiled diamond-tipped diamond tool diamond tooth diamond trade diamond truer diamond twist diamond wedding diamond weevil diamond wheel diapason diapente diapason ditone diapason normal diaphragm current diaphragm gauge diaphragm process diaphragm pump diaphragm shutter diaphragm valve diaspore clay diazo dye diazo reaction diaz-oxide dibutylamino-propanol dice coal dice-top dichloramine-t dichloroethyl sulphide dicing board dickey box dictionary catalogue dictionary-proof diddle-daddle diddle-dee die-away die-cast die caster die casting die chaser die chuck die-cut die cutter die cutting die engraver die filing die fitter die fitting die forger die forging die grinder die hammer die-hard die hardener die-hardism die head die hob die holder die kicker dielectric constant dielectric current dielectric loss die miller die mold die planer die plate die polisher die polishing Dieppe lace die press die presser die proof die reamer die screw plate diesel cycle diesel-driven diesel-electric diesel-engined diesel oil diesel-powered die set die shaper die sharpening die shoe diesinking machine die spotter die spotting die spring die-square die stamper die stripper die stripping die tap diet book die temper diethylene dioxide diet kitchen die turner die wedge difference chart difference engine difference equation difference gauge difference limen difference product difference quotient difference table difference threshold difference tone difficulty score diffraction disk diffraction grating diffraction spectroscope diffraction spectrum diffuse-porous diffuse reflection diffusion air pump diffusion battery diffusionist theory diffusion juice diffusion process digester tankage digest medium Digger indian digger wasp digging weight digitato-palmate digitato-pinnate dika bread dika butter dik-dik dike hopper dike-louper dike rock dill oil dill pickle dill water dim-brooding dim-browed dim-colored dim-discovered dime museum dime novel dimension lumber dim-eyed dim-felt dim-gleaming dim-gray dim-lettered dim-lighted dim-lit dim-litten dim-out dim-remembered dim-seen dim-sensed dim-sheeted dim-sighted dim-sightedness dim-visioned dim-yellow diner-out ding-a-ling dingdong theory dining car dining hall dining room dining saloon dining table dinkel wheat dinking die dinner audience dinner bell dinner call dinner card dinner chimes dinner clothes dinner club dinner coat dinner dance dinner dress dinner fork dinner-getting dinner hour dinner knife dinner napkin dinner pail dinner party dinner plate dinner ring dinner room dinner service dinner set dinner table dinner wagon diorite-porphyrite dip circle dip-dye dip fault dip-grained diphenyl black diphenylene-methane diphenyl ether diploma mill diploma piece dip needle dipper clam dipper dredge dipper gourd dipper-in dipper interrupter dipping acid dipping basket dipping bath dipping battery dipping chair dipping compass dipping elevator dipping enamel dipping frame dipping furnace dipping hook dipping house dipping ladle dipping lug dipping needle dipping oil dipping paint dipping pan dipping paper dipping process dipping rack dipping rod dipping room dipping table dipping tank dipping tub dipping tube dipping works dip pipe dip rider dip rope dip sector dip shift dip slip dip trap direct-acting direct-acting press direct-actionist direct black direct blue direct brown direct-connected direct-coupled direct-current converter direct-driven direct-geared direct-indirect radiator directing circle directing piece directing plane directing point direction angle direction constant direction finder direction finding direction ratio direction switch direction tensor direction test director circle director curve director-general director plane director regulus director sphere directory arrangement directory canvasser direct-writing company direct yellow dire wolf dirigible torpedo diriment impediment dirk knife dirt band dirt bed dirt-besmeared dirt-born dirt-cheap dirt dauber dirt eating dirt farmer dirt-fast dirt-flinging dirt-grimed dirt groove dirt-incrusted dirt-line dirt road dirt-rotten dirt-smirched dirt-soaked dirty-colored dirty-faced dirty-handed dirty-minded dirty-shirted dirty-souled disability clause disability insurance dis-byronize discharge potential discharger cup discharge valve disc jockey disconnecting switch discontinuity layer discount broker discount company discrimination time disease-causing disease germ disease-producing disease-resisting disease-spreading disengagement governor dish bearer dish cleaner dishcloth gourd dish cover dish-crowned dish designer dish drainer dish-faced dish feed dish gravy dish-headed Dishley merino dish mop dish mustard dish plate dish rack dish towel dish truck dish wagon dish warmer disinfecting candle disintegration series disk armature disk barrow disk-bearing disk bit disk brake disk clutch disk crank disk cultivator disk drill disk dynamo disk engine disk flower disk furrower disk go-devil disk harrow disk hiller disk meter disk photometer disk pile disk plow disk ridge buster disk sander disk-shaped disk signal disk stove disk system disk telegraph disk valve disk weeder disk wheel disk winding disodium phosphate dispatch-bearing dispatch boat dispatch box dispatch money dispatch note dispatch tube dispatch writer dispatch writing dispersion medium displacement current displacement pump displacement ton display advertising display bracket display card display cover display figure display form display pipe display sign display type display window display work dissociation coefficient dissociation constant distaff side distaff thistle distance circle distance flag distance language distance medley distance post distance receptor distance ring distance scale distilling flask distilling tube disto-occlusion distress call distress sale distribution board distribution curve distribution difference distribution function distribution ratio district attorney district council district judge district parish district school dis-turk dita bark ditch crowfoot ditch-delivered ditch-drawn ditch fern ditch grass ditch hand ditching car ditching machine ditching scoop ditch machine ditch millet ditch moss ditch reed ditch rider ditch spade ditch stonecrop ditch sunflower dithering grass ditto mark ditty bag ditty box diva blue dive-bomb dive bomber divergence theorem diverse-colored diverse-natured diverse-shaped diversion chamber diversion cut diversity factor dividend warrant dividing engine dividing head dividing plate dividing sinker divi-divi divine-human diving bell diving bladder diving board diving boat diving engine diving float diving helmet diving hood diving machine diving platform diving raft diving suit diving togs divining rod divinity calf divinity circuit binding divinity fudge Divinity hall divinity school division algebra division center division engineer division mark division sign division superintendent Dixie land djati tree D major D minor D natural D net do-all dobbin cart Doberman pinscher dobson fly dock boss dock bur dock charge dock cooper dock crane dock cress dock crew dock derrick dock dues dock foreman dock gate dock hand dock hoist docking cradle docking keel dock inspector dock laborer dock-leaved dock light dock nettle dock port dock porter dock receipt dock rent dock screw dock shunter dock sill dock sorrel dock space dock spike dock superintendent dock-tailed dock trade dock-walloper dock-walloping dock warehouse dock warrant doctor blade Doctor breck doctor file document bill dodder family dodder grass doddy mitten dodecuple scale dodge ball dodge chain doegling oil doeskin brown doffing comb doffing cylinder doffing knife do-funny dog ape dogbane family dog-banner dog bee dog belt dog bent dogberry tree dog biscuit dog-bitten dog blanket dog bramble dog breeder dog bur dog button dog cabbage dog cake dog camomile dog carrier dog chain dog chart dog-cheap dog cherry dog clipper dog clutch dog collar dog cracker dog crate dog daisy dog dandelion dog-day cicada dog disease dog dollar dog-draw dog-drawn dog-driven dog-ear dog-eared dog elder dog-eyed dog-faced dog fancier dog fennel dog-fisher dog flea dog flesh dog flower dog-footed dog fox dog-gnawn dog grass dog grate dog harness dog-headed dog-head hammer dog-head spike dog hip dog hobble dog hood dog hook dog hospital dog-hungry dog hysteria dog iron dog-keeping dog kennel dog-lame dog laurel dog-lean dog-leaved dog leech dog-leg dog-leg fence dog-legged dog-leg hole dog letter dog license dog lichen dog life dog lily dog louse dog lover dog-mad dog meat dog mercury dog mint dog muzzle dog nail dog nap dog nettle do-good do-gooder do-goodism dog owl dog owner dog-owning dog parsley dog plum dog poison dog-poor dog racing dog reed dog robber dog robbing dog rose dog rowan tree dog salmon dog screw dog seal dog shark dog show dog-sick dog sledge dog snapper dog soap dog spike dog standard Dog star dog stealing dog stinkhorn dog-stopper dog tag dog tansy dog tapeworm dog tax dog tent dog thistle dog thorn dog tick dog-tired dog-toes dog tongue dog-tongue wampee dog-toothed dogtooth spar dogtooth star grass dogtooth violet dog town dogtown grass dog track dog train dog trainer dog training dog tree dog violet dog warden dog warp dog-weary dog wheat dog wheel dog whelk dog whip dog whistle dog winkle dogwood family dogwood poisonbush dog wrench dole meadow do-little dollar acceptance dollar bill dollar bond dollar chaser dollar debenture dollar diplomacy dollar exchange dollar loan dollar mark doll-faced doll hospital doll-like dolly bar dolly-head dolly-mop dolly shop dolman sleeve dolphin-flower dolphin fly dolphin oil dolphin striker dome-shaped domestic relations law dome tomb Dominion day domino whist donation party Dongola kid Dongola race donjon keep Don juan Don juanism donkey boiler donkey boy donkey crosshead donkey doctor donkey-drawn donkey-eared donkey engine donkey hoist donkey pump donkey puncher donkey sled donkey tender Donnybrook fair do-nothing do-nothingism do-nothingness doob grass doom palm doom ring doom tree doon-head-clock door bed door chain door check door closer door fastener door finisher door fitter door grass door hanger door hasp door hinge door key door knocker door latch door lock door mat door matting door money door opener door-roller door scraper door-shaped door spring door stile door strap door switch door track door trap door trapper dooryard grass dooryard plantain do-over dopa reaction dop doctor dope fiend dor bee dor bug dorcas gazelle dore bullion dore furnace dor fly dormer beam dormer window dormer-windowed dormouse phalanger dorsal-root ganglion Dorset horn Dorset horned sheep dorso-occipital dorso-ulnar dorsum ephippii dos-a-dos dosage meter dos gris dosing apparatus dosing siphon dosing tank dos nominata dos rationabilis doss house dot-dash line dot figure dot map dot-sequential dotterel dun dottle pin double-acting double-action double-action harrow double-armed double-aspect theory double-bank double-banked double-banker double-barred double-barrel double-barreled double-barrelled double-bass double-battalioned double-beat valve double-bedded double-benched double-biting double-bitt double-bitted double-bladed double-blossomed double-bodied double-bond isomerism double-bottom double-bottomed double-branch double-branched double-break switch double-breasted double-brooded double-buttoned double-chain sling double-charge double chin double-chinned double-clasping double-claw double-coated film double-concave double-convex double-crested double-cross double-crosser double-cup insulator double-cupped double-current generator double-current signaling double-cut double-cut file double-cut saw double-cylinder planer double-dealer double-dealing double-decked double-decker double-disk double-disk harrow double-distilled double-ditched double-dodge double-doored double dot double double cap double-duty double-dye double-dyed double-edged double end double-ended double-ender double-ender file double-end saw file double-engined double-entry system double-entry table double-eyed double-faced double-facedly double-facedness double-fault double-feature double flower double-flowered double-flowering double-fold double-footed double-framed double-fronted double-gilt double half-round file double-hatched double-head double-headed double-header double-helical double-horned double-image micrometer double-image prism double-image telescope double-ironed double-jointed double-keeled double-language theory double-leaded double-liability stock double-line double-lived double-livedness double-loaded double-loathed double-lock double-lunged double-manned double-measure door double-milled double-minded double-mindedly double-mindedness double-mouthed double-name paper double-natured double-opposed double-page spread double-pedal double pedal point double-piled double-pipe condenser double-pointed double-pole switch double-pored double-ported double print double-printing double-queue double-quick double-quirked double-reed family double-reef double-reefed double-refined double-refracting double-ripper double-rivet double-riveted double-roller escapement double-rooted double-runner double-scull double-seater double-seeing double-sensed double-shear steel double-shed insulator double-shot double-sided double-sidedness double-sighted double-slide double-soled double-spun double-starred double stem double-stemmed double-stitched double-stop double-struck double-sunk double-sunk dial double-surfaced double-swing door double-swing joint double-sworded double talk double-thong double-thread double-threaded double-throw switch double-tongue double-tongued double-tonguing double-tooth double-track double-trenched double-trouble double-truck heading double-twisted Double-u double-visaged double-voiced double-windowed double-winged double-work double-worked doubt-beset doubt-cherishing doubt-dispelling doubt-excluding doubt-harboring doubting mania doubt-ridden doubt-sprung doubt-troubled dough-baked dough brake dough-colored dough-dividing dough-faced dough kneader dough-kneading dough mixer dough-mixing doughnut tire dough stage doum palm do-up dousing chock dove blue dove color dove-colored dove dock dove-eyed dove-gray dove hawk dove plant dove pox dover grass dove-shaped dovetail cramp dovetail halving dovetail joint dovetail molding dovetail plane dovetail saw dovetail-shaped dovetail slide dove tick dowel bit dowel jig dowel maker dowel pin dowel plate dowel pointer dowel rod dowel screw dowel sharpener dowel spoke dowel stick dower chest down along down-beater down bed down-bow down card down-charge down-coast down-covered down-crier down cushion downdraft kiln down-drag Down east Down-easter downfeed system down-hip down-house down-lead down picker down pillow down pipe down plucker down plumage down-river down runner down-soft down-talk down thistle down time down tree down under down-valley down-wash down wool downy-cheeked downy-clad downy-feathered downy-fruited downy oat grass downy-winged dowsing chock dowsing rod drab-breeched drab-coated drab-colored drab-tinted dracaena palm draft act draft allowance draft box draft chair draft engine draft evener draft-exempt draft gauge draft gear draft horse drafting board drafting paper drafting room drafting yard draft net draft pin draft rein draft rod draft tube drag anchor drag boat drag box drag bucket drag cart drag chain drag classifier drag conveyer drag crank drag-down drag fold dragger-down dragger-out dragger-up dragging beam drag harrow drag hook drag horse drag hunt drag iron dragline dredge drag link drag mill dragnet clause dragon arum dragon balloon dragon beam dragon claw dragon-eyed dragon-faced dragon gum dragon lizard dragon-mouthed dragon piece dragon plant dragon-ridden dragon tie dragon tree dragon turnip dragon-winged dragoon bird drag rake drag sail drag scraper drag seine drag spring drag step drag-stone mill drag tooth drag twist drag washer drag wire drainage area drainage basin drainage benefit drainage canal drainage coefficient drainage cycle drainage district drainage gate drainage inlet drainage inspector drainage level drainage pipe drainage pit drainage pump drainage shaft drainage system drainage theory drainage tile drainage trap drainage tube drainage tunnel drainage well drain arm drain cleaner drain cock drain cup drain digger drain exhauster drain faucet drain grate draining board draining tile drain inlet drain layer drain pit drain pump drain repairer drain rocket drain tester drain trap drain valve drain well drake fly drake foot drake green drama league dramatis personae dram filler drapers teasel Dravido-munda draw-arch drawback collet drawback lock drawbar horsepower drawbar load draw chain draw cock drawcut shaper draw dock drawer dovetail drawer-down drawer-in drawer-off drawer-out drawer pull drawer-up draw game drawing account drawing awl drawing bench drawing block drawing board drawing book drawing card drawing chalk drawing compasses drawing crayon drawing desk drawing die drawing frame drawing glove drawing ink drawing instrument drawing knife drawing machine drawing office drawing paper drawing pen drawing pencil drawing pin drawing pliers drawing press drawing punch drawing room drawing-room car drawing-roomy drawing shave drawing slate drawing string drawing table drawing thread draw pin draw poker draw press draw slate draw step draw taper draw-water draw-well dray horse dread-bolted dream analysis dream-blinded dream book dream-born dream-built dream-created dream dance dream-footed dream-found dream-haunted dream-haunting dream life dream light dream name dream-perturbed dream stuff dreamy-eyed dreamy-minded dreamy-souled dreamy-voiced drear-nighted drear-white dreary-eyed dreary-looking dreary-minded dreary-souled dredge belt dredge boat dredge box dredge bucket dredge can dredge chain dredge gear dredge hoist dredge hopperman dredge hull dredge ladder dredge malt dredge net dredge pipe dredge pontoon dredge pump dredger bucket dredge rope dredging box dredging bucket dredging machine dree-draw dress cap dress circle dress coat dress-coated dress designer dresser cutter dresser set dresser spindle dresser spooler dresser top dresser trunk dress face dress form dress goods dressing case dressing forceps dressing glass dressing gown dressing jacket dressing room dressing sack dressing station dressing table dress shield dress shirt dress suit dress tie dress uniform driblet cone drier-down drift anchor drift angle drift avalanche drift boat drift bottle drift copper drift fisher drift keel drift lead drift meter drift mine drift mining drift net drift-netter drift plug drift sail drift slide driggle-draggle drill attachment drill barrel drill barrow drill bit drill block drill book drill bow drill bushing drill cartridge drill case drill changer drill chuck drill clamp drill cleaner drill cloth drill collar drill collet drill cutter drill cylinder drill day drill drift drill driver drill engine drill extension drill extractor drill feeder drill file drill fluter drill gauge drill grinder drill ground drill hall drill hardener drill harrow drill holder drill hole drilling bit drilling hammer drilling jig drilling journal drilling machine drilling stem drilling track drill instructor drill jar drill jig drill-like drill lubricato drill maker drill making drill mounting drill pin drill pipe drill plow drill point drill pointer drill press drill rack drill ratchet drill regulation drill rest drill room drill sergeant drill shank drill sharpener drill ship drill sleeve drill socket drill speeder drill spring drill stand drill steel drill straightener drill tester drill tower drill track drill twister drill worker drill yard drinker moth drink-hael drink-hail drinking bout drinking cup drinking fountain drinking glass drinking horn drinking house drinking mug drinking place drinking song drinking straw drinking time drinking trough drinking water drink money drink offering drip band drip board drip box drip cock drip coffee drip coffee maker drip cup drip-drip drip groove drip-ground drip joint drip loop drip molding drip oil dripping pan dripping point drip pipe drip pocket drip primrose drip sheet drip tank drip tip drip tray drip trough drip valve drive fit drive-in drive nozzle driver ant driver mast drive shaft drive shoe drive wheel drive whist driving axle driving band driving bit driving board driving box driving chain driving clock driving drum driving face driving fit driving gear driving horn driving iron driving mashie driving mirror driving park driving plate driving power driving punch driving shaft driving snow driving spring driving wagon driving wheel drizzle-drozzle dromedary corps dromos tomb drone bass drone bee drone cell drone fly drongo cuckoo drongo shrike Drood edwin droop-eared droop-headed droop-nosed drop arch drop-away drop bar drop black drop bolt drop bomb drop bottom drop-bottom bucket drop box drop-center rim drop chalk drop chronograph drop cord drop curtain drop ear drop-eared drop elbow drop fly drop folio drop-forge drop-forger drop forging drop-forging die drop frame drop-front drop game drop glass drop guide drop hammer drop hammerman drop handle drop hanger drop jaw drop keel drop key drop kick drop-kicker drop lamp drop leaf drop-leg drop letter drop line drop number drop-out current drop-out voltage drop panel dropper fly dropper-on dropping angle dropping bottle drop pit drop press drop roller drop screen drop seat drop serene drop-shaped drop shipment drop shot drop shutter drop siding drop-stich drop stitch drop strake drop stroke drop sulphur dropsy-dry dropsy plant dropsy-sick drop table drop testing machine drop weight drop window drop wire drop worm drop zinc drought-parched drought-resisting drought-stricken drove chisel drove-road drove work drug addict drug-addicted drug beetle drug bottler drug carriage drug clerk drug compounder drug-damned drug fiend drug grinder drug-grinding drug habit drug ice drug mixer drug-mixing drug pulverizer drug-pulverizing drug seller drug-selling drugstore beetle drug user drug-using drug weigher druid stone drum armature drumble-drone drum controller drum corps drum dam drum escapement drum feed drumhead cabbage drumhead court-martial drum language drum major drum malt drum puller drum saw drum scale drum screen drum-shaped drum sieve drum slide drum spool drumstick tree drum stuffing drum switch drum-type elevator drum-up drum washer drum wheel drum winding drum-wound drunken plant drunken rye grass dry air dry-air pump dry-beat dry beater dry-blowing dry bone dry-boned dry-bones dry-brush dry-bulb thermometer dry-burnt dry-clean dry cooper dry-cure dry-dock dry-dye dry-eared dry-eyed dry farm dry farmer dry farming dry-fine dry-fly dry-fly fishing dry-footed dry-fruited dry-grind dry-handed dry-heat cure Dry ice drying cabinet drying chamber drying fan drying floor drying frame drying house drying kiln drying loft drying oil drying oven drying pan drying paper drying rack drying room drying shed drying tray drying tube drying yard dry-ki dry-land blueberry dry-land farming dry-leaved dry-lipped dry-looking dry miller dry mixer dry-mouthed dryness fraction dry-paved dry-pick dry pipe dry-pipe system dry-pipe valve dry plate dry-plate process dry-powder extinguisher dry-press dry-press process dry-roasted dry-rot dry-rotted dry-rub dry-salt dry-salted dry-scrubbed dry-shave dry-shod dry-shoot dry-skinned dry-soled dry spinner dry-stone dry-tamp machine dry-throated dry-tongued dry-weather flow dry-weather vine D-sharp D-sharp minor D splice D trap dual-purpose Du-barry duchesse lace duck acorn duck ant duckbill cat duck-billed duckbill gar duck blue duck breeder duck call duck egg duck fit duck-footed duck grass duck green duck gun duck hawk duck hunter ducking stool duck joint duck keeper duck-legged duck mole duck moss duck oak duck pass duck pen duck potato duck rearer duck-retter duck ring duck shot duck snipe duck soup duck table duck-toed duckweed family duck wheat duck willow dudder grass dude ranch due bill due course due date dueling pistol Duffy jonah dug-up Duk-duk duke cherry dukey rider dull-browed dull-colored dull-eared dull-edged dull-eyed dull-headed dull-lived dull-looking dull-pated dull-pointed dull-red dull-scented dull-sighted dull-sounding dull-spirited dull-surfaced dull-toned dull-tuned dull-voiced dull-witted dulse dealer dulse-green dumb-bird dumb-waiter dumdum fever dummy block dummy car dummy cartridge dummy cop dummy experiment dummy-head torpedo dummy index dummy share dummy whist Dumonts blue dump body dump car dump heap dump hook dumping bucket dumping car dumping cart dumping device dumping duty dumping grate dumping ground dumping machine dumping place dumping press dumping truck dumping wagon dumpling cactus dump pile dump rake dump scow dump truck dump wagon dun-belted dun-brown dun-colored dun crow dundathu pine dun diver dun-drab dun-driven dune dweller dune forest dune grass dune heath dune land dune marsh dune plant dune sand dun fly dunga-runga dung bath dung beetle dung cart dung chafer dung fly dung fork dung heap dunghill fowl dung pit dung worm dun-haunted dunk tree dun-olive dun-plagued dun-racked dun-red dun-white dun-yellow dun-yellowish duple ratio duplex boiler duplexity theory duplex-numeric index duplex oxygenator duplicate-pinnate duplicato-dentate duplicato-serrate duplicato-ternate duplicity theory dura mater durango root durfa grass durfee grass Duroc-jersey durry-dandy durum wheat dusky-browed dusky-colored dusky-faced dusky-mantled dusky-raftered dusky-sandaled dust ball dust band dust-begrimed dust bowl dust brush dust cap dust chamber dust cloak dust coat dust-colored dust-counter dust cover dust-covered dust devil dust-dry duster-off dust exhaust dust extractor dust furrow dust-gray dust gun dust heap dusting brush dusting colors dusting powder dust-laden dust-laying dust louse dust mulch dust-polluting dust process dust-producing dust remover dust ruffle dust seal dust shot dust-soiled dust storm dust-throwing dust-tight dust trunk dust well dust whirl Dutch-gabled Dutch-process Dutch-ware-blue duty-free D uxelles sauce dvi-manganese dwarf meadow grass dwelling house dwelling place dycrete process dye bag dye base dye bath dye boiler dye box dye bucket dye grinder dye mixer dye pine dye pot dye remover dye tank dye therapy dye tub dye vat dyewood clipper dyewood cutter dyewood extract dyewood grinder dyewood liquor dyewood miller dye works dying day dynamite bomb dynamite cap dynamite glycerin dynamite gun dynamite maker dynamite mixer dynamite thawer dynamo belting dynamo brush dynamo casting dynamo commutator dynamo erector dynamo lubricator dynamometric governor dynamo winder dyne centimeter dyne-seven dysentery root dzera-a-rabry pik dzera-a-torky pik each other eager-eyed eager-hearted eager-looking eager-minded eager-seeming eagle-billed eagle bird eagle boat eagle claw eagle eye eagle-eyed eagle feather eagle fern eagle-flighted eagle flower eagle gull eagle hawk eagle-headed eagle lectern eagle owl eagle-pinioned eagle plume eagle ray eagle scout eagle-seeing eagle-sighted eagle vulture eagle wing eagle-winged ear-brisk ear conch ear cornet ear coverts ear crystal ear-deafening eardrop tree ear dust ear-filling ear flap ear fly ear fungus ear guard ear index earl duck ear leaf ear-leaved earl palatine early meadow grass early mesquite early-type star ear-minded ear-mindedness ear mold ear muff earning grass ear piercer ear-piercing ear reach ear rot ear sand ear shell ear snail ear stone earth almond earth apple earth-ball earth battery earth bob earth-bound earth-boundness earth bread earth cell earth chestnut earth circuit earth club earth color earth-convulsing earth crab earth crust earth current earth-delving earth-destroying earth-devouring earth dweller earth-dwelling earth-eating earth-engendered earth-fed earth flax earth flea earth foam earth-god earth-goddess earth hog earth hole earth-homing earth house earth hunger earth inductor compass earth ivy earth life earth-lit earth lodge earth louse earthly-minded earthly-mindedness earthly-wise earth metal earth moss earth movement earth-moving earthnut oil earth-old earth owl earth pig earth pillar earth pitch earth plate earth plum earth quadrant earthquake insurance earthquake-proof earth-refreshing earth-rending earth-shaking earth smoke earth-sounds earth spirit earth spring earth-sprung earth-stained earth stopper earth-strewn earth table earth tide earth tilting earth-vexing earth wave earth wax earth-wide earth wire earth wolf earth-wrecking ear tick ear tree ear trumpet ear wagon easement curve ease-off easing sparrow East-ender Easter anemone Easter bell Easter bonnet Easter-giant Easter-ledges Easter sunday East greenlander East indiaman East-insular east-northeast East side east-sider East-sider east-southeast east-windy easy-fitting easy-flowing easy-hearted easy-humored easy-mannered easy-minded easy-rising easy-running easy-spoken eat-all eaten-leaf eaves catch eaves swallow eavy-soled ebb sleeper ebb tide eboe light eboe oil ebony family ebony spleenwort ecaille work eccle grass ecclesiastico-military ecclesiastico-secular echelon lens E-chinocystis echo attachment echo organ Eclectic school eclipse breeze economic man economy coil ecru silk Ed asich eddy chamber eddy current eddy-current brake Edge act edge-grain edge-grained edge iron edge joint edging grinder edition bindery eel-backed eel-back flounder eel cat eel-catching eel fork eel netting eel-shaped eeny meeny miney moe efficiency engineer effigy mound effusion balance efwatakala grass egg albumen egg albumin egg apparatus egg-bound egg-shaped eggshell blue eggshell china egg sleeker egg-white eggy-hot ego ideal egret monkey Egypto-arabic Egypto-greek Egypto-roman eider down eider yarn eight-angled eight-armed eight ball eight-celled eight-cylinder eight-day eight-flowered eight-gauge eight-hour eight-oar eight-oared eight-ply eight-quarter cap eightsome reel eight-square eight-wheeler eighty-eight eighty-eighth eighty-fifth eighty-first eighty-five eighty-four eighty-fourth eighty-nine eighty-ninth eighty-one eighty-second eighty-seven eighty-seventh eighty-six eighty-sixth eighty-third eighty-three eighty-two Einstein shift eis wool eka-aluminum eka-iodine elastic anklet elastic binder elastic braid elastic cement elastic gel elastic hosier elastic hosiery elastic kneecap elastic loom elastic paper elastic rubber elastic-seeming elastic-sided elastic stocking elastic tape elastic thread elastic varnish elastic veiling El-beth-el elbow grease elbow length elbow-shaped elbow telescope elder bark elder blossom elder blow elder-born elder-brother Elder edda elder fungus elder-leaved elder-sister elder wine eldest-born El dorado Elean-eretrian Eleanor cross elec cement Election day election district Electra complex electric driller electric-drive electricity meter electric-lighted electric lighting electrode potential electrolier switch electron affinity electron gas electron gun electron microscope electron optics electron pair electro-ultrafiltration eleme figs elemi figs eleolite syenite elephant apple elephant beetle elephant-ear fern elephant grass Elephantiasis arabum Elephantiasis graecorum eleuthera bark elevator boy elevator car elevator conductor elevator conveyer elevator girl elevator man elevator operator elevator shaft elevator signal elevator starter eleven-oclock-lady eleven-year period elf arrow elf dance elf-god elfin-tree elf kind elf kindred elf knight elf queen elf-shoot elf-stricken elf-struck elf-taken elimination contest elisor jury elk bark elk nut El kophrah ell-broad El-lil Elliott eye elliptic-lanceolate elliptic-leaved ell-long ell-wide elm balsam elm bark elm calligrapha elm-leaved elm phloem necrosis El nath elongato-conical elongato-ovate Elsie book elution process Embargo act Ember days embossing plate embroidery floss embroidery frame embryo bearer Embryophyta asiphonogama Embryophyta siphonogama embryo sac em dash emerald copper emergency barrage emergency brake emergency landing field emergency man emery belt emery cloth emery file emery paper emery powder emery surfacer Eme-sal emission spectrum emission theory emperor boa emperor butterfly Empire blue empire cloth employer-owned employment agent employment bureau empress cloth empress tree empty-armed empty-barreled empty-bellied empty-cell process empty-fisted empty-handed empty-handedness empty-headed empty-headedness empty-looking empty-minded empty-mouthed empty-noddled empty-paneled empty-pated empty-skulled empty-stomached empty-vaulted empty-voiced emu apple emu bush emu grass emulsion colloid enamel bud enamel cell en bloc en brochette encephalitis lethargica enclosure wall end-all end artery en dash end bell ender-on ender-up endgate seeder end-grain endive blue end man end-match end-measure endocrine gland endoderm disc endoderm lamella endomersion lens endomersion objective end on end organ endo salt endotherm knife Endothia canker endowment insurance end paper end plate end play end product end-rack end rhyme end-shrink end-stopped end stopping end stress endurance limit endurance ratio endurance strength endwise coil end zone enemy alien energy component energy level energy meter energy-producing energy surface density energy voltage engagement ring engine builder engine cleaner engine company engine control engine cultivator engine-driven engine driver Engineer corps engineering chemistry engine fitter engine lathe engine maker engine making engine pilot engine rod engine room engine-room telegraph engine shop engine size engine-sized engine-sizer engine smith engine tender engine-turned engine-turner engine turning engine-type generator engine work engine worker engine yard English-born English-bred English-built English-hearted English-made English-manned English-minded English-rigged English-setter English-speaking engorgement colic engraver beetle En-lil enlisted man en masse ennea-eteric enol form enol-keto isomerism en route ensign armorial ensign-bearer ensign fly Ens rationis Ens reale entire-leaved entire-wheat ento-ectad entrance certificate entrance cone entrance-denying entrance examination entrance fee entrance money entrance pupil envelope addresser envelope bander envelope case envelope clasp envelope designer envelope die envelope folder envelope gummer envelope holder envelope maker envelope moistener envelope opener envelope printer envelope sealer envelope weigher epacris family epaulet bat epaulet sleeve epididymo-orchitis epidote group epiglotto-hyoidean Epistle side epoch-forming epoch-making epoch-marking equal-angled equal-aqual equal-armed equal-balanced equal-blooded equal-eyed equal-glumed millet equal-handed equal-headed equaling file equalization fee equalization fund equalization period equalizer brake equalizer set equalizing bar equalizing dynamo equalizing file equalizing gear equalizing pipe equal-limbed equally pinnate equal-poised equal-sided equal-souled equal-weighted equation clock equation division equation price equi-gram-molar equilibrium isomerism equilibrium pressure equilibrium sense equipment bond equipment note equitime point equity capital equity side Equus beds Equus october erasing shield erd shrew erection mark erector spinae Ericsson cycle Erlau green ermine moth ern-bleater ern-fern erosion cycle Er rai error-blasted error-darkened error-proof error-stricken error-tainted error-teaching erythema induratum erythema nodosum erythrol tetranitrate escalator clause escape cock escape mechanism escape wheel Eschweger soap Eschwege soap escort carrier escort fighter escort wagon E-shaped Eshi-kongo Eskimo curlew Eskimo dog Eskimo purchase Esmarch bandage esophageo-cutaneous esophago-enterostomy Esopus grit esquire based essoin day essoin roll estate duty estate manager estate rubber estate tail ester gum ester value estivo-autumnal estragon oil estrangelo alphabet etain blue etalon post et cetera etching ball etching ground etching silk etching stitch ether drift ether extract etherin theory ether value ethiops martial ethiops mineral ethyl acetate ethyl acetoacetate ethyl alcohol ethylene bromide ethylene chloride ethylene oxide ethylene series ethyl ester ethyl ether Eton blue Eton cap Eton game Etowah mound Etruria ware Etrusco-roman eucalyptus green eucalyptus gum eucalyptus oil Eucharis mite eudemis moth eu-form Eugenia red eunuch flute euonymus scale eupatorium purple Euphorbia sphinx Eupolidean meter eureka red Euro-american Europeo-american Europeo-asiatic Europeo-siberian eu-type evacuation hospital evacuation station evans-root evaporation tank even-bell system Even-christian even-edged evener-up evening campion evening dress evening-dressed evening dun evening emerald evening flower evening-glory evening gown evening grosbeak evening lychnis evening market evening prayer evening primrose evening-primrose family evening rose evening school evening-snow evening star evening trumpet flower even-numbered even-paged even-pleached even-set even-spun even-tempered even-toed even-toothed even-wayed ever-abiding ever-active ever-admiring ever-angry ever-being ever-beloved ever-blazing ever-blessed ever-burning ever-celebrated ever-changeful ever-changing ever-circling ever-conquering ever-constant ever-craving ever-dear ever-deepening ever-dripping ever-drizzling ever-dropping ever-durable ever-duringness ever-dying ever-echoing ever-endingly ever-esteemed ever-expanding ever-faithful ever-fast ever-fertile ever-friendly everglade kite Everglade state ever-glooming ever-goading ever-going evergreen beech evergreen bittersweet evergreen blueberry evergreen cherry evergreen clematis evergreen elm evergreen grass evergreen magnolia evergreen millet evergreen oak evergreen privet evergreen snakeroot evergreen thorn evergreen trumpet flower evergreen winterberry evergreen wood fern ever-growing ever-happy ever-honored ever-increasing ever-loving ever-mingling ever-moving ever-new ever-noble ever-present ever-prompt ever-ready ever-recurrent ever-recurring ever-renewing ever-smiling ever-strong ever-thrilling ever-varying ever-victorious ever-wearing ever-white ever-widening ever-willing ever-wise ever-young every-way evidence-proof evil-affected evil-affectedness evil-boding evil-complexioned evil-disposed evil-doing evil eye evil-eyed evil-faced evil-fashioned evil-favored evil-favoredly evil-favoredness evil-featured evil-fortuned evil-gotten evil-headed evil-hued evil-impregnated evil-looking evil-loved evil-mannered evil-minded evil-mindedly evil-mindedness evil-mouthed evil-ordered evil-pieced evil-qualitied evil-savored evil-shaped evil-shapen evil-smelling evil-sounding evil-sown evil-spun evil-starred evil-taught evil-thewed evil-thoughted evil-tongued evil-weaponed evil-willed evil-won ewe bramble ewe-daisy ewe-gowan ewe lamb ewe-neck ewe-necked ewe teg ex adverso examination school examining post ex-army ex cathedra Excelsior diamond excelsior knife excess fare excess insurance excess-loss excess-profits tax excess reinsurance exchangeable base exchange broker exchange cap exchange editor exchange professor exchange rate exchange student exchange ticket exchequer bill exchequer bond Exchequer chamber exclamation point Exclusion bill exclusion principle ex-consul ex-convict ex-czar exdebito justitiae exdebito natural ex dividend executive council executor dative ex-emperor ex-employee ex-enemy exercise bone ex facie ex-governor exhaust box exhaust cowl exhaust draft exhaust fan exhaust head exhaust horn exhaust jacket exhaust lap exhaust pipe exhaust port exhaust pump exhaust silencer exhaust steam exhaust-suction stroke exhaust valve exhibition game fowl ex-holder exile tree ex-invalid ex-judge ex-kaiser ex-king ex libris ex-librism ex-librist ex maleficio ex-mayor ex-minister ex new exo-condensation ex-official ex officio Exon domesday ex opere operato expansion ammeter expansion bend expansion bit expansion bolt expansion cam expansion coupling expansion curve expansion engine expansion fit expansion gear expansion joint expansion pipe expansion plate expansion pulley expansion ring expansion sleeve expansion slide expansion trunk expansion valve expansion wheel ex parte Expectation sunday Expectation week experience meeting experience rate experience table experimental engineer experimental engineering experiment station ex-pier explosion bomb explosion engine explosion insurance explosion-proof explosion shot explosion wave explosive d exponent proposition export bar export credit export declaration export point export tax exposed-tube boiler ex post facto ex post facto law exposure hazard exposure meter ex-praetor ex-president express buggy express car expression mark expulsion fuse ex-quay ex rights ex-service ex-ship ex ship tackles ex store extension bit extension bolt extension-gap lathe extension ladder extension lathe extension spring extension table extensor thrust exter-marriage external account external acoustic meatus external affairs external angle external auditory meatus external brake external capsule external carotid external-combustion extinction coefficient extra-acinous extra-alimentary Extra-american extra-ammotic extra-analogical extra-anthropic extra-articular extra-artistic extra-atmospheric extra-axillar extra-axillary extra-binding extra-bound extra-britannic Extra-christrian extra-condensed extraction thimble extraction turbine extraction wax extract wool extra current extra-dry extra-european extra-fare extra-fine extra-good extra-hazardous extra-illustrate extra-illustration Extra-judaical extra-large Extra-league extra-long extra-mild Extra-neptunian extra-size folio extra-special extra-strong extra-university extra-urban extruding press exudation pressure ex-voto eye agate eye bank eye-bedewing eye-beguiling eye-bewildering eye-bewitching eye-blinking eye-blurred eye-bold eye bone eye-brightening eyebrow pencil eye cap eye-casting eye-charmed eye-checked eye color eye-conscious eye-dazzling eye-delighting eye-devouring eye-distracting eye dotter eye draft eye-earnestly eye-ear plane eye-filling eye fold eye-glutting eye ground eye lens eyelet hole eyelet punch eye-minded eye-mindedness eye nut eye-offending eye opener eye-opening eye-overflowing eye-peep eyepiece micrometer eye-pleasing eye-rejoicing eye rhyme eye-rolling eye-searing eye-seen eye-sick eye socket eye speculum eye splice eye-spotted eye-starting eye stub eye-trying eye tube eye-watering eye wattle eye-weariness eye-winking eye worm fable book fable forger fable-framing fable play fable teller fabrication tax fabric spring fabric tire face-about face-ache face ague face angle face-arbor face bath face-bedded face bone face brick face card face-centered face chuck face cleat face cog face cord face cover face cream faced-lined face dresser face dressing face enamel face gear face guard face hammer face-harden face joint face lathe face lifting face mask face massage face milling face mite face mold face molder face-off face-on face paint face painter face painting face par face pit faceplate coupling faceplate jaw face powder face presentation face rouge face-saving face side face spanner face specialist face sponge face stone face string face towel face urn face value face wall face wheel facia board facies-suite facing distance facing head facing lathe facing-point lock facing-point switch facing sand facing slip facsimile telegraph fact-finding factor theorem factory burden factory committee factory cost factory farm factory ledger factory lumber factory manager factory system factory tar faculty adviser faculty psychology faculty theory fade-in fade-out fade-proof faery-fair faery-frail fag end fagot cinnamon fagot iron fagot vote fagot worm fail spot faint-blue faint-gleaming faint-glimmering faint-green faint-heard faint-hued fainting fit faint-lined faint-lipped faint-ruled faint-run faint-spoken faint-voiced faint-warbled fair-born fair-breasted fair-browed fair-cheeked fair-colored fair-complexioned fair-conditioned fair day fair-days Fair deal Fair dealer fair-eyed fair-faced fair-favored fair-featured fair-fortuned fair-fronted fair-haired fair-horned fair-hued fairing box fair lead fair-leader fair-leading fair maid fair-maned fair-minded fair-mindedness fair-natured fair play fair-reputed fair-sized fair-skinned fair-sounding fair-spoken fair-spokenness fair-stitch fair-stitcher fair stitching fair-tongued fair-trade fair-traded fair trader fair-tressed fair-visaged fairwater sleeve fair-weather fair-weather sailor fair whites fairy arrow fairy bell fairy bird fairy bluebird fairy book fairy-born fairy butter fairy candle fairy cap fairy circle fairy club fairy court fairy creeper fairy cup fairy finger fairy flax fairy gift fairy glove fairy godmother fairy grass fairy green fairy haunt fairy hillock fairy king fairy lamp fairy lily fairy lint fairy lore fairy man fairy martin fairy money fairy pageant fairy play fairy pool fairy primrose fairy prion fairy queen fairy ring fairy-ring mushroom fairy-ring spot fairy rose fairy shrimp fairy smoke fairy song fairy stone fairy tale fairy tern fairy tree fairy wallflower fairy wand fairy water lily fairy woman faith-breaking faith-confirming faith cure faith curer faith-curist faith healer faith healing faith-infringing faith-keeping faker-out faking box fa la falcon-beaked falcon-eyed falcon-gentle fald silver fal-lal fal-lalery fal-lalish fal-lalishly fall army worm fall aster fall block fall-board fall chronometer fall dandelion fall-down fall duck fall flower fall grape fall guy fall herring fall-in falling sickness fall lettuce fall line fall meadow rue Fallopian aqueduct Fallopian tube fallow chat fallow deer fallow finch fall phonometer Fall pippin fall-plow fall poison fall rope fall rose fall snipe fall-sow fall star grass fall-trap fall webworm fall wheat fall wind false-bedded false bedding false-boding false-bottomed false brome grass false buffalo grass false-dealing false-derived false-eyed false-face false-faced false-face society false-fingered false-fronted false-gotten false grass false guinea grass false-heart falsehood-free false-mermaid family false-nerved false oat false-packed false-plighted false-principled false-purchased false redtop false rice false-spoken false-sworn false-tongued false-visored false wheat false-written fame-achieving fame-blazed fame-crowned fame-ennobled fame-giving fame-loving fame-preserving fame-seeking fame-sung fame-thirsting fame-thirsty fame-worthy familia rustica family allowance family altar family bible family circle family compact family-conscious family contract family expense family living family man family meeting family name family party family physician family romance family skeleton family style family tree family wage famine bread famine fever fan-bearing fan belt fan blade fan blower fan brake fan consonant fan coral fan-crested fan cricket fancy-baffled fancy-blest fancy-born fancy-borne fancy-bred fancy-built fancy-caught fancy-driven fancy-fed fancy-feeding fancy-formed fancy-framed fancy-free fancy-guided fancy-led fancy-loose fancy man fancy-raised fancy-shaped fancy-stirring fancy-struck fancy-stung fancy trimmer fancy-weaving fancy-woven fancy-wrought fan dance fandango bird fan delta fan-fashion fan fitter fang bolt fan guard fanleaf palm fan-leaved fan maidenhair fan marker fan mill fan-nerved fanning machine fan painter fan palm fan-pleated fan pulley fan pump fan roof fan scale fan-shape fan-shaped fan shell fan system fan-tailed fan-tailed darter fantail joint fan-tan fan tracery fan training fan tree fan truss fan vault fan vaulting fan-veined fan wheel fan window fan-wing fly far-advanced far-aloft far-back far-borne far-branching far-called farce comedy far-come far-cost far cry farcy bud farcy pipe far-darting fardel-bound far-discovered far-distant far-down far-downer far-driven Far east far-eastern Far eastern fare-free far-embracing farewell-summer far-extended far-extending far-famed far-flashing far-flown far-flung far-flying far-foamed far-gleaming far goer far-gone far-heard far-horizoned far-looking far-looming farm bloc farm-bred farm bureau farm elevator farm-engro farmer drill farmer-general farmer-generalship farm hand farm level Farm loan bank farm loan bond farm management farm manager far-northern faro bank faro banker far-off far-offness far-parted far-passing far-projecting far-ranging far-reaching far-removed far-resounding far-seen far seer far-shooting far-sight far-sought far-sounding far-southern far-spread far-spreading far-stretched far-stretching far-traveled far traveler far-western fascia board fascine choker fashion book fashion designer fashion-fancying fashion-fettered fashion-following fashion gray fashioning needle fashion-led fashion piece fashion plate fashion-setting fashion show fashion writer fast-anchored fast boat fast-bound fast-cleaving fast-darkening fast day fast-dyed fastening-penny Fasten tuesday fast-fading fast-falling fast-feeding fast-fettered fast-fleeting fast-flowing fast-footed fast-gathering fast-grounded fast-growing fast-handed fast-joint hinge fast-knit fast-mass fast-moving fast-plighted fast-rooted fast-rootedness fast-running fast-sailing fast-settled fast-stepping fast-tied fat acid fatal-boding fatal-looking fatal-plotted fatal-seeming fat-backed fat-barked fat-bellied fat-bodied fat box fat cell fat-cheeked fat-choy fat corpuscle fate-bowed fate-denouncing fat-edged fate-dogged fate-environed fate-foretelling fate-furrowed fate line fate-menaced fat-engendering fate-scorning fate-stricken fat-faced fat-fed fat-fleshed fat-free fat gland fat granule fat hen father abbot father complex father-confessor father family father-in-law father jesuit father-lasher father longlegs father right father rule father sib father superior fat-hipped fathom-deep fatigue call fatigue cap fatigue curve fatigue disease fatigue dress fatigue duty fat-legged fat liquor fat-necrosis fat oil fat-paunched fat pork fat-reducing fat-rumped sheep fat series fat-shunning fat-soluble fat-tailed fat-tailed sheep fattening grass fat-witted faucet joint fault bar fault block fault breccia fault conglomerate fault current fault line fault-line scarp fault localizer fault plane fault rock fault rubble fault scarp fault-slip fault surface fault terrace fault vent faun-colored faunus butterfly faux-bourdon faux jour faux rondelette fava bean fawn brown fawn-color fawn-colour fawn lily Fayal lily faying surface F clef fear-broken fear-created fear-depressed fear-free fear-froze fear-inspiring fear-palsied fear-pursued fear-shaken fearsome-looking fear-struck fear-tangled fear-taught feast day feather alum feather ball feather beater feather bed featherbed rule feather bleacher feather boa feather boarding feather bolster feather bonnet feather brush feather cleanser feather cloth feather columbine feather-covered feather crotch feather curler feather dresser feather drier feather driver feather duster feather dyer featheredge file feather fan feather fern feather finisher feather-footed feather geranium feather grass feather-heeled feather hyacinth feathering float feathering paddle wheel feathering screw feather joint feather key featherleaf cedar feather-leaved feather-legged feather mail feather maker feather making feather mattress feather mosaic feather moss feather ore feather palm feather picker feather pillow feather pink feather plume feather poke feather renovator feather scrape feather sewer feather shot feather spring feather staccato feather star feather steamer feather tick feather tip feather-tongue feathertop grass feather tree feather trimmer feather valve feather-veined feather-weighted febrifuge plant Fechner fraction fed-up fed-upedness fed-upness feeble-bodied feeble-eyed feeble-lunged feeble-minded feeble-mindedly feeble-mindedness feeble-voiced feeble-winged feeble-wit feed-back coil feed bag feed boiler feed case feed cooker feed crusher feed cutter feeder cable feeder ear feeder-in feeder line feeder reactor feeder-up feed gear feed grinder feed guide feed hand feed heater feed heating feed hopper feeding bottle feeding cup feeding head feeding point feeding rod feeding root feeding standard feed line feed lot feed mill feed mixer feed motion feed packer feed pipe feed plate feed pump feed rack feed reel feed rod feed roll feed screw feed stable feed store feed tank feed trough feed truck feed tube feed valve feed water feed-water heater feed wheat feed wheel feed wire fee farm fee farmer fee-faw-fum fee grief feeing market feeling tone feery-fary fee simple fee tail Felletin tapestry fell-field felling wedge fell-land fellow actor fellow american fellow apprentice fellow being fellow boarder fellow captive fellow caucasian fellow christian fellow citizen fellow collegian fellow commoner fellow communicant fellow conspirator fellow convict fellow countryman fellow craftsman fellow creature fellow criminal fellow delegate fellow disciple fellow emigrant fellow employee fellow exile fellow explorer fellow feeling fellow guest fellow heir fellow helper fellow idler fellow immigrant fellow laborer fellow listener fellow lodger fellow man fellow member fellow mortal fellow passenger fellow patriot fellow pedestrian fellow plotter fellow prisoner fellow pupil fellow servant fellowship porter fellow sinner fellow soldier fellow student fellow sufferer fellow townsman fellow traveler fellow tribesman fellow victim fellow villager fellow worker fellow workman fellow worshiper felon grass felon herb felsite-porphyry felt conditioner felt cutter felt dauber felt drier felt fern felt former felt fuller felt grain felt-jacketed felt knife felt-lined felt oiler felt packer felt roller felt roofer felt roofing felt rust felt sewer felt-shod felt washer felt weaver felt worker feme covert feme sole feme-sole trader fen-born fen-bred fence arbor fence balk fence builder fence lizard fence maker fence month fence-off fence post fence puller fence rail fence season fence splicer fence stretcher fence tightener fencing foils fencing mask fencing master fencing match fencing school fencing stick fen cress fender bar fender beam fender bolt fender boom fender pile fender post fender skid fender spar fen duck fen farmer fen farming fen fever fen fire fen grape fen groundsel fen lentil fennel giant fennel-leaved fennel oil fennel seed fennel water fen orchis fen rue fen skate fen skater fen skating fen-sucked fen thrush fen-ting feriae jova ferling-noble fermentation gum fermentation tube fern ally fern ball fern bracken fern bush fern-clad fern clubmoss fern covert fern-crowned fern cycad fern-fringed fern green fern hook fern-leaved fern meadowbur fern moss fern owl fern palm fern preserver fern scale fern scrub fern seed fern-thatched fern tree fern weevil ferret-badger ferret-eyed ferretto zone ferro-carbon-titanium ferrotype tin ferro-uranium ferry bell ferry bridge ferry captain ferry car ferry craft ferry incline ferry master ferry pole ferry slip ferry steamer ferry ticket ferry warden fertile-flowered fertile-fresh fertile-headed fertilization cone fertilization tube fertilizer ammonia fertilizer chemical fertilizer crusher fertilizer-crushing fertilizer distributor fertilizer divider fertilizer drill fertilizer hand fertilizer maker fertilizer making fertilizer meal fertilizer mill fertilizer mixer fertilizer phosphate fertilizer plant fertilizer press fertilizer sampler fertilizer spreader fertilizer tank fescue grass fess point festoon cloud festoon lighting festoon pine fetch candle fetched-on fetch rod fete day fetlock-deep fetter bone feu annual feu charter feu duty feu farm feu farmer fever bark fever bird fever blister fever chart fever-cooling fever curve fever-destroying fever flash fever fly fever-haunted fever heat fever-lurden fever-maddened fever plant fever-ridden fever-shaken fever-sick fever-smitten fever sore fever-stricken fever therapy fever thermometer fever tree fever-troubled fever-warm fever-weakened few-acred few-celled few-flowered few-flowered oat grass few-fruited few-seeded few-toothed F-flat F-head cylinder f-hole F horn Fianna fail fibble-fable fiber boilerman fiber carder fiber comber fiber crimper fiber drafter fiber dresser fiber-faced fiber filler fiber graphite fiber hackler fiber mixer fiber plant fiber plaster fiber saturation point fiber-shaped fiber sorter fiber stitch fiber turner fiber wax fibrin ferment fibroid phthisis fibro-osteoma fibrous-coated fibrous grass fibrous-rooted fickle-fancied fickle-headed fickle-minded fickle-mindedly fickle-mindedness fiddleback chasuble fiddle beetle fiddle block fiddle bow fiddle-brained fiddle case fiddle dock fiddle-faced fiddle-faddle fiddle-faddler fiddle-flanked fiddle flower fiddle head fiddle-lipped fiddle maker fiddle making fiddle-neck fiddler crab fiddler duck fiddle-scraping fiddle-shaped fiddle-waist fiddley house fiddley opening fideicommissary heir fidelity bond fidelity insurance fid hole fie-fie field army field artillery field ash field balm field balsam field basil field battery field bean field bed field bee field beet field bellwort field betony field bindweed field book field bugloss field camomile field capacity field chickweed field clerk field coil field company field control field-control converter field-controlled field conventicle field-conventicler field corn field-cornet field-cornetcy field cress field cricket field crop field crowfoot field cypress field daisy field day field-discharge switch field dodder field dog field driver field duck field fortification field frame field garlic field glass field goal field gray field gromwell field gun field hand field hockey field horsetail field hospital field house field ice fielding average field intensity field judge field kale field kitchen field lark field larkspur field lens field lily field madder field magnet field maneuver field marigold field mark field marshal field martin field meeting field milkwort field mint field mouse field mushroom field music field nigelweed field night field oak field officer field order field park field pea field pine field plotter field plover field poa grass field poppy field probable error field ration field rivet field rush field salad field scabious field scorpion grass field soapwort field sorrel field southernwood field spaniel field sparrow field speedwell field spider field spool field staff field stop field strength field system field telegraph field thistle field thyme field tiller field titling field train field training field-transfer switch field trial field trip field vole field winding field wormwood field woundwort field yam-root fierce-eyed fierce-faced fierce-looking fierce-minded fierce-natured fiery-bright fiery-crowned fiery-eyed fiery-faced fiery-fierce fiery-flaming fiery-footed fiery-helmed fiery-hoofed fiery-hot fiery-kindled fiery-liquid fiery-mouthed fiery-pointed fiery-rash fiery-seeming fiery-shining fiery-spangled fiery-sparkling fiery-spirited fiery-sworded fiery-tempered fiery-tressed fiery-twinkling fiery-veined fiery-visaged fiery-wheeled fiery-winged fiesta flower fife rail fifteen-pounder fifth column fifth columnist fifty-acre fifty-eight fifty-eighth fifty-fifth fifty-fifty fifty-first fifty-five fifty-four fifty-fourth fifty-mile fifty-nine fifty-ninth fifty-one fifty-second fifty-seven fifty-seventh fifty-six fifty-sixth fifty-third fifty-three fifty-two fifty-year figaro sauce fig banana fig bar fig bean fig dust fig faun fig finch fighting cock fighting ship fighting weight fight-off fig insect fig leaf fig marigold fig moth fig parrot fig paste fig-shaped fig soap fig-tree wax figure caster figure dance figure dancer figure eight figure-four trap figure skater figure skating figure stone figure work fig wart fig wasp fig wax figwort family Fiji arrowroot Fiji chestnut filament battery filament lamp filbert brown filbert mouse file card file cleaner file closer file cutter file dresser file dust file finishing file firing file forger file grinder file-hard file setter file sharpener file signal file snake file-soft file tempering filet mignon Filipino-american Filipino ration filix-mas fill-belly fill-dike filler-in filler-out filler-up filler vase filler wall fillet head filletster plane fill-in filling station fillister head fillister screwhead fill-paunch fill-space fill-up filly-folly filly tail film base film camera film caption film case film color film cutter film developer film editor film evaporator film fern film-free film gate film joiner film paper film play film printer film production film repairer film sizing film star film-struck film studio filmy-eyed filter bed filter candle filter center filter factor filter flask filtering flask filter leaf filter paper filter passer filter-passing filter plate filter press filth-borne filth-created filth disease filth-fed filth ferment filth-sodden filthy-handed filum aquae Fimbul-winter Finality men finance bill finance company Finance department fin-backed finback whale fin boom finch falcon fin colter fin cutter finder-point punch finder switch finding list finding store fine-appearing fine art fine arts fine-ax fine-bore fine-bred fine-count fine-cut fine-dividing fine-draw fine-drawer fine-drawn fine-dressed fine-eyed fine-feathered fine-featured fine-feeling fine-fleeced fine-furred fine-graded fine-grained fine-haired fine-headed fine-leaved fine-leaved heath fine-looking fine-mouthed fine-nosed finery furnace finery hearth fine-set fine sewer fine-sifted fine-skinned fine-spirited fine-spoken fine-tapering fine-threaded fine-timbered fine-toned fine-tongued fine-tooth fine-tooth comb fine-toothed fine-tricked fine-wrought fin fold fin-fold theory fin-footed finger-ache finger alphabet finger-and-toe finger bar finger board finger bowl finger brush finger clamp finger-comb finger-comb grass finger-cone finger-cone pine finger coral finger-cut finger cutting finger exercise finger fern finger-foxed finger fracture finger gauge finger grass finger grip finger guard finger herb finger hole finger joint finger lake finger lime finger mark finger nut finger painting finger plate finger-pointing finger post finger ring finger-shaped finger shell finger sponge finger steel finger wave finish-bore finish-cut finisher card finish-form finish-grind finishing change finishing chisel finishing nail finishing school finishing stove finishing tap finish-machine finish-mill finish-plane finish-ream finish-shape finish-stock finish-stock change finish-turn fin keel finnan haddie finnan haddock Finno-hungarian Finno-slav Finno-slavonic Finno-tatar Finno-turki Finno-turkish Finno-ugrian Finno-ugric fin ray fin-shaped fin-spined fin-tailed fin-toed fin whale fin-winged fippenny bit fipple flute fir apple fir ball fir balsam fir-bordered fir-built fir club moss fir cone fir-crested Fir domnann fire adjuster fire alarm fire altar fire-angry fire ant fire apparatus fire appliance fire area fire arrow fire assay fire-backed pheasant fire balloon fire-baptized fire bar fire barrel fire barrier fire basket fire bean fire-bearing fire beater fire bed fire beetle fire bell fire-bellied fire belt fire bill fire blast fire blight fire block fire blower fire-born fire boss fire breather fire-breathing fire-breeding fire bridge fire brigade fire bucket fire builder fireburn bush fire-burning fire-burnt fire bush fire cage fire chamber fire cherry fire chief fire churn fire-clad fire clay fire cock fire command fire commander fire company fire control fire-cracked firecracker flower fire-crested fire cross fire-crowned fire-cure fire curtain fire cutoff fire dance fire-darting fire department fire-detecting fire division wall fire door fire drill fire drilling fire-eater fire-eating fire effect fire-endurance fire-endurance test fire engine fire escape fire exit fire-exit bolt fire extinguisher fire-extinguishing fire-eyed fire fan fire festival fire fiend fire fight fire fighter fire fighting fire finch fire finder fire flag fire-float fire-flowing fire-foaming fire-footed fire-free fire fungus fire-gilded fire gilding fire gilt fire gilting fire glass fire-god fire gong fire grass fire grate fire hangbird fire-hardened fire hat fire hazard fire hearth fire-hoofed fire hook fire hose fire-hot fire-hunt fire-hunting fire hydrant fire inspector fire insurance fire iron fire kiln fire ladder fire lane fire-leaves fire-lighted fire lily fire line fire-lipped fire loss fire main fire maker fire making fire mark fire-marked fire marshal fire mist fire-mouthed fire net fire-new fire office fire opal fire pail fire patrol fire pike fire pink fire pit fire-pitted fireplace fitter fire plant fire-plow fire point fire police fire-polish fire pot fire prevention fire-protection engineer fire quencher fire-quenching fire raft fire-raiser fire-raising fire-red fire reel fire resistance fire-resistive fire-retardant fire-retarded fire retarder fire-ring fire risk fire-robed fire root fire-safeness fire salamander fire sale fire salvage fire sand fire saw fire scarlet fire-scarred fire-scathed fire screen fire-seamed fire set fire setting fire ship fire shovel fire shutter fire slash fire-souled fire spirit fire-spirited fire-spitting fire-sprinkling fire station fire step fire stick fire stink fire stop fire-strong fire swab fire-swart fire-swift fire-tailed fire temple fire test fire thorn fire-tight fire tongs fire tower fire tree fire trench fire tube fire-tube boiler fire underwriter fire walk fire wall fire-warmed fire-wheeled fire window fire-winged fire worker fire worship fire worshiper fir green firing charge firing data firing iron firing line firing party firing pin firing ring firing squad firing step firing tread firmament blue firm-based firm-braced firm-chinned firm-compacted firm-footed firm-framed firm-jawed firm-joint firm-minded firm-nerved fir moss firm-paced firm-planted firm-rooted firm-set firm-sinewed firm-textured firm-written fir needle fir parrot fir pine fir rape fir rope fir-scented first-aid first-aider first-begot first-begotten first-born first-bred first-built first-chop first-class first-class mail first-conceived first-created first-done first-endeavoring first-expressed first-famed first-foot first-formed first-found first-framed first-gendered first-gotten first-grown first-invented first-known first-loved first-made first-mentioned first-mining first-mortgage bond first name first-named first-night first-nighter first off first-order reaction first-page first-preferred first-rate first-rately first-rateness first-rater first-ripe first-seen first-string first-told first-written fir-topped fir wood fir wool fise dog fish-backed fish ball fish beam fish begonia fish-bellied fish belly fish-belly rail fish blanket fish-blooded fishbone thistle fishbone tree fish boom fish breeder fish breeding fish cake fish-canning fish carrier fish carver fish checker fish coop fish crane fish crow fish-cultural fish culture fish-culturist fish davit fish day fish dinner fish duck fish-eating fisher-cat fishery salt fish essence fish-eyed fish factory fish-fag fish-fed fish-feeding fish flake fish-flaking fish flour fish fly fish fork fish fry fish fungus fish geranium fish globe fish glue fish-god fish-goddess fish grass fish guano fish hatcher fish hatchery fish-hatching fish hawk fishhook cactus fishhook money fishing banks fishing boat fishing breeze fishing cat fishing club fishing craft fishing dory fishing duck fishing float fishing gear fishing ground fishing hook fishing line fishing net fishing pole fishing reel fishing rod fishing schooner fishing smack fishing spear fishing tackle fishing worm fish inspector fish joint fish kettle fish killer fish ladder fish louse fish manure fish maw fish meal fish mint fish mold fish moth fish net fish oil fish owl fish pearl fish pendant fish plank fish poison fish pole fish pomace fish-producing fish salt fish scale fish-scaling fish scrap fish-selling fish-shaped Fishskin tatar fish slice fish-slitting fish splice fish story fish tackle fishtail bit fishtail burner fishtail cutter fishtail drapery fishtail palm fishtail-shaped fishtail wind fish tape fish tapeworm fish tongue fish torpedo fish warden fish wheel fish wire fission alga fission bomb fission fungus fissure vein fist hatchet fist law fist mate fit plant fit strip fittie-lan fitting change fitting strip Fitz-james five-acre five-act five all five back five-barred five-barred gate five-beaded five-branched five-card five-chambered five-corn five-cornered five-corners five-cut five-day five-day week five-figure five-finger five-fingered five-fingers five-flowered five-foiled five-foot five-gaited five-guinea five-horned five-hour five-inch five-leaf five-leafed five-leaved five-line five-lined five-lobed five-master five-mile five-minute five-nerved five-nine five-page five-part five-parted five-part time fivepenny morris five percenter five-ply five-pointed five-pound five-quart five-rater five rayed five-reel five-reeler five-ribbed five-room five-shooter five-sisters five-spot five-spotted five-story five-stringed five-toed five-toothed five-twenty five-valved five-volume five-week five-year Five-year plan fixation abscess fixation pause fixation point fixed-bar fixed-do fixed-hub fixed-hub axle fixed-temperature flabby-cheeked flag-bearer flag-bedizened flag captain flageolet tone flag flower flagging iron flag halyard flag hoister flag lieutenant flag list flag officer flagon-shaped flag post flag rank flag signal flag smut flag station flag stop flail joint flake figure flake manna flake stand flake tragacanth flake white flak ship flak train flame azalea flame blue flame-breasted flame-breathing flame bridge flame cell flame-colored flame-cut flame-darting flame-devoted flame-eyed flame-faced flame-feathered flame-haired flame ignition flame lily flame lousewort flame manometer flame nettle flame projector flame reaction flame-red flame-robed flame scarlet flame-shaped flame-snorting flame-sparkling flame spectrum flame standard flame test flame thrower flame-tight flame-tipped flame tree flame-uplifted flame vine flame-winged flamingo flower flange bushing flange coupling flange joint flange nut flange plate flange pulley flange rail flange steel flange tile flange union flank attack flank company flank defense flank file flank fire flank guard flanking angle flank march flank movement flank patrol flank steak flannel cake flannel moth flannelmouth catfish flap-eared flap hinge flapper-bag flapper dock flapper skate flap tile flare light flare-out flare-up flash back flash boiler flash bulb flash burn flash butt welding flash card flash color flashed brick flash gear flash generator flash gun flashing block flashing point flash lamp flash method flashover voltage flash pipe flash point flash set flash spectrum flash test flash tube flash valve flash welding flash wheel flask-shaped flat-armed flat back flat-backed flat-beaked flat-bed flat-billed flat-bosomed flat-bottomed flat-breasted flat-browed flat-cheeked flat-chested flat-compound flat-crowned flat-decked flat-ended flat-faced flat-floored flat-fold flat foot flat-footed flat-footedly flat-footedness flat-fronted flat-grained flat-handled flat-hatter flathead cat flat-headed flat-heeled flat-hoofed flat-horned flat-joint pointing flat key flat-knit flat-minded flat-mouthed flat-nosed flat-out flat-packed flat-plate keel flat-plate printing flat point lace flat race flat racing flat-ribbed flat-ring flat-ring armature flat-roofed flat sage flat-shouldered flat-sided flat-slab construction flat-soled flattail mullet flattened-strand rope flattening oven flattening stone flatter-blind flatting furnace flatting mill flatting oil flat tire flat-toothed flat-topped flat-turret lathe flat-visaged flat-waisted flatwork ironer flavoring extract flax bellflower flax blue flax brake flax buncher flax bundler flax canker flax comb flax dodder flax dresser flaxen-haired flaxen-headed flaxen-wigged flax family flax-flower blue flax hackler flax-leaved flax lily flax olive flax plant flax-polled flax retter flax ripple flax rust flaxseed cake flaxseed coal flax-sick flax snapdragon flax spinner flax star flax straw flax vine flax wheel flax wilt flax winder F layer fleabane mullet flea beetle flea-bitten flea bug flea fair flea hopper flea louse flea-lugged flea mint fleam tooth fleece-lined fleece vine fleece wool fleecy-looking fleecy-white fleecy-winged fleet admiral Fleet-book evidence fleet engineer fleet-foot fleet-footed fleet insurance fleet milk fleet submarine Flemish-coil Flemish school flench-gut flesh-bearing flesh color flesh-colored flesh-consuming flesh crow flesh-devouring flesh eater flesh-eating flesh-fallen flesh flea flesh fly flesh fork flesh glove flesh hoop fleshing knife fleshly-minded flesh ocher flesh pink flesh red flesh side flesh tint flesh tone flesh worm fleshy fruit fleshy-fruited fleur-de-lis fleur de luce fleur de lys fleurs-de-lis fleury counterfleury flexible shaft flexible-shaft drill flex point flexure plate scale flicker photometer flicker photometry Flickertail state flier-out flight arrow flight feather flight muscle flight path flight shooter flight shooting flight song flight strip flinders grass flinging-tree flint age flint clay flint corn flint-dried flint glass flint gray flint mill flint miller flint milling flint paper flint paring flint skinning flint sponge flint wheat flip-flap flip glass flipperty-flopperty flippity-flop flip-up flirtation-proof flirt-gill flitch beam flitch girder flitch plate float bowl float bridge float builder float carburetor float chamber float copper float-cut float-cut file float-feed float-feed carburetor float fescue float fishing float foxtail float grass floating fescue floating foxtail floating grass floating manna grass float-iron float key float net float ore float pump float road float stick float tank float trap float valve float whey float work flock book flock duck flock mating flock pigeon floe rat flogging chisel flogging hammer flood dam flood fallowing flood-hatch flood lamp floodlight projector flood tide floor arch floor beam floor board floor boarding floor broker floor chisel floor clamp floor cleaner floor cleaning floor covering floor dresser floor dressing floor finish floor hanger flooring beam flooring block flooring board flooring clamp flooring grating flooring hatchet flooring joist flooring lumber flooring nail flooring plank flooring plaster flooring saw flooring stone flooring timber floor joist floor knob floor lamp floor leader floor line floor-load floor mat floor mop floor oil floor oiler floor paint floor pit floor plan floor plate floor play floor plug floor polish floor polisher floor push floor sander floor scraper floor show floor slab floor stain floor switch floor system floor tile floor timber floor trader floor wax floor waxing flop-eared flop-top floral decorator Florentine school flores sulphuris flos ferri flosh silk flossflower blue floss hole floss silk floss thread flotation blanket flotation cell flotation gear flounder-man flour bag flour barrel flour beetle flour bin flour blend flour blender flour blending flour bolt flour bolter flour bolting flour copper flour corn flour grinder flour hopper flourishing thread flour maker flour mill flour miller flour milling flour mite flour mixer flour moth flour packer flour paste flour sack flour sifter flour sifting flour slick flour weevil flour weigher flour worm flowage texture flow bean flow-blue flow calorimeter flower-bearing flower bed flower beetle flower-bespangled flower-besprinkled flower boat flower-breeding flower bud flower concrete flower-crowned flower cup flower-cup fern flower-decked flower-embroidered flower-enameled flower-enwoven flower-faced flower fence flower garden flower girl flower grower flower head flower-hung flower-infolding flowering rush flowering-rush family flower-inwoven flower-kirtled flower maker flower making flower painter flower painting flower paintress flower piece flower pride flower-scented flower scissors flower seller flower-shaped flower shop flower show flower spike flower-sprinkled flower stalk flower-strewn flower-sucking flower-sweet flower-teeming flower time flower tree flowery-kirtled flowery-mantled flow gate flowing-robed flow moss flow nipple flow sheet flow texture fluctuation-proof flue bridge flue cleaner flue-cure flue pipe flue plate flue stop flue stopper flue surface fluff-gib fluffy-haired fluffy-minded fluid assets fluid-compressed fluid compression fluid die fluid drive fluorite green fluorite violet flush-bound flush box flush coat flush-cut flush deck flush-decked flush-decker flush-headed flush-head rivet flushing rim flush-jointed flush-plated flush-plate filter flush rim flush tank flute-douce flute glass flute-shaped flute shrike flute stop flutter-headed flutter kick flutter valve flutter wheel fluvio-aeolian flux density flux function flux turn fly agaric fly anchor fly ash flyaway grass fly bar fly-bitten fly blister fly block fly cap fly-catching fly cop fly drill fly finisher fly finishing fly-fish fly-fisher fly-fisherman fly-fishing fly frame fly-free fly fungus fly governor fly half fly honeysuckle flying circus flying deck flying fish flying machine flying start fly-killing fly line fly mold fly mushroom fly net fly nut fly oat fly orchid fly page fly poison fly powder fly press fly rail fly rod fly rollway fly rope fly sheet fly snapper fly-specked fly-spleckled fly spring fly stone fly-stuck fly-swarmed fly tick fly tip fly title fly wagon fly water fly weevil flywheel efficiency flywheel-explosion F major F minor F natural foam-beat foam-born foam-crested foam extinguisher foam-flanked foam-flecked foam-girt foam-lit foam-painted foam rubber foam-white fob chain focal plane focal-plane shutter focusing glass focus lamp focus tube foe-encompassed foe-reaped foe-subduing fog alarm fog bank fog bell fog belt fog-beset fog-blue fog-born fog-bred fog buoy fog circle fog grass fog-hidden fog-logged fog-ridden fog screen fog signal fog whistle fold dike folder-up fold soke foliage brown foliage carver foliage green foliage leaf folio letterheads folio noteheads folio post folk air folk art folk ballad folk belief folk carol folk custom folk dance folk drama folk ethics folk-etymological folk etymology folk lay folk literature folk medicine folk melody folk mind folk music folk myth folk nation folk play folk poetry folk psychologist folk psychology folk school folk singer folk song folk speech folk state folk tale folk theater folk tune follicle mite follow block follow dies follower plate follower rest follower-up follow-my-leader follow-on follow rest follow shot follow-through follow-up folly-bent folly-blind folly-drenched folly-fallen folly-fed folly-maddened folly-painting folly-snared folly-stricken fond-blind fond-conceited fond-hardy fond plow fond-sparkling food allowance food analyst food ball food cabinet food canal food card food cart food chain food chemist food container food cycle food faddist food fish food grain food grower food inspector food package food packer food plant food preservative food-processing food-producing food-productive food-providing food reserve food shop food-sick food-size food supply food tax food tube food value food waste food yolk foo-foo fool-bold fool-born fool duck fool-frequented fool-frighting fool-happy fool hay fool-headed fool-heady fool hen foolish-bold foolish-looking foolish-wise foolish-witty fool plow foot accelerator foot-acted foot base foot bath foot bellows foot-binding foot bone foot brake foot-candle foot-candle meter foot carpet foot correctionist foot cushion foot dirt foot doctor foot drop foot-faring foot fault foot-firm foot-free foot front foot-grain foot-grain per second foot guard foothill death camas foothill pine foothill yellow pine footing ale footing beam footing stone foot iron foot jaw foot-lambert foot-lame foot-length foot lever foot-licking foot lift foot line foot-loose foot mange footman moth foot mantle foot match foot measure foot page foot pan foot passenger foot pavement foot post foot-pound foot-poundal foot-pound-second foot-power foot pump foot race foot racer foot racing foot road foot rot foot rule foot-running foot scab foot score foot scraper foot screw foot-second foot soldier foot specialist footstep bearing foot stove foot-tiring foot-ton foot tour foot track foot trail foot traveler foot tubercle foot-up foot valve foot waling foot walker foot warmer foot washing foot-weary forage cap forage grass forage poisoning forage press foraging ant force attack force bed force-closed force feed force feeding force fit force function force main force-out force play force polygon forceps-shaped force pump force-put forcible-feeble forcing engine forcing fit forcing system fore-age fore-and-aft-rigged fore-being fore bow forecastle deck forecastle hand forecastle hatch forecastle netting forecastle rail forecastle scuttle forecastle watch fore edge fore-elder fore-end fore-exercise fore-glide fore-gut forehand shaft forehand shooting foreign-appearing foreign-born foreign-bred foreign-built foreign-looking foreign-made foreign-manned foreign office foreign-owned foreign-speaking forelock hook fore-oath fore part fore plane fore rent fore rider fore-set beds fore sey fore-stage forest-belted forest-born forest-bosomed forest-bound forest-bred Forest city forest-clad forest court forest cover forest-covered forest-crowned forest dweller forest-dwelling forest-felling forest fire forest fly forest-frowning forest green forest-grown forest gum forest horse forest keeper forest mahogany forest oak forest officer forest peat forest pig forest pygmy forest ranger forest red gum forest-rustling forest school Forest service forest sheriff forest tent caterpillar forest tupelo forest type forest warden forest white fore-tooth fore-topgallant fore-topmast fore-topsail forge blower forge furnace forge furnaceman forge hammerman forge pressman forge roller forgery bond forgery-proof forge shearer forge slinger forge smith forget-me-not forget-me-not blue forge water forging press fork beam fork-carving fork cutler forked-headed forked-tailed fork-end fork-filled fork forger fork grinder fork hafter fork maker fork molder fork-pronged fork-ribbed fork-shaped fork splitter fork-tailed fork-tined fork-tongued formatio reticularis form board form class form-establishing form factor form-fitting form genus form-giving forming die forming press forming punch form letter formolite number formolite reaction Formosa oolong form quotient form-relieve form-revealing form species Fors fortuna Forsta kammaren Fort ancient fortification agate Fort pierre fort royal fortune hunter fortune-hunting Fort union forty-acre forty-eight forty-eighth forty-eightmo forty-fifth forty-first forty-five Forty-five forty-foot forty-four forty-fourth forty-knot forty-legged forty machine forty-mile forty-nine forty-niner forty-ninth forty-one forty-pound forty-second forty-seven forty-seventh forty-six forty-sixth forty-skewer forty-spot forty-third forty-three forty-ton forty-two forty-year forward-bearing forward bridge forward-creeping forward delivery forward echelon forward exchange forward-flowing forward-looking forward pass forward-pressing forward quotation forward-turned fossil copal fossil ivory fossil man fossil mud crack fossil oil fossil ore fossil resin fossil sea water fossil turquoise fossil word foster babe foster child foster dam foster daughter foster father foster home foster land foster milk foster mother foster nurse foster parent foster sire foster son foul-breathed foul-browed foul-faced foul-handed foul line foul-looking foul-minded foul-mindedness foul-reeking foul-smelling foul-spoken foul-tongued foundation course Foundation day foundation garment foundation plate foundation stone foundation stop foundling hospital foundry facing foundry iron foundry proof foundry scrap fountain grass fountain moss fountain pen fountain plant fountain runner fountain shell fountain syringe fountain tree four-acre four-bagger four-ball four-cant four-cent four-centered four-color four-colored four-cornered four-coupled four-cutter four-cycle four-cylinder four-cylindered four-day four-deck four-decked four-decker four-dimensional four-dimensioned four-dollar four-edged four-eyed four-eyes four-faced four-figured four-fingered four-flowered four-flush four-foot four-footed four-footer four-foot octave four-foot stop four-gallon four-grain four-gram four-gun Four-h four-hand four-handed four-hander four-headed four-horned four-horse four-horsed four-hour four-hours Fourier analysis four-inch four-leaf four-leafed four-leaved four-legged four-letter four-lettered four-line four-lined four-line octave four-lobed four-masted four-master four-minute four-minute man four-month four-oar four-oared four-oclock four-oclock family four-ounce four-part four-part flask four-part time fourpence hapenny four-phase four-place four-ply four-post four-posted four-poster four-pound Four-power four-quarter four-ring four-roomed four-rowed four-second four-shilling four-sided four-spined four-spotted four-storied four-story four-stranded four-stringed four-striped four-striper four-stroke four-stroke-cycle fourth-born fourth-class fourth dimension fourth-dimensional fourth-form fourth-hand fourth-rate fourth-rater four-three-two-one rule fourth-year four-time four-times-accented four-tined four-toed four-toes four-ton four-tooth four-way four-way cock four-way switch four-week four-wheel four-wheeled four-wheeler four-winged four-yard four-year four-year-old four-year-older fowl cherry fowl cholera fowl grass fowling piece fowl leukemia fowl meadow grass fowl mite fowl paralysis fowl pest fowl pox fowl spirochaetosis fowl tick fowl typhoid fox bat fox bolt fox-colored fox docken fox dog fox-faced fox fire fox-furred fox geranium fox goose fox grape fox grass fox hunt fox hunter fox hunting fox key fox lathe fox light fox moth fox-nosed fox plum fox poison fox rose fox shark fox-skinned fox snake fox sparrow fox squirrel foxtail cactus foxtail grass foxtail millet foxtail pine foxtail saw foxtail wedging foxter-leaves fox terrier fox trot fox-visaged fox wedge fox wolf fractional-pitch frail-bodied frame assembler frame bar frame bend frame boat frame brazer frame breaker frame breaking frame bridge frame builder frame building frame cleaner frame construction frame cottage frame dam frame door frame doubler frame dresser frame driller frame dwelling frame finisher frame fitter frame gate frame house frame lumber frame-made frame maker frame making frame molding frame plate frame saw frame sawyer frame set frame space frame structure frame stud frame timber frame trestle frame turner frame-up frame vise frame wall frame-work frame worker framing number franc-archer franchise tax Franco-american Franco-annamese Franco-austrian Franco-british Franco-canadian Franco-chinese Franco-gallic Franco-gallician Franco-gaul Franco-german Franco-italian Franco-latin Franco-lombardic Franco-mexican Franco-negroid Franco-provencal Franco-prussian Franco-roman Franco-russian Franco-soviet Franco-spanish Franco-swiss francs-archers franc-tireur frangula emodin frank almonage frank chase frank-faced frankfurt sausage frankincense pine Franklin cent Franklin tree frank-spoken frater house Fratres arvales Fratres praedicatores fraud order freckled-faced free-acting free-armed free-banking free-bestowed free-blown free-bred free-burning free church free-falling free-floating free-flowering free-flowing free-footed free-for-all free-going free-grown Free kirk free-lance free-living free love free lover free milling free-minded free-mindedly free-mindedness free-mouthed free-moving free-quarter free-quarterer free-reed free-select free-silver free silverism free silverite free soil free-soiler free-soilism Free-soilism Free-soil party free-speaking free-spirited free-spoken free-spokenly free-spokenness free-swimmer free-swimming free-tailed free-throw free-tongued free-trade free-trading free-tradist free-versifier free will free-willed free-willer free-working freeze-out freeze-up freezing mixture freezing point freezing process freight agent freight bill freight boat freight broker freight canvasser freight car freight clerk freight conductor freight density freight elevator freight engine freight forwarder freight handler freight house freight insurance freight locomotive freight-mile freight mileage freight note freight rate freight receipt freight room freight shed freight steamer freight tariff freight traffic freight train freight truck freight vessel freight wagon French-born French-bred French-built French-canadian French-educated French-fashion French-grown French heel French-heeled French-looking French-loving French-made French-manned French-minded French polish French school French-speaking frequency changer frequency curve frequency distribution frequency histogram frequency indicator frequency meter frequency-modulated frequency modulation frequency multiplier frequency polygon frequency relay frequency width fresh air fresh-baked fresh-boiled fresh-caught fresh-cleaned fresh-coined fresh-colored fresh-complexioned fresh-cooked fresh-cropped fresh-cut fresh-drawn fresh-faced fresh-fallen fresh-killed fresh-laid fresh-leaved fresh-looking fresh-made freshman week fresh-painted fresh-picked fresh-slaughtered fresh-washed fresh-water fresh-watered fresno scraper fret saw fret-sawing Friar minor Friar preacher friar skate Friars minor Friars preachers friction ball friction band friction belt friction block friction board friction brake friction breccia friction clamp friction clutch friction composition friction cone friction disk friction drill friction drive friction factor friction fremitus friction fuse friction gear friction gearing friction glazing friction-head friction horsepower friction machine friction match friction powder friction primer friction pulley friction ring friction roller friction rub friction saw friction slip friction socket friction sound friction tape friction test friction-tight friction top friction tube friction washer friction wheel frieze coat frieze-coated frieze rail frigate bird frigate-built frigate mackerel frigate pelican fright disease frill-bark frill-barking frill-like frill shark fringe bush fringe cup fringed brome fringe moss fringe tree fringe-tree bark frit fly frith-guild frivolity-proof frizzle disease frizzle fowl frock coat frog-belly frogbit family frog boot frog cheese frog clock frog crab frog-eyed frog fly frog grass frog hair frog lily frog-march frog number frog pad frog plant frog shell frog spawn frog spit front bench front-connected front-fanged front-focus front-focused front-foot front-page front-ranker front-wheel frost-beaded frost bearer frost-blite frost blow frost-bound frost-burnt frost-chequered frost-concocted frost-congealed frost-crack frost-fettered frost-firmed frost-free frost grape frost gray frost-hardy frost-hoar frost insurance frost-kibed frost lamp frost-nipped frost plant frost-pure frost-rent frost-ridge frost ring frost-riven frost signal frost smoke frost snipe frost-tempered frost valve frostweed aster frosty-face frosty-faced frosty green frosty-mannered frosty mildew frosty-natured frosty-spirited frosty-whiskered froth-becurled froth-born froth-clad froth-faced froth fly froth-foamy froth hopper froth insect froth spit froth worm frowzy-headed fruit acid fruit bark beetle fruit barrel fruit basket fruit bat fruit bearing fruit blight fruit blossom fruit body fruit bowl fruit-bringing fruit bud fruit bug fruit bush fruit buyer fruit can fruit-candying fruit cane fruit canner fruit canning fruit chafer fruit cocktail fruit crate fruit crow fruit culture fruit cup fruit dealer fruit dish fruit dot fruit-drying fruit eater fruit-eating fruit envelope fruit ether fruit-evaporating fruit evaporator fruit farm fruit farmer fruit farming fruit flavor fruit fly fruit garden fruit grader fruit jar fruit jelly fruit juice fruit knife fruit loft fruit package fruit packer fruit packing fruit-paring fruit peddler fruit peel fruit picker fruit picking fruit pigeon fruit pit fruit pitter fruit preservative fruit preserver fruit-producing fruit pudding fruit raiser fruit raising fruit rot fruit salad fruit seller fruit set fruit shipper fruit shop fruit show fruit sirup fruit slicer fruit sorter fruit soup fruit spot fruit sprayer fruit spur fruit stall fruit stand fruit strainer fruit sugar fruit tart fruit tree fruit-tree bark beetle fruit-tree leaf roller fruit vendor fruit vinegar fruit wood frying pan F-shaped F-sharp F-sharp major F-sharp minor F star F-type star fuchsia-flowered fuchsia tree fuddle-brained fuddy-duddy fudge edge fudge wheel fuel dope fuel engineer fuel engineering fuel filter fuel oil fugae warrant fugie warrant Fulah-zandeh full-accomplished full-acorned full-adjusted full-annealing full-armed full-assembled full-assured full-attended full-banked full-beaming full-bearded full-bearing full-bellied full blood full-blooded full-bloodedness full-bloomed full-blossomed full-blown full-bodied full-boled full-bore full-born full-bosomed full bottom full-bottomed full-bound full-bowed full-brained full-breasted full-brimmed full-buckramed full-built full-busted full-buttocked full-cell full-celled full-centered full-charge full-charged full-cheeked full-chested full-chilled full-clustered full-crammed full-cream full-crew full-crown full-depth full-diamond full-diesel full-digested full-distended full-draught full-drawn full-dress full-dressed full-dug full-eared full-exerted full-extended full-eyed full-faced full-fashioned full-fatted full-feathered full-fed full-feed full-feeding full-felled full-finished full-fired full-flanked full-flavored full-fledged full-fleshed full-floating full-flocked full-flowering full-flowing full-foliaged full-form full-formed full-fortuned full-fraught full-freight full-freighted full-fronted full-fruited full-glowing full-gorged full-grown full-haired full-hand full-handed full-happinessed full-hard full-haunched full-headed full-hipped full-hot fulling mill fulling stock full-jeweled full-jointed full-known full-laden full-leather full-leaved full-length full-leveled full-licensed full-limbed full-lined full-lipped full-load full-made full-manned full-measured full-minded full-moon full name full-natured full-necked full-nerved full-opening full-orbed full-page full-paid full-panoplied full-paunched full-personed full-pitch full-pitch winding full-plumed full-power full-powered full-proportioned full-pulsing full-rayed full-resounding full-rigged full-rigger full-ripe full-ripened full-roed full-run full sail full-sailed full-scale full-sensed full-sharer full-shouldered full-shroud full-size full-sized full-skirted full-souled full-speed full-sphered full-spread full-stage full-statured full-stomached full-strained full-streamed full-strength full-stuffed full-summed full-swelling full-throated full-tide full-timed full-toned full-top full-trimmed full-tuned full-tushed full-uddered full-value full-voiced full-volumed full-wave full-wave rectification full-wave rectifier full-way full-weight full-weighted full-whiskered full-winged full-witted fume chamber fumed oak fumitory family funding system funeral home funeral march funeral pile fun-filled fungiform papillae Fungi imperfecti fungus body fungus-covered fungus-digesting fungus gall fungus gnat fungus-proof fungus stone fungus tinder funk hole fun-loving funnel chest funnel cloud funnel-fashioned funnel-formed funnel maker funnel-necked funnel setter funnel-shaped funnel tube funnel twister funny bone fun-seeking fur bearer fur-bearing fur beater fur blocker fur blower fur breeder fur brusher fur buyer fur-capped fur-clad fur-coated fur-collared fur-cuffed fur farm fur farmer fur farming Furfooz-grenelle fur-gowned furious-faced fur-lined fur lining furnace bricklayer furnace builder furnace cadmium furnace calciner furnace charger furnace charging furnace engineer furnace erector furnace feeder furnace fireman furnace heating furnace keeper furnace liner furnace lining furnace maker furnace mounter furnace oil furnace regulator furnace repairer furnace stoker furnace tender furnace tenter furnace watcher furniture broker furniture carving furniture enameler furniture finisher furniture fitter furniture japanner furniture maker furniture mover furniture packer furniture painter furniture polisher furniture porter furniture repairer furniture turning furniture van furr-ahin furring brick furring strip furrow-cloven furrow drain furrow drainage furrow draining furrow-faced furrow-fronted furrow irrigation furrow pan furrow weed fur seal fur tanner fur-touched fur trader fur trapper fur trapping fur-trimmed fur trimming fury-driven fury-haunted fury-moving furze-clad furze lark furze wren fusarium wilt fusco-ferruginous fusco-piceous fusco-testaceous fuse block fuse gauge fusel oil fusing disk fusion bomb fusion point fusion welding fuss-budget fuss-budgety fusty-framed fusty-looking fusty-rusty futtock band futtock plate futtock shroud futtock staff futtock stave future-minded future perfect future price futurity race futurity stakes fu-yang fuzzy-guzzy fuzzy-haired fuzzy-headed fuzzy-legged Fuzzy-wuzzy gabbro-porphyrite gable-bottom gable-bottom car gable end gable-ended gable roof gable-roofed gable-shaped gable wall gable-walled gable window gable-windowed gab pin gaff sail gaff-topsail gaff-topsail catfish gaff-topsail pompano gag-check gage green gag law gag press gag rein gag-reined gag resolution gag rule gag runner gaining head gaining machine gaining twist gain sharing gaiter-in gaiter tree galanga root galanty show gale day gale-driven galena glaze galimeta wood galla ox gall bag gall bladder gall cyst gall duct gallery forest gallery gods gallery organ gallery road galleta grass galley-fashion galley foist galley halfpenny galley press galley proof galley punt galley slave galley slice galley slug galley-west gall fig gall gnat gall-less gall-like gall midge gall mite gall oak Gallo-briton Gallo-grecian galloper gun gallop rhythm Gallo-roman gallow pulley gallows balk gallows bird gallows bitts gallows frame gallows-grass gallows tree gall passage gall pipe gall sickness gall sickness bush gall wasp gall wind gama grass gamba bass gamba goose gamben bass gambling debt gambling device gambling hell gambling house gambling table gamboge yellow gambo goose gambo hemp gambrel roof gambrel-roofed game act game beast game bird game cart game debt game-destroying game dog game farmer game fish game fowl game hawk game hunter game hunting game pie game preserve game refuge game reserve game room games all game sanctuary game season game shooting games master games mistress game warden gaming contract gaming house gaming-proof gaming room gaming table gamma acid gamma function gamma globulin gamma infinity gamma iron gamma moth gamma ray gammon-faced gammon iron gammon-visaged Gamp mrs sairey gander month gander pull Gandharva rite gandy dancer gang cask gang center gang cultivator gang edger Ganges dolphin gang hook ganging plea ganglion cell ganglion crest gang mill gang plow gang press gang punch gang saw gang war gang warfare gangway ladder gang week gannet paper gantry crane gaol delivery gape-gaze gap-frame press gap lathe gap-toothed garab tree garbage barrel garbage burner garbage can garbage cart garbage collector garbage conveyer garbage destructor garbage digestor garbage drier garbage grease garbage incinerator garbage man garbage pail garbage plant garbage reducer garbage tank garbage tankage garbage truck garbage wagon garboard strake garbutt rod garb willow garde-collet garden balm garden balsam garden bond garden bugloss garden burnet garden buttercup garden camomile garden catchfly garden celandine garden chafer garden cicely garden columbine garden cress garden culture garden cypress garden egg gardener bird garden flea garden flea hopper garden fly honeysuckle garden garth garden-gate garden geranium garden ginger garden glass garden heliotrope garden hoe garden huckleberry garden hyssop garden lemon garden mint garden mold garden nasturtium garden nightshade garden orach garden orpine garden party garden patience garden pepper garden pepper cress garden peppergrass garden persicary garden pink garden plague garden plow garden poppy garden portulaca garden purslane garden rocket garden sage garden sauce garden seat garden-seated garden snail garden sorrel garden speedwell garden spider garden spurge Garden state garden syringa garden tickseed garden truck garden valerian garden verbena garden violet gardenwall bond garden warbler garden webworm garden white garde-reins garget plant garget root garland chrysanthemum garland crab garland flower Garland sunday garlic germander garlic mustard garlic oil garlic pear garlic sage garlic shrub Garlic sunday garlic tree garment presser garnet-breasted garnet brown garnet-colored garnet hinge garnet lac garnet paper garnet-red garnishee order gar pike garrison flag garrison prisoner garrison school garrison state garter-blue garter snake garter stitch garth cress gas-absorbing gas attack gas bacillus gas battery gas bender gas black gas buoy gas burner gas-burning gas carbon gas cell gas-charged gas-check gas coal gas coke gas company gas concrete gas constant gas cutting gas-delivering gas detector gas-discharge lamp gas disease gas-driven gas-electric gas electrode gas engine gas engineer gas engineering gas explosion gas-filled gas filler gas-fired gas fitter gas fitting gas fixture gas gangrene gas generator gas grenade gas harmonicon gas-heated gas helmet gash-gabbit gash vein gas jet gas-laden gas lamp gas-lampy gaslight paper gas lime gas liquor gas log gas machine gas main gas mantle gas mask gas meter gas motor gas oil gasoline-electric gasoline engine gasoline gas gasoline locomotive gasoline shovel gasoline truck gas-operated gas oven gas-oxygen Gaspe series gas phlegmon gas pipe gas plant gas plate gas polarization gas producer gas-producing gas refrigeration gas-resisting gas-retort gas ring gas sand gas separator gas shaft gas-shaft hood gas shell gas spectrum gas spurts gas station gas tap gas tar gas-testing gas thermometer gas thread gastraea theory gas trap gastro-omental gas tube gas turbine gas vent gas warfare gas washer gas water gas welder gas welding gas well gas zone Gata disease gate bill gate channel gate-leg gate-legged gate-leg table gate money gate net gate-netting gate pin gate road gate shears gate table gate tower gate valve gate wheel gathering coal gathering hoop gathering iron gathering locomotive gathering machine gathering pallet gathering peat gathering reel gathering ring gathering rod gathering shot gathering table gat-toothed gaude lake Gaudete sunday Gaudette sanday gaufre iron gauge block gauge cock gauge concussion gauge die gauge door gauge glass gauge increment gauge knife gauge lath gauge lathe gauge line gauge notch gauge pin gauge plate gauge point gauge saw gauge stick gauge stuff gauge tolerance gauge weir gauge wheel gauging plaster gaultheria oil gaunt-bellied gauze ring gauze tree gauze-winged gavel bread gavel corn gavel earth gavel swine gay-beseen gay-chirping gay-colored gay-feather gay-flowered gay-glancing gay-green gay-hued gay-humored gay-looking Gay-lussac gay-motleyed gay-painted Gay-pay-oo gay-seeming gay-smiling gay-spent gay-spotted gay-tailed gay-throned gazelle brown gazelle-eyed gazelle hound gazing ball G clef gear brusher gear case gear cutter gear-cutting gear-driven geared-head lathe gear fitter gear forger gear hobber gearing chain gearless traction gear maker gear miller gear oiler gear-operated gear pump gear ratio gear roller gear shaper gear shifter gear wheel gear-wheel pump Gedda gum gee-gee gee-haw gee ho gee pole gee string gee-throw gee-up gee whillikins gee whizz gefullte fish geigen principal geiger tree geil fine gelatin-coated gelatin dynamite gelatin emulsion gelatin maker gelatin molder gelatino silver bromide gelatin process Gellert green gem-bearing gem-bedewed gem-bedizened gem-bespangled gem-bright gem cutter gem cutting gem-decked gem designer gemel hinge gemel ring gemel window gem engraver gem-faced gem fancier gem-fruit gem grinder gem-grinding gemma cup gem peg gem-set gem setter gem-spangled gem stick gem stone gendarme blue general-purpose general store generating station generating tone generator gas generator unit generous-hearted Geneva-cross Geneva-cross movement genitive absolute genoa jib gentian blue gentian family gentian root gentian violet gentile-falcon gentle-born gentle-bred gentle-browed gentle-eyed gentle-handed gentle-handedly gentle-handedness gentle-looking gentleman-adventurer gentleman-agent gentleman-beggar gentleman-cadet gentleman-commoner gentleman-covenanter gentleman-dependent gentleman-digger gentleman-farmer gentleman-jailer gentleman-jockey gentleman-lackey gentleman-lodger gentleman-murderer gentle-mannered gentle-manneredly gentle-manneredness gentleman-pensioner gentleman-porter gentleman-priest gentleman-ranker gentleman-recusant gentleman-rider gentleman-scholar gentleman-sewer gentleman-tradesman gentleman-usher gentleman-vagabond gentleman-volunteer gentleman-waiter gentle-minded gentle-mindedly gentle-mindedness gentle-natured gentle-naturedly gentle-naturedness gentle-spoken gentle-spokenly gentle-spokenness gentle-voiced gentle-voicedly gentle-voicedness geoid-spheroid geoid-spheroid balance Georgia bark geranium creeper geranium family geranium lake geranium oil geranium pink German-american German-built germander chickweed germander sage germander speedwell German-english German-french German-hungarian German-italian germanium oxide German-jewish German-made German-owned German-palatine German-speaking German-swiss germ breeder germ cell germ destroyer germ disease germ disk germ-forming germ gland germ layer germ nucleus germ pathology germ peg germ plasm germ plasma germ pore germ spot germ stock germ theory germ track germ tube gerund grinder gerund grindery gerund grinding gerund phrase Gestalt psychology Gestalt school ges-warp getah wax get-at-ability get-at-able get-at-ableness get-off get-together geyser basin geyser cone G-flat G-flat major gharry-wallah ghatti gum Ghedda wax ghost candle ghost crab ghost daemon ghost dance ghost-fearing ghost-filled ghost food ghost god ghost-haunted ghost hole ghost line ghost lodge ghost lore ghost moth ghost name ghost plant ghost-ridden ghost soul ghost story ghost town ghost word ghost world ghost writer giant bamboo giant cane giant fescue Giant hunter Giant killer giant reed giant rye grass gibber bird gibbet law gibbet tree gibby stick gib-cat gib fish gib-head gib-head key giblet-check giblet-checked giblet-cheek gib plate Gibson girl gibus hat giddy-brained giddy-drunk giddy-go-round giddy-headed giddy-paced giddy-pated giddy-witted gier-eagle gift balsam gift rope gift shop gift tax gig lamp gig machine gig mill gigot sleeve Gila apache gilding metal gilding wax gill-ale gill arch gill bailer gill basket gill-book gill box gill cavity gill chamber gill cleft gill comb gill cover gill-cup gill frame gill fungus gill helix Gillie callum gillie-wetfoot gillie-whitefoot gilling machine gilling thread gill-less gill-like gill net gill-netter gill plume gill rake gill raker gill rod gill-run gill scoop gill-shaped gill slit gilt-edge gilt-edged gilt-handled gilt-headed gilt-knobbed gilt-robed gimbal joint gimbal ring gimlet bit gimlet eye gimmer hog gimmer lamb gim peg gimp lapper gimp nail gin block gin fizz gingelly oil ginger ale ginger beer ginger-beery ginger bleacher gingerbread nut gingerbread palm gingerbread plum gingerbread tree ginger buyer ginger-color ginger-colored ginger extract ginger-faced ginger family ginger grass ginger-grass oil ginger-hackled ginger-haired ginger lily ginger oil ginger pine ginger plant ginger pop ginger quill ginger-red ginger root ginger spice ginger tea ginger wine gingili oil ginkgo nut gin mill ginny carriage gin pole gin race gin rickey gin ring gin rummy gin-run gin-saw gin-saw file ginseng family gin sling gin wagon gin wheel gin yard giraffe camel girandole clock girasol thorn girder bridge girder erector girder rail girder riveter girder stay girder tool girdle band girdle bone girdle sensation girdle wheel girl guide girl scout girl-shy girth web Gitchi manito giver-out give-up gizzard shad gizzard trout glacier bear glacier cataract glacier table glacier theory glacis plate glad-cheered glade lily glade mallow glad-flowing glad-handed glad-sad glad-surviving glance coal glance cobalt glance copper glance pitch glancing boom glans clitoridis glans penis glare-eyed glass blower glass blowing glass-bottomed glass-built glass burner glass cement glass-coated glass-colored glass-covered glass cutter glass cutting glass decorator glass-eater glassed-in glass-eyed glass-faced glass-fronted glass-glazed glass-green glass-hard glass-lined glass painting glass-paneled glass-paper glass pot glass snail glass snake glass soap glass-topped glaucous-winged glaze kiln glaze wheel glebe house glee club glee-eyed glib-gabbet glib-tongued glide consonant glide vowel gliding angle gliding boat gliding joint gliding machine glimmer gowk globe amaranth globe animalcule globe artichoke globe crowfoot globe daisy globe dollar globe hyacinth globe joint globe lightning globe lily globe mallow globe ranunculus globe-shaped globe sight globe thistle globe-trotter globe-trotting globe tulip globe valve globigerina ooze globo-cumulus globus hystericus gloomy-browed gloomy-faced glor-fat glory bower glory flower glory hole glory lily glory-of-the-snow glory pea glory tree glory vine gloss oil glossopalatine arch glossopalatine nerve glossy-black glossy-leaved glossy-white glost fire glost fireman glost oven glost placer Gloucester cheese glove contest glove grain glove money Glover tower glove silk glove silver glove sponge glove stitch glow beetle glow discharge glow lamp glow light glow lighting glow meter glow tube gluck-gluck glucose sirup glucose vinegar glue boiler glue bottle glue brush glue cell glued-up glue plant glue stock glue water gluten bread gluten feed gluten flour gluten meal glut herring glutton bird glyceria wax glycerin jelly glycerin lye glycerin soap glycerol nitrate glyceryl nitrate glyceryl trinitrate glycyrrhizae composita glyoxyl urea gnamma hole Gnaphalium green gnat hawk gneissoid-granite Gnesio-lutheran gnome owl gnothi seauton gnu goat go-about go-ahead goal crease goal judge goal kick goal line goal minder goal net goal post goal posts goal stick goal tender goal tending Goanese ipecac go-ashore go-as-you-please goat antelope goat-bearded goat chaffer goat-drunk goat-eyed goat fig goat-footed goat god goat grass goat hair goat-headed goat-hoofed goat-horned goat-keeping goat-kneed goat marjoram goat milker goat moth goat nut goat owl goat pepper goat rue goatsfoot convolvulus Goat star goat-toothed go-away bird go-back gobar numerals go-between goblet cell goblin fish goblin scarlet goblin shark go-by God-adoring God-begot God-begotten God-beloved God-bless God-built God-conscious God-consciousness God-created God-cursed God-descended God-empowered God-enlightened God-entrusted go-devil God-fearing God-forbidden God-forgetting God-forgotten God-given god-horse God-inspired God-loved God-loving godly-learned God-made God-man God-manhood God-ordained God-seeing God-sent God-sped God-taught God tree God-wrought goer-by go gauge go-getter go-getterism go-getting goggle-eye goggle-eyed goggle-nose Gohel rajput going barrel going-concern going-concern value going forth going fusee going light going out goings on going train going wheel goiter stick gold apple gold assayer gold-ball gold-banded gold bank gold bar gold basis gold-basket gold bass gold-bearing gold beetle gold beryl gold blocker gold blocking gold-bloom gold bond gold book gold-bound gold-braided gold-breasted gold brick gold-bright gold-broidered gold bronze gold brown gold-bullion standard gold carp gold-ceiled gold certificate gold-chain gold chloride gold-clasped gold clause gold-containing gold-crested gold-daubed gold-decked gold digger gold digging gold driver gold-dust tree gold-edged gold-embossed gold-embroidered golden bamboo golden-banded golden-bearded golden-breasted golden-brown golden-cheeked golden-chestnut golden-colored golden crest golden-crested golden crown golden-crowned golden-cup golden-cup oak golden-eared golden-eyed golden feather golden-feather yellow golden-fettered golden-fingered golden-footed golden-fruited golden-gleaming golden-glowing golden-green golden-haired golden-headed golden-hilted golden-hued golden-leaved golden-locked golden millet golden-mouthed golden oat golden rain golden-rain tree golden-rayed goldenrod tree golden-spotted golden-throned golden-tipped golden-tongued golden-tressed golden-winged gold-enwoven golden-yellow gold-exchange gold fever gold field gold-fields gold-filled gold-foil gold-framed gold-fringed gold-graved gold-green gold-haired gold-headed gold-hilted gold-inlaid gold lace gold-laced gold-laden gold-leaf gold-lit gold maker gold making gold melter gold mine gold miner gold mining gold monochloride gold-mounted gold pan gold plate gold-plated gold-plating gold-red gold refiner gold-ribbed gold-rimmed gold-robed gold-rolling gold-rush gold seeker gold-seeking goldsmith beetle gold solder gold spinner gold star gold-striped gold-strung gold-studded gold-testing gold trichloride gold warden gold washer gold washing gold-winged gold working gold-wrought gold-yellow golf bag golf ball golf green golf hose golf links golf red golf shoe goliath beetle goliath crane goliath frog goliath heron golo-shoe gombroon ware gom-paauw gomuti palm Goncourt laureate Goncourt prize gondang wax gondola car Gondwana land Gondwana system gone arrow gone-by gone feeling gong bell gong drum gong-gong Go-no-further good afternoon good-by good-bye-summer good cheap Good conduct medal good fellow good-fellowhood good-fellowish good-fellowship good-for good-for-naught good-for-nothing good-for-nothingness Good friday Good-friday grass good-humored good-humoredly good-humoredness Good-king-henry good-looker good-looking good-lookingness good morning good-morning-spring good nature good-natured good-naturedly good-naturedness good-plucked goods dollar goods engine goods train goods wagon goods yard good temper good-tempered good-temperedly good-temperedness good will goody-good goody-goody goody-goodyism goody-goodyness go-off googly-eyed goose barnacle goose-beak whale gooseberry-eyed gooseberry family gooseberry fool gooseberry fruitworm gooseberry gourd gooseberry mildew gooseberry moth gooseberry picker gooseberry pie gooseberry rust gooseberry sawfly gooseberry spanworm gooseberry stone gooseberry tomato gooseberry tree goose-cackle goose call goose chase goose club goose corn goose egg goose file goose flesh goose-fleshy goose-footed goosefoot family goosefoot maple goose grass goose gray goose grease goose gull goose-headed gooseneck slicker goose pen goose-pimple goose-pimply goose plant goose plum goose quill goose rump goose-shaped goose skin goose step goose-stepper goose tansy goose teal goose tree goose walk gopher apple gopher drift gopher frog gopher hole gopher-hole blast gopher plant gopher plum gopher snake gopher tortoise go-quick gora log Gordian knot gordura grass gore strake gorge circle gorge hook gorgon-headed Gorgon-headed gorgon plant Gorgonzola hall Gorilla land goring cloth gorse duck gorse hatcher gosh-awful Goshen hardhack gosling color gosling grass gosling green gospel oath Gospel side gospel-true gospel truth gossamer fern gossamer spider gouden reaal gouge carving gouge shell gourd family gourdhead buffalo gourd melon gourdseed buffalo gourd-shaped gourd towel gourd tree gout fly gout ivy gout tree governess-ship government bar government depository government-general government man government note government-owned government paper governor-elect governor general governor-generalship gowk storm gown boy gown-fashion grab-all grab bag grabbot gin grab bucket grab dredge grab link grab machine grab rope grab skipper grace cup grace drink grace hoop grace note grade bar grade crossing grade line grade peg grade stake gradient post graduate school graduating engine graft hybrid graft-hybridism graft-hybridization grafting wax graham flour grain alcohol grain aphid grain beetle grain bill grain binder grain borer grain broker grain-burnt grain carrier grain-carrying grain cleaner grain-cleaning grain cradle grain crusher grain-cut grain drill grain-eating grain elevator grain farm grain farmer grain farming grain-fed grain founder grain glove grain gold grain grower grain-growing grain harvester grain huller grain lac grain-laden grain leather grain louse grain mark grain mash grain merchant grain miller grain moth grain musk grain oil grain pan grain rust grain sack grain sacker grain sampler grain screen grain screener grain shipper grain side grain smut grain soap grain sorghum grain thresher grain tin grain traveler grain-wagon hitch grain weevil grain weigher gram atom gram calorie gram-centimeter gram degree gram equivalent Gram-fast gram ion grammar college grammar school grammatico-allegorical gram-meter gram-molecular gram molecule gram-negative Gram-negative gram-positive Gram-positive grana cheese granadilla tree granary weevil Gran chimu grand climacteric grand-ducal grandfather chair grandfather clause grandfather clock grandfather graybeard grandfather longlegs Grand guignol Grand-guignolism grand juryman grandmother clock grand slam grandstand play granger laws granite blue Granite city granite-dispersing granite-gneiss granite gray granite-gruss granite paper granite porphyry granite quarrier granite-sprinkled granny knot granny-thread grant-in-aid granule cell granule gravel grape-bearing grape-berry moth grape cane borer grape cherry grape curculio grape cure grape disease grape-eater grape family grape fern grapefruit spoon grape green grape grower grape growing grape hoe grape hopper grape-hued grape hyacinth grape juice grape leaf folder grape leaf hopper grape-leaved grape louse grape mildew grape moth grape pear grape phylloxera grape picker grape picking grape rootworm grape rot grape rust grape scale grape seed grape-seed oil grape-shaped grape-sized grape sugar grape tomato grape tree grapevine fidia grapevine flea beetle grapevine leaf hopper grapevine phylloxera grapevine telegraph grapevine thrips grape weevil grape worm graphic-texture graph paper grapnel plant grappier cement grapple bucket grapple dredge grapple fork grapple iron grapple plant grapple shot grappling iron grass bass grass-blade grass bur grass-carpeted grass cattle grass character grass-clad grass cloth grass-cloth plant grass cold grass comber grass-covered grass-cushioned grass drake grass earth grass-embroidered grass family grass-fed grass fern grass finch grass frog grass green grass-growing grass-grown grass guard grass gum grass hand grass-hook grasshopper gauge grasshopper lark grasshopper lobster grasshopper mouse grasshopper sparrow grasshopper warbler grass ill grass-killing grass lamb grassland buttercup grassland daisy grass lawn grass-leaved grass lily grass linen grass mildew grass moor grass moth grass-mowing grass owl grass parakeet grass pea grass pickerel grass pink grass plover grass poly grass pondweed grass porgy grass rockfish grass-roofed grass sandwort grass savanna grass snake grass snipe grass sorghum grass spider grass sponge grass staggers grass steppe grass swine grass table grass tetany grass tree grass-tree gum grass vetch grass warbler grass webworm grass widow grass widower grass-woven grass wrack grass-wren grassy-green grassy-leaved grate coal grate room grate surface Gratia dei grave accent grave-born grave-bound grave-browed grave-colored grave-digging grave-faced grave harmonic gravel-bind gravel-blind gravel chickweed gravel-grass grave-looking gravel plant gravel shooter gravel train grave marker grave mixture graven image grave plant grave-riven grave robber grave robbing gravestone cutter grave-toned grave-visaged grave wax graveyard shift graveyard watch graveyard weed graving dock graving piece graving tool gravitation battery gravitation constant gravity battery gravity cell gravity-circulation gravity conveyer gravity dam gravity escapement gravity-fed gravity feed gravity pendulum gravity plane gravity railroad gravity stamp gravity ventilation gravity wind gravy boat gravy eye grayback beetle grayback herring gray-barked gray-bearded graybeard tree gray-bellied gray-black gray-blue gray-bordered gray-boughed gray-breasted gray-brindled gray-brown gray-cheeked gray-cheeked thrush gray-clad gray-colored gray-crowned gray-eyed gray-faced gray-gowned gray-green gray-grown gray-haired gray-headed gray-headed woodpecker gray-hooded gray-leaf gray-leaf pine gray-leaved gray-lit gray-mantled gray-moldering gray-mustached gray-necked Grayson lily gray-speckled gray-tailed gray-tailed cardinal gray-tinted gray-toned gray-twigged gray-veined gray-white gray-winged grease bucket grease extractor grease gun grease-heels grease joint grease mold grease moth grease-nut grease paint grease pit grease ring grease trap grease wool greasy-headed great-armed great-aunt great-bellied great-boned great bunch grass great circle great-circle chart great-circle sailing great-circle track great-crested great-eared great-eyed great foot great-footed great-footed hawk great-grandchild great-grand daughter great-grandfather great-grandmother great-grandson great-grown great-headed great-hipped great-leaved great-lipped great-minded great-mindedly great-mindedness great-nephew great-niece great-nosed great reed great-sized great-souled great-spirited great-stemmed Great sunday great-tailed great-tailed grackle great-uncle great-witted grebe cloth Greco-american Greco-asiatic Greco-buddhist Greco-bulgarian Greco-cretan Greco-egyptian Greco-hispanic Greco-iberian Greco-italic Greco-latin Greco-macedonian Greco-mohammedan Greco-oriental Greco-persian Greco-phoenician Greco-phrygian Greco-punic Greco-roman Greco-sicilian Greco-trojan Greco-turkish Greek cross Greek-cross plan Greek-letter fraternity Greek-letter society green-backed green-backed goldfinch green-back herring Greenback-labor party Greenback party green-back trout green-banded green-barked green belt green-black green-blind green-blue green-bodied green-boled green-bordered green-bottle fly green-boughed green-breasted green-breasted pheasant green-clad Green cloth green-crested green-cross gas green-cross shell green-curtained green-decked green-ear disease green-edged green-embroidered green-eyed green-faced green-feathered green-flowered green foxtail green-fringed green-garbed green-gilled green-glazed green-gold green grass green-gray green-grown green-haired green-headed green-headed widgeon greenhouse stone cricket greenhouse thrips green-hued greening weed greenish-blue greenish-flowered greenish-yellow green-leaved green-legged green-mantled green pigeon grass green-recessed green-ribbed green rot green-rotted green salt green-salted green-seeded green-shaving green-sheathed green-shining green-skinned green-stained greenstick fracture green-striped green-suited green-tail green-tailed green-tail fly green-throated green-tinted green-tipped green-tip spray green-twined green valley-grass green-veined Greenwich civil time Greenwich stars Greenwich time Greenwich village green-winged green-winged teal green woodpecker green-yellow grenadine pink grenadine red Grenet battery grenz ray Gretna green Gretna green marriage grey-cheeked grid battery grid bias grid circuit grid condenser grid current griddle valve grid-glow tube gridiron drainage gridiron pendulum gridiron-tailed lizard gridiron valve grid leak grid line grid modulation grid voltage grief-bowed grief-distraught grief dulled grief-exhausted grief-inspired grief oppressed grief-scored grief-shot grief-stricken grief-worn grievance committee griffin-beaked griffin-guarded griffin-winged griffon vulture grigri man Grimaldi race grim-cheeked grim-eyed grim-faced grim-featured grim-frowning grim-grinning grim-looking grim-set grim-visaged grimy-handed grindery warehouse grinding mill grinding organ grinding stone grind whale grip block gripe water gripple-handed grip sheave grip wheel gris-de-lin grit cell grizzly bear grizzly-bear cactus groaning cake groaning chair grocery store grog blossom groin point groin rib groin vault grommet nut groove-billed groove board grooving plane grooving saw Gros michel gross-bodied gross-brained gross-featured gross-fed gross-headed gross-jawed gross-lived gross-mannered gross-minded gross-money gross-money pool gross-natured gross-pated gross-witted gros tournois Gros ventre grotto blue ground almond ground angling ground annual ground annualer ground ash ground bait ground bass ground beam ground beetle ground birch ground box ground bridge ground bundle ground burnut ground cedar ground centaury ground chain ground cherry ground chestnut ground circuit ground cistus ground clamp ground coat ground cock ground cover ground crew ground cricket ground cuckoo ground current ground cypress ground detector ground dove ground-down ground elder ground-fast ground fern ground finch ground fir ground fire ground flax ground flea ground floor ground fog ground form ground game ground gas ground glass ground goldenrod ground goldflower ground grue ground hemlock ground hog ground-hog day ground holly ground honeysuckle ground ice ground itch ground ivory flower ground ivy ground jasmine ground joist ground juniper ground lag ground landlord ground lark ground laurel ground lead ground lease ground lemon ground level ground lily ground line ground liverwort ground lizard ground log ground loop ground mahogany ground mail ground mallow ground maple ground mold ground moss ground net ground noise ground note groundnut oil ground oak ground owl ground parakeet ground parrot ground pea ground pearl ground pig ground pigeon ground pike ground pine ground pink ground pistachio ground plan ground plane ground plate ground plum ground puppy ground raspberry ground rat ground rattan ground rattler ground rent ground rent insurance ground robin ground roller ground rope ground rule ground saligot ground school ground sea ground seal groundsel bush groundsel tree ground shark ground shield ground skidder ground sloth ground sluice ground-sluicer ground snake ground sparrow ground speed ground squirrel ground-squirrel pea ground staff ground starling ground state ground strake ground stroke ground substance ground sweet ground swell ground table ground tackle ground thistle ground thrush ground tier ground timbers ground tissue ground tit ground tone ground tow ground track ground vine ground warbler ground water ground-water level ground wave ground ways ground willow ground wire ground worm ground wren ground yew group agglutination group ascendancy group breaker group-connect group-conscious group drive grouper pea group insurance group marriage group medicine group method group mind group mixture group payment group rate group test group velocity group will grouse disease grouse locust grove mast grove palm grove spar grove tree growing pains growing point grown-up grown-upness growth form growth hormone grub ax grub hoe grub hook grub plank grub-prairie grub saw grub screw Grub street grugru beetle grugru palm grugru worm grundy-swallow G-shaped G-sharp G-sharp minor g sol re ut G star G string G-type G-type star guadalupe plum guaiacol benzoate guaiacol carbonate guaiac reaction guaiac test guaiacum wood guanay cormorant guarantee association guarantee company guaranteed day guaranteed day rate guard boat guard book guard brush guard cartridge guard cell guard chamber guard flag guard hair guard line guard lock guard mount guard mounting guard pin guard plate guard report guard ring guard room guard ship guard wire guava apple guayule rubber gucki grand gucki nullo gudgeon pin guelder-rose guess-rope guess-warp guest right guest room guest rope guest-warp Guiano-brazilian guide block guide card guide flag guide meridian guide mill guide pennant guide pulley guide rail guider-in guide rope guide word guiding telescope guild merchant guild socialism guild socialist guild-socialistic guild tree guillotine shears guilt offering guilty-cup guinea cock guinea flower guinea fowl guinea gold guinea goose guinea grains guinea grass Guinea green guinea hen guinea-hen flower guinea-hen weed guinea-pea guinea pig guinea rush guinea sorrel guise dancer guitar fiddle guitar mandolin guitar plant guitar-shaped guitar wood Gulf stream gull-billed gull chaser gulleting file gullet plate gullet worm gull grass gull gray gull-like gull teaser gully knife gully-raker gully root gum acacia gum acaroides gum acid gum acroides gum aloes gum ammoniac gum angico gum anime gum animi gum arabic gum archipin gum benjamin gum benzoin gum-bichromate gumbo grass gumbo lily gumbo limbo gum boot gum bush gum butea gumby bird gum camphor gum cistus gum copal gum dammar gum-dichromate gum disease gum dragon gum duct gum elastic gum elemi gum euphorbium gum flux gum foam gum galbanum gum gattie Gum gedda gum guaiac gum guaiacum gum-gum gum guttae gum hashab gum juniper gum kauri gum kino gum labdanum gum-lac gum-lac insect gum mastic gumming disease gumming spade gum mogador gummy-legged gum myrrh gum olibanum gum opoponax gum plant gum pocket gum rash gum resin gum-resinous gum rosin gum sagapenum gum-saline gum sandarac gum savakin gum shellac gum shiraz gum-shrub gum silk gum soap gum spirit gum spirits gum spot gum stick gum storax gum succory gum sugar gum thus gum-top gum-top tree gum tragacanth gum tree gum turpentine gum water gun assembler gun barrel gun-barrel lathe gunboat system gun bore gun breech gun brig gun captain gun carriage gun-carrying gun chamber gun-cleaning gun crew gun deck gun dog gunebo lily gun emplacement gun-equipped gun fight gun fighter gun fighting gun firing gun forger gun forging gun glaze gun iron gun lathe gun locksmith gun metal gun-metal gray gun money gun mount gun-mounted gunnery oficer gunny bag gunny cloth gunny sack gunong api gun park gun pendulum gun pit gun platform gunpowder hammer gunpowder tea gun power gun-rivet gun room gun-shy gun-shyness gun sight gun slide gun tackle gunter iron gunter rig gun-testing Gunz-mindel gurgeon stopper gurgina balsam guru nut gusset plate gusset stay gut spinner gutta balata gutta dujan gutta gamba gutta gerip gutta-gum gutta-gum tree gutta hangkang gutta jangkar gutta jelutong gutta ketapang gutta percha gutta puan gutta rosacea gutta rosea gutta sangei gutta semarum gutta serena gutta siak gutta singarip gutta soh gutta sundek gutta sundik gutta susu gutta taban puteh gutter-bred gutter-grubbing gutter tree guy cap gynocardia oil gypsum burner gypsum pink gypsum plaster gyre carline gyre carling gyro horizon gyro mechanism gyro pelorus habeas corpora habeas corpus habitat form habitat group habit-forming habit shirt habit spasm hack file hack hammer hacking knife hackle fly hack-me-tack hackney carriage hackney chair hackney coach Hackney pony hack saw hacksaw fern hag clog hag moth hag-ridden ha-ha hail insurance Haimanta series hair ball hair bleacher hair braid hair bramble hair-branch tree hair brown haircap moss hair carder hair cell hair-check hair-checking hair clipper hair compass hair crimper hair curler hair drawer hair-drawn hair dye hair dyeing hair dyer hair eel hair fern hair-fibered hair follicle hair glove hair grass hair hygrometer hair kiln hair mattress hair moss hair moth hair net hair oil hair orchid hair palm hair pencil hair powder hair pyrites hair-raiser hair-raising hair remover hair restorer hair ribbon hair salt hair seal hair shirt hair sieve hair snake hair sofa hair sorter hair space hair-stemmed hair straightener hair stroke hair tonic hair trigger hair trunk hair wash hair washer hair waver hair-waving hairy-armed hairy-chested hairy-clad hairy-dog story hairy-eared hairy-faced hairy-foot hairy-footed hairy-fruited hairy-handed hairy-headed hairy-legged hairy-looking hairy-skinned halade mystai halberd fern halberd-headed halberd-leaved halberd-shaped hale bind hale-nut hale water half-abandoned half-accustomed half-acquainted half-acquiescent half-acre half-addressed half-admiring half-admitted half-adream half-affianced half-afloat half-afraid half-agreed half-alike half-alive half-altered Half-american Half-americanized half anatropous half angel Half-anglicized half-angrily half-angry half-annoyed half-ape Half-aristotelian half-armed half-armor half-ashamed half-ashamedly Half-asiatic half-asleep half aunt half-awake half-backed half-baked half-bald half ball half-banked half-barbarian half-bare half-barrel half-beam half-begging half-begun half-believed half-believing half-bent half binding half bird half bishop half-bleached half-blind half-blindly half block half blood half-blooded half-blown half-blue half board half-boiled half boot half-bound half-bowl half-breadth plan half-bred half-breed half broad half-broken half brother half bull half-buried half-burned half-bushel half butt half-calf half-carried half-caste half-cent half-century half-chanted Half-christian half chronometer half-civilized half-clad half-cleaned half-clear half-climbing half close half-closed half cloth half-clothed half-coaxing half-coaxingly half cock half-cocked half-colored half column half-completed half-concealed half cone Half-confederate half-confessed half-congealed half-conquered half-conscious half-conservative half-consonant half-consumed half-consummated half-contemptuous half-contented half-convicted half-convinced half-cooked half-cordate half-corrected half-cotton half-counted half court half-courtline half cousin half-covered half-cracked half-crazed half-crazy Half-creole half-critical half crown half-crumbled half-cured half curlew half cushion half-cut half-dark half davit half-day half-dazed half-dead half-deaf half-deafened half-decade half deck half-decked half-decker half-defiant half-deified half-demented half-democratic half-demolished half-denuded half-deprecating half-deserved half-deservedly half-destroyed half-developed half-digested half-dime half diphthong half-discriminated half-disposed half-divine half-divinely half-dollar half-done half-door half-dozen half-dram half-dressed half-dressedness half-dried half-drowned half-drunk half-drunken half-dug half-dying half eagle half-earnest half-eaten half-educated Half-elizabethan half-embraced half-enamored half-enforced Half-english half-erased half-evaporated half-evergreen half-expectant half-exploited half-exposed half-faced half facet half-false half-famished half-farthing half-fascinated half-fed half-feminine half-fertile half-fictitious half-filled half-finished half-firkin half-flattered half-florin half-folded half-foot half-forgiven half-forgotten half-formed Half-french half-frowning half-frowningly half-fulfilled half-full half-furnished half gainer half galley half-gallon Half-german half gerund half-gill half-god half-great Half-grecized half-grown half-hard half-hardy half-harvested halfhead bedstead half header half-healed half-heard half-heathen Half-hessian half-hidden half hitch half holiday half-hollow half hose half hour half-hourly half-human half-hungered half hunter half-hypnotized half-important half-inch half-inclined half-indignant half-inferior half-informed half-ingenious half-ingenuous half-inherited half-insinuated half-insinuating half-insinuatingly half-instinctive half-intellectual half-intoned half-intoxicated Half-irish half-iron half island half-jelled half joe half-joking half-jokingly half-justified half-languaged half-languishing half-lapped half large Half-latinized half-latticed half-lattice girder half-learned half-learnedly half leather half-left half-length half-liberal half life half-light half line half-lined half-linen half-liter half-lived half-looper half-lop half-lunatic half-lunged half-mad half-made half-marked half-marrow half mask half-mast half-masticated half-matured half-meant half measure half-mental half-merited Half-mexican half mile half-miler half-minded half-minute half-minute glass half-miseducated half-misunderstood half-mitten Half-mohammedan half-monitor half-monthly half-moon half-moral Half-moslem half mourning half-mumbled half-mummified half-naked half nelson half nephew half niece half noble half-normal half note half-numb half nut half-obliterated half-offended half-on half-one half-open half-opened Half-oriental half-orphan half-oval half-oxidized half past half pay half-peck halfpenny post half-petrified half-pike half-pint half-pipe half-pitch half plane half-plate half-playful half-pleased half-plucked half-port half-pound half-pounder half-praised half-present half principal half-profane half-professed half-profile half-proletarian half-protesting half-proved half-provocative half-quarter half-quartern half-questioningly half-quire half-quixotic half-radical half-rater half-raw half ray half-reactionary half-read half-reasoning half-rebellious half-reclaimed half-reclining half-refined half-regained half-reluctant half-reluctantly half-remonstrant half-repentant half-republican half rest half-retinal half-revealed half-reversed half-right half ring half-ripe half-ripened half ripsaw half-roasted half-rod half-romantic half-rotted half-rotten half-round half-round file half royal half-rueful half-ruefully half-ruined half-run half rupee half-russia Half-russian half-sagittate half-savage half-saved Half-scottish half seal half-second half-section Half-semitic half-sensed half-serious half-seriously half-severed half-shade Half-shakespearean half-shamed half-share half-shared half-sheathed half shell half shirt half-shoddy half shoe half-shot half-shouted half-shroud half-shrub half-shrubby half-shut half-shy half-sib half-sibling half-sighted half-sightedness half-silk half sir half sister half-size half-sleeve half-sleeved half small half-smile half-smiling half-smilingly half-smothered half snipe half sol half sole half-solid half-souled half sovereign half space Half-spanish half speed half-spoonful half-spun half-squadron half-staff half-starved half step half-sterile half stitch half stock half-stocking half-stopped half story half-strained half-stroke half-strong half stuff half-subdued half-submerged half-successful half-succulent half-suit half-sung half-sunk half-sunken half-swing half-sword half-syllabled half-taught half-tearful half-tearfully half-teaspoonful half-tented half-terete half-term half-theatrical half-thought half tide half timber half-timbered half-time half-timer half tint half title half tone half-tongue half-track half-trained half-training half-translated half trap half-true half-truth half-turn half-turned half uncial half uncle half-understood half-undone half-used half-veiled half-vellum half-verified half-vexed half volley half-volleyer half vowel half-vowelish half-waking half-wave rectification half-wave rectifier halfway covenant halfway file halfway house half-whispered half-white half-wicket half-wild half-willful half-winged half-wit half-witted half-wittedly half-wittedness half-womanly half-won half-woolen half-world half-worsted half-woven half-written half year half-yearly haling hands hallelujah meter halo blight halo-bright halo-crowned halo-girt halo spot halter-wise hamber line Hamito-negro Hamito-semitic hammer ax hammer beam hammer blow hammer break hammer butt hammer cap hammer crane hammer drill hammered work hammer gun hammer-hard hammer-harden hammerheaded shark hammer lock hammer maker hammer mill hammer molding hammer oyster hammer pick hammer pike hammer price hammer-proof hammer rail hammer-refined hammer scale hammer sedge hammer shank hammer-shaped hammer shell hammer slag hammer spring hammer-strong hammer tail hammer thrower hammer tongs hammer-weld hammer-welded hammer welding hammer-wrought hammock batten hammock berthing hammock clew hammock cloth hammock netting hance arch hand alphabet hand ax hand baggage hand-beaten hand bell hand-blocked hand blocker hand-blown hand-bound hand brake hand-broad hand-broken hand-built hand cannon hand-carry hand-carve hand-chase hand-churn drill hand clapping hand-clean hand cleaner hand-closed hand-colored hand-comb hand-crushed hand-culverin hand-cut hand director hand-dress hand-drill hand driller hand-drop hand-dug hand dynamometer hand-embroidered hand embroidery hand-fed hand-feed hand feeder hand-fill hand-filled hand-fire hand firer hand fishing hand-fives hand flail handflower tree hand-fold hand-footed hand glass hand goniometer hand graver hand grenade hand guard hand-hewn hand-hidden hand-high hand hoe hand hoer hand hook hand horn Handie-talkie hand-in hand iron hand ironer hand-knit hand-knitted hand knitter hand-knotted hand labor hand laborer hand language hand lead handle bar handle blank hand letter hand-lettered hand level hand line hand-liner hand list hand-lopped hand luggage handmaid moth hand mast hand-me-down hand mill hand miller hand milling machine hand-minded hand miner hand-mix hand mixer hand-mold hand molder hand money hand mule hand-off hand-operated hand orchis hand organ hand-organist hand-packed hand paper hand-pick hand-pitched hand pitching hand planer hand plant hand plate hand play hand plow hand polisher hand-pollinate hand-pollination hand-power hand press hand-presser hand-pressman hand print hand promise hand-pump hand pumper hand punch hand-rear hand-reared hand-rinse hand-rivet hand riveter hand-roll hand roller hand rope hand-rub hand-rubbed hand running hand screw hand-sent hand-sew hand sewer hand-sewn hand-shackled hands-off handsome-featured Handsome harry hand-sort hand spar hand spinning hand-splice hand splicer hand-split hand-spun hand-stamp hand-stamped hand-stitch hand stitcher hand-stuff hand sweep hand-tailored hand tap hand-taut hand-thrown hand-tied hand-tight hand-tooled hand tooling hand-treat hand tree hand-trim hand trimmer hand-turn hand turner hand-wash hand-weave hand weaver hand-weed hand weeder hand-worked hand worker hand-woven hand-wrought handy-billy handy-dandy handy man handy-pandy handy-spandy hang-back hang-choice hang-down hanger-back hanger board hanger bolt hanger-on hanger-up hang-fair hang-head hanging-drop culture hang net hang-over hanky-panky Han-lin hanse house happy-go-lucky happy-go-luckyism hara-kiri harbor deck harbor due harbor gasket harbor log harbor master harbor porpoise harbor seal harbor watch hard-acquired hard-baked hard-barked hard-beating hard-billed hard-biting hard-bitted hard-bitten hard-boiled hard-boiledness hard-boned hard-bought hard-bred hard-coated hard-contested hard-cooked hard-cured hard-drawn hard-dried hard-drinking hard-driven hard-driving hard-drying hard-earned hard-edged hard-eyed hard-faced hard-fated hard-favored hard-favoredness hard-feathered hard-featured hard-featuredness hard-fed hard fescue hard-fighting hard-finished hard-fired hard-fleshed hard-fought hard-gained hard-got hard-grained hard grass hard-haired hard-handled hard-heart hard-hit hard-hitting hard-iron hard-laid hard lay hard lead hard-learned hard-living hard-looking hard-minded hard-natured hard oat grass hard-plucked hard-pressed hard-ridden hard-riding hard-set hard-shell hard-shelled hard-skinned hard-spirited hard-spun hard-surfaced hard-swearing hard-timbered hard-trotting hard up hard-upness hard-uppishness hard-used hard-visaged hardware cloth hard-wearing hard-witted hard-won hard-worked hard-working hard-wrought hard-wrung hare-eyed hare-mad hariali grass Harida nut harness hitch harness leather harness maker harness making harness plate harness race harness racing harp groat harp guitar harpoon fork harpoon gun harpoon log harp seal harp-shaped harp shell harp shilling harpy bat harpy eagle harpy-footed harrier eagle harrier hawk harsh-blustering harsh-featured harsh-grating harsh-looking harsh-mannered harsh-syllabled harsh-tongued harsh-voiced hart clover hartshorn bush hartshorn plant hartshorn plantain hart thorn harum-scarum harum-scarumness harvest bell harvest dinner harvest doll harvester ant harvester-thresher harvest festival harvest fish harvest fly harvest home harvesting ant harvest lady harvest-lice harvest lily harvest lord harvest louse harvest moon harvest mother harvest mouse harvest queen harvest spider harvest supper harvest tick harvest work harvest worker harvest yarn has-been hashab tree hash mark hasp lock hassock grass hat blocker hat carder hatch box hatch coamings hatch deck hatchet cactus hatchet face hatchet-faced hatchet man hatchet planimeter hatchet-shaped hatchet stake hatchet vetch hatching spine hatching station hatch money hatch tackle hat cleaner hat dyer hatha-yoga hat homage hat hook Hathor column Hathor-headed hat leather hat lining hat money hat palm hat piece hat plant hat roller hat-shag hat-shaped hat shop hatted kit hat tree hat trick hat trimming haulage incline haunch bone hausse-col haute-feuillite have-been haven cap have-not haver-corn havey-cavey havildar major haw-haw hawk-beaked hawk bell hawk-billed hawk call hawk cuckoo hawk eagle hawk-eyed Hawkeye state hawk-faced hawk fly hawk-headed hawk moth hawk nose hawk-nosed hawk owl hawk parrot hawk swallow hawk-tailed hawse bag hawse bolster hawse-full hawse hook hawser bend hawser clamp hawser fastening hawser-laid hawse timber hawsing iron hawthorn china hawthorn pattern hawthorn tingis haw tree hay asthma hay bacillus hay baler hay barrack hay binder hay-color hay-colored hay cutter hay-fed hay fern hay fever hay hook hay jack hay knife hay loader hay plant hay press hay rig hay road hay saffron hay-scented haystack thorn hay sweep hay-tallat hay tedder hay tit hay wagon hay worm hazard side hazel alder hazel brown hazel crottles hazel-eyed hazel-gray hazel grouse hazel hen hazel-hooped hazel-leaved hazel mouse hazelnut oil hazel oil hazel pine hazel tree hazel worm headache plant headache tree headache wafer headache weed head-aching head betony head blight head block head covering head deformation head earing header-up head fast head-flattening head flume head fold head form head gate head-hanging head harness head-high head house head-hunt head-hunter head-hunting head index heading bond heading course heading joint heading machine heading stone heading tool head joint head kidney head knee head lamp head lettuce head log head louse head maggot head matter head metal head money head motion head netting head on head pin head resistance head sample head scab head-shaking head shaping head smut head space head spar head spin head-splitting head stool head strapper head tax head tone head-tossing head tree head-turned head veil head voice headwater erosion head wind head word head yard heal-all heal-bite heald knitter heal-dog healing blade healing herb healing leaf he-all health insurance health officer health physicist health physics healthy-minded healthy-mindedly healthy-mindedness heap leaching heap roasting hearsay evidence heart action heart-affecting heart amulet heart-angry heart attack heart-back heart block heart bond heart-bound heart-bred heart-burdened heart-cheering heart cherry heart-chilled heart-chilling heart clam heart clot heart clover heart cockle heart complaint heart-corroding heart cup heart-deadened heart disease heart-dulling heart-eating heart failure heart-fallen heart-fashioned heart flower heart-flowered heart-flowered orchid heart-free heart-freezing heart-fretting heart-gnawing heart-gripping heart-happy heart-hardened heart-hardening hearth cricket heart-heaviness heart-heavy hearth money hearth tax heart-hungry heart-ill heart-leaved heart-leaved aster heart-leaved willow heart line heart liver heart liverleaf heart medic heart-melting heart-moving heart murmur heart pine heart point heart-purifying heart-ravishing heart-rending heart-rendingly heart-robbing heart rot heart sac heart-shaking heart-shaped heart-shed heart shell heart snakeroot heart-sorrowing heart-spoon heart stimulant heart-stirring heart strain heart-stricken heart-strickenly heart-strike heart-struck heart-swelling heart-swollen heart-tearing heart-thrilling heart-throbbing heart-tickling heart trefoil heart trouble heart urchin heart wall heart-warm heart-warming heart-weariness heart-weary heart-whole heart-wholeness heart-wise heart-wounded heart-wounding heart-wringing heart-wrung heart yarn heat absorber heat-absorbing heat apoplexy heat asphyxia heat balance heat canker heat capacity heat center heat-conducting heat conduction heat conductivity heat content heat-cracked heat energy heat engine heat-engine cycle heat engineer heat engineering heat equator heat equivalent heater cord heater piece heater-shaped heat exchanger heat factor heat fever heat-forming heat-giving heath aster heath bell heath box heath bramble heath-clad heath cock heath cypress heather bell heather-bleat heather-blutter heather cat heather grass heather purple heather whin heather wool heath family heath fern heath grass heath grouse heath hen heath honeysuckle heath moss heath mulberry heath pea heath peat heath poult heath rush heath scrub heating coil heating element heating furnace heating plant heat-killed heat-laden heat lightning heat-loving heat nodules heat-oppressed heat potential heat-power engineer heat-power engineering heat-producing heat pump heat-radiating heat rash heat ray heat-reducing heat-regulating heat regulator heat-resistant heat-resisting heat rigor heat-softened heat spectrum heat spot heat sum heat-tempering heat-treat heat-treated heat-treating heat-treatment heat unit heat wave heat weight Heauton timoroumenos heave ho heaven-accepted heaven-aspiring heaven-assailing heaven-begot heaven-bent heaven-born heaven-bred heaven-built heaven-clear heaven-controlled heaven-daring heaven-dear heaven-defying heaven-descended heaven-devoted heaven-directed heaven-erected heaven-fallen heaven-forsaken heaven-gifted heaven-given heaven-guided heaven-inspired heaven-instructed heaven-kissing heaven-lighted heaven-lit heavenly body Heavenly city heavenly fruit heavenly host heavenly-minded heavenly-mindedness Heavenly preceptor heaven-made heaven-prompted heaven-protected heaven-rending heaven-sent heaven-sprung heaven-sweet heaven-taught heaven-threatening heaven-touched heaven tree heavenward tree heaven-warring heaven-wide heaven worshiper heave offering heaver-off heaver-out heaver-over heave shoulder heave-shouldered heavier-than-air heaving-line bend heaving pile Heaviside layer heavy-armed heavy artillery heavy-bearded heavy-blossomed heavy-bodied heavy-boned heavy-booted heavy-boughed heavy-drinking heavy-duty heavy-eared heavy earth heavy-eyed heavy-faced heavy-featured heavy field artillery heavy-fisted heavy-fleeced heavy-footed heavy-footedness heavy force fit heavy-fruited heavy-gaited heavy-handed heavy-handedly heavy-head heavy-headed heavy-heeled heavy-jawed heavy-laden heavy-leaved heavy-lidded heavy-limbed heavy-lipped heavy-looking heavy metal heavy-mettled heavy-mouthed heavy oil heavy-paced heavy pine heavy platinum group heavy-scented heavy-seeming heavy-set heavy-shotted heavy-shouldered heavy-shuttered heavy-soled heavy solution heavy-tailed heavy-timbered heavy-winged heavy-witted heavy-wooded he-balsam Hebrew-wise he-broom he-cabbage-tree heck-how hecto-ampere heddle brusher heddle knitter hedge accentor hedge apple hedge bedstraw hedge bells hedge bird hedge-bound hedge cactus hedge carpenter hedge chanter hedge crocus hedge fumitory hedge garlic hedge grape hedgehog aloe hedgehog cactus hedgehog caterpillar hedgehog grass hedgehog transformer hedge hyssop hedge laurel hedge layer hedge marriage hedge rose hedge sparrow hedge stake hedge trimmer heebie jeebies heel-attaching heel block heel blocker heel-breast heel-breaster heel builder heel chain heel clamp heel cutter heel-fast heel fly heel jigger heel nailer heel pad heel padder heel ring heel rope heel seat heel seater heel splitter heel spur heel stay heel tool heel trimmer heel wedge he-goat he-heather he-holly he-huckleberry heigh-ho height block height board height district height gauge height measure heir apparency heir apparent heiress-ship heir portioner heliotrope gray helium group helix angle hell-begotten hell-bent hell-bind hell-black hell-bound hell-brewed hell-dark hell-deep hell-devil hell-diver hell-doomed hellebore green hellebore red hell-engendered Helleno-italic hell-fire hell gate hell-hard hell-hatched hell-haunted hell-like hell mouth hello girl hell-raker hell-red hell-vine helmet quail helmet-shaped helmet shell helmet-wearing helm port helter-skelter helter-skelteriness helve hammer Helvetia blue he-man hematin crystals hematin paste hematite red hemispherico-conical hemispherico-conoid hemi-type hemlock fir hemlock-leaved hemlock parsley hemlock pitch hemlock spruce hemolymph gland hemp agrimony hempen tippet hemp nettle hemp oil hemp palm hempseed oil hen clam hen curlew hen-driver hen-fat hen-feathered hen-feathering hen flea hen gorse hen harrier hen hawk hen louse hen mold hen party hen pepper hen plant Henrietta cloth hen-tailed he-oak hepato-pancreas herabol myrrh heraldic knot herb bennet herb doctor herd instinct heriot service hermaphrodite brig hermaphrodite caliper hermaphrodite duct hermit crab hermit crow Hermit kingdom hermit order hermit thrush hermit warbler hermosa pink hero worship hero-worshiper herr-ban herringbone gear herringbone stitch herring gull herring hog herring-kale herring king herring oil herring pond herring-shaped herring work hesitation waltz heterogeneous system het up hexaethyl tetraphosphate hexagon-drill hex doctor hey-ho Hiberno-celtic Hiberno-english hiccup-nut hick joint hickory acacia hickory aphid hickory borer hickory elm hickory girdler hickory moth hickory nut hickory oak hickory phylloxera hickory pine hickory poplar hickory shad hickory twig girdler hickory wattle hidden-fruited hidden-veined hide beetle hidebound disease hide-out hide rope hide splitter hielaman tree hi-fi higgledy-piggledy high-aimed high-aiming high-angled high-angle fire high-arched high-aspiring high-backed high-blazing high-blessed high-blooded high-blown high-bodiced high-boiling high-boned high-breasted high-brow high-browed high-browish high-browishly high-browism high-built high-caliber high-case high-caste high-ceiled high-ceilinged high chair High church High-churchism High-churchist High-churchman High-churchmanship high-class high-climber high-climbing high-collared high-colored high-complexioned high-compression high-count high-crested high-crowned high-cut high-density high-duty high-elbowed high-embowed higher-up high-fated high-feathered high-fed high-flavored high-flown high-flushed high-foreheaded high-frequency high-frequency cable high-frequency telephony high-frequency treatment high-gazing high-grade high-grade ore high-hatted high-hatter high-hatty high-headed high-heaped high-heel high-heeled high-holder high-horned high-hung high jinks high-judging high jump high jumper high-keyed highland cranberry highland cudweed Highland terrier high-level high light high-lineaged high-lived high liver high-lying high-mettled high-minded high-mindedly high-mindedness high-motived high-mounted high-mounting high-muck-a-muck high-necked high-notioned high-pass high-pass filter high-peaked high-pitch high-pitched high-placed high-pointing high-pooped high-potential high-power high-powered high-pressure high-pressure area high-pressure cylinder high-priced high-principled high-prized high proof high-quality high-raised high-ranking high-reaching high-reared high-resolved high-rigger high-roofed high school high sea high-seasoned high-seated high-set high-shouldered high-sided high-sighted high-soaring high-soled high-souled high-sounding high-speed high-speed steel high-speed turn high-spirited high-spiritedly high-spiritedness high steel high-stepper high-stepping high-strung high-sulphur high-swollen high-swung high-tail high-tasted high-temperature cement high-tempered high-tension high-test high-thoughted high-throned high-thundering high time high-toned high-topped high-tory high-towered high treason high-tuned highty-tighty high-up high-vaulted high visibility high-voltage high-waisted high-walled high-warp high-water mark high-water shrub highway engineer highway engineering highway marker high wine high-wrought high yellow hig taper hilaro-tragedy hill climber hill country hill folk hill fox hill-girdled hill-girt hill grub hill oat hillock tree hill palm hill partridge hill planter hillside plow hill station hill-surrounded hill tit Hilo grass Himalo-chinese hind-foremost hind-gut hind kidney hind shank Hindu-javan Hindu-malayan hind wing hinge fault hinge joint hinge line hinge plate hinge-pole hinge strap hinge tooth hinging post hip boot hip brier hip disease hip girdle hip joint hip knob hip lock hip molding hippety-hoppety hippocras bag hip rafter hip roll hip roof hip-roofed hip rose hip tile hip vertical Hirado ware hirdie-girdie hirdum-dirdum hired girl hired man hirse grass hirsuto-rufous Hispano-american Hispano-gallican Hispano-german Hispano-italian Hispano-moresque his self historico-ethical hitch angle hitch kick hitch pin hit-in hit-off hitty-missy Hiung-nu hive bee hive body hive sirup hive vine hoary-eyed hoary-feathered hoary-haired hoary-leaved hoary-white hobble skirt hob ferret ho-bird hobson-jobson hob tap hock cockle hockey cart hockey skate hockey stick hocking ale hock leg Hock monday Hock money hock shop Hock tuesday hocus-pocus hod carrier hodge-pudding hoe culture hoe drill hog ape hog apple hog-backed hog brake hog caterpillar hog chain hog cholera hog deer Hogen-mogen hog-faced hog-fat hog flu hogger pump hog hair hog hook Hog latin hog louse hog-maned hog millet hog money hog-mouthed hog-necked hog-nosed hognose snake hog pox hog-raising hog-tie hog-tight hog turn hog wallow hog-wild hog wire hoist loader hoity-toity hoity-toityism hoity-toityness Hok-lo hold beam hold-clear hold-down holder-forth holder-on holder-up hold-off holdup man hold yard hollow-backed hollow-billed hollow-cheeked hollow-chested hollow-eyed hollow-footed hollow-fronted hollow-ground hollow heart hollow horn hollow-horned hollow-jawed hollow-pointed hollow-toned hollow-toothed hollow-vaulted hollow-voiced holly fern holly green hollyhock anthracnose hollyhock fungus hollyhock rust holly-leaved holm cock holm oak holm thrush holm tree holster pipe holus-bolus holy grass Holy roller Holy rollerism Holy willie home-abiding home address home-along home-baked home-brew home-brewed home-bringing home builder home-building home-built home circle home-come home-coming home-driven home dweller home-dwelling home-faring home-fed home-going home-growing home-grown home-killed home life home-loving home office homeopathic dose home-owning home-raised home-reared home-sailing home-sent home sheltered home-staying homestead law home study home tie home town home towner homeward-bounder home-woven homing pigeon homo-hetero-analysis homo-organ homo signorum Honduras bark Honduras cedar Honduras mahogany Honduras oak Honduras rosewood honey ant honey badger honey bag honey ball honey balm honey bear honey-bearing honey beige honey bell honey bird honey bottle honey bread honey bunch honey buzzard honey cherry honey clover honey-color honey-colored honeycomb coral honeycomb isinglass honeycomb moth honeycomb radiator honeycomb ringworm honeycomb sponge honeycomb stitch honeycomb stomach honeycomb tripe honey creeper honeydew melon honey-dropping honey eater honey-eating honey extractor honey-flowing honey fly honey garlic honey-gathering honey gland honey grass honey guide honey-heavy honey jack honey kite honey-laden honey-loaded honey locust honey lotus honey maker honey making honey mesquite honey moth honey mushroom honey palm honey plant honey ratel honey sac honey-secreting honey-stalks honey-steeped honey-stored honey-storing honeysuckle apple honeysuckle clover honeysuckle family honeysuckle grass honeysuckle ornament honeysuckle tree honey-tasting honey-tongued honey tree honey tube honey vine honey-voiced honey weasel honey whip honey yellow honey-yielding honky-tonk honor-fired honor-giving honor man honor medal honor-owing honor point honor price honor roll honor system honor-thirsty hood clock hood-crowned hooded barley hooded grass hooded matweed hood end hoodie crow hood molding hood-shaped hoof-cast hoof-cut hoof-plowed hoof-printed hoof-shaped hook-armed hook-backed hook-beaked hook-billed hook check hook climber hookem-snivey hooker-off hooker-on hooker-out hooker-over hooker-up hook gauge hook-handed hook-headed hook ladder hook money hook-nosed hook pin hook rug hook screw hook-shaped hook-shouldered hook slide hook-snouted hook spanner hook squid hook-tipped hookworm disease hook wrench hooky-crooky hoop ash hoop-back hoop bundler hoop-la hoop petticoat hoop pine hoop-shaped hoop shell hoop skirt hoop snake hoop tension hoop tree hoop willow hoop withe hootchy-kootchy hoot owl hoot toot hop-about hop aphid hop back hop borer hop clover hop dog hope chest hop flea beetle hop flour hop fly hop froth fly hop gland hop grub hop hornbeam hop jack hop kiln hop looper hop louse hop meal hop merchant hop mildew hop mold hop moth hop oil hopper-bottom car hopper car hopper closet hopper frame hopper salt hopper-shaped hop plant hop plant borer hop sack hop sacking hop-shaped hop tree hop trefoil hopvine moth hopvine thecla horehound motherwort horizon blue horizon glass horn alligator horn arrester horn bar hornbill cuckoo hornblende-gabbro hornblende schist horn bug horn chestnut horn die horned snake hornet comb hornet fly horn-eyed horn fly horn-footed horn gap horn knot horn lead horn-mad horn-madness horn ore horn poppy horn pout horn pox horn-shaped horny-fingered horny-fisted horny-hoofed horny-knuckled horny-nibbed horror-crowned horror-fraught horror-inspiring horror-loving horror-stricken horror-struck horror vacui horse aloes horse ant horse artillery horse bean horse-bitten horse block horse boat horse boot horse bot horse bow horse box horse chanter horse chestnut horse clipper horse coper horse courser horse dam horse dealer horse-dealing horse devil horse doctor horse-drawn horse drench horse driver horse duck horse elder horse emmet horse-eye horse-faced horse fiddle horseflesh ore horsefoot snipe horse gentler horse godmother horse gowan Horse-guardsman horse hoe horse-hour horse iron horse latitudes horse litter horse louse horse-loving horse mackerel horse master horse-matcher horse nop horse opera horse-owning horse pick horse plum horse post horsepower-hour horsepower-year horse race horse racer horse racing horse-radish horse railroad horse rake horse rasp horse rough horse savin horse scraper horse sense horseshoe bat horseshoe kidney horseshoe magnet horseshoe nail horseshoe-shaped horseshoe snake horse show horse sickness horse-taming horse thistle horse tick horse towel horse trade horse-trading horse trainer horse wrangler Hortense blue Hortense violet hose cart hose cock hose company hose duck hose grass hose hook hose jacket hose reel hose truck hospital fever hospital gangrene hospital light hospital lock hospital ship hospital station hospital steward hospital train hostess house hostess-ship host plant hot-air hot-blast hot-blast system hot-blooded hot-bloodedness hot-breathed hot-bright hot-broached hot cake hot chisel hot-cold hot-deck hot dog hot-drawn hot-dry hotel broker hotel lock hotel manager hotel rack hot-eyed hot-forged hot-galvanize hot-hoof hothouse lamb hot-humid hot iron hot-livered hot-mettled hot-mix hot-moist hot-punched hot rod hot-rolled hot seat hot-shot hot-spirited hot-stomached hot-swage hot-tempered hot trimmer hot-vulcanized hot-water fit hot wave hot well hot-windy hot-wire hot-wire meter hot-work hound-dog hound-marked hour angle hour bell hour book hour circle hourglass screw hourglass-shaped hourglass spider hourglass spring hourglass stomach hour hand hour line hour-long hour plate hour stroke hour watch hour wheel house agent house ant house barge house-cap house centipede house chambermaid house cleaner house crow house decorator house dog house dove house drain house dress house duty house farmer house flag house furnisher house furnishing house god house-headship household suffrage house holly fern house jobber house knacker house martin house mosquito house mouse house mover house moving house organ house painter house party house physician house place house-proud house-raising house snake house staff house steward house surgeon house tax house trap house trim house wagon house wrecker housing project hover fly hover hawk how come howgozit curve howling monkey hoyle shooting hub-band hub-bander hub-banding hubble-bubble hub borer hub-boring hub brake hub braking hub-deep hub driller hub odometer hub turner hub-turning hue cycle huff-duff huff-shouldered huge-armed huge-bellied huge-bodied huge-boned huge-built huge-grown huge-horned huge-jawed huge-limbed huge-looking huge-proportioned huge-tongued hull insurance hull-less hull-less oat human-headed humble-looking humble-mannered humble-minded humble-mindedly humble-mindedness humble-spirited humble-visaged humbug-proof humero-olecranal humidity-proof humite group hummel corn hum note humpbacked salmon hump-shaped hump-shouldered humpty-dumpty Humpty dumpty hump yard hundred-dollar hundred-eyed hundred-feathered hundred-footed hundred-handed hundred-headed hundred-leaf hundred-leaved hundred-legged hundred-legs hundred-mile hundred-percenter hundred-pound hundred-pounder hundred-year Hungary blue Hungary leather Hungary water hunger belt hunger-bit hunger-bitten hunger-driven hunger grass hunger-mad hunger march hunger marcher hunger-pressed hunger-stricken hunger strike hunger striker hunger-stung hunger-worn hungry rice hung-up hunky-dory hunting cap hunting case hunting dog hunting ground hunting horn hunting knife hunting lodge hunting shirt hurdle race hurdle racer hurdle work hurdy-gurdist hurdy-gurdy hurly-burly hurr-bur hurricane bird hurricane deck hurricane-decked hurricane globe hurricane house hurricane lamp hurricane-proof hurricane signal hurry-burry hurry call hurry-scurry hurry-up hurst beech hush-hush hush money hush puppy hush ship hush shop hush tube husk corn husking bee husking glove husking peg husk tomato hustings court hutch table hutia carabali hutia conga hut-keep hut-shaped hyacinth bacteriosis hyacinth bean hyacinth blue hyacinth-flowered hyacinth red hyacinth squill hyacinth violet Hy-brasil hydatid mole Hydra-headed hydrangea blue hydrargyri subchloridum Hydra-tainted hydro-airplane hydrocarbon cement hydrogen arsenide hydrogen bomb hydrogen bromide hydrogen chloride hydrogen cyanide hydrogen dioxide hydrogen electrode hydrogen fluoride hydrogen iodide hydrogen ion hydrogen oxide hydrogen peroxide hydrogen selenide hydrogen silicide hydrogen sulphide hydrogen telluride hydromellitic acid hydrometric pendulum hydrophobia cat hydrotelluric acid hydro-ureter hydroxy acid hydroxybenzoic acid hydroxysuccinic acid hyena poison hymn-loving hymn maker hymn making hymn singer hymn singing hymn tune hymn writer hymn writing hyodeoxycholic acid hyodesoxycholic acid Hyper-calvinism Hyper-calvinist Hyper-calvinistic Hyper-dorian hyperemesis gravidarum hyperesthesia theory Hyper-ionian Hyper-jacobean Hyper-latinistic Hyper-lydian Hyper-phrygian Hyper-romantic Hyper-uranian hypo-alum hypoantimonic acid hypocotyl arch hypocrite plant hypodynamia cordis hypophysis cerebri hypothetico-disjunctive hyson skin hyssop-leaved hyssop loosestrife hyssop oil hyssop skullcap hyssop spurge hyssop violet hysteresis coefficient hysteresis meter hysteria-proof hystero-epilepsy hystero-epileptic hystero-epileptogenic hysteron proteron hystero-oophorectomy hystero-salpingostomy Ibero-aryan Ibero-celtic Ibero-insular Ibero-pictish I-bunga ice age ice anchor ice apron ice ax ice bag ice banner ice barrier ice beam ice bear ice belt iceberg lettuce ice bird ice-blind ice-breaking ice bridge ice-brook ice-built ice calorimeter ice canoe ice-capped ice cave ice chest ice chipper ice-chipping ice chopper ice-clad ice claw ice-cold ice collar ice color ice concrete ice-cooled ice-covered ice cream ice-cream cone ice-cream fork ice-cream freezer ice-cream soda ice creeper ice crusher ice-crushing ice-crusted ice crystal ice cuber ice-cubing ice cutter ice-cutting ice dealer ice dike iced-tea spoon ice duck ice-enveloped ice feathers ice fern ice field ice fishing ice floe ice flower ice foot ice fork ice fox ice-free ice front ice glass ice gorge ice-green ice gull ice gush ice hockey ice hook ice-imprisoned ice jam ice-laid ice lance Iceland crystal Iceland dog Iceland falcon Iceland gull Iceland lichen Iceland moss Iceland poppy Iceland sea grass Iceland spar ice lead ice line ice-locked ice machine ice maker ice making ice master ice nail ice needle ice pack ice paper ice partridge Ice patrol ice period ice petrel ice pick ice pillar ice pilot ice pink ice plant ice plow ice point ice raft ice river ice run ice scraper ice shaver ice shed ice sheet ice ship ice sky ice spar ice spur ice stick ice storm ice stream ice ton ice tongs ice water ice whale ice yacht ice yachting ice yachtsman ichneumon fly icterus index Idaho cedar Idaho white pine idee-force identification mark identification tag identity matrix ideo-unit idiomorphic-granular idiot stitch idle-brained idle-handed idle-looking idle-minded idle-pated idle-witted idonic acid if-clause ife hemp I girder ignition cap ignition charge ignition tube I-ism ikrar-namah ilang-ilang ileo-ileostomy ilio-inguinal iliotibial band ill-according ill-accoutered ill-accustomed ill-achieved ill-acquired ill-acted ill-adapted ill-adventured ill-advised ill-advisedly ill-affected ill-affectedly ill-affectedness ill-agreeable ill-agreeing ill-annexed ill-armed ill-arranged ill-assimilated ill-assorted Illawarra ash Illawarra pine ill-balanced ill-befitting ill-begotten ill-behaved ill-being ill-beseeming ill-bested ill blood ill-boding ill-born ill-borne ill-breathed ill-bred ill breeding ill-built ill-calculating ill-cared ill-celebrated ill-cemented ill-chosen ill-clad ill-cleckit ill-coined ill-colored ill-come ill-comer ill-composed ill-concealed ill-conceived ill-concerted ill-conditioned ill-conditionedness ill-conducted ill-considered ill-consisting ill-contented ill-contenting ill-contrived ill-cured ill-customed ill-deedy ill-defined ill-digested ill-directed ill-disposed ill-disposedness ill-dissembled ill-doing ill-done ill-drawn ill-dressed ill-effaceable ill-erected ill-famed ill-fardeled ill-faring ill-faringly ill-fashioned ill-fated ill-favored ill-favoredly ill-favoredness ill-featured ill-fed ill-fitted ill-fitting ill-foreseen ill-formed ill-founded ill-friended ill-furnished ill-gendered ill-given ill-got ill-gotten ill-governed ill-greeting ill-grounded ill-hap ill-headed ill-health ill house ill-housed ill-humor ill-humored ill-humoredly ill-humoredness ill-informed Illinois gooseberry Illinois nut ill-invented illipe butter ill-joined ill-judge ill-judged ill-judging ill-kept ill-knotted ill-less ill-lighted ill-limbed ill-lit ill-lived ill-looking ill-lookingness ill-made ill-manageable ill-managed ill-mannered ill-manneredly ill-manneredness ill-mannerly ill-matched ill-mated ill-meant ill-met ill-minded ill-mindedly ill-mindedness ill-natured ill-naturedly ill-naturedness ill-neighboring ill-noised ill-nurtured ill-observant ill-occupied ill-omened ill-paid ill-perfuming ill-persuaded ill-placed ill-pleased ill-proportioned ill-qualified ill-regulated ill-requite ill-requited ill-resounding ill-roasted ill-ruled ill-satisfied ill-savored ill-scented ill-seasoned ill-seen ill-set ill-smelling ill-sorted ill-sounding ill-spent ill-spun ill-starred ill-strung ill-succeeding ill-suiting ill-supported ill-tasted ill-taught ill-tempered ill-temperedly ill-temperedness ill-timed ill-tongued ill-treat ill-treated ill-treater ill-treatment ill-tuned ill-turned illuminating engineer illuminating engineering illuminating gas illuminating oil illuminating projectile ill-understood illupi oil ill-usage ill-use illusion-proof ill-ventilated ill-weaved ill-wedded ill-willed ill-willer ill-willie ill-willing ill-willy ill-wish ill-wisher ill-won ill-worded ill-written ill-wrought ill-yoked Illyric-anatolian image breaker image-breaking image space image worship imaginal bud imaginal disk imaginal type imagination-proof Imari ware imbibition process imide chloride imino ester imitation-proof imitation vermillion immersion foot immersion lens immunity theory imou pine impact pressure impact test impact theory impedance coil impedance component impedance drop impedance ratio impedient impediment implantation cone import credit impost block imp-pole improvement lease improvement purchase impulse excitation impulse face impulse movement impulse transformer in alt in altissimo in-and-outer Inauguration day in-between in-book Inca bone Inca dove in-calf incasement theory incense boat incense burner incense cedar incense juniper incense shrub incense tree incense wood inch-deep inch-high inch-long inch plant inch-pound inch rule inch-thick inch-ton inch-wide incisor foramen in-clearer in-clearing in-clerk inclination compass inclinatory needle inclusion body income account income basis income bond income sheet income tax in-co-ordinate in-co-ordinated in-co-ordination increase twist increment borer incubator bird in curve indanthrene blue inde blue indemnity bond Independence day Independence hall index bar index center index correction index crank index error Index expurgatorius index finger index forest index fossil index glass index hand index head index notation index number index per cent index pin index plane index plate index sector India berry tree India buff India-cut India drugget India gall India gum India ink India malacca India matting India muslin Indian agency Indian agent Indiana limestone Indian blanket Indian bread Indian bridle Indian gift Indian giver Indian-meal moth Indian pinkroot India paper India pepper India pink India proof India rubber India-rubber tree India-rubber vine India scrim India shawl India silk India tan India tea India tint indicator card indicator plant indicator telegraph indignation-proof indigo auxiliary indigo-bearing indigo bird indigo blue indigo broom indigo brown indigo bunting indigo bush indigo carmine indigo copper indigo-dyed indigo dyer indigo extract indigo grinder indigo-grinding indigo maker indigo plant indigo printing indigo-producing indigo snake indigo thorn indigo weed indigo white indigo-yielding in-dimension Indo-afghan Indo-african Indo-aryan Indo-australian Indo-british Indo-briton Indo-burmese Indo-celtic Indo-chinese Indo-dutch Indo-egyptian Indo-english Indo-european Indo-europeanist Indo-french Indo-gangetic Indo-german Indo-germanic Indo-greek Indo-hellenistic Indo-hittite Indo-iranian Indo-malayan Indo-malaysian Indo-mohammedan Indo-oceanic Indo-pacific Indo-portuguese Indo-saracenic Indo-scythian Indo-spanish Indo-sumerian Indo-teutonic inductance coil inductance factor induction balance induction bridge induction coil induction compass induction furnace induction generator induction instrument induction machine induction meter induction regulator induction top inductor alternator inductor compass inductor generator industrial school inertia ellipsoid inertia governor inertia transmission I-ness inextensive deformation infant school infection hypha infection period infection thread inferiority complex infield fly infiltration vein infinito-absolute infinito-infinitesimal infinity plug inflationist period inflection point influence machine infra-anal infra-angelic infra-auricular infra-axillary infra dig infra dignitatem infra-esophageal Infra-lias infra praesidia infra-umbilical infusion process ingle-bred ingle cheek in-goal ingot chipper ingot cutter ingot forger ingot heater ingot iron ingot lathe ingot maker ingot weigher ingrain carpet in-group inheritance tax injection-gneiss injury-proof ink bag ink ball ink black ink-blurred ink bottle ink bottler ink cap ink-carrying ink-colored ink disease ink-distributing ink-dropping ink eraser ink fountain ink gall ink grinder ink knife ink malady ink marble ink mixer ink mushroom in-knee in-kneed ink nut ink plant ink printer ink roller ink sac ink-slab ink-spotted ink-stained ink-wasting ink-writing ink-written inland waters in-law in-lean in-line engine in-lot in-marriage in-migrant in-migrate in-migration innovation-proof in-off inositol-hexaphosphoric in-plant in-quarto in-sail insanity-proof insect bed insect flower insect lime insect orchis insect powder insect wax in-service inside-out in so far in solido in solidum insolvency statute insomnia-proof inspection gauge inspector general installment mortgage installment plan installment selling instance court instance side instruction card instruction-proof instrument board instrument flight instrument flying instrument landing instrument transformer insulation resistance insurance adjuster insurance agent insurance auditor insurance broker insurance canvasser insurance clerk insurance collector insurance company insurance examiner insurance messenger insurance patrol insurance reserve insurance salesman insurance solicitor insurance tester insurance traveler insurance underwriter intaglio printing intake valve integrable group integral calculus integral cover integral curvature integral cylinder head integral equation integral function integral photography integral unit integral whole intelligence bureau intelligence office intelligence officer intelligence quotient intelligence test Inter-american Inter-andean interesse termini interest lottery Inter-european interference color interference figure interference fit interference pattern interference phenomenon interference-proof interference spectrum interim certificate interim dividend Inter-imperial interior decorator interior planet interior point interior polygon interior side interior slope interjection point interline rate intermedio-lateral internal-combustion internal medicine international-minded inter-plane interpretation clause interrogation point intersection locus inter-varsity intervertebral substance in-to-out intra-abdominal intra-abdominally intra-acinous intra-alveolar intra-appendicular intra-arachnoid intra-arterial intra-articular intra-atomic intra-atrial intra-aural intra-auricular intracranial cast intra-mercurial intransitive relation intra-urban intra-urethral intra-uterine intra-vitam inversion point inversion temperature inverting telescope invert soap investment bank investment banker investment banking investment bill investment broker investment credit investment reserve investment trust involute-leaved inward-flow turbine Iodeosin b iodine absorption iodine bush iodine pentoxide iodine scarlet iodine value iodine weed iodobehenic acid Io moth Ione formation ion exchange ionization constant ionization current iota subscript ipecac spurge ippi-appa ipse dixit I-railed Irano-semite iridium black iris blue iris diaphragm iris family iris green Irish-american Irish-born Irish-bred Irish-canadian Irish-english Irish-gaelic Irish-grown Irish-speaking iris mauve iris stop Irob-saho Iron age iron alum iron bacteria iron-banded ironbark acacia ironbark box iron-barred iron-black iron blue iron-blue dun iron-blue spinner iron-boweled iron-braced iron-branded iron brown iron buff iron bullet iron-burnt iron-calked iron calker iron-capped iron carbide iron carbonate iron-cased iron caster iron cement iron chloride iron citrate iron clay iron-clenched iron-coated iron coating iron-colored iron concrete iron-cored iron corer iron-core transformer iron curtain iron discharger iron dog iron-enameled ironer-up iron-faced iron family iron-fastened iron filing iron fitter iron-forged iron forger iron founder iron foundry iron-free iron glance iron-gloved iron grass iron-grated iron gray iron-guarded iron gum iron-hard iron heater iron-heeled iron-hooped iron hydroxide ironing board iron-jawed iron-jointed iron-knotted iron-lined iron liquor iron loss iron lung iron-man iron manufacturer iron-marked iron-mine iron miner iron mining iron minium iron-mold iron molder iron-mooded iron-nailed iron-nerved iron oak iron ore iron oxide iron-oxide red iron-pated iron planer iron plate iron plater iron prospector iron protosulphate iron puddler iron putty iron pyrites iron-railed iron ration iron red iron-ribbed iron-riveted iron roller iron roofer iron sand iron scale iron-sceptered iron scrap iron shearer iron-sheathed iron-souled iron spinel iron-spotted iron-stained iron stand ironstone china iron-strapped iron stretcher iron-studded iron sulphate iron sulphide iron-tipped iron-tired iron-toothed iron tree iron trimmer iron-vane meter iron-visaged iron-willed iron-winged iron-witted iron-worded iron yellow irony-proof irrigation engineer irrigation engineering irritation-proof Irtysh ostyak Ish-bosheth I-ship ising-star island-belted island-born Island carib island-contained island continent island-dotted island-strewn island-studded island universe isolation hospital iso-octane isopropyl alcohol iso-urea iso-uretine iso-uric isoxylic acid Italian school Italo-austrian Italo-byzantine Italo-celt Italo-classic Italo-grecian Italo-greek Italo-hellenic Italo-hispanic Italo-serb Italo-slav Italo-swiss Italo-turkish itch louse itch mite itch tree itchwood tree ivory-backed ivory-beaked ivory-billed ivory bleacher ivory board ivory-bound ivory brown ivory carver ivory carving ivory cutter ivory engraver ivory-faced ivory-finished ivory fluter ivory gull ivory-hafted ivory-handled ivory-headed ivory-hilted ivory hunter ivory hunting ivory nut ivory palm ivory paper ivory plant ivory plum ivory polisher ivory porcelain ivory rounder ivory slabber ivory sorter ivory-studded ivory-tinted ivory-toned ivory tree ivory-white ivory-wristed ivory yellow ivy bush ivy green ivy gum ivy tree jaal goat Jablochkoff candle Jablochkoff lamp jacaranda brown jacitara palm jack-a-dandy jack-a-dandyism jackal buzzard Jack-a-lent jack arch jackass bark jackass clover jackass copal jackass deer jackass fish jackass hare jackass kingfisher jackass penguin jackass rig jackass-rigged jack baker jack bean jack block jack boot jack-booted jack bowl jack chain jack crosstrees jack crow jack curlew jack dog jacket crown Jackfield ware Jack-fool jack fruit jack head jackhead pit jack hern jack ladder jack lagging jack lamp jack lantern jack light jack line Jack mormon Jack nasty jack nicker jack oak jacko bush jack-o-lantern jack pigeon jack pin jack pine jack pit jack plane jack plum jack post jack pot jack press jack rabbit jack rafter jack rib jack roll jack rope Jack rose jack saddle jack salmon jack shave Jackson vine jack-spaniard jack spinner jack spring jack staff jack stop jack stretcher jack stringer jack-tar jack timber jack towel jack tree jack truss jack worm jack yard jack-yarder jacky winter jade green jag bolt jagged-toothed jagger spring jaggery palm jagging iron jag spear jag spike jail delivery jail fever jalee work jamb shaft jam nut jam-pack jam riveter jam session jam weld janca tree jangada fiber jangada tree Janizary music Janus-face Janus-faced janus geminus Janus-headed japan drier japanic acid jara-assu jar-burial jargon aphasia jar-owl jasper gray jasper green jasper opal jasper pink jasper red jasper ware jaundice berry jaundice tree Java almond Java canvas Java coca Java cotton Javel green javelin bat javelin man jaw bit jaw clutch jaw coupling jaw-cracking jaw crusher jaw jerk jaw-locked jaw rope jaw slide jaw-tied jaw-twister jaw wrench jay bird jay blue jay teal jazz stick jealous-hood jealous-pated jealousy-proof jecoric acid jeer capstan Jeffrey pine jejuno-colostomy jejuno-ileostomy jejuno-jejunostomy jelly bag jelly bean jelly boiler jelly lichen jelly nut jelly plant jelly poke jelly powder jelly roll Jemlah goat jennie harp jenny ass jenny cutthroat jenny howlet jenny scaffold jenny winch Jenny wood jenny wren jeopardy assessment jerboa kangaroo jerboa mouse jerboa rat jerkin-head jerk pump jerry-build jerry-builder jerry hat jerry shop Jersey centaury Jersey cloth Jersey cream Jersey elm Jersey fir Jersey lightning Jerusalem artichoke Jerusalem cherry Jerusalem corn Jesuit bark Jesuit berry Jesuit style Jesus bug Jesus day jet airplane jet-black jet break jet coal jet engine jet interrupter jet motor jet-pile jet plane jet-propelled jet propeller jet propulsion jet pump jet rock Jew-bait Jew-baiter jew crow jewel block jewel-bright jewel-colored jewel-enshrined jewel-gleaming jewel-headed jewel-loving jewel-proof jewel-studded jewelweed family Jew lizard Jew monkey jew nail Jew plum jib boom jib crane jib door jib guy jib-headed jib-header jib iron jib netting jib-o-jib jib pole jib sheet jib topsail jib traveler jig-back jig borer jig brow jig bushing jig button jig-drill jig-file jigger boom jigger mast jigger pump jigger saw jigger weed jiggery-pokery jig indicator jig-jig jig-jog jig-joggy jigog ring jig saw jigsaw puzzle Jim crow Jim crowism jim-dandy jingle bell jingle shell jingle stick jinny road job analysis job card job font job lot job order job press job printer job printing job ticket job type job watch jockey backstay jockey bar jockey boot jockey box jockey cap jockey club jockey coat jockey gear jockey pulley jockey weight jockey wheel jock strap jo-darter Jodo-shu Joe miller Joe-millerism Joe-millerize joe-pye weed joe rocker joggle beam joggle piece joggle plating joggle post jog-jog jog trot John-apple John bull John-bullish John-bullism John-bullist John chinaman John doe John hancock John law Johnny darter Johnny jump Johnny verde joiner hardware joiner work joint account joint bar joint-bedded joint box joint chair joint clay joint filler joint fir joint gap joint grass joint hinge joint making joint pin joint rate joint runner joint rust joint sensation joint sense joint snake joint stock joint-stockism joint wire joking-relative jolly boat jolly jumper jonquil yellow joss flower joss house joss paper joss pidgin joss stick journal bearing journal box journal turbine journal voucher journey weight jouvence blue joy-bereft joy-bright joy-bringing joy-deserted joy-dispelling joy-encompassed joy-inspiring joy-killer joy-mixed joy powder joy-rapt joy-resounding joy ride joy rider joy riding joy stick joy-wrung Judaeo-arabic Judaeo-christian Judaeo-german Judaeo-persian Judaeo-spanish Judaeo-tunisian Judas candlestick Judas-ear Judas light Judas torch judex ordinarius judex pedaneus judge advocate judge delegate judge-made judge ordinary judgment book judgment cap judgment creditor judgment day judgment debt judgment debtor judgment hall judgment lien judgment note judgment-proof judgment rate judgment seat judgment summons jugal point jug-handle jug-jug jug plant juice pear jujube plum Julyflower grass jumbee bean jump ball jump bid jumper sled jumper stay jumper wire jump frog jump head jumping disease jumping-off-place jump joint jump-off jump ring jump rope jump saw jump scrape jump seat jump shot jump spark jump-spark coil jump stroke jump weld jump wire junction box June beetle June drop June grass June pink June sucker jungle bear jungle bendy jungle cat jungle-clad jungle cock jungle-covered jungle fever jungle fowl jungle green jungle hen jungle ox jungle rice jungle sheep jungle-traveling jungle-walking jungle-worn Junior league Junior leaguer juniper bay juniper berry juniper-berry oil juniper cedar juniper gum tree juniperic acid juniper oil juniper-tar oil juniper tree juniper webworm junk bottle junk collector junk dealer junk heap junk peddler junk ring junk shop junk yard Jura-trias Jura-triassic jury chancellor jury-fixer jury fixing jury-rigged jury-shy jury-squaring jury wheel justice box justice-dealing Justice general Justice-generalship justice-loving justice-proof justice seat justice-slighting jute board jute butts jute crusher jute opener jute tier juxta-ampullar juxta-articular kaawi yam Kabuli rupee Kaffir ant Kaffir boom Kaffir bread Kaffir chestnut kaffir corn Kaffir cotton kai-kai kaiser brown kaju apple kala azar kale brose kale gully kale runt kale worm kambing utan kamoot tree kanal rays kangaroo acacia kangaroo apple kangaroo bear kangaroo beetle kangaroo closure kangaroo court kangaroo feathers kangaroo grass kangaroo hare kangaroo jerboa kangaroo mouse kangaroo rat kangaroo vine kanya butter kanya tree kapok oil kapok tree Kara kalmuck Kara-kalpak Kara kirghiz karroo bush katsura tree kauri pine kauri resin Kaus australis Kaus borealis Kaus meridionalis kava gum Kazan tatar kedani fever kedani mite keekwilee-house keel-bully keeled snake keel line keel petal keel rope keelson rider keena nuts keen-biting keen-eared keen-edged keen-eyed keen-scented keen-sighted keen-witted keg fig keg spring kelp ash kelp crab kelp goose kelp gull kelp hen kelp pigeon kelp plover kelp raft kemiri nut kemp-haired keno goose kent cap kerat kamel kermes mineral kermes oak kernel smut kernel spot kestner plant ketch-rigged keto-enol isomerism keto form ketone alcohol ketone body ketone group kettle-bottom kettle-bottomed kettle hole kettle moraine kettle net kettle stitch kew tree key bed key bit key block key bolt key bugle key chord key-cold key desk key-drawing key drift key file key filer key frame key fruit key harp key holder keyhole limpet Keyhole nebula keyhole saw keyhole urchin key horizon key industry key line key man key money keynote address key pad key pattern key pin key pipe key plate key plug key ring key rocker key seat key-seat rule key sentence key signature key size key station Keystone state key stop key tone key trumpet keyway caliper keyway drill key word khaki bush khaki-clad khaki-clothed khaki-colored khaki-hued khaki weed Khas-kura kheu tree Khoi-khoin kiabooca wood kick-about kicking coil kicking-colt kicking-horses kicking strap kick plait kick plate kicksy-wicksy kick turn kick wheel Kidderminster carpet kid-glove kid-gloved kid-glove orange kidney bean kidney-bean tree kidney corpuscle kidney cotton kidney-leaved kidney liverleaf kidney oil kidney ore kidney-shaped kidney stone kidney vetch kidney worm kid point Kiffa australis Kiffa borealis kikuyu grass Kikuyu grass Kildare green Killarney fern Killarney green kill-courtesy kill-cow kill-devil killed bowl killed spirits killer whale killing bottle killing frost killing time kill-joy kill-kid kill-time kill-wart killy hawk Kilmarnock bonnet Kilmarnock willow kiln-burnt kiln-dried kiln-dry kiln evaporator kiln foreman kiln scum kilogram-calorie kilogram-meter kilovolt-ampere kilowatt-hour kim-kam kimono sleeve Kimura term kindling wood kind-mannered kinematic viscosity kinetic potential king auk king ball king bee king card king carp King charles spaniel king closer king clover king cobra king conch king crab king crow king devil kingdom come king eagle king eider king fern king leg king lory king mackerel king monkey king mullet king nut king ortolan king parakeet king penguin king plant king post king-post truss king quail king rail king-ridden king rod king row king salmon king-size king snake king sora king spoke king tody king truss king vulture Kinkozan ware Kipp generator kirby hook kirk master kirk session kirk-shot kirk skail kirn baby kirn cut kislar aga kissing bug kissing crust kissing dance kissing gate kissing strings kiss-me kiss-me-quick kitchen bob kitchen cabinet kitchen fee kitchen garden kitchen ground kitchen midden kitchen police kitchen rose kitchen servant kitchen space kitchen stuff kitchen work Kitchi-juz kite balloon kite bar kite eagle kite falcon kite sausage kite-tailed kite track kit fox kitten-breeches kitten moth kittly-benders kitty-cat kitty needy kitty witch kitty wren kit violin ki-yi Kizi-kumuk Kjeldahl digestion Kjeldahl flask Klamath weed klieg eyes klieg light K line klook-klook knapsack sprayer knee-bent knee bone knee-bowed knee brace knee-braced knee-breeched knee breeches knee colter knee-crooking knee-deep kneed grass knee drill knee grass knee halter knee-high knee holly knee holm knee jerk knee joint knee-jointed kneeling rafter knee pine knee plate knee puff knee punch knee rafter knee roof knee-shaking knee-shaped knee-sprung knee strap knee swell knee-tied knee timber knee tool knee viol knee-worn knife-backed knife bar knife bayonet knife-bladed knife box knife colter knife-edge knife-edged knife-featured knife file knife grass knife grinder knife-handle knife-jawed knife key knife lanyard knife money knife plait knife-plaited knife plaiting knife rest knife-shaped knife stone knife-stripped knife switch knife tool Kniffin system knifing tool knight adventure knight bachelor knight banneret knight baronet knight commander knight cross knight-errant knight-errantry knight-errantship knight grand commander knight grand cross knighthood-errant Knight hospitaler knight marshal knights adventurers knights bachelors knights bannerets knights baronets knights commanders knights-errant knight service knights grand commanders knights grand cross Knights hospitalers knights marshals Knights templars Knight templar knit goods knitting case knitting machine knitting needle knitting pin knitting sheath knitting stick knitting wire knob-billed knobbling fire knobcone pine knob latch knob lock knob-nosed knocker-off knocker-up knock-knee knock-kneed knock-me-down knock-on knockout drops knol-khol knop yarn knot bindweed knot clipper knot gall knotgrass spurge knot-jointed knot-jointed rice grass knot porter knot-portering knotroot grass knot stitch knotter bill knotter hook knot tier knotting bill knotty-leaved knotty-pated knotweed spurge know-all know-how know-it-all know-little know-nothing Know-nothingism know-nothingness Knox dolomite Knox system knuckle ball knuckle bow knuckle-deep knuckle-duster knuckle gear knuckle gearing knuckle guard knuckle joint knuckle-joint press knuckle-kneed knuckle line knuckle molding knuckle pin knuckle post knuckle timber knuckle tip knuckle tooth K o koa finch koda millet Kodiak bear Koettstorfer number Koh-i-noor Kohlrausch flask koi-kopal kokra wood kokum butter kokum oil kola nut koloa mapu koloa moha komma-ichi-da Konda vogul Konia-ladik konker tree Kordofan gum kosam seeds Kossuth hat Kottstorfer number Kottstorfer value kousso flower K radiation kraft paper Kralitz bible kraut grass K rays Kremnitz white Kremser white krems lead krenging hook Kriss kringle Krita yuga kriya-sakti kriya-shakti krym-saghyz K series K-shaped K star K-term K truss K-type star Kuan hua Kuan yin Kudur-lagamar kugel granite kujira shaku Kuki-chin Ku-klux Ku-klux act Ku-kluxer Ku-kluxism Ku-klux klan Ku klux klanner kung chih kung chin kung ching kung fen kungu cake Kunst-lied kuo-yu Kupffer cell kuping tael kurchee bark Kurume azalea kuteera gum kutira gum Kwakiutl nootka kwe-bird laap insect laap insects label stop laboratory animal laboratory apparatus laboratory assistant laboratory chemist laboratory course laboratory equipment laboratory experiment laboratory method laboratory technique laboratory test laboratory work laboratory worker labor bank labor caucus Labor charter Labor church Labor day labor exchange laboring oar Labor ministry labor pains Labor party labor turnover labor union labor value theory Labrador current Labrador dog Labrador duck Labrador feldspar Labrador herring Labrador jay Labrador pine Labrador retriever Labrador spar Labrador spruce Labrador tea Labrador violet Labrador whitefish labyrinth fish labyrinth packing lac dye lace-bordered lace bug lace coral lace-covered lace curtain lace-curtained lace-edged lace edging lace fern lace finisher lace-finishing lace fly lace-fronted lace glass lace grass lace lizard lace paper lace pigeon lace pillow lace plant lace stitch lace tree lace-trimmed lace trimming lace vine lace-winged lacewing fly Lachryma christi lachrymatory gas L acid lack-all lack-beard lack-brain lack-fettle lack-learning Lack-learning parliament lack-linen lack-love lack-pity lac lake lacquer red lacquer tree lacquer ware lac resin lacrosse stick lac sulphuris lac sumac lac tree lac virginis lac wax Lacy knot ladder-back ladder-backed ladder beetle ladder braid ladder chain ladder company ladder jack ladder road ladder shell ladder stitch ladder track ladder truck Ladd-franklin theory Ladenburg flask la-di-da Ladino clover ladle board Lady altar lady apple lady beetle Lady bell lady bracken lady brake lady chair Lady chapel lady court lady crab lady cracker Lady day Lady eve lady fern lady grass lady hair grass lady-killer lady-killing Lady mass lady mayoress Lady nicotine lady-of-the-night lady pea Lady psalter Lady quarter lady whin lady wrack Laetare sunday Lafayette formation La fleche La france noire lag-bed tractor lag bolt Lag bomer lager beer lag fault lagging load lag line Lagos bass Lagos ebony Lagos rubber La grande chartreuse Lagrima cristi lag screw Lahaina disease laid batonne laid embroidery laid paper laid wool laissez-faire Laissez faire laissez-faireism laissez passer Lake agassiz Lake algonquin lake basin lake bass lake-bound lake carp lake chub lake cress lake duck lake dweller lake dwelling lake fever lake fly lake front lake-girt lake herring lake lawyer lake minnow lake-moated lake perch lake pitch lake plover lake-reflected lake-resounding lake salmon lake shad lake sheepshead lake shore lake sturgeon lake-surrounded lake trout lake water cress lake whitefish Lake whittlesey Lambert pine lamb lily lamb mint lamb pie lamb plant lamb tail lame-born lame duck lame-footed lame-horsed lame-legged lamellar vector Lamotte sandstone lamp bearer lamp-bearing lamp-bedecked lamp-blown lamp-decked lamper eel lamp fitter lamp-foot lamp-heated lamp holder lamp-hour lamp house lamp-iron lamp jack lamp-lined lamp oil lamp oiler lamprey eel lamp shade lamp shell lamp socket lamp trimmer lamp-warmed Lanacyl violet b lana dye lance-acuminated lance-breaking lance bucket lance corporal lance-fashion lance head lance-headed snake lance-knight lance-leaved lance-linear lance-oblong lance-oval lance-ovate lance-pierced lance rest lance sergeant lance-shaped lance snake lancet arch lancet architecture lancet fish lance tooth lancet window lance-worn land agency land agent land bank land battleship land-born land-bred land breeze land bridge land broker land caltrop land-cast land certificate land chain land cod land crab land crake land cress land crocodile land-damn land-devouring land drake land dreadnought land dredge Land dyak land-eating land end land force land-gavel land girl land-girt land-grabber land-grabbing land grant land-grant bond land-grant college land-grant road land-horse land hunger land-hungry landing angle landing chair landing craft landing field landing force landing gear landing net landing party landing stage landing strake landing strip landing surveyor landing waiter land law land lead land league Land league Land-leaguer Land-leaguism land leech land mail land measure land-mere land-metster land mine land-obsessed land office land-office business land otter land pike land pirate land pitch land plaster land-poor land power land rail land rat land rock Landsborough grass land scale landscape architect landscape architecture landscape gardener landscape gardening landscape marble landscape mirror land scrip land scurvy land seal land service land settlement land shark land-sheltered land side land-slater land snail land sole land spring land station land steward land-surrounded land tax land-taxer land tie land tortoise land trash land trust land urchin land-visiting land warrant land wheel land wind land yard lane route lane snapper lang-kail lang lay lank-bellied lank-blown lank-cheeked lank-eared lank-haired lank-jawed lank-lean lank-sided lank-winged lantern bellows lantern carrier lantern clock lantern fish lantern flounder lantern fly lantern gear lantern gurnard lantern jack lantern jaw lantern-jawed lantern light lantern lily lantern pinion lantern shell lantern slide lantern sprat lantern wheel lanyard knot laparo-uterotomy lap box coupling lap-butted lap dissolve lap dog lap dovetail lap dovetailing lap game lapidary bee lapis lazuli lapis lazuli ware lap joint Laplace pressure Laplace station Laplacian distribution Lapland cornel Lapland longspur Lapland pine lap-lap La plata group lap-love lapped-butt joint lappet caterpillar lappet loom lappet moth lappet weaving lappet wheel lap plate lapp owl lap ring lap-rivet lap riveting lap robe Lapsang souchong lap shaver lap siding lap table lap weld lap winding lapwing gull Laramide system larboard watch larch agaric larch canker larch pine larch sawfly larch turpentine lardaceous degeneration lard compound larder beetle lard insect lard oil lard refiner lard stearin lard stone lard type lardy-dardy large-acred large-ankled large-bayed large-billed large-bodied large-boned large-bore large-bracted large-browed large-built large-caliber large-celled large-crowned large-diameter large-drawn large-eared large-eyed large-finned large-flowered large-footed large-framed large-fronded large-fruited large-grained large-grown large-handed large-handedness large-headed large-hipped large-horned large-leaved large-lettered large-limbed large-looking large-lunged large-minded large-mindedly large-mindedness large-molded large-natured large-necked large-nostriled large-petaled large-rayed large-scale large-scaled large-sized large-souled large-spaced large-stomached large-tailed large-thoughted large-throated large-toothed large-trunked large-type large-utteranced large-viewed large-wheeled large-wristed lariat loop lark bunting lark-colored lark finch lark-heel lark-heeled lark plover lark sparrow larspur violet laryngis stridulus lash comb lasso cell lasso harness lastage-free last-born last-cited last ditch last-ditcher last-erected last-made last maker last making last marin last-mentioned last-named last survivor annuity latch bolt latch locking latch needle late-begun late-betrayed late-blooming late-born late-built late-coined late-come late-comer late-cruising late-disturbed late-embarked lateen-rigged lateen sail late-filled late-flowering late-found late-imprisoned late-kissed late-lamented late-lingering late-lost late-met late-protracted late-ripening late-sacked latest-born late-taken late-transformed late-type star late-won latex paper lath-backed lath brick lath cutter lathe-bore lathe chuck lathing hammer lath-legged lath maker lath making lath nail lath nailer lath puncher lath splitter lath tier lath trimmer Latin-american latissimus dorsi latter-day lattice bar lattice beam lattice bridge lattice girder lattice moss lattice plant lattice-plant family lattice stitch lattice strut lattice truss laughing gas laughing muscle laughter-dimpled laughter-lighted laughter-lit laughter-loving laughter-provoking laughter-stirring launching ways launch-ways laundry soap laurel bay laurel-bearing laurel-browed laurel butter laurel camphor laurel cherry laurel-crowned laurel-decked laurel family laurel green laurel hawthorn laurel-leaf laurel-leaf oil laurel-leaved laurel-locked laurel oak laurel oil laurel pink laurel sumac laurel thyme laurel-worthy laurel-wreathed Laus deo lava-capped lava cone lava-lava lava-lit lava-paved lavender blue lavender-flowered lavender grass lavender oil lavender-scented lavender-tinted lavender water lave net law-abiding law-abidingness law agent law-beaten Law bible law binding law-borrow law-bred law buckram law-condemned law court law-fettered law-hand law-honest law-learned law-learnedness law-loving law-magnifying law member law merchant lawn billiards lawn green lawn meet lawn mower lawn pennywort lawn-sleeved lawn tennis law office law officer law-reckoning law-revering law-ridden law sakes law school law-worthy lawyer bush lawyer cane lawyer palm lawyer vine lax-flowered lay abbot lay baptism lay-by lay chalice lay-down layer board layer cake layer-on layer-out layer-over layer-up laying duck laying press laying top lay lord lay-minded lay-on layout chart lay-over Lay parliament lay shaft lay-up lazar house Lazarillo de tormes lazuli bunting lazy bar lazy crab lazy daisy stitch lazy guy lazy jack lazy painter Lazy susan lazy tongs L bar L block lead acetate lead acid cell lead arming lead arsenate lead ash lead azide lead-blue lead bullion lead-burn lead-burned lead-burner lead-burning lead carbonate lead-chamber process lead chloride lead chromate lead-clad lead-coated lead colic lead color lead-colored lead-covered lead curve lead dioxide leaded glass leaden-blue lead-encased leaden-colored leaden-eyed leaden flycatcher leaden-footed leaden-headed leaden-heeled leaden-hued leaden-natured leaden-paced leaden-skulled leaden-soled leaden-souled leaden-spirited leaden-thoughted leaden-weighted leaden-willed leaden-winged leaden-witted leader head leader pipe leader writer lead-filled lead glass lead gray lead-hardening lead-headed lead-in leading article leading bar leading block leading man leading wheel leading wind leading wire leading woman lead-lapped lead-lead lead line lead-lined lead-melting lead mill lead mining lead monoxide lead nitrate lead ocher lead-off lead oxide lead oxychloride lead palsy lead pencil lead peroxide lead poisoning lead-pulverizing lead rammer lead-ruled lead screw lead-sheathed lead-smelting lead soap lead spar lead sulphate lead sulphide lead-tempering lead tetraethyl lead tolerance lead tree lead vinegar lead vitriol lead weed leaf-bearing leaf beetle leaf bite leaf blade leaf blender leaf blight leaf-clad leaf-climbing leaf curl leaf-curl fungus leaf cutting leaf-eating leaf fall leaf-footed leaf-forming leaf-fringed leaf gold leaf-laden leaf-nose leaf-nosed leaf picker leaf-shaded leaf-shaped leaf-sheltered leaf sorter leaf spring leaf-strewn leaf stripper leafy-stemmed leaguer lass leakage coefficient leakage conductance leakage conductor leakage flux lean-cheeked lean-eared lean-face lean-faced lean-fleshed lean-headed lean-horned leaning thread leaning tower lean-jawed lean-limbed lean-looking lean-minded lean-necked lean-ribbed lean-souled lean-to lean-witted lea oak leap day leaping head leaping spider leaping weir leap year lear board lea rig leasehold insurance leasehold mortgage lease-lend lease rod lease system least flycatcher least squares leather-backed leather beetle leather-bound leather brown leather carp leather cloth leather-colored leather-covered leather-cushioned leather-cutting leather dresser leather enameler leather-faced leather fern leather-hard leather-headed leather-lined leather-necked leather-winged leave-taking Lebanon cedar led farm ledged door ledger bait ledger bark ledger blade ledum camphor lee anchor lee-bow leech-book leech rope leech worm leek green lee sheet lee shore lee tack lee wheel lee wheelsman left-bank left-brained left-eyed left-eyedness left-foot left-footed left-footedness left-hand left-handed left-handedly left-handedness left-hand engine left-hander left-handiness left-lay left-legged left-leggedness left-off left pedro left-sided left wing left-winger left-wingism legacy duty legalis homo leg art leg bail leg band leg before leg before wicket leg boot leg-breaker Legenda aurea leghorn straw Legion etrangere leg iron legitimate portion lego-literary leg stump leg trap leg viol Leicester red Leipzig yellow lekai salmon L electron lem- lemming mouse lemon balm lemon chrome lemon-color lemon-colored lemon cucumber lemon-faced lemon-flavored lemon grass lemon-grass oil lemon-green lemon lily lemon-scented lemon-scented gum lemon scurvy grass lemon-tinted lemon yellow Lemuel gulliver lending library lend-lease Leni-lenape leno brocade lens cell lens hood lens maker lens making lens-mount lens screen lens-shaped lenticulo-optic lentil tare lentil weevil Lent lily Leonine city leonine partnership leonine rhyme Leonine sacramentary Leonine verse leontiasis ossea leopard cat leopard flower leopard frog leopard lily leopard lionne leopard-man Le phoenix lepra arabum lepto-form lepto-type lerp insects lese majesty lesser star grass let-out letter avocatory letter bag letter board letter-bound letter carrier letter carver letter caster letter-copying letter cutter letter-duplicating letter engraver letter-erasing letter-fed letter file letter-folding letter founding letter foundry letter hand letter-high letter-learned letter learning letter lichen letter messenger letter name letter paper letter-perfect letter plant letter porter letter post letter press letter scales letters credential letters dimissory letters missive letter sorter letters overt letters pacifical letters patent letters rogatory letter stamper letters testamentary letter telegram letter weigher letter-winged letterwinged kite letter writer letter writing Letto-lithuanian Letto-slavic Letto-slavonic lettuce bird lettuce green lettuce mildew lettuce opium lettuce saxifrage leucite basalt leucite-basanite leucite-tephrite leuco base leucoturic acid leuna saltpeter Levant company Levant cotton Levant dollar Levantine dollar Levantine sponge Levant morocco Levant nut Levant red Levant soaproot Levant sponge Levant wormseed level-coil level crossing level curves leveling head leveling instrument leveling rod leveling screw leveling stand leveling support level-jawed level line level premium level staff level surfaces level-wind lever engine lever escapement lever safety valve lever scales lever shears lever tumbler lever watch levo camphor levo-pinene levy court lewis bolt lew-warm Leyden blue Leyden jar ley pewter L-head cylinder Lho-ke liability insurance liberal arts Liberal catholic Liber aniani Liber authenticarum liber cell Liber legum Liber sententiarum Liber sextus Liberty bell Liberty bond liberty cap liberty green liberty hall Liberty party liberty pole liberty tea liberty tree libra mayor library binding library case library edition Libri carolini Libri extra decretum Libyo-phoenician Libyo-teutonic Lican-antai license plate lich bird lichen-clad lichen-crusted lichen fungus lichen green lichen-grown lichen islandicus lichen-laden lichen tropicus lich fowl lich gate lich-house Li chi lich owl lich path lich stone lick-dish licker-in lickety-brindle lick-finger lick-foot licking disease licking stone lick-ladle Lick observatory lick-platter lick-spigot licorice fern licorice powder licorice root licorice sugar licorice vetch licorice vine licorice weed lid cell lid slit lie-abed lie-by lie detector lie-down liege man liege-manship liege poustie liege woman Liesegang rings lieue marine lieutenant colonel lieutenant-colonelcy lieutenant commander lieutenant general lieutenant governor lieutenant-governorship lieutenant junior grade life-abhorring life annuity life-bearing life-beaten life-begetting life belt life-bereft life breath life-breathing life-bringing life buoy life cast life-consuming life-creating life-crowded life cycle life-deserted life-destroying life-devouring life-diffusing life-ending life-enriching life-giver life-giving life guard life-guardsman life history life-hugging life-infatuate life-infusing life insurance life-invigorating life-lengthened life-lorn life-lost life-maintaining life-outfetching life-penetrated life-poisoning life-preserving life-prolonging life-quelling life-rendering life-renewing liferent escheat life-restoring life-sapping life-serving life-size life-sized life-spent life-sustaining life-sweet life-teeming life-thirsting life-tide life-timer life-weariness life-weary life-while life-worthy life-yielding lift bridge lifter rod lift gate lift hammer lifting bolt lifting bridge lifting day lifting eye lifting foot lifting head lifting irons lifting jack lifting plan lifting plate lift pump lift ram lift span lift tenter lift valve lift wall ligamentum nuchae lig-by light-adapted light air light-armed light baffle light battery light-bearded light-bellied light bob light-bodied light-borne light-bounding light box light-brained light bread light-built light-causing light-century light-charged light-cheap light-clad light-colored light-complexioned light-creating light curve light-diffusing light-disposed light-drab light-draft light-embroidered light equation lighter discharger lighter staff light-faced light filter light-fingered light-fingeredness light-foot light-footed light-footedly light-footedness light-gilded light-giving light-grasp light-grasping light-gray light-green light-haired light-handed light-handedness light harness light-harnessed light-hating light-heeled light-horseman light-leaved light-legged light-limbed light-loaded light lock light-locked light magnesia light-marching light metals light-minded light-mindedly light-mindedness lightning arrester lightning beetle lightning conductor lightning discharge lightning file lightning pains lightning protector lightning rod lightning stone lightning switch lightning tooth lightning tube light oil light-poised light-producing light-proof light-reactive light-refracting light-refractive light-robed light-rooted light-rootedness light-scattering light-sensitive light-skinned light-skirts light-spirited light-spreading light-struck light-thoughted light-timbered light-tongued light trap light-treaded light-veined light-waved light-winged light-witted light-year light-yellow lignaloe oil ligninsulphonic acid lignosulphonic acid lignum aloes lignum vitae ligulate-flowered like-eyed like-fashioned like-featured like figures like-looking like-made like-minded like-mindedly like-mindedness like-natured like-persuaded like-sex like-shaped like-sized lilac-banded lilac-blue lilac-colored lilac-flowered lilac gray lilac-headed lilac-mauve lilac mildew lilac-pink lilac-purple lilac-tinted lilac-violet Lille lace lilly-low lilly-pilly lily bell lily bellflower lily bind lily-cheeked lily-clear lily-cradled lily-crowned lily family lily-fingered lily flower lily grass lily green lily iron lily leek lily-liver lily-livered lily pad lily palm lily-paved lily pink lily-robed lily-shaped lily-shining lily thorn lily-tongued lily-trotter lily-white Lily-white lily-whiteness lily-wristed Lima bark Lima bean Lima-bean mildew limber chest limber-neck limber pine limber rope limber-twig pine limbic lobe limbo patrum Limburg cheese lime anthracnose lime-ash lime boil lime-boiled lime buffer lime epidote lime feldspar lime grass lime harmotome lime juice lime-juicer lime mesotype lime nitrogen lime pit lime plant Limerick hook Limerick lace lime soap lime-soda mesotype lime-sulphur limette oil lime uranite lime-white limited company limited divorce limited edition limited fee simple limited liability limited monarchy limited owner limited partnership limited policy limited veto limit gauge limiting point limit point limit switch limit system Limoges enamel Limoges ware limousine-landaulet limping standard limu-eleele limu-kohu Lincoln green Lincoln miller Lincoln red Lincolns birthday Lincolns finch Lincolns inn Lincolns sparrow linden borer linden family linden green linden inchworm linden leaf beetle linden yellow Linde process line ahead lineal measure lineal promotion lineal rank lineal relation linear-acute linear-attenuate linear-awled linear coefficient linear complex linear content linear differential form linear-elliptical linear-elongate linear-ensate linear equation linear-filiform linear function linear-lanceolate linear lead linear-leaved linear-ligulate linear measure linear micrometer linear-oblong linear-obovate linear problem linear projection linear segment linear set linear-setaceous linear-shaped linear space linear substitution linear-subulate linear transformation line breaker line-bred line-breed line breeding line buck line-bucker line co-ordinates lined blade lined gold line displacement line drawing line engraver line engraving line equation line-firing line geometry line hunter line-hunting line integral line letter line loss linen draper linen draperess linen drapery linen floss linen fold linen machine linen pattern linen wedding line officer line-out line radio line relay line riding line-roll conveyer line-sequential line squall line symmetry line test line-up linga sharira lingoa wood ling pink lingua crioula lingua franca lingua geral lingual artery lingual bone lingual gyrus lingual nerve lingual ribbon Lingua romana Lingua romana rustica lingua rustica Lingua scottica lingua vulgaris linguistic area Lingula flags Lingvo internacia la lining cloth lining-out lining sight lining stitcher linkage formula linkage groups link block linking r link motion link polygon link verb linnet hole linoleum-block print linoleum-block printing linotype operator lino-typist linseed cake linseed meal linseed oil linseed tea linsey-woolsey lint bells lint bow lint index lin tree lint-white lion ant lion-bold lion-color lion dollar lion dragon lion-footed lion-guarded lion-haunted lion-headed lion-hided lion-hued lion leopard lion lizard lion-maned lion-mettled lion monkey lion poisson lion-tailed lion-tawny lion-thoughted lion-toothed lip-back lip-bearded lip bit lip-blushing lip-born lip comfort lip comforter lip-deep lip devotion lip fern lip-good lip homage lip labor lip-learned lip-licking lip loyalty lip-open lip plug lip praise lip-read lip reader lip reading lip-red lip-round lip-rounding lip server lip service lip-smacking lip-spreading lip stop lip strike lip-teeth lip wisdom lip worship lip worshiper liquid absolute liquid air liquid apiol liquid coal liquid compass liquid measure liquidus curve listener-in listening cam lister cultivator listing machine list system litany stool literal-minded lithia emerald lithia mica lithia water litho purple litis contestatio litmus milk litmus paper little-able little bluestem little-boukit little-branched Little-endian Little englander Little englandism little-footed little good Little-good little-haired little-headed little house little-known little-loved little millet little-minded little-mindedness little-prized little-read little-regarded little-statured little-trained little-traveled little-used Littoral race littoral zone live-ever live-forever live-front switchboard live-in-idleness liver balsam liver brown liver-colored liver extract liver fluke liver fungus liver-hued liver lily liver maroon liver-moss Liverpool bit liver rot liver sausage tree liver shark liver-white liverwort lettuce livery company livery stable live-sawed livestock insurance livid brown livid pink livid purple livid violet living hall living room Livingston formation living trust living wage livre parisis livre tournois lizard bronze lizard fish lizard flower lizard green lizard seeker lizards-tail lizardtail grass Llewellin setter load chart load displacement load factor loading donkey loading inductance load line load water line load water plane loaf sugar loam board loan agent loan farm loan form loan god loan office loan translation lobato-digitate lobato-divided lobato-foliaceous lobato-partite lobato-ramulose lobby pine lobed-leaved lobelia blue lobelia family lobelia violet loblolly bay loblolly boy loblolly pine loblolly sweetwood loblolly tree lobster caterpillar lobster crab lobster flower lobster-horns lobster moth lobster pot lobsters-claw lobster-tail lobster-tailed lobster thermidor lobster trap lobster trick local option local optioner local optionism local optionist local-option law Lochaber ax lock-a-daisy locked jaw locked-wire rope locker plant lock-grained lock-hair fern locking face locking pallet locking plate locking ring locking wheel lock nut lock plate lock rail lock saw lock seat lock step lock stitch lock turtle lockup safety valve lock washer loco disease locomotive boiler locomotor ataxia loco parentis loco vetch locum-tenency locum tenens locust bean locust beetle locust bird locust eater locust lobster locust mite locust moth locust plant locust pod locust sawfly locust shrimp lode claim lodgepole pine lodger bee lodger franchise lodging knee lodh bark loft-dried lofting iron lofty-browed lofty-headed lofty-humored lofty-looking lofty-minded lofty-notioned lofty-peaked lofty-plumed lofty-roofed lofty-sounding logan apple logan stone logarithmic curve log bunk log carriage log chip log deck log dog log drive log driver log driving log fixer log frame loggan stone loggerhead shrike loggerhead sponge loggerhead turtle logging car logging locomotive logging sled logging wheels log glass logico-metaphysical logistic curve logistic line log jack log kicker log line log loader log measure log peeler log perch log reel log rule log run log runner log scale log scaler log slate log tooth log turner logwood black logwood blue logwood paper loin end loll shraub Lombard school lomi-lomi long accent long-accustomed long-agitated long-ago long-arm long-arm balance long-armed long-awaited long-awned long-axed long-backed long-barreled long-beaked long-bearded long-bellied long-berried long bill long-billed long-bodied long-borne long-bracted long-branched long-breathed long-buried long-celled long-chained long-clawed long-coated long-contended long-continued long-continuing long-coupled long-crested long-cycle long-cycled long-dated long-day long-dead long-delayed long-descending long-deserted long-desired long-destroying long-distance long-docked long-drawn long-eared longed-for long-enduring long-established long-exerted long-expected long-experienced long-extended long-faced long-faded long-favored long-fed long-fiber long-fibered long-fingered long-finned long-fleeced long-flowered long-footed long-forgotten long-fronted long-fruited long-gown long-gowned long-grassed long-haired long-haired griffon long-handed long-handled long-heeled long-hid long-horned long house long-jawed long-jointed long-journey long-kept long-lacked long-lasting longleaf pine longleaf yellow pine long-leaved long-leaved bent long-leaved pine long-legged long-limbed long-lined long-liner long-lining long-lived long-livedness long-living long-locked long-lost long-lunged long-memoried long-nebbed long-neck clam long-necked long-nosed long-off long-on long-parted long-past long-pasterned long-period variable long-planned long-plumed long-pod long-podded long-possessed long-projected long-protracted long-quartered long-range long-reaching long-resounding long-ribbed long-ridged long-robed long-roofed long-rooted long-saved longschat pine long-settled long-shaded long-shadowed long-shafted long-shanked long-shaped long-shut long-sighted long-sightedness long-skulled long-sleeved long-snouted long-sought long-span long-spine long-spined long-spurred long-staffed long-stalked long-standing long-staple long-stapled long-staple isinglass long-stemmed long-stocked long-streaming long-stretched long-stroke long-styled long-succeeding long-suffered long-suffering long-sundered long-tail long-tailed long-tailed chat long-term long-term bond long-thinking long-threatened long-time long-timed long-toed long-toed stint long-tongue long-tongued long-toothed long-traveled long-visaged long-waisted long-wandered long-wandering long-wedded long-winded long-windedly long-windedness long-winged long-wished long-withdrawing long-withheld long-wooled long-worded looker-on look-in looking glass looking-glass bush look-through loom joiner loom oiler loom tenter loom turner loom weaver loop stitch loop winding loose-barbed loose-bodied loose-coupled loose-curled loose-driving loose-enrobed loose-fibered loose-fitting loose-fleshed loose-floating loose-flowered loose-flowing loose-girdled loose-gowned loose-handed loose-hanging loose-hipped loose-hung loose-jointed loose-kneed loose-leaf loose-limbed loose-lipped loose-lived loose-living loose-locked loose-lying loose-mannered loose-necked loose-packed loose-panicled loose-principled loose-robed loose-skinned loose-spiked loose-thinking loose-tongued loose-topped loose-wadded loose-wived loose-woven loose-writ lop-eared Lord admiral lord bird lord-lieutenancy lord lieutenant lord spiritual lord temporal lord trier Lorenzo indians Loretto nuns Los angelean lose-out losh hide losh leather loss leader loss ratio lotus-eater lotus grass loud-acclaiming loud-applauding loud-bellowing loud-blustering loud-calling loud-clamoring loud-cursing loud-laughing loud-ringing loud-roared loud-roaring loud-screaming loud-singing loud-speaker loud-speaking loud-spoken loud-squeaking loud-thundering loud-ticking loudy-da lough diver Louis heel Louisiana grass loup-cervier louping ill louse herb louver boards love affair love-anguished love-begot love-begotten love-bitten love-born love-breathing love-crossed love-darting love-delighted love-devouring love ditty love-entangle love-enthralled love grass love-illumined love-inspired love-inspiring love-lacking love-laden love-learned love letter love-mad love-madness love-maker love-making love-mourning love-performing love seat love-smitten love song love-spent love-starved love-stricken love-touched love-whispering love-worthiness love-worthy love-wounded low-arched low-backed low-bellowing low-bended low-blast low-blooded low-bodied low-boiling low-boughed low-bowed low-breasted low-brow low-browed low-built low-caste low-ceiled low-ceilinged low-charge Low church Low-churchism Low-churchist Low-churchman Low-churchmanship low-class low comedian low comedy low-conceited low-conditioned low-consumption low-crested low-crowned low-current low-cut low-deep low-down low-downer low-downness low-ebbed low-filleted low-flighted low-fortuned low-frequency low-gauge low-geared low-grade low-heeled low-hung low-intensity lowland fir lowland plover Lowland scotch low-level low-leveled low-lipped low-lived low-living low-lying low-masted low-melting low-minded low-mindedly low-mindedness low-murmuring low-muttered low-necked low-paneled low-pass filter low-power low-pressure cylinder low-priced low-principled low-purposed low-quartered low-rented low-resistance low-rimmed low-roofed low-set low-sized low spear grass low-spirited low-spiritedly low-spiritedness low-spoken low-statured Low sunday low-temperature low-thoughted low-toned low-tongued low-tread low-uttered low-voiced low-voltage low-voltage protection low-voltage release low-waisted low-water mark low-wattage low-wheeled low-withered low-witted loxa bark lozenge perforation lozenge-shaped lubber fend lubber grasshopper lubber-hole lucifer match lucken gowan luck penny luff tackle luggage van lug hook lumber kiln lumbo-abdominal lumbo-aortic lumbo-iliac lumbo-inguinal lumbo-ovarian lumen-hour luminosity curve lump coal luna cornea Luna moth lunar-diurnal luncheon bar lung book lung fever lung fluke lung plague lung sickness lungworm disease lupus vulgaris Lusitano-american lust-born lust-burned lust-burning lust-engendered luster pottery luster wool lust-stained lust-tempting lute-backed lute-fashion lute-playing lute-voiced luxury-proof lycoperdon nut lycopodium powder lye boil lying-in lying press lying wall lyme grass lymph gland lymph heart lymph node lympho-adenoma lymph-vascular lynch law lynx cat lynx-eyed lynx flower Lyon bean Lyon herald lyrate-lobed lyre bat lyre-guitar lyre-leaved lyre pheasant lyre-shaped lyre-tailed lyre-tailed nightjar lyre tree lyre turtle lyrico-dramatic lyrico-epic mabi bark macaco worm macaranga gum macaroni wheat Macassar agar-agar Macassar gum macaw fat macaw palm mace-bearer mace butter Macedonian-persian mace oil ma chere machina versatilis machine binder machine-breaking machine-broken machine-cut machine cutter machine dresser machine-drilled machine-driven machine feeder machine-finished machine-forged machine-hour machine knife machine-knitted machine knitter machine lapper machine-made machine-mixed machine nailer machine rifle machine ruler machinery steel machine screw machine-sewed machine shop machine stamper machine steel machine-stitched machine stitcher machine-woven machine-wrought Mach number mackay bean mackerel bait mackerel bird mackerel breeze Mackinaw coat Mackinaw trout macrame cord macrame knot macro-axis Madagascar arrowroot Madagascar bean mad apple mad-bred madder bleach madder bloom madder blue mad-doctor made-beaver made eye Madeira chair Madeira cockroach made mast made-over made rug made-up mad-headed madia oil mad itch mad money Madonna lily Madras gram Madras hemp madrepore glass madrepore marble madreporic body madreporic plate madreporic tubercle Madura foot mafura tallow magazine camera magazine clothing Magellan jacket maggot snipe maggot therapy Magh sleacht magico-religious magico-sympathetic magma basalt Magna charta magnesia magma magnesium carbonate magnesium chloride magnesium light magnet forger magnetic heading magnetic mine magnetic recorder magnetic viscosity magnetite arc magnetite arc lamp magnetite-basalt magnetite-olivinite magnetite-spinellite magnetizing current magnetizing force magnet keeper magneto assembler magnifying glass magnifying power magnolia warbler magnum opus magnus hitch magpie diver magpie finch magpie goose mahala mat mahali disease maharao raja mah-jongg mahogany birch mahogany brown mahogany family Mahri-sokotri mahua butter maiden cane maidenhair spleenwort maidenhair tree maiden over maiden pink maids-hair mail carrier mail catcher mail-cheeked mailed-cheeked mailing machine mail order mail-order house main road Main street maintenance bond main-topmast main-yardman maison-dieu maitre dhotel maize-eater maize mildew maize smut maize yellow majo bitters majolica dipper Majolica earth majolica painter ma-jong major agglutinins major-domo major-domoship Major domus major general major-generalcy major-generalship major-leaguer major second major third make-ado make-belief make-believe make-faith make-falcon make-fire make-fray make-game make-hawk make-king make-law make-mirth make-peace make-ready maker-off maker-up make-shame make-sport make-talk make-up make-way making iron making-up making-up day making-up price malachite green mala fide Malay kite Malayo-indonesian Malayo-javanese Malayo-negrito Malayo-polynesian Malay race male alto male bamboo malleable iron mallee bird malleh bug mallow family mallow rose mallow rust mallow tree malm rock maloo climber malted milk malt extract malt liquor malt sugar malt vinegar malt whisky malum in se mammato-cumulus mammee apple mammee colorado mammee sapota mammoth tree mammy coot man-abhorring management share management trust man alive man-back man-bearing man-begot man-bodied man-born man-brute man-carrying man-catching man-changed Manchester brown man-child man-compelling mancona bark man-created mandarin duck man-day man-degrading man-destroying man-devised man-devouring mandibulo-auricularis mando-bass mando-cello mandrel lathe mandrel press man-eater man-eating Manebach twin man-enchanting man-enslaved manettia vine man-fashion man-fearing man-forked man fungus mangabeira rubber manganese bronze manganese brown manganese dioxide manganese epidote manganese heptoxide manganese oxide manganese sesquioxide manganese spar manganese steel manganese tetroxide manganese velvet brown manganese violet mangel-wurzel mange-mange mange mite manger board mangle operator mangle rack mangle wheel mango anthracnose mango bird man-god mango fish mango ginger mango melon mangrove catechu mangrove cuckoo mangrove family mangrove mullet mangrove skipper mangrove snapper man-grown mangum terrace man-hater man-headed man-high manhood suffrage man-hour man hunt man hunter manic-depressive manicoba rubber manifold paper manipulative surgery man jack man-keen man-killer man-killing man lock man-made man-maiming man-making man midwife man-midwifery man-mimicking man-minded man-minute manna ash manna grass manna gum manna insect manna lichen manna sugar mann tree man-orchis manor house man-pleasing man power man-record chart man-ridden manrope knot mansard roof man-shaped man-size man-sized man-stalking man-subduing man-supporting man-taught man tiger mantis crab mantle cavity mantle-rock manufacturing lathe man-woman man-worshiping man-worthiness man-worthy Manx cat many-acred many-angled many-armed many-banded many-beaming many-belled many-bleating many-blossomed many-blossoming many-branched many-breasted many-celled many-chambered many-cobwebbed many-colored many-coltered many-cornered man-year many-eared many-eyed many-faced many-facedness many-faceted many-flowered many-folded many-formed many-fountained many-gifted many-handed many-headed many-headedness many-horned many-hued many-jointed many-knotted many-languaged many-lay many-leaved many-legged many-lived many-lobed many-meaning many-millioned many-minded many-mingled many-mingling many-mouthed many-named many-nationed many-nerved many-one many-parted many-peopled many-petaled many-pigeonholed many-pillared many-pointed many-ranked many-rayed many-ribbed many-rooted many-rowed many-seated many-seatedness many-seeded many-sided many-sidedness many-sounding many-spangled many-spotted many-steepled many-stemmed many-storied many-stringed many-syllabled many-tailed many-tinted many-toned many-tongued many-towered many-tribed many-tubed many-twinkling many-valved many-veined many-voiced many-wandering many-weathered many-winding many-windowed many-wintered many-yeared maple ash maple borer maple eye maple-faced maple family maple-leaved maple scale maple sirup maple sugar maple worm map lichen map maker map making map reader map reading map turtle marabou stork marang nut marathon race marble-arched marble-breasted marble cake marble-calm marble-checkered marble-colored marble cork marble-covered marble-faced marble flower marble-grinding marble-hard marble-imaged marble-looking marble-minded marble-mindedness marble-pale marble-paved marble-piled marble-pillared marble-polishing marble-quarrying marble-ribbed marble-sculptured marble thrush marble-topped marble-white marcel wave March brown marchioness-ship march stone Marconi rig Marconi-rigged Mardi gras Marechal niel mare clausum mare-rode margate fish margin draft Marguerite yellow marigold finch marigold yellow Marine corps marine-finish marjoram oil mark degree marker-down marker-off marker-out market bleach market cross market garden market gardener market gardening market hunter market keeper market letter market order market penny market place market pot market price market-ripe market town market value marking caliper marking cotton marking gauge marking hammer marking hatchet marking iron marking knife marking nut marking stitch mark lodge Mark masonry mark-on mark tooth marl grass marlinespike fish marlinespike hitch marling hitch marlin swordfish marmalade box marmalade plum marmalade tree marmot squirrel marnean epoch maroon red marquise rose marquoise scale marram grass marriage brokage marriage broker marriage chest marriage flight marriage license marriage portion marriage settlement marron glace marrow cabbage marrow pea marrow squash Mars brown marsh bent marsh blackbird marsh bluebill marsh fern marsh fever marsh five-finger marsh foxtail marsh gas marsh grass marsh parsley marsh pea marsh peep marsh pennywort marsh pine marsh pink marsh plover marsh purslane marsh quail marsh rabbit marsh robin marsh rosemary marsh samphire marsh shield fern marsh speedwell marsh spike grass marsh spot marsh stitchwort marsh tea marsh tern marsh titmouse marsh treader marsh trefoil marsh turnip marsh vetchling marsh violet marsh warbler marsh watercress marsh wren Martello tower martial law martingale backrope Martinmas summer martin snipe Martius yellow mascot blue mashie iron mashie niblick mash machine mash tun mash weld mask stop mason bee mason moth mason spider mason wasp mass action mass defect Massena quail mass-energy equation mass-fiber mass meeting mass-minded mass-mindedness mass number mass observation mass observer mass-produce mass-produced mass production mass reflex mass spectrograph mass spectrum mass unit mass-word massy-proof mast brown mast cell master bedroom master builder master chord master clock master compass master controller master gauge master gunner master key master leaf master map master mariner master mason master matrix master mechanic master rod master screw master sergeant master shifter master spring master stroke master switch master tap master touch master wheel master workman mast-fed masthead angle masthead compass mast hoop mastiff bat mastodon locomotive mast tree mat bean mat cane matchbox bean match cord match frame match game match hook matching machine matching plane match joint match-lined match lining match pipe match plane match plate match play match point match rifling match rope match stamp match tub match wheel mat-covered mate gourd material logic materia medica maternity hospital maternity insurance mat-forming mathematico-logical mathematico-physical matilija poppy matinee race matinee racing matin song matricaria camphor mat-ridden matrimony vine matrix algebra matrix mechanics matrix paper mat-roofed mat rush matter waves matt weave matzoth baker Mauch chunk mauve blush May apple Maya-quiche May basket May beetle May day mayor-elect Maypole dance may-woon mazer tree meadow anemone meadow barley meadow beauty meadow-beauty family meadow bell meadow bird meadow brook meadow brown meadow cabbage meadow campion meadow chicken meadow chickweed meadow clover meadow crake meadow cress meadow crocus meadow crowfoot meadow cup meadow death camass meadow fern meadow fescue meadow foxtail meadow gowan meadow grass meadow grasshopper meadow green meadow hen meadow lark meadow lily meadow moor meadow mouse meadow mushroom meadow mussel meadow nuts meadow orchis meadow ore meadow parsnip meadow pea meadow peat meadow pine meadow pink meadow pipit meadow queen meadow reed grass meadow rice grass meadow rue meadow saffron meadow sage meadow saxifrage meadow scabish meadow snipe meadow soft grass meadow sorrel meadow spear grass meadow titling meadow vetchling meaking iron meal beetle meal moth meal offering meal pennant meal plum meal snout moth meal worm mealy-back mean-acting mean-conditioned meander belt meander line mean-dressed mean-looking mean-souled mean-spirited mean-spiritedly mean-spiritedness mean-square error means test mean-time clock meantone system mean-witted measure line measurement cargo measurement ton measure signature measuring cup measuring glass measuring machine measuring wheel meat ax meat block meat chopper meat cleaner meat eater meat-eating meat-fed meat fly meat grinder meat-hungry meat offering meat packer meat-packing meat pie meat preserver meat slicer mechanical engineer mechanical engineering Mechlin lace Meckelian cartilage medaddy-bush medal bronze medal chief mediastino-pericardial mediastino-pericarditis mediastinum testis medical man medicine animal medicine bag medicine ball medicine case medicine dance medicine dropper medicine glass medicine lodge medicine man medicine tree Medina worm Mediterranean fever medley cloth medley race Medo-persian medulla oblongata medusa bud meek-browed meek-eyed meek-minded meek-spirited meerschaum enameler meeting rail Meganos formation Meissen ware Melano-papuan Melba toast M electron melegueta pepper melic grass melilite-basalt mell-doll mellow-breathing mellow-colored mellow-deep mellow-eyed mellow-flavored mellow-lighted mellow-looking mellow-mouthed mellow-ripe mellow-tasted mellow-tempered mellow-toned mell-supper melon aphid melon apple melon beetle melon cactus melon caterpillar melon-faced melon fly melon foot melon-formed melon-laden melon-leaved melon loco melon louse melon moth melon-shaped melon shell melon shrub melon thistle melon tree melon worm melon-yellow melting point melting pot member bank membrane bone memorandum head memorial rose memory book memory root memory span menage man mendoza beaver Menelik dollar menhaden oil Menindie clover meningo-osteophlebitis Menominee whitefish menstrual epact menstrual equation mental age mental alienation mental chemistry mental deficiency mental disease mental healing mental hygiene mental prominence mental reservation mental test menthane group Mentone man Mercator sailing Mercersburg theology merchant adventurer merchant banker merchant guild merchant prince merchant venturer mercury arc mercury-arc lamp mercury-arc rectifier mercury boiler mercury chloride mercury cyanide mercury-discharge lamp mercury fulminate mercury iodide mercury oxide mercury subchloride mercury sulphide mercury thiocyanate mercury-vapor lamp mercury-vapor turbine mercury weed mercy stroke merit badge merit rate merit system Merker grass mermaid weed mero cabrilla merry-andrew merry-andrewism merry-andrewize merry-eyed merry-faced merry-go-round merry-hearted merry men merry-minded merry-singing merry-smiling Mesaverde formation mescal buttons mescal maguey mesh bag meshing-spur gear mesh knot mesityl oxide mesoxalyl-urea mesquite grass mesquite gum mess beef messenger bird messenger cable messenger wire mess gear messiah religion mess jacket mess kit mess pork mess-up metacresol purple metal age metal-bearing metal-bending metal-boring metal-bound metal breaker metal-broaching metal-bushed metal carbonyl metal-clad metal-clasped metal-cleaning metal cloth metal-coated metal coloring metal-covered metal-cutting metal-decorated metal-drilling metal-drying metal-edged metal-embossed metal-forged metal fouling metal-framed metal-grinding metal-jacketed metal leaf metal-lined metal-lithography metallo-organic metal-melting metal-perforating metal-piercing metal-shaping metal-sheathed metal-slitting metal-slotting metal-studded metal-testing metal-tipped metal-trimming metanil yellow Metcalfe bean meteor dust meter-ampere meter angle meter-candle meter fixer meter-kilogram meter-kilogram-second meter-millimeter meter rate methane series methanol alcohol methodical signs methyl acetate methyl alcohol methyl aldehyde methyl benzene methyl blue methyl cellulose methyl chloride methyl cyanide Methylene azure methylene blue methylene iodide methyl ester methyl ether Methyl methacrylate methylthionine chloride metopon hydrochloride metre-candle metric system mew gull mezankorrie moth mezereon family mezzamine floor mezzanine story mezzo-relievo mezzo-soprano mezzo-soprano clef mezzo staccato m-hum Miana bug mica condenser mica diorite mica schist mice pea mice pink Michaelmas blackbird Michaelmas crocus Michaelmas daisy Michaelmas eve Michaelmas sitting Michaelmas spring Michaelmas term mickey finn Mickey finn mickle-mouthed micro-aerophile micro-aerophilic micro-audiphone micro-form micrometer caliper micrometer head micrometer screw micro-movie micro-needle mid-act Mid-african mid-age mid-aged mid-air Mid-america Mid-american Mid-april mid-arctic midas fly Mid-asian Mid-atlantic Mid-august mid-back mid-block mid-body mid-breast Mid-cambrian mid-career mid-carpal mid-central mid-century mid-channel mid-chest mid-continent mid-course mid-court mid-crowd mid-current midday flower Mid-december midden mavis mid-diastolic mid-dish mid-distance Middle-age middle-aged Middle-ageism middle body middle-burst Middle c middle-classdom middle-classism middle-classness middle-colored middle-cut file middle-earth middle-growthed Middle high german middle-horned Middle indian Middle iranian Middle minoan Middle persian middle-rate Middle scots middle-shot wheel middle-sized middle-sizedness middle-statured middle-temperature error Middle west Middle western Middle westerner middle-witted middle-wooled middy blouse mid-eighteenth Mid-empire Mid-europe Mid-european mid-feather Mid-february mid-field mid-flight mid-forty mid-front mid gear mid-gray mid-gut mid-hour Mid-huronian mid-ice mid-incisor Mid-italian Mid-january Mid-july Mid-june mid-kidney mid-lake Midland dialect mid-length Mid-lent sunday mid-life mid-line mid-link mid-lobe Mid-march mid mashie Mid-may mid-mixed mid-mouth mid-movement midnight line midnight sun mid-nineteenth Mid-november mid-ocean Mid-october mid-oestral mid-off mid-on mid-orbital Mid-pacific mid-part mid-period mid-periphery mid-pillar Mid-pleistocene mid-point mid-position mid-refrain mid-region Mid-renaissance mid-river mid-road mid-sea Mid-september Mid-siberian mid-side mid-sky mid-slope mid-sole mid-span mid spoon mid-stride mid-styled midsummer daisy Midsummer day Midsummer eve midsummer madness mid-sun mid-swing mid-tarsal mid-term Mid-tertiary mid-thigh mid-thoracic mid-tide mid-time mid-totality mid-tow mid-town mid-travel Mid-upper mid-value mid-ventral Mid-victorian Mid-victorianism mid-volley mid-walk mid-wall mid-wall column mid-water Midway formation mid-wicket midwife frog Midwinter day mid-workings mid-world mid-zone might-be mighty-brained mighty-handed mighty-minded mighty-mouthed mighty-spirited mignonette family mignonette green mignonette lace migrant shrike migration velocity mikado brown mikado locomotive mikado orange mikado yellow mila a landi Milanese liturgy Milanese mandolin Milan point milch cow mild-aired mild alkali mild-aspected mild-blowing mild-brewed mild-cured mildew-proof mild-eyed mild-faced mild-flavored mild-looking mild-mannered mild-mooned mild mosaic mild process mild-savored mild-scented mild-seeming mild silver protein mild-spirited mild-spoken mild steel mild-tempered mild-tongued mild-worded mileage book mileage ticket Mi-le-fo mile-ohm mile-pound Milesian tales mile-ton mil-foot miliary fever miliary tuberculosis military attache military band military-minded Militia bureau milk-and-wateriness milk-and-waterish milk-and-waterism milk-and-watery milk-bearing milk-blended milk-borne milk-breeding milk brother milk can milk cart milk checker milk-condensing milk-cooling milk-curdling milk-drying milk-faced milk-fed milk-giving milk-hued milking machine Milking shorthorn milk-livered milk route milk run milk snake milk-tested milk tester milk-testing milk train milk-washed milkweed butterfly milkweed family milk-white milkwort family milky disease milk-yielding mill agent mill beetle mill bill mill cake mill cinder mill construction mille marin mill end mill engineer mill engineering millet disease millet grass millet-seed rash mill fever mill-headed milligram-hour milling cutter milling machine mill-ink millionth comparator mill-run mill-sixpence millstone bridge Millstone grit milo maize milori blue milori green milpa system mimic thrush mimosa bark mimosa family mimosa-leaved minced pie mince pie Mince pie mincing horse mind blindness mind-body mind-changing mind cure mind-curist mind deafness Mindel-riss mind-healer mind-healing mind-infected mind-perplexing mind-ravishing mind-set mind-sick mind-stricken mind-torturing mind-wrecking mineral acid mineral black mineral blue mineral oil mine-run mine sweeper mine work mingle-mangle mingle-mangleness mingle-mangler ming tree miniature camera miniature photography minimum-wage law mining claim mining engineer mining engineering mining geology minister-general minister plenipotentiary minister resident mink frog minny bass mino bird Minorca clematis minor element minor-leaguer minstrel show mint camphor mint family mint julep mint sauce mint stamp minus sign minute bell minute book minute drops minute glass minute hand minute man miracle-breeding miracle man miracle play miracle player miracle-proof miracle wheat miracle-working mire dromble mire duck miriti palm mirror carp mirror-faced mirror writer mirror writing mirth-inspiring mirth-loving mirth-making mirth-marring mirth-moving mirth-provoking mis-aver mis-censure mis-center mischief-loving mischief-maker mischief-making mischief-working mischio marble misch metal mis-citation mis-cite mis-con mis-copy mis-eat mis-enter mis-entry mis-event misfortune-proof mis-hallowed mis-hear mis-hearer mis-heed mis-hit mis-hold mis-humility mis-lie mis-mark mis-meet mis-pen mis-rely missal letter mis-season mis-seat mis-see mis-seek missel bird missel tree mis-send mis-sense mis-sheathed mis-ship mis-shod mis-sing missionary alphabet missionary weed mission furniture mission grass Mississippi catfish mis-solution mis-sort mis-sound Missouri breadroot Missouri cactus mis-space mis-start mis-steer mis-stitch mis-stop mis-strike mis-stroke mis-style mis-sue mis-suit mis-sway mis-swear mis-sworn mist-blotted mist blue mist-blurred mist-clad mist-covered mist-enshrouded mist-exhaling mist gray mis-tilled mist-impelling mist-laden mistletoe bird mistress-ship mist-shrouded mis-tune mist-wet mist-wreathen mis-union miter box miter cap miter clamp miter-clamped miter-jointed mithridate mustard mitis casting mitis metal mitre-jointed Mittel-europa Mix-hellene mixture curve mixture stop mix-up mixy-maxy Mizpah ring Mobile terrapin mob-minded moccasin flower moccasin plant Mocha stone Mocha-stone moth mochi wood mock-beggar mockery-proof mock-heroic mock-heroical mock-heroically mock-up mode beige model school moderator lamp modern-bred modern-built modern-looking modern-made modern-practiced modern-sounding Moeso-goth Moeso-gothic Mogul empire mogul locomotive Mohave apache mohawk weed Moine series moisture-absorbent moisture equivalent moisture-resisting moko-moko molar conductance molar conductivity molar tooth molar weight molasses grass Moldavian balm moldboard plow mold fungus molding book molding edge mold loft Moldo-wallachian moldy nose mole-blind mole-blindedly mole catcher mole-catching mole cricket mole drain mole drainage mole drainer mole-eyed mole-sighted Moll blood moll hern Molly maguire Molly maguireism molly washdish molybdenum steel molybdenum trioxide moment-area method momentary-contact switch momentum pump momentum valve monad deme monesia bark money-bloated money-breeding money-changer money dealer money-earning money getter money-getting money-grasping money-loving money-mad money-maker money-making money saver money-spelled money teller Mongol-galchic alphabet Mongolo-dravidian Mongolo-manchurian Mongolo-tatar Mongolo-turkic mongoose plant monilia disease monitor bug monitor chuck monitory letter monk bat monkey apple monkey bag monkey-ball monkey-faced monkey-god monkey-rigged monkey-tailed monkey-tail valve Mon-khmer monk parrot monk saki Monmouth cap Monmouth cock mono-ideic mono-ideism mono-ideistic mono-iodo mono-iodohydrin mono-iodomethane mono-ion monopoly value monosodium glutamate Monroe doctrine monster-bearing monster-breeding monster-eating monster-guarded monster-taming monster-teeming Montana grayling montan wax Mont blanc ruby monte bank monte-jus Monterey cypress Monterey halibut Montezuma cypress Montpellier green Montpellier yellow monument plant mood phrase mood swing moon-blanched moon-blasted moon-blasting moon-blind moon blindness moon-born moon-bright moon-browed moon-charmed moon-crowned moon-culminating mooneye cisco moon-eyed moon-gathered moon-gazing moon-glittering moon-god moon-gray moon-led moonlight blue moonlight school moon-loved moon-mad moon-made moon-raised moon ray moonseed family moon-stricken moon-struck moon-taught moon-tipped moon-touched moon-trodden Moon type moon-white moon-whitened moor besom moor blackbird moor-bred Moor dance moor grass mooring buoy mooring chock Moor-lipped moose-ear moose elm moose fly moose-misse mootchie wood moot court moot hall moot-stow mope-eyed mopper-up mopstick rail mop-up mora hair moral faculty moral hazard morass ore More anglico Morelos orange worm more suo moriche palm Mormon church Mormon cricket morning-breathing morning-bright morning campion morning coat morning-colored morning-glory morning-glory family morning-glory sphinx morning sickness morning-winged morn star Morocco gum Morocco-head Morocco-jaw morocco leather Morocco millet morphine meconate morphological analogy morphological botany morphologic construction Morris chair morris dance Morrison formation morris-pike morro castle mortality table mortal mind mortal sin mortar bed mortar boat mortgage bond mortgage broker mortgagee clause mortification root mortise gauge mortise gear mort note mosaic binding mosaic disease mosaic-drawn mosaic dwarf mosaic-floored mosaic-paved moschatel family Moscow international Moses primrose mosque swallow Mosquitoan family mosquito bar mosquito bee mosquito-bitten mosquito boat mosquito-bred mosquito-free moss agate moss animal moss-backed moss-begrown moss-bordered moss-bound moss-brown moss-clad moss-covered moss-crowned moss fern moss-gray moss-green moss-grown moss-inwoven moss-lined moss-woven mossy-backed Most honorable mote nut moth ball moth-balled moth bean moth blight moth-eat moth-eaten mother cask mother cell mother country Mothering sunday mother-in-law mother language mother ship mother-sick mother-spot mother tongue motion block motion photomicrograph motion-picture camera motion-picture projector motion sickness motive column motive-monger motive-mongering motive power motley color motley-minded motmot blue motmot green Moto meter motor ambulance motor assembler motor builder motor-camper motor-camping motor corps motor court motor-driven motor impulse motor-minded motor-mindedness motor torpedo boat mottled-top disease mottle-leaf mottle-leaf mosaic motto kiss motuca fly moubata bug moudy-warp mound bird mound builder mound-building mound maker mound making mountain accentor mountain adder mountain bracken mountain-built mountain bunch grass mountain-dwelling mountain fern mountain fever mountain flax mountain foxtail mountain-girdled mountain-high mountain holly fern mountain-loving mountain maker mountain making mountain parsley mountain redtop mountain rice mountain-sick mountain sickness mountain spleenwort Mountain tatar mountain timothy mountain-walled Mount badon mounting medium mouse barley mouse bloodwort mouse-brown mouse-color mouse-colored mouse-dun mouse-ear mouse-ear cress mouse-eared mouse-ear hawkweed mouse-eaten mouse grass mouse-killing mouse-still mousetail grass mousetrap switch mousing hook mouth breathing mouth-filling mouth footed mouth harp mouth hole mouth-made mouth-watering movable-do system movie-goer movie-minded moving cause moving cluster moving-coil galvanometer moving-iron meter mowing grass mowing machine mowrah butter mowrah-seed oil m-ple point M radiation M roof M series M-shaped M star M-swahili M tooth M-type star Muav limestone much-admired much-advertised much-branched much-coiled much-containing much-devouring much-discussed much-enduring much-engrossed much-honored much-hunger much-lauded much-loved much-loving much-mooted much-pondering much-praised much-revered much-sought much-suffering much-valued much-worshiped mucilage canal mucilage cell mucilage duct muckle hammer muck rolls mucoitin-sulphuric mucus body mud-bespattered mud-built mud-color mud-colored muddle-minded muddy-complexioned muddy-mettled mud-exhausted mud heap mud house mud-lost mud pie mud puddle mud-roofed mud-shot mud-splashed mud-walled muermo family muff coupling muffin cap muffin pan muffin turner muffle furnace muffle-jaw muffle kiln muffle-shaped muga moth muga silk mugho pine mug-wet muir ill muir poot mui-tsai mulatto jack mulatto-wood mulberry bird mulberry-faced mulberry family mulct law mule armadillo mule chair mule-jenny muley axle muley head muley saw mulga grass mulier puisne mulier younger mullein dock mullein foxglove mullein pink mullet hawk mull muslin multiflora rose multiple algebra multiple allelomorph multiple-clutch multiple-die multiple-disk multiple-disk clutch multiple-dome multiple-drill multiple-line multiple-pass multiple-series multiple-speed multiple telegraph multiple thread multiple-threaded multiple-toothed multiple-tuned multiplication table Mumbo jumbo Mumbo-jumboism mummy apple mummy brown mummy case mummy wheat mumping day mung bean Muratorian canon murexide reaction murillo bark murmur diphthong Musca borealis muscle-bound muscle-building muscle cell muscle-celled muscle column muscle-kneading muscle maker muscle making muscle-tired muscle tissue Muscovy company Muscovy duck musculocutaneous nerve Muse-descended Muse-haunted Muse-inspired Muse-led Muse-loved Muse-ridden musette bag museum beetle museum piece mush-kinu mushroom-colored mushroom-grown mushroom-shaped mushroom system mush rot musica mensurata music box music-copying music-drawing music-flowing music-footed music-mad music-panting music paper music room music speech music-stirring music-tongued musk ambrette musk bag muskeg moss musket arrow musk parrot muskrat weed muskus grass muslin clipper muslin delaine mussaenda coffee mussel bill mussel crab mustache cup mustache monkey mustang grape mustard beetle mustard family muster-out muster roll mutamur in illis mutation fox mutation mink mutation pressure mutation stop muth-labben mutton cane mutton grass mutton-legger muzzle-loader muzzle-loading muzzle ring muzzle velocity myall wood Mycelia-sterilia mydas fly myelin sheath myogen fibrin myosin fibrin myosotis blue myriad-minded myricyl alcohol myrobalan family myrtle berry myrtle bird myrtle-leaved mystery grass mystery religion mystico-allegoric mystico-religious mythico-historical mythico-philosophical mythico-romantic Nabeshima ware nagaed wood nag-tailed nail-bearing nail bed nail bit nail-biting nail bone nail caster nail-clipping nail-cutting nail filer nail filing nail fold nail-headed nailhead rust nailhead spar nailhead spot nail hole nail maker nail making nail molder nail-paring nail-pierced nail puller nail set nail-shaped nail-studded nail-tailed nail water Nair al zaurak Nair family naked-armed naked-bladed naked-eared naked-eye naked-eyed naked floor naked-flowered naked-fruited naked oat naked-seeded naked-stalked naked-tailed nake-footed namby-pambical namby-pambics namby-pambiness namby-pamby namby-pambyish namby-pambyism name day name part name plate namma hole nand pearl nankeen bird nankeen lily Nankeen porcelain Nankeen yellow Nanking porcelain Nanking yellow nanny goat nanny plum napa leather nap hand naphtha distiller naphthol black naphthol blue black naphthol yellow Naphthylamine black d naphthyl methyl ketone napkin pattern napkin ring Napoleon blue narcissus fly narcotico-acrid narcotico-irritant narkul grass Narodna skupshtina narra amarilla narra blanca narra encarnada narrow-backed narrow-billed narrow-bladed narrow-brained narrow-breasted narrow-celled narrow-chested narrow-crested narrow-ended narrow-eyed narrow-faced narrow-fisted narrow-guage narrow-guaged narrow-headed narrow-hipped narrow-jointed narrow-laced narrow-leaved narrow-leaved oat grass narrow-meshed narrow-minded narrow-mindedly narrow-mindedness narrow-mouthed narrow-necked narrow-nosed narrow-petaled narrow-rimmed narrow-seeded narrow-shouldered narrow-shouldred narrow-skulled narrow-souled narrow-spirited narrow-spiritedness narrow-streeted narrow-throated narrow-toed narrow-visioned narrow-waisted nasturtium family nasturtium red nasturtium yellow nation-state native-born native millet native timothy natural-born naturalis possessio nature deity nature myth nature-print nature printing nature spirit nature study nature worship naughty pack nautch girl Navaho blanket Navaho sandstone navel orange navel pipe navel point navel-shaped navigating officer navigation act navy agent navy bean navy bill navy blue navy board navy green navy league navy leaguer Navy list navy plug Navy register navy yard n-dimensional Neanderthal man neap tide near-acquainted near-adjoining near-bordering near-by near-colored near-coming near-dwelling Near eastern near-fighting near-following near-growing near-guessed near-hand near-legged near-related near-resembling near-sight near-smiling near-stored near-threatening near-touching near-ushering near-white neat-ankled neat-dressed neat-faced neat-fingered neat-folded neat-footed neat-handed neat-handedly neat-handedness neat house neat-limbed neat-looking neat soap neb-neb necessity money neck-break neck-breaking neck canal cell neck cell neck-cracking neck-deep neck-fast neck handkerchief neck-high neck-hole neck journal necklace orchid necklace poplar necklace tree neck molding neck rot neck strap neck-stretching neck verse neck yoke nectar-bearing nectar bird nectar-breathing nectar-dropping nectar-loving nectar-secreting nectar-seeking nectar-spouting nectar-streaming nectar-tongued need-be needle-and-thread needle-bar needle bath needle beam needle-billed needle blight needle bug needle cast needle chervil needle dam needle diatom needle file needle fir needle-form needle furze needle girder needle gorse needle grass needle grinder needle grinding needle gun needle ironstone needle juniper needle lace needle-leaved needle loom needle-made needle-nosed needle ore needle palm needle point needle-pointed needle pointer needle-point lace needle-scarred needle-shaped needle-sharp needle spar needle spike rush needle telegraph needle tooth needle trade needle valve needle weir needle whin need-not needs-be neel-bhunder neer-do-well ne exeat negation-proof negative-pole neglected-looking negro corn negrohead beech neighborhood house N electron Neo-attic Neo-babylonian Neo-catholic Neo-celtic Neo-christianity Neo-darwinian Neo-darwinism Neo-darwinist Neo-egyptian Neo-gothic Neo-greek Neo-hebraic Neo-hebrew Neo-hegelian Neo-hegelianism Neo-hellenic Neo-hellenism Neo-hindu Neo-kantian Neo-kantianism Neo-kantism Neo-lamarckian Neo-lamarckism Neo-lamarckist Neo-latin Neo-malthusian Neo-malthusianism Neo-manichaean Neo-marxian Neo-mendelian Neo-mendelism neon lamp neon tetra neon tube Neo-persian Neo-plantonic Neo-platonician Neo-platonism Neo-platonist Neo-punic Neo-pythagorean Neo-pythagoreanism Neo-roman Neo-sanskrit Neo-sanskritic Neo-scholastic Neo-scholasticism Neo-sogdian Neo-sumerian Neo-syriac Neo-thomism neoza pine nephelite-basanite nephelite-diorite nephelite-porphyry nephelite-syenite nephelite-tephrite nephro-ureterectomy Neptune green neroli camphor neroli oil nerve-ache nerve block nerve canal nerve cavity nerve cell nerve-celled nerve center nerve cord nerve-cutting nerve-deaf nerve-deafness nerve-destroying nerve eminence nerve ending nerve fiber nerve impulse nerve-irritating nerve net nerve-racked nerve-racking nerve-rending nerve-ridden nerve ring nerve-shaken nerve-shaking nerve sheath nerve stretching nerve-tingling nerve trunk nerve-trying nerve-winged nervous breakdown nervous system nest box nest egg nest fungus net area net assets net blotch net earnings net-fashion net fixer nether vert nether world net income neti neti net interest net necrosis net plankton net profit net silk net tare netted-veined nettie-wife netting knot nettle butterfly nettle cell nettle cloth nettle creeper nettle family nettle geranium nettle hemp nettle-leaved nettle potato nettle rash nettle-rough nettle-stung nettle tree nettling cell net ton net tonnage net tracery net valuation net value net-veined net weaver net weight net-winged net worth neural arch neural axis neural canal neural cavity neural crest fold neural gland neural groove neural lamina neural plate neural process neural shield neural spine neural tube neuromotor apparatus neuron doctrine neuter passive neutral point neutral position neutral zone Neutral zone Neva green never-ceasing never-certain never-changing never-conquered never-constant never-daunted never-dead never-dietree never-dying never-ended never-ending never-fading never-failing never-lasting never-needed never-never country never-quenching never-ready never-resting never-satisfied never-say-die never-setting never-shaken never-silent never-sleeping never-smiling never-stable never-strike never-swerving never-tamed never-tiring never-trodden never-twinkling never-vacant never-varied never-varying never-waning never-wearied never-winking never-withering new-admitted new-apparel new-array new-awaked new-begotten new-bladed new-bloomed new-blown new-built new-create new-cut newel stair New england New englander New englandish New englandism new-fashion new-fashioned new-fire method new-front new-furbish new-grown New hampshire New hampshirean New hampshirite New jersey New jerseyite new-laid new-light new-looking new-made Newmarket coat New mexican new-mint new-model new-modeler new moon new-mown new-name new-people new-rich new-rigged new-risen news agency news agent news bell news case news dealer news editor news-greedy news item news-making newspaper post newspaper syndicate new-spun news-seeking news vendor news writer New thought New thoughter New thoughtist New world new-written new-wrought new-year New years day New years eve New york New yorker New zealand New zealander next best next door next friend next ways Nez perce ngai camphor Niam-niam nibby-jibby nick-eared nickel bronze nickel calciner nickel carbonyl nickel glance nickel gray nickel green nickel gymnite nickel-iron accumulator nickel ocher nickel-plate nickel silver nickel steel nicker nut nicker tree nicotine sulphate niddle-noddle niddy-noddy nid-nod nievie-nievie-nick-nack niff-naff niff-naffy niffy-naffy niger oil niger seed nigger bug nigger chaser nigger chub nigger daisy niggerhead cactus nigger pine nigh-destroyed nigh-drowned nigh-ebbed nigh-hand nigh-naked nigh-past nigh-spent night adder night ape night bird night-black night-blind night blindness night-blooming night-blowing night blue night bolt night-born night-bringing night cart night chair night-cheering night-clad night-cloaked night clothes night cloud night club night-contending night court night-cradled night crawler night crow night-dark night-decking night dial night-dispersing night editor night emerald night-enshrouded night-eyed night-fallen night-faring night-feeding night-filled night fire night flower night-flowering night-fly night-flying night-folded night-foundered night-gaping night green night-grown night-haired night-haunted night heron night-hid night jasmine night kaka night key night lamp night latch night letter night life night light night line night-mantled night monkey night-overtaken night owl night palsy night parrot night partridge night piece night-prowling night rail night raven night rider night-riding night-robbing night robe night-robed night rocket night-rolling night-scented night school nightshade family night shift night-shining night singer night-singing night soil night song night sparrow night spell night steed night stick night-straying night-struck night-swaying night sweat night-swift night-swollen night terror night-traveling night-tripping night-veiled night vision night-wandering night warbler night-warbling night watch night watcher night-watching night watchman night willow herb nigrosine spirit-soluble nigrosine water-soluble nihil album nihil debet nihil dicit nihil ex nihilo nihil habet nilly-willy nimble-eyed nimble-feathered nimble-fingered nimble-footed nimble-headed nimble-heeled nimble-jointed nimble-mouthed nimble-moving nimble-pinioned nimble-shifting nimble-spirited nimble-stepping nimble-tongued nimble-toothed nimble will nimble-winged nimble-witted niminy-pimininess niminy-piminy niminy-piminyism nimmy-pimmy nim tree nine-banded nine-circled nine-cornered nine-day nine-eyed nine-eyed eel nine-eyes nine-foot nine-hole nine-hour nine-inch nine-jointed nine-killer nine-knot nine-lived nine-mile nine-part nine-part measure nine-part time ninepenny morris ninepin block nine-ply nine-point nine-point circle nine-pound nine-pounder nine-power Nine-power treaty nine-share nine-shilling nine-spined nine-spined stickleback nine-spotted nine-syllabled nine-tailed ninety-acre ninety-day ninety-eight ninety-eighth ninety-fifth ninety-first ninety-five ninety-four ninety-fourth ninety-hour ninety-mile ninety-nine ninety-ninth ninety-one ninety-second ninety-seven ninety-seventh ninety-six ninety-sixth ninety-third ninety-three ninety-ton ninety-two ninety-word nine-voiced nine-word nine-year ninth-born ninth-built ninth-class ninth-formed ninth-hand ninth-known ninth-mentioned ninth-rate ninth-told nipa alcohol nipa sugar nipper crab nipperty-tipperty nipple cactus nisi prius nissuee trout niter-blue niter cake nit grass nitride process nitrile base nitro-cellulose nitro-cotton nitrogen balance nitrogen chloride nitrogen cycle nitrogen dioxide nitrogen equilibrium nitrogen family nitrogen fixation nitrogen fixer nitrogen-fixing nitrogen-free nitrogen iodide nitrogen monoxide nitrogen mustard nitrogen oxide nitrogen pentoxide nitrogen peroxide nitrogen tetroxide nitrogen trioxide nitro group nitro-hydro-carbon nitro powder nitrosyl chloride nitta tree njave butter njave oil no-account no-ball no-being noble-born noble-couraged noble-featured noble fir noble-fronted noble gas noble-looking noble metal noble-minded noble-mindedly noble-mindedness noble-natured noble-spirited noble-tempered noble-visaged no-count nodding cap noddy tern node longitude nodule disease Nodus secundus no-eye pea no go no-go gauge no-good noise field intensity noisette brown Noisette rose nolle prosequi noll-kholl nol-pros no man nomination borough Non-african Non-alexandrian Non-american Non-anglican nonapparent easement nonapparent servitude Non-arab Non-arabic Non-archimedean Non-aryan Non-asiatic nonassessable mutual Non-attic Non-bantu Non-baptist Non-biblical Non-bolshevik Non-bolshevist Non-brahmanical Non-british Non-buddhist Non-calvinist Non-catholic Non-caucasian Non-celtic nonce word Non-chaucerian Non-chinese nonchord tone Non-christian noncommissioned officer noncommutative algebra non compos noncondensing engine Non-congregational Non-congressional non-co-operate non-co-operation non-co-operationist non-co-operative non-co-operator non-co-ordination Non-cymric Non-czech Non-danish Non-darwinian Non-druid Non-egyptian Non-egyptologist Non-english Non-euclidean Non-european Non-fascist Non-flemish nonforfeiture law Non-french Non-gaelic Non-german Non-germanic Non-gothic Non-government Non-greek Non-hamitic Non-hebraic Non-hebrew Non-hellenic Non-hibernian Non-hindu Non-hinduized Non-homeric Nonimportation act Non-indian Non-indo-european Nonintercourse act Non-ionic Non-irish Non-islamic Non-israelite Non-israelitish Non-italian Non-japanese Non-jew Non-jewish Non-kaffir Non-latin Non-legendrean Non-lutheran Non-magyar Non-malay Non-malayan Non-malthusian Non-marcan Non-mason Non-mediterranean nonmember bank Non-mendelian Non-methodist Non-mohammedan Non-mongol Non-mongolian Non-moorish Non-mormon Non-moslem Non-moslemah non-natty Non-negritic Non-negro Non-nicene Non-norman Non-norse nonny-nonny Non-pali Non-paninean Non-parisian Non-peruvian Non-polish Non-portuguese Non-presbyterian non-pros Non-protestant Non-prussian Non-pythagorean Non-quaker non-recoiling non-reduction nonre-eligibility nonre-eligible Non-riemannian Non-roman Non-russian Non-sanskritic Non-saxon Non-scandinavian Non-semite Non-semitic nonsex-linked Non-shakespearean Non-sienese Non-slavic Non-spanish Non-spartan Non-stoic Non-swedish Non-swiss Non-syrian Non-tartar Non-teuton Non-teutonic Non-trinitarian Non-turkish Non-tuscan Non-ukrainian Non-umbrian nonunion shop Non-unitarian Non-universalist Non-uralian nonvalue bill Non-vedic Non-venetian Non-vergilian Non-virginian Non-welsh Non-yahgan Non-zionist noodle-head noogoora bur nook shaft nook-shotten no one no-par no-par stock no-par-value no-place no-rent land Norman-french nor-noreast Norse-american north-countriness north country north-countryman northern redtop north-following north mark north-northeast north-northeastward north-northeastwards north-northwest north-northwestward north-northwestwards north-polar North pole north-preceding north-seeking north shore north side north-sider nose ape nose bag nose-belled nose bit nose dive nosee-um nose flute nosegay tree nose glasses nose-grown nose guard nose-heavy nose-high nose hitch nose iron nose key nose leaf nose-leafed nose-led nose-nippers nose peg nose pipe nose-pulled nose ring nose-shy nose stiffener nose-thumbing no-show no-side no-surrender no-system notary public not-being notch block notched-leaved notch-lobed not-delivery note-blind note-blindness note broker note paper not-ephemeral note shaver not-good nothing like nothing off no-thoroughfare not-living not-out Notre dame no-trump no-trumper not-soul noun clause noun equivalent Nova scotian novel-crazed novel maker novel-making novel-purchasing novel reader novel-reading novel-sick novelty siding novel writer novel-writing November meteor Nov-esperanto novice point Novo-zelanian now-accumulated now-being now-big now-borne now-dead now-existing now-fallen now-full nowhere near now-known now-lost now-neglected now-waning n-ple n-ply N radiation N series N-shaped N star N station nth degree n-tuple n-tuply N-type star Nu-arawak nubbin disease nubecula major nubecula minor nub yarn nuclein base nuisance tax nulla-nulla null method number field number lottery number one number plate numbers pool nun buoy nun moth nurse balloon nurse cell nurse child nurse crop nurse frog nurse mother nursery rhyme nursery school nursery stock nurse shark nurse tree nursing bottle nursing foot nursing home nut bone nut brown nut buoy nut coal nut crab nut-cracking nut dash nutgall oak nut-gathering nut grass nut margarine nutmeg apple nutmeg bird nutmeg butter nutmeg family nutmeg flower nutmeg geranium nutmeg hickory nutmeg liver nutmeg melon nutmeg oil nutmeg pigeon nut oil nut palm nut pine nut quad nutrient ratio nut rush nut sedge nut-shaped nut-shelling nut-sweet nut-tapper nut-toasting nutty-brown nutty-flavored nutty-looking nux vomica nymph pink oak apple oak bark oak-beamed oak beauty oak blight oak-boarded oak brown oak button oak canker oak chestnut oak-clad oak-covered oak-crested Oak crown oak-crowned oak family oak fern oak fly oak fungus oak gall oak green oak leaf oak-leaf brown oak-leaf cluster oak leather oak-leaved oak moss oak nut oak-paneled oak pruner oak-tanned oak thistle oak-timbered oak toad oak tree oak-tree money oak veneer oak-wainscoted oak wart oar feather oar-footed oat-bearing oat bread oat cleaner oat-crushing oat-fed oat field oat flour oat grass oat grinder oat-growing oath-bound oath breaker oath-breaking oath-despising oath-detesting oath helper oath-making oath purgatory oath suppletory oat huller oat kiln oatlike bent grass oatlike grass oat mill oat-producing oatseed bird oat-shaped oat sheller oat thistle oat thresher obispo pine obiter dictum object ball object glass object language object lens object lesson object matter object space object speculum object staff object teaching oblique-angled oblique-fire oblong-acuminate oblong-cordate oblong-cylindric oblong-elliptic oblong-elliptical oblong-falcate oblong-hastate oblong-lanceolate oblong-leaved oblong-linear oblong-ovate oblong-ovoid oblong-spatulate oblong-triangular oblong-wedgeshaped observation balloon observation kite observation mine observation squadron obstacle race obturator artery obturator canal obturator fascia obturator membrane obturator nerve obturator vein obtuse-angled obtuse-angular obtuse bisectrix occulting light occupation bridge Occupation day occupation franchise occupation neurosis occupation stamp ocean basin ocean-born ocean-borne ocean bug ocean-carrying ocean-compassed ocean-flooded ocean front ocean-girdled ocean-going ocean green ocean-guarded Oceanic mongol ocean lane ocean liner ocean marine insurance ocean-rocked ocean-severed ocean-skirted ocean-smelling ocean-spanning ocean spray ocean-sundered ocean trade ocean tramp ocean-wide ocher-brown ocher-colored ocher-red ocher-yellow ochr-el-guerche Ocoee series octahedron group octane number octave flute octave scale octet theory October bird October club ocuba wax ocular spectroscope ocular spot Oculi sunday odd-bell system odd-come-short odd-come-shortly odd-fangled Odd fellow Odd fellowship odd-humored odd-jobber odd-looking odd man odd-mannered odd-me-dod odd-numbered odd-pinnate odd-shaped odds-on odd-sounding odd-thinking odd-toed Oedipus complex off-bear off-bearer off-bitten off-board off-break off-center off-centered off-chance off-color off-colored off-corn off-cutting off-drive offertory veil off-fall off-falling off-flavor off-flow off-glide off-go offhand position off-hit off-hitting office-bearer office-boy office building office copy office fixture office force office found office furniture office girl office hours office lawyer office lock office manager office practice office premium officer plant officer tree office seeker office-seeking off-load off-look off-lying off-peak off-put off-reckoning offset-litho offset lithography offset sheet offset staff off-setting off-shaving off-shed off side off-sloping off-sorts off-stage off-standing off-taking off-the-record off-thrown off-turning off-wheel off-wheeler off-white Of table oft-named O-gee ogee arch Ogeechee lime ogee doorway O g washer ohm-ammeter ohm-ampere system ohm-mile oil asphalt oil bath oil-bearing oil beetle oil box oil-break switch oil-bright oil burner oil-burning oil bushing oil cake oil camp oil-carrying oil cellar oil circuit breaker oilcloth knife oil color oil column oil-containing oil-cooled oil cup oil derrick oil-dispensing oil distiller oil-distributing oil drill oil-driven oil-electric oil engine oil extractor oil-fed oil feeder oil field oil-filled oil-finding oil-finished oil-fired oil-forming oil fuel oil-fueled oil gas oil-gas tar oil gauge oil gilding oil gland oil green oil groove oil gun oil-harden oil-hardening oil heater oil-insulated oil-laden oil land oil-lit oil meal oil mill oil milling oil mold oil nut oil omphacine oil paint oil painting oil palm oil pan oil plant oil press oil-producing oil pulp oil-pumping oil refiner oil-refining oil-regulating oil ring oil rock oil sand oil-saving oil-seal oil-secreting oil shale oil shark oil sheet oil silk oil slick oil-smelling oil-soaked oil spot oil switch oil tanker oil tanning oil tar oil-temper oil-tempered oil-testing oil-thickening oil-tongued oil tree oil tube oil varnish oil well oil whetstone oily-brown oil yellow oil-yielding oily-looking oily-smooth oily-tongued oiticica oil old-age old-aged old-age pension old-age pensioner old bachelor old-bachelorish old-bachelorship Old bactrian old boy old-boyish old-clothesman old-established old-faced old-farrand old-farrandlike old-fashioned old-fashionedly old-fashionedness old-field birch old-field dove old-field lark old-field pine old-fogeydom old-fogy old-fogydom old-fogyish old-fogyism old-gathered old-gentlemanly old-gold old-growing Old guard Old guardism Oldham coupling old-ivory old-ladyhood old-line old-line company old-looking old-maidenish old-maidish old-maidism old-man cactus old-man fern old-new old-rose old-school Old-school Old-school baptist old-sighted old-sightedness old-standing old-style old-time old-timer old-timiness old-timy old-wifely old-wifish old witch grass old-womanish old-womanishness old-womanism old-womanly old-world old-worldish old-worldism old-worldliness old-worldly old-young oleander fern oleander scale oleaster family oleo gear oleo oil oleo strut olinda bug olive acanthus olive-backed olive-backed thrush olive bark olive berry olive-bordered olive branch olive brown olive-cheeked olive-clad olive-colored olive-complexioned olive crown olive drab olive dun olive family olive fly olive gnat olive gray olive green olive-greenish olive-growing olive gum olive-kernel oil olive knot olive mangrove olive nut olive oil Olive oil castile soap olive ore olive-pale olive plant olive plum olive quill olive scab olive scale olive-shaded olive-shadowed olive shell olive-sided olive-sided flycatcher olive-skinned olive-tree agaric olive tubercle olive yellow olivine-andesite olivine-basalt olla-podrida omander wood Omicron ceti omnibus bill omnibus box omnibus clause omnibus driver omnibus-driving omnibus-fashion omnibus-riding omnibus train omni-ignorant omnium-gatherum on-board once-accented once-born once-over once pinnate once removed once-run on-ding on-dit on-drive one-act one-acter one another one-armed one-blade one-bladed one-buttoned one-celled one-chambered one-class one-classer one-colored one-crop one-cusped one-day one-decker one-dimensional one-dollar one-eared one-eyed one-eyedness one fifth one-finned one-flowered one-foot one-footed one fourth one-grained one half one-hand one-handed one-handedness one-hearted one-hoofed one-horned one-horse one-humped one-hundred-percenter one-hundred-percentism one-ideaed one-inch one-jointed one-layered one-leaf one-leaved one leg one-legged one-leggedness one-letter one-line one-lunged one-man one-many one-minute one-nerved one-night one-night stand one-oclock one-one Oneonta sandstone one-petaled one-piece one-pipe one-pipe furnace one-point one-point perspective one-pope one-pound one-pounder one-price one-rail one-reeler one-ribbed one-roomed one-seater one-seeded one-sepaled one-septate one-sided one-sidedly one-sidedness ones self one-step one-storied one-story one-striper one-term one-third one-toed one-track one-two One-two-three one-valued one-way one-windowed one-winged one-word one-year onga-onga on-glaze onglette file on-glide on-go on-hit onion couch onion-eyed onion flute onion fly onion foot onion louse onion maggot onion mildew onion red onion set onionskin pink onion smudge onion smut onion structure onion twitch only-begotten only not on side on-stage on to onyx marble o-o o-o-a-a ooblastema filament ooze leather opal blue opal glass opal gray opaline green opal matrix opal-tinted open air open-airish open-airishness open-airism open-airness open-armed open-armedly open-back open-backed open-back press open-bladed open-breasted open-caisson open chain open-chested open-circuit open-coil open-countenanced open-crib open-cribbed open door open-doored open-eared open-end open-end bond open-ended open-endedness open-eyed open-eyedly open-face open-faced open-field open-fire open-flowered open-front open-fronted open-frontedness open-gaited open-grained open-headed open-hearth open-hearthed open-hearth furnace open-hearth process open house open-housed open-housedness opening bit opening die open-joint open-jointed open-kettle open-kneed open-letter open-letter proof open-lined open-market open-minded open-mindedly open-mindedness open-newel open-newel stair open-pan open-patterned open-phase open-phase relay open-pit open-pitted open-roofed open-rounded open-sand open-shelf open-shelved open-shop open-sided open-sidedly open-sidedness openside planer open-sleeved open-spaced open-spacedly open-spacedness open-spoken open-spokenly open-spokenness open-tank open-timber open-timbered open-timber roof open-timbre open-top open-topped open-view open-visaged open-weave open-webbed open-webbedness open-well open-windowed open-windowedness open-worked opera box opera cloak opera dancer opera flannel opera glass opera-going opera hat opera house opera-mad opera pink opera singer operating cost operations research ophthalmo-reaction opinion poll opium drinker opium-drinking opium-drowsed opium eater opium-eating opium poisoning opium poppy opium-shattered opium smoker opium-smoking opium taker opium-taking opossum mouse opossum shrimp opossum tree opossum wood opponent colors theory opposite-leaved opposite tide opsonocytophagic test optimum capacity Opus anglicum opus araneum opus consutum opus pectineum Orang benua orange aphid orange aurora orange basketworm orange berry orange blossom orange chipper orange-colored orange-crowned orange daisy orange-eared orange-fleshed orange-flower orange-flowered orange grower orange-headed orange-hued orange-leaf orange-leaf beetle orange leaf rust orange lily orange madder orange maggot orange marmalade orange melon orange orchard orange peel orange-peel bucket orange peeler orange pekoe orange quince orange quit orange-red orange-rufous orange rust orange scab orange scale orange-shaped orange-sized orange spoon orange stick orange-striped orange swallowwort orange-tailed orange-tawny orange-throated orange tip orange-tipped orange-tree orange vermilion orange water orange wife orange wine orange-winged Orang laut Orang malayu oratio obliqua oratio recta orbit sweeper orb weaver orchard fruit orchard grass orchard heater orchard heating orchard house orchard oriole orchella weed orchestra bells orchestra circle orchestra pit orchid family orchid fly orchid peat orchid pink orchilla weed ordeal bark ordeal bean ordeal root ordeal tree order blank orderly bin orderly book orderly officer orderly room orderly sergeant ordinary seaman ordinato-punctate ordnance engineer ordnance engineering ordnance map ordnance officer ordnance sergeant ore-bearing ore bed ore body ore bridge ore-buying ore car ore charger ore-crushing ore digger ore dressing ore-extracting ore-forming ore handler ore-handling ore hearth ore-hoisting or else ore mill ore-milling ore miner ore-mining ore process ore-roasting ore shoot ore smelter ore-smelting ore-washing ore weigher organ beater organ blower organ-blowing organ builder organ building organ cactus organ coral organ desk organ erector organ fish organ gallery organ-grinder organ gun organ harmonium organ loft organ maker organ-piano organ-pipe organ player organ point organ stop organ swell ori-ellipse orient blue orient pink orient red orient yellow orifice meter origanum oil Orions hound orl fly orlop deck ormolu varnish ornaments rubric Oroya fever orphan chamber orphreyed miter orpiment orange orpiment red orpiment yellow orpine family orra man orris oil orthoclase-basalt orthoclase-gabbro ortho-cousin ortho-orsellinic Osage orange oscillation circuit oscillation constant oscillation number oscillation transformer Osco-umbrian O-shaped osier-bordered osier cornel osier-fringed osier willow osier-woven os magnum osmi-iridium osmium lamp osmium oxide osmund brake osmund furnace osmund iron O star O station ostensible partner ostrich-egg ostrich-feather ostrich-feather grass ostrich fern Ostyak samoyed Ostyak-samoyedic Oswego tea Otceti cakowin other-group other-self other world otitis media otter board otter brown otter canoe otter raft otter sheep otter shell otter shrew otter trawl Ottoman cord Ottoman empire Ottoman turkish O-type star ouabe oil Ouachita stone ounce metal ouster le main out-and-out out-and-outer Out-babylon out-boarder outboard motor out-cargo out-clearer out-clearing out-craft outcrop mine outdoor theater out-group out guide Out-herod out-kneed outlet box outlet plate outline stitch Out-machiavelli Out-milton Out-nero out-of-bounds out-of-center out-of-course out-of-fashion out-of-focus out-of-hand out-of-humor out-of-joint out-of-office out-of-place out-of-plumb out-of-pocket out-of-print out-of-reach out-of-school out-of-season out-of-stock out-of-the-common out-of-the-way out-of-the-world out-of-town out-of-towner out-of-townish out-of-tune out-of-tunish out-of-turn out-of-vogue out-pointed outpost province Out-quixote outrigger torpedo outside broker outside caliper outside clinch outside finish outside form outside home outside jaunting car outside lap outside lead outside left outside loop outside right out sister out-soul Out-timon Out-tory outward-bound outward-bounder outward-flow turbine oval-arched oval-berried oval-bodied oval-bored oval chuck oval compass oval-faced oval-figured oval file oval-headed oval-lanceolate oval-leaved oval-shaped oval-truncate oval-visaged ovate-acuminate ovate-cordate ovate-cuneate ovate-cylindraceous ovate-cylindrical ovate-deltoid ovate-ellipsoidal ovate-elliptic ovate-lanceolate ovate-leaved ovate-oblong ovate-orbicular ovate-rotundate ovate-serrate ovate-serrated ovate-subulate ovate-triangular oven-baked oven builder oven-dried oven-dry oven furnace oven-shaped oven tit oven wood over-all over-and-over stitch over-counter overcurrent relay overdraft kiln overflow bug overflow pipe over-gear overhead price overlap fault overload circuit breaker overload relay overload starter overload switch over-round overseas cap overshot wheel over-size overthrust fault owala oil owala tree owl butterfly owl car owlet moth owl-eyed owl-faced owl fly owl-haunted owl-headed owl midge owl monkey owl moth Owl nebula owl parrot owl-sighted owl swallow owl-wide owl-winged own-form own-root own-rooted ox antelope ox ball ox balm ox bile ox bot ox daisy oxeye bean oxeye camomile ox-eyed oxeye daisy ox-eyed arch oxeye molding ox feather ox fence ox-foot Oxford blue Oxford chrome Oxford clay Oxford corner Oxford dash Oxford down Ox-god ox-headed oxide blue oxide brown oxide red oxide yellow oxidizing flame oxime group ox louse ox rail ox ray ox sole ox team oxter plate ox warble oxyacetylene blowpipe oxyacetylene cutting oxyacetylene welding oxy acid oxygen-acetylene oxygen-acetylene cutting oxygen-acetylene welding oxygen acid oxygen-hydrogen welding oxygen ratio oxyhydrogen blowpipe oxyhydrogen light oxyhydrogen microscope oxyquinoline sulphate Oxyrhynchus papyri oyster agaric oyster bar oyster bay oyster bed oyster catcher oyster crab oyster cracker oyster culture oyster-culturist oyster dredge oyster drill oyster farmer oyster fork oyster fungus oyster grass oyster knife oyster mushroom oyster plant oyster plover oyster rake oyster rock oyster-shaped oyster-shell bark louse oyster-shell scale oyster tongs oyster tree oyster white Ozark series Ozark state ozone paper paca-rana package advertising package conveyer package store pack animal pack bearer pack-bearing pack carrier pack drill pack driver pack duck packet boat packet day packet folio pack hoister pack ice pack-laden pack needle pack puller pack rat pack road pack sheet pack twine pad crimp paddle beam paddle board paddle boat paddle box paddle hole paddle plate paddle shaft paddle-shaped paddle staff paddle steamer paddle tumbler paddle wheel paddock pipe paddy blast paddy lucern paddywhack almanac pad eye padge owl pad groom pad hook pad horse padlock injunction padlock law pad saddle pad saw Pagano-christian Pagano-christianism Pagano-christianize page cord page gauge page proof page rest pagoda sleeve pagoda stone pagoda tree pai-hua paille finne pain-afflicted pain-assuaging pain-bearing pain-bought pain-chastened pain-dispelling pain-distorted pain-drawn pain-fearing pain-free pain-giving pain-inflicting pain-producing pain-racked pain spot pain-stricken paint-beplastered paint binder paint bridge paint brusher paint cleaner paint drier painted grass painter etcher painter etching painter graver painter graving painter stainer paint-filler paint-filling paint frame paint grinder paint hose paint keg paint mixer paint-mixing paint pot paint primer paint process paint remover paint-removing paint room paint-splashed paint-spotted paint-spraying paint-stained paint strake paint thinner paint-washing paint work paint-worn pain-worn pain-wrought pain-wrung pair-horse pair-oar pair-oared pair production pair royal Paisley shawl pakpak-lauin palace car palace guard Palae-alpine Palaeo-american Palaeo-asiatic Palaeo-christian palas kino palate bone Pale-asiatic pale bark pale-blooded pale-blue pale brandy pale-bright pale broomrape pale catechu pale-cheeked pale-colored pale-complexioned pale-dried pale-eared pale elder pale-eyed pale-faced pale-gray pale-green pale-hued pale laurel pale-leaved pale-livered pale-looking Paleo-american Paleo-amerind Paleo-asiatic Paleo-christian Paleo-eskimo Paleo-siberian pale-red pale-reddish pale-refined pale-souled pale-spirited pale-spotted pale-striped pales weevil pale-tinted palette knife pale-visaged pale-yellow paling board palisade cell palisade crown palisade parenchyma palisade worm palkee gharry palladium sponge pallet board pallet box pallet eye pallet leather pallet stone pallet tail pallial sinus pallid-faced pallid-fuliginous pallid-gray pallid-looking pallid-ochraceous pallid-tomentose pallisado crown pall-like pall-mall Palma christi palmarosa oil Palm beach palm-bearing palm beetle palm branch palm butter palm cabbage palm capital palm civet palm cockatoo palm crab palm-crowned palm dove palmella stage palmer fly palmer tree palmer trout palmer worm palmetto flag palmetto green palmetto scrub palm family palm fern palm-fringed palm grease palm greaser palm greasing palm green palm grub palm honey palm house palm kale palm kernel palm leaf palm-leaf fan palm-leaf hat palm lily palm marten palm nut palm oil palm peach palm play palm reader palm-shaded palm squirrel palm starch palm stay palm sugar Palm sunday palm swift palm-thatched palm-veined palm warbler palm wax palm weevil palm willow palm wine palm worm palmyra wood palo blanco palpebral fissure palsy-quaking palsy-shaken palsy-shaking palsy-sick palsy-stricken palsy-struck paludal fever paly-bendy pampas cat pampas deer pampas formation pampas fox pampas grass Pan-african Pan-afrikander Pan-afrikanderdom Panama balata Panama bark Panama congress Panama disease Panama hat Panama ipecac Panama laurel pan amalgamation Panama redwood Panama rubber Panama shell Panama wood Pan-america Pan-american Pan-americanism Pan-anglican Pan-arab Pan-arabia Pan-arabism Pan-asianism Pan-asiatic Pan-asiaticism Pan-babylonian Pan-babylonism pan boiler pan bolt Pan-britannic Pan-british pan-broil Pan-buddhism Pan-buddhist pancake bell pancake ice pancake plant Pan-celtic Pan-celticism Pan-china Pan-christian pan conveyer pancreas ptyalin pancreatic duct pancreatic juice Pan-croat panel beater panel board panel body panel heating panel house panel length panel photograph panel plane panel point panel saw panel strip panel system panel thief panel wall panel wheel Pan-europe Pan-european pan-fired pan fish pan-fry Pan-german Pan-germanic Pan-germanism Pan-germanist Pan-germany Pan-gothic pan grave Panhandle state pan-headed Pan-hispanic Pan-hispanism panic bar panic bent panic bolt panic-driven pan ice panic grass panic-pale panic party panic-proof panic-stricken panic-strike panic-struck panic-stunned Pan-islam Pan-islamic Pan-islamism Pan-islamist Pan-israelitish Pan-latin Pan-latinist pan-leaf Pan-mongolian Pan-mongolism Pan-moslemism Pannetier green pannier pack Panolia deer Pan-orthodox Pan-orthodoxy Pan-pacific Pan-presbyterian Pan-protestant Pan-prussianism Pan-russian Pan-satanism Pan-saxon Pan-scandinavian Pan-sclavic Pan-sclavism Pan-sclavist Pan-sclavonian Pan-serb pan-shaped Pan-slav Pan-slavic Pan-slavism Pan-slavist Pan-slavistic Pan-slavonian Pan-slavonic Pan-slavonism pan supari pansy-colored pansy-growing pansy orchid pansy purple Pan-syrian pansy-violet pansy-yellow pantechnicon van Pan-teutonism panther cat panther cowrie panther lily pantile lath panting stringer pantograph snaffle pantograph trolley Pan-turanian Pan-turanianism Pan-turanism panty girdle Papagayo wind papa rock papaw family paper-backed paper baler paper-baling paper birch paper blockade paper book paper-bound paper boy paper-capped paper carrier paper chase paper chaser paper chromatography paper cloth paper-clothed paper coal paper-coated paper-coating paper-collared paper colorer paper-covered paper credit paper cutter paper-cutting paper-drilling paper-embossing paper-faced paper-filled paper flower paper-folding paper foot paper-footed paper grass paper hanger paper hanging paper holder paper hornet paper hunt paper jogger paper joint paper knife paper lapper paper-lined paper machine paper-mended paper mill paper money paper mulberry paper muslin paper office paper-palisaded paper-paneled paper-patched paper plant paper pulper paper rack paper rate paper-saving paper seller paper-selling paper shale paper-shell paper-shelled paper-shuttered paper-slitting paper sorter paper-sparing paper stainer paper-stamping paper standard paper surplus paper-testing paper-thick paper-thin paper title paper tree paper-using paper varnisher paper-varnishing paper wasp paper-waxing paper-white paper-whiteness paper-windowed paper work paper works papier-mache papoose board Papua mace Papua nutmeg papyrus capital papyrus column para-agglutinin para-aminophenol para-analgesia para-anesthesia para-appendicitis parachute light parachute light ball parachute spinnaker paracoto bark parade rest paradise apple paradise bird paradise duck paradise finch paradise fish paradise flower paradise flycatcher paradise grackle paradise green paradise grosbeak paradise nut paradise plant paradise seed paradise stock paradise tree paradox gun paraffin-base paraffin distillate paraffin hydrocarbon paraffin oil paraffin paper paraffin scale paraffin series paraffin wax paraffin xylol paragonite schist parallel bar parallel-flow turbine parallelogram law parallel-veined paramine brown paranitraniline red para red para-rescue parasite resistance para-ski parasol ant parasol fern parasol mushroom parasol pine parasol-shaped parasol skirt parathyroid tetany paratyphoid fever parcel-blind parcel carrier parcel-carrying parcel checker parcel-deaf parcel delivery parcel-divine parcel-drunk parcel-gilder parcel-gilding parcel-gilt Parcel-greek parcel-guilty Parcel-latin parcel-learned parcel-mad parcel-packing parcel paper parcel-plate parcel-popish parcel post parcel-post stamp parcel-stupid parcel-terrestrial parcel-tying parchment bark parchment-colored parchment-covered parchment-faced parchment lace parchment-maker parchment paper parchment-skinned parchment-spread parchment worm par collection pardon bowl pardon chair pardon screen pareira brava parent complex parent-in-law parent metal par excellence pariah dog pariah kite Parian ware parieto-occipital pari-mutuel paring chisel paring gouge Paris blue Paris green Paris hat parish clerk parish council parish house parish meeting parish priest parish register parish school parish top Paris red Paris white Paris yellow park flower park forest park green parkin baker parking brake parlatoria scale parliament cake parliament heel parliament hinge parliament man parlor boarder parlor car Parma red parochial school parol arrest parol contract parole law paroquet auklet paroquet bur parotid duct parquet circle parrel truck parrot-beaked parrot-billed parrot bullfinch parrot cry parrot disease parrot-gray parrot green parrot-learned parrot mouth parrot-mouthed parrot-nosed parrot-red parrot-toed pars intermedia parsley bed parsley crown parsley fern parsley-flavored parsley-leaved parsley pie parsley piert parsley wreath part-created part-done part-earned parterre box part-finished part gate part-heard parti-color parti-colored parti-decorated parti-mortgage parti-named parting bead parting chisel parting cup parting tool parti-striped partition law part music part-opened part owner partridge cane partridge dove partridge pea partridge pigeon part song part time part-timer party circle party emblem party-giving party line party liner party-making party man party per fess party-political party-spirited party wall party-walled party wire party-zealous parula blue parula warbler par value paschal candle paschal controversy paschal lamb paschal letter Pasch day pasch egg Pasquil lock passage bed passage bird passage board passage boat passage-free passage grave passage hawk passage money passage penny pass boat pass box pass-by pass-bye pass check pass course pass door passenger agent passenger car passenger density passenger falcon passenger list passenger locomotive passenger manager passenger-mile passenger mileage passe-partout passer-by Passeres anisomyodi Passeres diacromyodi passing bell passing note passing strake passion-blazing passion-breathing passion-colored passion cross passion-distracted passion-driven passion-feeding passion-filled passion-fraught passion-frenzied passion fruit passion-guided passion-kindled passion-kindling passion-led Passion music Passion play passion-proud passion-ridden passion-shaken passion-smitten passion-stirred passion-stung Passion sunday passion-swayed passion-thrilled passion-thrilling passion-torn passion-tossed passion-wasted Passion week passion-winged passion-worn passive-minded passive resistance passive resister pass master pass-out Passover bread past-due paste grain pastel blue pastel gray pastel-tinted paste wash paste water pastor-elect pastry bag pastry chef pastry cook pastry flour pastry tube pasture bird pasture rose pasture thistle pasty-faced pasty-footed pat-a-cake patch bolt patch box patchouli oil patch pocket patch test patent block patent leather patent light patent medicine patent office patent right Pater noster pater patratus pat hand patina green patio process pat-pat patrol wagon patronal festival patron saint patten maker pattern box pattern card pattern designer pattern reader pattern wheel patter song patty-cake patty shell paunch mat pauper-born pauper-bred pauper-breeding pauper costs pauper-fed pauper-feeding pauper-making pavement ant pavement epithelium pavement light pavilion hospital pavilion roof paving roller paving stone paving tile pavor nocturnus pawl bitt pawl head pawl post pawl rim pawn ticket paw-paw paw-pawness pay-all pay clerk pay dirt pay envelope pay load paymaster general paymaster-generalship payment bill pay-off pay-rent pay-roller pay station pea bean pea beetle pea blight peace-abiding peace-blessed peace-breathing peace-bringing peace conference peace-enamored peace establishment peace giver peace-giving peace guild peace-inspiring peace-loving peace-lulled peace offering peace officer peace pipe peace-preaching peace-procuring peace-restoring peace-trained peace warrant peach aphid peach bacteriosis peach blight peach blister peach bloom peachblossom pink peach borer peach canker peach color peach-colored peach-kernel oil peach-leaved Peach melba peach moth peach red peach rosette pea coal peacock blue peacock fan peacock-feathered peacock green peacock-herl peacock heron peacock-hued peacock iris peacock moth peacock ore peacock pheasant peacock poppy peacock-spotted peacock-voiced pea comb pea-combed pea crab pea flower pea-flowered pea green pea grit pea huller pea jacket peak crest peak factor peak load peaky-faced pea measle pea mildew pea moth peanut butter peanut oil peanut tube pea ore pea-picking pear blight pear blight beetle pear borer pear gauge pear haw pea rifle pearl-bearing pearl-besprinkled pearl blue pearl blush pearl-bordered pearl-bush pearl-coated pearl coating pearl-colored pearl-crowned pearl danio pearl diabase pearl disease pearl diver pear-leaved pearl edge pearl-encrusted pearl essence pearl eye pearl-eyed pearl filler pearl fisher pearl-fishery pearl fishing pearl-gemmed pearl gray pearl-handled pearl hardening pearl-headed pearl hen pearl-hued pearl-lined pearl-lipped pearl millet pearl mussel pearl oyster pearl-pale pearl-pure pearl-round pearl-set pearl shell pearl sheller pearl shelling pearl sinter pearl spar pearl spurry pearl-studded pearl-teethed pearl-toothed pearl white pearl-wreathed pearl-yielding pear midge pear scale pear-shaped pear shell pear slug pear squash pear thorn pear thrips peasant blue peasant-born peasant holder peasant proprietor peasant proprietorship peasant sleeve pease brose pea sheller pea-shoot pea-sized pea-soup pea-souper peat bank peat bog peat coal peat digger peat fiber peat gas peat hag peat machine peat moor peat moss pea tree peat reek peat-roofed peat-smoked peat soil peat spade pea vetchling pea vine pea weevil pebble cast pebble-covered pebble dash pebble-dashed pebble gravel pebble grinder pebble leather pebble mill pebble-paved pebble-paven pebble powder pebble-shaped pebble-strewn pebble vetch pecan brown peckerwood mill peck horn pecky cypress pedal board pedal cords pedal coupler pedal curve pedal ganglion pedal key pedal keyboard pedal note pedal organ pedal piano pedal point pedal polygon pedal pushers pedal surface pedately cleft pedately veined pede cloth pedestal box pedestal mount pedestal pile pedestal rock pede window pedigree clause peel end peel tower peen hammer peening rammer peen-to peep-bo peep frog peep hawk peep nap peep plate peep show peep sight peg-a-lantern peg drum peg float pegging awl peg leg peg tooth peg-tooth harrow peg top Peking blue pelargonium oil pelican fish pelican flower pelican hook pellet bow pellet molding pellitory bark pell-mell pelt rot pelt wool penalty area penalty bench penalty envelope penalty goal penalty kick penalty stroke penang-lawyer penang nut pen-bearing pen-cancel pen cancellation pencil blue pencil box pencil case pencil cedar pencil compass pencil diamond pencil drawing pencil flower pencil-formed pencil holder pencil maker pencil-mark pencil rod pencil-shaped pencil sharpener pencil sharpening pencil stone pendant bow pendant post pendant-shaped pendant switch pendant tackle pendant-winding pen-driver pendulum bob pendulum level pendulum press pendulum pump pendulum wheel pen feather pen-feathered penguin duck penguin grass peninsula pine penitentiary book pen keeping pen machine pen mating pen name pennant fish pennant-winged penner-up pen nib penny-a-line penny-a-liner penny ante penny arcade penny bank penny black penny bridal penny cake penny dreadful penny gaff penny grass penny hat penny horrible penny loaf penny pies penny pincher penny-pinching penny post penny rent penny stock penny tree penny wedding penny whistle penny wisdom penny-wise pen palsy pen picture pen point pen portrait pen portraiture pen pot pen-pusher pen-shaped pen sketch penta-acetate pentagon dodecahedron pen-tailed pentane lamp Pentothal sodium pent road pent roof pent-up pen-written peony dahlia peony-flowered people-blinding people-born people-devouring people-king people-loving people-pestered people-pleasing pepper bush pepper caster peppercorn rent pepper mill peppermint camphor peppermint gum peppermint oil peppermint stringbark peppermint tree pepper oil pepper plant pepper pod pepper pot pepper red pepper sauce pepper tree pepper turnip pepper vine pepper wheat per annum per ascensum perboric acid per capita per cent percentage composition percentage error percentage tare per centum Percheron norman perch pole per compound per contra percussion bullet percussion cap percussion drilling percussion figure percussion fire percussion fuse percussion instrument percussion lock percussion-proof percussion stop percussion table percussive welding per descensum per diem perennial-rooted perforation gauge performance test pericline twinning perigean tides Perigord pie peri-insular peril-laden perilla oil periodicity factor periosteo-edema peripheral neuritis periwinkle blue perjury-proof per mil per mill permutation lock pernyi silkworm per pais Perpendicular style perpend wall per se per second per second per simpliciter personnel director personnel manager per stirpes persuasion-proof perverse-notioned pestilence-proof pestle-shaped pest pear pest-ridden pet cock peter boat peter gunner petition-proof petit juror petit jury petit larceny petit mal petit-negre petit-noir petit point petit treason pet lamb petrol engine petroleum asphalt petroleum benzine petroleum coke petroleum engine petroleum engineer petroleum engineering petroleum ether petroleum grease petroleum jelly petroleum naphtha petroleum spirit petro-occipital petticoat breeches petticoat insulator petticoat pipe petty-minded petty-mindedly petty-mindedness petunia violet pew chair pew opener pew rent pew rental pew renter pewter mill Phacd phad phaeton butterfly phantom circuit phantom-fair phantom larva phantom minnow phantom orchid phantom picture phantom red phantom tumor phantom-white phantom wire pharmaco-oryctology pharyngo-oesophageal pharyngo-oral phase advancer phase angle phase converter phase difference phase microscope phase-rotation relay phase rule phase splitter phase splitting phase transformer phase velocity phase-wound pheasant cuckoo pheasant duck pheasant-eyed pheasant-plumed pheasant-tailed phenacyl chloride phenobarbital sodium phenol alcohol phenol aldehyde phenol-phthalein phenol red phenyl alcohol phenyl cyanide phenyl ether phenyl iodide phenyl isocyanate phenyl mercaptan phenyl methyl ketone phenyl salicylate Phil-african Phil-arabian Phil-arabic philenor butterfly Philippine mahogany Philo-athenian Philo-french Philo-gallic Philo-gallicism Philo-german Philo-germanism Philo-greek Philo-hindu Philo-jew Philo-laconian Philo-peloponnesian Philo-pole Philo-polish Philo-russian Philo-slav Philo-slavism Philo-teuton Philo-teutonism Philo-turk Philo-turkish Philo-turkism Philo-yankee Philo-yankeeist Philo-zionist Phi phenomenon phloem fiber phloem necrosis phloem parenchyma phoenix fowl phoo-phoo phosphate rock phosphine oxide phosphor copper phosphorous anhy-dride phosphorus chloride phosphorus disease phosphorus necrosis phosphorus oxide phosphorus oxychloride phosphorus pentachloride phosphorus sulphide phosphorus trichloride phosphoryl chloride photo finish photoflash lamp photogelatin process photo-offset photo-retouch phrase book phrase mark physical culturist physic nut pia-arachnitis pia-arachnoid piacular offering pia mater pia-matral piano action piano deal piano lamp piano nobile piano organ piano player piano-player roll piano score piano subito piano-violin piano wire pickax team pick-bearing pick clock pick dressing picked dogfish pickerel frog picker-up picket fence picket fort picket guard picket line picket pin picket tail pick eye pick glass pick hammer pickle-cured pickle grass pickle green pickle-herring pickle moth pick-me-up pick-nosed pick-off pick rake pick tongs pickup current pickup service picot stitch picture book picture-borrowing picture bride picture-broidered picture-buying picture card picture-dealing picture gallery picture-hanging picture-hung picture marriage picture mirror picture molding picture ore picture-painting picture-pasted picture play picture playwright picture post card picture-seeking picture tube picture window picture wire Pidgin english pie baker pie-baking pie board piece accent piece brace piece broker piece-dye piece goods piece mold piece price piece price system piece rate piece wage pie chart piecrust table pied-billed pied blackbird pied-coated pied-colored pied-faced pie dish pied-winged pie eater pie-eyed pie filler pie filling pie-gow pie knife pie maker pie making pie meat pien check pie piece pie plate pie rack pier arch pier buttress pier dam pier glass pierre-perdu pier table pie-stuffed pie tin pie vendor pie wagon pie wool piezo oscillator piezo resonator piff-paff pig-back pig-backed pig bed pig-bellied pig boiling pig breaker pig-breeding pig-bribed pig cart pig-chested pig dealer pig-dealing pig deer pig-driving pig-eating pigeon breast pigeon-breasted pigeon-breastedness Pigeon english pigeon flyer pigeon grass pigeon hawk pigeon house pigeon-livered pigeon post pigeon pox pigeon-tailed pigeon-toe pigeon-toed pig-eyed pig-faced pig-fat pig-footed piggy bank piggy-wiggy pig-haired pig-haunted pig hutch pig iron pig-jaw pig-jawed pig-jump pig-jumper pig-keeping Pig latin pig lead pig man pigment cell pig metal pig-proof pig-tailed pig-tight pig tub pig typhoid pig wife pig yoke pikaba hemp pike-eyed pike-gray pike hammer pike perch pike pole pike sauce pike-snouted pike squirrel pike whale pilaster mass pilaster strip pile bent pile bridge pile builder pile building pile-built pile cap pile drawer pile-driven pile driver pile-driving pile dweller pile dwelling pile hammer pile weave pile weaving pile wire pile-woven pilferage hazard pilgrimage psalm pilgrim bottle pilgrim brown pilgrim ring pilgrim scallop piling strip pillar block pillar bolt pillar box pillar crane pillar cult pillar dollar pillar file pillar lip pillar mount pillar plate pillar-shaped pillar stone pill-boasting pill bug pill-dispensing pill-gilding pillow block pillow fight pillow lace pillow lava pillow sham pillow-shaped pillow slip pillow word pill pipe pill-rolling pill-shaped pill slab pill-taking pill tile pill wood louse pilose bent grass pilot balloon pilot bird pilot biscuit pilot boat pilot bread pilot burner pilot cell pilot chart pilot driver pilot engine pilot fish pilot flag pilot flame pilot lamp pilot light pilot method pilot motor pilot nut pilot pin pilot plow pilot valve pilot whale pilot wheel pimento cheese pimento grass pimpernel root pimple metal pinacate bug pina cloth pinacone-pinacolin pinball machine pin basket pin bit pin block pin borer pin boy pin bridge pin buttock pin-buttocked pince-nez pincer-shaped pincers-shaped pinch bar pin cherry pinch-faced pinchgut money pinch-hit pinch hitter pinch out pinch phenomenon pinch point pinch-spotted pin curl pindo palm pindova palm pineal body pineal gland pineapple disease pineapple fiber pineapple fungus pineapple oil pine bark pine bark aphid pine barren pine-bearing pine-bordered pine borer pine-built pine-capped pine-clad pine cone pine-cone fish pine-covered pine-crested pine-crowned pine-dotted pine-encircled pine-fringed pine grass pine-leaf scale pine needle pine-needle oil pine oil pine sawfly pine sawyer pine-sequestered pine-shaded pine-shipping pine snake pine tag pine-tar oil pine-tip moth pine tree pine-tree flag pine-wood pine wool pine worm piney dammar pin-eyed piney tallow piney woods pin fallow pin-fire pin gear ping-pong Ping-pong pinhole camera pinhole decay pinhole pupil pin horse pink-blossomed pink-bound pink-breasted pink-checked pink-cheeked pink-coated pink-colored pink disease pink-eared pink eye pink-eyed pink-faced pink-fleshed pink-flowered pink-foot pink-footed pink grass pink in pinking iron pinking shears pink lady pink-leaved pink-lipped pin knot pink-ribbed pink salt pink-shaded pink-shelled pink-skinned pink spray pinkster flower pink-sterned pink-striped pink-tinted pink-veined pink-violet pink-white pin mill pin money pinnate-leaved pinnate-ribbed pinnate-veined pinnatifid-lobed pin oak pinon grass pinon pine pin pallet pin point pin pool pin prod pin rack pin rod pin setter pin-spotted pin-striped pintado petrel pin-tailed pintle chain pintle hook pinto bean pin-toed pin tooth pint pot pin tuck pin tumbler pin-up pin valve pin vise pin wheel pin-wing pin wire pin wrench pioneer tunnel pip card pipe amygdules pipe beetle pipe-bending pipe binder pipe-boring pipe box pipe-caulking pipe clay pipe-clayey pipe-clayish pipe-cleaning pipe coupling pipe-cutting pipe die pipe-drawn pipe dream pipe dreamer pipe dreaming pipe-drilling pipe fitter pipe founder pipe isinglass pipe-joint cement pipe maker pipe metal pip emma pipe-necked pipe organ pipe-playing pipe-puffed pipe roll piperonyl alcohol pipe-shaped pipe-tapping pipe-thawing pipe thimble pipe thread pipe threader pipe-threading pipe tongs pipe tool pipe welder pipe wrench piping cord pippin-faced pippin file pippin-hearted pip-pip pip-squeak piptostegia root pirate bird pirate perch pisang wax pish-pash pismo clam pistachio green pistachio nut pistacia gall pistol carbine pistol grip pistol plant pistol-shaped piston displacement piston drill piston pin piston pump piston ring piston rod piston spring piston valve pita fiber pita flax pita floja pit bank pit-black pit-blackness pit boss pit brink pitch accent pitch apple pitch black pitch-blackened pitch-blackness pitch box pitch-brown pitch circle pitch coal pitch-colored pitch cone pitch cylinder pitch-dark pitch-darkness pitch-diameter pitch discharger pitcher house pitcher mold pitcher molding pitcher plant pitcher-shaped pitch-faced pitch factor pitchfork grass pitching tool pitch kettle pitch line pitch-lined pitch-marked pitch opal pitch pine pitch pipe pitch point pitch pot pitch shot pitch-stained pit coal pit craneman pit dwelling pit-eyed pit hand pith ball pit head pit-headed pit-head frame pith helmet pith knot pit house pit-marked pit-patter pit prop pit-rotted pit saw pit sawyer pit-specked pitter-patter pit tomb pit viper pit-working pity-bound pity-moved pity-worthy pivot bearing pivot blow pivot bridge pivot joint pivot man pivot pier pivot span pivot stand pivot tooth pix-jury pixy-led pixy ring pixy stool place-begging place bill place brick place card place-grabbing place holder place-holding place hunter place-hunting place isomerism place kick place kicker place-loving placement examination placement kick placement test place-money place name place-proud placer claim placer miner place seeker place-seeking placid-featured placid-mannered placing-out placita coronae placket hole plagioclase-basalt plagioclase-granite plagioclase-porphyrite plagioclase-porphyry plagioclase-rhyolite plague-beleagured plague-free plague grasshopper plague-haunted plague-infected plague-infested plague mark plague-ridden plague-smitten plague spot plague-spotted plague-stricken plain aerial plain-bodied plain-bred plain-clothed plain clothes plain-clothes man plain-darn plain dealer plain-dressing plain-edged plain-faced plain-featured plain-garbed plain-headed plain-hearted plain-laid plain-looking plain-mannered plain-pranked Plains cree plain sewing plain-soled plain song plain speaking plain-spoken plain-spokenly plain-spokenness plain wanderer planching nail plane angle plane chart plane curve plane-faced plane figure plane geometry plane-parallel plane polarization planer center planer head planer knife planer tree plane-shear plane-table plane-tabler planet differential planet gear plane trigonometry planet-stricken planet-struck planet wheel P-language planing mill plank buttress plank scraper plank-sheer plankton net planning board plano-concave plano-convex planomilling machine plantain-leaved plantain lily plantain squirrel plantain tree plant anatomy plant-animal plantar ligament plantar nerves plantar reflex plantar veins plantation acre plantation rubber plant breeder plant cane plant cutter Plante battery plant factor plant feeder plant fibrin plant food plant formation plant geographer plant geography plant hair plant hemp plant house planting stick plant insulin plant life plant louse plant pathology plant physiology plant thermal efficiency plant worship plant worshiper plash wheel plasma body plasma cell plasma membrane plaster baker plaster bond plaster burner plaster cast plaster chopper plaster jacket plaster spreader plastic art plastic flow plate armor plate battery plate beam plate bender plate-bending plate bone plate calender plate-carrier plate circuit plate clutch plate-collecting plate column plate coupling plate culture plate current plate cutter plate-cutting plate cylinder plate driller plate-drilling plate gear plate girder plate glass plate-glazed plate glazing plate heater plate-incased plate jig plate keel plate machine plate modulation plate money plate-mounting platen press plate oven plate paper plate press plate printer plate proof plate-punching plate rail plate-roll plate-rolling plate-scarfing plate-shaped plate-shearing plate-tossing plate tower plat-eye plat-footed platform balance platform car platform elevator platform harvester platform scale platform spring platform wagon platina yellow platinum ammine platinum black platinum lamp platinum paper platinum process platinum sponge platinum thermometer platoon school platoon system Plato-wise platter-faced play-act play acting play actor play actorism play actress playback machine play debt play doctor player piano playground ball playing card playing field playing suit play-judging play-loving play-off play pipe play-producing play-reading play right pleasant-eyed pleasant-faced pleasant-featured pleasant-looking pleasant-mannered pleasant-minded pleasant-natured pleasant-sounding pleasant-spirited pleasant-spoken pleasant-tasted pleasant-tasting pleasant-tongued pleasant-voiced pleasant-witted pleasure-bent pleasure-bound pleasure giver pleasure-greedy pleasure ground pleasure lover pleasure-pain pleasure principle pleasure seeker pleasure-shunning pleasure taker pleasure-tempted pleasure-tired pleasure-wasted pleasure-weary pledge-bound pledge-free pledge keeper pledge taker plein-air plein-airist plein-air school plenary inspiration pleroma violet pleurisy root pliant-bodied pliant-necked plinth course plisse crepe plot survey plottage increment plottage value plotting board plotting paper plover-billed plover egg plover page plover quail plow alms plow-bred plow-cloven plow drill plow hand plow horse plow iron plow paddle plow press plow-shaped plowshare bone plow steel plow team plow-torn plow tree plow truck pluck-buffet plug bib plug cap plug casing plug cock plug drill plug frame plug hat plug-hatted plug rod plug switch plug tobacco plug-ugly plumbago blue plumbago gray plumbago slate plumb bob plumb bond plumber block plumb joint plum bladder plumb level plumb line plum blotch plum-blue plum broth plum-brown plumb rule plum-colored plum curculio plum duff plume-crowned plume-decked plume-dressed plumed tussock grass plume-embroidered plume-fronted plume-gay plume grass plume moss plume moth plume nutmeg plume-plucked plume-plucking plume polypody plume poppy plume-soft plume stick plume-stripped plum fir plum gouger plum granite plum grape plum-green plummer block plummet line plum pocket plum pudding plum purple plum scab plum-shaped plum-sized plum thrips plum-tinted plum tree plum violet plum weevil plum yew plunge bath plunge battery plunger bucket plunger elevator plunger magnet plunge rod plunger piston plunger pump plus-foured plus fours plush copper plus head plush stitch plus lens plus sign plus thread Plymouth colony ply yarn pneumatico-hydraulic pneumatic-tired pneumato-hydato-genetic poacher tub Poale zion Poale zionist poalike fescue grass pock-arred pocket battleship pocket billiards pocket bird pocket bladder pocket boom pocket burner pocket chisel pocket chronometer pocket-eyed pocket flask pocket lighter pocket money pocket piece pocket plum pocket print pocket rat pocket sheriff pocket-size pocket-sized pocket veto pock-frecken pock-fretten pock lymph pock-marked pock nook pock-pit pock scab pod auger pod borer pod corn pod fern pod gimlet pod rot pod-shaped pod shrimp poet-artist poet-dramatist poet-farmer poet-historian poet-humorist poetico-antiquarian poetico-architectural poetico-grotesque poetico-mystical poetico-mythological poetico-philosophic poet-king poet laureate poet-laureateship poet-musician poet-novelist poet-painter poet-patriot poet-pilgrim poet-playwright poet-plowman poet-preacher poet-priest poet-princess poetry-proof poet-saint poet-satirist poet-seer poet-thinker poet-warrior point alphabet point bar point-blank point chisel point co-ordinate point draftsman point duchesse point duty point-event point fuse point handle point hole pointing bone pointing chisel pointing doors pointing mark pointing tool point lace point-laced point-on point paper point-particle point rail point-ring sight point salient point set point source point space point switch point system point tense point transformation poison gas poison hemlock poison ivy poison-laden poison mask poison oak poison rye grass poison-sprinkled poison sumac poison-tainted poison-tipped poison-toothed poke bonnet poke-bonneted poke brim poke-brimmed poke check poke-cheeked poke-easy poker dice poker face poker work poky bonnet Poland china polar bear polar body polar circle polarity cap polarized-relay armature pole-armed pole bean pole chain pole changer pole compass pole-dried pole effect pole flounder pole horse pole jumper pole lathe pole mast pole-masted pole piece pole pitch pole screen pole-shaped pole-stack pole strap pole-trap pole trawl pole vault pole vaulter polewood stage police alarm police badge police baton police boat police chief police club police commissioner police court police detective police dog police inspector police jury police matron police officer police state police station police wagon police whistle policy loan policy racket policy shop policy year Polish-american Polish-jew Polish-made Polish-speaking polissoir wheel political-minded politician-proof politico-arithmetical politico-commercial politico-ecclesiastical politico-economical politico-ethical politico-geographical politico-judicial politico-military politico-moral politico-orthodox politico-peripatetic politico-religious politico-sacerdotal politico-scientific politico-social politico-theological polka dot polka-dotted polka mazurka poll booth poll degree pollen basket pollen brush pollen catarrh pollen chamber pollen-covered pollen-dusted pollen mass pollen plate pollen sac pollen-sprinkled pollen tube poll evil poll parrot poll-parroty poll pick poll tax polly-fox polly mountain polo cart polo coat polo pony polo shirt polychrest salt polyhedron formula polymorphous-perverse poly-mountain polyneuritic psychosis polypod brake polypody family pomace fly pomegranate purple pommel bag pompano shell Pompeian blue Pompeian red Pompeian yellow pom-pom pom-pom-pullaway ponceau red pond apple pond crow pond cypress pond duck pond lily pondosa pine pond pine pond scum pond-scum parasite pond smelt pons asinorum pontiff purple pontoon bridge pontoon dock pony engine pony express pony grass pony truck pony truss poodle dog pooh-pooh pooh-pooher pool bottle pool hole pool seller pool table poop cabin poop deck poop royal poor-blooded poor box poor-charactered poor-clad poor debtor poor-debtor law poor-do poor farm poor-feeding poor-folksy poor gas poor law poor-minded poor oat poor relief poor-sighted poor-spirited poor-spiritedly poor-spiritedness pop ash popcorn flower pop fly popinjay green poplar birch poplar borer poplar box poplar-covered poplar-crowned poplar-flanked poplar hawk poplar-leaved poplar-lined poplar-planted poplar worm popper cake poppet leg poppet valve poppy anemone poppy ash poppy bee poppy-bordered poppy-colored poppy-crimson poppy-crowned poppy-flowered poppy-haunted poppy mallow poppy oil poppy-pink poppy-red poppy seed poppy-sprinkled pop safety valve popular-priced pop-up pop valve porcelain clay porcelain glass porcelain green porcelain maker porcelain making porcelain shell porcelain tower porch chair porch climber porch hammock porch lamp porch railing porch rocker porch screen porch seat porch settee porch swing porcupine beater porcupine boiler porcupine crab porcupine disease porcupine fish porcupine grass porcupine man porcupine rat pore fungus pork barrel pork butcher pork chop pork eater pork packer pork pie pork tapeworm porphyry chamber porphyry copper porphyry shell porpoise oil porpoise whale port bar port captain port-caustic port charge portcullis money port differential port duty porte-cochere porteous roll porterhouse steak portia tree portland cement portmanteau word port-mouthed Porto rican Porto rico portrait bust portrait lens port risk insurance Port royal Port-royalist port tack Portugal crakeberry port-vent port-wine port-winy position artillery position buoy position co-ordinate position finder position isomerism position target posset pot poss stick poss tub possum haw possum oak Post-adamic Post-advent postage currency postage-due stamp postage envelope postage label postage stamp Post-alexandrine Post-apostolic Post-apostolical Post-aristotelian Post-armistice post auger Post-augustan Post-augustinian Post-azilian Post-aztec Post-babylonian Post-basket-maker Post-biblical post bill post binder post boat post brake Post-cambrian post captain post car Post-carboniferous post card postcard bander Post-carolingian Post-cartesian post cedar post chaise post chariot Post-chaucerian Post-christian Post-christmas post coach Post-columbian Post-confucian Post-conquest Post-constantinian Post-copernican Post-cretacean Post-cretaceous post croaker Post-crusade Post-darwinian Post-davidic post day Post-devonian Post-diocletian Post-disruption Post-easter Post-elizabethan Post-eocene posterio-occlusion post-factum post-fine post-free Post-galilean Post-gothic Post-hittite Post-homeric post horn post horse post hospital Post-huronian Post-ibsen Post-incarnation posting house post insulator Post-johnsonian Post-jurassic Post-justinian Post-jutland Post-kansan Post-kantian Post-lafayette Post-leibnitzian Post-lent post locust Post-marxian postmaster general postmaster-generalship Post-medieval Post-mendelian post meridiem Post-mesozoic Post-miocene Post-mishnaic Post-mishnic postmistress-ship post mortem post-mortem clot post-mortem examination Post-mosaic Post-mycenean Post-napoleonic Post-newtonian Post-nicene post note post oak post-oak grape post-obit post-obit bond post octavo post office post-office address post-officer Post-oligocene post-ordinar Post-ordovician Post-paleolithic Post-paleozoic Post-pauline Post-pentecostal Post-permian Post-petrine Post-phidian Post-platonic Post-pleistocene Post-pliocene Post-prophetic Post-pythagorean post race Post-raphaelite Post-reformation Post-renaissance Post-restoration Post-revolutionary post road Post-roman Post-romantic Post-scholastic post school Post-shakespearean post-signer Post-silurian Post-socratic Post-solomonic Post-syrian Post-talmudical post term Post-tertiary Post-theodosian post town post trader Post-transcendental Post-triassic Post-tridentine posture maker posture making Post-vedic Post-victorian Post-volstead pot ale pot arch potash alum potash feldspar potash granite potash hunger potash niter potash soap potassium acid oxalate potassium acid sulphate potassium acid tartrate potassium alum potassium amide potassium bicarbonate potassium bichromate potassium binoxalate potassium bisulphate potassium bitartrate potassium bromide potassium carbonate potassium chlorate potassium chloride potassium chromate potassium cobaltinitrite potassium cyanide potassium dichromate potassium ferricyanide potassium ferrocyanide potassium hydrate potassium hydroxide potassium hypoantimonate potassium hypochlorite potassium iodide potassium manganate potassium nitrate potassium oxalate potassium permanganate potassium persulphate potassium sulphate potassium tetroxalate potato aphid potato ball potato bean potato beetle potato blight potato cake potato canker potato chips potato fern potato flour potato fork potato fungus potato hook potato masher potato mosaic potato mottle potato murrain potato onion potato peeler potato race potato scab potato set potato-sick potato tree potato vine potato wart potato weevil potato whisky potato worm pot barley pot bottom pot-bound pot cheese potcher engine potcher man pot-clay pot-color pot companion pot culture pot derby pot earth potent-counterpotent pot fisher pot fisherman pot furnace pot garden pot kiln pot lace pot layering pot lead pot liquor pot metal pot plant pot roast pot-rustler pot-shaped pot shot pot-sick pot still potter bee potter wasp pottery tissue pottery tree pottle-bellied pottle-bodied pottle-crowned pottle-deep pottle pot pot-valiancy pot-valiant pot-valiantly pot-valiantry pot-valliance pot-valor pot-valorous pot valve pot-wabbler pot-walloper pot-walloping pot wheel pot-wobbler pouch bone pouch-shaped poulard wheat poulette sauce poultry breeder poultry breeding poultry buyer poultry car poultry culture poultry dealer poultry dresser poultry dressing poultry fancier poultry fancying poultry farm poultry farmer poultry farming poultry feed poultry grower poultry house poultry husbandry poultry judging poultry keeper poultry keeping poultry raiser poultry raising poultry rearing poultry shop poultry show poultry stall poultry tick poultry wire poultry yard pounce box pounce paper pouncet box pounce tree pouncing paper pound boat pound brush pound degree pound-folly pound-foolish pound-foolishness pound-foot pound lock pound net pound sovereign pound sterling pound-trap pourer-off pourer-out pour plate pour point pour test pousse-cafe poverty birch poverty grass poverty plant poverty-proof poverty-stricken powder barrel powder beef powder-black powder blue powder box powder boy powder charge powder-charged powder chest powder down powder flag powder flask powder-gray powder horn powder house powder keg powder-laden powder magazine powder maker powder-marked powder metallurgy powder mill powder monkey powder pimperlimpimp powder post powder-post beetle powder-posted powder puff powder room powder-scorched powder ship powder-tinged power amplifier power cable power-directional relay power dive power drill power-driven power duster power-elated power engineer power engineering power factor power gas power jack power line power load power loading power loom power meter power-operate power-operated power pack power plant power-plant engineer power-plant engineering power-political power politics power press power pump power punch power rail power relay power-riveting power sawyer power-seeking power shaft power shears power shovel power sprayer power station power stroke power supply power transformer power tube power vessel power weaver pox-marked practical joke practical joker practice curve practice-teach practice teacher praedium dominans praedium serviens praemunientes clause praemunientes writ prairie acacia prairie artichoke prairie aster prairie chicken prairie clover prairie dog prairie falcon prairie fire prairie goose prairie hen prairie itch prairie june grass prairie larkspur prairie owl prairie poppy prairie rocket prairie sage prairie schooner prairie violet praise-begging praise-deserving praise-fed praise-giving praise meeting praise-spoiled praise-winning prayer-answering prayer bead prayer book prayer carpet prayer-clenched prayer flag prayer-granting prayer-hearing prayer-lisping prayer-loving prayer meeting prayer mill prayer paper prayer-repeating prayer scarf prayer tower prayer wheel praying cylinder Pre-achaean preacher bird Pre-alfredian Pre-american Pre-ammonite Pre-ammonitish Pre-armistice Pre-arthurian Pre-aryan Pre-assyrian Pre-augustan Pre-augustine Pre-babylonian Pre-baconian Pre-british Pre-buddhist Pre-byzantine Pre-cambrian Pre-cambridge Pre-canaanitic Pre-carboniferous Pre-carolingian Pre-catholic precedent condition Pre-celtic Pre-centennial Pre-chaucerian Pre-chellean Pre-chinese Pre-christian Pre-christianic Pre-christmas precision balance precision barometer precision block precision caliper precision clock precision gauge precision gauge block precision grinding precision instrument precision lathe precision lens precision meter precision punch precision scale precision screw precision tool precision weight Pre-columbian precombustion engine Pre-congregationalist Pre-congress Pre-conquest Pre-copernican Pre-copernicanism precordial anxiety precordial pain precordial region Pre-crusade Precursor society Pre-dantean Pre-darwinian Pre-darwinianism predation pressure Pre-dickensian Pre-dorian Pre-doric Pre-dravidian Pre-dravidic Pre-dutch pre-earthly pre-earthquake Pre-easter pre-eclampsia pre-eclamptic pre-economic pre-economical pre-edit pre-edition pre-editor pre-editorial pre-editorially pre-educate pre-education pre-educational pre-educationally pre-effect pre-effective pre-effectively pre-effectual pre-efficiency pre-efficient pre-efficiently pre-effort pre-elect pre-election pre-elective pre-electric pre-electrical pre-electrically pre-elemental pre-elementary pre-eligibility pre-eligible pre-eliminate pre-elimination pre-eliminator Pre-elizabethan pre-emancipation pre-embarrass pre-embarrassment pre-embodiment pre-embody pre-emergency pre-eminence pre-eminency pre-eminent pre-eminently pre-eminentness pre-emotion pre-emotional pre-emperor Pre-empire pre-employ pre-employee pre-employer pre-employment pre-empt pre-emptible pre-emption pre-emptioner pre-emption right pre-emptive pre-emptively pre-emptor pre-emptory pre-enable pre-enact pre-enaction pre-enclose pre-enclosure pre-encounter pre-encourage pre-encouragement pre-endeavor pre-endorse pre-endorsement pre-endorser pre-energetic pre-energy pre-enforce pre-enforcement pre-engage pre-engagement pre-engineering preen gland Pre-english pre-enjoy pre-enjoyable pre-enjoyment pre-enlarge pre-enlargement pre-enlighten pre-enlightener pre-enlightening pre-enlightenment pre-enlist pre-enlistment pre-enroll pre-enrollment pre-entail pre-entailment pre-enter pre-entertain pre-entertainer pre-entertainment pre-enthusiasm pre-enthusiastic pre-entitle pre-entrance pre-entry pre-enumerate pre-enumeration pre-envelop pre-envelopment pre-environmental pre-epic pre-epidemic pre-epochal pre-equip pre-equipment pre-equity pre-erect pre-erection pre-erupt pre-eruption pre-eruptive pre-escape pre-escort pre-esophageal pre-essay pre-essential pre-establish pre-established pre-establisher pre-establishment pre-esteem pre-estimate pre-estimation pre-estival pre-eter pre-eternal pre-evade pre-evaporate pre-evaporation pre-evaporator pre-evasion pre-evidence pre-evident pre-evidently pre-evite pre-evolutional pre-evolutionary pre-evolutionist pre-exact pre-exaction pre-examination pre-examine pre-examiner pre-excel pre-excellence pre-excellency pre-excellent pre-except pre-exception pre-exceptional pre-exceptionally pre-exchange pre-excitation pre-excite pre-excitement pre-exclude pre-exclusion pre-exclusive pre-exclusively pre-excursion pre-excuse pre-execute pre-execution pre-executor pre-exempt pre-exemption pre-exhaust pre-exhaustion pre-exhibit pre-exhibition pre-exhibitor pre-exile pre-exilian pre-exilic pre-exist pre-existence pre-existent pre-existentiary pre-existentism pre-expand pre-expansion pre-expect pre-expectant pre-expectation pre-expedition pre-expeditionary pre-expend pre-expenditure pre-expense pre-experience pre-experiment pre-experimental pre-expiration pre-explain pre-explanation pre-explanatory pre-explode pre-explosion pre-expose pre-exposition pre-exposure pre-expound pre-expounder pre-express pre-expression pre-expressive pre-extend pre-extensive pre-extensively pre-extent pre-extinction pre-extinguish pre-extinguishment pre-extract pre-extraction pre-fabulous prefect apostolic prefecture apostolic preference share prefernce bond prefernce freight pre-free-trade Pre-french Pre-georgian Pre-german Pre-germanic Pre-gothic Pre-greek Pre-han Pre-hebrew Pre-hellenic Pre-hieronymian Pre-hinduized Pre-hispanic Pre-homeric Pre-inca Pre-incan Pre-incarial Pre-indian Pre irish Pre-islam Pre-islamic Pre-islamite Pre-islamitic Pre-israelite Pre-israelitish Pre-jewish Pre-johannine Pre-johnsonian prejudice-proof pre-judicial pre-judiciary Pre-justinian Pre-koranic Pre-latin Pre-laurentian Pre-linnaean Pre-luciferian Pre-lutheran Pre-malay Pre-malayan Pre-malaysian pre-man Pre-marxian Pre-messianic Pre-methodist premium note premium system Pre-mohammedian Pre-mosaic Pre-moslem Pre-mycenaean Pre-napoleonic Pre-newtonian Pre-noachian Pre-norman Pre-norse Pre-osmanli Pre-paleozoic preparatory school Pre-patrician Pre-pauline prepay station Pre-permian Pre-persian Pre-petrine Pre-pharaonic Pre-phidian Pre-polish Pre-pueblo Pre-puebloan Pre-raphael Pre-raphaelism Pre-raphaelite Pre-raphaelitic Pre-raphaelitish Pre-raphaelitism Pre-reconstruction Pre-reformation Pre-renaissance Pre-restoration Pre-revolution prerogative court prerogative instance prerogative office prerogative writ Pre-roman Pre-sargonic Pre-saxon Presbyterian alliance Pre-semitic presence chamber presentation copy presentation time present-day present-minded Pre-shakespeare Pre-shakespearean president-elect president general president pro tempore Pre-silurian Pre-socratic Pre-solomonic Pre-solonian Pre-spanish press-agent press-agentry press bed press box press boy press bundler press bureau press cake press clipper press clipping press cloth press copy press corrector press correspondent press drill pressed beef presser bar presser foot presser shoe presser wheel press feeder press fit press fitter press-forge press gallery press gang pressing boards pressing iron press iron press-made press-noticed press operator press release press-ridden press roll press tender pressure atrophy pressure blower pressure boiler pressure bottle pressure box pressure coil pressure cooker pressure element pressure evaporator pressure fan pressure filter pressure-fixing pressure gauge pressure governor pressure gradient pressure group pressure hull pressure ice pressure indicator pressure nozzle pressure producer pressure pump pressure-reciprocating pressure recorder pressure-reducing pressure register pressure-regulating pressure regulator pressure-relief ring pressure-relieving pressure ridge pressure saucepan pressure sense pressure siphon pressure spot pressure spring pressure stage pressure syllable pressure tank pressure-testing pressure tube pressure valve pressure warrant pressure wire prestation money presto change presto chango Pre-sumerian Pre-syrian preterite-present preterito-presential preterit-present Pre-tertiary Pre-thanksgiving pretium puellae Pre-tridentine pretty-behaved pretty-by-night pretty-faced pretty-footed pretty-humored pretty-looking pretty-mannered pretty-pretty pretty-spoken pretty-toned pretty-witted Pre-tudor preventer plate prevention-proof Pre-victorian Pre-virgilian Pre-volstead pribble-prabble price current price-cutting price-deciding price-enhancing price-fixing price index price level price list price-lowering price-raising price-reducing price-ruling price-stabilizing prick ear prick-eared pricking-up pricking wheel prickle cell prickle-cone pine prickle grass prickly-finned prickly-fruited prickly grass prickly heat prickly-lobed prickly-margined prickly-seeded prickly-toothed prick mark prick post prick punch prick shaft prick shooting prick song prick wheel pride-blind pride-blinded pride-bloated pride-fed pride-inflamed pride-inspiring pride-ridden pride-sick pride-swollen priest-astronomer priest-baiting priest-catching priest-doctor priest-dynast priest-educated priest-guarded priest-harboring priest-hating priest-hermit priest hole priest-king priest-knight priest-led priest-monk priest-noble priest-philosopher priest-poet priest-prince priest-prompted priest-ridden priest-riddenness priest-ruler priest-statesman priest-surgeon priest vicar priest-wrought prima donna prima facie prima materia primary scholar primary school prim-behaving prime minister prime-ministerial prime-ministership prime ministry prime mover prime tone priming boiler priming charge prim-lipped prim-looking prim-mannered prim-mouthed prim-notioned primo tenore primrose-colored primrose-decked primrose-dotted primrose green primrose-haunted primrose-leaved primrose-scented primrose-spangled primrose-starred primrose-sweet primrose-tinted primrose tree primrose willow primrose yellow prim-seeming primuline color primuline yellow Primulinus hybrid primus stove prince-abbot prince-angel prince-bishop prince consort prince-duke prince elector prince-general prince-killing prince-poet prince-president prince-priest prince-primate prince-protected prince-proud prince regent prince-ridden prince royal princess pine princess regent princess-ship princess tree prince-teacher prince-trodden print cloth print cutter printing frame printing-in printing ink printing machine printing office printing-out printing press print-out print shop print trimmer prism binocular prism diopter prism glass prism level prism spectroscope prism telescope prison bird prison-bound prison breach prison-bred prison-bursting prison-caused prison-escaping prison-free prison house prison-made prison-making prison psychosis prison-taught prisse papyrus prittle-prattle private checker private school privation-proof privet adelia privet andromeda privet honeysuckle privy council privy councilor privy-councilship prize court prize crew prize fight prize fighter prize fighting prize-giving prize money prize-playing prize ring prize-taking prize winner prize-winning Pro-abyssinian Pro-african Pro-alabaman Pro-alaskan Pro-albanian Pro-albertan Pro-algerian Pro-allied Pro-ally Pro-alpine Pro-alsatian Pro-american Pro-americanism Pro-anatolian Pro-anglican Pro-annamese Pro-arab Pro-arabian Pro-arabic Pro-argentina Pro-argentinian Pro-arian Pro-aristotelian Pro-armenian Pro-arminian pro-art Pro-asian Pro-asiatic Pro-athanasian Pro-athenian Pro-atlantic Pro-australian Pro-austrian Pro-azorian probability curve Pro-baconian Pro-bahamian Pro-balkan Pro-baptist probate bond probate court probate duty probation officer Pro-bavarian Probe-bibel Pro-belgian probe-pointed Pro-berlin Pro-berlinian Pro-bermudian probe scissors Pro-bessarabian Pro-biblic Pro-biblical probirth-control Pro-boer Pro-boerism Pro-bohemian Pro-bolivian Pro-bolshevik Pro-bolshevism Pro-bolshevist Pro-bonapartean Pro-bonapartist proboscis monkey Pro-bosnian Pro-bostonian Pro-brahman Pro-brazilian Pro-british Pro-britisher Pro-britishism Pro-briton Pro-bryan Pro-buddhist Pro-buddhistic Pro-bulgarian Pro-burman pro-bus Pro-byronic Pro-byzantine Pro-caesar Pro-caesarian Pro-caledonian Pro-californian Pro-calvinism Pro-calvinist Pro-calvinistic Pro-calvinistically Pro-canadian Pro-cantabrigian Pro-cantonese Pro-caribbean Pro-carlylean Pro-carolinian Pro-castilian Pro-catalonian Pro-cathedralist Pro-catholic Pro-catholicism Pro-caucasian Pro-celtic process butter processionary moth procession flower process milling process plate process printer process printing process server process shot proces-verbal proces-verbaux Pro-chicagoan Pro-chilean Pro-chinese pro-city Pro-colombian Pro-colonial Pro-confederate Pro-confucian Pro-congressional Pro-continental pro-co-operation Pro-corsican Pro-costa rican Pro-cretan Pro-croatian Pro-cuban procuration fee procurator fiscal procurator-general Pro-cymric Pro-cyprian Pro-czech Pro-czechoslovakian Pro-dalmation Pro-danish Pro-darwinian Pro-darwinism Pro-dominican Pro-dominion Pro-dreyfusard produce race producer gas product engineer production curve production goods production manager Pro-dutch Pro-ecuadorean Pro-egyptian Pro-elizabethan Pro-emersonian Pro-emersonianism Pro-english Pro-entente Pro-episcopal Pro-eskimo Pro-esperantist Pro-esperanto Pro-estonian Pro-ethiopian Pro-euclidean Pro-eurasian Pro-european Pro-evangelical profanity-proof Pro-fascism Pro-fascist Pro-fascisti professor ordinarius proficiency badge profile board profile cutter profile drag profile line profile machine profile map profile paper profiling machine Pro-finnish profit-building profit-making profit-producing profit-seeking profit sharing profit-taking profit-yielding Pro-flemish Pro-florentine Pro-floridian pro forma balance sheet Pro-france Pro-french Pro-freudian Pro-friesian Pro-friesic Pro-gaelic Pro-genoan Pro-gentile Pro-german Pro-germanism Pro-gothic program clock program music Pro-grecian Pro-greek progress chart progress clerk Pro-guatemalan Pro-guianan Pro-guianese Pro-guinean Pro-haitian Pro-hanoverian Pro-hapsburg Pro-hawaiian Pro-hellenic Prohibition party prohibition-proof Pro-hindu Pro-hitler Pro-hitlerism Pro-hitlerite Pro-hohenstaufen Pro-hohenzollern Pro-honduran Pro-hungarian Pro-icelandic pro-immigrationist Pro-indian pro-infinitive Pro-iranian Pro-irish Pro-irishism Pro-italian Pro-jacobean Pro-japanese Pro-japanism Pro-javan Pro-javanese projectile anchor projectile lathe projecting microscope projection booth projection fiber projection machine projection print projection room Pro-jeffersonian Pro-jewish Pro-judaic Pro-judaism Pro-kansan Pro-korean Pro-lamarckian Pro-latin Pro-latinism Pro-latvian Pro-league Pro-leaguer Pro-lettish Pro-liberian Pro-lithuanian Pro-lutheran Pro-macedonian Pro-magyar Pro-maltese Pro-malthusian pro-man Pro-manchukuoan Pro-manchurian Pro-masonic Pro-mediterranean promenade concert promenade deck Pro-methodist Pro-mexican promise-bound promise-breach promise-breaking promise-crammed promise-fed promise-fulfilling promise-keeping promise-led promise-making promise-performing pro-modern Pro-mohammedan Pro-mongolian Pro-mormon Pro-moroccan Pro-moslem prompt dower prompt note Pro-neapolitan prone pressure method Pro-netherlandian prong box prong budding prong chuck prong die prong hoe prong-horned prong key Pro-nicaraguan Pro-nordic Pro-norman Pro-norwegian pro-observance pro-oceanic pro-ode pro-oestrous pro-oestrum pro-oestrys proof armor proof charge proof coin proof-correct proof correction proof leaf proof paper proof plane proof planer proof press proof-proof proof sheet proof spirit pro-opera pro-operation pro-opic pro-opium Pro-oriental pro-orthodox pro-orthodoxical pro-ostracal pro-ostracum pro-otic propaganda-proof Pro-panamanian Pro-paraguayan propeller race propeller shaft Pro-persian property-increment tax property insurance property man property master property owner Pro-peruvian prophet-bard prophet flower prophetico-historical Prophetico-messianic prophet-king prophet-painter prophet-poet prophet-preacher prophet-statesman Pro-philippine prop joint Pro-polish Pro-polynesian Pro-portuguese proposal bond pro-pre-existentiary Pro-presbyterian prop root Pro-protestant Pro-prussian prop word propyl alcohol Pro-quaker pro rata Pro-renaissance Pro-roman Pro-rumanian Pro-russian Pro-salvadoran Pro-samoan Pro-sardinian Pro-saxon Pro-scandinavian proscenium arch proscenium box Pro-scriptural prosecution-proof Pro-semite Pro-semitism prose poem prose poet Pro-serb Pro-serbian prose rhythm Pro-shakespearian Pro-siamese Pro-sicilian pro-skin Pro-slav Pro-slavic Pro-slavonic Pro-southern Pro-soviet Pro-spanish Pro-spartan prospect glass prospective glass prosperity-proof pro-state Pro-sudanese Pro-sumatran Pro-swedish Pro-swiss Pro-syrian Pro-tasmanian protection forest protector paravane protein crystal protein factor protein-free protein milk protein shock protein therapy pro tem pro tempore proteus animalcule Pro-teuton Pro-teutonic Pro-teutonism Proto-apostolic Proto-arabic Proto-armenian Proto-aryan Proto-attic Proto-australian Proto-australoid Proto-babylonian Proto-berber Proto-caucasic Proto-celtic Proto-chaldaic Proto-corinthian Proto-doric Proto-egyptian Proto-elamite Proto-etruscan Proto-european Proto-germanic Proto-gothonic Proto-greek Proto-hattic Proto-hellenic Proto-hittite Proto-indic Proto-ionic Proto-italic Proto-khattish Proto-malay Proto-malayan Proto-mark Proto-matthew Proto-mede Proto-mongol Proto-mycenean Proto-phoenician Proto-polynesian Proto-renaissance Proto-semitic Proto-solutrean Proto-teutonic Pro-tripolitan Pro-tunisian Pro-turk Pro-turkish Pro-tyrolese proud-blind proud-blooded proud-crested proud-exulting proud flesh proud-glancing proud-looking proud-minded proud-mindedness proud-paced proud-pillared proud-prancing proud-quivered proud-spirited proud-stomached Pro-ukrainian Pro-ulsterite Pro-unitarian Pro-uruguayan Pro-venetian Pro-venezuelan pro-vice-chancellor proving ground Pro-virginian provision account provision tree provost court provost guard provost marshal Pro-welsh Pro-western Pro-whig prowl car Proxima centauri proximity fuze Pro-yankee Pro-yugoslavian Pro-zionism Pro-zionist prune purple prune tree pruning hook pruning shears pry pole psalm book psalm singer psalm tone psalm tune pseudo abolitionist pseudo abstainer pseudo academy pseudo acceptance pseudo accident pseudo acid pseudo acquaintance pseudo actor pseudo actress pseudo aesthete pseudo aestheticism pseudo affection Pseudo-african pseudo agent pseudo alliance pseudo ally pseudo alumna pseudo alumnus pseudo amateur Pseudo american pseudo analogy pseudo ancestor pseudo angel Pseudo-angle pseudo animal pseudo animalism pseudo announcement pseudo apology pseudo applicant pseudo application pseudo appointment pseudo appreciation Pseudo-areopagite Pseudo-argentinian pseudo aristocrat Pseudo-aristotelian pseudo arrest pseudo art pseudo artist Pseudo-aryan pseudo asceticism pseudo assertion pseudo association Pseudo-assyrian pseudo astonishment pseudo aunt Pseudo-australian Pseudo-austrian pseudo author pseudo authoress pseudo authorization Pseudo-babylonian pseudo bacillus pseudo banker pseudo bankruptcy pseudo baptism Pseudo-baptist pseudo bard pseudo base Pseudo-belgian pseudo benefactor pseudo benefactress pseudo benevolence pseudo bible pseudo biographer pseudo biography pseudo biology pseudo bird pseudo bishop pseudo boa Pseudo-bohemian Pseudo-bolivian pseudo bookcase pseudo boy Pseudo-brahman Pseudo-brazilian pseudo bride pseudo broker pseudo brokerage pseudo brother Pseudo buddhism Pseudo-buddhist Pseudo-bulgarian Pseudo-callisthenes Pseudo-canadian pseudo cancellation pseudo candidacy pseudo candidate pseudo candor pseudo captive pseudo capture Pseudo-carthaginian pseudo catholic pseudo catholicism pseudo census pseudo champion pseudo championship pseudo charity pseudo chemist pseudo chemistry Pseudo-chilean Pseudo-chinese Pseudo christ Pseudo christian Pseudo christianity Pseudo christology Pseudo-ciceronian pseudo citizen pseudo citizenship Pseudo-clementine pseudo clergy pseudo clergyman pseudo clerk pseudo client pseudo club pseudo college pseudo competitor pseudo conclusion pseudo cone pseudo confession pseudo confessional pseudo confirmation pseudo conflict pseudo connection pseudo consent pseudo conservator pseudo conversion pseudo cook pseudo cordiality pseudo corporation pseudo count pseudo courtesy pseudo courtier pseudo cousin pseudo creditor pseudo crisis pseudo critic pseudo criticism pseudo crystal pseudo cult pseudo cultivation pseudo culture Pseudo-dantesque pseudo date pseudo death pseudo declaration pseudo deficit pseudo delegate pseudo delegation pseudo democracy pseudo deputation pseudo deputy pseudo devotee pseudo devotion pseudo dike Pseudo-dionysius pseudo diplomacy pseudo diplomat pseudo distance pseudo distribution pseudo distributor pseudo divination pseudo divine pseudo divinity pseudo doctor pseudo donation pseudo donor pseudo drama pseudo dramatist pseudo duke Pseudo-dutch pseudo earl Pseudo-east indian pseudo economics pseudo economy pseudo editor pseudo editorial pseudo education pseudo educator Pseudo-egyptian pseudo election pseudo electorate Pseudo-elizabethan pseudo emotion pseudo endeavor Pseudo-english pseudo enthusiasm pseudo enthusiast pseudo episcopacy Pseudo-episcopalian pseudo equality pseudo ethics pseudo etymologist pseudo etymology Pseudo-european pseudo evangelist pseudo example pseudo exemplar pseudo experiment pseudo expert pseudo exposure pseudo fabric pseudo failure pseudo faith pseudo fame pseudo farmer pseudo farming pseudo father pseudo femininity pseudo feminism pseudo feminist pseudo fertilization pseudo finality pseudo flatterer pseudo flattery pseudo form Pseudo-french pseudo fruit pseudo generosity pseudo geniality pseudo genius pseudo gentility pseudo gentleman Pseudo-georgian Pseudo-german pseudo geyser pseudo ghost Pseudo-gothic Pseudo-grecian Pseudo-greek pseudo healer pseudo heart pseudo heathen pseudo hero Pseudo-hindu Pseudo-hittite Pseudo-homeric pseudo humanism pseudo humanist pseudo humanitarian Pseudo-hungarian pseudo husband pseudo identity pseudo impartiality Pseudo-incan pseudo independence Pseudo-indian pseudo information pseudo insanity pseudo inspiration pseudo internationalism pseudo internationalist pseudo invalid pseudo invalidism pseudo-ionone Pseudo-iranian Pseudo-irish Pseudo-isidore Pseudo-isidorian pseudo island pseudo isle pseudo-isometric Pseudo-italian Pseudo-japanese pseudo jaundice pseudo judge pseudo judgment Pseudo-junker pseudo justice pseudo knight pseudo label pseudo learning pseudo legality pseudo legend pseudo legislation pseudo legislator pseudo liberalism pseudo liberality pseudo liquidation pseudo literature pseudo loan pseudologia phantastica pseudo lord pseudo mahogany pseudo marble pseudo marquis pseudo marriage pseudo martyr pseudo martyrdom pseudo masculinism pseudo masculinity pseudo masterpiece Pseudo-mayan pseudo medievalism pseudo meditation pseudo member pseudo membership pseudo memory pseudo messenger Pseudo-messiah Pseudo-messianic Pseudo-methodist Pseudo-mexican pseudo militarism Pseudo-miltonic pseudo minister pseudo ministry pseudo miracle pseudo modesty Pseudo-mohammedan Pseudo-mohammedanism pseudo monastery Pseudo-mongolian pseudo monk pseudo moralist pseudo morality Pseudo-moslem pseudo myth pseudo narcotism pseudo nationalism pseudo nobility pseudo noble Pseudo-norwegian pseudo nymph pseudo-occidental pseudo occidentalism pseudo occupation pseudo official pseudo officialism Pseudo-oriental pseudo orientalism pseudo-orthorhombic pseudo-osteomalacia pseudo owner pseudo pagan Pseudo-panamanian pseudo-papal pseudo parallel pseudo parasite pseudo parent pseudo parson pseudo participation pseudo partner pseudo partnership pseudo pastor pseudo pastorate pseudo patriot pseudo patriotism pseudo patron pseudo patronage pseudo payment pseudo peasant pseudo peasantry Pseudo-persian pseudo philanthropist pseudo philanthropy pseudo philologist pseudo philology pseudo philosopher pseudo philosophy pseudo physician pseudo piety pseudo pigmentation Pseudo-pindaric pseudo poet pseudo poetess pseudo poetry Pseudo-polish pseudo politician pseudo politics pseudo popularity pseudo possession pseudo possessor pseudo poverty pseudo precedent Pseudo-presbyterian pseudo prescription pseudo presentiment pseudo priest pseudo priesthood pseudo prince pseudo principality pseudo profession pseudo professor pseudo prohibition pseudo prohibitionist pseudo prophecy pseudo prophet pseudo prophetess pseudo prosperity pseudo psychologist pseudo psychology pseudo purity pseudo ray pseudo realism pseudo recognition pseudo recollection pseudo reconciliation pseudo reform pseudo reformation pseudo reformatory pseudo reformer pseudo registration pseudo relation pseudo relationship pseudo relative pseudo religion pseudo republic Pseudo-republican pseudo residence pseudo resident pseudo resignation pseudo reversal pseudo rheumatism Pseudo-roman pseudo romanticism pseudo royal pseudo royalty Pseudo-russian pseudo sacrilege pseudo saint pseudo saintliness pseudo sanctity pseudo sanctuary pseudo satire pseudo satirist pseudo scholar pseudo scholarship pseudo science pseudo scientist Pseudo-semitic pseudo sensation pseudo sense pseudo sensibility Pseudo-serbian pseudo servility pseudo servitor pseudo servitude Pseudo-shakespearean pseudo signature pseudo siphon pseudo slavery pseudo socialism pseudo socialist Pseudo-socratic Pseudo-south african Pseudo-spanish pseudo specialist pseudo specialty pseudo specter pseudo spirit pseudo spirituality pseudo statement pseudo stem pseudo student pseudo subtlety pseudo suicide Pseudo-swedish pseudo symptom pseudo temperance pseudo theft pseudo tribe pseudo tribulation pseudo tribute Pseudo-turk Pseudo-turkish pseudo-uniseptate pseudo university pseudo-urate pseudo-urea pseudo-uric Pseudo-vergilian Pseudo-victorian pseudo virgin pseudo witness pseudo worship pseudo zeal P-shaped P station psycho-asthenics psychopathia sexualis ptomaine poisoning P-tongue P trap pubertal gland puberty gland public enemy public health public house publicity law publicity manager publicity-proof public law public librarian public library public-minded public-mindedness public nuisance public-official bond public-opinion poll public orator public school public servant public service public speaker public speaking public-spirited public-spiritedly public-spiritedness public-voiced public works puce oxide pudding bag pudding face pudding-faced pudding grass pudding-shaped pudding sleeve pudding stone pudding time puddle ball puddle bar puddle duck puddle rolls puddle wall puddling furnace Pueblo indian puerperal fever Puerto rican Puerto rico puff adder puff box puffer pipe puff-fish puff-leg puff paste puff-puff puff shark puff sleeve pug dog pug-faced pug head pug knife pug moth pug nose pug-nosed pug-pile pug piling puke-stocking pullboat logging pull box pull broach pull-drive puller-in puller-out pullet disease pulley block pulley chain pulley frame pulley lathe pulley oiler pulley-shaped pulley stile pulley tap pulling-out pull-in torque pull lamp holder pull-off pull-on pull-out pull-out torque pull-over pull pin pull station pull strap pull switch pull-through pull-through torque pull-up pully-haul pully-hauly pulp canal pulp cavity pulp chamber pulp engine pulpit cloth pulpit cross pulpit rock pulp lead pulp machine pulp nodule pulsation pump pulsation theory pulse deficit pulse family pulse glass pulse-jet engine pulse rate pulse-time modulation pulse wave pulsion diverticulum pulvering day pulverizer harrow pumice soap pumice stone pump-back method pump bob pump brake pump cylinder pump doctor pump drill pump gun pump handle pump-handler pump house pumping-back method pumping engine pumpkin ash pumpkin head pumpkin-headed pumpkin pine pumpkin seed pumpkin-seed oil pumpkin tree pump rod pump room pump sole pump spear pump staff pump well puna grass punch barrel punch bowl punch cutter punch-drunk punch holder punch house punching machine punching press punch ladle punch line punch mark punch-marked punch pliers punch press puncture vine puncture voltage pungent meadow grass punishment-proof punitive sanction punkah wallah punk oak punk tree punner bar punt formation punt gun punto reverso punt shooter punt shooting pupa-shaped pupa shell pupil hour pupil teacher pupil-teacherdom pupil-teachership pupil teachery puppet play puppet player puppet show puppet valve puppy drum puppy love pup tent purchase book purchase journal purchase ledger purchase money purchase record purchase shears purchasing agent purchasing power pure-blooded pure-bosomed pure-dye pure-eyed pure-food law pure line pure-minded purgatory hammer purification flower purine base purity rubric purl stitch purple-awned purple-awned oat grass purple-backed purple-beaming purple beard grass purple bent purple-berried purple-black purple-blue purple-brown purple-clad purple-coated purple-colored purple-crimson purple-dawning purple-dyeing purple-eyed purple-faced purple fish purple fishery purple-flowered purple-fringed purple-glowing purple-green purple-headed purple-hued purple-leaved purple melick grass purple-nosed purple oat purple-red purple-robed purple-rose purple-skirted purple-spiked purple-spotted purple-staining purple-stemmed purple-streaked purple-streaming purple-tailed purple-tipped purple-top purple-topped purple-veined purple-vested purple wood grass purple-yellow purpose clause purre maw purse bearer purse crab purse cutter purse cutting purse-eyed purse isinglass purse line purse-lined purse-lipped purse-mad purse maker purse net purse-pinched purse pride purse-proud purse race purse ring purse rope purse seine purse-shaped purse silk purse-snatching purse spider purse string purse-string suture purse-swollen purse weight purslane speedwell purslane tree pursuit airplane pursuit pendulum pursuit plane pursuit squadron pus cell push bicycle push bolt push broach push button push car pusher airplane pusher grade push fit push hoe push moraine push-off push-out chuck push-pull pus pan puss clover puss moth pussy clover pussy willow pustula maligna put-off put-on put-out put-put put-putter putter-forth putter-in putter-off putter-on putter-out putter-through putter-up putting cleek putting green putting stone putty coat putty-colored putty eye putty-faced putty gloss putty-jointed putty knife putty-looking putty powder putty-powdered putty-stopped put-up put-upon puzzle box puzzle-brain puzzle canon puzzle-cap puzzle lock puzzle-monkey puzzle-wit pygmy-minded pyramid flower pyramid plant pyramid-shaped pyramid shell pyrethrum yellow pyrite type pyrite yellow pyritohedral group pyrogallol monoacetate pyrometer cone pyroxene group pyroxylin plastic pyrrole red pyx cloth pyx-jury Q-celt Q-celtic Q-group Q-language Q-shaped Q-ship quack grass quad crown quad demy quad large quad line quadrant compass quadrant electrometer quadrant plate quadrature component quadri-invariant quadrille ruling quadrimum merum quad royal quad small quail brush quail call quail dove quail hawk quail pipe quail snipe quaint-costumed quaint-eyed quaint-felt quaint-looking quaint-notioned quaint-shaped quaint-spoken quaint-stomached quaint-witty quaint-worded quake grass quake ooze quaker-colored quaker moth quaking grass quality binding quality curve quality factor qualm-sick quandong nut quantity mark quantity production quantity surveying quantity surveyor quantity theorist quantity theory quantum liquid quantum-mechanical quantum mechanics quantum number quantum theory quarantine flag quarantine period quarry bed quarry face quarry-faced quarry light quarry miner quarry-rid quarrystone bond quarter ail quarter belt quarter bend quarter bill quarter binding quarter blanket quarter block quarter boot quarter-bound quarter box quarter-breed quarter butt quarter cask quarter-cast quarter-cleft quarter-cut quarter-day quarter-deck quarter-decker quarter-dollar quarter evil quarter face quarter-faced quarter fast quarter-final quarter-finalist quarter-foot quarter galley quarter grain quarter-hollow quarter horse quarter-hour quarter ill quarter-inch quarter iron quarter-left quarter lift quarter light quarter line quartermaster sergeant quarter-mile quarter miler quarter-minute quarter-month quarter-moon quarter nelson quarter note quarter-phase quarter pillar quarter-pint quarter pitch quarter plate quarter point quarter-pound quarter rail quarter rest quarter-right quarter round quarter-run quarter screw quarter-second quarter section quarter sessions quarter-sheet quarter-size quarter step quarter tie quarter tone quarter-vine quarter watch quarter-wave quarter-yard quarter-year quarter-yearly quartet table quarto-centenary quart pot quartz-basalt quartz battery quartz-diorite quartz flint quartz-free quartz glass quartz lamp quartz-light therapy quartz mill quartz mining quartz-monzonite quartz plate quartz porphyry quartz rock quartz sand quartz schist quartz-syenite quartz vein quartz wedge quasi-absolute quasi-absolutely quasi-academic quasi-acceptance quasi accident quasi-accidental quasi acquaintance quasi-active quasi actor quasi-adequate quasi adjective quasi adjustment quasi admiration quasi adoption quasi-adult quasi advantage quasi adverb quasi advice quasi advocate quasi affection quasi-affirmative quasi agreement quasi alarm quasi alliance quasi-alternative quasi alumnus quasi amateur quasi amendment Quasi american quasi-amiable quasi amusement quasi-ancient quasi angel quasi animal quasi answer quasi-antique quasi-anxious quasi apology quasi appeal quasi application quasi appointment quasi appreciation quasi-appropriate quasi approval quasi architect quasi argument quasi aristocracy quasi aristocrat quasi army quasi arrangement quasi art quasi artist quasi-aside quasi-asleep quasi aspiration quasi asset quasi assignment quasi assistance quasi assurance quasi asylum quasi athlete quasi attachment quasi attack quasi attainment quasi attempt quasi attendant quasi attention quasi attorney quasi auditor quasi-authentic quasi author quasi authority quasi-authorized quasi-automatic quasi-awful quasi baby quasi-bad quasi ballot quasi bank quasi banker quasi-bankrupt quasi bankruptcy quasi banquet quasi baptism quasi bargain quasi basis quasi battle quasi beginner quasi belief quasi-beneficial quasi beneficiary quasi benevolence quasi-benevolent quasi biography quasi bird quasi blessing quasi-blind quasi blockade quasi blunder quasi body quasi-brave quasi-brilliant quasi broker quasi-bronze quasi brother quasi calamity quasi caller quasi-calm quasi cancellation quasi-candid quasi candidate quasi candor quasi-capable quasi captain quasi-careful quasi cause quasi celebration quasi certificate quasi champion quasi-characteristic quasi charity quasi cheer quasi chemistry quasi circulation quasi citizen quasi civilization quasi clairvoyance quasi-classic quasi client quasi climax quasi club quasi collapse quasi collateral quasi collection quasi collector quasi college quasi-collegiate quasi colloquial quasi combat quasi comedy quasi comfort quasi-comic quasi command quasi-commercial quasi-common quasi compact quasi competition quasi competitor quasi-complete quasi-complex quasi compliance quasi compliment quasi-compound quasi comprehension quasi compromise quasi-compulsory quasi concern quasi concession quasi conclusion quasi conference quasi confession quasi-confident quasi-confidential quasi confinement quasi confirmation quasi conflict quasi conformance quasi-congenial quasi congratulation quasi congress quasi conjunction quasi connection quasi conquest quasi conscience quasi-conscientious quasi-conscious quasi consent quasi consequence quasi-conservative quasi consideration quasi consignment quasi-consistent quasi consolation quasi consolidation quasi-constant quasi constitution quasi-constitutional quasi construction quasi-constructive quasi consulatation quasi consumption quasi contempt quasi contest quasi continent quasi-continual quasi continuation quasi-continuous quasi contract quasi-contrary quasi contrast quasi contribution quasi control quasi convenience quasi-convenient quasi convention quasi conversation quasi-converted quasi conveyance quasi conviction quasi-convinced quasi cook quasi co-operation quasi copula quasi-cordial quasi corporateness quasi corporation quasi-correct quasi correction quasi council quasi coupon quasi court quasi-courteous quasi courtesy quasi cousin quasi craft quasi creation quasi credit quasi creditor quasi crime quasi-criminal quasi crisis quasi-critical quasi criticism quasi cultivation quasi culture quasi-cunning quasi currency quasi customer quasi-cynical quasi damage quasi-dangerous quasi-daring quasi-deaf quasi debt quasi decision quasi declaration quasi decoration quasi dedication quasi default quasi defeat quasi defiance quasi deficit quasi-definite quasi definition quasi-deify quasi dejection quasi delegate quasi-deliberate quasi-delicate quasi delict quasi-delighted quasi demand quasi democrat quasi-democratic quasi-dependence quasi deposit quasi depreciation quasi depression quasi deputy quasi-desolate quasi despair quasi-desperate quasi-despondent quasi destination quasi destruction quasi detention quasi-determine quasi development quasi devil quasi-devoted quasi devotion quasi diamond quasi difference quasi-difficult quasi-dignified quasi dinner quasi diplomacy quasi-diplomatic quasi disadvantage quasi disappeance quasi disaster quasi discipline quasi discovery quasi-discreet quasi discrimination quasi disgrace quasi disgust quasi dismissal quasi-distant quasi distress quasi distribution quasi diversion quasi division quasi dominion quasi donation quasi-double quasi doubt quasi drama quasi-dramatic quasi-dreadful quasi-dumb quasi-duplicate quasi-dutiful quasi-dying quasi-eager quasi earnings quasi easement quasi-economic quasi economy quasi education quasi-educational quasi-effective quasi-efficient quasi-elaborate quasi election quasi-elementary quasi-eligible quasi-eloquent quasi-eminent quasi emperor quasi emphasis quasi employment quasi-empty quasi-endless quasi endorsement quasi enemy quasi-energetic quasi enforcement quasi engagement Quasi english Quasi englishman quasi enrollment quasi entertainment quasi enthusiasm quasi-enthusiastic quasi envy quasi-episcopal quasi-equal quasi-equitable quasi-equivalent quasi error quasi escape quasi-essential quasi-established quasi estimation quasi-eternal quasi-ethical quasi-everlasting quasi evidence quasi-evil quasi-exact quasi-exceptional quasi-excessive quasi exchange quasi exclusion quasi excuse quasi executive quasi-exempt quasi exertion quasi exile quasi-existent quasi expectation quasi-expedient quasi expenditure quasi expense quasi experience quasi expert quasi explanation quasi-explicit quasi export quasi exposure quasi expression quasi-external quasi-exterritorial quasi-extraterritorial quasi-extreme quasi fact quasi factor quasi factory quasi faculty quasi failure quasi-fair quasi faith quasi-faithful quasi-false quasi-familiar quasi-famous quasi farewell quasi farmer quasi fascination quasi-fashionable quasi-fatal quasi favor quasi-favorable quasi-federal quasi fee quasi-feudal quasi fiction quasi-final quasi-financial quasi-fireproof quasi-fiscal quasi-fit quasi flight quasi-foolish quasi force quasi-foreign quasi-forgetful quasi-forgotten quasi-formal quasi-formidable quasi-fortunate quasi-frank quasi-fraternal quasi-free Quasi french quasi friend quasi fulfillment quasi-full quasi-gallant quasi-gaseous quasi-gay quasi gem quasi-generous quasi genius quasi-genteel quasi gentleman quasi-genuine Quasi german quasi gift quasi-glad quasi-glorious quasi glory quasi-good quasi-gracious quasi graduate quasi-grateful quasi-grave quasi-great Quasi greek quasi grief quasi growth quasi guarantee quasi guest quasi guilt quasi-habitual quasi handicap quasi-happy quasi hardship quasi harm quasi health quasi-hearty quasi heir quasi help quasi-hereditary quasi hero quasi-heroic quasi hesitation quasi historian quasi-historic quasi-historical quasi history quasi holiday quasi-honest quasi honor quasi horror quasi-human quasi-humble quasi-humorous quasi-ideal quasi-identical quasi identification quasi ignorance quasi illness quasi-immediate quasi-immortal quasi-impartial quasi import quasi-important quasi improvement quasi incentive quasi inclination quasi-inclusive quasi increase quasi-independent Quasi indian quasi indifference quasi-indifferent quasi inducement quasi indulgence quasi-industrial quasi-inevitable quasi inference quasi-inferior quasi-infinite quasi-influential quasi-informal quasi information quasi inheritance quasi initiation quasi injury quasi injustice quasi innocence quasi-innocent quasi-innumerable quasi inquiry quasi insight quasi-insistent quasi inspection quasi inspiration quasi installation quasi institution quasi instruction quasi insult quasi integrity quasi-intellectual quasi-intelligent quasi intention quasi interest quasi interference quasi-internal quasi-international quasi interview quasi-intimate quasi-intolerable quasi introduction quasi-intuitive quasi invasion quasi investigation quasi-invisible quasi invitation quasi invoice quasi-irregular Quasi-jacobean Quasi japanese Quasi jew Quasi-jewish quasi-jocose quasi-jointly quasi judge quasi judgment quasi-judicial quasi justice quasi justification quasi-kind quasi kindred quasi king quasi knowledge quasi labor quasi-laborious quasi lady quasi lament Quasi latin quasi-lawful quasi league quasi legacy quasi-legal quasi legality quasi-legally quasi legislation quasi-legislative quasi-legitimate quasi liability quasi-liberal quasi liberty quasi limit quasi-literary quasi literature quasi-living quasi loan quasi-logical quasi lord quasi loss quasi-loyal quasi luxury quasi-mad quasi magic quasi maintenance quasi majority quasi-malicious quasi management quasi manager quasi-marble quasi market quasi masterpiece quasi-material quasi maximum quasi-mechanical quasi-medical quasi-medieval quasi melancholy quasi member quasi memory quasi-mental quasi-mercantile quasi mercy quasi merit quasi message quasi-metaphysical quasi method quasi-mighty quasi-military quasi millionaire quasi minimum quasi minister quasi miracle quasi-miraculous quasi misery quasi mishap quasi missionary quasi-modern quasi-modest quasi monopoly quasi-moral quasi-mourning quasi-municipal quasi-musical quasi-mutual quasi mystery quasi-mythical quasi-nameless quasi-national quasi-native quasi-natural quasi navy quasi-nebulous quasi-necessary quasi need quasi-negative quasi neglect quasi negligence quasi neighbor quasi-neutral quasi neutrality quasi-new quasi news quasi nobleman quasi nomination quasi-normal quasi-notarial quasi notice quasi novel quasi-nuptial quasi obedience quasi-obedient quasi objection quasi objective quasi obligation quasi observance quasi observation quasi obstacle quasi occupation quasi offense quasi offer quasi official quasi omission quasi opponent quasi opposition quasi optimist quasi orator quasi-ordinary quasi-organic quasi-oriental quasi-original quasi outrage quasi owner quasi ownership quasi painter quasi panic quasi paradise quasi pardon quasi participation quasi partisan quasi-passive quasi-pathetic quasi-patient quasi-patriarchal quasi-patriotic quasi patron quasi payment quasi-peaceful quasi penalty quasi-perfect quasi perfection quasi-periodic quasi-permanent quasi-perpetual quasi person quasi-personal quasi perusal quasi philosopher quasi-philosophical quasi-physical quasi-pious quasi pity quasi-plausible quasi plea quasi pleasure quasi pledge quasi plenty quasi poem quasi-poetic quasi policy quasi-political quasi politician quasi-poor quasi-popular quasi-positive quasi possession quasi poverty quasi power quasi-practical quasi praise quasi-precedent quasi preference quasi prejudice quasi preparation quasi prepositional quasi pressure quasi prestige quasi prevention quasi principal quasi principle quasi prisoner quasi-private quasi privilege quasi-probable quasi problem quasi product quasi profit quasi progress quasi prohibition quasi promise quasi-prompt quasi-proof quasi prophecy quasi proposal quasi prosecution quasi prosperity quasi protection quasi-proud quasi-provincial quasi provocation quasi-public quasi punishment quasi pupil quasi-pupillary quasi purchase quasi purity quasi pursuit quasi qualification quasi quarantine quasi quarrel quasi quotation quasi-radical quasi-rational quasi reality quasi realization quasi reason quasi-reasonable quasi rebellion quasi receipt quasi-recent quasi recognition quasi recollection quasi reconciliation quasi record quasi recreation quasi reduction quasi reference quasi refinement quasi reform quasi refusal quasi registration quasi-regular quasi rejection quasi-reliable quasi relief quasi religion quasi-religious quasi-remarkable quasi remedy quasi reminder quasi remittance quasi remorse quasi renewal quasi rent quasi repair quasi replacement quasi reply quasi report quasi representative quasi-republican quasi request quasi requirement quasi rescue quasi residence quasi resident quasi resistance quasi-respectable quasi response quasi-responsible quasi restoration quasi result quasi retirement quasi revolution quasi reward quasi-ridiculous quasi-righteous quasi rival quasi romance quasi-royal quasi-rural quasi-sad quasi-safe quasi safety quasi sagacity quasi saint quasi sale quasi salvation quasi sanction quasi-sanguine quasi sarcasm quasi-sarcastic quasi satisfaction quasi-savage quasi savings quasi scarcity quasi scholar quasi-scholastic quasi science quasi-scientific quasi search quasi-secret quasi-secure quasi sentence quasi sentiment quasi-serious quasi-seriously quasi seriousness quasi service quasi settlement quasi severalty quasi shortage quasi signature quasi-similar quasi-sincere quasi sincerity quasi-single quasi skill quasi slander quasi-sober quasi socialist quasi soldier quasi solution quasi sonnet quasi sovereign quasi space Quasi spaniard Quasi spanish quasi-spatial quasi specialist quasi sphere quasi spirit quasi-spiritual quasi sport quasi standard quasi starvation quasi statesman quasi-stationary quasi-strenuous quasi strike quasi student quasi-stylish quasi subject quasi submission quasi success quasi-sufficient quasi suggestion quasi-superficial quasi-superior quasi supervision quasi support quasi suppression quasi sympathy quasi system quasi-tangent quasi-tangible quasi teacher quasi-technical quasi temperance quasi-temporal quasi-territorial quasi-testamentary quasi testimony quasi thanks quasi-theatrical quasi-thorough quasi threat quasi toleration quasi-total quasi tradition quasi tragedy quasi translation quasi trial quasi-tribal quasi triumph quasi trustee quasi truth quasi-typical quasi tyranny quasi-ultimate quasi-unanimous quasi-unconscious quasi union quasi unity quasi-universal quasi university quasi-uplift quasi usufruct quasi utility quasi vacation quasi-valid quasi valuation quasi value quasi-venerable quasi verdict quasi victim quasi victory quasi vigilance quasi violation quasi violence quasi-violent quasi virtue quasi-vital quasi vocation quasi volunteer quasi wager quasi war quasi-warfare quasi warrant quasi weakling quasi wealth quasi whisper quasi-wicked quasi-willing quasi wisdom quasi witness quasi wonder quasi worship quasi-wrong quasi-young quasi zeal quaternion algebra quaternion unit quatre point quatre premiers quay punt quean-cat queen bee queen blue queen bolt queen butterfly queen cactus queen cage queen cat queen cattleya queen cell queen closer queen conch queen consort queen dowager queen excluder queen fern queen fritter queen gold queen mother queen note queen olive queen post queen-post truss queen regent queen regnant queen rod queen shell queen snake queen stitch queen truss queer cuffin queer-eyed queer-faced queer-headed queer-legged queer-looking queer-made queer-notioned queer-shaped queer-spirited queer-tempered queez-madam quench hook quenching bath quenouille training quercitron lake quercitron oak query mark question-begging question-mark question stop quia-quia quick-acting quick bread quick-break switch quick-burning quick-change quick-coming quick-compounded quick-conceiving quick-decaying quick-designing quick-devouring quick-drawn quick-eared quickening grass quicken tree quick-fading quick-falling quick-fire quick-firer quick-flowing quick-freeze quick-freezing quick-glancing quick-gone quick-growing quick-guiding quick-gushing quick-handed quick-laboring quick-minded quick-moving quick-nosed quick-paced quick-piercing quick-questioning quick-raised quick-returning quick-rolling quick-running quick-saver quick-scenting quick-selling quick-setting quick-shifting quick-shutting quick-sighted quick-sightedness quicksilver weed quick-speaking quick-spirited quick-spouting quickstep march quick-stepping quick stick quick-talking quick-tempered quick-thoughted quick-thriving quick time quick-voiced quick water quick-winged quick-witted quick-wittedly quick-wittedness quick-wrought quiet-colored quiet day quiet-dispositioned quiet-eyed quiet-going quiet hour quiet-living quiet-looking quiet-mannered quiet-minded quiet-moving quiet-patterned quiet-seeming quiet-spoken quiet-tempered qui-hi quill bark quill bit quill drive quill driver quill driving quill fern quill fly quill gear quill-less quill-like quill nib quill pig quill-tailed quilting cotton quince curculio quince-seed mucilage quince yellow quinhydrone electrode quinine bush quinine cherry quinine flower quinine herb quinine plant quinine tree quinoline dye quinoline yellow quinone diazide quinone oxime quinova bitter quinque-angle quinque-angled quinque-angular quinque-annulate quinque-articulate quinsy woodruff quintuple-nerved quintuple point quintuple-ribbed quirk bead quirk molding quitch grass quitter bone quiver tree quizzing glass quobosque-weed quoin post quota immigrant quota system quotation board quotation mark quotation noun quote mark quotient verdict quo warranto Q wedge Q-wedge compensation rabbet joint rabbet plane rabbet-shaped rabbit-backed rabbit bandicoot rabbit breeder rabbit brush rabbit cat rabbit-chasing rabbit-ear rabbit-eared rabbit-ear faucet rabbit-faced rabbit fever rabbit fish rabbit flower rabbit-foot rabbit-foot clover rabbit-foot grass rabbit louse rabbit-meat rabbit moth rabbit-mouthed rabbit punch rabbit-shouldered rabbit squirrel rabbit stick rabbit-tail grass rabbit tick rabbit tobacco rabbit warren rabble-charming rabble-chosen rabble-courting rabble-curbing rabble-rousing raccon dog raccoon fox raccoon grape raccoon oyster raccoon perch race-begotten race board race boat race cloth race cup race glass race ground race horse racehorse grass race knife race-maintaining race memory race plate race problem race psychology race-riding race riot race rotation race runner race-running race stand race suicide race tool race track race week race-wide race-winning racing crab racing glass racing iron racing plate rack bar rack block rack car rack comb racket court racket wheel rack pillar rack pin rack punch rack rail rack railway rack-rent rack-renter rack saw rack wheel racomo-oxalic radial-flow turbine radiant-heat brooder radiate-veined radiation fog radiation pressure radiation pyrometer radiation sickness radiator cap radiator casing radiator compound radiator core radiator foot radiator gauge radiator maker radiator making radiator tank radiator valve radiato-undulate radio beacon radio beam radio bearing radio channel radio compass radio compass station radio control radio engineer radio engineering radio field intensity radio-frequency radio-iodine radio knife radio link radio marker radio proximity fuze radio range beacon radio receiver radio set radio spectator radio spectrum radio transmitter radio tube radio-ulnar radio wave radish tree radium bath radium emanation radium lead radium miner radium paint radium vermilion radius bar radius gauge radius rod radius vector radix graminis radon seed raffia palm raft body raft dog raft duck rafter dam raft port rag baby rag bag rag-bailing rag beater rag-beating rag bleacher rag board rag-boiling rag bolt rag-burn rag bush rag carpet rag-chew rag chopper rag-cutting rag dealer rag doll rage-crazed rage-filled rage-infuriate rag engine rage-subduing rage-swelling rage-transported rag fair rag felt raggle-taggle rag gourd raglan sleeve rag lining rag-made rag money rag offering rag paper rag peddler rag pulp rag rug rag shop rag stock rag-threshing ragtime music rag trade rag tree ragweed family rag well rag wheel rag wool rag work rail-bearing rail-bending rail-bonding rail-borne rail car rail chair rail clip rail-cutting rail dumper rail ender rail filler rail fork rail guard rail-laying rail lock rail maker rail making rail-ocean rail plate rail-ridden railroad engineer railroad engineering railroad euchre railroad furniture railroad jack railroad pen railroad scale railroad sickness railroad worm rail-sawing rail setter rail-splitting rail straightener rail tongs rail track rail train railway-borne railway maker railway making railway man railway spine railway stitch rain area rain-awakened rain barrel rain-bearing rain-beat rain-beaten rain belt rain-bitten rain-bleared rain-blue rainbow-arched rainbow cactus rainbow chaser rainbow chasing rainbow-clad rainbow-colored rainbow darter rainbow-edged rainbow fish rainbow-girded rainbow herring rainbow-hued rainbow-large rainbow moss rainbow-painted rainbow-sided rainbow-skirted rainbow-tinted rainbow trout rainbow-winged rain-bright rain chamber rain check rain cloud rain course rain-damped rain doctor rain-drenched rain-driven rain-dropping rainette green rain forest rain-fraught rain gauge rain glass rain-god rain-gutted rain insurance rain leader rain lily rain maker rain making rain pie rain pipe rain print rain rot rain-scented rain-soaked rain-sodden rain-soft rain spot rain-streaked rain-swept rain-threatening rain tree rain-washed rain water rain-water fish raisin black raising hammer raising plate raisin grape raisin purple raisin tree rake-off rake-teeth rake vein raking course raking shore rallying cry rallying point ramage hawk ram bow ram cat ram effect ram-headed Ramist consonant ram-jet engine ram leather ramper eel ramp valley ranch company ranch country ranch economics ranch hand ranch house ranch life ranch owner ranch rider randall grass rand machine random bond random-jointed random line random point range angle range-bred range finder range grass range light range masonry range paralysis range pole range rake range rider range stove rank-brained rank-feeding rank-growing rank-grown ranking bar ranking jumper rank-minded rank-scented rank-scenting rank-smelling rank-springing rank-swelling rank-tasting rank-winged ransom bill ransom bond rantum-scantum rape butterfly rape oil rape wine rap-full rapid-changing rapid-fire rapid-fire mount rapid-firer rapid-firing rapid-flowing rapid-flying rapid-footed rapid-mannered rapid-passing rapid-running rapid-speaking rapid-transit rapier-proof rapper-dandies rap shot rapture-bound rapture-breathing rapture-bursting rapture-giving rapture-moving rapture-ravished rapture-rising rapture-smitten rapture-speaking rapture-touched rapture-trembling rapture-wrought rare-bred rare-earth metal raree show rare-featured rare-felt rare-gifted rare-painted rare-qualitied rare-seen rare-shaped Ras algethi rash-brain rash-brained rash-conceived rash-embraced rash-headed rash-hearted rash-levied rash-minded rash-pledged rash-running rash-spoken rash-thoughted rasing iron rasing knife raspberry apple raspberry beetle raspberry bug raspberry curl raspberry-jam raspberry mosaic raspberry red raspberry root borer raspberry root rot raspberry sawfly raspberry yellows rasp grass rasp house rasp palm rasp pod rat-a-tat ratbite fever ratchet brace ratchet chain ratchet coupling ratchet crank ratchet drill ratchet jack ratchet stop ratchet thread ratchet tooth ratchet-toothed ratchet wheel rat-colored rat-deserted rate-aided rate base rate cap rate-cutting rate-fixing rate maker rate making rate-raising rate-setting rat-eyed rat-faced rat flea rat-gnawn rat goose rat hare rat-infested rating badge rating flume rating nut rat-inhabited ratio arm rat kangaroo rat-killing ratline stuff rat mole rat pineapple rat poison rat race rat rhyme rat-ridden rat-riddled rat-skin rat snake rat stop rattail cactus rat-tailed rattail fescue rattail file rattan vine rat-tat rat-tattle rat-tight rattle barrel rattle grass rattlesnake bean rattlesnake-bite rattlesnake fern rattlesnake flag rattlesnake grass rattlesnake leaf rattlesnake master rattlesnake root rattlesnake weed rattle-top rattlety-bang rattrap pedal rat unit ravel bread raven black raven cockatoo raven-colored raven-feathered raven gray raven-haired Ravenna grass raven-plumed raven standard raven-toned raven-torn ravine deer ravison oil raw-colored raw-devouring raw-edged raw-faced raw glaze raw-handed raw-headed raw-looking raw-mouthed raw-nosed raw-ribbed raw-striped raw-wool ray filter ray floret ray flower ray-fringed ray fungus ray-gilt ray-girt ray grass ray-illumined ray-lit ray pod ray-strewn ray therapy razon bomb razor-backed razor-billed razor blade razor-bladed razor-bowed razor clam razor-edged razor fish razor grass razor-grinder razor-keen razor-leaved razor saw razor-shaped razor-sharp razor-sharpening razor shell razor stone razor temper razor-tongued razor-weaponed razor-witted razzle-dazzle reacher-in reaching post reach rod re-act reactance coil reactance drop reaction border reaction engine reaction formation reaction locus reaction machine reaction-proof reaction rim reaction ring reaction time reaction wheel reader-off reading book reading desk reading distance reading glass reading hook reading-in machine reading lamp reading man reading matter reading notice reading pew reading room ready-armed ready-beaten ready-bent ready-braced ready-built ready-coined ready-cooked ready-cut ready-dressed ready-formed ready-for-wear ready-furnished ready-grown ready-handed ready-made ready-mixed ready-mounted ready-penned ready-prepared ready-reference ready roofing ready room ready-sanded ready-sensitized ready-shapen ready-starched ready-tongued ready-to-wear ready-typed ready-winged ready-witted ready-wittedly ready-wittedness ready-worded ready-written real-estate trust realgar orange realgar yellow real-hearted re-ally really-truly realm-bounding realm-conquering realm-destroying realm-governing real-minded realm-peopling realm-subduing realm-sucking realm-unpeopling real scholar real school real-sighted Re-americanization Re-americanize reaper binder reaper file reaper thresher reaping hook reaping machine rear admiral rear arch rear-cut rear-directed rear-driven rear-driving rear-end rear guard rearing bit rear-steering rear vault rearview mirror rear-vision mirror reason why rebate plane rebel clover rebound clip rebound leaf re-buff recalescence point recapitulation theory recapture clause receipt book receiver-general receiving note receiving ship receiving station receiving tube receptaculum seminis reception hall reception room recess appointment recess bed recess committee Re-christianize reciprocity law reciting note reclamation district re-cognition re-cognitional recognition mark re-coil recoil atom recoil cylinder recoil escapement recoil wave re-collect re-collection re-commend re-co-operate re-co-operation re-cord record-bearing record-beating record-breaking recording meter record-making record player record ribbon record-seeking record-setting re-count re-cover recovery coke recovery oven re-create re-creation recreation room re-creative re-creator recruiting ground rectifier instrument recto-urethral recto-uterine rectovesical fascia recumbent anticline recurrence formula red-armed red-backed red-bait red-banded red-bar red-barked red-beaded red-beaked red-beamed red-bearded red-bellied red-belted red-berried red-billed red-black red-blind red blindness red blood red-blooded red-bloodedness red-bodied red-boled red-bonnet red-bound red-branched red-branching red-breasted red-brick red-brown red-burning red-buttoned red-cheeked red-chested red-clad red-cloaked red-clocked red-coat red-coated red-cockaded red-collared red-colored red-combed red-crested red-crowned red-curtained red-dabbled reddish-amber reddish-bay reddish-bellied reddish-black reddish-blue reddish-brown reddish-colored reddish-gray reddish-green reddish-haired reddish-headed reddish-looking reddish-purple reddish-white reddish-yellow redd-up red-dyed red-eared red-edged redemption fund re-derive re-desert red-eyed red-faced red-facedness red-feathered red-figured red-finned red-flag red-flagger red-flaggery red-flag law red-flanked red-flecked red-fleshed red-flowered red-flowering red-footed red-fronted red-fruited red-gemmed red-gilled red-girdled red-gleaming red-gold red-gowned red-green blind red-green blindness red-haired red-hand red-handed red-handedly red-handedness red-hard red-harden red-hardness red-hat red-hatted redhead-grass redheart hickory red-heeled red-hipped red-hissing red-hooded red-horned red horse red horse chestnut red-hot red-hued red-humped red-ink rediscount rate red-jerseyed red-kneed red-knobbed red-lead red-leader red-lead putty red-leaf red-leather red-leaved red-legged red-letter red-lettered red-lidded red-light district red-lined red-lipped red-listed red-lit red-litten red-looking red-making red man red-minded redmouth buffalo fish red-mouthed red-naped red-necked red-nosed red-orange redox potential red-painted red-plowed red-plumed red-polled Red polled redpoll linnet redpoll warbler red-purple redrawing press redrawing punch re-dress red-ribbed red-rimmed red-ripening red-roan red roncador red-roofed red-rooted red-rose red rot red-rumped red-rusted red-scaled red-scarlet red-shafted red-shank red-shirted red-short red-shortness red-shouldered red-shouldered hawk red-sided red-silk red-skinned red-snooded red-specked red-speckled red-spotted red-stalked red-streaked red-streaming red-swelling red-tailed red-tape red-taped red-tapedom red-taper red-tapery red-tapey red-tapish red-tapism red-tapist red-tempered red-thighed red-throat red-throated red-tiled red-tinted red-tipped red-tongued red-topped red-topped buffalo grass red-trousered red-tufted red-twigged reducer sleeve reducing furnace reducing glass reducing press reducing valve reducing wheels reduction division reduction-improbation reduction potential reduction works red-upholstered red-veined red-vented red-vested red-violet red-walled red-wat red-wattled red-waved red-white red-winged red-wooded red-written red-yellow red zinc ore re-earn re-ebullient re-echo reed-back reed bent reed-blade reed-bordered reed bunting reed canary grass reed-clad reed-compacted reed-crowned reed fescue reed grass reed green reed-grown re-edificate re-edification re-edifier re-edify reed instrument re-edit reed mark reed meadow grass reed organ reed pipe reed-rond reed-roofed reed-rustling reed-shaped reed stop reed-thatched reed thrush re-educate re-education re-educative reed wren reed yellow reef band reef cringle reef earing re-effeminate reef goose reefing bowsprit reefing jacket reef jig reef jigger reef-knoll reef-knot reef pendant reef point reef tackle re-egg re-ejaculate re-eject re-ejection re-ejectment re-elaborate re-elaboration reel borer re-elect re-election re-elevate re-elevation reel-fitted reel foot reel-footed re-eligibility re-eligible re-eliminate re-elimination reeling hammer reel oven re-emanate re-embark re-embarkation re-embarrass re-embarrassment re-embattle re-embed re-embellish re-embodiment re-embody re-embosom re-embrace re-embracement re-embroil re-emerge re-emergence re-emergent re-emersion re-emigrant re-emigrate re-emigration reeming beetle reeming iron re-emission re-emit re-emphasis re-emphasize re-employ re-employment re-empower re-empty re-emulsify re-enable re-enact re-enaction re-enactment re-enamel re-enamor re-enamour re-enchain re-enclose re-enclosure re-encounter re-encourage re-encouragement re-endear re-endearment re-ender re-endorse re-endorsement re-endow re-endowment re-energize re-enfeoff re-enfeoffment re-enforce re-enforcement re-enforcer re-enfranchise re-enfranchisement re-engage re-engagement re-engender re-engenderer re-engine Re-english re-engraft re-engrave re-engraving re-engross re-enhearten re-enjoin re-enjoy re-enjoyment re-enkindle re-enlarge re-enlargement re-enlighten re-enlightenment re-enlist re-enlister re-enlistment re-enliven re-ennoble re-enroll re-enrollment re-enshrine re-enslave re-enslavement re-ensphere re-enter re-entering re-entering angle re-entertain re-entertainment re-enthral re-enthrone re-enthronement re-enthronize re-entice re-entitle re-entoil re-entomb re-entrain re-entrance re-entrancy re-entrant re-entrenchment re-entry re-entry card re-enumerate re-enumeration re-enunciate re-enunciation re-epitomize re-equilibrate re-equilibration re-equip re-equipment re-erect re-erection re-escape re-escort re-espousal re-espouse re-essay re-establish re-establisher re-establishment re-esteem re-estimate re-estimation re-etch re-etcher re-evacuate re-evacuation re-evade re-evaluate re-evaluation re-evaporate re-evaporation re-evasion reeving-line bend re-evoke re-evolution re-exalt re-examinable re-examination re-examine re-examiner re-excavate re-excavation re-excel re-exchange re-excitation re-excite re-exclude re-exclusion re-execute re-execution re-exempt re-exemption re-exercise re-exert re-exertion re-exhale re-exhaust re-exhibit re-exhibition re-exhilarate re-exhilaration re-exist re-existence re-existent re-expand re-expansion re-expect re-expectation re-expedite re-expedition re-expel re-experience re-experiment re-explain re-explanation re-export re-exportation re-exporter re-expose re-exposure re-expound re-express re-expression re-expulsion re-extend re-extension re-extent re-extract re-extraction refectory table reference book reference frame reference gauge reference library reference mark referendum dollar refining engine refining heat reflection factor reflector mirror reflex action reflex arc reflex camera reflex zenith tube reflux condenser reflux value re-form re-formation reformation-proof re-formative re-former reform school refraction circle refrigerating engine refrigerating engineer refrigerator car refunding bond refuse destructor refuse lac re-genesis regent bird regent house Re-germanization Re-germanize registered nurse register office register point register ton register tonnage registrar-general registration area registration county regius professor regular-bred regular-built regular-featured regular-growing regular-lay rope regular-shaped regular-sized regulating box regulating button regulation-proof reheating furnace Re-hellenization Re-hellenize re-ice Reindeer age reindeer flower reindeer lichen reindeer moss reindeer pest reinforced bow reinforced concrete re-ink rein orchis reinsurance fund rei persecutoria reisner work reject back relapsing fever relation word relative-in-law relativity doublet relativity shift relay broadcast relayer rail relay governor relay race re-lease release date reliability coefficient relic-covered relic-vending relief frame relief map relief motion relief pallet relief printing relief ship relief valve relief well relieving tackle religio-educational religio-magical religio-military religio-philosophical religio-political religio-scientific relocation camp remainder theorem remanent magnetism re-mark remedy-proof remittance man remontoir escapement remote-controlled remount cavalry removal cutting remuneratory sanction renal splanchnic nerve rennet bag rennet casein rennet ferment rental library rent charge rent charger rent-collecting rent-free rent insurance rent-paying rent-producing rent-raising rent-reducing rent resolute rent-roll rent seck rent service repair ship repair shop repeat order repertory theater replacement cost replacement vein replica grating reply card reply coupon report card report stage re-present re-presentation representative-elect re-presentment re-press reproduction cost re-proof re-prove reptilian age Re-puritanize request note re-reaction re-rebel re-receive re-reception re-recital re-recite re-reckon re-recognition re-recognize re-recollect re-recollection re-recommend re-recommendation re-reconcile re-reconciliation re-record re-recover re-rectification re-rectify re-reduce re-reduction re-refer re-refine re-reflect re-reflection re-reform re-reformation re-refusal re-refuse re-regenerate re-regeneration re-rehearsal re-rehearse re-reiterate re-reiteration re-reject re-rejection re-rejoinder re-relate re-relation re-release re-relish re-rely re-remember re-remind re-remit re-removal re-remove re-rendition re-repair re-repeat re-repent re-replevin re-reply re-report re-represent re-representation re-reproach re-request re-require re-requirement re-rescue re-resent re-resentment re-reservation re-reserve re-reside re-residence re-resign re-resignation re-resolution re-resolve re-respond re-response re-restitution re-restoration re-restore re-restrain re-restraint re-restrict re-restriction re-retire re-retirement re-return re-reveal re-revealation re-revenge re-reversal re-reverse re-revise re-revision Re-romanize rescue grass re-search research engineer research engineering research laboratory research material research professor research study research worker re-serve reserve account reserve city reserve fund reserve militia reserve officer reserve price reserve ratio reserve ration residuary devisee residuary legatee re-sign resignation bond resigned-looking resin alcohol resin bee resin cerate resin distiller resin gnat resin oil resin opal resin plant resin soap resin spirit resistance box resistance butt welding resistance coil resistance coupling resistance derivative resistance drop resistance frame resistance thermometer resistance welding resisting medium resisting moment resistive conductor resistive coupling resojet engine re-solution resolutory condition resolving power resonace box resonace potential resonance cavity resonance-coil antenna resonance curve resonance energy resonance form resonance hybrid resonance pipe resonance radiation resonance spectrum resonance wave coil resorcin acetate resorcin brown resorcinol monoacetate resorption border re-sort re-sorter re-sound respiration calorimeter respiratory center respiratory leaf respiratory nerve respiratory pigment respiratory plate respiratory quotient respiratory tree respiratory trumpet rest cure rest-cured rest day rest-giving rest house resting place rest mass rest-ordained re-store re-strain restraining order rest-refreshed rest room rest-seeking rest-taking rest treatment result clause resurrection body resurrection bolly resurrection fern resurrection man resurrection pie resurrection plant resurrection woman retail dealer retail store retaining fee retaining wall retardation method retia mirabilia reticulated tracery reticulated vessel retonation wave retort drawer retort stand re-trace re-tread re-treader re-treat re-treatment re-trench retro-ocular retro-omental retro-operative retro-oral retro-umbilical retro-uterine re-turn return address return ball return bead return bend return card return-cocked return day return game returning board return match return piece return shock return ticket return trap return-tubular boiler return wall re-up re-use revenue account revenue bond revenue cutter revenue expenditure revenue stamp revenue tariff reverse discard reverse-phase relay reversible-disk plow reversing switch reversion duty reversion pendulum reversion spectroscope revolving-jaw box chuck revolving-jaw chuck reward claim rewa-rewa rewrite man rex begonia Rhaeto-romance Rhaeto-romanic Rhaeto-romansh rheumatism root rheumatism weed rhinoceros auklet rhinoceros beetle rhinoceros bird rhinoceros bush rhinoceros hornbill rhinoceros-shaped rhinoceros viper rhizoctonia disease rhizosphere effect Rhode island Rhode islander rhodium oil rhodium wood rhodonite pink rhomb-leaved rhomboid-ovate rhomb spar rhumb line rhus glabra rhyme-beginning rhyme-composing rhyme-fettered rhyme-forming rhyme-free rhyme-inspiring rhyme royal rhyme-tagged rhyme word rhyming dictionary rhyolite-porphyry riband-shaped riband-wreathed ribband carvel ribband lines rib-bearing ribble-rabble ribbon-bedizened ribbon-bordering ribbon-bound ribbon brake ribbon building ribbon conveyer ribbon development ribbon fern ribbon grass ribbon gum ribbon isinglass ribbon jasper ribbon lightning ribbon-marked ribbon movement ribbon park ribbon rock ribbon saw ribbon-shaped ribbon snake ribbon tree ribbon winder ribbon wire ribbon worm rib-breaking rib cut rib-faced rib grass rib-grated rib lath rib-mauled rib meristem rib-nosed rib-pointed rib-poking rib rifling rib roast rib-sticking rib stitch rib-striped rib-supported rib-welted rice body rice boiler rice bran rice bug rice cleaner rice-cleaning rice-clipping rice coal rice cousin rice cut-grass rice drier rice dust rice eater rice-eating rice field rice-field eel rice flour rice flower rice glue rice grader rice-grading rice-grain decoration rice grass rice grinder rice-grinding rice grower rice-growing rice hen rice huller rice-hulling rice milk rice mill rice miller rice mouse rice paper rice-paper tree rice planter rice-planting rice polish rice polisher rice-polishing rice polishings rice-pounding rice powder rice rat rice-root grass rice-seed body rice shell rice tenrec rice water rice wine rich-appareled rich-attired rich-bedight rich-bound rich-built rich-burning rich-clad rich-conceited rich-distilled richel bird rich-embroidered rich-figured rich-fleeced rich-fleshed rich-glittering rich-haired rich-jeweled rich-laden rich-looking rich-minded rich-ored rich-robed rich-set rich-soiled rich-tasting rich-toned rich-voiced rich-wrought rick-barton rick-burton rick carrier ricochet fire riddle ballad riddle cake rider embolus rider keelson ridge beam ridge buster ridge fillet ridge harrow ridge oak ridge plow ridge-seeded ridge stone ridge strut ridge tile ridging grass ridging plow ridicule-proof riding boot riding habit riding hood riding light riding master riding rhyme riding school rie grass riffle bar riffle block riffle file rifle assembler rifle bar rifle bomb rifle corps rifle frock rifle green rifle grenade rifle gun rifle pit rifle range rifle salute rifle shot rifle tie rift board rift saw rift-sawed rift-sawing rift-sawn rift valley rifty-tufty Riga balsam rigging loft rigging screw right-aiming right-angle right-angled right-angular right ascension right-away right-bank right-believed right-believing right-born right-brained right-bred right center right-central right cylinder right-down right-drawn right-eared right-eyed right-eyedness right-footed right-forward right-framed right-handed right-handedly right-handedness right-hander right-hand tool right-handwise right-laid right-lay right-lined right-made right-meaning right-minded right-mindedly right-mindedness right-onward right-principled right-running right-shaped right-shapen right-side right-sided right-sidedly right-sidedness right-thinking right-turn right-up right-walking right whale right-wheel right wing right-winger right-wingism rigid-body rigid-nerved rigid-seeming Rigil kentaurus rig-out rig tree rig-up Rig-veda Rig-vedic rill-like rill stope rim ash rim-bearing rim-bending rimble-ramble rim blight rim-bound rim clutch rim-cut rim-deep rime-covered rime-damp rime frost rime-frosted rime-laden rim-fire rim lock rim pulley rim ram ruf rim saw rim shaft rim wheel rind disease rind fungus rind gall rind grafting ring-adorned ring armature ring armor ring-a-rosy ring-around ring-banded ring bander ring-billed ring-billed duck ring binder ring bore ring-bored ring bottle ring-bound ring canal ring cell ring-chain isomerism ring-chain tautomerism ring chuck ring clew ring compound ring crib ring dial ring dropper ring dropping ringed snake ring-eyed ring-fence ring finger ring-formed ring formula ring gauge ring gear ring-handled ring-in ring-legged ring micrometer ring nebula ring-necked ring-necked duck ring necrosis ring-off ring-oil ring oiler ring pin ring-porous ring-ridden ring rope ring screw ring shake ring-shaped ring-small ring spinner ring spot ring-tailed ring traveler ring-up ring winding ringworm bush rinka fadda rink polo riot gun rip cord rip current ripe-aged ripe-bending ripe-cheeked ripe-colored ripe-eared ripe-faced ripe-grown ripe-looking ripe-picked ripe-red ripe rot ripe stump ripe-tongued ripe-witted rip hook rip panel ripper act ripping bar ripping chisel ripping panel ripping punch ripping size ripple cloth ripple current ripple grass ripple mark ripple plantain ripple voltage ripple weld rippling kame rip-rap rip-roaring rip-roarious rip tide risk capital risk premium rivage green river ash riverbank grape river basin river bass river birch river-blanched river-borne river-bottom river boulder river bulrush river-caught river craft river deer river dolphin river driver river-formed river front river-given river-god river-goddess river grass river horse river jack river locust river maple river mussel river novel river oak river rat river road river shrew river-sundered river-watered river wattle river-worn rivet buster rivet carrier rivet catcher rivet forge rivet heater rivet hole riveting hammer riveting knob riveting stake rivet knob rivet pitch rivet snap rivet steel rivet weld rivet wheat riving knife riving machine rix-dollar Rizal day r-less roach-back roach-backed roach-bellied roach-bent road agent road binder road builder road building road cart road compound road contractor road donkey road drag road-faring road fettler road gang road grader road-grading road guard road harrow road hog road-hoggish road-hoggism road horse road layer road maker road making road map road mender road metal road monkey road oil road-oiling road pen road plow road racer road racing road-ready road repairer road roller road runner road scraper road sign road tar road test road-testing road wagon road-weary road wheel road-wise roast-beef plant roasting ear roasting jack roast sintering robber bee robber crab robber fly Robber synod robbery insurance robin accentor robin chat robin dipper Robin hood robin redbreast robin runaway robin sandpiper robin snipe robot bomb roche alum roching cask rock alyssum rock-based rock basin rock-battering rock-begirdled rock-bestudded rock-bethreatened rock-boring rock-bottom rock-bound rock brake rock breaker rock-breaking rock-built rock burst rock candy rock-cistus rock-clad rock-cleft rock-climb rock-climber rock-climbing rock-concealed rock-covered rock crab rock-crested rock-crushing rock-cut rock drill rock driller rock-drilling rock-dusted rock-dwelling rock eel rock elm rock-embosomed rock-encircled rock-encumbered rock-enthroned rocker arm rocker bent rocker cam rocket apparatus rocket bomb rocket harpoon rocket launcher rocket plane rocket-propelled rocket propulsion rocket salad rock face rock-faced rock-fallen rock-fast rock fern rock-fill rock-firm rock-firmed rock flint rock-forming rock-free rock-frequenting rock garden rock gardener rock gardening rock-girded rock-girt rock goat rock grouse rock gypsum rock-hard rock-hewn rock hole rock hopping rocking bed rocking chair rocking horse rock-inhabiting rock lever rock lily rock lobster rock-loving rock maple rock-melting rock milk rock moss rock oak rock oyster rock painting rock phospate rock-piercing rock pigeon rock pile rock-piled rock pressure rock-pulverizing rock-razing rock-reared rock-ribbed rock-roofed rock-rooted rock-rushing rock salt rock saw rock-scarped rock seal rock shelter rock-sheltered rock snake rock sparrow rock spleenwort rock squirrel rock-strewn rock-throned rock-thwarted rock-torn rock trout rock violet rock vole rockweed bird rock whiting rock-wombed rock wool rock-worked rock wren Rocky mountain rod adaptation rod bayonet rod-bending rod-boring rod breaker rod-caught rod-cone theory rod-drawing rode goose rodent ulcer rod epithelium rod fiber rod granule rod-healing rod mill rod peeler rod-pointing rod-polishing rod-shaped rod vision roebuck berry roe deer roentgen-ray cancer rogue elephant roister-doister roister-doisterly roll-about roll-call roll-cumulus roller-backer roller bar roller bearing roller blind roller bowl roller-carrying roller coaster roller gear roller gin roller grinder roller-grinding roller-made roller mill roller-milled roller-milling roller nest roller press roller skate roller stock roller-top roller towel roll film rolling hitch rolling-key clutch rolling machine rolling mill rolling press rolling rope roll lathe roll-leaf roll-over roll scale roll top roll-top desk roll train roll-turning lathe roll up roll welding roly-poly roly-poly grass romance-empurpled romance-hallowed romance-inspiring romance-making romance stanza romance-writing Roman nose Roman-nosed Romano-british Romano-briton Romano-byzantine Romano-canonical Romano-celtic Romano cheese Romano-ecclesiastical Romano-egyptian Romano-etruscan Romano-gallic Romano-german Romano-germanic Romano-gothic Romano-greek Romano-hispanic Romano-iberian Romano-lombardic Romano-punic romantico-heroic romantico-robustious Romany rye Rong-pa rood altar rood arch rood beam rood cloth rood goose rood ladder rood loft rood stair rood tower roof beam roof-blockaded roof board roof bracket roof-building roof-climbing roof cover roof dome roof door roof-draining roof-dwelling roof fixer roof garden roof gardener roof-gardening roof-haunting roof high roof line roof nucleus roof plate roof rat roof-reaching roof ridge roof-shaped roof thatch roof tile roof truss rook-coated rooketty-coo room clerk rooming house room-ridden room trader roost cock root beer root borer root-bound root-bruising root-built root canal root cell root cutting root determinative root-devouring root-digging root disease root division root-eating root-feeding root gall root grafting root hair root-hardy root-inwoven root-mean-square root-neck root nodule root parasite root-parasitic root-parasitism root pressure root-prune root-pruned root rot root sheath root tip root-torn root vole root weevil rope belting rope-bound rope brake rope brown rope-closing rope-driven rope-driving rope-end rope-fastened rope-girt rope greaser rope house rope ladder rope-laying rope machine rope molding rope-muscled rope-pulling rope race rope-reeved rope-shod rope-sight rope spinner rope-spinning rope stitch rope-stock rope-stropped rope twine rope yarn rope-yarn knot roping palm Rorate sunday rory-cum-tory rory-tory rosary pea rosary plant rosary ring rosary shell rosa solis rose acacia rose aphid rose apple rose-a-ruby rose-back rose beetle rose beige rose-bellied rose-blue rose blush rose box rose-breasted rose-bright rose carnation rose-carved rose chafer rose-cheeked rose chestnut rose-clad rose cold rose-color rose-colored rose-colorist rose comb rose-combed rose-covered rose cross rose-crowned rose cut rose cutter rose diamond rose-diffusing rose-eared rose engine rose-ensanguined rose-faced rose fever rose-fingered rose-flowered rose-fresh rose-gathering rose geranium rose-geranium oil rose gray rose-growing rose-headed rose-hedged rose-hued rose-leaved rose lily rose-lipped rose-lit rose-loving rose mallow rosemary oil rose mildew rose opal rose-petty rose-podded rose point rose purple rose-red rose-ringed rose-scented rose-shell reamer rose slug Rose sunday rose-sweet rose tickseed rose-tinged rose-tinted rosetta wood rosette plate rose-warm rose-water rose weevil rose willow rose window rosewood oil rose worm rose-wreathed rosin oil rosin plant rosin rose rosin soap rosin spirit rosso antico rosy-armed rosy-blushing rosy-bosomed rosy-cheeked rosy-colored rosy-crimson rosy-dancing rosy-eared rosy-faced rosy-fingered rosy-hued rosy-lipped rosy-purple rosy-red rosy-tinted rosy-tipped rosy-toed rosy-warm rotary-cut rotary gap rotary hoe rotation band rotation pool rote song rot grass rother nail rotor plane rotor ship rot-steep rotten-dry rotten-egg rotten-hearted rotten-heartedly rotten-heartedness rotten-minded rotten-planked rotten-red rotten-rich rotten-ripe rotten-throated rotten-timbered rott goose rotundo-ovate rouge plant rough-and-readiness rough-and-ready rough-backed rough-barked rough-bearded rough-bedded rough bent rough-billed rough-blustering rough-board rough-bordered rough-cheeked rough-clad rough-clanking rough-coat rough-coated rough-cut rough-edge rough-edged rough-enter rougher-down rougher-out rougher-up rough-face rough-faced rough-feathered rough-finned rough-foliaged rough-footed rough-form rough-fruited rough-furrowed rough-grained rough-grind rough-grinder rough-grown rough-hackle rough-hackled rough-haired rough-handed rough-handedness rough-headed rough-hob rough-hobbed rough-hull roughing-in roughing mill roughing roll roughing stone rough-jacketed rough-keeled rough-leaved rough-legged rough-level rough-lipped rough-living rough loader rough-looking rough-mannered rough-necked rough-paved rough-plain rough-plane rough-plastered rough-plow rough-plumed rough-podded rough-point rough-ream rough-reddened rough-ridged rough-roll rough-sawn rough-scaled rough-seeded rough-shape rough-sketch rough-skinned rough-spirited rough-spoken rough-square rough-stalked rough-stemmed rough-stone rough-stringed rough-surfaced rough-swelling rough-tailed rough-tanned rough-tasted rough-textured rough-thicketed rough-toned rough-tongued rough-toothed rough-turn rough-turned rough turner rough-voiced rough-walled rough-weather rough-winged rough-write roulette table roulette wheel round-about-face roundabout system round-arched round-arm round-armed round-backed round-barreled round-bellied round-beset round-billed round-blazing round-bodied round-boned round-bottomed round-bowed round-bowled round-celled round-cell sarcoma round-cornered round-crested round-eared round-edge round-edged round-end round-eyed round-faced round-fenced round-footed round-fruited round-furrowed round-handed round-heart round herring round-hoofed round-horned roundhouse curve rounding adz roundish-deltoid roundish-faced roundish-featured roundish-leaved roundish-obovate roundish-oval roundish-ovate roundish-shaped round-leafed round-leaved round-limbed round-lipped round-lobed round-made round-mouthed roundnose chisel round-nosed round-podded round-pointed round-ribbed round robin round-rolling round-rooted round-seeded round-shapen round-shouldered round-shouldred round-sided round-skirted round-spun round-stalked round-table round-table conference round-tailed round-the-clock round-toed round-topped round tower round trip round-tripper round-trussed round-turning round-visaged round-winged round-wombed rout cake rout chair route army route march route marker route order route step routing plane rout seat rove beetle rove-over rover ball rowan tree row-barge row crop row culture row galley rowing machine row-off royal-born royal-chartered royal-hearted royal-rich royal-souled royal-spirited royal-towered R-shaped R star rub-a-dub rubber cloth rubber-coated rubber-collecting rubber-cored rubber-covered rubber-cutting rubber-down rubber-faced rubber-growing rubber-headed rubber hydrocarbon rubber knife rubber latex rubber-lined rubber-mixing rubber-off rubber oil rubber plant rubber-producing rubber-proofed rubber-reclaiming rubber-set rubber-slitting rubber snake rubber-soled rubber spreader rubber-spreading rubber-stamp rubber-testing rubber-tired rubber tree rubber varnisher rubber-varnishing rubber vine rubber-yielding rubbing block rubbing varnish rubbish unloader rubble car rubble masonry rub-dub rubicon bezique rubicon piquet rub iron ruby-berried ruby blende ruby-budded ruby-circled ruby-colored ruby copper ruby-crested ruby-crowned ruby-eyed ruby-faced ruby fly ruby glass ruby grass ruby-headed ruby-hued ruby-lipped ruby-lustered ruby-necked ruby port ruby red ruby-set ruby silver ruby spaniel ruby spinel ruby-studded ruby sulphur ruby-throated ruby-tinctured ruby-tinted ruby-toned ruby-visaged ruby wood ruby zinc rudder band rudder bar rudder brake rudder chain rudder crosshead rudder fish rudder tackle rudder torque ruddy-bright ruddy-brown ruddy-cheeked ruddy-colored ruddy-complexioned ruddy-faced ruddy-gold ruddy-haired ruddy-headed ruddy-leaved ruddy-purple ruddy-spotted rude-carved rude-ensculptured rude-fanged rude-fashioned rude-featured rude-growing rude-hewn rude-looking rude-made rude-mannered rude-spoken rude-spun rude-thoughted rude-tongued rude-washed rudge wash rue anemone rue bargain rue fern rue oil rue spleenwort ruffle-headed ruff-necked ruffy-tuffy rufous-backed rufous-banded rufous-bellied rufous-billed rufous-breasted rufous-brown rufous-buff rufous-chinned rufous-colored rufous-crowned rufous-edged rufous-haired rufous-headed rufous-hooded rufous-naped rufous-necked rufous-rumped rufous-spotted rufous-tailed rufous-tinged rufous-toed rufous-vented rufous-winged rufous-yellow rufter hood rufty-tufty rug gown rug-gowned rugose-leaved rugose-punctate ruin agate ruin-breathing ruin-crowned ruin-heaped ruin-hurled ruin-loving ruin marble rule nisi rum barge rumble-bumble rumble seat rumble-tumble rum blossom rum-bred rum cherry rum-crazed rum-drinking rum-dum rum essence rum-fired rum-flavored rummage sale rum-nosed rump bone rump-fed rum-producing rump steak rumpus room rum ram ruf rum-selling rum shrub rum-smelling rum sucker run-around Runa-simi runcible spoon run-down rune-bearing rune-inscribed run-in runner peanut runner stick runner-up running board running bond running-down clause running fire running fit running gate running gear running knot running light running mate running-out fire running track runoff primary run-on run-over run-through run-up rural deanery rush-bearer rush bearing rush-bordered rush-bottomed rush broom rush candle rush daffodil rush-floored rush-fringed rush garlic rush-girt rush grass rush-grown rush hour rush-leaved rush lily rush-margined rush marsh grass rush ring rush-seated rush-stemmed rush-strewn rush wheat rush-wove rush-woven russel cord russet-backed russet-bearded russet-brown russet coat russet-coated russet-colored russet-golden russet-green russet-pated russet-robed russet-roofed Russian-owned Russo-byzantine Russo-caucasian Russo-chinese Russo-german Russo-greek Russo-japanese Russo-persian Russo-polish Russo-serbian Russo-swedish Russo-turkish rust brown rust-cankered rust cement rust coat rust-complexioned rust-eaten rust fungus rust joint rust mite rust-preventing rust-proofed rust-red rust-removing rust-resisting rust-stained rust-worn rusty-branched rusty-brown rusty-coated rusty-collared rusty-colored rusty-crowned rusty-dusty rust-yellow rusty-fusty rusty-leaved rusty-looking rusty-red rusty-rested rusty-spotted rusty-throated ruthenium oxide ruthenium red rye bread rye grass rye rust rye smut rye whisky sabai grass Sabbath day Sabbath dress Sabbath school sab-cat saber bean saber fish saber knot saber-legged saber rattling saber-shaped saber shin saber-toothed sabicu wood sable antelope sable-bordered sable-cinctured sable-cloaked sable-colored sable-hooded sable iron sable-lettered sable-robed sable-spotted sable-stoled sable-suited sable-vested sable-visaged Sabrina work saccharine sorghum sacer vates sac fungus sachet powder sack baler sack baling sack-bearer sack beater sack borer sack carrier sack checker sack cleaner sack cloud sack coal sack coat sack-coated sack collector sack cutter sack doubler sack duty sack elevator sack emptier sack examiner sack-formed sack hand sack hoist sack holder sack lifter sack machinist sack mender sack moth sack packer sack printer sack race sack racer sack racing sack repairer sack running sack-sailed sack searcher sack sewer sack shaker sack-shaped sack shoot sack sorter sack store sack superintendent sack tackle sack tree sack weight sack-winged sacrament chapel sacrament cloth sacrament house Sacramento cat Sacramento perch Sacramento pike Sacrament sunday sacra peregrina Sacra romana rota sacred-bean family sacred ibis sacrifice fly sacrifice hit sacring bell sacro-uterine sac-wrist sad-a-vised sad cake sad-colored saddle-backed saddle band saddle bar saddle-billed saddle blanket saddle boiler saddle bracket saddle carpenter saddle case saddle-check chair saddle chimes saddle clip saddle crutch saddle currier saddle cutter saddle-fast saddle feathers saddle fitter saddle flange saddle flap saddle fungus saddle gall saddle-galled saddle-girt saddle girth saddle glacier saddle-graft saddle grafting saddle gun saddle hackle saddle hand saddle hip saddle horn saddle horse saddle house saddle hub saddle iron saddle joint saddle key saddle lap saddle lashing saddle leather saddle maker saddle making saddle mat saddle nail saddle-nosed saddle ox saddle oyster saddle pad saddle pile saddle piling saddle pin saddle pistol saddle plant saddle plate saddle pocket saddle pommel saddle press saddle rack saddle reef saddle rock saddle roof saddle room saddle rug saddle seam saddle seamer saddle seat saddle-shaped saddle shell saddle shoe saddle skirt saddle soap saddle spot saddle-spotted saddle spring saddle staple saddle stirrup saddle stitch saddle stitcher saddle stone saddle strap saddle tank saddle trunk saddle-wired saddle wire stitch saddle wiring saddle withers saddle worker sad-eyed sad-faced Sadi dervish sad-looking sad-natured sad-paced sad-seeming sad tree sad-tuned sad-voiced safari ant safe-bestowed safe-borne safe builder safe-conduct safe-cracker safe-deposit safe edge safe-edge file safe finisher safe fitter safeguarding duty safe-hidden safe lifter safe lock safe-marching safe-moored safe painter safe-sequestered safe stuffer safety arch safety belt safety bicycle safety bolt safety buoy safety cage safety catch safety chain safety clause safety curtain safety disk safety dog safety edge safety explosive safety factor safety-fund system safety funnel tube safety fuse safety glass safety hanger safety hoist safety island safety lamp safety lift safety link safety lock safety match safety nut safety paper safety pin safety pinion safety rail safety razor safety setscrew safety stop safety switch safety switchboard safety tube safety valve safety zone safflower carmine safflower oil safflower red saffron cake saffron-colored saffron cordial saffron crocus saffron gatherer saffron-hued saffron kiln saffron oil saffron plum saffron thistle saffron yellow safrano pink Sagai tatar sage ale sage apple sage brush green sage cheese sage chippy sage cock sage-colored sage-covered sage green sage grouse sage hare sage hen Sage hen sage-leaf sage-leaf mullein sage-leaved sage mullein sage oil sage rabbit sage sparrow sage tea sage thrasher sage tree sage willow sage wine sage wormwood sago fern sago flour sago palm sago plant sago spleen sago tree sahuca bean sail arm sail-bearing sail-borne sail-broad sail burton sail canvas sail carrier sail-carrying sail-dotted sail drill sail duck sail-filling sail fluke sail furler sail gang sail grommet sail ho sail hook sail hoop sailing barge sailing boat sailing canoe sailing car sailing day sailing instructions sailing launch sailing master sailing match sailing orders sailing packet sailing sucker sailing trawler sailing trim sailing yacht sail keeper sail lizard sail loft sail model sail needle sail netting sailor blue sailor boy sailor-fashion sailor fish sailor-fisherman sailor gang sailor helmsman sailor laborer sailor lad sailor-looking sailor-mind sailor phrase sailor plant sailor-poet sailor-soul sailor suit sailor tie sailor-train sail-over sail packet sail-propelled sail pulley sail room sail rope sail sewer sail sewing sail-stretched sail thimble sail thread sail trimmer sail twine sail-winged sail yard Saint andrew Saint bell Saint bernard Saint-emilion saint-errant saint-errantry Saint-estephe Saint-julien saint maker saint making Saint michael Saint simon Saint-simonian Saint-simonianism Saint-simonism Saint-simonist Sakhalin fir salaam aleikum salad bowl salad burnet salad course salad days salad dish salad dressing salad fork salad herb salad oil salad plate salad rocket salad server salad spoon salad tree salai tree sal alembroth sal ammoniac sal armoniac salary deduction sale block Salem grass sale note sale-over saleratus weed sales account sales agency sales agent sales book sales engineer sales floor sales force sales journal sales ledger sales manager sales note sales resistance sales talk sales tax salfern stoneseed Salisbury steak Sallier papyri sallow-cheeked sallow-colored sallow-complexioned sallow-faced sallow-looking sallow-visaged Sally lunn Sally nixon sally picker sally port salmon-breeding salmon brick salmon cloud salmon color salmon-colored salmon disease salmon family salmon fisher salmon fisherman salmon fishery salmon fishing salmon fly salmon hatchery salmon-haunted salmon herring salmon ladder salmon oil salmon peal salmon pink salmon-rearing salmon-red salmon river salmon rod salmon smelt salmon spear salmon spearing salmon steak salmon-tinted salmon trout salmon wheel salon music saloon deck saloon pistol salpingo-oophorectomy salpingo-oophoritis salpingo-ovariotomy salpingo-ovaritis salpingo-ureterostomy sal soda salt acid salt-and-pepper sal tartari salt barrel salt bed salt block salt bottom salt box salt-box house salt brig salt cake salt cedar salt chrome salt coffer salt conveyer Salt creek salt crusher salt crystal salt-cured salt dome salt drawer salt dryer salt duty salt-edged salt eel salt elevator salt evaporator salt filler salt filter salt fireman salt firm salt fish salt flat salt furnace salt garden salt gauge salt glaze salt-glazed salt glazing salt grainer salt grape salt grass salt-green salt grinder salt-hard salt hay salt heaver salt holder salt horse salt-incrusted salting bath salting box salting house salting kit salting pan salting press salting room salting trough salting tub salt kettle salt-laden salt lick salt loader salt-loving salt lump salt marsh salt-marsh aster salt-marsh caterpillar salt-marsh fleabane salt-marsh gerardia salt-marsh goldenrod salt-marsh grass salt-marsh hen salt-marsh mosquito salt-marsh moth salt-marsh terrapin salt master salt-meadow grass salt millman salt mine salt miner salt pack salt pan salt pansmith saltpeter paper saltpeter rot salt pit salt plug salt pocket salt pork salt prairie salt press salt rammer sal tree salt reed grass salt refiner salt rheum salt-rheum weed salt-rising Salt river salt room salt screen salt seller salt shaker salt shop salt shovel salt soda salt-spilling salt spring salt stain salt tree salt trimmer salt trough salt vase salt washer salt water salt-watery salt well salt-white saltwort family salt yard saluto dor saluto doro salvage corps salvage man Salvation army salve bug salve mull salver-shaped salvia blue salvinia family salvo point Salzburg vitriol samadera bark Samal laut Sama-veda same-colored same-featured same-minded same-seeming same-sized same-sounding Samhain eve Sam hill sample book sample bottle sample box sample boy sample cabinet sample card sample carrier sample case sample catcher sample cutter sample drawer sample driller sample envelope sample holder sample maker sample making sample ore sample passer sample phial sample picker sample porter sample roll sample room sample tester sample trunk sample vial sampling shovel Sampson fox Sampson snakeroot sam-sodden Samson fish samson post Samson post San blas San blas indian San carlos apache sancho pedro sancte bell sanctuary knocker sanctuary ring sanctum sanctorum Sanctus bell sandal brick sandal tree sandalwood family sandalwood oil sandalwood tan sandarac tree sand badger sand bar sand-bar willow sand bath sandbeach grape sand bear sand bellows sand belt sand-belt machine sand binder sand bird sand blackberry sand blaster sand-blight sand-blind sand blindness sand block sand blower sand-blown sand boil sand-bottomed sandbox tree sand brier sand buffer sand bug sand-built sand bunker sand-buried sand-burned sand burner sand calciner sand car sand-cast sand caster sand casting sand cherry sand chute sand clam sand clock sand clover sand cock sand collar sand-colored sand column sand cone sand conveyer sand corn sand crab sand crack sand crater sand cricket sand cusk sand dab sand darter sand digger sand disease sand diver sand dollar sand dredge sand dropseed sand drown sand dune sand eel sanders blue sand-etched sand-faced sand finish sand-finished sand flag sand flask sand flat sand flea sand-floated sand-float finish sand flotation sand flounder sand fluke sand fly sand-fly bush sand-fly fever sand fox sand gall sand grape sand grass sand-groper sand grouse sand-hemmed sand hill sand-hill bloom sand-hill crane sand-hiller sand-hill rose sand-hill rosemary sand hog sand hoist sand hole sand hopper sand hornet sanding machine sand jack sand jet sand lark sand launce sand leek sand lily sand-lime sand-lime brick sand line sand lizard sand lob sand-lot sand lotter sand martin sand mason sand mixer sand mold sand molding sand mole sand monitor sand mouse sand mullet sand myrtle sand nettle sand oat sand pail sand painter sand painting sandpaper fig sandpaper starwort sandpaper tree sand partridge sand pear sand pig sand pigeon sand pike sand pile sand pillar sand pine sand pipe sand pit sand plain sand plover sand plum sand prey sand pride sand pump sand rat sand-red sand reed sand reef sand reel sand rocket sand roll sand roller sand runner sand saucer sand scoop sand screw sand sedge sand shark sand shell sand shoe sand skink sand skipper sand smelt sand snake sand snipe sand spout sand spurry sand squeteague sand star sand-strewn sand sucker sand swallow sand table sand tester sand trap sand trout sand tube sand verbena sand vetch sand vine sand violet sand viper sand walk sand-warped sand wasp sand whiting sandwich beam sandwich board sandwich boy sandwich girder Sandwich glass sandwich man Sandwich tern sand widgeon sandy-bearded sandy-bottomed sandy-colored sandy-flaxen sandy-haired sandy-pated sandy-red sandy-rufous sane-minded san-gaku sanga-sanga sang-dragon sanguinary ant sanguine-complexioned San ildefonso indian sanitation-proof San jacinto day San juan indian San kuo sans appel Sans arc sans-culotte sans-culottic sans-culottid sans-culottide sans-culottish sans-culottism sans-culottist sans-culottize San sebastian sans-serif Santa ana indian Santa casa Santa clara indian Santa claus Santa fe locomotive Santa gertrudis Santa hermandad santal oil santalwood oil Santa maria Santa maria tree Santa sophia San thome Santo domingan Santo domingo indian Santorin earth sant tree sanwa millet sap cavity sap chafer sap fagot sap flow sap green sap gum sapling cup sapodilla family sapodilla plum saponification number saponification value sapota gum sapphire blue sapphire-colored sapphire-hued sapphire-visaged Sappho comet sap pine sappy spot sap roller sap rot sap shield sap stain sapta-matri sap tree sap tube sapucaia nut sapucaia-nut family sapwood rot sardine box sardine can sardine factory sardine fishery sardine oil sardine shears sardine tongs sargasso weed sargassum crab sargassum fish sargassum pipefish sargassum shell Sargent palm saru-gaku Sarum missal Sarum office Sarum rubric Sarum use Sarven hub sa sa sash bar sash cord sash curtain sash fast sash holder sash house sash line sash lock sash maker sash making sash plane sash pocket sash saw sash ventilation sash weight sassafras laurel sassafras medulla sassafras nut sassafras oil sassafras pith sassa gum sassy bark satan monkey satellite sphinx satem language satin-backed satin bird satin bowerbird satin cloth satin-faced satin-finished satin glass satin grass satin-leaved satin-lidded satin-lined satin moth satin sheeting satin-shining satin-smooth satin spar satin sparrow satin stitch satin stone satin-striped satin sultan satin walnut satin weave satin white satin-worked satisfaction piece Satsuma anthracnose saturation current saturation curve saturation factor saturation point saturation pressure Saturnian verse Saturn nebula Saturn red satyr orchid sauba ant sauce-alone sauce-crayon saucer dome saucer eye saucer-eyed saucer-shaped Sault whitefish saunce bell saunders blue sausage balloon sausage bassoon sausage curl sausage filler sausage-fingered sausage maker sausage making sausage meat sausage poisoning sausage-shaped sausage tree saussurite gabbro sauva ant savage-featured savage-fierce savage-hearted savage-looking savage-spoken savage-wild savanilla rhatany savanna blackbird savanna flower savanna forest savanna sparrow savanna wattle savanna woodland save-all savings account savings bank savings insurance savings stamp savin-leaved savin oil savoir-faire savoir-vivre savory-leaved savory-leaved aster sawara cypress saw arbor sawarra nut saw bearing saw bench saw bill saw-billed saw bit saw blade saw brier sawbuck table saw cabbage palm saw carriage saw clamp saw cut saw driver saw-edged saw fern saw file saw filer saw filing saw gate saw gin saw grass saw grinder saw guard saw guide saw handle saw-handled sawing block sawing stop saw jointer saw kerf saw knife saw-leaved saw log saw machine saw machinery saw palmetto saw palmetto berry saw-pierce saw pit saw set saw setting saw-shaped saw shark saw sharpener saw steel saw straightener saw swage saw table saw tooth saw-toothed saw-tooth wave saw tree saw vise saw wedge saw-whet saw wrack saw wrest sawyer beetle Saxe blue saxicava sand saxifrage family saxifrage pink Sayal brown Sayan samoyedic say-nothing say-so S bend S brake scabbard fish scabby-head scab mite scaff net scaff-raff scala media scald crow scale armor scale beam scale-bearing scale book scale-bright scale bug scale buying scale carp scale caterpillar scale charge scale degree scale dove scale-down scaled partridge scaled quail scale drawing scale duck scale effect scale fern scale figure scale fly scale insect scale leaf scale louse scale maker scale making scale micrometer scale modulus scale moss scalenus anterior scalenus medius scalenus posterior scale passage scale pipette scale plan scale plate scale quail scale reading scale rule scale selling scale singing scale stair scale stone scale-tailed scale wax scale worm scallop budding scalloped-edged scallop-shell moth scalp dance scalping boots scalping iron scalp lock scaly-bark scaly-barked scaly-finned scaly-leg mite scaly mistletoe scaly spleenwort scaly-stemmed scaly tetter scaly-winged scandal-bearer scandal-bearing scanning disk scanning speech scansorial barbet scantling number scape-bearing scape wheel scap net scapolite-gabbro scapolite group scapular-shaped scar-bearer scar-bearing scarb-tree scarce-closed scarce-cold scarce-covered scarce-discerned scarce-found scarce-heard scarce-met scarce-moving scarce-parted scarce-seen scarce-told scarce-warned scar-clad scare-bear scare-beggar scare-bird scare bullfinch Scare-christian scare-devil scare-fish scare-fly scare goose scare-hawk scare-hog scare-mouse scar end scare-peddler scare-robin scare-sheep scare-sinner scare-sleep scare-thief scare-vermin scar-faced scarf cloud scarf joint scarf maker scarf making scarf weld scarlet-ariled scarlet-barred scarlet-berried scarlet-blossomed scarlet-breasted scarlet-circled scarlet-clad scarlet-coated scarlet-colored scarlet-crested scarlet-day scarlet-faced scarlet-flowered scarlet-fruited scarlet-gowned scarlet-haired scarlet-lined scarlet-lipped scarlet-red scarlet-robed scarlet-tipped scarlet-vermillion scar-seamed scar tissue scatter-gun scatter rug scaup duck scavenger beetle scene cloth scene dock scene painter scene painting scene plot scent bag scent ball scent box scented fern scented grass scented oak fern scented tea scented verbena scent gland scent scale schedule rate scheme arch schenk beer Schiedam schnapps schiller spar schist oil schistosome dermatitis schlieren effect schlieren method schlieren photography Schloss johannisberger Schloss vollrads school account school age school agent school airship school aptitude school argument school author school badge school bass school bell school bench school board school-bred school brush school building school bus school case school chalk school chapel school chart school child school chum school clamp school clerk school clock school commissioner school committee school companion school crayon school day school desk school district school divine school divinity school doctor school door school drilling school emblem school equipment school ethics school exercise school fee School french school friendship school furniture school garden school globe school hour school inspector school land school language school-leaving school library school life school locker school logic school-made school-magisterial school manager school manner school map school matter school medicine school model school moralist school morality school name school officer school omnibus school opinion school organ school pad school paper school pedantry school pence school philosopher school philosophy school phrase school playground school porter school prank school principal school prize school publication school publisher school question school quiddity school railing school ranking school rating school register school roof school rule school savings bank school scale school schnapper school scissors school seat school seating school section school shark school ship school sign school signal school slate school snapper school strap school subtlety school superintendent school supervisor school survey school syllogism school table school tablet school-taught school team school term school testing school theology school tie school-trained school trick school vacation school ventilator school vise school wage school wagon school warden school wardrobe school year schooner rig schooner-rigged schorl-granite sciara army worm sciatic artery sciatic foramen scientia scientiarum scimitar-shaped scissor blade scissor case scissor chain scissor-fashion scissor-grinder scissor kick scissor maker scissor making scissors blade scissors case scissors chain scissor screw scissors-fashion scissors fault scissors-grinder scissors hardener scissor sharpener scissors kick scissors maker scissors making scissors pipe scissors-shaped scissors sharpener scissors-smith scissors truss scissors worker scissor-tailed scissor tooth scissor-winged sclero-oophoritis sclero-optic sclerotium disease scoinson arch scolding bridle scolding stool scone cap scoop bonnet scoop driver scoop net scoop wheel scops owl score card score playing score sheet scorpion broom scorpion bug scorpion fish scorpion fly scorpion grass scorpion iris scorpion lobster scorpion mouse scorpion oil scorpion plant scorpion senna scorpion shell scorpion spider scorpion thorn Scotch-gaelic scotch-hopper Scotch-irish Scotch-misty scotch roman scot-free Scotland yard Scotland yarder Scoto-britannic Scoto-celtic Scoto-english Scoto-gaelic Scoto-gallic Scoto-irish Scoto-norman Scoto-norwegian Scoto-saxon Scoto-scandinavian Scott-connected Scott connection Scottish-irish scourge top scouring ball scouring barrel scouring cinder scouring rush scouring stock scout badge scout boat scout camp scout car scout commissioner scout cruiser scout executive scouting plane scout law scout motto scout oath scout patrol scout salute scout ship scout sign scout staff scout training scout vessel scove kiln scrag end scrag whale scram hand scram-handed scrap basket scrap box scrape-finished scrape-gut scraper conveyer scraper mat scraper plane scraper ring scrape-shoe scrape-trencher scrap heap scrap paper scrap pudding scrap rubber scrap value scratch awl scratch brusher scratch carving scratch coat scratch-coated scratch comma scratch cradle scratch division scratch feed scratch figure scratch gauge scratch grass scratch hit scratching shed scratch line scratch-pad scratch-penny scratch player scratch test scratch wig screech hawk screech martin screech owl screen boy screen door screen facade screen-faced screen gate screen-grid tube screening constant screening effect screen maker screen making screen memory screen plate screen-plate process screen process screw alley screw anchor screw arbor screw auger screw bean screw bell screw blower screw bolt screw-bound screw box screw bunter screw cap screw-capped screw chain screw-chasing screw-clamped screw collar screw conveyer screw coupling screw-cutting screw-cutting lathe screw-down screw-driven screw driver screwed-up screw eye screw-eyed screw fern screw gear screw-geared screw gearing screw hook screw jack screw joint screw key screw-lifted screw machine screw machinery screw maker screw making screw mill screw mouth screw nail screw nut screw palm screw peg screw pile screw-piled screw piling screw pine screw-pine family screw-pitch screw-pitch gauge screw plate screw plug screw pod screw post screw press screw-propelled screw propeller screw pump screw punch screw rivet screw-shaped screw shell screw shot screw-slotting screw smile screw spanner screw spike screw stair screw stake screw stay screw stone screw-stoppered screw stud screw surface screw tap screw thread screw-threaded screw-thread fit screw-thread tolerance screw tool screw-topped screw-torn screw tree screw-turned screw-turning screw wedge screw wheel screw wrench scribble-scrabble scribbling lark scribe saw scribing block scribing compass scribing gouge scribing iron scrimping bar scrimp rail scrip certificate scrip dividend scrip-scrap script lichen script-writer scritch-scratch scritch-scratching scrive board scrofula plant scrolar line scroll chuck scroll creeper scroll-cut scroll front scroll gear scroll lathe scroll-like scroll pediment scroll saw scroll-shaped scroll step scroll wheel scrubbing board scrubbing brush scrub birch scrub bush scrub chestnut oak scrub fowl scrub hickory scrub juniper scrub myrtle scrub oak scrub pine scrub plane scrub robin scrub sandalwood scrub shrub scrub turkey scrub typhus scrub vine scrub wren scrum half scrutiny-proof scuffle hoe scuff plate scullery maid sculling oar scupper pipe scupper shoot S curve scurvy grass scutch cane scutch grass scutching tow scutellum rot scuttle butt scythe-armed scythe-bearing scythe-leaved scythe maker scythe making scythe-shaped Scythian antelope Scythian lamb Scytho-aryan Scytho-dravidian Scytho-greek Scytho-median sea acorn sea adder sea air sea anchor sea anemone sea ape sea apple sea apron sea arrow grass sea ash sea aster sea bank sea basket sea bass sea bat sea-bathed seabeach morning-glory seabeach sandwort sea bean sea bear sea-beat sea-beaten sea beef sea beet sea bells sea belt sea bent sea bindweed sea bird sea biscuit sea bladder sea blite sea bloom sea blossom sea blubber sea blue sea boat sea boots sea-born sea-borne sea bottle sea-bounded sea-bounding sea boy sea brant sea breach sea bread sea bream sea-bred sea breeze sea brief sea-broke sea buckthorn sea bugloss sea-built sea burdock sea bush sea butterfly sea cabbage sea calf sea campion sea captain sea card sea carp sea cat sea catfish sea catgut sea cauliflower sea celandine sea change sea chest sea chickweed sea-circled sea clam sea cliff sea cloth sea club rush sea coal seacoast angelica seacoast laburnum sea cob sea cock sea coco sea coconut sea colander sea cole sea colewort sea compass sea-compelling sea-convulsing sea coot sea corn sea cow sea crayfish sea cress sea crow sea cucumber sea cudweed sea cushion sea-cut sea daffodil sea dahlia sea daisy sea date sea day sea-deep sea-deserted sea devil sea-divided sea dock sea dog sea dotterel sea dove sea dragon sea drake sea-driven sea duck sea dust sea eagle sea-ear sea eel sea egg sea elephant sea-encircled sea endive sea fan sea feather sea fee sea fennel sea fern sea fig sea fight sea-fighter sea fir sea fire sea fish sea fisher sea fisherman sea fishery sea fishing sea flea sea foalfoot sea foam sea fog sea food sea-form sea fox sea-framing sea fret sea front sea frontage sea froth sea furbelow sea-gait sea gasket sea gate sea gillyflower sea girdle sea-god sea-goddess sea goose sea goosefoot sea gown sea grape sea grass sea grass wrack sea-gray sea-green sea gromwell sea gudgeon sea gull sea gypsy sea hanger sea hare sea hawk sea hay sea heath sea-heath family sea hedgehog sea hen sea herdsman sea herring sea hog sea holly sea hollyhock sea holm sea horse sea hulver sea ice sea island sea-island cotton sea kale sea-kale beet sea kemps sea kidney sea-kindliness sea-kindly sea king sea kittie sea lace sea ladder sea lamprey sea language sea lark sea laurel sea lavender sea law sea lawyer seal brown seal character seal coat seal cutter seal cutting seal cylinder sea league sea legs sea lemon sea lentil sea leopard sea letter sea lettuce sea level seal fisher seal fisherman seal fishery seal fishing seal hole sea light sea lily sea line sealing hole sealing nut sealing tape sealing wax sea lion sea lizard seal lock seal maker seal making sea loach seal oil sea-lost sea louse sea lovage sea-loving seal point seal press seal ring sea luce sea lungs sea lungwort Sealyham terrier sea lyme grass sea magpie sea-maid sea-maiden sea mallow seaman branch seaman gunner sea mantis sea marigold sea mat sea matweed seam blasting sea meadow sea membrane sea mew seam face sea mile sea milkwort seaming dies seaming lace sea mink sea mist seam lace sea monk sea monster sea moss sea moth sea mouse seam presser seam-rent seam-ripped seam-ript seam roller seam set seam stitch seam strip sea mud sea mugwort sea mulberry sea mule sea mullet seam weld seam welding seamy-sided sea necklace sea nettle sea oak sea oat sea officer sea onion sea ooze sea orach sea orange sea ore sea otter sea owl sea oxeye sea-packed sea palm sea panther sea park sea parrot sea parsley sea parsnip sea partridge sea pass sea pay sea pea sea peach sea pear sea peat sea pen sea perch sea perils sea pheasant sea pie sea piet sea pig sea pigeon sea pike sea pimpernel sea pincushion sea pine sea pink sea plain seaplane carrier sea plantain sea plume sea poacher sea poker sea poppy sea porcupine sea post sea post office sea potato sea-potent sea power sea preacher sea pumpkin sea purse sea purslane sea puss Sea quadrant sea quail sea-racing sea radish sea ragweed sea ragwort sea rat sea raven search coil search ephemeris search lamp searchlight lantern search room search warrant sea reach sea reed sea rim sea road sea robber sea robin sea rocket sea rod sea room sea rosemary sea-rounded sea rover sea-roving sea ruffle sea-run sea-running sea-sailing sea salmon sea salt sea sand sea sand grass sea sandpiper sea sand reed sea sandwort sea scallop sea-scented sea scorpion sea-scourged sea scout sea scouting sea sedge sea serpent sea service sea shell seashell pink seashore heliotrope seashore pea sea-shouldering sea shrub seaside alder seaside arrowgrass seaside aster seaside balsam seaside bean seaside bent seaside brome grass seaside crowfoot seaside daisy seaside finch seaside gerardia seaside goldenrod seaside grape seaside heliotrope seaside laurel seaside millet seaside morning-glory seaside oat seaside oxeye seaside pea seaside pimpernel seaside pine seaside plantain seaside plum seaside poppy seaside radish seaside sandwort seaside sparrow seaside spurge sea silk sea sled Sea sled sea slope sea slug sea snail sea snake sea snipe sea soldier season check season crack season ticket sea spear grass sea spider sea spleenwort sea squirt sea stack sea staff sea star sea starwort sea steps sea stickleback sea stores sea sulphurweed sea surgeon sea-surrounded sea swallow sea-swallowed sea swine sea tangle seat arm seat back seat bath seat board seat bone seat clip seat cover seat coverer seat designer sea term sea thief sea thong sea thrift sea time sea titling seat maker seat making seat-mile sea toad sea-torn sea tortoise sea-tossed sea-tost sea town seat owner sea-traveling sea tree sea trout sea trumpet sea turn sea turnip sea turtle sea twine seat worm sea unicorn sea urchin sea valve sea vampire sea wall sea-walled sea walnut sea wand sea-wandering sea-washed sea-water sea wax sea-weary seaweed fern seaweed glue seaweed green seaweed isinglass sea wheat sea whip sea whipcord sea whiplash sea whistle sea-wide sea widgeon sea-wildered sea willow sea withwind sea wolf sea woodcock sea worm sea wormwood sea wrack sea-wrecked Sebago salmon se-baptism se-baptist Sebastopol goose secale cornutum secondary school second base second-class second-cut second-cut file second-degree second-feet second-first second-floor second-foot second-growth second hand second-order reaction second person second-rate second-rateness second-rater second-sighted second-sightedness seconds pendulum second story second-touch secretaries-general secretary bird secretary bookcase secretary-general secretary-treasurer secret-false secreto-inhibitory secret order section bar section boss section crew section cutter section gang section hand section line section man section modulus section paper section plane sector disk sector gear sector wheel Security council sedan chair sedan landaulet sedan limousine sedative salt sedge bird sedge cane sedge family sedge fly sedge grass sedge hen sedge root sedge warbler sedge wren sedimentation test sediment bulb sedition-proof seduction-proof Seebeck effect see-bright seed ball seed beetle seed coat seed coral seed-corn seed-corn maggot seed cotton seed crown seed down seed feed cup seed fern seed fish seed hair seeding plow seed-lac seed leaf seed mesquite seed oyster seed pearl seed plant seed planter seed plat seed plate seed plot seed plow seed pod seed screener seed snipe seed stitch seed tick seed treatment seed tree seed vessel seed weevil see-er see-ho seeing glass seenie bean segmentation cavity segmentation nucleus segmentation sphere segment gear segment rack sego lily seine gang seizing truck seldom ever selection forest selection principle selection system selection value selective-head selective-head lathe selector switch selenium cell selenographic chart self-abandon self-abandoned self-abandoning self-abandoningly self-abandonment self-abased self-abasement self-abasing self-abdication self-abhorrence self-abhorring self-ability self-abnegation self-abnegatory self-abominating self-absorbed self-absorption self-abuse self-abuser self-accorded self-accusation self-accusative self-accusatory self-accused self-accuser self-accusing self-acknowledged self-acquaintance self-acquainter self-acquired self-acquisition self-acquitted self-acted self-acting self-action self-active self-activity self-actor self-actualizing self-adapting self-adaptive self-addiction self-addressed self-adhesion self-adjoint self-adjustable self-adjusting self-administer self-admiration self-admired self-admirer self-admission self-adorer self-adorned self-adornment self-adulation self-advanced self-advancement self-advantage self-advantageous self-advertise self-advertisement self-advertiser self-advertising self-affair self-affected self-affecting self-affectionate self-affirmation self-afflicting self-affliction self-afflictive self-affrighted self-agency self-aggrandized self-aggrandizement self-aggrandizing self-aid self-aim self-aligning self-amplifier self-amputation self-amusement self-analysis self-anatomy self-angry self-annealing self-annihilated self-annihilation self-answering self-antithesis self-apparent self-applauding self-applause self-applausive self-application self-applied self-applying self-appointed self-appointment self-appreciation self-approbation self-approval self-approved self-approver self-approving self-arched self-arching self-arising self-asserting self-assertingly self-assertion self-assertive self-assertively self-assertiveness self-assertory self-assumed self-assuming self-assumption self-assurance self-assured self-attachment self-attracting self-attraction self-attractive self-attribution self-auscultation self-authority self-authorized self-aware self-awareness self-bailing self-balanced self-banished self-banishment self-baptizer self-basting self-beautiful self-beauty self-bedizenment self-befooled self-begetter self-begotten self-beguiled self-being self-belief self-benefit self-besot self-betrayal self-betrayed self-betraying self-betrothed self-binder self-binding self-black self-blame self-blamed self-blessed self-blind self-blinded self-blinding self-blood self blue self-boarding self-boasted self-boasting self-boiled self-bored self-born self-buried self-burning self-canceled self-canting self-capacity self-captivity self-care self-castigation self-catalysis self-causation self-caused self-center self-centered self-centeredly self-centeredness self-centering self-centerment self-centralization self-centration self-chain self-changed self-changing self-charging self-charity self-chastisement self-cheatery self-checking self-chosen self-clamp self-cleaning self-clearance self-closed self-closing self-cocker self-cocking self-cognizably self-cognizance self-coherence self-coiling self-collected self-collectedness self-collection self-color self-colored self-combating self-combustion self-command self-commande self-commendation self-comment self-commissioned self-committal self-committing self-commune self-communed self-communicative self-communing self-communion self-comparison self-compassion self-compensation self-competition self-complacence self-complacency self-complacent self-complacential self-complacently self-complaisance self-completion self-composed self-composedly self-composedness self-comprehending self-comprised self-conceit self-conceited self-conceitedly self-conceitedness self-conceived self-concentered self-concentrated self-concentration self-concept self-concern self-concerned self-concerning self-concernment self-condemnable self-condemnant self-condemnation self-condemnatory self-condemned self-condemnedly self-condemning self-condemningly self-conditioning self-conduct self-confessed self-confidence self-confident self-confidently self-confiding self-confinement self-conflict self-conflicting self-conformance self-confounding self-confuted self-congratulating self-congratulation self-congratulatory self-conjugate self-conjugately self-conjugation self-conquest self-conscious self-consciously self-consciousness self-consequence self-consequent self-conservation self-conservative self-conserving self-consideration self-considering self-consistency self-consistent self-consistently self-consoling self-consolingly self-constituted self-consumed self-consuming self-consumption self-contained self-containedly self-containedness self-contained ornament self-containing self-containment self-contemner self-contempt self-content self-contented self-contentedly self-contentedness self-contentment self-contracting self-contraction self-contradicter self-contradicting self-contradiction self-contradictory self-control self-controlled self-controller self-controlling self-convened self-converse self-convicted self-conviction self-cooking self-cooled self-correction self-corrective self correlation self-correspondent self-corresponding self-corrupted self-coupler self-covered self-cozening self-created self-creating self-creation self-creative self-credit self-credulity self-criticism self-cruel self-cruelty self-culture self-culturist self-cure self-cutting self-damnation self-danger self-deaf self-debasement self-debate self-deceit self-deceitful self-deceitfulness self-deceived self-deceiver self-deceiving self-deception self-deceptious self-deceptive self-declared self-declaredly self-dedication self-defeated self-defeating self-defended self-defense self-defensive self-defensory self-definition self-deflation self-degradation self-deifying self-dejection self-delation self-delight self-deliverer self-delivery self-deluded self-deluder self-deluding self-delusion self-demagnetizing self-denial self-denied self-deniedly self-denier self-denying self-denyingly self-dependence self-dependency self-dependent self-dependently self-depending self-depraved self-depreciation self-depreciative self-deprived self-derived self-desertion self-deserving self-design self-designer self-desirable self-desire self-despair self-destroyed self-destroyer self-destroying self-destruction self-destructive self-destructively self-detaching self-determination self-determined self-determining self-developing self-development self-devised self-devoted self-devotedly self-devotedness self-devotement self-devoting self-devotion self-devotional self-devouring self-differentiating self-differentiation self-diffidence self-diffident self-diffusion self-diffusive self-digestion self-dilation self-directed self-directing self-direction self-directive self-director self-diremption self-disapprobation self-disapproval self discharge self-discipline self-disciplined self-disclosed self-disclosing self-disclosure self-discoloration self-discontented self-discovered self-discovery self-discrepant self-discrimination self-disdain self-disengaging self-disgrace self-disgracing self-disgust self-dislike self-disliked self-disparagement self-dispatch self-display self-displeased self-displicency self-disposal self-dispraise self-disquieting self-dissatisfaction self-dissatisfied self-dissecting self-disserving self-dissociation self-dissolution self-dissolved self-distinguishing self-distrust self-distrustful self-distrusting self-disunity self-divided self-division self-doctrine self-dominance self-dominion self-donation self-doomed self-dosage self-doubt self-drawing self-drinking self-drive self-driven self-dropping self-drown self-dual self-dualistic self-dubbed self-dumping self-ease self-easing self-eating self-educated self-education self-effacement self-effacing self-effacingly self-effacingness self-effacive self-effort self-elaborated self-elation self-elect self-elected self-election self-elective self-emitted self-emolument self-employer self-employment self-emptiness self-emptying self-enamored self-enclosed self-endeared self-energizing brake self-energy self-engrossed self-engrossment self-enjoyment self-enriching self-entertainment self-entity self-erected self-escape self-essence self-essentiated self-esteem self-estimate self-estimation self-estrangement self-eternity self-evacuation self-evidence self-evidencing self-evidencingly self-evident self-evidential self-evidentism self-evidently self-evidentness self-evolution self-evolved self-evolving self-exaltation self-exaltative self-exalted self-exalting self-examinant self-examination self-examiner self-examining self-example self-excellency self-excitation self-excite self-exciter self-exciting self-exclusion self-exculpation self-excuse self-excused self-excusing self-executing self-exhibited self-exhibition self-exile self-exiled self-exist self-existence self-existent self-expansion self-expatriation self-experience self-experienced self-explained self-explaining self-explanation self-explanatory self-explication self-exploiting self-exposed self-exposure self-expression self-expressive self-extermination self-extolled self-exultation self-exulting self-faced self-fame self-farming self-fearing self-fed self-feeder self-feeding self-feeling self-felicitation self-felony self-fermentation self-fertile self-fertility self-fertilization self-fertilize self-fertilizer self-figure self-figured self-filler self-filling self-fitting self-flagellation self-flattered self-flatterer self-flattering self-flattery self-flowing self-fluxing self-focusing self-folding self-fondest self-fondness self-forbidden self-forgetful self-forgetfully self-forgetfulness self-forgetting self-forgettingly self-formation self-formed self-forsaken self-fountain self-friction self-frighted self-fruition self-fulfillment self-furnished self-furring self-gaging self-gain self-gathered self-gauging self-generated self-generation self-generative self-given self-giving self-glazed self-glorification self-glorious self-glory self-glorying self-good self-gotten self-governed self-governing self-governing dominion self-government self-gracious self-gratification self-gratulating self-gratulatingly self-gratulation self-gratulatory self-guard self-guarded self-guidance self-guiltiness self-guiltless self-guilty self-gullery self-hammered self-hang self-hardened self-hardening self-harming self-healing self-heating self-help self-helpful self-helpfulness self-helping self-helpless self-heterodyne self-hid self-hidden self-hitting self-holiness self-homicide self-honored self-hope self-humbling self-humiliation self-hypnosis self-hypnotism self-hypnotization self-idea self-identical self-identity self-idolater self-idolatry self-idolized self-idolizing self-ignition self-ignorance self-ignorant self-ill self-illumined self-imitation self-immolating self-immolation self-immurement self-immuring self-impairable self-impartation self-imparting self-importance self-important self-importantly self-imposed self-imposture self-impotent self-impregnated self-impregnating self-impregnation self-impregnator self-improvable self-improvement self-improver self-improving self-impulsion self-inclosed self-inclusive self-inconsistency self-inconsistent self incrimination self-incurred self-indignation self-induced self-inductance self-induction self-inductive self-indulged self-indulgence self-indulgent self-indulgently self-indulger self-indulging self-infection self-inflation self-inflicted self-infliction self-initiative self-injurious self-injury self-inker self-inking self-inoculation self-insignificance self-inspection self-instructed self-instruction self-instructor self-insufficiency self-insurance self-insured self-insurer self-integration self-intelligible self-intensifying self-intent self-interest self-interested self-interestedness self-interpretative self-interpreting self-interrogation self-interrupting self-intersecting self-intoxication self-introduction self-intruder self-invented self-invention self-invited self-involution self-involved self-ionization self-irony self-irrecoverable self-irrecoverableness self-irreformable self-issuing self-jealous self-jealousing self-jealousy self-judged self-judging self-judgment self-justification self-justified self-justifier self-justifying self-killed self-killer self-killing self-kindled self-kindness self-knowing self-knowledge self-known self-lacerating self-lashing self-laudation self-laudatory self-learn self-left self-leveler self-leveling self-levied self-levitation self-life self-light self-lighting self-liking self-limitation self-limited self-limiting self-liquidating self-liquidating loan self-lived self-loading self-loading dam self-loathing self-locating self-locking self-lost self-love self-lover self-loving self-lubricating self-luminescence self-luminosity self-luminous self-maceration self-mad self-made self-mailer self-mailing self-maimed self-maintenance self-making self-manifestation self-mapped self-martyrdom self-mastered self-mastering self-mastery self-mate self-matured self-measurement self-mediating self-merit self-minded self-mistrust self-misused self-mortification self-mortified self-motion self-motive self-moved self-movement self-mover self-moving self-multiplied self-multiplying self-murder self-murdered self-murderer self-mutilation self-named self-naughting self-neglect self-neglectful self-neglecting self-nourishment self-objectification self-oblivion self-oblivious self-observation self-occupation self-occupied self-offense self-offered self-offering self-oiling self-opened self-opener self-opening self-operative self-operator self-opiniated self-opiniatedly self-opiniative self-opiniativeness self-opinion self-opinionated self-opinionatedly self-opinionatedness self-opinionative self-opinionatively self-opinionativeness self-opinioned self-opinionedness self-opposed self-opposition self-oppressor self-ordainer self-originated self-originating self-origination self-ostentation self-outlaw self-outlawed self-ownership self-oxidation self-paid self-painter self-pampered self-pampering self-panegyric self-parasitism self-parricide self-partiality self-paying self-peace self-penetrability self-penetration self-perceiving self-perception self-perceptive self-perfect self-perfectibility self-perfecting self-perfectionment self-performed self-permission self-perpetuated self-perpetuating self-perpetuation self-perplexed self-persuasion self-physicking self-pictured self-pious self-piquer self-pitiful self-pitifulness self-pity self-pitying self-pityingly self-planted self-player self-playing self-pleached self-pleased self-pleaser self-pleasing self-pointed self-poise self-poised self-poisedness self-poisoner self-polar triangle self-policing self-policy self-politician self-pollinate self-pollinated self-pollination self-polluter self-pollution self-portrait self-portraitist self-posed self-posited self-positing self-possessed self-possessedly self-possessing self-possession self-posting self-postponement self-potence self-potential method self-praise self-praising self-precipitation self-preference self-preoccupation self-preparation self-prescribed self-presentation self-preservation self-preservative self-preserving self-preservingly self-pretended self-pride self-primer self-priming self-prizing self-proclaimant self-proclaimed self-procured self-procuring self-proditoriously self-produced self-professed self-profit self-projection self-pronouncing self-propagating self-propelled self-propeller self-propelling self-propulsion self-protecting self-protection self-protective self-proving self-provision self-pruning self psychologist self psychology self-puffery self-punished self-punisher self-punishing self-punishment self-punitive self-purifying self-purity self-question self-questioned self-questioning self-quotation self-raised self-raising self-rake self-rating self-reading self-realization self-realizing self-reciprocal self-reckoning self-recollection self-recollective self-reconstruction self-recording self-reduction self-reduplication self-refining self-reflection self-reflective self-reformation self-refuting self-regard self-regardant self-regarding self-regardless self-regardlessly self-regardlessness self-registering self-registration self-regulated self-regulating self-regulation self-regulative self-regulatory self-relation self-reliance self-reliantly self-relish self-relying self-renounced self-renouncement self-renouncing self-renunciation self-renunciatory self-repeating self-repellency self-repellent self-repelling self-repetition self-repose self-representation self-repressed self-repressing self-repression self-reproach self-reproached self-reproachful self-reproaching self-reproachingly self-reproachingness self-reproducing self-reproof self-reproval self-reproved self-reproving self-reprovingly self-repugnance self-repugnancy self-repugnant self-repulsive self-reputation self-rescuer self-resentment self-resigned self-resourceful self-resourcefulness self-respect self-respectful self-respectfulness self-respecting self-resplendent self-responsibility self-restoring self-restrained self-restraining self-restraint self-restriction self-retired self-revealed self-revealing self-revealment self-revelation self-revelative self-revelatory self-reverence self-reverent self-reward self-rewarded self-rewarding self-right self-righteous self-righteously self-righteousness self-righter self-righting self-rigorous self-rising self-rolled self-roofed self-ruin self-ruined self-rule self-sacrifice self-sacrificer self-sacrificial self-sacrificing self-sacrificingly self-sacrificingness self-safety self-satirist self-satisfaction self-satisfied self-satisfying self-satisfyingly self-scanned self-schooled self-schooling self-science self-scorn self-scourging self-scrutinizing self-scrutiny self-sealer self-sealing self-searching self-secure self-security self-sedimented self-seeker self-seeking self-seekingness self-sent self-serve self-service self-serving self-set self-severe self-shadowing self-shelter self-shine self-shining self-shooter self-shot self-significance self-similar self-sinking self-slain self-slaughter self-slaughtered self-slayer self-society self-solicitude self-soothing self-sophistication self-sought self-sovereignty self-sow self-sowed self-sown self-spacing self-speech self-spitted self-sprung self-stability self-starter self-starting self-steered self-sterile self-sterility self-stimulated self-stowing self-strength self-stripper self-strong self-stuck self-study self-styled self-subdual self-subdued self-subjection self-subordination self-subsidation self-subsistence self-subsistency self-subsistent self-subsisting self-substantial self-subversive self-sufficed self-sufficience self-sufficiency self-sufficient self-sufficientness self-sufficing self-sufficingly self-sufficingness self-suggested self-suggester self-suggestion self-suggestive self-suppletive self-support self-supported self-supportedness self-supporting self-supportingly self-supportless self-suppression self-suppressive self-sure self-surrender self-surrendering self-survey self-surviving self-survivor self-suspended self-suspicion self-suspicious self-sustained self-sustaining self-sustainingly self-sustainment self-sustenance self-sustentation self-sway self-tapping self-taught self-taxation self-teacher self-tempted self-tenderness self-terminating self-terminative self-testing self-thinking self-thinning self-thought self-threading self-tightening self-tipping self-tire self-tolerantly self-toning self-torment self-tormented self-tormenter self-tormenting self-tormentor self-torture self-tortured self-torturing self-transformation self-treated self-treatment self-trial self-triturating self-troubling self-trust self-trusting self-tuition self-uncertain self-unconscious self-understand self-understanding self-undoing self-uniform self-union self-unity self-unloading self-unscabbarded self-unveiling self-unworthiness self-upbraiding self-usurp self-valuation self-valuing self-variance self-vaunted self-vaunting self-vendition self-ventilated self-vexation self-view self-vindicating self-vindication self-violence self-vivacious self-vivisector self-vulcanizing self-want self-wardness self-warranting self-watchfulness self-weariness self-weary self-weight self-weighted self-whipper self-whipping self-whole self-widowered self-will self-willed self-willedly self-willedness self-winding self-wine self-wisdom self-wise self-witness self-working self-worn self-worship self-worshiper self-worshiping self-worth self-worthiness self-wounding self-written self-wrong self-wrongly self-wrought Selkirk bannock seller four selling account selling agent selling-plater selling point selling price selling race Semal laut semantic tone semaphore plant semaphore telegraph semen cinae semen contra semester hour semiair-cooled Semi-apollinarism Semi-arian Semi-arianism semi-armor-piercing Semi-augustinian Semi-augustinianism Semi-bantu Semi-belgian Semi-bessemer Semi-bohemian Semi-bolsheviki semibreve rest Semi-christian Semi-christianized semicolon butterfly semico-operative Semi-darwinian semi-diesel Semi-dutch Semi-empire Semi-euclidean Semi-frenchified Semi-gnostic Semi-gothic semi-idiocy semi-idiotic semi-idleness semi-illiterate semi-imbricated semi-immersed semi-incandescent semi-independence semi-independent semi-independently semi-indirect semi-indurated semi-inertness semi-infidel semi-infinite semi-inhibition semi-insoluble semi-insular semi-intelligent semi-intercostal semi-internal semi-interosseous semi-intoxication semi-intrados semi-invalid semi-inverse semi-ironical Semi-jesuit Semi-judaizer semilatus rectum Semi-manichaeanism seminal duct Semi-norman Semi-patriot Semi-pelagian Semi-pelagianism Semi-pythagorean Semi-romanism Semi-romanized Semi-russian Semi-sadducee Semi-sadduceeism Semi-sadducism Semi-saxon Semi-slav Semi-southern Semi-tatar Semitico-hamitic Semito-hamite Semito-hamitic Semi-tory Semi-tychonic semiwater gas Semi-zionism Semo sancus senate house senator-elect senatorial courtesy sending set sending station send-off send-out senega root senega snakeroot seneka root seneka snakeroot sengreen saxifrage senility necrosis senior checker senior high school senna family senna tree sensation-proof sense-bereaving sense-bound sense-confounding sense-confusing sense datum sense-distracted sense faculty sense finder sense form sense group sense impression sense organ sense perception sense-ravishing sense stress sense survival sensitive fern sensitol green Sensitol green sensitometric curve sensum theory sensus communis Sen-tamil sentence accent sentence adverb sentence balance sentence building sentence making sentence method sentence monger sentence pattern sentence stress sentence structure sentence tone sentimental comedy sentiment-proof sentinel crab sentry board sentry box sentry-fashion sentry go separating funnel separating power separation allowance separation center separation layer separation theorem separatory funnel sepia-colored sepia-eyed sepia paper sepia-tinted septal cartilage septal neck sept chord September elm septifragal dehiscence sequence switch sequential system sequoia pitch moth Serb-croat-slovene Serbo-bulgarian Serbo-croat Serbo-croatian sergeant armorer Sergeant baker sergeant bugler sergeant clerk sergeant cook sergeant drummer sergeant fish sergeant footman sergeant instructor sergeant major sergeant-majorship sergeant painter sergeant porter sergeant saddler sergeant schoolmaster sergeants major sergeant tailor sergeant trumpet sergeant trumpeter serial right sericite gneiss sericite schist series dynamo series motor series parallel series resonance series spectra series turn series winding series-wound serin finch serious-minded serious-mindedly serious-mindedness sermon bell serous fluid serous gland serous membrane Serpent bearer serpent cucumber serpent cult serpent eagle serpent eater serpent fern serpent fish serpent-god serpent-goddess serpent gourd serpent grass serpentine green serpent melon serpent moss serpent radish serpent-shaped serpent star serpent stone Serpollet type serrana hispana serran imperial serrate-ciliate serrate-dentate serum albumin serum anaphylaxis serum disease serum globulin serum hepatitis serum jaundice serum sickness serum therapy servant girl serve-out service ace service battery service book service box service brake service buzzer service call service cap service ceiling service charge service clasp service club service company service court service door service engineer service entrance service flag service flat service hat service line service magazine service medal service pension service pipe service plate service side service side line service squadron service stair service station service stripe service switch service tree service troop service uniform service wall serving knife serving mallet serving pantry serving stuff serving table servo control Servo-croat Servo-croatian sesame grass sesame oil sessile-eyed sessile-flowered sessile-fruited sessile-leaved set-aside set bar set book set chisel set-fair set gauge set gun set hammer set-hands set hook set-in set iron set nut setoff sheet set piece set pin set point set pot set square set-stitched sett beater settee bed set temper setter-forth setter-in setter-on setter-out setter-to setter-up setting block setting board setting circle setting coat setting day setting gauge setting hen setting node setting-out setting point setting pole setting punch setting rule setting stake setting stick setting-to setting-up setting-up exercise settle bed settle-bench settle-brain settle-down settled production settled soap settlement day settlement house settlement lease settlement sheet settling clerk settling day settling price set-to set tub set up set-upness seven-banded seven-branched seven-caped seven-channeled seven-chorded seven-cornered seven-day seven-eyed seven-eyes seven-figure seven-foot seven-formed seven-gated seven-gilled seven-hand seven-headed seven-hilled seven-hilly seven-holes seven-horned seven-inch seven-league seven-leaved seven-line seven-masted seven-mouthed seven-nerved seven-ounce seven-part seven-part time seven-piled seven-ply seven-point seven-point circle seven-poled seven-pronged seven-quired seven-sealed seven-shilling seven-shooter seven-sided seven-spotted seven-syllabled seventeen-hundreds seventeen-year seventeen-year locust seventh chord seventh day seven-thirties seven-thirty seventh nerve seven-thorned seven-tined seven-toned seven-twined seven-twisted seventy-day seventy-dollar seventy-eight seventy-eighth seventy-fifth seventy-first seventy-five seventy-foot seventy-footer seventy-four seventy-fourth seventy-horse seventy-mile seventy-nine seventy-ninth seventy-odd seventy-one seventy-second seventy-seven seventy-seventh seventy-six seventy-sixth seventy-third seventy-three seventy-ton seventy-two seventy-year seven-up seven-year several-celled several-flowered several-lobed several-nerved several-ribbed sewage disposal sewee bean sewer brick sewer builder sewer pipe sewer rat sewing awl sewing basket sewing bench sewing bird sewing board sewing cabinet sewing circle sewing class sewing cotton sewing machine sewing needle sewing press sewing school sewing silk sewing society sewing table sewing teacher sewing thread sewing tray sewing twine sewing wire sewing woman sewing work sexagesimal scale sexagesimal system Sexagesima sunday sex appeal sex cell sex chromosome sex hormone sex hygiene sex-intergrade sex-limited sex-linkage sex-linked sex pervert sexton beetle sextuple press shabby-genteel shabby-gentility shab-rag shack bait shackle bar shackle bolt shackle insulator shackle joint shad-bellied shad-blow shade-bearing shade-enduring shade-giving shade-grown shade-loving shade pine shade plant shade-seeking shad fly shad frog shading coil shadow band shadow bird shadow box shadow compass shadow cone shadow dance shadow fight shadow figure shadow line shadow nucleus shadow pantomime shadow play shadow skirt shadow stitch shadow stop shad scale shad spirit shad tree shaft alley shaft efficiency shaft eye shaft feather shaftfoot man shaft furnace shaft governor shaft grave tomb shaft head shaft horsepower shaft house shafting lathe shaft key shaft-rubber shaft sinker shaft-straightener shaft tackle shaft tunnel shagbark hickory shaggy-barked shaggy-bearded shaggy-bodied shaggy-coated shaggy-dog story shaggy-fleeced shaggy-footed shaggy-haired shaggy-leaved shaggy-mane shaggy-maned shaggy-mane mushroom shag-haired shake-bag shakebag club shakebag match shake bolt shake-cabin shake culture shakedown cruise shake-hands Shaker flannel shake-up shaking palsy shaking pudding shaking table Shalako dancer shale green shale naphtha shale oil shale spirit shallow-draft shallow-footed shallow-forded shallow-headed shallow-hulled shallow-minded shallow-read shallow-rooted shallow-rooting shallow-sea shallow-searching shallow-sighted shallow-soiled shallow-thoughted shallow-toothed shallow-waisted shallow-water shallow-witted shalom alekhem shamalo grass shama millet shame brier shame-burnt shame child shame-crushed shame-eaten shame-shrunk shame-stricken shame-swollen shame vine sham object shamrock green shamrock pea sham subject Shang-ti shank bone shank cutter shank grass shank mill shank painter shanty boat shanty-boater shanty boy shape-knife shape shifting shape target shaping dies shaping planer shard beetle shard-born shard-borne share beam share crop share head share-out share register share tenant shark barrow shark-liver shark-liver oil shark moth shark oil shark pilot shark ray shark sucker sharp-angled sharp-ankled sharp-back sharp-backed sharp-back shark sharp-beaked sharp-bellied sharp-billed sharp-biting sharp-bottomed sharp-breasted sharp cash sharp cedar sharp-clawed sharp-cornered sharp-cut sharp-cutting sharp dock sharp-eared sharp-edged sharp-elbowed sharp-eyed sharp-eyes sharp-faced sharp-fanged sharp-featured sharp-flavored sharp-freeze sharp-freezer sharp-fruited sharp-gritted sharp-ground sharp-headed sharp-heeled sharp-horned sharp iron sharp-keeled sharp-leaved sharp-looking sharp-minded sharp mixture sharp-nebbed sharp-nosed sharp-nosedly sharp-nosedness sharp-nosed shark sharp-odored sharp-petaled sharp-piercing sharp-piled sharp-pointed sharp-quilled sharp-ridged sharp sand sharp-set sharp-setness sharp-shinned sharp-sighted sharp-sightedly sharp-sightedness sharp-smelling sharp-smitten sharp-snouted sharp-staked sharp-staring sharp-tailed sharp-tasted sharp-tasting sharp-tempered sharp-toed sharp-tongued sharp-toothed sharp-topped sharp-visaged sharp-whetted sharp-winged sharp-witted sharp-wittedly sharp-wittedness shave grass shave hook shave rush shaving basin shaving board shaving box shaving brush shaving case shaving cream shaving cup shaving dies shaving glass shaving horse shaving mill shaving mirror shaving mug shaving paper shaving paste shaving powder shaving set shaving soap shaving stand shaving stick shaving strop shaving towel shaving water shawl collar shawl goat shawl loom shawl material shawl pattern shawl strap shawl waistcoat Shawver truss shea butter she-actor she-adventurer sheaf arrow sheaf catalogue she all shea-nut shea-nut oil she-ape she-apostle shear angle shear boom shear hulk shearing deformation shearing dies shearing force shearing machine shearing plane shearing punch shearing stress shearing tool shear legs shear modulus shear pin shear plane shear skid shear steel shear strain shear stress shear structure shear zone she-ass sheath gown sheathing board sheathing copper sheathing felt sheathing lead sheathing lumber sheathing nail sheathing paper sheath knife sheath moth sheath-winged shea tree she-baker she-balsam she-bear she-beech she-captain she-chattel she-costermonger she-cousin shed-builder ant shed burn she-demon she-devil she-dragon shed roof sheeling hill sheep bar sheep barn sheep bell sheep bot sheep botfly sheep boy sheep breeder sheep breeding sheep bur sheep clipper sheep clipping sheep-dip sheep dipper sheep dipping sheep dog sheep fair sheep farm sheep farmer sheep farming sheep fescue grass sheep flake sheep fly sheep gadfly sheep-grazing sheep hound sheep-hued sheep husbandry sheep killer sheep killing sheep-kneed sheep land sheep laurel sheep-lice sheep louse sheep measles sheep oat grass sheep owner sheep owning sheep parsley sheep pelt sheep pest sheep plant sheep poison sheep pox sheep rack sheep raiser sheep raising sheep range sheep reeve sheep-root sheep rot sheep run sheep scab sheep scabious sheepshead minnow sheepshead porgy sheep shears sheep-sick sheep silver sheep sorrel sheep-spirited sheep station sheep tansy sheep tick sheep wash sheep washer sheep-white sheep-witted sheer batten sheer boom sheer-built sheer draft sheer drawing sheer hook sheer leg sheer legs sheer line sheer-off sheer plan sheer pole sheer ratline sheer strake sheet anchor sheet bend sheet-block sheet bundler sheet cable sheet chain sheet erosion sheeting pile sheet iron sheet lightning sheet metal sheet mill sheet mold sheet pavement sheet pile sheet piling sheet steel sheet tin sheet watermark sheet writer she-fish she-foal she-fool she-fox she-friend she-goat she-god She-greek she-gypsy Sheikh ul islam she-ironbark she-kind she-king shelf catalogue shelf fungus shelf ice shelf ladder shelf list shelf plate shelf warmer she-lion shell auger shell bark shell bean shell bit shell boiler shell button shell chuck shell couching shell crest shell dove shell down shell drill shell edging shell eye shell feed shell fire shell game shell gland shell gray shell heap shell hole shell hooks shell ibis shell ice shell jacket shell-leaf shell-less shell-like shell limestone shell marble shell money shell mound shell parakeet shell pear shell pink shell plating shell pump shell quail shell reamer shell reducer shell road shell room shell ruching shell sac shell-shaped shell-shock shell snail shell socket shell stitch shell strake shell transformer shell turtle shell-worker shelter belt shelter deck shelter-deck vessel shelter half shelter pit shelter tent shelter trench shelterwood method she-malady she-monster she-negro shenk beer she-oak she-page she-panther Shepard king she-peace shepherd god shepherd spider shepherds-staff she-pig she-pine she pitch pine she-poet she-poetry she-preacher she-priest sherbet powder shere khan she-relative sheriff depute sheriff-pink sheriff substitute sherry brown sherry cobbler she-saint she-salmon she-school she-scoundrel she-society she-sparrow she-sun she teak she-thief Shetland lace Shetland pony Shetland sheep dog Shetland wool she-tongue she-villain she-whale she-witch she-wolf she-woman shick-shack shield arm shield-back shield-bearer shield-bearing shield-breaking shield bud shield budding shield cell shield fern shield fungus shield-headed shield-leaved shield-maiden shield roots shield-scale fungus shield-shaped shield wall shiffle-shuffle shift bid shift boss shifter fork shifting pedal shift joint shift key shift lock shift marriage shifty-eyed shilling shocker shilly-shally shilly-shallyer shim plow shim-sham Shinarump conglomerate shiner-up shingle-back shingle band shingle bolt shingle lap shingle oak shingle tree shingle weaver Shingon-shu shin guard shining flycatcher shining light shining oat grass shining willow shin oak Shin-shu shin-tangle shiny-backed ship auger ship biscuit ship boat ship borer ship breaker ship broker ship canal ship carpenter ship carpentry ship chandler ship chandlery ship control ship fever ship head ship-holder ship joiner ship ladder shiplapped lumber ship letter ship-minded ship-mindedly ship-mindedness ship money ship news ship pendulum shipper fork shipping articles shipping clerk shipping commissioner shipping-dry shipping fever shipping mark shipping master shipping note shipping office shipping order shipping room shipping ton ship pound ship railway ship rat ship-rigged ship rigger ship-shaped ship splice ship stuff ship time ship tire ship-to-shore ship writ shire borough shire day shire ground shire horse shire knight shire moot shire reeve shire town shirt board shirt dresser shirt frame shirt frill shirt front shirt ironer shirt sleeve shirt-sleeved shish kebab shittah tree shittim wood shiver spar shoal duck shoal water shock absorber shock action shock battalion shock-bucker shock bump shock cord shock corps shock dog shock force shock-head shock soldier shock tactics shock therapy shock troops shock wave shoe blacking shoeblack plant shoe block shoe board shoe boil shoe bolt shoe box shoe buckle shoe button shoe-button spider shoe cleaner shoe-cleaning shoe dauber shoe dealer shoe department shoe drill shoe dye shoe fastener shoe findings shoeing-horn shoe last shoe laster shoe leather shoeless horse shoe lifter shoe machinery shoe-make shoe mender shoe nail shoe peg shoe polish shoe polisher shoe repaired shoe shiner shoe silver shoe-spoon shoe stone shoe store shoestring catch Shoestring district shoestring fern shoestring fungus shoestring lily shoestring weed shoe tie shoe tree shoe trimmer shoggy-shoo S hook shook swarming shoot apex shooting board shooting box shooting coat shooting fish shooting gallery shooting glove shooting iron shooting lodge shooting match shooting range shooting stick shoot-off shoot-root ratio shop assistant shop bill shop chairman shop clerk shop committee shop deputy shop drawing shop fitter shop lumber shop-made shop paper shopping goods shop right shop rivet shop-soiled shop steward shore bird shore boat shore boulder shore cod shore cover shore crab shore dinner shore fast shore grape shore grass shore lark shore leave shore line shore onion shore patrol shore pay shore pine shore pipit shore snipe shore spurge shore terrace shore whiting short account short and short-arm short-armed short-awned short ballot short-barred short-barreled short-beaked short-bearded short bill short-billed short-bitten short-bladed short-bobbed short-bodied short-branched short-breasted short-breathed short-breathing short-celled short-chinned short-circuit short-circuiter short-clawed short-cloaked short column short-commons short-coupled short covering short-crested short-cropped short cross short-crowned short-cut short-cycle short-cycled short-dated short-day short demy short-distance short-docked short-drawn short-eared short end short-extend short extension short-eyed short-faced short-fed short-fingered short-finned short-footed short-fruited short game short-grained short-growing short-hair short-haired short-hair plume grass short-handled short haul short-headed short-headedness short-heeled short-horned short-jointed short-keeled short-laid short-landed short-lasting short-leaf shortleaf pine shortleaf yellow pine short-leaved short leg short-legged short-limbed short-lined short-lived short-livedness short-living short loin short-long short-lunged short-made short-manned short-measured short-mouthed short-nailed short-napped short-necked short-nighted short-nosed short order short out short particular meter short period short-period comet short-period variable short-pitch short-pitch winding short plate short-podded short-pointed short-quartered short-range short rib short-running short session short-set short-shafted short-shanked short-shelled short-shipped short-shouldered short-shucks short-skirted short-sleeved short-sloped short snorter short-snouted short-span short-spined short-spired short-spoken short-spurred short-stalked short-staple short-staple isinglass short-statured short-stemmed short step short-stepped short story short-styled short suit short-suiter short-sword short-tailed short-tempered short-term short-termed short-time short-time rating short-toed short-tongued short-toothed short-trunked short-trussed short-twisted short up short-waisted short-wall machine short wave short-weight short-weighter short-winded short-windedly short-windedness short-winged short-witted short-wool short-wooled short-wristed Shoshonean-nahuatlan shot borer shot cartridge shot-clog shot corn shot crossbow shot drill shot effect shot-free shot garland shot hoist shot hole shot-hole borer shot holing shot hooks shot lighter shot line shot locker shot-log shot metal shot plant shot-put shot-putter shot-putting shot rope shot samples shot-silk shot-stified shotten down shot tongs shot tower should-be shoulder angle shoulder arms shoulder bar shoulder belt shoulder blade shoulder block shoulder bone shoulder brace shoulder-clap shoulder-clapper shoulder clod shouldered arch shoulder girdle shoulder-high shoulder-hitter shoulder knot shoulder loop shoulder mark shoulder note shoulder point shoulder screw shoulder-shotten shoulder slip shoulder strap shoulder tuft shout song shove-hapenny shovel-beaked shovel-bladed shovel cultivator shovel-footed shovel-handed shovel hat shovel-hatted shovel-headed shovel-mouthed shovel-nosed shovel-nosed duck shovel-nosed ray shovel-nosed shark shovel-nosed sturgeon shovel plow shovel-shaped show bill show box show card show dahlia show end shower bath shower bouquet show girl show glass showing-off show-off show palce show pipe show ring show stone show-through show window show-worthy showy-flowered showy gaillardia showy-leaved showy mentzelia showy milkweed showy orchis showy portulaca showy primrose showy sunflower shrewd-brained shrewd-headed shrewd-looking shrewd-pated shrewd-tongued shrewd-witted shrew mole shriek owl shrike thrush shrike tit shrill-edged shrill-gorged shrill-toned shrill-tongued shrill-voiced shrimp catcher shrimp pink shrimp red shrinkage fit shrinkage rule shrinkage stope shrink fit shrinking fit shrinking head shrink link shrink rule shroud knot shroud-laid shroud plate Shrove cake shroving time shrub cinquefoil shrub mallow shrub oak shrub steppe shrub willow shrub yellowroot sh-sh shuck-bottom shuck spray shuffle scale shun-pike shunt circuit shunt dynamo shunt excitation shunt field shunt lamp shunt lead shunt valve shunt winding shunt-wound shut-away shut-eye shut-in shut-mouthed shut-out shut-out bid shutter box shutter dam shutter weir shutting-in shutting post shutting stile shuttle armature shuttle bone shuttle box shuttlecock-flower shuttle-core shuttle-core magneto shuttle loading shuttle race shuttle raid shuttle service shuttle shell shuttle train shuttle trip shuttle winding shuttle-witted shuttle-wound shut-up shutur sowar Siah posh sibber sauce sibby bean Siberian-americanoid siberian brown sicca rupee Sicilo-norman sick-abed sick bay sick berth sick-brained sick call sick-fallen sick-feathered sick flag sick headache sick leave sickle bar sickle bender sickle-billed sickle-billed curlew sickle-billed thrasher sickle cell sickle-cell anemia sickle feather sickle-grass sickle ham sickle-hammed sickle herb sickle hock sickle-hocked sickle-leaved sickle senna sickle-shaped sickle-tailed sick list sickly-born sickly-colored sickly-looking sickly-seeming sick market sick nurse sick-nursish sick-pale sick-thoughted Siculo-arabian Siculo-moresque Siculo-norman Siculo-phoenician Siculo-punic side action side aisle side arm side ax side band side bar side-bar keel side-bar rule side beam side-beam engine side bench side-bended side bet side box side boy side brake side-by-side side-by-sideness side-cast side chain side-chain theory side chair side chapel side chisel side-cut side cutting side delivery side door side-dress side-end side-end line side face side-flowing side-glance side-graft side-handed side-hanging side hatchet side jointer side-kick side-lever side line side-liner side-look side-looker side-lying side-necked side oats side-on side prime Sidera lodoicea siderin yellow side road sidesaddle flower side scene side-seen side-skip side-step side-stepper side stitch side-stitched side-taking sidewalk door sidewalk elevator side-wheel side-wheeler side whisker side-whiskered side-wind side-winded siding tool siding track siege artillery siege cannon siege carriage siege howitzer siege mortar siege train siege wagon Sienese school Sien-pi sierra brownbark pine sierra juniper sierra plum sierra redbark pine sieve cell sieve disk sieve maker sieve making sieve pit sieve plate sieve pore sieve tissue sieve tube sieve vessel sigh-born sighed-for sight bill sight draft sight edge sight-feed sighting angle sighting hood sighting shot sight point sight-read sight reader sight reading sight rhyme sight-see sight-seeing sight-seer sight setter sight-shot sight unseen signal alarm signal beacon signal bell signal board signal box signal fire signal flag signal gong signal gun signal halyard signal lamp signal lantern signal light signal mast signal noise ratio signal post signal red signal relay signal rocket signal service signal shot signal siren signal tower signal whistle signal wire signature mark signet ring sign factor significate form sign language sign manual sign painter sign painting silage cutter silence cloth silent area silica brick silica gel silicate cotton silicated soap silicate paint silica ware silicium bronze silicon bronze silicon carbide silicon copper silicon dioxide silicon fluoride silicon hydride silicon nitrimide silicon spiegel silicon star silicon steel silicon tetrachloride silicon tetraethyl silicon tetrafluoride silk-bark silk-bark oak silk cotton silk-cotton family silk-cotton tree silk coverer silk discharger silken-coated silken-fastened silken-leafed silken-sailed silken-sandaled silken-shining silken-soft silken-threaded silken-winged silk-family silk fowl silk gelatin silk gland silk glue silk gown silk grass silk green silk gum silk hat silk-hatted silking machine silk louse silk mercer silk mill silk moth silk muslin silk oak silk paper silk plant silk-robed silk-screen silk-screen process silk serge silk-skirted silk snapper silk-soft silk spider silk spinner silk-stocking silk-stockinged silk stretcher silk tartan silk-tassel tree silk tester silk thrower silk throwster silk tree silk vine silk weaver silk wire silkworm gut silkworm jaundice silkworm rot silkworm seed silky-barked silky-black silky grass silky-haired silky-leaved silky-looking silky oak silky-smooth silky-soft silky swallowwort silky-textured silky-voiced sill cock sill course Sillery sec sill floor sill-like silly-faced silly-facedly silo filler silt grass Siluro-cambrian silver-backed silver-bar silver-bar fish silver-barked silver-barred silver-bearded silver beard grass silver-bearing silver-bell silver-bell tree silverberry family silver-black silver-bordered silver-bright silver bromide silver-buskined silver-chased silver-chiming silver chloride silver citrate silver-clasped silver-clear silver-coated silver-colored silver-copper silver-corded silver-cupped silver cyanide silver-eddied silver-embroidered silver-eyed silver-feathered silver-fleeced silver-flowing silver-footed silver-fork silver-fronted silver fulminate silver gilt silver-glittering silver-golden silver grain silver-grained silver grass silver gray silver green silver-hafted silver-haired silver hake silver-handled silver-headed silver iodide silver lace silver-laced silver lactate silver-lead silverleaf boree silver-leafed silverleaf linden silverleaf maple silverleaf poplar silverleaf redwood silver-leaved silver-leaved linden silver-leaved nightshade silver-lined silver lining silver-mail silver-melting silver mill silver miner silver mining silver-mounted silver nitrate silver oxide silver-penciled silver-plated silver plater silver plating silver polish silver powder silver-print drawing silver-producing silver protein silver-rimmed silver salt silver-shafted silver-shedding silver-shining silver smelter silver-smitten silver-sounded silver-sounding silver-spangled silver-spoon silver-spoonism silver-spotted silver-streaming silver-striped silver-studded silver-sweet silver-swelling silver-thread silver-thread blight silver-thrilling silver-tipped silver-tongue silver-tongued silvertop palmetto silver-true silver-tuned silver-using silver-voiced silver-washed silver white silver-winged silverwing gray silver-wiry simblin cake Simhath torah simile mark Simnel sunday simon-pure simple-armed simple-faced simple-headed simple-leaved simple-life simple-lifer simple-mannered simple-minded simple-mindedly simple-mindedness simple-rooted simple-seeming simple-stemmed simple-toned simple-tuned simple-witted sin-absolved sin-absolving sin-afflicting Sinanthropus pekinensis sinay bean sin-black sin-born sin-bred sin-burdened sin-burthened sin-chastising sin-clouded sin-concealing sin-condemned sin-consuming sin-crushed sin-drowned sin eater sin eating sine bar sine curve sine die sine galvanometer sine law sine qua non sine-qua-nonical sine-qua-noniness sine wave sinew-backed sinew-grown sinew-shrunk singhara nut singing book singing lesson singing master singing psalm singing school singing teacher singing voice single-acting single-action single-banked single-barrel single-barreled single-beat single-bitted single-blossomed single-bodied single-branch single-breasted single-caped single-cell single-celled single-chamber single-colored single-combed single-crested single-crop single-cut single-cutting single-cylinder single-deck single-decker single-disk single-dotted single doubler single-driver single-edged single-ended single-entry single-eyed single-file single-filed single-finned single-fire single-flowered single-foot single-footer single-framed single-fringed single-gear single-grown single-hander single-headed single-hoofed single-hooked single-horned single-horsed single-hung single-layer single-layered single-leaded single-leaf single-leaf ash single-leaved single-letter single-lever single-light single-line single-living single-loader single-masted single-measure single-member single-minded single-mindedly single-mindedness single-motored single-mouthed single-name single-nerved single-pass single-pen single-phase single-phaser single-piece single-pitched single-plated single-ply single-pointed single-pole single-punch single-rail single-reed single-reefed single-rivet single-riveted single-row singles court single-screw single-seated single-seater single-seed single-seed cucumber single-seeded single-shear single-sheaved single-shooting single-shot single-soled single-speech single-stage single-stepped single-strand single-strength single-stroke single-surfaced single-swing single-swing joint single-tap single-tax single taxer single-thoughted single-threaded single-throw single-throw switch single-tonguing single-track single transfer single-trip single-trunked single-twist single-twisted single-valued single-walled single-wheel single-wheeled single-whip single-wire single-wired sing-sing sin-guilty Sinico-japanese sin-indulging sinister-handed sink boat sink box sinker bar sinker boat sinker drill sinker wood sinkhole drainage sinking fund sinking-fund bond sinking head sin-laden sin-loving sin money sin-mortifying Sinn fein Sinn feiner Sinn feinism Sino-american Sino-belgian sin offering Sino-german Sino-japanese Sino-mongol Sino-russian Sino-soviet Sino-tibetan sin-proud sin rent sin-revenging sin-sick sin-sickness sin-soiling sin-sowed sin-thralled sinuate-leaved sinus arrhythmia sinus band sin-washing sin-wounded siphon alga siphon barometer siphon bottle siphon condenser siphon cup siphon gauge siphon recorder siphon slide siphon spillway si quis sirdar bearer sire-found siren song Sir john S-iron Sir rag sir-reverence sirup sorghum sisal hemp siskin parrot sister block sister cell sister fold sister-german sister hook sister keelson sister ship sister-wife sit-down sit-downer site development site land sit-in sitter-by sitter-out sitting day sitting height sitting place sitting room sitting shot sit-upon sitz bath siva-siva siva snake six-acre six-angled six-arched six-banded six-bar six-barred six-barreled six-bottle six-canted six-cent six-chambered six-colored six-cornered six-coupled six-course six-cut six-cylinder six-cylindered six-day six-dollar six-eared six-edged six-eight six-eight time six-ell six-eyed six-faced six-figured six-fingered six-flowered six-foiled six-foot six-footed six-footer six-gallon six-gated six-gilled six-grain six-gram six-gun six-headed six-hoofed six-horse six-hour six-inch six-jointed six-leaved six-legged six-letter six-lettered six-lined six-lobed six-masted six-master six-mile six-minute six-mouth six-oared six-oclock six-o-six six-ounce six-petaled six-phase six-plumed six-ply six point six-pointed six-pot six-pound six-pounder Six-principle baptist six-ranked six-rayed six-ribbed six-room six-roomed six-rowed six-second six-shafted six-shared six-shilling six-shooter six-sided six-spined six-spotted six-storied six-story six-stringed six-striped six-syllable sixteen-foot sixteen-foot stop sixteen-pounder sixteenth note sixteenth rest sixth chord sixth-floor sixth-form sixth-grade sixth nerve sixth-rate six-three-three six-time six-ton sixty-eight sixty-eighth sixty-fifth sixty-first sixty-five sixty-four sixty-fourmo sixty-fourth sixty-fourth note sixty-fourth rest sixty-nine sixty-ninth sixty-one sixty per cent sixty-second sixty-seven sixty-seventh sixty-six sixty-sixth sixty-third sixty-three sixty-two six-week six-weeks grass six-wheel six-wheeled six-wheeler six-winged six-yard six-year six-year-old size bone sizer die size roll sizer tap size stick sizing tool sizzling heat skate sailing skean dhu skeel duck skeel goose skeeling goose skeen arch skeleton company skeleton construction skeleton dance skeleton drill skeleton girder skeleton key skeleton leaf skeleton movement skeleton pattern skeleton proof skeleton regiment skeleton shrimp skeleton suit skelpie-limmer skene arch sketch book sketch plan sketch plate Skew curve skewer-up skew-gee skew-symmetric skew table skid box skid chain skidding hooks skidding sled skidding trail skid engine skid fin skid platform skid road skid row ski jump ski lift skillet chopper skill facet skill-less skill-lessness skimble-scamble skim coat skim colter skim gate skimmer cake skimmer scoop skim milk skimming back skimming dish skimming gate skimmington ride skimper-scamper skin beetle skin boat skin book skin-breaking skin-built skin-clad skin-clipping skin coat skin-deep skin-devouring skin effect skin friction skin game skin graft skin mark skinning knife skinning loam skinny-necked skin-peeled skin-piercing skin-plastering skin resistance skin-shifter skin spot skin-spread skin test skin-testing skin wool skip distance skip elevator skip hoist skipjack pike skip numbering ski pole skipping rope skirmish drill skirmish line skirt cassock skirt dance skirt-dancer skirting board skirting table skirt marker ski stick ski suit skittle alley skittle ball skittle pool skittle pot skittle-shaped skrim shander skua gull skull-built skullcap speedwell skull-covered skull cracker skull-crowned skull-dividing skull-hunting skull-less skull-like skull-lined skunk bear skunk bird skunk blackbird skunk cabbage skunk currant skunk grape skunkhead coot skunk-headed skunk mushroom skunk plant skunk porpoise skunk spruce skunk turtle sky advertising sky-aspiring sky-blasted sky-blue sky-born sky-bred sky-capped sky-cast sky-clad sky-clear sky-cleaving sky-climbing sky-color sky-dome sky drain sky-dyed sky-elephant sky-engendered sky-facer sky-falling sky farmer sky-gazer sky-god sky gray sky-high sky hooker sky iron sky-kissing sky-line sky-line logging sky map sky-measuring sky parlor sky pilot sky pipit sky-planted sky-reaching sky-rending sky-resembling sky-ruling skysail pole skysail-yarder sky-scaling sky shade sky sign sky-throned sky-tinctured sky-touching sky train sky truck sky wave sky-worn slabbing cutter slabbing machine slabbing mill slab bridge slab house slab line slab mill slab reef slab-sided slab-sidedly slab-sidedness slab tie slack-bake slack-baked slack barrel slack coal slack cooperage slack-filled slack filling slack jaw slack-jawed slack-laid slack-salted slack-twisted slack-water slag cement slag concrete slag furnace slagging furnace slagging hole slag hearth slag sand slag-tap furnace slag wool slake trough slam-bang slam bidding slang-whang slang-whanger slant culture slant dam slant-eyed slant height slant-top slap-bang slap-bang shop slap-dab slap-sided slap-slap slap-up slash bar slash-grain slash pine slat-back slat bonnet slate ax slate bed slate-beveling slate black slate blue slate-brown slate cement slate clay slate-color slate-colored slate-cutting slate-formed slate galiot slate gray slate green slate olive slate pencil slate picker slate purple slate spar slate-spired slate splitter slate-strewn slate-trimming slate-violet slate writer slate writing slat sign slaughter-breathing slaughter-dealing slaughter pen slaughter-threatening slaughter tree slave ant Slave bracelet slave broker slave-carrying slave clock slave-collecting slave-cultured slave dealer slave dealing slave-deserted slave-drive slave driver slave-enlarging slave fork slave-got slave-grown slave hunt slave hunter slave hunting slave maker slave-making slave market slave-owning slave-peopled slave ship slave song slave trade slave trader slave trading Slavo-germanic Slavo-hungarian Slavo-lettic Slavo-lithuanian Slavo-phoenician Slavo-teuton Slavo-teutonic sleave silk sled cultivator sled dog sledge chair sledge dog sledge hammer sled harvester sled knife sled lister cultivator sled-log sled marker sleek-browed sleeker-up sleek-faced sleek-haired sleek-headed sleek-leaf sleek-looking sleek-skinned sleek stone sleep-bedeafened sleep-bringing sleep-causing sleep-compelling sleep-created sleep-desiring sleep-dewed sleep-dispelling sleep-disturbing sleep drink sleep-drowned sleep-drunk sleep-enthralled sleeper shark sleep-fatted sleep-fearing sleep-filled sleep-heavy sleep-inducing sleeping bag sleeping car sleeping carriage sleeping disease sleeping draught sleeping partner sleeping porch sleeping rent sleeping sickness sleeping suit sleeping table sleep-inviting sleep-loving sleep movements sleep-procuring sleep-producing sleep-provoking sleep-resisting sleep-soothing sleep-stuff sleep-swollen sleep talker sleep talking sleep-tempting sleepy-acting sleepy disease sleepy-eyed sleepy-eyes sleepy-headed sleepy-headedness sleepy-looking sleepy sickness sleepy-souled sleepy-sounding sleepy-voiced sleet wheel sleeve axle sleeve brick sleeve button sleeve-defended sleeve dog sleeve-hidden sleeve links sleeve nut sleeve target sleeve valve sleeve waistcoat sleigh bed sleigh bell sleigh cutter slender-ankled slender-armed slender-beaked slender-billed slender-bladed slender-bodied slender-branched slender-fingered slender-finned slender-flanked slender-flowered slender-footed slender-hipped slender-jawed slender-jointed slender-leaved slender-legged slender-limbed slender-looking slender-muzzled slenderness ratio slender-nosed slender-podded slender-shafted slender-shouldered slender-spiked slender-stalked slender-stemmed slender-striped slender-tailed slender-toed slender-trunked slender-waisted slender-witted slew-eyed slew rope slice bar slice galley slicker hat slick-faced slick-haired slick-looking slick-spoken slick stone slick-talking slick-tongued slide bar slide block slide box slide bridge slide caliper slide-easy slide fastener slide film slide knot slide lathe slide pole slide rail slider crank slider-crank chain slide rest slide-rest lathe slide-rock slide rod slide rule slide shaft slide stacker slide tongs slide tool slide trombone slide valve slide-valve engine slide-wire slide-wire bridge sliding fit sliding friction sliding-gear sliding-scale sliding-scale premium slight-billed slight-bottomed slight-built slight-esteemed slight-informed slight-limbed slight-looking slight-made slight-natured slight-seeming slight-shaded slight-timbered slim-ankled slim-built slime-begotten slime-browned slime-coated slime eel slime-filled slime flux slime fungus slime mold slime pit slime-secreting slime table slime thickening slime-washed slim-jim slim-leaved slim-limbed slim-shanked slim-spired slim-trunked slim-waisted slimy-backed sling cart sling dog slinger ring sling psychrometer sling pump sling rope sling stay sling strap sling thermometer sling trot sling unloader slink butcher slink lamb slip-along slip carriage slip cheese slip cloth slipcoat cheese slip coupling slip cover slip curd slip dock slipe wool slip friction slip friction clutch slip gauge slip glaze slip grab slip hook slip jaw slip joint slip key slip kiln slip knot slip line slip mortise slip noose slip-on slip panel slipped wing slipper animalcule slipper animalcules slipper block slipper boat slipper brake slipper chair slipper drag slipper foot slipper-foxed slipper limpet slipper orchid slipper piston slipper plant slipper-root slipper-shaped slipper shell slippery-bellied slippery-breeched slippery-looking slippery-shod slippery-sleek slippery-tongued slip proof slip rail slip regulator slip ring slip rope slip seat slip shackle slip share slip sheet slip-shelled slip sill slip skid slip-skin slip stitch slip stopper slip stream slip switch slip tap slip tongue slip-tongue wheel slip-top slip-up slip ware slip washer slip wool slit band slit deal slit-eared slit-eyed slit-footed slit lamp slit-nosed slit-shaped slit tapestry slitting file slitting machine slitting saw slitting shears sliver box slob land slocking stone sloe-black sloe-blue sloe-colored sloe-eyed sloe gin sloe plum sloe thorn sloop-rigged sloop yacht slop basin slop book slop bowl slop-built slop chest slop cloth slop dealer slope arms slope-browed slope culture slope-eared slope-edged slope-faced slope form slope-lettered slope-roofed slope-sided slope-toothed slope-walled slop frock slop hand slop jar slop man slop merchant slop-molded slop molding slop-over slop padding slop pail slop room slop sink slosh wheel slot-boring slot burner slot conveyer slot-drill slot driller slot-drilling slot-drilling machine slot file sloth animalcule sloth bear slot-headed sloth monkey sloth tree slot machine slot mortise slot rail slot-spike slotting auger slotting drill slotting end mill slotting file slotting machine slot washer slot winding slough bass slough grass slough ice slow-blooded slow-breathed slow-breathing slow-breeding slow-burning slow-circling slow-combustion slow-conceited slow-contact slow-crawling slow-creeping slow-developed slow-drawing slow-drawn slow-driving slow-ebbing slow-endeavoring slow-extinguished slow-eyed slow-fingered slow-foot slow-footed slow-gaited slow-growing slow-legged slow-march slow-mettled slow-motion slow-moving slow-paced slow-run slow-running slow-sailing slow-speaking slow-speeched slow-spirited slow-spoken slow-stepped slow-sudden slow-sure slow-thinking slow-time slow-tongued slow-tuned slow-up slow-winged slow-witted slubbing billy slubbing machine sludge acid slue-footed slue rope slug-abed slug caterpillar slugging machine slugging match slug horn slug snail slug worm sluice box sluice gate sluice valve slumber-bound slumber-bringing slumber-closing slumber-loving slumber-seeking slumber-wrapt slump cone slump test slung shot slush-cast slush casting slush fund slushing oil slush lamp sly-eyed sly-looking sly-tongued sma-boukit smack boat small-acred small-ankled small-arm small-armed small-arms small-billed small-boat small-bodied small-boned small-bore small boy small-boyhood small-boyish small-brained small-caliber small-celled small-clawed small coal small-college small-colleger small-cornered small-crowned small debt small-debts court small-diameter small-drink small-eared Small-endian small-eyed small-faced small-feed small-finned small-flowered small-footed small-framed small-fruited small-fry small goods small-grain small-grained small-habited small-handed small-headed small-hipped small-horned small-jointed small-leaved small-letter small-limbed small-looking small-lunged small-minded small-mindedly small-mindedness small-nailed small-natured small-paneled small-paper small-part small-pattern small-petaled small-pored smallpox plant smallpox-proof small-preferred small-reasoned small-scale small-scaled small-shelled small-size small-sized small-souled small-spaced small-spotted small stores small-tailed small-talk small-threaded small-timbered small time small-tired small-toned small-tooth small-toothed small-topped small-town small-trunked small-type small-visaged small-visioned small-wheeled small-windowed small years smalt-blue smalt green smart aleck smart-alecky smart-built smart-cocked smart-dressing smart-looking smart-spoken smart-stinging smart-talking smart-tongued smart-witted smashboard signal smasher hammer smasher hat smashing machine smash piecer smear campaign smear culture smear dab smear dock smear ware smear word smegma bacillus smeller-out smell-feast smelling bottle smelling salts smelling-stick smell-less smell-smock smick-smack smick-smock smiddy-leaves smilax family smileage book smile-covering smiled-out smile-frowning smile-tuned smile-wreathed smithing coal smithy coal smiting line smock-faced smock frock smock-frocked smock marriage smock mill smock windmill smoke arch smoke ball smoke-begotten smoke-black smoke-bleared smoke-blinded smoke-blue smoke bomb smoke-bound smoke-brown smoke-burning smoke cat smoke-colored smoke-condensing smoke-consuming smoke-consumptive smoke-curing smoke curtain smoke-dried smoke-dry smoke-dyed smoke-eating smoke-enrolled smoke-exhaling smoke explosion smoke-filled smoke-gray smoke-grimed smoke helmet smoke hole smoke kiln smoke-laden smoke-oh smoke-paint smoke-pennoned smoke pipe smoke plant smoke-preventing smoke-preventive smoke proof smoke quartz smoke room smoke sail smoke screen smoke-selling smoke shelf smoke shop smoke-smothered smoke-sodden smoke-stained smoke stop smoke talk smoke-torn smoke tree smoke-vomiting smoke washer smoke-wreathed smoke-yellow smoking bean smoking car smoking concert smoking duck smoking jacket smoking lamp smoking opium smoking room smoky-bearded smoky-blue smoky-colored smoky-flavored smoky-looking smoky-smelling smoky-tinted smoky-waving smooth-ankled smoothback flounder smooth-barked smooth-bedded smooth-bellied smooth-billed smooth-bodied smooth-browed smooth-cast smooth-cheeked smooth-chinned smooth-clouded smooth coat smooth-coated smooth-coil smooth-combed smooth-core smooth-crested smooth-cut smooth-dittied smooth-edged smooth-face smooth-faced smooth-famed smooth-fibered smooth-finned smooth-flowing smooth-foreheaded smooth-fronted smooth-fruited smooth-gliding smooth-going smooth-grained smooth-haired smooth-handed smooth-headed smooth-hewn smoothing box smoothing iron smoothing mill smoothing plane smooth-leaved smooth-legged smooth-limbed smooth-looking smooth-necked smooth-nosed smoot hole smooth-paced smooth-plastered smooth-podded smooth-polished smooth-riding smooth-rimmed smooth-rinded smooth-rubbed smooth-running smooth-sculptured smooth-shaven smooth-sided smooth-skinned smooth-sliding smooth-soothing smooth-speaking smooth-spoken smooth-stalked smooth-stemmed smooth-surfaced smooth-tailed smooth-taper smooth-taper drift smooth-tempered smooth-tined smooth-tired smooth-tongued smooth-voiced smooth-walled smooth-winding smooth-winged smooth-working smooth-woven smooth-writing smooth-wrought smother crop smother fire smother fly smother-kiln smudge fire smug-faced smug-looking smug-skinned smut ball smut fungus smut gall smut grass smut mill smutty-faced smutty-nosed smutty-yellow snaffle bit snaffle-bridled snaffle-mouthed snaffle-reined snag boat snaggle-toothed snag tooth snag tree snail bore snail borer snail cloud snail clover snail countersink snail horn snail-horned snail-likeness snail medic snail-paced snail plant snail-seed snail shell snail-slow snail trefoil snail wheel snake bearer snake bite snake-bitten snake blenny snake boat snake-bodied snake buzzard snake cactus snake cane snake charmer snake crane snake cucumber snake dance snake-devouring snake doctor snake-drawn snake-eater snake-eating snake eel snake eggplant snake-encircled snake-engirdled snake-eyed snake feeder snake fence snake fern snake fly snake foot snake gentian snake-goddess snake gourd snake-grass snake guide snake-haired snake-headed snakehead mullet snake hole snake idol snake killer snake-killing snake leaf snake lily snake line snake mackerel snake melon snake-milk snake moss snakemouth pogonia snake-necked snake nut snake palm snake-plantain snake-set snake star snake-tressed snake violet snake-wanded snake-wigged snake-winged snake wire snake worship snake worshiper snaky-eyed Snaky-footed snaky-haired snaky-handed snaky-headed snaky-paced snaky-sparkling snaky-tailed snaky-wreathed snap-apple snap bean snap beetle snap bug snap cap snap catch snap clutch snap fastener snap-finger snap flask snap gauge snap header snaphead rivet snap hook snap link snap lock snap machine snap molder snap molding snapper-back snapper-up snapping tool snap point snap ring snap-rivet snap-roll snap shooter snap shooting snap shot snap switch snap table snap tool snap-top snap-top table snap turtle snap willow snare drum snare strainer snarling iron snatch block snatch hitch snatch team snaw-broo sneak boat sneak box sneak current sneak shooting sneak thief sneak-up sneck band sneck drawer sneck hook sneck posset sneeshing box sneeshing mill sneeshing mull sneeze gas sneezewort tansy sneezewort yarrow sneezing gas snick-and-snee snick-and-snee knife snick-a-snee snick drawer snick-snarl sniffle valve snifter valve snifting valve snipe eel snipe fly snipe hawk snipe-nosed sniper-scope snipnose mullet snip-snap snip-snappy snooker pool snore hole snore piece snotty-nosed snout beetle snout butterfly snout machine snout mite snout moth snow apple snowball bush snowball tree snow banner snow-barricaded snow bear snow-bearded snow-beaten snow-beater snow bed snow-besprinkled snow blanket snow blast snow-blind snow-blinded snow blindness snow-blown snow boot snow-bright snow-brilliant snow-broth snow bunting snow buttercup snow-capped snow-casting snow-choked snow chukor snow-clad snow-clearing snow-climbing snow cock snow-cold snow-colored snow-covered snow-crested snow-crowned snow cup snow-deep snow-drifted snow-driven snowdrop anemone snow-dropping snowdrop tree snow-drowned snow dust snow eater snow-encircled snow eyes snow-fair snow-feathered snow-fed snow fence snow field snow finch snow flea snowflower tree snow fly snow gem snow glare snow glory snow gnat snow goggles snow goose snow grass snow ground snow grouse snow guard snow-haired snow-hung snow hut snow ice snow insect snow knife snow-laden snow leopard snow light snow lily snow-limbed snow limit snow line snow-lined snow-loaded snow-mantled snow-melting snow mold snow-molded snow mosquito snow mouse snow-nodding snow owl snow panther snow partridge snow peak snow pear snow pheasant snow pigeon snow plant snow poppy snow pudding snow-pure snow quail snow rack snow-resembled snow-rigged snow-robed snow roller snow rose snow rosette snow-rubbing snow-scarred snow sheen snowshoe rabbit snow sleep snow slope snow slush snow snake snow-soft snow-sprinkled snow squall snow-still snow stream snow-swathe snow-sweeping snow-tipped snow-topped snow track snow tree snow vine snow vole snow water snow white snow-whitened snow-whiteness snow-winged snow wreath snow-wrought snowy-banded snowy-bosomed snowy-capped snowy-countenanced snowy-fleeced snowy-flowered snowy-headed snowy-vested snowy-winged snubbing post snub line snub-nosed snub post snuff bottle snuffbox bean snuffbox fern snuff brown snuff brush snuff-clad snuff color snuff dipper snuff dipping snuff-headed snuff maker snuff mill snuff mull snuff paper snuff shop snuff-stained snuff stick snuff swab snuff-taking snuff-using soak hole soaking furnace soaking pit soap apple soap ashes soapbark tree soapberry family soapberry tree soap box soap brick soap bubble soap bulb soap copper soap-fast soap fruit soap gentian soap nut soap opera soap orange soap plant soap pod soap powder soap test soap tree soapwort gentian soar falcon soar hawk sober-blooded sober-clad sober-disposed sober-headed sober-headedness sober-minded sober-mindedly sober-mindedness sober-sad sober-spirited sober-suited sober-tinted sob sister sob story sob stuff so-called so-caused Social crediters social-minded society goods Society men Society people society queen society screw society verse socio-official socket basket socket chisel socket pole socket punch socket screw socket spanner socket washer socket wrench sockeye salmon sock lamb sock lining sock suspenders so-conditioned so-considered soda alum soda ash soda ball soda biscuit soda bread soda cracker soda crystals soda feldspar soda fountain soda-granite soda jerk soda lake soda lime sodalite-syenite soda lye soda mesolite soda mica soda niter soda plant soda pop soda-potash soda-potash feldspar soda pulp soda saleratus soda soap soda waste soda water sod-bound sod-build sod cloth sod culture sod-cutting sodden-faced sodden-headed sodden-minded sodden-witted so-designated sod-forming sod grass sod house sodium acetate sodium alum sodium aluminate sodium amide sodium arsenate sodium arsenite sodium arsphenamine sodium barbital sodium benzoate sodium biborate sodium bicarbonate sodium bichromate sodium bisulphate sodium bisulphite sodium borate sodium carbonate sodium chlorate sodium chloride sodium citrate sodium cyanide sodium dicarbonate sodium dichromate sodium dioxide sodium ethylate sodium fluoride sodium hydrate sodium hydrosulphide sodium hydrosulphite sodium hydroxide sodium hypochlorite sodium hyposulphite sodium iodide sodium light sodium nitrate sodium nitrite sodium nitroprusside sodium oxide sodium perborate sodium peroxide sodium phosphate sodium salicylate sodium silicate sodium sulphate sodium sulphide sodium sulphite sodium sulphydrate sodium tetraborate sodium thiosulphate sodium tungstate sodium-vapor sod mulch sod oil sod plow sod-roofed sod webworm sofa bed sofa bedstead sofa corner sofa cover sofa cushion sofa maker sofa pillow sofa-ridden sofa seat so-fa syllables sofa table so-formed soft-armed soft-backed soft-bedded soft-bellied soft-bill soft-billed soft-blowing soft-board soft-bodied soft-boil soft-boiled soft-bone soft-bosomed soft-breathed soft-bright soft-brushing soft-circling soft-coal soft-coated soft-conched soft-conscienced soft-cored soft-couched soft-dressed soft-ebbing soft-embodied softening point soft-extended soft-eyed soft-feathered soft-feeling soft-fingered soft-finished soft-finned soft-flecked soft-fleshed soft-flowing soft-foliaged soft-footed soft-footedly soft-glazed soft-going soft-ground soft-ground etching soft-haired soft-handed soft-headed soft-headedness soft-laid soft-leaved soft-lucent soft-mannered soft-mettled soft-minded soft-murmuring soft-natured soft-nosed soft-paced soft-pale soft-palmed soft-paste soft patch soft-pated soft-pedal soft ray soft-rayed soft-roasted soft-sawder soft-sawderer soft-sealed soft-shell soft-shelled soft-shining soft-shoe soft-shouldered soft-sighing soft-silken soft-skinned soft-sleeping soft-sliding soft-slow soft-smiling soft-soap soft-soaper soft-solder soft-soothing soft-sounding soft-speaking soft-spirited soft-spleened soft-spoken soft-spread soft-spun soft-steel soft-swelling soft-tailed soft-tanned soft-tempered soft-throbbing soft-timbered soft-tinted soft-toned soft-tongued soft-treading soft-voiced soft-wafted soft-warbling soft-water soft-whispering soft-winged soft-witted soft wood soft-wooded soft-yielding soil binder soil-bound soil cap soil cement soiling crop soil miller soil mulch soil pipe soil profile soil rot soil sickness soil stack soil stain soil survey so-instructed soja bean soja-bean oil soke reeve solan goose Solanine-s solar plexus solar still solar telegraph soldering bolt soldering copper soldering iron soldering nipple soldering union soldering wig solder nipple soldier ant soldier beetle soldier bug soldier course soldier crab soldier-fashion soldier fly soldier-mad soldier orchis soldier palmer soldier sprag soldier turtle sole-beating sole-begotten sole-beloved sole blocker sole-bound sole-channeling sole-commissioned sole corporation sole cutter sole-cutting sole-deep sole-finishing sole-happy sole-justifying sole-leather sole-leather kelp sole-living sole-lying Sole marguery solemn-breathing solemn-browed solemn-cadenced solemn-eyed solemn form solemn-garbed solemn-looking solemn-mannered solemn-measured solemn-proud solemn-seeming solemn-shaded solemn-sounding solemn-thoughted solemn-toned solemn-visaged solenoid brake solent goose sole-ruling sole-saving sole-seated sole sewer sole-shaped sole sorter sole stamper sole-stitching sole-sufficient sole-thoughted sole tile sole trader sole tree sole-walking sol-fa sol-faer sol-faing sol-faist sol-fa syllables solferino red solicitor general solid-billed solid-bronze solid-browed solid-color solid-colored solid-drawn soli-deo solid-fronted solid-full solid-gold solid-headed solid-hoofed solid-horned solid-injection solid-ink solid-ivory solid-looking solid-ported solid-seeming solid-set solid-silver solid-tired solidus curve so-like Solis lacus sol-lunar solo grand solomon-gundy solo organ solo stop solo whist solubility product solution plane solution pressure solution-proof solution tension solvate theory solvent naphtha soma plant somber-clad somber-colored somber-looking somber-minded somber-seeming somber-toned so-named sonata-allegro sonata form sonder yacht song-and-dance song box song cycle song form song-fraught song maker song making song-play song-singing song sparrow song thrush song-timed song-tuned song-worthy song writer song writing sonic depth finder son-in-lawship sonnet sequence sonority syllable soola clover soon-believing soon-choked soon-clad soon-consoled soon-contented soon-descending soon-done soon-drying soon-ended soon-fading soon-known soon-mended soon-monied soon-parted soon-quenched soon-repeated soon-repenting soon-rotting soon-said soon-sated soon-speeding soon-tired soon-wearied soot-bespeckled soot-black soot-bleared soot bodies soot brown soot-colored soot-dark soot dew soot-fall soot-grimed soot-smutched soot-sowing sooty-faced sooty-mouthed sooty-planed sophistic syllogism sora rail sorb apple sorb tree sore-backed sore-beset sore-dreaded sore-eyed sore-footed so-regarded sore-pressed sore-taxed sore-toed sore-tried sore-vexed sore-wearied sore-won sore-worn sorghum brown sorghum midge sorghum smut Soroptimist club sorrel dock sorrel family sorrel tree sorrel vine sorrow-beaten sorrow-blinded sorrow-bound sorrow-breathing sorrow-breeding sorrow-bringing sorrow-burdened sorrow-ceasing sorrow-closed sorrow-clouded sorrow-daunted sorrowful tree sorrow-furrowed sorrow-healing sorrow-laden sorrow-melted sorrow-parted sorrow-ripening sorrow-seasoned sorrow-seeing sorrow-sharing sorrow-shot sorrow-shrunken sorrow-sick sorrow-sighing sorrow-sobbing sorrow-streaming sorrow-stricken sorrow-struck sorrow-tired sorrow-torn sorrow-wasted sorrow-worn sorrow-wounded sorrow-wreathen sorry-flowered sorry-looking sorter-out sorting boom sorting jack S o s so-seeming so-so so-soish sostinente pianoforte so-styled Sosva vogul so-termed so-titled souari-nut souari-nut family soubise sauce soufriere bird soul-adorning soul-amazing soul bell soul-benumbed soul-blind soul-blinded soul blindness soul-boiling soul-born soul-burdened soul-charming soul-choking soul-cloying soul-conceived soul-confirming soul-confounding soul-converting soul-corrupting soul curer soul-damning soul deafness soul-deep soul-delighting soul-destroying soul-devouring soul-diseased soul-dissolving soul-driver soul-enchanting soul-ennobling soul-enthralling soul-fatting soul-fearing soul-felt soul-forsaken soul-fostered soul-frighting soul-galled soul-gnawing soul-harrowing soul house soul-humbling soul-illumined soul-imitating soul-infused soul-killing soul-loving Soulmass day soul mate soul-moving soul-murdering soul-numbing soul-pained soul-piercing soul-pleasing soul-racking soul-raising soul-ravishing soul-rending soul-reviving soul-sapping soul-satisfying soul-saving soul scat soul scot soul-searching soul-shaking soul shot soul-sick soul-sickening soul-sickness soul silver soul-sinking soul-slaying soul sleep soul sleeper soul-stirring soul-subduing soul-sunk soul-sure soul-sweet soul-tainting soul-thralling soul-tiring soul-tormenting soul-vexed soul-wise soul-wounded soul-wounding sound-absorbing sound area sound barrier sound boarding sound bone sound booth sound bow sound box sound cage sound change sound chest sound compensation sound-conducting sound director sound-exulting sound field sound figures sound film sound-group sound hole sounding balloon sounding board sounding bottle sounding lead sounding line sounding machine sounding post sounding stop sounding tube sound-judging sound knot sound law sound lens sound line sound-making sound-minded sound money sound motion picture sound pendulum sound perimeter sound picture sound post sound-producing sound projector sound proof sound ranging sound screen sound-sensed sound-set sound shadow sound shifting sound-sleeping sound stage sound-stated sound-stilling sound-sweet sound-thinking sound track sound wave sound-winded sound-witted sound wormy soup cup soup-fin shark soup house soup kitchen soup plate soup shop soup stock sour-blooded sour-breathed source book source material sour-complexioned sour-eyed sour-faced sour-featured sour-headed sour-looked sour-looking sour-natured sour-sap sour-sap disease sour-smelling sour-sweet sour-tasted sour-tasting sour-tempered sour-tongued sour-visaged sous-lieutenant sou-southerly sous-prefect South african South american South arabic south-blowing south-borne South carolinian South dakotan South devon south-facing south-following south-preceding South sea islander south-seaman south-seeking south-side South slavs south-southeast south-southeasterly south-southeastward south-southerly south-southwest south-southwesterly south-southwestward South temperate zone souvenir book souvenir day souvenir hunter souvenir spoon sovereign pontiff sow bug sower type sow fennel sow-gelder sow grass so-wise sow thistle sow-tit soya bean soya-bean oil soybean oil soy pea space bar space centrode space charge space-charge effect space-cramped space curvature space curve space-embosomed space error space factor space-filling space formula space isomerism space key space-lattice space line space motion space-occupying space-penetrating space perception space-pervading space-piercing space-polar space quadrature space ratio space rule space-spread space telegraphy space telephony space-thick space-time space variation space velocity space washer space-world space writer spade bayonet spade beard spade-bearded spade cassino spade convention spade-cut spade-deep spade-dug spade face spade foot spade-footed spadefoot toad spade-fronted spade graft spade grass spade guinea spade handle spade iron spade lug spade maker spade money spade press spade-shaped spade-trenched spading fork spading harrow spalling hammer span blocks span-counter span dog spandrel frame spandrel step spandrel wall span-farthing spangle-baby spang-new span-hapenny span iron Spanish american Spanish-arab Spanish-arabic Spanish-barreled Spanish-born Spanish-bred Spanish-brown Spanish-built Spanish-flesh Spanish-indian Spanish-looking Spanish-ocher Spanish-phoenician Spanish-portuguese Spanish-red Spanish-speaking Spanish-style Spanish-top Spanish walnut Spanish-walnut oil Spanish wine Spanish yellow spanker boom span-long spanner-tight span-new span roof span shackle spar bridge spar buoy spar ceiling spar deck spar-decked spar-decker spare-bodied spare-built spare-fed spare-handed spare-handedly spare-looking spare-set sparge pipe spark advance spark arrester spark coil spark condenser spark discharge sparked-back spark frequency spark gap spark generator sparking lamp sparking points spark instant spark knock spark lead sparkle-blazing sparkle-drifting sparkle-eyed sparkle metal spark lever sparkling synchysis spark micrometer spark-over spark-plug spark potential spark spectrum spark transmission spark transmitter sparling fowl sparring partner sparrow-billed sparrow-blasting sparrow-colored sparrow dust sparrow-footed sparrow hawk sparrow owl sparrow pecking sparrow-tail sparrow-tailed sparrow-witted sparse-flowered spart grass spar torpedo spar tree spar varnish spatling poppy spatter cone spatter dash spatter pipe spatting stick spatulate-leaved spawn brick spawn fungus speak-easy speaker hole speaker key speaking arc speaking part speaking pipe speaking rod speaking stop speaking terms speaking trumpet speaking tube spear-bearing spear bed spear-bill spear-billed spear-bound spear-brandishing spear-breaking spear crowfoot spear-fallen spear-famed spear foot spear grass spear hand spear-headed spear-high spear hook spear javelin spear kin spear lily spearmint oil spear-nosed spear-pierced spear plate spear play spear point spear-pointed spear pyrites spear rest spear rod spear-shaking spear-shaped spear-skilled spear-splintering spear-swept spear thistle spear thrower spear-throwing spear widgeon spear-wielding special-delivery special jury special-process specialty contract specie payment specie point Species hamburgenses species pectorales specific gravity specific-gravity balance specific-gravity bottle specific-gravity bulbs specimen plant specious present speck block speckle-backed speckle-bellied speckle-billed speckle-breasted speckle-coated speckle-faced speckle loon speckle-marked speckle perch speckle-skinned speckle-starred speckle trout spectacle coot spectacle frame spectacle furnace spectacle iron spectacle stone specter bat specter candle specter crab specter-fighting specter-haunted specter lemur specter-looking specter-mongering specter-pallid specter shrimp specter-staring specter-thin specter-wan spectrum analysis spectrum color spectrum locus speculum metal speech area speech-bereaving speech-bereft speech-bound speech center speech choir speech community speech curve speech defect speech-famed speech-flooded speech form speech house speech island speech map speech melody speech reading speech-reporting speech rhythm speech room speech-shunning speech situation speech sound speech tune speech-writing speed boss speed box speed cone speed cones speed control speed controller speed cop speed counter speed flag speed frame speed gauge speed gear speed indicator speeding-place speed lathe speed-length ratio speed light speed limit speed maniac speed pulley speed record speed recorder speed reducer speed rigger speed road speed sheet speed sight speed sprayer speed test speed trap speed truck speed-up Speed wagon spell-banned spell-casting spell-caught spell-free spelling bee spelling book spelling match spelling pronunciation spelling reform spelling reformer spell-invoking spell-like spell-raised spell-riveted spell-set spell-sprung spell-stopped spell-struck spell-weaving spelter calciner spelter chills spelter solder spencer mast spend-all spend-good spending money spendthrift trust spent-gnat spent-gnat fly sperm aster spermathecal gland Spermaticos logos spermatic plexus spermatic veins spermatophore sac sperm candle sperm cell sperm center sperm nucleus sperm oil sperm receptor sperm sac sperm whale sperm-whale porpoise sperm whaler sperm whaling spewing sickness spey cast sphae-ropsidaceous sphagnum bog sphagnum frog spheno-occipital sphere-born sphere circle sphere crystals sphere-descended sphere-filled sphere-found sphere fungus sphere gap sphere geometry sphere-headed sphere tracks sphere-tuned spherometer caliper sphinx baboon sphinx caterpillar sphinx moth spice ball spice-bearing spice birch spice box spice-breathing spice-burnt spicebush swallowtail spice currant spice-fraught spice grinder spice-laden spice mill spice nut spice plate spice shop spice store spice trade spice tree spice-warmed spick-and-span spick-and-spandy spick-and-spanness spick-span-new spicy fleabane spider ant spider band spider beetle spider bug spider cart spider catcher spider cell spider crab spider diver spider eater spider fern spider-fingered spider fly spider grass spider hoop spider hunter spider leg spider-legged spider-leggy spider lily spider-limbed spider line spider mite spider monkey spider nevus spider orchid spider orchis spider phaeton spider plant spider-shanked spider shell spider-spun spider stitch spider wagon spider wasp spider web spider-webby spider wheel spiderwort family spiegel charger spiegel iron spigot joint spike-billed spike buck spike disease spike grass spike heath spike heel spike-horned spike-kill spike knot spike lavender spike-lavender oil spike-leaved spike nail spikenard tree spike oil spike-pitch spike-pitcher spike rush spike shell spiketail coat spike-tailed spiketail family spike team spike-tooth spike-tooth harrow spike tub spiking piece spile driver spiling batten spill box spillet fishing spilling line spill stream spinach beet spinach blight spinach-colored spinach dock spinach flea beetle spinach green spinach yellows spindle bander spindle-cell spindle-celled spindle-cell sarcoma spindle fiber spindle file spindle-formed spindle-legged spindle oil spindle-pointed spindle pointer spindle-rooted spindle sander spindle-shanked spindle-shaped spindle shell spindle-shinned spindle sprout spindle step spindle stone spindle stretcher spindle stromb spindle temper spindle tree spindle tuber spindle whorl spindling sprout spine-ache spine-breaking spine-broken spine cell spine-clad spine-covered spine-finned spine-headed spinel group spinel pink spinel-red spinel ruby spine-pointed spine-protected spine-rayed spine-tailed spine-tailed swift spinet desk spine-tipped spin house spinnaker boom spinning axis spinning frame spinning gland spinning house spinning jenny spinning lathe spinning machine spinning mammilla spinning mite spinning tube spinning wheel spinocerebellar tract spino-olivary spino-olivary tract spinous-branched spinous-finned spinous-foliaged spinous-leaved spinous-pointed spinous process spinous-serrate spinous-tailed spinous-tipped spinous-toothed spiny-backed spiny bur spiny-coated spiny-crested spiny-finned spiny-footed spiny-fruited spiny-haired spiny-leaved spiny-legged spiny-margined spiny-pointed spiny ray spiny-rayed spiny-ribbed spiny-skinned spiny-tailed spiny-tipped spiny-toothed spiral-coated spiral gear spiral-geared spiral-grooved spiral-horned spiral-nebula spiral-nebula hypothesis spiral-pointed spiral shell end mill spiral-spring spiral stairs spiral-vane spire-bearer spire-shaped spiric body spirit-awing spirit blue spirit-boiling spirit-born spirit-bowed spirit-bribing spirit-broken spirit butterfly spirit-cheering spirit-chilling spirit-crushed spirit-crushing spirit-drinking spirit duck spirit-fallen spirit-freezing spirit-froze spirit-guided spirit-haunted spirit-healing spirit-inspiring spirit level spirit leveling spirit-lifting spirit-marring spirit-numb spirit-piercing spirit-possessed spirit-prompted spirit-pure spirit-quelling spirit rapper spirit rapping spirit-refreshing spirit-rousing spirit-sinking spirit-small spirit-soothing spirit-speaking spirit-stirring spirit-stricken spirit-thrilling spirit-torn spirit-troubling spiritual-minded spiritual-mindedly spiritual-mindedness spirituous tincture spiritus asper spiritus camphorae spiritus frumenti spiritus lenis spiritus mundi spirit varnish spirit vinegar spirit-walking spirit-wearing spirit-wise spirit world spirit writing spirketing plate spiro compound spit bug spit curl spite fence spite wall spite work spit image spitting cobra spitting image spitting snake spittle fly spittle insect spitz dog splash back splash dam splash feed splash-lubricate splash lubrication splash system splash-tight splat-back splatter-faced splay-edged splay-kneed splay-legged splay-toed spleen amaranth spleen-born spleen-devoured spleen-pained spleen-piercing spleen-shaped spleen-sick spleen stone spleen-struck spleen-swollen spleenwort bush splice bar splice box splice graftage splice grafting splicing chamber splicing hammer spline broach spline milling machine spline shaft spline weight splint armor splint bar splint basket splint bone splint-bottom splint-bottomed splint coal splinter bar splinter bulkhead splinter deck splint peeler splish-splash split-bottom split-eared split-edge split-level split-lift split-mouth splitmouth sucker split-nosed split nut split-oak split-phase split second split shot split stroke split-timber splitting chisel splitting factor splitting gun splitting plate split-tongued split turning split-up split wheel split wing splitworm moth spoil bank spoil ground spoil-mold spoil-paper spoils system spoke auger spoke stitch spondylitis deformans sponge bath sponge-bearing sponge cloth sponge-colored sponge cucumber sponge diver sponge-diving sponge drop sponge fisher sponge fisherman sponge-fishing sponge-footed sponge gourd sponge grafting sponge hook sponge iron sponge-leaved sponge-painted sponge-shaped sponge tree sponging house spongy-flowered spongy-footed spongy-looking spongy-rooted spongy-wet spongy-wooded spon-image spool bed spooling bracket spool-shaped spool turner spool winder spoon-back spoon bait spoon-beaked spoon-billed spoon bit spoon bow spoon-bowed spoon brake spoon bread spoon chisel spoon end spoon-fashion spoon-fashioned spoon-fed spoon-feed spoon-feeding spoon food spoon-formed spoon gouge spoon hook spoon iron spoon lever spoon meat spoon nail spoon net spoon oar spoon-shaped spoon tool spoon victual spoonwood ivy spore ball spore case spore cell spore fruit spore mother cell spore print spore sac sport-affording sport clothes sport-giving sport-hindering sporting blood sporting book sporting editor sporting house sporting man sporting page sporting section sporting-wise sport-loving sport-making sports clothes sports editor sports page sports section sport-starved spot ball spot-barred spot-billed spot blotch spot board spot card spot check spot cotton spot-drill spot dyeing spot-eared spot-face spot-grind spot lamp spot-leaved spot lens spot lighting spot-lipped spot map spot-mill spot news spot pawn spot price spot rot spot-soiled spot stroke spotted-beaked spotted-bellied spotted-billed spotted-breasted spotted-eared spotted fever spotted-fever tick spotted-finned spotted-leaved spotted-necked spotted-tailed spotted-winged spotting machine spotting motion spot weld spot welding spot white spot-winged spot zone spout adz spout fish spout hole spouting horn spout shell spraddle-legged sprag road sprain fracture sprangle-top sprat barley sprat borer sprat day sprat loon spray carburetor spray-casting spray-decked spray drain spray gun spray nozzle spray outfit spray-shaped spray-topped spray-washed spray-wet spread-eagle spread-eagleism spread-eagleist spreader car spreading board spreading machine spread reflection spread-set spread sheet sprig-bit sprig bolt sprig budding sprig-tailed spring azure spring back spring balance spring barley spring base spring beam spring beauty spring bed spring beetle spring bell spring binder spring block spring-blooming spring-blossoming spring bolt spring-born spring bows spring brass spring-budding spring caliper spring calipers spring cankerworm spring catarrh spring catch spring chair spring chicken spring-clean spring-cleaner spring-cleaning spring clip spring collet spring cotter spring cowslip spring cress spring die spring dividers spring draft gear spring-driven springer spaniel spring faucet spring fever spring flood spring-flowering spring fly spring-framed spring frog spring-gathered spring governor spring grain aphis spring grass spring green spring-grown spring gun spring-habited spring hammer spring harrow spring-headed spring heath spring heel spring-heeled spring herring spring hoe spring hook springing line springing wall spring iris spring-jointed spring key spring lamb spring latch spring leaf spring ligament spring lily spring lock spring-made spring mattress spring mushroom spring needle spring nut spring oats spring orange spring orchid spring pad spring padlock spring peeper spring-peering spring perch spring pin spring-planted spring plate spring-plow spring pole spring rail spring-rail frog spring-raised spring ring spring rye spring safety valve spring sage spring saxifrage spring scale spring scorpion grass spring seat spring-seated spring-set spring-snecked spring snowflake spring-sowed spring-sown spring-spawning spring starflower spring stay spring steel spring-stricken spring stripper spring switch spring-taught spring temper spring-tempered spring-tight spring tool spring tooth spring-touched spring-trip spring-trip hoe spring valve spring vetch spring vetchling spring vise spring washer spring water spring weir spring-well spring wheat spring wheel sprinkler head sprinkler system sprint medley sprint race spritsail yard sproat hook sprocket wheel sprout cell sprouted oats sprout forest spruce yellow sprung rhythm spud casing spudding bar spule-bane spun hay spun-out spur-bearing spur bit spur blight spur bunting spur chuck spur-clad spur-driven spur-finned spur forger spur fowl spur-galled spur gear spur-geared spur gearing spur gear wheel spurge daphne spurge family spurge flax spurge ipecac spurge laurel spurge moth spurge nettle spurge olive spurge thyme spur-gilled spur grass spur-heeled spur-jingling spurling line spur mortise gear spur pepper spur pinion spur pruning spur royal spur ryal spurry sandwort spur-shaped spur shell spur shore spur stone spur-tailed spur timber spur-toed spur track spur tree spur valerian spur whang spur wheel spur-winged sputum cup squab broiler squab pie squad car squads-left squads-right squall cloud squall line squam duck squamo-occipital squanter-squash square-barred square-based square bit square-bladed square-bodied square body square-bottomed square bracket square-browed square-built square-butted square-cheeked square-chinned square contingency square-countered square-cut square dance square deal square dealing square-draw square-drill square-eared square-edged square-elbowed square-faced square-figured square file square-fronted square-headed Squarehead wheat square-hewn square-jawed square joint square-jointed square knot square-lipped square-looking square-made square mark square-marked square-meshed square-mouthed square-necked square-nosed square rig square-rigged square-rigger square-rumped square-set square-set stoping square-shafted square-shaped square-shouldered square-skirted square-stalked square-stem square-stemmed square-sterned square-tailed square-thread square-threaded square-tipped square-toed square-toedness square-toes square-topped square-towered square wave squaring lathe squarroso-dentate squarroso-laciniate squarroso-pinnatipartite squarroso-pinnatisect squash beetle squash bite squash borer squash bug squash flea beetle squash ladybird squash rackets squash tennis squash-vine borer squat board squat-bodied squat-built squat-hatted squat tag squatter sovereignty squaw carpet squaw corn squaw-drops squaw duck squaw huckleberry squawk duck squaw man squaw mint squaw vine squaw winter squeegee roller squeeze play squeeze-up squid hound squid-jigger squid-jigging squill blue squill-like squinancy berry squint brick squint-eye squint-eyed squint-eyedness squire snapper squirrel cage squirrel-colored squirrel corn squirrel cup squirrel-eyed squirrel food squirrel frog squirrel grass squirrel hake squirrel hawk squirrel-headed squirrel-limbed squirrel-minded squirrel monkey squirrel mouse squirrel phalanger squirrel plague squirrel rifle squirrels-foot fern squirrel shrew squirrel tail squirreltail grass squirrel-trimmed squirt can squirt-fire squirt gun squirting cucumber squish-squash squitch grass S ray S-shaped stab culture stable-born stable color stable fly stable oscillation stable police stab wages staccato mark stacking band stacking belt stacking swivel stack process stack room stadia hair stadia rod stadia wire staff angle staff bead staff captain staff college staff commander staff corps staff degree staff department staff-herd staff notation staff officer staff ride staff rush staff sergeant staff sling staff surgeon staff system staff tree staff-tree family staff vine staff walk stag beetle stage-blanks stage-bleed stage boat stage box stage carriage stage cloth stage coachman stage direction stage director stage door stage effect stage fright stage-frighten stage-manage stage management stage manager stage managership stage micrometer stage name stage play stage player stage playing stage right stage-set stage setter stage setting stage-struck stag-evil stage wagon stage wait stage whisper stag-eyed stag gang stagger grass staggering bob stagger spokes stagger wires stag-hafted stag-handled stag-headed stag-headedness staghorn coral stag-horned staghorn fern staghorn moss staghorn sumac stag moss stagnant-blooded stagnant-minded stagnant-souled stag-necked stag sumac stag-sure stag tick staight-bred staircase curve staircase shell stair horse stair rail stair rod stair-step stair-stepper stair tower stair turret stair well stair wire stake boat stake body stake driver stake horse stake net Stake presidency stake race stalactite vault stalagmite marble stale-drunk stale-grown stale-mouthed stale-worn stalk borer stalk disease stalk-eyed stalking-horse stalk smut stall-fed stall-feed stalling speed stallion plague stall-like stall-master stall plate stall reader stamp battery stamp book stamp booklet stamp copper stamp dealer stamp duty stamp hammer stamping ground stamping mill stamp licker stamp-licking stamp mill stamp note stamp rock stamp tax stanchion gun standard-bearer standard-bearership standard-bred standard-sized standard-wing stand-by stand-down stand-easy stander-by stand fire stand hawk stand house stand-in standing room standing vise stand method standoff coat standoff half stand oil stand rest St andrew stand-to stand-up stank hen stannel hawk staple-fashion staple fiber staple fur staple-headed staple punch staple right staple-shaped stapling machine star anise star aniseed star anise oil star antimony star apple star-aspiring star-bearing star-bedecked star-bedizened star belt star-bespotted star-bestudded star-blasting Star boat star bomb star-born star-broidered star buzzard star capsicum star catalogue star-chamber Star chamber star chart starch blue starch cellulose starch corn starch-digesting star check starch gum starch hyacinth star chickweed starch layer starch paste starch-producing starch room starch sheath starch sirup starch-sized starch star starch tree Star class star-climbing star cloud star cluster star colors star-connected star connection star coral star count star-crossed star cucumber star-decked star density star-directed star disk star-distant star-dogged star drift star drill star dust stare-about star-embroidered star-eyed star facet star-fashion star-fed star feed star fern star finch star finder starfish flower star-flowered star fort star gauge star-gazing star gear star ghost star gooseberry star grass star hummingbird star hyacinth star image star-inwrought star ipomoea star jasmine star jelly stark-awake stark-becalmed stark-blind stark-calm stark-dead stark-drunk stark-dumb stark-false stark-mad stark-naked stark-naught stark-new stark-raving stark-spoiled stark-staring stark-stiff stark-wild stark-wood star-leaved star-led star lily starling stone star lot star map star metal star motion star-mouthed star-nosed star pagoda star-paved star-peopled star pepper star phlox star pine star place star plum star point star polygon star position star-proof star quartz star ratio star reed star-ribbed star route star ruby starry-bright starry-eyed starry-flowered starry-golden starry-headed starry-nebulous star sapphire star saxifrage star-scattered star scout star-shaped star shell star shower star-skilled star skunk star slough star-spangled star spray star-staring star streaming star-studded star-surveying star-sweet star system star-taught starter-off star thistle star-throated star time starting box starting friction starting note starting post starting punch starting torque star trail start-stop switch star tulip start-up starvation wages star violet star-watching star-wearing star wheel star winding star-wise star-ypointing state-aided state-caused state-changing State council State department state-educated state-enforced state-fed stately-beauteous stately-grave stately-paced stately-sailing stately-storied stately-written state-making state-mending state mutual state note state-owned state-paid state paper state-pensioned state prison state-provided state-provisioned state-prying state-ridden state-ruling States-general state-socialist states-people state-taxed state trial state-wide state-wielding station agent station break station day station error station hospital station house station hut station jack station keeping station point station pointer station pole station selector station wagon statuary marble statue-blind statue-bordered statue maker statue making statues personal statue-turning status emphaticus statute-barred statute book statute fair statute labor statute law statute merchant statute mile statute roll statutes mixed statute staple St augustine grass stave oak stave pipe stave rhyme stay-a-while stay bar stay-bearer stay-bolt stay boom stay busk stay chain stay girder stay hole stay-in stay-in strike stay law stay-log stay pin stay plow staysail schooner stay tackle stay tap stay tube steady-eyed steady-footed steady-going steady-handed steady-headed steady-hearted steady-looking steady-minded steady-nerved steady pin steady rest steak hammer steak raid steam beer steam blow steam blower steamboat coal steamboat ratchet steam boiler steam boiler insurance steam box steam carriage steam case steam chest steam-cleaned steam coal steam cock steam coil steam color steam condenser steam-cooked steam cure steam-cut steam cylinder steam digger steam-distill steam distillation steam dome steam-dredge steam dredger steam-dried steam-driven steam drop steam drop hammer steam-eating steam-engine steam engineer steam engineering steamer anchorage steamer-borne steamer captain steamer chair steamer contract steamer crew steamer cruise steamer dock steamer duck steamer freight steamer funnel steamer hull steamer landing steamer lane steamer line steamer passenger steamer port steamer road steamer route steamer sailing steamer service steamer siren steamer smoke steamer smokestack steamer subsidy steamer ticket steamer traffic steamer travel steamer trunk steamer voyage steamer wharf steamer whistle steam excavator steam feed steam filature steam-filled steam fire engine steam fit steam fitter steam fitting steam frigate steam gas steam gauge steam-going steam gun steam hammer steam harvester steam heat steam-heated steam heater steam heating steam injector steam jacket steam jammer steam joint steam knife steam lap steam-laundered steam lead steam line steam locomotive steam loop steam mason steam metal steam molder steam navvy steam nigger steam organ steam owner steam packing steam piano steam piping steam plow steam-pocket steam point steam port steam press steam printing steam-processed steam-propelled steam pump steam ram steam-ridden steam road steam-roll steam-roller steam room steamship coal steamship company steamship freight steamship lane steamship line steamship mail steamship office steamship route steamship service steamship ticket steamship traffic steamship travel steamship voyage steam shovel steam sizes steam sloop steam stamp steam still steam table steam tackle steam thresher steam trap steam-treated steam tug steam turbine steam-turbine locomotive steam twill steam-type steam valve steam vessel steam whistle steam-wrought steel bar steel baron steel-black steel-blue steel-bound steel-bright steel bronze steel-cage steel-cage construction steel-capped steel-cased steel-clad steel-clenched steel-cold steel-colored steel company steel concrete steel construction steel-covered steel-cut steel-digesting steel drawer steel dresser steel-edged steel electrotype steel emery steel engraver steel engraving steel-faced steel factory steel fiber steel-framed steel glass steel-grained steel-graven steel-gray steel-green steel hand steel-hard steel-hardened steel-head steel-headed steel-hilted steel-lined steel magnate steel man steel manufacturer steel manufacturing steel master steel measurer steel merchant steel mill steel-nerved steel-pen steel plate steel-plated steel-pointed steel presser steel-rimmed steel-riveted steel-shafted steel share steel-sharp steel-shod steel spring steel-strong steel-studded steel-tempered steel-tipped steel-tired steel-topped steel town steel trap steel wire gauge steep-ascending steep-backed steep-bending steep-descending steep-faced steep-gabled steep-hanging steeple bellflower steeple-crown steeple-crowned steeple engine steeple hat steeple-head steeple-high steeple hunt steeple hunter steeple hunting steeple jack steeple-jacking steeple-loving steeple race steeple racer steeple racing steeple-roofed steeple-shadowed steeple-shaped steeple skull steeple-studded steeple-topped steep-pitched steep-pointed steep-rising steep-roofed steep-scarped steep-sided steep-streeted steep-to steep-up steep-walled steep-yawning steerage passenger steering arm steering axle steering box steering bridge steering column steering committee steering crutch steering engine steering fan steering fork steering gear steering handle steering head steering joint steering knuckle steering lever steering light steering line steering lock steering oar steering pillar steering wheel steer oar stellate-crystal stellate-crystal fungus stellate-pubescent stem anchor stem-bearing stem blight stem borer stem break stem-bud stem canker stem-clasping stem climber stem cutting stem eelworm stem end stem-end rot stem father stem ginger stem girdler stem leaf stem length stem mother stem rot stem rust stem sapper stem sawfly stem-sick stem sickness stem smut stem stitch stem turn stem-wind stem-winder stem-winding stem work stench bomb stencil cutter stencil cutting stencil machine stencil painting stencil paper stencil pen stenographing machine stent net stent roll step-back step-back relay step bearing step box step chair step-cline step-cone step-cone pulley step cut step dance step dancer step dancing step-down step fault step function step gauge step grate step-in step joint step-log step-off steppe cat steppe disease steppe murrain steppe rue stepping-off stepping-off place stepping-out stepping pace step rail step rate step socket step tap step terrace step turn step-up step ward step wheel stercoral ulcer stereo formula stern anchor stern-bearer stern board stern boat stern-born stern-browed stern chase stern chaser stern-eyed stern-faced stern fast stern-featured stern frame stern gallery stern-gated stern gun stern hatch stern hatchway stern hook stern-issuing stern knee stern ladder stern line stern-lipped stern-looking stern-minded stern-mouthed stern race stern rail stern sea stern-set stern sheets stern-sounding stern-spoken stern timber stern tube stern-visaged stern walk stern wave stern wheel stern-wheeler stern window sterro metal sthula sharira stick-at-it stick-at-itive stick-at-itiveness stick-back stick bean stick bug stick-button stick-candy stick caterpillar stick chair stick control stick-dice stick-ear sticker-in sticker-on sticker-up sticking piece sticking place sticking plaster sticking point sticking salve sticking tommy stick insect stick-jaw stick-lac stick-leg stick licorice stick-out stick-ride stick rider stick salve sticktight flea stick-to-itive stick-to-itively stick-to-itiveness stick-up sticky dog sticky-eyed stiff-arm stiff-armed stiff aster stiff-backed stiff-bearded stiff-bent stiff-billed stiff bit stiff-bodied stiff-bolting stiff-boned stiff-bosomed stiff-branched stiff-built stiff-clay stiff-collared stiff-docked stiff-dressed stiff-eared stiffening order stiffening truss stiff gentian stiff-grown stiff-haired stiff-horned stiff-ironed stiff-jointed stiff-jointedness stiff-kneed stiff-lamb disease stiff-land stiff-leathered stiff-leaved stiffleg derrick stiff-legged stiff-limbed stiff-lipped stiff-minded stiff-mud stiff-neck stiff-necked stiff-neckedly stiff-neckedness stiff-plate stiff-pointed stiff-rimmed stiff-rumped stiff-rusting stiff-shanked stiff-skirted stiff-starched stiff-stretched stiff-swathed stiff-tailed stiff-uddered stiff-veined stiff-winged stiff-witted stifle bone stifle-out stifle shoe stigma disk stigmal vein stilbene dye stilbine color stil-de-grain yellow stiletto fly stiletto-proof stiletto-shaped still-admired still alarm still box still-burn still-closed still-continued still-continuing still-diminishing still-existing still-fish still-fisher still-florid still-flowing still-fresh still-gazing still head still hunt still-hunter still-hunting still-improving still-increasing stilling box stilling well still life still liquor still-living still-new still-pagan still-pining still-recurring still-refuted still-renewed still-repaired still return still-rocking still-sick still-slaughtered still-unmarried still-vexed still watcher still-watching still water still-young stilt bug stilt palm stilt petrel stilt plover stilt sandpiper stilt wheel stimulus coefficient stimulus error stimulus-response stimulus threshold stimulus word sting bladder sting moth sting nettle sting ray sting winkle stink bell stink bomb stink brand stink cat stink fly stink gland stink grass stipple board stipple paper stipple streak stirrup bar stirrup bone stirrup cover stirrup cup stirrup dram stirrup glass stirrup iron stirrup leather stirrup oil stirrup pump stirrup strap stirrup-vase stir-up stitching horse stitch rivet stitch watermark stitch wheel St julien St lawrence skiff St louis St louisan St lucie cherry St mary-le-bow Stoa basileios stock account stock beer stock beet stock-blind stock block stock board stock book stock buckle stock card stock cattle stock cerificate stock change stock company stock dividend stock dove stock duck stock-dumb stock eagle stock exchange stock family stock farm stock farmer stock farming stock feeder stock fire stock gillyflower stock gold stock hawk stock horse stocking board stocking cutter stocking cutter tool stocking frame stocking hose stocking knitter stocking knitting stocking loom stocking machine stocking maker stocking making stocking needle stocking sole stocking spinner stocking stitch stocking trimmer stocking weaver stock insurance company stock ledger stock list stock lock stock market stock note stock owl stock pass stock pigeon stock pile stock power stock pump stock purse stock rail stock raiser stock raising stock rate stock receipt stock record stock room stock saddle stocks machine stock soap stock station stock-still stock tackle stock ticker stock vaccine stock whaap stock whip stole fee stole mesh stole-shaped stomach-ache stomach-achy stomach bucket stomach cough stomach-filling stomach-formed stomach-hating stomach-healing stomach piece stomach pump stomach-qualmed stomach-shaped stomach-sick stomach-soothing stomach staggers stomach sweetbread stomach-tight stomach tooth stomach tube stomach-turning stomach-twitched stomach-weary stomach-whetted stomach worm stomach-worn stomodaeal food Stone age stone-arched stone-asleep stone ax stone bag stone basil stone bass stone-bladed stone-blind stone-blindness stone blue stone boiling stone bolt stone borer stone brake stone bramble stone breaker stone breaking stone brick stone-broke stone-brown stone bruise stone-buff stone-built stone butter stone canal stone cat stone cell stone circle stone-cleaving stone clover stone coal stone-coated stone-cold stone collar stone color stone-colored stone contractor stone coral stone-covered stone crab stone crayfish stone cricket stone crusher stone curlew stone-cutting stone-darting stone-dead stone-deaf stone-deafness stone devil stoned-horse stone dresser stone dressing stone-dumb stone-dust stone-eared stone-eating stone-edged stone-eyed stone-faced stone falcon stone fence stone fern stone-floored stone fly stone fox stone fruit stone grape stone gray stone green stone grig stone-ground stone hammer stone-hard stone harmonicon stone hawk stone-headed stone-horse stone jug stone leek stone lichen stone lifter stone lily stone lime stone-lined stone-living stone lugger stone marten stone mill stone-milled stone mint stone money stone-moving stone oak stone ocher stone oil stone orpine stone owl stone parsley stone-paved stone perch stone picker stone-pillared stone pine stone pit stone pitch stone plover stone proof stone rag stone-ribbed stone roller stone-rolling stone-roofed stoner-out stone rue stone run stone runner stone sclerenchyma stone shifter stone-silent stone-smickle stone snipe stone-still stone sucker stone-throwing stone thrush stone toter stone-using stone-vaulted stone wall stone-walled stone-walling stone wire stone writing stone yellow stoney gate stony-blind stony-broke stony coral stony-eyed stony-faced stony-jointed stony-pitiless stony-toed stony-winged stool end stool land stool pigeon stoop-gallant stoop-shouldered stop bead stop clock stop-cylinder press stop drill stope drill stopen bottle stop finger stop gauge stop key stop knob stop light stop list stop log stop-loss stop-loss order stop motion stop needle stop net stop nut stop-off stop-open stop order stop payment stopper bolt stopper hole stopper knot stop pin stopping condenser stopping knife stopping place stopping train stop plank stop plate stop press stop rod stop screw stop seine stop shot stop spine stop street stop stroke stop tester stop thief stop thrust stop valve stop watch stop wheel storage battery storage bellows storage cell storage egg storage rot storage spot storax benzoin storax family store card store clothes store dresser store manager store order store pay store sign stores ledger store teeth stork-billed stork-fashion storm-armed storm axis storm-beat storm-beaten storm bell storm-boding storm boot storm-breathing storm breeder storm cellar storm center storm cloud storm current storm door storm-drenched storm drum storm-encompassed storm-felled storm finch storm flag storm glass storm-god storm gray storming party storm jib storm kite storm-laden storm lane storm-lit storm mizzen storm petrel storm porch storm-portending storm-presaging storm-rent storm rubber storm sail storm sash storm serge storm sewer storm signal storm stay storm-stayed storm-swept storm thrush storm-tight storm-tossed storm trooper storm troops storm warning storm-washed storm window storm-wise storm-worn storm-wracked stormy petrel story hour story rod story writer story-writing story-wrought stout-armed stout-billed stout-bodied stout-girthed stout-legged stout-limbed stout-looking stout-minded stout-ribbed stout-sided stout-soled stout-stalked stout-stomached stout-winged stout-worded stove bolt stove coal stove distillate stove-dried stoved salt stove glass stove-heated stove heating stove length stove lifter stovepipe hat stove plant stove polish stove-warmed stow-boating stow net straddle-face straddle-fashion straddle-legged straddle mill straddle pipe straggle-brained straggle tooth stragling money straight accent straight angle straight arch straight-arm straight-backed straight-barred straight-barreled straight-billed straight-bitted straight-bodied straight-body straight-cut straight-drawn straight-edged straight face straight-faced straight-falling straight-fibered straight-flung straight-flute straight-fluted straight-front straight-going straight grain straight-grained straight-growing straight-grown straight-haired straight-hairedness straight-hemmed straight-horned straight-jointed straight-leaved straight-legged straight-limbed straight-line straight-lined straight-line-frequency straight-made straight-minded straight-necked straight-nosed straight-out straight-pull straight-ribbed straight-shaped straight-shooting straight-side straight-sided straight-sliding straight-spoken straight-stemmed straight-stocked straight-tail dog straight-tailed straight-trunked straight-tusked straight-veined straightway drill straight-winged strain band strain diagram strain ellipsoid strainer vine straining arch straining beam straining frame straining piece straining sill strain insulator strain normal strain sheet strainslip cleavage strain theory strait-besieged strait-bodied strait-braced strait-breasted strait-breeched strait-chested strait-clothed strait-coated strait-embraced strait-jacket strait-knotted strait-lace strait-laced strait-lacedly strait-lacer strait-necked strait-sleeved strait-tied strait-toothed strait-waistcoat strait-waisted strand fishery strand flat strand former strand line strand plover strand rat strand snipe strand wolf strange-achieved strange-clad strange-colored strange-composed strange-disposed strange-fashioned strange-favored strange-garbed strange-looking strange-met strange-plumaged strange-sounding strange-tongued strange-voiced strange-wayed strange woman strangled blade strangle hold strangler tree strangulated hernia S trap strap bolt strap brake strap drill strap fern strap game strap hammer strap hinge strap iron strap joint strap key strap-laid strap-leaved strap oil strap oyster strapping motion strapping plate strap rail strap railroad strap railway strap-shaped strap watch strategic line strategic point strato-cirrus Strato-cumulus stratus cumuliformis stratus maculosus straw bail straw ballot straw-barreled straw basher straw bass strawberry bass strawberry blite strawberry borer strawberry bush strawberry cactus strawberry clover strawberry comb strawberry crab strawberry crown borer strawberry crown moth strawberry fern strawberry finch strawberry fleabeetle strawberry fly strawberry geranium strawberry guava strawberry leaf strawberry leaf blight strawberry leaf roller strawberry leaf spot strawberry mark strawberry moth strawberry nettle strawberry pear strawberry perch strawberry pink strawberry raspberry strawberry roan strawberry root aphid strawberry root borer strawberry root weevil strawberry rootworm strawberry rust strawberry sawfly strawberry saxifrage strawberry shrub strawberry-shrub family strawberry spinach strawberry sunburn strawberry tassel strawberry tomato strawberry tongue strawberry tree strawberry vine strawberry weevil straw bid straw bidder straw bond straw boss straw-built straw-capped straw cat straw color straw-colored straw-crowned straw-cutting straw death straw drain straw-dried straw-emboweled straw fiddle straw hat straw-hatted straw-laid straw man straw-necked straw needle straw oil straw plait straw-plaiter straw-plaiting straw ride straw-roofed straw sedge straw-shoe straw splitter straw-splitting straw stem straw-stuffed straw-thatched straw vote straw wedding straw wine straw yellow stray energy streak culture streaked-back streak lightning streak plate stream anchor stream-bordering stream cable stream capture stream-drive stream driver stream-embroidered streamer fly stream function stream gold stream ice stream-illumed stream jam stream piracy stream tin stream wheel Street arab street band street-bred street broker street certificate street cleaner street-cleaning street coach street door street elbow street orderly street organ street-pacing street piano street plate street price street railway street-raking street-sold street-sprinkling street sweeper street-sweeping street virus St regis St regis indian strength-bringing strength change strength-conferring strength-decaying strengthening lead strength-giving strength-increasing strength-inspiring strength-restoring strength-sustaining strength-testing strenthening card Strepera graculina stress accent stress diagram stressed skin stress group stress sheet stress-strain stress-strain curve stretcher bar stretcher-bearer stretcher bond stretching course stretching piece stretch modulus stretch-out strict construction strict constructionist strict law stride-legged strident-voiced striding compass striding level strife-breeding strife-healing strife-stirring strike-a-light strike bill strike block strike board strike fault strike figure strike insurance strike joint strike knife strike measure strike note strike-out strike pan strike pay strike plate striker boat striker-out striker plate striker-up strike shift strike slip strike valley striking angle striking bag striking base striking board striking circle striking distance striking hammer striking-out machine striking pin striking plate striking reed striking solution striking stile string alphabet string bean string-binding string block string-colored string development stringer lode stringer plate string figure string galvanometer stringing course string insulator string lead string leaf string line string orchestra string organ string pea string plate string pottery string proof string pump string quartet string-soled string stop string-tailed string telephone string tie string tone string-toned stringybark pine stringy kelp stringy sap strinking-out strip count strip cropping stripe blight stripe canker striped-leaved stripe rust strip farming strip lighting strip line strip map strip method strip mine stripper-harvester strip pit strip printing strip survey strip tease strip-teaser strip template stroke culture stroke hole stroke oar stroke oarsman stroke play stroker-in strong-ankled strong-arm strong-armed strong-armer strong-backed strong-bodied strong-boned strongbox security strong-breathed strong-decked strong-elbowed strong-featured strong-fibered strong-fisted strong-handed strong-jawed strong-jointed strong-limbed strong-looking strong-lunged strong-minded strong-mindedly strong-mindedness strong-nerved strong point strong-pointed strong-quartered strong-ribbed strong room strong-scented strong-seated strong-set strong-sided strong-smelling strong-stapled strong-stomached strong-tasted strong-tasting strong-tempered strong-tested strong-trunked strong-voiced strong-weak strong-willed strong-winged strong-wristed strontia digger strontian white strontian yellow strontia process strontium hydroxide strontium nitrate strontium oxide strontium process strontium salicylate strontium white strontium yellow struck up structural engineer structural engineering structural iron structural-steel structure contours strut beam strutting piece St-simonian St-simonianism St-simonist stub axle stub-bearded stubble crop stubble-fed stubble field stubble goose stubble-loving stubble-mulch farming stubble plow stubble pulverizer stubble quail stubble rake stubble shaver stubble spurge stubborn-chaste stubborn-hard stubborn-minded stubborn-shafted stubborn-stout stubby-fingered stub-end stub-end feeder stub feather stub file stub hoe stub iron stub mortise stub nail stub pen stub-pointed stub short stub shot stub switch stub tenon stub-thatched stub-toed stub tooth stub track stub twist stucco-adorned stucco-fronted stucco-molded stucco pointer stucco-walled stuck-up stuck-upness stuck-upper stuck-uppish stuck-uppishness stuck-uppy stud block stud bolt stud book stud box stud chain studding bolt studding sail stud driver student adviser student assistant student council student hour student lamp student pastor student teacher student volunteer studhorse poker studio couch stud link stud mating stud-pink stud poker stud print stud rivet stud scab stud screw stud wall stud wheel study-bearing study-bred study-given study hall study-loving study-racked study-worn stuff chest stuffed-over stuffed shirt stuff engine stuff gown stuff hat stuffing box stuffing-box recess stuffing nut stuff-over stumbling block stumbling stone stump burning stump extractor stump-fingered stump foot stump-footed stump joint stump-jump stump jumper stump-jumping plow stump-legged stump mast stump mortise stump-nosed stump puller stump-rooted stump rot stump speaker stump speaking stump speech stump spud stump sucker stump-tail stump-tailed stump tenon stump topmast stump tracery stump tree stump wood stump work stunner hitch stunt man stupid-acting stupid-headed stupid-honest stupid-looking stupid-sure sturdy-chested sturdy-legged sturdy-limbed style branch style pen stylographic pen styloid process suan pan suarrow nut suave-looking suave-mannered suave-spoken Sub-adriatic subaltern genus Sub-apenine sub arid Sub-atlantic Sub-carboniferous Sub-carpathian Sub-christian Sub-himalayan subhymenial layer subject catalogue subject index subjectivo-objective subject matter subject-object subject-objectivity subject substantive subject term sub-jugate subjunct adjective subjunct word sublimation pressure sublimation vein submachine gun submarine chaser submarine patrol boat submerged-tube boiler Sub-mycenaean Sub-northern suboctave coupler Sub-parliament sub post office Sub-pyrenean subscription book subscription edition subscription list subsidy citizen subsidy man subsistence department subsistence stores subsoil plow substantiality theory substitution cipher substitution deposit substitution group substitution tables substitution vein subsurface tillage subtarget machine subtle-brained subtle-cadenced subtle-fingered subtle-headed subtle-looking subtle-meshed subtle-minded subtle-nosed subtle-paced subtle-scented subtle-shadowed subtle-souled subtle-thoughted subtle-tongued subtle-witted subtraction logarithm subtraction mark subtraction sign sub voce sub-war sub-zero succade gourd succession duty succession state succory blue such as suck-bottle suck-egg sucker foot sucker rod suck fly suck-in suction anemometer suction chamber suction cleaner suction dredge suction flask suction hose suction machine suction pipe suction primer suction producer suction pump suction root suction stop suction stroke suction sweeper suction valve sudden-beaming sudden-starting sudden-whelming Sueco-gothic suede cloth suet pudding suet refiner sufferance wharf Sufi order sugar almond sugar ant sugar apple sugar ash sugar bag sugar baker sugar bakery sugar basin sugar bean sugar beet sugar-beet webworm sugar-boiling sugar bowl sugar brake sugar cake sugar camp sugar candy sugar-cane sugar-cane beetle sugar-cane borer sugar-cane gummosis sugar-cane mosaic sugar-cane root disease sugar-cane smut sugar-chopped sugar-chopper sugar-coat sugar-coating sugar-colored sugar corn sugar-cured sugar-destroying sugar diabetes sugar engineering sugar fish sugar grape sugar grass sugar-growing sugar gum sugarhouse molasses sugaring off sugar jack sugar jack process sugar-laden sugar-lipped sugar-loaded sugar-loaf sugar-loving sugar maker sugar making sugar-maple sugar-maple borer sugar mill sugar mite sugar-mouthed sugar mule sugar nippers sugar orchard sugar palm sugar pea sugar pear sugar pine sugar planter sugar planting sugar-producing sugar pumpkin sugar puncture sugar refiner sugar refining sugar shell sugar sorghum sugar spoon sugar squirrel sugar-sweet sugar-teat sugar-tit sugar tongs sugar-topped sugar tree sugar vinegar sugar-water sugar wrack sugar-yielding suicide clause suicide club suit case suit court suit service sulky-shaped sullage head sullen-browed sullen-eyed sullen-looking sullen-natured sullen-seeming sullen-sour sullen-visaged sullen-wise sulphate green sulphate paper sulphate process sulphate pulp sulphate ultramarine sulphide color sulphide dye sulphide toning sulphindigotic acid sulphine color sulphine yellow sulphite brown sulphite pulp sulphocarbon oil sulphon cyanine sulphon cyanine black sulpho salt sulphur acid sulphur alcohol sulphur bacteria sulphur-bearing sulphur-bellied sulphur black sulphur-bottom sulphur-breasted sulphur butterfly sulphur candle sulphur chloride sulphur color sulphur-colored sulphur-containing sulphur-crested sulphur dioxide sulphur dye sulphureo-aerial sulphur ether sulphur family sulphur granule sulphur-hued sulphur-impregnated sulphur lime sulphur match sulphur monochloride sulphur oil sulphur olive oil sulphur ore sulphur paste sulphur plant sulphur rain sulphur rose sulphur-scented sulphur shower sulphur-smoking sulphur subchloride sulphur-tinted sulphur-tipped sulphur toning sulphur trioxide sulphur vivum sulphur water sulphur whale sulphur yellow sultana bird sultana roll sultan flower sultan red sumac family Sumatra camphor Sumatra java Sumatra leaf Sumero-akkadian summation curve summation tone summer aster summer barley summer-blanched summer-breathing summer-brewed summer-bright summer cholera summer complaint summer coot summer crookneck summer cypress summer day summer dew grass summer disease summer-dried summer duck summer egg summer ermine summer fallow summer-fed summer-felled summer finch summer flounder summer-flowering summer forest summer grape summer-grazed summer hail summer haw summer heat summer heliotrope summer herring summer house summer hyacinth summer-leaping summer lightning summer lilac summer-lived summer-loving summer-made summer oil summer parlor summer queening summer rape summer rash summer redbird summer resort summer-ripening summer sausage summer savory summer school summer-seeming summer sheldrake summer-shrunk summer snipe summer snowflake summer solstice summer sore summer spore summer squash summer-staying summer-stir summer stone summer-stricken summer sweet summer-swelling summer tanager summer teal summer-threshed summer-tilled summer truffle summer-up summer wagtail summer warbler summer-weight summer wheat summer yellowbird summer yellowlegs summing up summit level summit yard summons case summons-proof summum jus sump cut sump fuse sumping cut sumping shot sump pit sump shot sumptuary law sump winze sums total sum total sun-affronting sun animalcule sun arc sun-arrayed sun-awakened sun-baked sun bark sun bath sun-bathe sun-bathed sun bather sun bear sun-beat sun-beaten sun-begotten sun bittern sun-blackened sun-blanched sun-blind sun blindness sun-blistered sun-blown sun-born sun-bred sun-bright sun-bringing sun-broad sun-bronzed sun-brown sun-browned sun burner sunburst plaiting sun-clear sun clock sun compass sun-confronting sun-courting sun crack sun-cracked sun-crowned sun cult sun cure sun-cured Sunda land sun dance sun date Sunday best Sunday child Sunday citizen Sunday letter Sunday saint Sunday school Sunday-schoolish Sunday supplement sun-dazzling sun-delighting sunder tree sun-descended sundew family sun disk sundra tree sun-drawn sun-dried sun-dry sundry-colored sundry-patterned sundry-shaped sun-eclipsing sun-excluding sun-expelling sun-exposed sun-eyed sun-faced sun-feathered sun fern sun fever sun-filled sun flag sun-flagged sun-flaring sun-flooded sunflower oil sunflower oil cake sunflower tree sunflower yellow sun-fringed sun fruit sun gall sun-gazed sun-gazing sun gem sun-gilt sun-god sun-graced sun grass sun-graze sun-grazer sun grebe sun-grown sun hat sun-heated sun helmet sun hemp sun-illumined Sun king sun-kissed sunk key sun lamp sun letters sunlight burner sun-loved sun-loving sun-made sun-marked sun-melted sunn hemp sun-nursed sunny-clear sunny-colored sunny-faced sunny-haired sunny-looking sunny-natured sunny-red sunny-spirited sunny-sweet sunny-warm sun-outshining sun-pain sun-painted sun-paled sun pan sun parlor sun perch sun picture sun pillar sun plane sun plant sun porch sun power sun-praising sun print sun-printed sun printing sun-projected sun-red sun-resembling sunrise wall sunrise watch sun rose sun-scorched sun-scorching sunset-blue sunset brown sunset clam sunset-flushed sunset gun sunset-lighted sunset-purpled sunset-red sunset-ripened sunset shell sunset wall sun-shading sunshine-showery sun-shot sun shower sun-shunning sun side sun snake sun-sodden sun spark sun spider sunspot cycle sunspot numbers sunspot period sunspot zone sun spurge sun-staining sun star sun-steeped sun-struck sun-swart sun-swept sun tan sun-tanned sun temperature sun-tight sun time sun trap sun tree sun trout sunt tree sun valve sun view sun visor sun-warm sun-warmed sun watch sun wheel sun-withered sun worship sun worshiper sun worshiping Super-christian supercompression engine super-decompound superintendent general superior-general superiority complex superiors-general supero-occipital superstition-proof superstructure deck supple-kneed supple-limbed supple-minded supple-mouth supple-sinewed supple-sliding supple-visaged supple-working supple-wristed supply bond supply price supply services support line support proper support trench supra-abdominal supra-acromial supra-aerial supra-anal supra-angular supra-arytenoid supra-auditory supra-auricular supra-axillary supracardinal vein Supra-christian supra-esophagal supra-esophageal supra-ethmoid supra-intestinal supralinear punctuation suprasternal notch supratrochlear nerve suranal plate sure-aimed sure crop sure-enough sure-fire sure-footed sure-footedly sure-footedness sure-founded sure-grounded sure-nosed sure-presaging sure-refuged sure-seeing sure-set sure-settled sure-slow sure-steeled sure thing surety bond surface-active agent surface anatomy surface-bent surface board surface carburetor surface card surface-coated surface color surface cooler surface-damaged surface density surface-deposited surface-dressed surface-dry surface-dwelling surface energy surface-feeding surface fire surface friction surface gauge surface gravity surface-hold surface integral surface layer surface measure surface paper surface plate surface printing surface railway surface resistance surface resistivity surface rib surface-scratched surface strain surface switch surface tension surfacing machine surf-battered surf-beaten surf-bound surf clam surf coot surf duck surfeit-gorged surfeit-slain surfeit-swelled surfeit-swollen surfeit-taking surfeit water surf fish surf line surf plant surf scoter surf shiner surf-showered surf smelt surf snipe surf-sunk surf-swept surf-tormented surf-vexed surf-washed surf-wasted surf-white surf whiting surf-worn surge chamber surge gap surgeon apothecary surgeon bird surgeon commander surgeon dentist surgeon general surgeon major surgeons general surge tank Surgut ostyak surmounted arch surplice fee surplus state surplus value surprise party surrender charge surrender value Surrey green sur-royal survey course surveying sextant surveyor general survival rate survival value survivorship annuity suspense account suspense ledger suspension bridge suspension colloid suspension insulator suspension point sus per coll suspicion-proof Sussex man Sussex pig Sussex spaniel sustentation fund suwarrow nut swab stick swage block swage bolt swage-set swagger stick swago bass swallow dive swallow fish swallow flycatcher swallow-fork swallow hawk swallow hole swallow plover swallow roller swallow shrike swallow stone swallow-tailed swallow thorn swallow warbler swallow-wing swami house swamp angel swamp apple swamp ash swamp azalea swamp bay swamp beggar-tick swamp birch swamp blackberry swamp blackbird swamp black gum swamp blueberry swamp brake swamp broom swamp buttercup swamp cabbage swamp cedar swamp chess swamp chestnut oak swamp cottonwood swamp crake swamp cypress swamp deer swamp dock swamp dogwood swamp-dwelling swamp elm swamp evergreen swamp fern swamp fever swamp globeflower swamp gooseberry swamp grape swamp gum swamp hare swamp harrier swamp hawk swamp hellebore swamp hen swamp hickory swamp holly swamp honeysuckle swamp hook swamp hornbeam swamping resistance swamp itch swamp laurel swamp lily swamp locust swamp loosestrife swamp lover swamp-loving swamp magnolia swamp mahogany swamp mallow swamp maple swamp milkweed swamp moss swamp oak swamp ore swamp owl swamp partridge swamp pheasant swamp pine swamp pink swamp poplar swamp post oak swamp potato swamp privet swamp quail swamp rabbit swamp red bay swamp robin swamp rose swamp rose mallow swamp sassafras swamp saxifrage swamp silkweed swamp sparrow swamp spleenwort swamp spruce swamp squawweed swamp sumac swamp sunflower swamp tea swamp thistle swamp tupelo swamp turnip swamp warbler swamp white cedar swamp white oak swamp willow swamp willow herb swamp wire grass swan animalcule swan-bosomed swan-clad swan dive swan-drawn swan-eating swan-fashion swan goose swan-hopper swan-hopping swanking stick swan knight swan maiden swan mussel swan orchid swan pan swan-plumed swan-poor swan potato swan-proud swan shift swan shot swanskin calico swan song swan-sweet swan-tuned swan-upper swan-upping swan-white swan-winged swap hook sward-cut sward-cutter swarm cell swarm spore swart star swash channel swash letter swash plate Swatchel box swathing band sway-back sway-backed sway bar sway boat sway brace sway bracing sway pole swearer-in sweat bath sweat bee sweater shop sweat gland sweating iron sweating sickness sweating stock sweating system sweat leather sweat lodge sweat pad sweat shirt sweat shop sweat stock Swedish-owned sweep-chimney sweep head sweeping net sweeping process sweeping score sweep mill sweep net sweep-oar sweep plate sweep point sweep rake sweep seine sweep seining sweep smelter sweep ticket swee-swee swee-sweet sweet-almond sweet-almond oil sweet-beamed sweet-bitter sweet-bleeding sweet-blooded sweet-breath sweet-breathed sweet-breathing sweet-bright sweet-charming sweet-chaste sweet-complaining sweet-conditioned sweet corn sweet-corn wilt sweet-curd sweet-dispositioned sweet-eyed sweet-faced sweet-featured sweet fern sweet-flavored sweet-flowered sweet-flowering sweet-flowing sweet-leafed sweetleaf family sweet-lipped sweet-looking sweet-minded sweet-murmuring sweet-natured sweet-numbered sweet orange sweet-orange oil sweet pea sweet-pea streak sweet pepper sweet pepper bush sweet-pickle sweet-piercing sweet potato sweet-potato beetle sweet-potato borer sweet-potato scurf sweet-potato sphinx sweet-potato weevil sweet-potato worm sweet-recording sweet reed sweet reed grass sweet-roasted sweet-sacred sweet-sad sweet-savored sweet-scented sweet-seasoned sweet-set sweet-shaped sweet-singing sweet-smelled sweet-smelling sweet-smiling sweet-souled sweet-sounded sweet-sounding sweet-sour sweet-spoken sweet-spun sweet stand sweet sucker sweet-suggesting sweet sultan sweet-sweet sweet-talking sweet-tasted sweet-tasting sweet-tempered sweet-temperedly sweet-throat sweet-throated sweet-toned sweet-tongued sweet-toothed sweet-touched sweet-tuned sweet-voiced sweet-warbling sweet water sweet-whispered sweetwood bark swell box swell-butted swell dash swelled-gelatin swelled-gelatin process swelled head swelled-headed swell-front swell head swell-headed swell-headedness swell mob swell organ swell pedal swell piece swell shark swept-back swept-forward swift-advancing swift boat swift-brought swift-burning swift-changing swift-concerted swift-declining swift-effected swiftering line swift-fated swift-finned swift-flowing swift-flying swift-footed swift fox swift-frightful swift-glancing swift-gliding swift-handed swift-heeled swift-hoofed swift-judging swift-lamented swift-marching swift moth swift-paced swift-posting swift-recurring swift-revenging swift-running swift-rushing swift-seeing swift shrike swift-sliding swift-slow swift-spoken swift-starting swift-stealing swift-streamed swift-swimming swift-tongued swift-winged swim bladder swim bow swimming bell swimming bladder swimming funnel swimming hole swimming plate swimming pool swimming tank swine back swine-backed swine-chopped swine cress swine-eating swine erysipelas swine-faced swine fever swine grass swine-headed swine itch swine-mouthed swine plague swine pox swine-snouted swine-stead swine thistle swing arm swing back swing bar swing beam swing boat swing bolster swing bolt swing bridge swing cart swing chair swing drawbridge swing gate swing hammer crusher swinging bar swinging basin swinging boom swinging post swinging ring swing jack swing joint swing-jointed swing knife swingle staff swingle tow swingling tow swing music swing plate swing plow swing saw swing shift swing shifter swing-swang swing team swing tool swing train swing wheel swish-swash swish tail switchblade knife switch box switch cane switch cast switch engine switch grass switch-hitter switch hook switch-horn switching eye switch line switch plant switch plate switch plug switch rail switch sorrel switch stand switch tail switch tender switch tenter switch tower swivel block swivel bridge swivel chain swivel chair swivel fabric swivel gun swivel hook swivel-hooked swivel jaw swivel-lock swivel musket swivel pipe swivel plow swivel shuttle swivel silk swivel spindle swivel table swivel union swivel vise swivel weaving swizzle stick swollen-cheeked swollen-eyed swollen-faced swollen-glowing swollen head swollen-headed swollen-jawed swollen-tongued swooning-ripe sword arm sword-armed sword bayonet sword bean sword-bearer sword-bearership sword belt sword-billed sword blade sword breaker sword cane sword cut sword cutler sword cutlery sword dance sword dancer sword dollar sword fern swordfish sucker sword flag sword flax sword-girded sword-girt sword grass sword guard sword hand sword hanger sword hilt sword knot sword law sword-leaved sword lily sword mat sword sedge sword service sword-shaped sword side sword swallower sword swallowing sword-tailed sword tash sword thrust sword tip S wrench sycamore anthracnose sycamore fig sycamore maple syenite-porphyry syenitic gneiss syllabic accent syllable name sympathy strike symphony concert symphony orchestra symptom complex synchro-cyclotron synneusis texture syntectic magma Syracuse watch glass Syro-arabian Syro-babylonian Syro-chaldaic Syro-chaldean Syro-chaldee Syro-egyptian Syro-galilean Syro-hebraic Syro-hexaplar Syro-hittite Syro-macedonian Syro-mesopotamian Syro-persian Syro-roman syrphus fly system function taban puteh Tabasco mahogany tabby cat tabby-cat striation tabby moth tabby weave tabernacle work Table a table base table board table book table chair table clothing table cover table-cut table-cutter table-cutting table decorator table dhote table diamond table-faced table-formed table glass table line table linen table money table mountain table-mountain pine Table mountain series table napkin table oil table rapping table settle table-shaped table spar table stake table stone table-tail table talk table talker table tennis table tilting tablet letter table tomb table-topped tablet tea tablet triturate table turning table work tabor pipe tabucki grass Tabula amalfitana Tabula smaragdina tacca arrowroot tachina fly Ta ching tachy case tack bumpkin tack comb tack duty tacketing gut tackle block tackle board tackle fall tackle house tackle post tackles back formation tack line tack pin tack rivet tack weld tack welder tack welding tadpole fish tadpole-shaped taffeta weave taffrail log tag addresser tag-addressing tag-affixing tag alder tag boat tag dance tag-dating tag day tag end tag-marking tag-stringing Tai-chinese tail barley tail bay tail beam tail block tail-chasing tail coat tail-cropped tail-decorated tail-docked tail end tail fly tail gate tail-glide tail grape tail group tail-heavy tail hook tail house tailings auger tail-joined tail joist tail lamp tail lock tailor-built tailor-cut tailor-legged tailor-made tailor-suited tailor warbler tail pipe tail-pipe burner tail pit tail plane tail print tail rhyme tail-rhymed tail rod tail rope tail set tail shaft tail skid tail slide tail spin tail spindle tail-switching tail tackle Tailtean games tail-tied tail unit tail-wagging tail water tail wind t aint taint-free taintor gate take-all take-home pay take-in take-off take-out taker-down taker-in taker-off take-up take-up box talba gum talca gum talc bag talc blank talc brick talc crayon talc cube talc facing talc-grinding talco gum talc pencil talc pulverizer talc schist talcum powder taleh gum talent money talha gum talked-about talkee-talkee talk film talking-to talky-talk talky-talky tall-bodied tall-built tall-chimneyed tall-columned tall-corn tall-elmed tall-growing tall-looking tall-masted tall-master tall-necked tallow bayberry tallow candle tallow catch tallow chandler tallow-chandlering tallow chandlery tallow chandling tallow-colored tallow cooler tallow crackling tallow cup tallow-cut tallow cutter tallow dip tallow drop tallow-face tallow-faced tallow gourd tallow-hued tallow-lighted tallow loaf tallow mange tallow melter tallow nut tallow oil tallow-pale tallow pot tallow press tallow refiner tallow renderer tallow sampler tallow shrub tallow-top tallow-topped tallow tree tallow-white tall-pillared tall-sceptered tall-sitting tall-spired tall-stalked tall-stemmed tall-trunked tall-tussocked tall-wheeled tally board tally card tally clerk tallyho coach tally iron tally room tally sheet tally shop tally trade tally walk talmi gold talon-tipped tamarack pine tamarind fish tamarind plum tamarisk family tamarisk salt tamarisk salt tree tamarix family tambookie grass Tambookie grass tambour clock tambour lace tambour stitch tambour stitcher tambour work tame-grief tame-grown tame-lived tame-looking tame-minded tame-natured tame-spirited tame-witted Tammany society tammie norie tam-o-shanter tam-o-shantered tamping bar tamping iron tamping pick tamping stick tam-tam tanbark beetle tanbark oak tanbark tree tan bay tan-burning tan-colored tandem-punch tan-faced tang chisel tang end tangent-cut tangent-saw tangent-sawed tangle-haired tangle-headed tangle-legs tangle picker tangle-tail tangle-tailed Tania australis Tania borealis tankard bearer tankard-bearing tank car tank circuit tank dome tank drama tank driver tank engine tank farm tank farming tank furnace tank iron tank liquor tank locomotive tank meter tank nipple tank rivet tank runner Tank school tank ship tank station tank table tank town tank truck tank waste tan-mouthed tannery fungus tannin color tanning extract tannyl acetate tan-sailed tan-skinned tan-strewn tansy mustard tansy oil tansy ragwort tantalum lamp Tantalus cup tan-tan tan-tinted tan-trodden tao-tieh tapa cloth tap bolt tap bond tap borer tap chuck tap cinder tap cutter tap dance tap dancer tap dancing tap dressing tap drill tape-bound tape fern tape grass tape-grass family tape measure tape needle tape price tape-printing taper-bored taper drill tape reading tape-record tape recorder tapered-in taper-fashion taper-fashion arrow taper file taper gauge taper-grown taper-headed taper-lighted taper-limbed taper mandrel taper-molded taper pin taper pipe thread taper-pointed taper reamer taper reducer sleeve taper tap taper tool tape sizer tape sizing tape-slashing tapestry beetle tapestry carpet tapestry-covered tapestry glass tapestry maker tapestry making tapestry moth tapestry needle tapestry painting tapestry stitch tapestry weaver tapestry weaving tapestry work tapestry-worked tapestry-woven tape thermometer tape-tied tape-tying tapeworm plant tap extractor tap funnel tap gauge tap grinder tap holder tap hose tapioca plant tapir mouth tapis vert Tapley mark tap line tap-off tapper-out tapper tap Tappertit simon tappet motion tappet rod tappet wrench tap-pickle tapping chuck tapping clay tapping drill tapping hole tapping key tappit-hen tap rate tap reamer tap rivet tapsal-teerie tap screw tap shoe tap-tap tap-tap-tap tap tool tap water tap wrench tar acid tara fern tarage table tarantula hawk tar baby tar base tar-bedaubed tar-bind tar-boiling tar-brand tar bucket tar-burning tar camphor tar cancer tar-clotted tar-coal tar concrete tar-dipped tar distillate tar distiller tar drum tardy-gaited tardy-moving tardy-rising tare an ages tare anouns tare anounty tare grass tare room tare vetch target arrow target bass target day target frame target lamp target meeting target practice target range target rifle target rod target shaft target-shy target spot Targu alphabet tar-heating Tarheel state tariff-born tariff-bound tariff duty tariff-fed tariff law tariff maker tariff making tariff-protected tariff-raised tariff-raising tariff reform tariff reformer tariff-regulating tariff-ridden tariff-tinkering tariff treaty tariff wall tariff-wise tar kettle tar-laid tar macadam tarn-brown tar number tar oil tar-paint tar paper tarpaulin-covered tarpaulin-lined tarpaulin muster tar-paved tar pavior tar pool tar putty tarragon oil tarragon vinegar tar-removing tar-roofed tarry-breeks tarry-fingered tarrying irons tarry-jacket Tarry-john tar sand tar-scented tar-sealed tar-soaked tarso-orbital tar spot tar-spray tar sprayer tar still tartan-purry tartan velvet tartar emetic tartare sauce Tartar horse Tartar-nosed tartar yeast tar water tar well task force task time task wage tassel bush tassel flower tassel grass tassel hand tassel-hung tassel hyacinth tassel mold tassel plant tassel pondweed tassel stitch tassel tree tassel weaver taste beaker taste bud taste bulb taste cell taste cup taste goblet taste paper ta-ta Tatar sable tatou peba tat-tat tat-tat-tat tattie bogle tattie lifting tau cross taunt-masted taunt-rigged taupe-rose Taurus cluster Taurus poniatowskii tau-saghyz tau staff tau-topped tavern-gotten tavern-hunting tavern table tavern-tainted tavern token tawny-brown tawny-coated tawny-colored tawny-faced tawny-gold tawny-gray tawny-green tawny-haired tawny-olive tawny-skinned tawny-tanned tawny-visaged tawny-whiskered tawny-yellow tax assessor tax bond tax book tax-born tax-bought tax-burdened tax cart tax certificate tax collecting tax collector tax deed tax dodger tax-dodging tax-exempt tax farmer tax-free taxi-bordered taxi dancer taxi driver taxi horn taximeter cab tax-laden tax layer tax levy tax-levying tax lien tax list tax money tax rate tax receiver tax return tax-ridden tax roll tax sale tax-supported tax taker tax title ta-zaung T bandage T bar T-beam bridge T bevel T bob T bolt T-bone steak T cart tch tch T cloth T-connected T connection T connector T crank T cross tea ball tea bell tea biscuit tea blender tea-blending tea blight tea borer tea bread tea broom tea caddy tea can tea canister tea ceremony tea checker teacher bird teacher clerk teacher edition teachers college teacher training tea chest tea clipper tea cloth tea-colored tea cooper tea-covered tea cozy tea dance tea drinker tea drunkard tea family tea fight tea fighting tea garden tea-gardened tea gardener tea girl teagle post tea gown tea green tea-growing tea hound tea hour tea infuser tea-inspired teak-brown teak-built teak-complexioned tea kettle broth tea kitchen teak-lined teak-producing teal duck tea lead tea leaf tea-leaved tea-loving tea maid team boat tea meeting tea mite tea mixer tea-mixing tea mosquito team play tea oil tea oil tree tea olive tea packer tea-packing tea party tea percolator tea plant tea planter tea planting tea plate tea-producing tear-acknowledged tear-affected tear-angry tear-arresting tear-attested Te arawa tear bag tear-baptized tear-bedabbled tear-bedewed tear-besprinkled tear-blinded tear bomb tear bottle tear-bright tear-commixed tear-compelling tear-composed tear-creating tear-damped tear-derived tear-dewed tear-dimmed tear-distained tear-distilling tear-dropped tear-drowned tear-eased tear-embarrassed tear-expressed tear-falling tear-filled tear-forced tear-fraught tear-freshened tear gas tear gland tear-glistening tear grass tear-imaged tear-kissed tear-lamenting tear-lined tear-marked tear-melted tear-mirrored tear-misty tear-mocking tear-moist tear-mourned tear-off tea-rose tea-rose pink tear-out tear-owned tear-pale tear-pardoning tear-paying tear-persuaded tear-phrased tear-pictured tear-pitying tear-plagued tear-pouring tear-practiced tear-procured tear-protested tear-provoking tear-purchased tear-quick tear-raining tear-reconciled tear-regretted tear-resented tear-revealed tear-reviving tear-salt tear-scorning tear-sealed tear-shaped tear-shedding tear sheet tear shell tear-shot tear-stained tear streak tear-stubbed tear-swollen tear-thirsty tear-washed tear-wet tear-wiping tear-worn tear-wrung tea sampler tea-scented tea scrub tea-seed oil teasel clipper teasel cutter teasel family teasel frame teasel gourd teasel grower teasel merchant teasel packer teasel sorter teaser curtain tea service tea set tease tenon tea sifter tea-sodden tea strainer tea-swilling tea table tea-tabular tea tasting teat cup tea-things tea tray tea tree tea urn tea wagon tea weigher technical sergeant Tecoma yew Teddy bear tedium-proof tee bar tee beam tee-bulb tee burial tee-hole teeing ground tee iron tee joint teel oil teen-age teen-ager tee-name teeny-weeny tee plate tee rail tee shirt tee slot tee square teetering-board teeter-totter teetery-bender teeth-chattering teeth-edging teeth-gnashing teeth-grinding teething ring te-hee Tehuantepec winds teind boll Teind court Tejon formation telegraph bar telegraph block telegraph blue telegraph board telegraph box telegraph bracket telegraph bug telegraph cable telegraph clerk telegraph clock telegraph coil telegraph connector telegraph editor telegraph form telegraph hook telegraph inspector telegraph instrument telegraph insulator telegraph jack telegraph key telegraph laborer telegraph lineman telegraph mechanic telegraph messenger telegraph operator telegraph plant telegraph pole telegraph protector telegraph relay telegraph repeater telegraph rope telegraph sounder telegraph superintendent telegraph switchboard telegraph tape telegraph transmitter telegraph tubing telegraph wire telegraph wireman tele-iconograph telephone amplifier telephone arm telephone attendant telephone bell telephone booth telephone box telephone cabinet telephone cable telephone case telephone cell telephone closet telephone coil telephone condenser telephone connector telephone cord telephone counter telephone desk telephone engineer telephone engineering telephone exchange telephone faultsman telephone fitter telephone fuse telephone generator telephone holder telephone instrument telephone insulation telephone insulator telephone jack telephone knob telephone laborer telephone lineman telephone magneto telephone mechanic telephone mouthpiece telephone operator telephone pad telephone plug telephone protector telephone receiver telephone relay telephone selector telephone stand telephone supervisor telephone support telephone switch telephone switchboard telephone table telephone terminal telephone tester telephone transmitter telephone wire telephone wireman telescope bag telescope box telescope chimney telescope door telescope eye telescope finder telescope fish telescope fly telescope jack telescope joint telescope lens telescope screw telescope shell telescope sight telescope stack telescope table telescope tube telescope word Telinga potato teller-out tellurium glance telome theory telpher carrier telpher line telpher railway temperance drink temperance hotel temperance movement Temperate zone temperature coefficient temperature curve temperature gradient temperature relay temperature sensation temperature sense temperature signal temperature spot temper color temper pin temper screw temper-spoiling temper-trying temper-wearing tempest-bearing tempest-beaten tempest-blown tempest-born tempest-clear tempest-driven tempest-flung tempest-gripped tempest-harrowed tempest-loving tempest-proof tempest-rent tempest-rocked tempest-scattered tempest-scoffing tempest-shattered tempest-sundered tempest-swept tempest-threatened tempest-torn tempest-tossed tempest-troubled tempest-walking tempest-winged tempest-worn template excavator template jig temple axis Temple bar Temple butte temple-crowned temple flower temple-guarded temple-haunting temple mound temple name temple prostitute temple-robbing temple-sacred temple title temple-treated temple tree tempo turn temptation-proof ten-acre ten-acred tenaille line tenant farmer tenant right tenant righter ten-a-penny ten-armed Tenasserim mahogany ten-barreled ten-bore ten-cell ten-cent ten-cent store ten-coupled ten-course ten-cylindered ten-day ten-day fern tendency chord tendency play tendency theory tendency writing tender annual tender-bearded tender-bladed tender-bodied tender-boweled tender-colored tender-conscienced tender-dying tender-eared tender-eyed tender-faced tender-footed tender-footedness tender-foreheaded tender-handed tender-hoofed tender-hued tender-looking tender-minded tender-mouthed tender-natured tender-nosed tender-personed tender-rooted tender-shelled tender-sided tender-skinned tender-souled tender-taken tender-tempered tender-witted tendinous arch ten-dollar tendon reflex tendon sense tendril climber tendril-climbing ten-eighty tenement house Teneriffe lace ten-fingered ten-footed ten-forties ten-gallon hat ten-gauge ten-grain ten-guinea ten-headed ten-horned ten-horsepower ten-hour ten-inch ten-jointed ten-keyed ten-knotter ten-league ten-mile ten-minute ten-month tennis marker tennis play tennis player tennis playing tennis racket tennis shoe ten-oared tenon auger tenon saw tenon tooth tenor behind tenor clef tenor covering tenor octave tenor violin ten-parted ten-peaked ten-ply ten-point ten-pound ten-pounder ten-rayed ten-ribbed ten-roomed tense auxiliary ten-second tense-drawn tense-eyed tense-fibered tense phrase ten-shilling tensile strength tension carriage tension element tension line tension pulley tension rod tension roller tension zone ten-spined ten-spot ten-strike ten-striker ten-stringed ten-syllable ten-syllabled ten-talented tent bed tent caterpillar tent-clad tent-dotted tent-dwelling tenterhook willey tent-fashion tenth muse ten-thousandaire ten-ton ten-tongued ten-toothed tent pegger tent pegging tent pin tent pole tent-shaped tent-sheltered tent show tent stake tent stitch tent stripe tent tree ten-twenty-thirty tent worm ten-weeks stock ten-wheeled ten-wheeled locomotive ten-year teo-nong tepary bean tercel gentle terebinth tree ter-equivalent term attendant term day term fee term hour terminable annuity terminating decimal terminating plan term insurance termite-proof term paper term rate term settlement ternate-pinnate tern schooner terpane group terpene alcohol terpene hydrate terpin hydrate terra alba terra cariosa terra catechu terrace-banked Terrace epoch terrace-fashion terrace maker terrace-mantling terrace-steepled terra-cotta terra-cotta lumber terra damnata terra firma terra foliata terra incognita terrain cure terra japonica Terra lemnia terramara culture terra miraculosa terra muriatica terra orellana terra pinguis terrapin paws terrapin scale terra ponderosa terra porcellanea terra pozzuoli terra putura terra rosa terra rossa terra salitrosa terra sienna terra sigillata terrasse green terra umbra terre-a-terreishly terre-tenant terre-verte territory wool terror-bearing terror-breathing terror-breeding terror-bringing terror-crazed terror-driven terror-fleet terror-fraught terror-giving terror-haunted terror-inspiring terror-lessening terror-mingled terror-preaching terror-ridden terror-riven terror-shaken terror-smitten terror-stirring terror-stricken terror-striking terror-struck terror-threatened terror-troubled terror-wakened terror-warned terror-weakened ter-sacred tersy-versy tertia tone test act testament dative Testamentum domini test bar test bow test boy test case test clerk test cutter test frame test furnace test game test glass test height test house testimony meeting test indicator testing engineer testing engineering testing terminal test kitchen test lead test man test marker test match test meal test nail test object test paper test pilot test pit test room test solution test tube test-tubeful test tubing test type tetanus toxin tetbrothalein sodium tete a tete tether-devil tetiothalein sodium tetrad difference tetradecyl alcohol tetrahedrite type tetramethyl base tetter berry Teuto-british Teuto-celt Teuto-celtic Teutono-persic tew iron text blindness text hand textile engineer textile engineering textile soap text letter text pen text title textus receptus text writer thalamo-olivary thale-cress thalloid shoot thank offering thank-you thank-you-maam that-a-way thatch-browed thatch cloak thatch grass thatch-headed thatch palm thatch peg thatch pin thatch rake thatch rod thatch-roofed thatch tree thaw-drop T head T-head cylinder T-headed T-head toggle theater-craft Theban eagle theezan tea theft insurance thegn-born thegn-right theme song then-clause theobroma oil theory-blind theory-blinded theory-building theory-making theory-spinning thermocouple instrument thermocouple meter thermo development thermo-inhibitory thermometer pointer thermos bottle Thermos bottle thermos flask Thermos flask thermo-unstable thesis dramatist thesis novel thesis novelist thesis play thesis playwright theta function thiazine dye thick-ankled thick-barked thick-barred thick-beating thick-bedded thick-billed thick-blooded thick-blown thick-bodied thick-bossed thick-bottomed thick-breathed thick-cheeked thick-clouded thick-coated thick-coming thick-cut thick-decked thick-descending thick-drawn thick-eared thick-fingered thick-flaming thick-flanked thick-flashing thick-fleeced thick-fleshed thick-flowing thick-foliaged thick-footed thick-girthed thick-growing thick-grown thick-haired thick-hided thick-hidedness thick-jawed thick-jeweled thick-knee thick-kneed thick-knobbed thick-laid thick-leaved thick-legged thick-lined thick-lipped thick-looking thick-maned thick-necked thickness gauge thickness piece thick-packed thick-pated thick-peopled thick-piled thick-pleached thick-plied thick-ribbed thick-rinded thick-rooted thick-rusting thick-shadowed thick-shafted thick-shelled thick-sided thick-sighted thick-skinned thick-soled thick-sown thick-spaced thick-spread thick-spreading thick-sprung thick-stalked thick-starred thick-stemmed thick-streaming thick-swarming thick-tailed thick-thronged thick-toed thick-tongued thick-toothed thick-topped thick-voiced thick-walled thick-warbled thick-winded thick-witted thick-wittedly thick-wittedness thick-wooded thick-woven thick-wristed thick-wrought thief ant thief glass thief-resisting thief tube thigh boot thigh puff thimble-crowned thimble-eye thimble-eyed thimble lily thimble-pie thimble-shaped thimble-sized thimble skein thin-ankled thin-armed thin-barked thin-bedded thin-bellied thin-belly thin-bladed thin-blooded thin-blown thin-bodied thin-bottomed thin-brained thin-cheeked thin-clad thin-coated thin-cut thin-descending thin-eared thin-faced thin-featured thin-flanked thin-fleshed thin-flowing thin-frozen thin-fruited T hinge thing-it-self thin-grown things-in-themselves thing-word thin-haired thin-headed thin-hipped thinking cap thinking shop think-so thin-laid thin-leaved thin-legged thin-lined thin-lipped thin-lippedly thin-lippedness thin-necked thin-officered thin-peopled thin-pervading thin-rinded thin-set thin-shelled thin-shot thin-skinned thin-skinnedness thin-soled thin-sown thin-spread thin-spun thin-stalked thin-stemmed thin-veiled thin-voiced thin-walled thin-worn thin-woven thin-wristed thin-wrought thio acid thio ether thioindigo red b third base third baseman third best third class third-degree third-hand third-order third party third-rail third-rate third-rater thirst-abating thirst-allaying thirst country thirst-creating thirst-inducing thirst-maddened thirst-quenching thirst-raising thirst-scorched thirst-tormented thirteen-day thirteen-inch thirteen-lined thirteen-pence halfpenny thirteen-ringed thirteen-square thirteen-stone thirteen-story thirty-acre thirty-day thirty-eight thirty-eighth thirty-fifth thirty-first thirty-five thirty-foot thirty-four thirty-fourth thirty-gunner thirty-hour thirty-inch thirty-knot thirty-mile thirty-nine thirty-ninth thirty-one thirty-pound thirty-second thirty-second note thirty-second rest thirty-seven thirty-seventh thirty-six thirty-sixth thirty-third thirty-three thirty-ton thirty-two thirty-twomo thirty-word thirty-yard thirty-year this-a-way thistle ball thistle beard thistle butterfly thistle cock thistle crown thistle dollar thistle family thistle finch thistle funnel thistle noble thistle poppy thistle saffron thistle sage thistle tube this-way-ward this world this-worldian this-worldliness this-worldly this-worldness thiuram disulphide thong seal thorium dioxide thorium emanation thorium nitrate thorium oxide thorn apple thorn-bearing thorn-bound thorn broom thorn-covered thorn crown thorn-crowned thorn devil thorn-encompassed thorn forest thorn-headed thorn hedge thorn-hedged thorn letter thorn locust thorn-marked thorn oyster thorn palm thorn plum thorn poppy thorn-pricked thorn-resisting thorn-set thorn-strewn thorn tree thorn-wounded thorn-wreathed thorny-backed thorny-edged thorny-handed thorny-pointed thorny-pricking thorny-thin thorny-twining thorough-bind thorough-bore thorough-cleanse thorough-dress thorough-dry thorough-felt thorough-fought thorough-humble thorough light thorough-lighted thorough-line thorough-made thorough-ripe thorough-shot thorough-stain thought-abhorring thought-bewildered thought-burdened thought-challenging thought-concealing thought-conjuring thought-depressed thought-exceeding thought-executing thought-fed thought-fixed thought-free thought-giving thought-hating thought-haunted thought-heavy thought-heeding thought-hounded thought-humbled thought-imaged thought-inspiring thought-instructed thought-involving thought-jaded thought-kindled thought-laden thought-lighted thought-mad thought-mastered thought-meriting thought-moving thought-numb thought-out thought-outraging thought-pained thought-peopled thought-poisoned thought-pressed thought-provoking thought-read thought reader thought reading thought-reviving thought-ridden thought-saving thought-set thought-shaming thought-sounding thought-stirring thought-straining thought-swift thought-tight thought-tinted thought-tracing thought transference thought-unsounded thought-winged thought-working thought-worn thought-worthy thought writing thousand-acre thousand-dollar thousand-eyed thousand-footed thousand-guinea thousand-handed thousand-headed thousand-hued thousand-jacket thousand-leaf thousand-legged thousand-legs thousand-mile thousand-pound thousand-round thousand-sided thousand-souled thousand-voiced thousand-year Thraco-illyrian Thraco-phrygian thrall-less thrall-like thrasher shark thrasher whale thread angle thread bar thread blight thread board thread cabinet thread cell thread count thread counter thread cutter thread-cutting thread drawer thread drawing thread dresser thread eel threader-up thread fungus thread gauge thread generator thread herring threading lathe threading machine threading tool thread lace thread-leaved thread-legged thread-lettered thread lubricator thread mark thread-marked thread-measuring thread-mercerizing thread miller thread-milling thread moss thread-needle thread paper thread protector thread roller thread-shaped thread spinner thread splicer thread spooler thread tangle thread-the-needle thread-waisted thread winder thread-winding thread-worn three-accent three-acre three-act three-aged three-aisled three-angled three-arched three-arm three-armed three-arm protractor three-awned three-bagger three-ball three-ballmatch three balls three-banded three-bar three-basehit three-bearded three-bid three birds three-blade three-bladed three-bodied three-bolted three-bottle three-bottom three-bout three-branch three-branched three-bushel three-capsuled three-card three-card lant three-card loo three-card monte three-celled three-centered arch three-charge three-charge rate three-chinned three-circle three-circuit three-circuit switch three-class three-class system three-clause three-cleft three-coat three-cocked three-color three-colored three-color photography three-color process three-color theory three-component three-coned three-corded three-corner three-cornered three-corneredness three-course three-crank three-crowned three-cup three-cylinder three-day three-dayed three-day fever three-deck three-decked three-decker three-deck vessel three-deep three-dimensional three-dimensionalness three-dip three-dropped three-eared three-echo three-edged three-effect three-electrode three estates three-eyed three-faced three-farthing three-fathom three-fibered three-field three-figure three-fingered three-floored three-flowered three-foot three-forked three-formed three-fourths three-fruited three-grained three-groined three-groove three-grooved three-guinea three-halfpence three-halfpenny three-halfpennyworth three-hand three-handed three-headed three-high three-hinged three-hooped three-horned three-horse three-hour three-inch three-index three-iron three-jointed three-layered three-leaf three-leafed three-leaved three-legged three-letter three-lettered three-life three-light three-line three-lined three-lipped three-lobed three-man three-masted three-master three-mile three-minute three-minute glass three-month three-monthly three-mouthed three-move three-mover three-name three-necked three-nerved three-ounce three-out three-ovuled three-part three-parted three-pass three-peaked threepenny bit three-petaled three-phase three-phase alternator three-phased three-phaser three-piece three-pile three-piled three-piler three-pint three-plait three-ply three-point three-pointed three-point landing three-point perspective three-point problem three-point switch three-position three-pound three-pounder three-pound piece three-pronged three-quality three-quart three-quarter three-quarter back three-quarter binding three-quarter-bred three-quarters nelson three-quarter tone three-quarter vamp three-rail three-ranked three-reel three-ribbed three-ridge three-ring three-ringed three-roll three-room three-roomed three-row three-rowed three-sail three-salt three-scene three-second three-seeded three-shanked three-shaped three-shilling three-sided three-sidedness three-soled three-space three-span three-speed three-spined three-spored three-spot three-spread three-square three-square file three-star three-step three-storied three-story three-strand three-stranded three-stringed three-striped three-striper three-styled three-suited three-syllable three-syllabled three-syllable law three-tailed three-thorned three-thread three-throw three-tie three-tie joint three-tier three-tiered three-time three-tined three-toed three-toes three-ton three-tongued three-toothed three-torque three-tripod three-valved three-volume three-way three-wayed three-way spread three-way switch three-week three-weekly three-wheeled three-winged three-wire three-wire generator three-wire system three-wive three-woods three-wormed three-year three-year-old thresher whale threshing floor threshing machine threshold exposure threshold frequency thrice-accented thrice-blessed thrice-boiled thrice-crowned thrice-famed thrice-great thrice-happy thrice-honorable thrice-noble thrice-sold thrice-told thrice-venerable thrice-worthy thrift society thrift stamp thrill-crazed thrill-exciting thrill-less thrill-pursuing thrill-sated thrill seeker thrill-seeking throat brail throat-clearing throat-clutching throat-cracking throat-full throat halyards throat plate throat seizing throat sheet throat-slitting throat sweetbread throat-swollen throat track throne-born throne-capable throne room throne-shattering throne-worthy throstle cock throttle lever throttle valve throttling bar throttling governor through-blow through bolt through bond through bridge through-carve through-cast through check through cut through-drainage through-drive through-formed through-galled through-joint through-key through-lance through message through-mortise through-nail through-passage through-pierce through rate through retort through road through-rod through shake through-shoot through-splint through stane through stone through street through-swim through switch through-thrill through-toll through-tube through-tube boiler through way throw-in throwing engine throwing knife throwing net throwing power throwing stick throw lathe throw line throw-on throw-over throw rug throw stick thrum-eyed thrush blackbird thrush brown thrush fungus thrush lichen thrush nightingale thrush tit thrust bearing thrust deduction thrust fault thrust hoe thrust plane thrust shaft thuja oil Thule culture Thulite pink thumb-and-finger thumb ball thumb bottle thumb box thumb cleat thumb-fingered thumb flint thumb hole thumb holing thumb index thumb-kissing thumb knot thumb lancet thumb lock thumb loose thumb-made thumb-marked thumb notch thumb nut thumb pad thumb pin thumb piston thumb plane thumb pot thumb ring thumb rule thumbs down thumb-shaped thumb-sucking thumbs up thumb turn thumb-worn thump-cushion thunder-armed thunder ax thunder-baffled thunder-breathing thunder-charged thunder-darting thunder-delighting thunder-dirt thunder-fearless thunder-footed thunder-forging thunder-fraught thunder-free thunder-girt thunder-god thunder-guiding thunder-gust thunder-hid thunder-laden thunder-maned thunder planet thunder plant thunder pumper thunder-rejoicing thunder-riven thunder rod thunder-ruling thunder-scarred thunder-scathed thunder-shod thunder-slain thunder-smitten thunder snake thunder spirit thunder-splintered thunder-split thunder-splitten thunderstorm cirrus thunder-teeming thunder-throwing thunder-thwarted thunder-tipped thunder-tongued thunder tube thunder-voiced thunder-wielding Thurberia weevil Thury thread thwacking frame thwacking horse thwacking knife thwacking stool thwaite shad thwart-marks thwart motion thwartwise motion thyine wood thyme camphor thyme-capped thyme dodder thyme-fed thyme-flavored thyme-grown thyme-leaved thyme oil thyme-scented thymol blue thymus death thymus histone tib-cat Tiber green Tibeto-burman Tibeto-chinese Tibeto-himalayan tick-a-tick tick clover tick doleru ticket agency ticket agent ticket booth ticket-canceling ticket chopper ticket clerk ticket collector ticket-counting ticket-dating ticket day ticket gate ticket holder ticket maker ticket-making ticket night ticket office ticket porter ticket printer ticket-printing ticket punch ticket rack ticket-registering ticket scalper ticket-selling ticket taker ticket varnisher ticket-vending ticket window ticket writer tick farcy tick fever ticking work tickle-footed tickle grass tickle-headed tickle-heeled tickler coil tickler file tickle-toby tickle-tongued tickly-benders tick paralysis tickseed sunflower ticktack man tick trefoil tic-polonga tide-beaten tide-beset tide boat tide-bound tide-caught tide-covered tide crack tide day tide-driven tide-flooded tide-forsaken tide-free tide gate tide gauge tide-generating tide hole tideland spruce tide lock tide-locked tide-marked tide mill tide pool tide-predicting tide predictor tide-producing tide register tide-ribbed tide rip tide-rode tide-swept tide table tide-taking tide-tossed tide-trapped tide-washed tidewater cypress tidewater glacier tide wave tide wheel tide work tide-worn tidy-kept tidy-looking tidy-minded tie band tie bar tie beam tie bolt tie breaker tie conductor tie cord tied house tied image tied letters tie dyeing tie feeder tie-in tie knot tie line tie mill tie-on tie-out tie periwig tie plate tie-plater tie post tier building tierce major tierce rhyme tie rod tie rope tier ranger tiers-argent tier shot tie stay tie strap tie-tie tie-up tie wall tiger beetle tiger bittern tiger cat tiger chop tiger cocoa tiger cowrie tiger finch tiger fish tiger-footed tiger frog tiger grass tiger heart tiger lily tiger-looking tiger-marked tiger-minded tiger mosquito tiger moth tiger-mouth tiger-passioned tiger python tiger salamander tiger shark tiger shell tiger snake tiger-spotted tiger-striped tiger swallowtail tiger wolf tight-ankled tight-belted tight-bodied tight-booted tight-bound tight-clap tight-clenched tight-closed tight cooper tight-draped tight-drawn tightening pulley tight fit tight-fitting tight-gartered tight-hosed tight joint tight-limbed tight-lipped tight-looking tight-made tight-necked tight-packed tight-pressed tight-reining tight-rooted tight-set tight-shut tight-skinned tight-skirted tight-sleeved tight-stretched tight-tie tight-valved tight-waisted tight-wound tight-woven tight-wristed tile-clad tile-covered tile drain tile hook tile kiln tile ore tile painter tile pin tile pipe tile red tile-roofed till alarm till basket tiller bow tiller chains tiller lines tiller rope tilleul green till money til oil til seed tilt boat tilt bonnet tilt hammer tilting conveyor tilting fillet tilting hammer tilting helmet tilting yard tilt mill til tree tilt roof tilt steel tilt-top table timbale iron timber bar timber beetle timber borer timber-boring timber-built timber-carrying timber-ceilinged timber contractor timber-covered timber cruiser timber cutter timber-cutting timber-devouring timber-eating timber estimating timber estimator timber faller timber-floating timber forest timber frame timber-framed timber grapple timber grouse timber-headed timber-hitch timber jumper timber-laden timber leader timber line timber-lined timber loader timber mare timber marker timber measurer timber mill timber preserver timber-producing timber-propped timber rattlesnake timber right timber rot timber scribe timber shifter timber-skeletoned timber-strewn timber toe timber-toed timber topper timber topping timber tower timber tree timber unloader timber wheels timber wolf timber worm timbrel arch timbrel vault time about time allowance time-authorized time azimuth time ball time bargain time-barred time-battered time-beguiling time-bent time-bettering time-bewasted time bill time-blackened time-blanched time book time-born time-bound time-breaking time-canceled time-changed time chart time charter time charter party time-cleft time clerk time clock time constant time delay time-delay relay time-deluding time deposit time derivative time detector time-discolored time discount time draft time-eaten time-economizing time-enduring time enough time error time-expired time-exposure time fire time fuse time-fused time globe time-gnawn time gun time-halting time-hastening time hit time-honored time immemorial time killer time-killing time lag time-lasting time limit time loan time lock time-marked time-measuring time-mellowed time money time note time-noting time-out time policy time-pressed time quadrature time rating time recorder time-rent time-rusty time selling time sense time series time-served time service time sheet time shrapnel time-shrouded time sight time signal time signature time space time spirit time stamp time star time study time switch time-taught time-temperature time-temperature curve time-tested time thrust time ticket time train time triangle time-tried time value time-wasted time-wasting time-wearied time-white time-withered time zone timing gears timing screw timing valve timothy grass tim-whiskey tina process tin-bearing tin-bottomed tin-bound tin-bounder tin calciner tin can tin-capped tin chloride tin-colored tin-covered tin cow tin cry tin crystal tincture press tin cup tinder-cloaked tinder-dry tinder fungus tin dichloride tin dioxide tin-edged tin-filled tin-foil tin-foiler tin-foil paper tin frame ting-a-ling tin-handled tin hare tin hat tink-a-tink tinker mackerel tin kettle tin-kettler tinkle-tankle tinkle-tankling tin-lined tin liquor tin loaf tin-mailed tin monoxide tin opener tin ore tin oxide tin pail tin-pan tin-pan alley tin pest tin plague tin plate tin plater tin-plate worker tin pot tin-pottery tin-pottiness tin-potty tin pulp tin putty tin pyrite tin-roofed tin salt tinsel-bright tinsel-clad tinsel-covered tinsel-embroidered tinsel-paned tinsel-slippered tin shop tin smelter tin soldier tin spirit tin spot tin stream tin streamer tin streaming tin-tabled tin tack tint block tin tetrachloride tint meter tint photometer tint tool tin wash tin washing tin wedding tin-white ti palm tip cap tip car tip cheese tip crane tip-curled tip-eared tip-finger tip-off tippa-malku tipper-off tippet grebe tippet-scuffle tip plant tippling house tip roast tip roll tip sled tip slide tip speed tipsy cake tipsy key tipsy-topsy tip table tip-tap tip-top table tip truck tip-up tip van tip wagon tip worm tire becker tire bender tire-bending tire borer tire buffer tire carrier tire case tire cement tire chain tire changer tire-changing tire chipper tire clamp tire compressor tire cooler tire core tire cover tire curler tired-armed tired-eyed tired-faced tired-headed tired-looking tire dresser tired-winged tire examiner tire fastener tire filler tire-filling tire finisher tire fitter tire gauge tire heater tire-heating tire holder tire-inflating tire iron tire lacing tire lock tire-mile tire mold tire molder tire preservative tire press tire pressman tire prier tire protector tire pump tire rack tire remover tire repairman tire retreader tire roller tire setter tire shaper tire shoe tire shrinker tire stamper tire tape tire tool tire tread tire tube tire turner tire upsetter tire valve tire vulcanizer tiring house tiring irons tiring maid tiring room tiring woman tirlie-wirlie tirling pin tirly-toy T iron tissue-building tissue-changing tissue culture tissue-destroying tissue fibrinogen tissue fluid tissue-forming tissue paper tissue-producing tissue-secreting tisty-tosty titan crane titanic acid titanic anhydride titanic iron ore titanic oxide titanium dioxide titanium white tita root tit babbler tit drill titer test tithe barn tithe-collecting tithe collector tithe-free tithe gatherer tithe man tithe-paying tithe pig tithe proctor Titian-haired title bearer title-bearing title border title catalogue title deed title essay title hero title-holding title-hunting title insurance title letter title-mad title page title role title-seeking title space title type title-winning ti tree tit screw titter-totter tittle-tattle tittle-tattler tit-up Tityre-tu T joint T-man T nut toad-bellied toad-blind toad bug toad-frog toad grass toad-green toad-hating toad-housing toad-legged toad lily toad orchis toad rush toad-shaped toad snatcher toad spittle toad spot toad-spotted toad stabber toadstool disease toad-swollen to-and-fro to-arrive toast color toasting fork toasting iron toast list toast rack toast water tobacco-abusing tobacco bagger tobacco barn tobacco beetle tobacco box tobacco-box skate tobacco-breathed tobacco brown tobacco bug tobacco camphor tobacco carton tobacco case tobacco chewing tobacco cloth tobacco cultivator tobacco cutter tobacco dryer tobacco dust tobacco fertilizer tobacco flea beetle tobacco granulator tobacco grater tobacco-growing tobacco hawk moth tobacco heart tobacco hornworm tobacco lath tobacco leaf miner tobacco liquor tobacco liquorer tobacco machine tobacco machinery tobacco mildew tobacco molder tobacco mosaic tobacco panner tobacco pipe tobacco-pipe clay tobacco pouch tobacco press tobacco rack tobacco retainer tobacco roller tobacco shaver tobacco shed tobacco shop tobacco-sick tobacco smoker tobacco-smoking tobacco sprayer tobacco spreader tobacco-stained tobacco-stemming tobacco stick tobacco stopper tobacco stripper tobacco thrips tobacco tongs tobacco twister tobacco water tobacco wilt tobacco worm to-be tobira family toboggan cap toboggan slide tobosa grass to-burst Toc h tocher band tocher good toc-toc toddy bird toddy blossom toddy cat toddy ladle toddy palm toddy stick toddy tree to-do to-draw to-drive tod stove toe biter toe box toe calk toe clip toe crack toe dance toe dancer toe distance toe dog toe-drop toe hardy toe hold toe-in toe kisser toe kissing toe-mark toe pilling toe-punch toe ring toe wall toe weight to-fall toffee dipper Toft ware toggle bolt toggle chain toggle hook toggle iron toggle joint toggle-jointed toggle-joint press toggle press toggle riveter toggle switch togt-rider togt-riding toil-assuaging toil-beaten toil-bent toilet article toilet atomizer toilet bottle toilet brush toilet cabinet toilet case toilet cloth toilet cup toilet glass toilet hardware toilet mirror toilet paper toilet powder toilet room toilet service toilet set toilet soap toilet sponge toilet table toilet water toil-exhausted toil-hardened toil-marred toil-oppressed toil-stained toil-stricken toil-tried toil-weary toil-won to kalon token book token coin token money token payment token ring token sheet token silver tok-tokkie tol-de-rol toll agent toll bait toll bar toll board toll bridge toll call toll clerk toll collector toll corn toll dish toll farmer toll-free toll inspector toll line tol-lol tol-lol-de-rol tol-lol-ish toll road toll thorough toll traverse toll turn tolosa wood toluidine red toluric acid tolu tree Tom-and-jerry Tom-and-jerryism tomato black rot tomato blight tomato bouillon tomato can tomato-colored tomato curly top tomato eggplant tomato fern tomato fruitworm tomato gall tomato-growing tomato hamper tomato hawk moth tomato hornworm tomato juice tomato ketchup tomato-leaf tomato leaf blight tomato leaf mold tomato mosaic tomato packer tomato paste tomato pulp tomato puree tomato red tomato sauce tomato scalder tomato sphinx tomato streak tomato stripe tomato transplanter tomato trellis tomato-washing tomato wilt tomato worm tomato yellows tom-ax tomb bat tomb-black tomb-breaker tomb-dwelling tomb house tomb maker tomb-making tomb-paved tomb-robbing tomb-strewn tomb tower Tom collins Tom-come-tickle-me tom hurry tomkin post tommy-axe tommy bar tommy book tommy day tommy hole tommy master tommy noddy tommy shop tommy system tom pudding tom tailor tom-toe tom-tom tom-trot tonal gap tonal island to-name tone accent tone arm tone cluster tone color tone-deaf tone deafness tone-full tone gap tone grammar tone island tone language tone long tone measurer tone painting tone pattern tone picture tone poem tone poet tone poetry tone-producing tone quality tone syllable tone tester tone-up tone wheel ton-foot tong borer tongue-and-groove joint tongue-back tongue-baited tongue-bang tongue bar tongue bird tongue bit tongue-bitten tongue-blade tongue bone tongue-bound tongue compressor tongue depressor tongue-dumb tongue fern tongue fish tongue-flowered tongue-free tongue-front tongue-garbled tongue-gilt tongue-graft tongue grafting tongue grass tongue-haltered tongue-hammer tongue hero tongue-jangling tongue joint tongue-kill tongue-lash tongue-lashing tongue-leaved tongue-lolling tongue-murdering tongue-pad tongue pipe tongue-point tongue-puissant tongue-shaped tongue shell tongue swallowing tongue-tack tongue-taming tongue-taw tongue-tie tongue-tied tongue-tier tongue tree tongue twister tongue-valiant tongue-wagging tongue-walk tongue-wanton tongue work tongue worm tonic key tonic major tonic minor tonic motion tonic section tonic sol-fa tonic sol-faist tonic spasm tonka bean tonka-bean camphor tonka-bean wood ton-kilometer ton-mile ton-mileage tonnage coefficient tonnage deck tonnage displacement tonnage duty tonnage opening tonnage pool tonnage train tonneau lamp tonneau windshield too-aged too-anxious too-big too-bigness too-bold too-celebrated too-confident too-coy too-dainty too-devoted toodle-oo too-early too-earnest too-familiar too-fervent too-forced too-good too-hectic tool angle tool apron too-large too-late too-lateness too-laudatory tool bag tool belt tool boy tool cabinet tool car tool carriage tool carrier tool cart tool case tool chest tool-cleaning tool coupling tool-cutting tool demagnetizer tool-dresser tool-dressing tool engineer tool engineering tool examiner tool fasher tool fettler tool filer tool finder tool fitter tool forge tool forger tool gauge tool glazer tool grinder tool grinding tool handle tool heater tool house tool kit tool lubricant tool miller tool oil too-long tool plane tool post tool press tool rack tool reclaimer tool regrinding tool repairer tool rest tool roll toolroom lathe tool set tool sharpener tool-sharpening tool shed tool shop tool socket tool spindle tool stamper tool stand tool steel tool storekeeper tool subject tool table tool temper tool tray tool treating tool truck tool turner tool-using tool wagon tool whetter too-much too-muchness too-near too-old too-patient too-piercing too-proud too-ripe too-short too-soon too-soonness toothache grass toothache tree tooth ax tooth-billed tooth-bred toothbrush tree tooth caliper tooth-chattering tooth chisel tooth cleaner tooth cough tooth cress tooth doctor toothed-billed tooth edge tooth-extracting tooth fever tooth filling tooth forceps tooth fungus tooth gauge toothing plane tooth key tooth-leaved tooth mark tooth-marked tooth ornament tooth paste tooth plane tooth plugger tooth powder tooth puller tooth-pulling tooth pulp tooth rail tooth rash tooth relic tooth-rounding tooth sac tooth-set tooth-setting tooth-shaped tooth shell tooth-tempting tooth violet tooth wheel tooth-winged tooth wound too-timely tootle bug too-too toot plant too-trusting too-willing too-wise too-young top-armor topaz-colored topaz-green topaz rock topaz-tailed topaz-throated topaz-tinted topaz-yellow top beam top block top boot top-cap top cleaner top-coated top-cross top-cutter top-drain top-drawer top-dress top-dressing top-graft top grafting top hamper top-hampered top-hand top hat top-hatted top-heavily top-heaviness top-heavy top-hole tophus stone topic sentence Top-kapu topknot pigeon top light top line top liner top-lit top notch topographico-mythical top-over-tail topping lift topping-out course top-road bridge topsail-tye top-secret top-set top-sew top-shaped Topsy-fashion topsy-turvical topsy-turvification topsy-turvifier topsy-turvify topsy-turvily topsy-turviness topsy-turvy topsy-turvydom topsy-turvyhood topsy-turvyism topsy-turvyist topsy-turvyize top-timber top-work top yeast torch cactus torch course torch dance torch-fish torch flower torch holder torch lily torchon board torchon lace torchon paper torch pine torch race torch singer torch singing torch song torch staff torch thistle torch tree torch-tree family torchwood family to-rights tormentor wing tornado-breeding tornado cellar tornado-haunted tornado insurance tornado lantern tornado-swept torn-down tororo-konbu tororo-kubu torpedo battery torpedo boat torpedo-boat catcher torpedo-boat destroyer torpedo body torpedo boom torpedo catcher torpedo director torpedo mine torpedo net torpedo ram torpedo room torpedo sand torpedo school torpedo-shaped torpedo spar torpedo station torpedo stern torpedo tube torque arm torque converter torque tube Torrejon formation torrent-bitten torrent-borne torrent bow torrent-braving torrent duck torrent-flooded torrent-mad torrent-swept torsion angle torsion axis torsion balance torsion basin torsion curve torsion galvanometer torsion head torsion meter torsion pendulum torsion scale torsion screw torsion spring tort-feasor tortoise beetle tortoise flower tortoise-footed tortoise-headed tortoise-paced tortoise plant tortoise-rimmed tortoise-roofed tortoise-shaped tortoise shell tortoise-shell butterfly torus palatinus Tory democracy Tory democrat Tory-hating Tory-irish Tory-leaning Tory-radical Tory-ridden Tory-voiced tosh-up to-side total loss only policy totem animal totem badge totem kin totem pole tote shop toties quoties tot system totty-headed touch body touch cerate touch football touch judge touch-me-not touch-me-not-ish touch method touch needle touch paper touch reader touch spot touch typewriter touch typewriting touch-up touch writer touch writing tough-backed tough cake tough-fibered tough-fisted tough-handed tough-lived tough-looking tough-metaled tough-minded tough-mindedly tough-mindedness tough-muscled tough pitch tough-shelled tough-sinewed tough-skinned tough-thonged toura grass tour conductor touring car tourist car tourist class tourist court tourist-crammed tourist-haunted tourist-infested tourist-laden tourist-ridden tourist-trodden tourmaline pink tourmaline tongs tow boy tow car tow carder tow carrier tow cloth tow-colored towel gourd towel horse towel rack tower bastion tower-bearing tower cap tower-capped tower chime tower clock tower cress tower-crested tower-crowned tower-dwelling tower-encircled tower-flanked tower-high tower hill tower house tower light tower mustard tower owl tower-razing tower-shaped tower shell tower stamp tower-studded tower-supported tower-tearing tower telescope tower wagon Tower weight tower window tow-feeder tow-haired tow hook towing bridle towing lights towing net towing path towing post towing spar tow iron tow-made tow mixer town-absorbing town adjutant town ball town book town boomer town-born town-bound town-bred town bridge town bushel town car town church town clerk town clerkship town council town councilor town cress town crier town-dotted town dweller town-dwelling town economy town end tow-netter tow-netting town-flanked town foot town forest town-frequenting town gas town-girdled town-goer town-going town guard town hall town head town house town-imprisoned town jail town-keeping town-killed town life town-living town-looking town lot town-loving town-made town manager town meeting town mouse town mutual town officer town park town-pent town people town place town plan town planner town planning town reeve town row township road town-sick town sickness town soviet town talk town tallow town-tied town top town-trained town traveler town wall town way town-weary town woman town yard tow post tow-pung towrope horsepower tow-row tow-spinning tow team tow wheel toxin-anatoxin toxophore group toy dog to year and day toy-loving toy-sized toy spaniel T piece T plate trace-bearer trace buckle trace chain trace connector trace element trace fastener trace-galled trace-high trace holder trace hook trace horse tracer atom tracer bullet trace spring trachelo-occipital trachio branchia tracing braid tracing cloth tracing paper tracing thread tracing wheel track boat track bolt track brake track chisel track cleaner track-clearing track clip track drill track edge tracker action tracker bar track gauge track guard track harness track indicator track inspector track instrument track jack track-laying track level track leveler track lifter track liner track map track mark track-mile track oven track punch track road track roller track scale track shim track shoe track spike track sprocket track switch track tank track tool track-walking track wrench tract index traction engine traction fiber traction sprayer traction wheel tractor propeller trade acceptance trade agreement trade allowance trade association trade balance trade board trade-bound trade club trade coin trade commissioner trade council trade cumulus trade cycle trade-destroying trade discount trade dollar trade ducat trade edition trade eruption trade-facilitating trade fixture trade-gild trade goods trade guild trade hall trade-in trade journal trade-laden trade-last trade-made trade magazine trade-mark trade-marker trade-mark infringement trade-mark name trade name trade officer trade paper trade practice trade price trade rat trade rights trade road trade route trade sale trades board trade school trades council trade secret trade-seeking trades hall trades-union trades-unionist trade test trade tomahawk trade-union trade-unionism trade-unionist trade warranty trade wind trade work trading account trading market trading post trading stamp tradition-bound tradition-fed tradition-following tradition-making tradition-nourished tradition-ridden Tradition sunday traditor battery traffic beacon traffic-bearing traffic-choked traffic circle traffic-congested traffic constable traffic control traffic cop traffic court traffic density traffic director traffic-furrowed traffic jam traffic-laden traffic law traffic light traffic manager traffic-mile traffic officer traffic policeman traffic post traffic-regulating traffic regulator traffic sheet traffic shifter traffic signal traffic squad traffic-thronged traffic tower tragedy-proof tragic-comedy T rail trail angle trail arms trail bar trail blazer trail blazing trail board trail breaker trail bridge trail car trail cart trail-eye trail ferry trail handspike trailing-point trailing-point switch trail-marked trail net trail plank trail plate trail rope trail sight trail spade trail spur trail-weary trail-wise train butcher train caller train conductor train crew train dispatcher train-dispatching train flagman train foreman train-giddy train guard train hand train indicator training bank training day training level training ship training table training tackle training wall train inspector train jumper train legs train-lighting train line train-mile train mileage train oil train pipe train recorder train reporter train robber train rope train schedule train service train shed train sheet train sickness train signal train staff train starter train stop train tackle train ticket train trip train wrecker trait-complex tra-la-la tram-borne tram crane tram greaser tram guard tram load trammel net trammel wheel tram plate tramp pick tramp ship tram rail tram rod tram shed tram-traveling tranquil-acting tranquil-looking tranquil-minded Trans-acherontic Trans-adriatic Trans-african Trans-algerian Trans-alleghenian Trans-altaian Trans-american Trans-andean Trans-andine Trans-antarctic Trans-apennine Trans-arabian Trans-asiatic Trans-australian Trans-austrian Trans-balkan Trans-baltic Trans-canadian Trans-carpathian Trans-caspian Trans-congo Trans-cordilleran Trans-danubian Trans-egyptian trans-etherian Trans-euphratean Trans-euphrates Trans-euphratic Trans-eurasian transfer agent transfer book transfer box transfer caliper transfer case transfer company transfer day transference neurosis transference number transfer ink transfer paper transfer picture transfer printing transfer resistance transferring machine transfer stamp transfer table transformation myth transformation range transformation scene transformer oil transfusion cell transfusion tissue Trans-gangetic Trans-germanic Trans-grampian Trans-himalayan Trans-hispanic Trans-iberian Trans-indus Trans-iraq transit certificate transit circle transit compass transit department transit duty transit floater transit instrument transition curve transition fit transition form transition point Transition series transition sound transition temperature transition tint Transition zone transit pass transit prism transit privileges transit rot transit theodolite transit time Trans-jordan Trans-jovian Trans-kei translating roller Trans-libyan Trans-manchurian Trans-martian Trans-mediterranean Trans-mersey transmission bands transmission belting transmission cable transmission case transmission chain transmission clutch transmission dynamometer transmission efficiency transmission gear transmission grating transmission level transmission lock transmission loss transmission pulley transmission pump transmission rope transmission shaft transmission sheaf transmission theory transmission tower transmission unit transmission wheel Trans-mississippi Trans-mississippian transmitting set transmitting station transmit warrant Trans-mongolian Trans-neptunian Trans-niger transom adjuster transom bar transom butt transom catch transom center transom chain transom eye transom frame transom knee transom lift transom operator transom plate transom stern transom-sterned transom window Trans-paraguayan Trans-persian transphysical science transpiration current transportation engineer transportation insurance transport number transport rider transport riding transport ship transport vessel transposed matrix transposing instrument transposition cipher transposition method Trans-pyrenean Trans-rhenish Trans-sahara Trans-saharan Trans-saturnian Trans-severn Trans-siberian trans-sonic Trans-stygian Trans-tiberine Trans-ural Trans-uranian Transvaal daisy transverse section Trans-volga Trans-zambezian trap bat trap brilliant trap bushing trap clamp trap cleaner trap cover trap crop trap cut trap door trap-door spider trap driver trap drummer trapezoid ligament trap fisher trap hatch trap lever trap line trap match trap nest trap-nester trap net trap screw trap shot trap stair trap tree trap tuff trap vent trap weir trap window trash bag trash barrel trash can trash farming trash gatherer trash ice trash pile trash shield trash turner travel agent travel-bent travel book travel-broken travel-changed travel-disordered travel-enjoying traveler crane traveler iron travel-famous travel-formed travel-gifted travel-infected traveling agent traveling bag traveling carriage traveling case traveling clock traveling crab traveling derrick traveling elevator traveling examiner traveling fellowship traveling grate traveling-head shaper traveling hoist traveling inspector traveling tinker traveling trunk travel-jaded travel literature travel-loving travel-mad travel-met travel-opposing travel-parted travel-planning travel ration travel-sated travel shot travel sickness travel-soiled travel-spent travel-stained travel-tainted travel-tattered travel-tired travel-toiled travel-weary travel-worn traverse board traverse circle traverse drill traverse feed traverse flute traverse jury traverse rail traverse rod traverse sailing traverse shaper traverse survey traverse table traverse track traverse wind traversing bridge traversing circle traversing crane traversing gear traversing jack traversing mandrel travois road trawl board trawl line tray agriculture tray boy tray cloth tray conveyer tray elevator tray emptier tray filler tray frame tray handle tray maker tray-shaped tray-top table treacle mold treacle molding treacle mustard treacle sleep treacle water treacle wormseed treading mill tread-softly treason-breeding treason-canting treason felony treason-hatching treason-haunted treason-sowing treasure-baited treasure-bearing treasure box treasure chamber treasure chest treasure city treasure-filled treasure house treasure hunt treasure hunter treasure hunting treasure-laden treasure quest treasurer general treasure room treasure seeker treasure-seeking treasure ship treasure-trove treasury bench treasury bill treasury bond treasury certificate treasury letter treasury note treasury stock treasury warrant treaty-bound treaty-breaking treaty-favoring treaty maker treaty making treaty reinsurance treaty-sealed treaty-secured treble best treble block treble bob treble clef treble-dated treble gear treble-geared treble purchase treble-sinewed treble staff treble viol tree agate tree aloe tree azalea tree-banding tree bear tree belt tree boa tree-bordered tree-boring tree bracket tree cactus tree calf tree cat tree celandine tree-clad tree class tree-climbing tree clover tree cobra tree compass tree cony tree cotton tree-covered tree crab tree creeper tree cricket tree crow tree-crowned tree cult tree cypress tree dassie tree-dotted tree dove tree duck tree-dwelling tree-embowered tree-feeding tree feller tree fender tree fern tree-fringed tree fruit tree fuchsia tree-garnished tree germander tree-girt tree-god tree-goddess tree goldenrod tree goose tree-great tree guard tree-haunting tree heath tree-hewing tree holder tree hoopoe tree hopper tree houseleek tree huckleberry tree hyrax tree-inhabiting tree insulator tree ipomoea tree kangaroo tree lark tree lily tree line tree-lined tree-living tree-locked tree looker tree lotus tree-loving tree lucern tree lungwort tree lupine tree mallow tree-marked tree marking tree marten tree martin tree medic tree mildew tree milk tree moss tree mouse tree myrtle tree nymph tree onion tree orchis tree partridge tree peony tree pie tree pigeon tree pipit tree-planted tree planter tree planting tree poke tree poppy tree porcupine tree primrose tree protector tree pruner tree-pruning tree-ripe tree root rot tree-run tree rune tree runner tree-sawing tree scribe tree-shaded tree shrew tree-skirted tree snake tree sorrel tree sparrow tree spirit tree-spraying tree squirrel tree steppe tree stool tree sugar tree surgeon tree surgery tree swallow tree swift tree tag tree tiger tree toad tree tobacco tree tomato tree trimmer tree trunk tree veld tree violet tree viper tree wax tree wool tree wormwood tree worship tree worshiper trefoil arch trefoil knot trefoil-shaped trek ox trek wagon trellis-bordered trellis-covered trellis-framed trellis-shaded trellis-sheltered trellis-woven Tremadoc slates trembleuse cup tremor disk trench albuminuria trench artillery trench back trench bomb trench cart trench cavalier trench coat trench digger trench disease trencher attendant trencher cap trencher companion trencher critic trencher-fed trencher friend trencher knight trencher philosopher trencher plate trencher poetry trencher rascal trencher slave trencher time trench fever trench foot trench gun trenching plane trench knife trench mouth trench nephritis trench plow trench sickness trench silo trench warfare Tresca section trespass board trespass offering tress-braiding tress-encircled tress-lifting tress-plaiting tress-shorn tress-topped tres-tine trestle bed trestle bent trestle board trestle bridge trestle legs trestle post trestle table tres vif trey-ace trial-and-error trial balance trial balloon trial brief trial case trial court trial docket trial engagement trial frame trial glasses trial heat trial jury trial lawyer trial lenses trial marriage trial order trial package trial piece trial proof trial sample trial square trial trip triammonium phosphate triangle-leaved triangle-shaped triangle spider triangle winding triangular-shaped triangulato-ovate Triangulum australe Triangulum minor tribute money tribute pitch triceps surae tri-city trickle charge trickle charger trick-o-the-loop trick score trick valve trick work tricot stitch tricuspid valve trident bat trident-shaped tridymite-trachyte tri-ester trigesimo-secundo trigger finger trigger guard trigger hair trigger plant trigger tube trig loop tri-iodide trillium family trim-ankled trim-bearded trim-bodiced trim-bodied trim-cut trim-dressed trim-hedged tri-mide trim-kept trim-looking trimmer arch trimmer beam trimmer condenser trimmer joist trimmer signal trimming hatch trimming hole trimming joist trimming machine trimming press trimming punch trimming tank trim-suited trim-swept trim-waisted T ring trinity column trinity field trinity lily Trinity season Trinity sitting Trinity sunday trinity violet trinkum-trankum trip catch trip charter party trip dial trip die tripe-de-roche tripe dresser tripe-eating trip engine tripe seller tripe-selling trip-free trip gear trip hammer triphenylmethane color triphenylmethane dye trip hook triple-acting triple-action triple-aisled triple-apsidal triple-arched triple-awned triple-barbed triple-barred triple-bearded triple-bodied triple-bolted triple-branched triple-chorded triple-colored triple-crested triple crown triple-crowned triple-cylinder triple-deck triple-decked triple-dyed triple-edged triple-entry triple-expansion triple-formed triple-gemmed triple-hatted triple-headed triple-hearth triple-ingrain triple-line triple-lived triple-lock triple-nerved triple-piled triple-pole triple-rayed triple-ribbed triple-rivet triple-roofed triple-stranded triple-tailed triple tangent triple tangent plane triple-terraced triple-thread triple-throated triple-throw triple-tiered triplet lily triple-tongued triple-tonguing triple-toothed triple-towered triple-turned triple-turreted triple-veined triple-wick triplicate-pinnate triplicate-ternate trip line tri-ply trip money tripod puller tripod table trip piece trip pin tripping coil tripping line tripping link tripping relay tripping transformer trip rate trip shaft trip slip trip system trip-toe trip train trisodium phosphate Tri-state trit-trot tri-tunnel trivet table trocar-shaped troilus butterfly trois point troll-drum trolley attendant trolley block trolley bracket trolley bus trolley car trolley carrier trolley catcher trolley clip trolley cord trolley fork trolley frog trolley gong trolley guard trolley harp trolley hoist trolley insulator trolley lace trolley line trolley locomotive trolley maker trolley pole trolley rail trolley retrieiver trolley road trolley shoe trolley spring trolley track trolley tracking trolley wagon trolley wheel trolley wire troll plate tromba marina trombone coil trone weight tron weight troop duck troop leader troop-lined troop school troop-thronged troop train trophy cress trophy money trophy room trophy tax troth-contracted troth-keeping troth ring troth-telling trotter cases troubadour fiddle trouble-bringing trouble-free trouble-giving trouble-haunted trouble-house trouble maker trouble man trouble-mirth trouble-saving trouble shooter trouble shooting trouble-tossed trouble-worn trough battery trough conveyor trough gutter trough keel trough roof trough room trough-shaped trou madame trouser-press trouser presser trout bass trout brook trout-colored trout-famous trout fishing trout fly trout-haunted trout lily trout perch trout shad trout stream trowel bayonet trowel-shaped troy ounce troy pound troy weight truant officer truant school truce flag truce-hating truce-seeking truck box truck car truck driver truck farm truck farmer truck farming truck garden truck gardener truck gardening truck horse truck house trucking house truckle bed truck system truck tractor truck trailer trudgen crawl trudgen stroke true-aimed true-based true-begotten true-believing true-blooded true-blue true-breasted true-dealing true-derived true-devoted true-disposing true-divining true-eyed true-false true-felt true-grained true-heroic true-life truelove knot true-made true-mannered true-meaning true-meant true-noble true-paced true-ringing true-run true-seeming true-souled true-speaking true-spelling true-spirited true-spoken true-stamped true-strung true-sublime true-sweet true-thought true-toned true-tongued trump card trumped-up trumpet animalcule trumpet arch trumpet ash trumpet-blowing trumpet call trumpet conch trumpet creeper trumpet-creeper family trumpet daffodil trumpeter fish trumpeter muscle trumpeter perch trumpeter swan trumpeter whiting trumpet fish trumpet flower trumpet fly trumpet honeysuckle trumpet-hung trumpet hypha trumpet-leaf trumpet lily trumpet-loud trumpet major trumpet marine trumpet milkweed trumpet narcissus trumpet plant trumpet reed trumpet seaweed trumpet-shaped trumpet shell trumpet-toned trumpet-tongued trumpet tree trumpet vine trumpet-voiced trump-poor trump signal trundle bed trunk breeches trunk cabin trunk deck trunk dial trunk engine trunk hatch trunk hatchway trunk hose trunk line trunk piston trunk room trunk scald trunk steamer trunk turtle trunk whale trunnion band trunnion carriage trunnion chain trunnion cradle trunnion hoop trunnion jig trunnion plate truss beam truss-bound truss bow truss bridge truss-galled truss hoop trussing bed trussing machine truss rod trust agreement trust beneficiary trust-bolstering trust-breaking trust buster trust busting trust certificate trust company trust-controlled trust-controlling trust deed trustee bank trustee process trustee savings bank trustee security trustee stock trust fund trust institution trust maker trust mortgage trust officer trust receipt trust-regulating trust-ridden trust territory trust-winning truth-armed truth-bearing truth-cloaking truth-cowed truth-declaring truth-denying truth-desiring truth-destroying truth-dictated truth-filled truth-guarding truth-instructed truth-led truth lover truth-loving truth-mocking truth-passing truth-perplexing truth-revealing truth seeker truth-seeking truth serum truth-shod truth speaker truth-speaking truth-tried truth-writ try cock tryer-out try gun trying plane try-on trypan blue trypan red try plane try-pot try square trysting day trysting place T scale T score tsetse fly disease T slot T-slot cutter T square T steak Tsung-li yamen tsutsugamushi disease tsutsugamushi mite tuan muda tubal pregnancy tub-brained tub butter tub-coopering tub desk tub drubber tube-bearing tube brazer tube casts tube coral tube culture tube-curing tube door tube drawer tube-drawing tube-drilling tube-eyed tube-fed tube-filling tube foot tube generator tube mill tube-nosed tube plate tube railway tuber aster tubercle bacillus tuber fern tuber indexing tuber moth tube-rolling tuberous root tuberous-rooted tuber root tube saw tube-scraping tube set tube-shaped tube sheet tube shutter tube spinner tube-straightening tube transmitter tube weaver tube-weaving tube well tube worm tube wrench tub-fast tub front tub-keeping tubo-uterine tub-preach tub preacher tub preaching tub-shaped tub-size tub-sized tub-thump tub thumper tub thumping tubular-flowered tubular girder tubular goods Tubus astronomicus tub wheel tu-chung tu-chung bark tuck box tucker bag tucker-in tuck-in tuck net tuck-out tuck plate tuck-pointed tuck pointer tuck pointing tuck seine tucky lily tuco tuco tucu tucu tufted-eared tufted-necked tuft tree tug chain tug iron tug of war tug-of-warring tula metal tule chicken tule goose tule hen tulema arrow-root tule mint tule potato tule root tule wren tulip bed tulip blight tulip ear tulip-eared tulip fancier tulip-fancying tulip fire tulip-grass tulip grower tulip-growing tulip mold tulip orchid tulip poplar tulip poppy tulip root tulip-shaped tulip shell tulip tree tumble car tumble cart tumble-down tumble grass tumble home tumble mustard tumbler bearing tumbler cart tumbler cup tumbler gear tumbler gearing tumbler pigeon tumbler-shaped tumbler switch tumbling barrel tumbling bay tumbling box tumbling rod tumbling shaft tumbu fly tum-ti-tum tum-tum tumulus scab tuna cheese tuna fish tuna oil tune-skilled Tung-hu tung oil tungsten lamp tungsten ocher tungsten steel tungsten trioxide tung tree tunica palmata tuning bar tuning coil tuning cone tuning fork tuning hammer tuning hole tuning horn tuning key tuning lever tuning pin tuning pipe tuning slide tuning wrench tunking fit tunna smjors tunnel anemia tunnel-boring tunnel disease tunnel head tunnel kiln tunnel miner tunnel net tunnel pit tunnel right tunnel shaft tunnel-shaped tunnel sickness tunnel stern tunnel vault tunnel weaver tunnel worm tunny oil tuno gum tun pail tun shell tupelo gum tup-headed Tupi-guarani Tupi-guaranian tup lamb tuppenny-hapenny turban buttercup turban-crested turban-crowned turban lily turban-shaped turban sheep turban squash turban stone turban toque turbary hog turbine-driven turbine-engined turbine interrupter turbine-propelled turbojet engine turbo-propeller engine turboprop engine turboprop-jet engine turbo-ram-jet engine turf accountant turf ant turf-boring turf-bound turf-built turf cake turf-clad turf-covered turf-cutting turf-digging turf-forming turf-grown turf hog turf-laid turf moss turf-roofed turf-spread turf-walled turf webworm turgor pressure turkey beard turkey bird turkey blossom turkey bur turkey buzzard turkey call Turkey carpet Turkey-carpeted turkey claw turkey cock turkey corn turkey-feather turkey-feather fucus turkey fig turkey-foot turkey gnat turkey gobbler turkey grape turkey grass turkey hen turkey louse turkey mullein turkey oak turkey pea turkey pod Turkey red turkey-trot Turkey umber turkey vulture turkey-worked Turkish-blue Turko-albanian Turko-bulgar Turko-bulgarian Turko-byzantine Turko-cretan Turko-egyptian Turko-german Turko-greek Turko-imamic Turko-iranian Turko-italian Turko-mongol Turko-persian Turko-popish Turko-tatar Turko-tataric Turko-teutonic Turko-ugrian Turko-venetian turmeric root turmeric tree turn bench turn bolt turn bridge turn-crowned turned-back turned-down turned-in turned-on turned-out turned-over turned-up turner hall turner harp turner hood turner-off turn file turn-furrow turn-hall turn-in turn indicator turning arbor turning basin turning chisel turning engine turning gouge turning movement turning pendant turning piece turning plow turning point turning rest turning saw turning spur turning square turning value turnip aphid turnip bean turnip-bearing turnip cabbage turnip-eating turnip-fed turnip flea turnip flea beetle turnip fly turnip foot turnip grass turnip-growing turnip-headed turnip jack turnip leaf miner turnip-leaved turnip louse turnip maggot turnip nigger turnip parsnip turnip-pate turnip-pointed turnip radish turnip-rooted turnip sawfly turnip-shaped turnip shell turnip-sick turnip-stemmed turnip-tailed turnip tops turnip-yielding turn-key turn-key job turn meter turnover door turnover hinge turnover tax turn-penny turnpike geranium turnpike man turnpike road turn-round turn-server turn-serving turn-sick turn-sickness turn sign turn stitch turn-to turn-tree turn-under turnup bed turnup card Turnus butterfly turpentine beetle turpentine camphor turpentine gum turpentine moth turpentine oil turpentine orchard turpentine pine turpentine plant turpentine shrub turpentine substitute turpentine sunflower turpentine tree turpeth mineral turquoise blue turquoise-colored turquoise-encrusted turquoise green turquoise-hued turquoise-studded turquoise-tinted turret angle-rack tool turret captain turret clock turret crew turret cutter turret deck turret drier turret drill turret gun turret lathe turret-shaped turret ship turret slide tool turret spider turret steamer turret taper tool turret-topped turret-turning turtle-back turtleback scale turtle-back shooting turtle-billing turtle cowrie turtle crawl turtle deck turtle-footed turtle grass turtle green turtle-haunted turtle-mouthed turtle-neck turtle peg turtle pegger turtle pegging turtle plate turtle shell turtle stone turtle-winged Tuscan-colored Tuscan school Tuscarora rice tusk shell tusk tenon tussah silk tussock grass tussock moth tussock sedge tut money tut-mouthed tutor-sick tutti-frutti tut-tut tu-whit tu-whoo tuxedo coat tuxedo jacket tuyere arch tuyere box tuyere notch twae-three twain cloud twaite shad twattle-basket tweed-clad tweed-covered tweed-suited tween-brain tween-deck tween-watch tweet-tweet twelfhynde man twelfth-cake Twelfth-day Twelfth-night twelfth-second twelve-acre twelve-armed twelve-banded twelve-bore twelve-button twelve-candle twelve-carat twelve-cut twelve-day twelve-dram twelve-feet twelve-foot twelve-footed twelve-fruited twelve-gated twelve-gauge twelve-gemmed twelve-handed twelve-hole twelve-horsepower twelve-hour twelvehynde man twelve-inch twelve-labor twelve-legged twelve-line twelve-mile twelve-minute twelve-monthly twelve-oared twelve-ounce twelve-part twelve-pint twelve-point twelve-point sphere twelve-pound twelve-pounder twelve-rayed twelve-seated twelve-shilling twelve-sided twelve-spoke twelve-spotted twelve-starred twelve-stone twelve-stranded twelve-thread twelve-tone twelve-towered twelve-verse twelve-wired twelve-word twelve-year twelve-year-old twentieth-century twenty-acre twenty-carat twenty-centimeter twenty-cubit twenty-day twenty-dollar twenty-eight twenty-eighth twenty-fifth twenty-first twenty-five twenty-foot twenty-four twenty-fourmo twenty-fourth twenty-gauge twenty-grain twenty-gun twenty-hour twenty-inch twenty-knot twenty-line twenty-man twenty-mark twenty-mesh twenty-meter twenty-mile twenty-minute twenty-nigger twenty-nine twenty-ninth twenty-one twenty-one point cassino twenty-ounce Twenty-ounce twenty-payment twenty-penny twenty-plume twenty-pound twenty questions twenty-round twenty-second twenty-seven twenty-seventh twenty-shilling twenty-six twenty-sixth twenty-third twenty-thread twenty-three twenty-ton twenty-twenty twenty-two twenty-wood twenty-word twenty-yard twenty-year twi-banked twice-abandoned twice-abolished twice-absent twice-accented twice-accepted twice-accomplished twice-accorded twice-accused twice-achieved twice-acknowledged twice-acquired twice-acted twice-adapted twice-adjourned twice-adjusted twice-admitted twice-adopted twice-affirmed twice-agreed twice-alarmed twice-alleged twice-allied twice-altered twice-amended twice-angered twice-announced twice-answered twice-anticipated twice-appealed twice-appointed twice-appropriated twice-approved twice-arbitrated twice-arranged twice-assaulted twice-asserted twice-assessed twice-assigned twice-associated twice-assured twice-attained twice-attempted twice-attested twice-audited twice-authorized twice-avoided twice-baked twice-balanced twice-bankrupt twice-baptized twice-barred twice-bearing twice-beaten twice-begged twice-begun twice-beheld twice-beloved twice-bent twice-bereaved twice-bereft twice-bested twice-bestowed twice-betrayed twice-bid twice-bit twice-blamed twice-blessed twice-blooming twice-blowing twice-boiled twice-born twice-borrowed twice-bought twice-branded twice-broken twice-brought twice-buried twice-called twice-canceled twice-canvassed twice-captured twice-carried twice-caught twice-censured twice-challenged twice-changed twice-charged twice-cheated twice-chosen twice-cited twice-claimed twice-collected twice-commenced twice-commended twice-committed twice-competing twice-completed twice-compromised twice-concealed twice-conceded twice-condemned twice-conferred twice-confessed twice-confirmed twice-conquered twice-consenting twice-considered twice-consulted twice-contested twice-continued twice-converted twice-convicted twice-copyrighted twice-corrected twice-counted twice-cowed twice-created twice-crowned twice-cured twice-damaged twice-dared twice-darned twice-dead twice-dealt twice-debated twice-deceived twice-declined twice-decorated twice-decreed twice-deducted twice-defaulting twice-defeated twice-deferred twice-defied twice-delayed twice-delivered twice-demanded twice-denied twice-depleted twice-deserted twice-deserved twice-destroyed twice-detained twice-diminished twice-dipped twice-directed twice-disabled twice-disappointed twice-discarded twice-discharged twice-discontinued twice-discounted twice-discovered twice-disgraced twice-dismissed twice-dispatched twice-divided twice-divorced twice-doubled twice-doubted twice-drafted twice-drugged twice-dyed twice-earned twice-effected twice-elected twice-enacted twice-encountered twice-endorsed twice-engaged twice-enlarged twice-ennobled twice-essayed twice-evaded twice-examined twice-excelled twice-excused twice-exempted twice-exiled twice-exposed twice-expressed twice-extended twice-fallen twice-false twice-favored twice-felt twice-filmed twice-fined twice-folded twice-fooled twice-forgiven twice-forgotten twice-forsaken twice-fought twice-foul twice-fulfilled twice-gained twice-garbed twice-given twice-granted twice-grieved twice-guilty twice-handicapped twice-hazarded twice-healed twice-heard twice-helped twice-hidden twice-hinted twice-hit twice-honored twice-humbled twice-hurt twice-identified twice-ignored twice-imposed twice-improved twice-incensed twice-increased twice-indulged twice-infected twice-injured twice-insulted twice-insured twice-invented twice-invited twice-issued twice-jailed twice-judged twice-kidnaped twice-knighted twice-laid twice-lamented twice-leagued twice-learned twice-left twice-lengthened twice-levied twice-liable twice-listed twice-loaned twice-lost twice-mad twice-maintained twice-marketed twice-married twice-mastered twice-mated twice-measured twice-menaced twice-mended twice-mentioned twice-merited twice-met twice-missed twice-mistaken twice-modified twice-mortal twice-mourned twice-named twice-necessitated twice-needed twice-negligent twice-negotiated twice-nominated twice-noted twice-notified twice-numbered twice-objected twice-obligated twice-occasioned twice-occupied twice-offended twice-offered twice-offset twice-omitted twice-opened twice-opposed twice-ordered twice-originated twice-orphaned twice-overdue twice-overtaken twice-overthrown twice-owned twice-paid twice-painted twice-pardoned twice-parted twice-partitioned twice-patched twice-pensioned twice-permitted twice-persuaded twice-perused twice-petitioned twice-pinnate twice-placed twice-planned twice-pleased twice-pledged twice-poisoned twice-pondered twice-posed twice-postponed twice-praised twice-predicted twice-preferred twice-prepaid twice-prepared twice-prescribed twice-presented twice-preserved twice-pretended twice-prevailing twice-prevented twice-printed twice-procured twice-professed twice-prohibited twice-promised twice-promoted twice-proposed twice-prosecuted twice-protected twice-proven twice-provided twice-provoked twice-published twice-punished twice-pursued twice-qualified twice-questioned twice-quoted twice-raided twice-read twice-realized twice-rebuilt twice-recognized twice-reconciled twice-reconsidered twice-recovered twice-redeemed twice-re-elected twice-refined twice-reformed twice-refused twice-regained twice-regretted twice-rehearsed twice-reimbursed twice-reinstated twice-rejected twice-released twice-relieved twice-remedied twice-remembered twice-remitted twice-removed twice-rendered twice-rented twice-repaired twice-repeated twice-replaced twice-reported twice-reprinted twice-requested twice-required twice-reread twice-resented twice-resisted twice-restored twice-restrained twice-resumed twice-revenged twice-reversed twice-revised twice-revived twice-revolted twice-rewritten twice-rich twice-right twice-risen twice-roasted twice-robbed twice-roused twice-ruined twice-sacked twice-sacrificed twice-said twice-salvaged twice-sampled twice-sanctioned twice-saved twice-scared twice-scattered twice-scolded twice-scorned twice-sealed twice-searched twice-secreted twice-secured twice-seen twice-seized twice-selected twice-sensed twice-sent twice-sentenced twice-separated twice-served twice-set twice-settled twice-severed twice-shamed twice-shared twice-shelled twice-shelved twice-shielded twice-shot twice-shown twice-sick twice-silenced twice-sketched twice-soiled twice-sold twice-soled twice-solicited twice-solved twice-sought twice-sounded twice-spared twice-specified twice-spent twice-sprung twice-stabbed twice-staged twice-stated twice-stolen twice-stopped twice-straightened twice-stress twice-stretched twice-stricken twice-struck twice-subdued twice-subjected twice-subscribed twice-substituted twice-sued twice-suffered twice-sufficient twice-suggested twice-summoned twice-suppressed twice-surprised twice-surrendered twice-suspected twice-suspended twice-sustained twice-sworn twice-tabled twice-taken twice-tamed twice-taped twice-tardy twice-taught twice-tempted twice-tendered twice-terminated twice-tested twice-thanked twice-thought twice-threatened twice-thrown twice-tied twice-told twice-torn twice-touched twice-trained twice-transferred twice-translated twice-transported twice-treated twice-tricked twice-tried twice-trusted twice-turned twice-undertaken twice-undone twice-united twice-unpaid twice-upset twice-used twice-uttered twice-vacant twice-vamped twice-varnished twice-ventured twice-verified twice-vetoed twice-victimized twice-violated twice-visited twice-voted twice-waged twice-waived twice-wanted twice-warned twice-wasted twice-weaned twice-welcomed twice-whipped twice-widowed twice-wished twice-withdrawn twice-witnessed twice-won twice-worn twice-wounded twice-yielded twi-circle twi-colored twiddle-twaddle twiddling line twi-form twi-formed twig beetle twig blight twig borer twig caterpillar twig drop twig-formed twig gall twig girdler twig-green twig insect twig-lined twig pruner twig rush twig-strewn twig-suspended twig-wrought twilight arch twilight blue twilight-enfolded twilight-hidden twilight home twilight-hushed twilight-loving twilight parallel twilight-seeming twilight sleep twilight state twilight-tinctured twilight vision twilight zone t will twill-woven twi-minded twin-balled twin band mill twin-bearing twin-begot twin-blossomed twin boat twin-cylinder T winding twine binder twine-binding twine-bound twine braider twine-colored twine cutter twine holder twin-engined twine polisher twin equatorial twine reeler twine spinner twine-spinning twine-toned twine-twisting twin-existent twin-float twin-forked twingle-twangle twin-gun twin-headed twin-hued twin-leaved twin-lens twin-lens camera twin-light twin mill twin-motor twin-motored twin-named twinning axis twinning law twinning machine twin-peaked twin-power twin-roller twin-screw twin ship twin sister twin sisterhood twin-six twin-spiked twin-spired twin-spot twin stock twin-striped twin tap twin telescope twin-towered twin-towned twin-tractor twin valve twin-wheeled twin-wire twist belting twist bit twist drill twisted-horn twisted-stalk twisting machine twisting pair twist stitch twisty-wisty twitch grass twitch road twite finch twitter-twatter twittle-twattle twit-twat twizzle-twig two-along two-and-a-half stripes two-and-one-half striper two-angle two-arched two-armed two-aspect two-barred two-barreled two-base two-beat two-bedded two-bid two-bill two-bit two-blade two-bladed two-block two-blocks two-bodied two-bodies two-bodies problem two-bond two-bottle two-branched two-bristled two-bushel two-capsuled two-celled two-cent two-centered two-chamber two-chambered two-charge two-charge rate two-circle two-circuit two-circuit switch two-cleft two-coat two-color two-colored two-component two-course system two-cycle two-cylinder two-day two-deck two-deck vessel two-dimensional two-dimensioned two-dollar two-eared two-edged two-em two-em dash two-ended two estates two-eye two-eyed two-eyes two-faced two-facedly two-facedness two-factor two-family two-feeder two-field system two fifths two-figure two-fingered two-fisted two-floor two-flowered two-fluid two-foot two-footed two-foot octave two-forked two-formed two-gallon two-grained two-groove two-grooved two-guinea two-gun two-hand two-handed two-handedly two-handedness two-handled two-headed two-high two-hinged two-horned two-horse two-horsepower two-hour two-humped two-inch Two-kettle two-leaf two-leaved two leg two-legged two-life two-light two-line two-lined two-line octave two-lipped two-lobed two-lunged two-man two-mast two-masted two-master two-membered two-mile two-minded two-minute two-monthly two-name two-named two-necked two-needle two-nerved two-oar two-oared two old cat two-ounce two-pair two-part two-parted two-party two-pass two-peaked twopenny grass twopenny-halfpenny two-petaled two-phase two-phaser two-piece two-piece bow two-pile two-piled two-pin escapement two-pipe two-place two-platoon two-platoon system two-plowed two-ply two-point two-pointic two-pole two-position two-pound two-principle two-pronged two-quart two-rail two-ranked two-rate two-rayed two-revolution two-roomed two-row two-rowed two-seated two-seater two-seeded two-shafted two-shanked two-shaped two-sheave two-shilling two-shillingly two-shillingness two-sided two-sidedness two-soused two-speed two-spined two-spored two-spot two-spotted two-stall two-stalled two-step two-storied two-story two-stream two-stringed two-striped two-striper two-stroke two-stroke-cycle two-suit two-suiter two-syllable two-teeth two-thirder two-thirds two-three two-throw two-time two-tined two-toed two-tongued two-toothed two-topped two-track two-tusked two-twisted two-unit two-up two-valved two-volume two-way two-wheel two-wheeled two-wheeler two-wicked two-winged two-woods two-word two-year two-year-old twyhynde man Tyburn tree tye block tympan frame Tympano-eustachian tympan sheet tymp stick type bar type-blackened type block type cabinet type case type caster type-casting type characteristic type class type cutter type cutting type-distributing type-dressing type face type founder type founding type foundry type gauge type genus type-high type locality type matter type measure type metal type object type page type plate type rack typesetting machine type slug type species type specimen type station type theory type wash type wheel typewriter brush typewriter cabinet typewriter case typewriter cover typewriter desk typewriter eraser typewriter holder typewriter key typewriter mat typewriter oil typewriter pad typewriter paper typewriter ribbon typewriter roller typewriter stand typewriter table typewriter type typewriting telegraph typh fever typhlo-ureterostomy typhoid bacillus typhoid carrier typhoid spine tyrant bird tyrant-bought tyrant flycatcher tyrant-hating tyrant-quelling tyrant-ridden tyrant-scourging tyrant wren Tyrian purple tyrolite green Tzu-chou U-boat ubussu palm U-cut ugly-clouded ugly-conditioned ugly-eyed ugly-faced ugly-headed ugly-looking ugly-omened ugly-tempered ugly-visaged Ugro-altaic Ugro-aryan Ugro-finn Ugro-finnic Ugro-finnish Ugro-slavonic Ugro-tatarian uh-huh Uhro-rusinian uji fly ule tree ulla grass ulnocondylar foramen ultima ratio ultra-abolitionism ultra-abstract ultra-academic ultra-affected ultra-aggressive ultra-ambitious ultra-angelic Ultra-anglican ultra-apologetic ultra-arbitrary ultra-argumentative ultra-atomic ultra-auspicious Ultra-byronic Ultra-byronism Ultra-calvinist Ultra-christian Ultra-english Ultra-french Ultra-gallican Ultra-gangetic Ultra-german ultrahigh-frequency Ultra-julian Ultra-lutheran Ultra-lutheranism Ultra-martian Ultra-neptunian Ultra-pauline Ultra-pecksniffian Ultra-pluralism Ultra-pluralist Ultra-presbyterian Ultra-protestantism Ultra-puritan Ultra-puritanical Ultra-romanist Ultra-tory Ultra-toryism Ultra-whig Ulu-juz U magnet umber bird umber-black umber-brown umber-colored umber-rufous umble pie umbra tree umbrella ant umbrella bird umbrella bush umbrella catalpa umbrella fern umbrella fir umbrella grass umbrella leaf umbrella maker umbrella making umbrella man umbrella palm umbrella pine umbrella plant umbrella pulley umbrella sedge umbrella-shaped umbrella shell umbrella stand umbrella-topped umbrella tree Umbrian school Umbro-etruscan Umbro-florentine Umbro-latin Umbro-oscan Umbro-roman Umbro-sabellian Umbro-samnite Umbro-sienese umbu-rana um-hum umpire assay um suff um-yum Una boat unaccounted-for Un-african Un-american Un-americanism Un-americanization Un-americanize Un-anacreontic Un-anglican Un-anglicized Un-asiatic Un-athenian Un-attic Un-augean Un-australian Un-babylonian Un-biblical Un-biblically unbloody sacrifice Un-bostonian Un-brahminic Un-brazilian Un-british Un-buddhist uncalled-for uncared-for uncertainty principle uncertainty relation Un-chinese Un-christlike Un-christlikeness Un-christliness Un-christly Un-christmaslike unco guid un-come-at-able un-come-at-ableness un-come-at-ably un-co-operating un-co-operative un-co-ordinate un-co-ordinated unda maris under bevel undercurrent relay under damping underdeck tonnage under dominant underfrequency relay underhand bundler underhand stope underheat brooder underload starter underload switch under mediant under-mentioned under part underpower relay under-round under sail under secretary under-surface under way Un-dominican Un-doric Un-egyptian Un-elizabethan unemployment benefit unemployment insurance Un-english Un-englished Un-englishmanlike unequal-lengthed unequal-limbed unequal-lobed unequal-sided unequal-tempered unequal-valved Un-etruscan Un-european uneven-aged uneven-carriaged uneven-handed uneven-numbered uneven-priced uneven-roofed unfair list Un-fenian Un-finnish un-first-class Un-flemish Un-florentine Un-franciscan un-free-trade Un-french un-frenchify Un-georgian Un-german Un-germanic Un-germanize un-get-at-able un-get-at-ableness ungka puti Un-grandisonian Un-grecian Un-greek ungreenable black Un-gregorian Un-hamitic unhappy-eyed unhappy-faced unhappy-happy unhappy-looking unhappy-seeming unhappy-witted Un-hebraic Un-hebrew Un-hellenic Un-hibernically Un-hindu Un-homeric unhoped-for Un-horatian un-hunh Un-iberian Un-icelandic unicorn antelope unicorn beetle unicorn bird unicorn fish unicorn hawk moth unicorn moth unicorn plant unicorn-plant family unicorn ram unicorn root unicorn shell unicorn whale uniform-proof uniform velocity Un-indian Un-indianlike union black union blue union bow union card union catalogue union color union cord union district union down union dye union elbow union flag union grass union house Un-ionic union jack union jet burner union joint union label union-made union nut union orange union school union shop union station union suit union tannage union tee uniqueness theorem Un-iranian Un-irish Un-irishly unison interval Un-italian Un-italianate unit banking unit character unit cost United states United-statesian United-states-man unit factor unit fraction unitive life unit line unit lock unit matrix unit operation unit organ unit plane unit point unit price unit prism unit process unit pyramid unit rule unit-set unit stress unit switch unit tare unit vector unit watermark unity stress uni-univalent universe vine university-bred university-conferred university extension university-going university settlement university-sponsored university-taught university-trained Un-jacobean Un-japanese Un-jeffersonian Un-johnsonian Un-judaize Un-kantian Un-korean Un-lacedaemonian Un-latin unlonged-for unlooked-for Un-lutheran Un-machiavellian unmade-up Un-magyar Un-malay Un-maltese Un-manichaeanize Un-mediterranean Un-methodize Un-mexican Un-miltonic Un-mohammedan Un-mongolian Un-moorish Un-mormon Un-mosaic Un-moslem Un-moslemlike unmoth-eaten Un-neapolitan Un-norman Un-norwegian un-numbed Un-olympian Un-ovidian unpaid-letter unpaid-letter stamp un-panic-stricken Un-parisian Un-parisianized Un-peloponnesian Un-persian Un-petrarchan Un-philadelphian Un-pindaric Un-pindarical Un-pindarically Un-platonic Un-platonically Un-polish Un-portuguese un-preempted Un-presbyterian Un-protestant Un-protestantlike Un-prussian Un-prussianized Un-pythagorean un-reembodied Un-roman Un-romanize Un-romanized Un-saracenic Un-saxon Un-scotch Un-scottish Un-scripturality unself-assertive unself-centered unself-centred unself-changing unself-confident unself-conscious unself-consciously unself-consciousness unself-denying unself-determined unself-evident unself-indulgent unself-knowing unself-opinionated unself-possessed unself-reflecting unself-righteous unself-sacrificing unself-sufficient unself-supported unself-valuing unself-willed unself-willedness Un-semitic unsent-for Un-serbian Un-shakespearean Un-siberian Un-sicilian unsighed-for Un-slavic Un-socratic Un-southern Un-spaniardized Un-spanish Un-spartan Un-spenserian Un-sundaylike Un-swedish Un-swiss untalked-of Un-teutonic Un-thespian unthought-of unthought-on untongue-tied Un-tudor Un-turkish Un-tuscan Unuk al h Unuk al hay unup-braided Un-vedic Un-venetian Un-vergilian Un-victorian Un-viennese Un-virgilian Un-virginian Un-voltairian Un-wagnerian Un-washingtonian Un-welsh Un-wordsworthian unworm-eaten Un-yankee u-o umlaut up-a-daisy up-anchor up-and-coming up-and-comingness up-and-down up-and-down indicator up-and-downish up-and-downishness up-and-downy up-and-up upas tree up-bow up-bow sign upfeed system upholsterer bee U pin upland hickory U plate up-over up-page up-patient upper-circle upper-class upper classman upper crust upper-cruster upper-form upper-grade upper hand upper leather upper-school upper ten upper ten thousand up-put up-putting upright drill upright-growing upright-grown upright-hearted upright-heartedness upright-minded upright piano upright shave upright-standing upright-walking up-see-daisy upset price upsetting thermometer upside down upside-downism upside-downness upside-downwards up-sky Up-state Up-stater upsy-daisy upsy-freesy upsy-turvy up-to-date up-to-dately up-to-dateness up-to-datish up-to-datishness up-to-the-minute upward-borne upward-bound upward-gazing upward mordent upward-pointed upward-rushing upward-shooting upward-stirring upward-striving upward system upward-turning U rail Ural-altaian Ural-altaic uralite-gabbro Uralo-altaian Uralo-altaic Uralo-caspian Uralo-finnic Urania blue uranium glass uranium lead uranium nitrate uranium oxide uranium ray uranium red uranium yellow uranosouranic oxide urchin fish urea ferment urea-formaldehyde urea frost uredo-fruit ure-ox uretero-ureterostomy uretero-uterine uric-acid urinogenital ridge urinogenital sinus urn burial urn-buried urn-cornered urn-enclosing urn field urn moss urn schemata urn-shaped urn-topped urradhus law Ursae minorids Urta-juz urucu-rana urucuri iba usara root usar grass U section use district use inheritance use money U-shaped usher-in using-ground U-stirrup utility man utility room Utman khel Uto-aztecan U trap Utrecht velvet U tube uva grass U valley uva-ursi Uva-ursi uviol glass uviol lamp uvi yam Ux base uzara root vacancy clause vacant-brained vacant-eyed vacant-headed vacant-looking vacant-minded vacant-mindedness vacant-seeming vacation barrister vacation school vaccine lymph vaccine point vaccine therapy vaccino-syphilis vachette clasp vacuum boiler vacuum bottle vacuum brake vacuum breaker vacuum bulb vacuum can vacuum cleaner vacuum cleaning vacuum condenser vacuum crystallizer vacuum desiccator vacuum drier vacuum engine vacuum evaporating vacuum fan vacuum filter vacuum flask vacuum gauge vacuum hammer vacuum jar vacuum kettle vacuum line vacuum machine vacuum oven vacuum pack vacuum-packed vacuum pump vacuum separator vacuum shunt vacuum still vacuum strainer vacuum sweeper vacuum tank vacuum tar vacuum tester vacuum trap vacuum tube vacuum tube rectifier vacuum valve vacuum ventilation vacuum vessel vade mecum vagabond green vague-eyed vague-ideaed vague-looking vague-menacing vague-minded vague-phrased vague-shining vague-worded valence electron valence formula valence isomerism valence shell valency electron Val lace vallary crown vallate papilla vallecular canal valley board valley breeze valley flat valley lily valley mahogany valley oak valley partridge valley quail valley rafter valley roof valley tile valley train valley white oak valley wind valonia oak valuable consideration valuation account valuation survey value date valued policy valued-policy law value received value stress valval view valve body valve box valve cage valve cap valve casing valve casting valve chamber valve chest valve control valve coupling valve cup valve diagram valve ellipse valve file valve filter valve fitting valve gear valve generator valve grinder valve-grinding valve handle valve housing valve indicator valve-in-head engine valve key valve line valve motion valve plate valve ring valve rod valve seat valve-shaped valve spring valve stem valve tool valve travel valve trombone valve trumpet valve view valve washer valve wrench vampire bat vanadium bronze vanadium family vanadium oxide vanadium steel vanadous oxide van attendant van boy van builder van driver Vandyke beard Vandyke brown Vandyke collar Vandyke-edged Vandyke red vanilla bean vanilla chica vanilla extract vanilla grass vanilla leaf vanilla plant vanille ice vanillyl alcohol vanishing fraction vanishing line vanishing point vanishing trace vanity box Vanity fair Vanity-fairian vanity-proof van-john van load van loader van owner vantage game vantage ground vantage point vantage post van-winged hawk vapor bath vapor bathing vapor-belted vapor-braided vapor-burdened vapor burner vapor cabinet vapor cloud vapor-clouded vapor condenser vapor density vapor engine vaporer moth vapor-filled vapor-headed vapor heating vapor inhaler vapor jacket vapor lamp vapor lock vapor plane vapor pressure vapor-producing vapor regulator vapor-sandaled vapor stove vapor tension vapor trail vapor treatment vapor valve vapor volume Vaqueros formation vare widgeon variable condenser variable density system variable error variable-speed gear variable time fuze variation compass variation factor variation range varicose aneurysm variegated-leaved variety hybrid variety shop variety show various-blossomed various-colored various-formed various-leaved variscite green varnish brush varnish cleaner varnish dryer varnish-drying varnish filler varnish gum varnishing day varnish maker varnish-making varnish remover varnish renovator varnish sumac varnish thinner varnish-treated varnish-treating varnish tree Varronian canon Varronian satire varying duty varying-speed motor vasa parrot vase clock vase painter vase painting vase rug vase-shaped vase-vine vassal state vast-dimensioned vast-rolling vast-skirted vat builder vat color vat dye Vatican city Vatican codex Vatican fragment vat keeper vat liquor vat-net vat setter vat waste vau consecutive vau conversive vaulting capital vaulting cell vaulting course vaulting horse vaulting pillar vaulting shaft vaulting shoe vaulting tile vault mount vault rib vaunt-courier V bend V block V-blouse V bob V-bottom V connection V crowder V croze V curve veal bird vector addition vector algebra vector analysis vector area vector field vector line vector point function vector potential vector product vector quantity vector sum vedette boat vedette post vegetable alkali vegetable bezoar vegetable black vegetable brimstone vegetable calomel vegetable cheese vegetable dye vegetable earth vegetable-eating vegetable egg vegetable ethiops vegetable-feeding vegetable fibrin vegetable flannel vegetable gelatin vegetable glue vegetable gold vegetable-growing vegetable hair vegetable ivory vegetable jelly vegetable kingdom vegetable lamb vegetable marrow vegetable mold vegetable naphtha vegetable oil vegetable orange vegetable oyster vegetable parchment vegetable plate vegetable red vegetable satyr vegetable sheep vegetable spermaceti vegetable stock vegetable tallow vegetable-tallow tree vegetable wax vegetation-proof vegetation spirit vehicle tank veil-hid veil-wearing vein-bearing vein claim vein dike vein-healing veining tool vein islet vein-mining vein quartz vein-streaked velar-pharyngeal veld cornet veld-kost veld sickness veld sore velleda moth vellum binder vellum binding vellum-bound vellum cloth vellum-covered vellum form vellum-leaved vellum paper vellum-papered vellum-written velocity co-ordinate velocity function velocity head velocity potential velocity ratio velocity screen velocity stage velt-marshal velvet ant velvet ash velvet-banded velvet bean velvet-bearded velvet bent velvet-black velvet bur velvet cap velvet-caped velvet carpet velvet-clad velvet cork velvet dock velvet duck velvet finish velvet fish velvet flower velvet glove velvet grass velvet green velvet groundsel velvet leather jacket velvet-leaved velvet moss velvet osier velvet paper velvet-pile velvet plant velvet rug velvet runner velvet scoter velvet sponge velvet-suited velvet tree velvet violet vending machine veneer grafting veneer moth venerable-looking Venetian blind Venetian point Venetian school vengeance-crying vengeance-prompting vengeance-sated vengeance-scathed vengeance-seeking vengeance-taking V-engine Venice blue Venice glass Venice treacle Venice turpentine venom-breathing venom-breeding venom-cold venom-fanged venom-hating venom maker venom-mouthed venomous-hearted venomous-looking venomous-minded venom-spotted venom-sputtering venom-venting vent drill vent feather ventilating apparatus ventilating blower ventilating brick ventilating column ventilating engineer ventilating fan ventilating grate ventilating jack ventilating millstone ventilating skylight vent punch vent stack vent tank venture capital Venturi meter venturi tube vent wire verbena family verbena oil verbena violet verb phrase verd antique verdigris green verditer blue verditer green verd russe verge escapement verge paper verge watch vermeil-cheeked vermeil-dyed vermeil-rimmed vermeil-tinctured vermeil-tinted vermeil-veined vermiform process vermilion-colored vermilion-dyed vermilion-red vermilion-spotted vermilion-tawny vermilion-veined vermin-covered vermin-destroying vermin-eaten vermin-footed vermin-haunted vermin-infested vermin-ridden vermin-spoiled vermin-tenanted Vermont cent Vermont snakeroot vernal-bearded vernal-blooming vernal-flowering vernal grass vernal-seeming vernal-tinctured vernier telescope vernonia purple Verona brown Verona orris verse anthem verse-colored verse-commemorated verse-prose verse service version book vers libre vers librist vertical-grained vertical lift bridge vertical-lift mower vert russe vervain family vervain hummingbird vervain mallow vervain sage vervain thoroughwort vesico-umbilical vesico-urachal vesico-ureteral vesico-urethral vesico-uterine vesper bird vesper mouse vestibule car vestibule latch vestibule school vestibule train vestibulo-urethral vesting order Vestorian blue vest-pocket vest-pocket camera vestry board vestry room vetch-leaved vetiver green vetivert oil veto message veto power V-formed V-grooved Via lactea via media via-medialism vi apple vibration massage vibration number vibration point vibration-proof vibratory current vibratory massage vicarage tithe vicar-choralship vicar-general vicar-generalship vice-abbot vice-admiral vice-admiralship vice-admiralty vice-admiralty court vice-agent Vice-apollo vice-apostle vice-apostolical vice-architect vice-begotten vice-bishop vice-bitten vice-burgomaster vice-butler vice-caliph vice-cancellarian vice-chair vice-chairman vice-chamberlain vice-chancellor vice-chancellorship Vice-christ vice-collector vice-commodore vice-constable vice-consul vice-consular vice-consulate vice-consulship vice-corrupted vice-county vice-created vice-dean vice-deity vice-detesting vice-dictator vice-director vice-emperor vice-freed vice-general Vice-god Vice-godhead vice-government vice-governor vice-governorship vice-guilty vice-haunted vice-headmaster vice-imperial vice-king vice-kingdom vice-legate vice-legateship vice-librarian vice-lieutenant vice-loathing vice-marred vice-marshal vice-master vice-ministerial vice-nature vice-palatine vice-papacy vice-patron vice-patronage vice-polluted vice-pope vice-porter vice-postulator vice-prefect vice-presidency vice-president vice-presidential vice-presidentship vice-priest vice-principal vice-principalship vice-prior vice-protector vice-provost vice-provostship vice-punishing vice-queen vice-rebuking vice-rector vice-rectorship vice-regalize vice-regency vice-regent vice-reign vice-residency vice-resident vice-secretary vice-sheriff vice-sick vice-squandered vice-stadtholder vice-steward vice-sultan vice-taming vice-tenace vice-throne vice-treasurer vice-treasurership vice-trustee vice-upbraiding vice-verger vice versa vice-viceroy vice-warden vice-wardenry vice-wardenship vice-worn vicontiel rent vicontiel writ Victoria blue Victoria cross Victoria day Victoria embankment Victoria green Victoria lake Victoria lawn Victoria lily Victoria violet Victory button Victory day Victory loan victory medal victualing bill victualing house victualing note victualing office victualing ship victualing station victualing yard victual rent vida finch view angle view finder view halloo vigesimo-quarto vigilance committee vigogne yarn vile-born vile-bred vile-concluded vile-fashioned vile-looking vile-natured vile-proportioned vile-smelling vile-spirited vile-spoken vile-tasting villa-dotted villa-dwelling village-born village cart village community village-dwelling village economy village-lit village reserve village soviet villa-haunted villainous-looking villainy-proof Villanova culture villein socage vinaigrette sauce vine bamboo vine bark louse vine-bearing vine beetle vine black vine-bordered vine borer vine bower vine cactus vine chafer vine-clad vine-covered vine-crowned vine-decked vine-encircled vine-fed vine forester vine fretter vinegar eel vinegar essence vinegar-faced vinegar-flavored vinegar fly vinegar-generating vinegar-hearted vinegar lamp vine-garlanded vinegar maker vinegar making vinegar mother vinegar plant vinegar rot vinegar-tart vinegar tree vinegar worm vine-growing vine hawk moth vine hopper vine-hung vine-laced vine leaf vine-leafed vine leaf folder vine-leaved vine leek vine louse vine-mantled vine maple vine mesquite vine mildew vine misquite vine moth vine peach vine pest vine-planted vine-producing vine-robed vine sawfly vine scale vine-shadowed vine-sheltered vine slug vine sorrel vine sphinx vine tie vine turner vine webworm vine weevil vine wilt vine-wreathed vineyard plow vintage wine vintage year vinylidene resin viola alta viola bastarda viola da braccio viola da gamba viola damore viola da spalla viola di bordone viola di fagotto viola pomposa viol block viol da braccio viole damour violet-black violet-blind violet-blindness violet-bloom violet-blue violet-brown violet carmine violet-colored violet cress violet-crimson violet-crowned violet-dyed violet-ear violet-eared violet-embroidered violet family violet-flowered violet-garlanded violet-gray violet-green violet-green swallow violet-headed violet-horned violet-hued violet-inwoven violet prairie clover violet-purple violet ray violet-rayed violet-red violet-ringed violet root violet root rot violet-scented violet shell violet-shrouded violet-stoled violet-striped violet-sweet violet-tailed violet-throated violet tip violet water violet wood violet wood sorrel violin bow violin case violin clef violin diapason violino piccolo violin piano violin-shaped violin string violoncello piccolo viper-bit viper broth viper-curled viper gourd viper grass viper-haunted viper-headed viper lozenge viper-mouthed viper-nourished viper wine virgin birth virgin-born virgin bower virgin dip virgin-eyed virgin forest virgin honey Virginia beard grass Virginia bluebell Virginia broomrape Virginia cedar virgin knot virgin-minded virgin moth virgin parchment virgin rosin virgin scammony virgin soil virgin spawn virgin tree virgin-vested virgin widow virgin wool viridine green viridine yellow virola tallow virtue-armed virtue-binding virtue-loving virtue-tempting virtue-wise virus disease vis-a-vis vis-a-visness viscera itch vise cap vise chuck vise coupling visibility curve vis inertiae vision-directed vision-filled vision-haunted vision-seeing vision-struck visiting book visiting card visiting day visiting list visiting nurse visiting patrol visiting ticket visitor-general vitamin-free vitello-intestinal vitreous body vitreous china vitreous copper vitreous electricity vitreous fusion vitreous humor vitreous selenium vitreous silver vitreous sponge vitreous table vitrified fort vitriolated tartar vitriol chamber vitriolized bone vitriol stone vitro-clarain vitro-di-trina Vitruvian scroll vitular apoplexy viva-voce viverrine cat viverrine otter vizard-faced vizard-hid vizard maker vizard making vizard mask vizard-wearing V-necked voa vanga vocabulary entry vocabulary test vocal band vocal chink vocal cord vocal fold vocal fremitus vocal lip vocal process vocal resonance vocal sac vocal score vocational advisor vocational council vocational counselor vocational director voice box voiced breath voice glide voice glottis voice key voice leading voiceless glide voice part voice placing voice stop voice tube void end void space voix celeste volant piece volar accessory ligament volar carpal ligament volatile alkali volatile liniment volatile oil volatile salt volcanic ash volcanic bomb volcanic cloud volcanic cone volcanic dust volcano fish Volga-baltaic Volhynia fever volitional tremor volley fire Volta effect voltage amplification voltage changer voltage coil voltage divider voltage gradient voltage ratio voltage regulator voltage relay voltage transformer voltaic battery voltaic cell voltaic circuit voltaic couple voltaic current voltaic electricity voltaic pile voltameter law volt-ampere volt box volt-coulomb volte-face volt-second voluble-tongued volume color volume density volume displacement volume integral volume resistance volume table volumetric analysis volumetric flask volumetric solution volumetric strain voluntary affidavit voluntary association voluntary bankruptcy voluntary conveyance voluntary escape voluntary improvement voluntary jurisdiction voluntary manslaughter voluntary muscle voluntary oath voluntary school voluntary waste volunteer militia volunteer navy volute centrifugal pump volute compass volute spring volutin granule vomerine cartilage vomic nut vomiting center vomiting gas vomit nut vortex atom vortex filament vortex fringe vortex line vortex plate vortex ring vortex sheet vortex theory vortex tube vortex wheel vortical motion vote-bringing vote-buying vote-casting vote-catching vote checking vote counter voting machine voting trust votive medal votive offering votive office voucher check voucher register vouchers payable voucher system voussoir-shaped vow-bound vow-breaking vowel flame vowel gradation vowel harmony vowel mutation vowel point vowel system vow-keeping vow-pledged voyage policy V point vrai reseau V scraper V section V-shaped V-shaped comb V thread V tool V-type engine Vuelta tobacco vulcanite grinding wheel vulcanite pavement Vulcanized fiber vulgar establishment vulgar fraction vulgar purgation vulgar substitution vulpine opossum vulture-beaked vulture-gnawn vulture hock vulture-hocked vulture raven vulture-rent vulture-torn vulture-tortured vulture-winged vulturine eagle vulturine guinea fowl vulturine sea eagle V vat V weld V winding waberan-leaf wabert-leaf wad hook wading bird wafer ash wafer bread wafer cake wafer capsule wafer cutter wafer iron wafer paper wafer-sealed wafer sheet wafer stamp wafer tong wafer-torn waffle ingot waffle iron wage board wage capital wage earner wage earning wage fixing wage fund wage-fund theory wage labor wage level wage paying wage rate wagering contract wager policy wage scale wages fund wage slave wage slavery wages-man wage system waging board wagon bed wagon boiler wagon box wagon breast wagon ceiling wagon filler wagon greaser wagon gun wagon hammer wagon-headed wagon lock wagon master wagon road wagon roof wagon-roofed wagon seat wagon-shaped wagon shed wagon shoe wagon table wagon tent wagon tongue wagon top wagon track wagon trail wagon train wagon tree wagon vault wagon-vaulted wagon wheel wagon yard wagtail flycatcher wag-tongue Waha lake trout waika chewstick wainscot chair wainscot-faced wainscot-joined wainscot oak wainscot-paneled waist anchor waist belt waist board waist boat waist boater waist-deep waist-high waist-pressing waist strap waist tree wait-a-bit wait-awhile waiter-on wait fee waiting man waiting room wait service wake current wake dirge Wake knot wake-robin wake-up Walden inversion Waldorf salad wale knot wale shore walk-around walk clerk walker-on walkie-talkie walking beam walking boat walking crane walking engine walking fern walking fish walking gentleman walking leaf walking line walking mort walking-out walking papers walking pipe walking scow walking staff walking stick walking-sticked walking-stick palm walking straw walking sword walking toad walking twig walking tyrant walking wheel walk-on walk-up wallaby acacia wallaby bush wallaby grass wallaby-proof wall anchor wall arcade wall barley wall bearing wall bed wall bee wall-bound wall box wall bracket wall bugloss wall cabbage wall cabinet wall card wall-cheeked wall clamp wall-climbing wall crane wall creeper wall cress wall-defended wall-drilling walled-in walled plain walled-up wall-encircled wall engine wall-fed wall fern wall-fight wallflower brown wall frame wall fruit wall garden wall gecko wall germander wall gillyflower wall-girt wall grass wall green wall grenade wall hanging wall hawkweed wall hold wall hook walling crib walling-in walling wax wall-inhabiting wall link wall-loving wall painting wall penny grass wall pennywort wall pie wall-piercing wall-plat wall rocket wall rue wall rue spleenwort wall saltpeter wall-scaling wall-shaking wall-sided wall speedwell wall spleenwort Wall street Wall street loan wall tower wall wasp walnut blight walnut borer walnut brown walnut case-bearer walnut caterpillar walnut curculio walnut family walnut-finished walnut-framed walnut-inlaid walnut juice walnut moth walnut oil walnut-paneled walnut scale walnut shell walnut spanworm walnut sphinx walnut-stained walnut tree walnut-trimmed walnut weevil walnut worm walrus bird waltzing mouse waltz measure waltz song wamble-cropped wampum belt wampum snake wan-cheeked wan-colored wand bearer wand-bearing wandering albatross wandering ant wandering cell wandering dervish wandering dune wandering star wandering tattler wander termite wand-shaped wand shoot wand shooting wand shot wand-waving wane cloud want ad wantage rod wanton-cruel wanton-eyed wanton-mad wanton-sick wanton-tongued wanton-winged wan-worn Wa-palaung wapper-eyed wapper-jawed war-appareled war baby war bag war bird war-blasted warble fly warbler green warbling vireo war bonnet war book war boom war boomerang war bow war-breathing war-breeding war bride war-broken war cabinet war cart war chest war cloud war club War college war cross war cry war dance war debt War democrat warden court war-denouncing warden pie War department ward heeler ward hill war-dight war-disabled wardmote court wardmote quest war dog war-dreading wardrobe bed wardrobe case wardrobe dealer wardrobe trunk war drum ward-walk war eagle ware cleaner ware goose ware grinder warehouse bond warehouse boy warehouse clerk warehouse foreman warehouse receipt warehouse sorter ware sorter war-fain war-famed war flame war footing war game war gas war-god war-goddess war guilt war-hawk war head war horse War industries board war lord war machine warm-backed warm-blooded warm-breathed warm-clad warm-colored warm-complexioned warm-contested warmed-over warmed-up warm-glowing warm-headed warming house warming pad warming pan warm-kept warm-lying warm-reeking warm-sheltered warm spot warm-tempered warm-tinted warm-working warm-wrapped war neurosis warning lever War office warp beam warp frame warping bank warping chock warping hook warp-knit warp-knitted warp knitting warp lace warp land warple way warp net warp-net frame warp-proof war proof warp sizer warp stitch warp tier warrant officer warrant trying warranty deed war rebel Warren girder Warren hoe warrior ant warrior bush war risk war risk insurance war-savings certificate war-savings stamp war scare war school war scythe war service chevron war song war spirit war stamp war-tax stamp wart cress wart disease warted gourd warted grass warted spurge wart grass wart hog war traitor wart snake wart spurge warty egg warty-faced honey eater war vessel war-weary war whoop wary-eyed wary-footed wary-looking war zone wash ball wash barrel wash bear wash boiler wash boring wash-colored washed metal washed-out washed sale washed-up wash gilding wash goods washing bear washing bottle washing crystal washing machine washing maid Washington asparagus Washington cedar Washington cent Washington fir Washington hand press Washington lily Washington palm Washington pie Washington thorn wash leather wash mill wash miller wash-mouth Washoe process wash oil washout process wash pitcher washrag gourd wash strake wash-up wash water wasp ant wasp-barbed wasp bee wasp beetle wasp fly wasp-minded wasp nest wasp spider wasp-stung wasp waist wasp-waisted wasp-waistedness wassail bowl wassail cup waste baling waste bank waste bin waste book waste box waste boy waste breaker waste bundler waste-cleaning waste-dwelling waste heat waste-heat boiler waste-heat drier waste leaf waste mold waste nut waste pallet wastepaper basket waste-wax process wasting asset wasting palsy watch adjuster Watch-and-warder watch bell watch bracelet watch cleaner watch crystal watchet-colored watch fob watch glass watching brief watching rate watchman beetle watch repairer watch screw thread watch spring water adder water agrimony water aloe water avens water awlwort water bag water-bearing water-beaten water bewitched water-bind water boatman water bog rush water-borne water-bound water breather water-breathing water-broken water carrier water closet water color water-colored water-colorist water-commanding water-consolidated water-cool water-cooled water cooler water-cressy water crowfoot water-drinking water dropwort water farmer water-fennel oil water fern water-finished water-flowing water foxtail water-free water frontage water-fronter water furrow water-galled water gap water-gas tar water gate water-gild water gilder water gilding water-girt water-glass painting water grass water-gray water-gruel water-gruellish water hair grass water-inch watering-pot shell water-jacket water-jacketing water-jelly water-jet water kelpie water-laid water-lily family water-lily tree water-line water-lined water-line model water meadow grass water-milfoil family water moccasin water-nut family water oat water-packed water-plantain family water poa water-power engineering water pump water pumper water-pumping water-purpie water-quenched water reed water-ret water rice water-rolled water-rot water-seal water-sealed water-season water set water-shield family water-shot water-sick water-slaked lime water slide water-smoke water snake water-soak water-soluble water-standing water-starwort family water-struck water-supply water-supply engineer water-supply engineering water-sweet water tare grass water telescope water tower watertube boiler water-vascular water-washed water-waved water-white water works watery-colored watery-eyed watery-headed Watteau back watt-hour wattle bark wattle crow wattled bee eater wattled crow wattled honey eater wattled lapwing wattled stare watt-second wave-cut wave-encircled wave form wave-form theory wave-green wave guide wave-haired wave-hollowed wave-lashed wave-laved wave-line wave-making wave-moist wave surface wave system wave telegraphy wave telephony wave theory wave top wave train wave trap wave wheel wave winding wavy-coated wavy-edged wavy-grained wavy-haired wavy-leaved wavy-toothed waw consecutive waw conversive waw-waw wax bean wax-bearing wax-billed wax bleacher wax brown wax candle wax cloth wax cluster wax-coated wax-colored wax-composed wax-covered wax end wax-ended wax-erected wax-extracting wax-featured wax-finished wax-forming wax gland wax-headed wax-jointed wax-lighted wax paper wax-polished wax-producing wax-red wax-rubbed wax-secreting wax-stitched wax-tipped wax-topped wax-white wax worm wax-yellow way baggage way beam way-beguiling way bennet way bent way car way chain way-clearing way-down way enough wayfaring tree way freight way-god waygoing crop way-haunting wayleave rent way-off way out way passenger way point way shaft wayside cross way station way thistle way ticket way-up way-weary way-wise weak-ankled weak-armed weak-backed weak-bodied weak-built weak-chested weak-chined weak-chinned weak-eyed weak-fibered weak-headed weak-headedly weak-headedness weak-hinged weak-jawed weak-kneed weak-kneedly weak-kneedness weak-legged weak-limbed weak-lunged weak-minded weak-mindedly weak-mindedness weak-nerved weak-pated weak-spirited weak-spiritedly weak-spiritedness weak-stemmed weak-stomached weak-toned weak-winged we-all wealth-encumbered wealth-fraught wealth-getting wealth-yielding Wealthy spot weaning brash wear back wearing apparel wearing course wear iron wear limit gauge wear-out weary-foot weary-footed weary-laden weary-looking weary-winged weary-worn weasel cat weasel coot weasel-faced weasel lemur weasel spider weasel word weasel-worded weather anchor weather-battered weather-beaten weather-bitt weather-bitten weather-bound weather bow weather box weather breeder weather-breeding weather cast weather caster weather chart weather cloth weather-driven weather-eaten weathered oak weather eye weather-fagged weather-fast weather-fend weather-free weather gall weather gauge weather-going tide weather-guard weather-hardened weather helm weather side weather-slated weather slating weather stain weather station weather-stayed weather strip weather-tanned weather tide weather vane weather wisdom weather-wise weaver finch weaver shell webbing moth Weber formation Weberian apparatus Weberian ossicle weber turn web-fingered web-footed web-footedness web frame web-glazed web glazing web lead web-perfecting web perfecting press web printing web saw web stiffener web-toed web wheel web-winged web-worked Weddell seal wedding cake wedding chest wedding day wedding dinner wedding flower wedding gown wedding guest wedding journey wedding march wedding ring wedding sheet wedge-bearing wedge-billed wedge bone wedge character wedged-tailed wedge-form wedge-formed Wedge furnace wedge gauge wedge gearing wedge-shaped wedge-tailed wedge-tailed dove wedge-tailed eagle wedge-tailed gull wedge-tailed shearwater wedging crib Wedgwood blue Wedgwood green Wedgwood ware weed-choked weed-cutting weed-entwined weeder clips weeder hoe weed-fringed weed-grown weed-hidden weed-hung weed killer weed-killing weed-spoiled weed tree weedy-bearded weedy-haired weedy-looking wee folk weekend bag week-long week-old week work weep hole weeping ash weeping beech weeping eczema weeping golden bell weeping honey locust weeping lantana weeping myall weeping pea tree weeping-ripe weeping willow weese-allan weet-weet weft fork weft-knit weft knitting weft sorter we-group weighbar shaft weigh beam weigh-out weight-bearing weight-carrying weight cloth weight-lifting weight-measuring weight playing weight-raising weight-resisting weight voltameter Weil-felix reaction weir basin weir box weird-fixed weird-looking weird-set weiss beer welch plug welding blowpipe welding powder welding rod welding torch weld metal welfare state welfare work welfare worker welkin eye welkin-high well-able well-abolished well-abounding well-absorbed well-abused well-accented well-accentuated well-accepted well-accommodated well-accompanied well-accomplished well-accorded well-according well-accoutered well-accredited well-accumulated well-accustomed well-achieved well-acknowledged well-acquainted well-acquired well-acted well-adapted well-addressed well-adjusted well-administered well-admitted well-adopted well-adorned well-advanced well-adventured well-advertized well-advised well-advocated well-affected well-affectioned well-affirmed well-afforded well-agreed well-agreeing well-aimed well-alleged well-allied well-allotted well-allowed well-alphabetized well-altered well-amended well-amused well-analyzed well-ancestored well-ankled well-annealed well-announced well-anointed well-answered well-anticipated well-appareled well-appearing well-applauded well-applied well-appointed well-appointedly well-appointedness well-appreciated well-approached well-appropriated well-approved well-arbitrated well-arched well-argued well-armed well-armored well-aroused well-arranged well-arrayed well-ascertained well-assembled well-asserted well-assessed well-assigned well-assimilated well-assisted well-associated well-assorted well-assumed well-assured well-attached well-attained well-attempered well-attempted well-attended well-attending well-attested well-attired well-attributed well-audited well-authenticated well-authorized well-averaged well-avoided well-awakened well-awarded well-aware well-backed well-baked well-balanced well-baled well-bandaged well-banked well-barbered well-bargained well-based well-base rim well-bathed well-batted well-bearing well-beaten well-becoming well-bedded well-befitting well-begotten well-begun well-behated well-behaved well-being well-beknown well-believed well-believing well-beloved well-beneficed well-bent well-beseemingly well-bespoken well-bested well-bestowed well-blacked well-blended well-blent well-blessed well-blooded well-blown well boat well-bodied well-boding well-boiled well-bonded well-boned well-booted well-bored well borer well-boring Well-born well-borne well-bottled well-bottomed well-bought well-bound well-bowled well-boxed well-braced well-braided well-branched well-branded well-brawned well-breasted well-breathed well-bred well-bredness well-brewed well-bricked well-bridged well-broken well-brooked well-browed well-browned well-brushed well-built well-buried well-burnished well-burnt well-bushed well-busied well-buttoned well-caked well-calculated well-calculating well-calked well-called well-calved well-caned well-canvassed well-carpeted well-carved well-cased well casing well-cast well-caught well-cautioned well-celebrated well-cemented well-censured well-centered well-certified well-chained well-changed well-chaperoned well-characterized well-charged well-charted well-chauffeured well-checked well-cheered well-cherished well-chested well-chilled well-choosing well-chosen well-churned well-circularized well-circulated well-circumstanced well-civilized well-clad well-classed well-classified well-cleansed well-cleared well-climaxed well-cloaked well-closed well-closing well-clothed well-coached well-coined well-collected well-colored well-combined well-commanded well-commenced well-commended well-compacted well-compared well-compassed well-compiled well-completed well-complexioned well-composed well-comprehended well-concealed well-conceived well-concentrated well-concerted well-concluded well-concocted well-concorded well-condensed well-conducted well-conferred well-confessed well-confided well-confirmed well-connected well-conned well-consenting well-conserved well-considered well-consoled well-consorted well-constituted well-constricted well-constructed well-construed well-content well-contented well-contested well-continued well-contracted well-contrasted well-contrived well-controlled well-conveyed well-convinced well-cooked well-cooled well-copied well-corked well-corrected well-corseted well-costumed well-couched well-counseled well-counted well-counterfeited well-coupled well-courted well-covered well-cowed well-crammed well-crated well-credited well cress well-crested well-criticized well-crocheted well-cropped well-crossed well-crushed well-cultivated well-cultured well-curbed well-cured well-curled well-curried well-curved well-cushioned well-cut well-cutting well-damped well-danced well-darned well-dealing well-dealt well-debated well-decided well-deck well-decked well decker well-declaimed well-decorated well-decreed well-deeded well-deemed well-defended well-deferred well-defined well-delayed well-deliberated well-delivered well-demeaned well-demonstrated well-denied well-derived well-descended well-described well-deserved well-deservedly well-deservingness well-designated well-designed well-designing well-desired well-destroyed well-developed well-devised well-diagnosed well-digested well-directed well-disbursed well-disciplined well-discounted well-discussed well-disguised well-dish well-displayed well-disposed well-dispositioned well-disputed well-dissected well-dissembled well-distanced well-distinguished well-distributed well-divided well-divined well-documented well-doer well-doing well-done well-dosed well-drafted well-drain well-drained well-drawn well-dressed well-dried well-drilled well driller well drilling well-driven well-drugged well-dunged well-dusted well-dying well-eared well-earned well-earthed well-eased well-economized well-edited well-educated well-effected well-elaborated well-elevated well-eliminated well-embodied well-emphasized well-employed well-enacted well-enchanting well-encountered well-encouraged well-ended well-endorsed well-endowed well-enforced well-engineered well-engraved well-entered well-entertained well-entitled well-enumerated well-enveloped well-equipped well-erected well-escorted well-essayed well-established well-esteemed well-estimated well-evidenced well-examined well-executed well-exemplified well-exhibited well-expended well-experienced well-explained well-exploded well-exposed well-expressed well-fabricated well-faced well-famed well-fancied well-farmed well-fashioned well-fastened well-fatted well-favored well-favoredly well-favoredness well-feasted well-feathered well-featured well-fed well-feed well-feigned well-felt well-fenced well-fended well-fermented well fern well-fielded well-filed well-filled well-filmed well-financed well-fined well-finished well-fitted well-fitting well-fixed well-flanked well-flattered well-flavored well-fledged well-fleeced well-fleshed well-flooded well-floored well-floured well-flowered well-flowering well-folded well-followed well-fooled well-foreseen well-forewarned well-forewarning well-forged well-forgotten well-formed well-formulated well-fortified well-fought well-found well-founded well-foundedly well-foundedness well-framed well-fraught well-freckled well-freighted well-frequented well-fried well-friended well-frightened well-fruited well-fueled well-functioning well-furnished well-furnishedness well-furred well-gained well-gaited well-gardened well-garmented well-garnished well-gathered well-geared well-generaled well-gifted well-girt well-glossed well-gloved well-glued well-going well-gotten well-governed well-gowned well-graced well-graded well-grained well-grassed well-gratified well-graveled well-graven well-greased well-greaved well-greeted well-groomed well-groomedness well-grounded well-grouped well-grown well-guaranteed well-guarded well-guessed well-guided well-guiding well-guyed well-hained well-haired well-hallowed well-hammered well-handicapped well-handled well-hardened well-harnessed well-hatched well-havened well-hazarded well-headed well-heard well-hearted well-heated well-hedged well-heeled well-helped well-hemmed well-hewn well-hidden well-hinged well-hit well-hoarded well-holed well-hoofed well-hooped well-horned well-horsed well house well-housed well-hued well-humbled well-humbugged well-humored well-hung well-husbanded well-identified well-ignored well-illustrated well-imagined well-imitated well-implied well-imposed well-impressed well-improved well-inaugurated well-inclined well-included well-incurred well-indexed well-indicated well-inferred well-informed well-inhabited well-initiated well-inscribed well-inspected well-installed well-instanced well-instituted well-instructed well-insured well-intended well-intentioned well-interested well-interpreted well-interviewed well-introduced well-invented well-invested well-investigated well-ironed well-irrigated well-itemized well-joined well-jointed well-judged well-judging well-judgingly well-justified well-kenned well-kent well-kept well-kindled well-knit well-knitted well-knotted well-knowing well-knowledged well-known well-labeled well-labored well-laboring well-laced well-laden well-laid well-languaged well-larded well-launched well-laundered well-leaded well-learned well-leased well-leaved well-led well-left well-lent well-less well-lettered well-leveled well-levied well-lighted well-like well-liked well-liking well-limbed well-limited well-limned well-lined well-linked well-lit well-liveried well-living well-loaded well-located well-locked well-lodged well-lofted well log well-looked well-looking well-lost well-loved well-lunged well-made well-maintained well-managed well-manned well-mannered well-manufactured well-manured well-mapped well-marked well-marketed well-married well-marshalled well-masked well-mastered well-matched well-mated well-matured well-meaner well-meaning well-meaningly well-meaningness well-meant well-measured well-membered well-mended well-merited well-met well-metalled well-methodized well-mettled well-milked well-mingled well-minted well-mixed well-modeled well-modified well-moduled well-moneyed well-moralized well-motivated well-motived well-moulded well-mounted well-mouthed well-named well-narrated well-natured well-naturedness well-necked well-negotiated well-neighbored well-nicknamed well-nigh well-nosed well-noted well-nourished well-nursed well-nurtured well-oared well-obeyed well-observed well-occupied well-officered well-oiled well-omened well-omitted well-operated well-opinioned well-ordered well-organized well-oriented well-ornamented well-ossified well-outlined well-overseen well-packed well-paid well-painted well-paired well-paneled well-paragraphed well-parceled well-parked well-past well-patched well-patronized well-paved well-paying well-penned well-pensioned well-peopled well-perceived well-perfected well-performed well-persuaded well-philosophized well-photographed well-picked well-pictured well-piloted well-pitched well-placed well-planned well-planted well-played well-plead well-pleased well-pleasedly well-pleasedness well-pleasing well-pleasingness well-plenished well-plotted well-plowed well-plucked well-plumaged well-plumed well-pointed well-policed well-policied well-polished well-pondered well-posed well-positioned well-possessed well-posted well-postponed well-practiced well-predicted well-prepared well-preserved well-pressed well-pretended well-priced well-primed well-principled well-printed well-prized well-professed well-prolonged well-pronounced well-prophesied well-proportioned well-prosecuted well-protected well-proved well-proven well-provendered well-provided well-published well-punished well-pursed well-pushed well-put well-puzzled well-qualified well-qualitied well-quartered well-quizzed well-raised well-ranged well-rated well-read well-readied well-reared well-reasoned well-received well-recited well-reckoned well-recognized well-recommended well-recorded well-refereed well-refined well-reflected well-reformed well-refreshed well-refreshing well-regarded well-regulated well-rehearsed well-relished well-relishing well-remarked well-remembered well-rendered well-rented well-repaid well-repaired well-replaced well-replenished well-reported well-represented well-reprinted well-reputed well-requited well-resolved well-resounding well-respected well-rested well-restored well-revenged well-reviewed well-revised well-rewarded well-rhymed well-ribbed well-ridden well rig well-rigged well-ringed well-ripened well-risen well-risked well-roasted well-rode well-rolled well-roofed well room well-rooted well-roped well-rotted well-rounded well-routed well-rowed well-rubbed well-ruled well-ruling well-run well-running well-sacrificed well-saffroned well-sailing well-salted well-sanctioned well-sanded well-satisfied well-saved well-savoring well-saying well-scared well-scattered well-scented well-scheduled well-schemed well-schooled well-scolded well-scored well-screened well-scrubbed well-sealed well-searched well-seasoned well-seated well-secured well-seeded well-seeing well-seeming well-seen well-selected well-selling well-sensed well-separated well-served well-set well-settled well-set-up well-sewn well-shaded well-shading well-shafted well-shaped well-shapen well-sharpened well-shaven well-sheltered well-shod well-shot well-showered well-shown well shrimp well-sifted well-sighted well-sinewed well sinker well-sinking well-situated well-sized well-sketched well-skilled well-skinned well smack well-smelling well-smoked well-soaked well-sold well-soled well-solved well-sorted well-sounding well-spaced well-speaking well-sped well-spent well-spiced well-splitting well-spoken well-sprayed well-spread well-spun well-spurred well-squared well-stabilized well-stacked well-staged well-stained well staircase well-stamped well-starred well-stated well-stationed well-steered well-stitched well-stocked well-stopped well-stored well-straightened well-strained well-strapped well-stressed well-stretched well-striven well-stroked well-strung well-studied well-stuffed well-styled well-subscribed well-succeeding well-sufficing well-sugared well-suggested well-suited well-summarized well-sunburned well-sung well-superintended well-supervised well-supplemented well-supplied well-supported well-suppressed well-sustained well sweep well-swelled well-swollen well-systematized well-tailored well-taken well-tamed well-tanned well-tasted well-taught well-taxed well-tempered well-tenanted well-tended well-terraced well-tested well-thewed well-thought well-thrashed well-thriven well-thrown well-thumbed well-tied well-tilled well-timbered well-timed well-tinted well-toasted well-told well tomb well-toned well-tongued well-toothed well-tossed well-traced well-traded well-trained well-translated well trap well-trapped well-traveled well-treated well-tricked well-tried well-trimmed well-trod well-trodden well-trunked well-trussed well-trusted well-tuned well-turned well-tutored well-twisted well-typed well-umpired well-understood well-uniformed well-united well-urged well-utilized well-valeted well-varied well-varnished well-veiled well-ventilated well-ventured well-verified well vessel well-visualized well-voiced well-vouched well-walled well-wared well-warmed well-warned well-warranted well-washed well-watched well-watered well-weaponed well-wearing well-weaved well-weaving well-wedded well-weighed well-weighing well-whipped well-wigged well-willer well-willing well-winded well-windowed well-winged well-winnowed well-wired well-wish well-wisher well-wishing well-witnessed well-witted well-won well-wooded well-wooing well-wooled well-worded well-worked well-worked-out well-worn well worship well-woven well-wreathed well-written well-wrought well-yoked Welsh-begotten Welsh-born Welsh corgi Welsh-english Welsh-fashion Welsh-looking Welsh-made Welsh-rooted Welsh-speaking Welsh-wrought welt seam Wen chang W-engine wen-li Wenlock formation Wen ti Wenzel bible were-animal were-ass we-ship West-about west-by west-central west coast fir west coast hemlock West end west-ender West-ender West-endish west-endism West-endism west-endy west-faced west-facing west-going West india West indiaman West indian West indian ivy West-indian-ivy family West india seal west-northwest west-northwesterly Westphal balance West point West pointer west-southwest west-southwesterly west-turning West virginian westward-looking west wind west-winded west-windy wet-air wet-air pump wet blanket wet-blanketing wet-bulb wet-bulb thermometer wet-cell wet-cheeked wet-clean wet cleaner wet cooper wet-eyed wet-footed wet-lipped wet-my-lip wetness fraction wet nurse wet-pipe wet-pipe system wet-plate wet-plate process wet-process machine wet-salt wet-season wet-shod wetter-off wet-worked we-uns whale-backed whale barnacle whalebone tree whale-built whale feed whale fin whale fisher whale fisherman whale fishery whale fishing whale food whale-headed whale-hunting whale iron whale line whale louse whale-mouthed whale oil whale shark whale-tailed whaling gun whaling master whaling port whaling rocket whare-kura whare-puni whare-wananga wharf boat wharf dues wharf duty wharf end wharf fee wharf fish wharf hand wharf laborer wharf lumper wharf monkey wharf owner wharf rat wharf spike wharf worker what-eer what-is-it whats-her-name whats-his-name whats-it whats-its-name what-you-may-call-it wheaf-head wheaf take-all wheat aphid wheat aphis wheat beetle wheat belt wheat berry wheat-blossoming wheat bug wheat bulb fly wheat bulb worm wheat chafer wheat-colored wheat cutworm wheat duck wheatear cockle wheat eel wheat eelworm wheat farmer wheat-fed wheat field wheat fly wheat gallfly wheat grass wheat-growing wheat-head army worm wheat-hid wheat jointworm wheat louse wheat maggot wheat meal wheat midge wheat mildew wheat mite wheat mosaic wheat moth wheat pest wheat plant louse wheat-producing wheat-raising wheat-rich wheat rosette wheat rust wheat sawfly wheat scab wheat seed wheatsel bird wheat sheaf wheat smut wheat stem wheat-stem maggot wheat stem rust wheat-stem sawfly wheat-straw wheat thief wheat thrips wheat weevil wheat weigher wheel animal wheel animalcule wheel back wheel-backed wheel barometer wheel-barrower wheel base wheel bearer wheel-broad wheel bug wheel case wheel chain wheel chair wheel colter wheel control wheel cross wheel cultivator wheel-cut wheel-cutting wheel excavator wheel fitter wheel-footed wheel-going wheel governor wheel hoe wheel horse wheel lathe wheel load wheel load weigher wheel lock wheel-made wheel map wheel-marked wheel money wheel-mounted wheel ore wheel organ wheel pen wheel pit wheel plate wheel plow wheel-resembling wheel rod wheel rope wheel scraper wheel-shaped wheel-smashed wheel-spun wheel stitch wheel-supported wheel tracery wheel trap wheel tree wheel trolley wheel-turned wheel-turning wheel welder wheel window wheel-worn whelk-shaped whelk tingle when-issued whet slate whetstone-shaped whetstone slate whettle-bone whew duck whey-bearded whey bird whey-blooded whey-brained whey butter whey-colored whey cure whey whig whidah bird whidah finch whim gin whim-proof whin sparrow whin-wrack whip-bearing whipbelly vengeance whipcord willow whip-corrected whip-cracking whip crane whip crop whip-ended whip gin whip graftage whip grass whip hand whip handle whip hoist whip horse whip line whip-marked whipper-in whippers-in whippet tank whipping boy whipping cream whipping girl whipping post whipping-snapping whipping top whip purchase whip ray whip rod whip roll whip-round whip row whip scorpion whip-shaped whip snake whip-stick whipsy-derry whip-tailed whiptail shark whip thread whip-tom-kelly whip-tongue whip top whip-wielding whip yarn whirl drill whirligig beetle whirligig mullet whirling table whirlpool nebula whirl-shaped whisk broom whisker boom whisker jumper whisk tail whisk-tailed whisky cherry whisky drinker whisky-drinking whisky-frisky whisky-jack whisky liver whisky poker whisky-sodden whisky sour whisper glide whisper glottis whispering dome whispering gallery whispering office whispering pectoriloquy whispering voice whist drive whistlebelly vengeance whistle duck whistle-pig whistle punk whistle stop whistling jar white-acre white-alder white-alder family white-ankled white-ant white-anted white-armed white-ash white ash herb white-backed white-barked whitebark pine white-barred white-beaked white-bearded white-bellied white-berried white-billed white-blood white-blooded white-blue white-bodied white-bone white-boned white book white-bordered white-bosomed white-breasted white-brick white-browed white-brown white-burning white-capped white-cell white-cell blood white-cheeked white-chinned white-churned white-clad white-clothed white-coated white-collar white-colored white cooper white-cotton white-cotton tree white-crested white-cross white-cross diatom white-crossed white-crowned white-domed white-dotted white-dough white-ear white-eared white-eye white-eyed white-eyelid white-eyelid monkey white-faced white-favored white feather white-feathered white-featherism white-felled white-flanneled white-flecked white-fleshed white-flower white-flowered white-flowing white-foot white-footed white-frilled white-fringed white-frocked white-fronted white-fruited white-girdled white-glittering white-gloved white-gray white-green white-haired white-hairy white-hard white-hatted white-headed white-heart white-heart hickory white heat white-hoofed white-hooved white-horned white-horsed white-hot white-jacketed white-laced white-leaf white-leaved white-legged white-lie white-lined white-linen white-lipped white-list white-listed white-livered white-liveredly white-liveredness white-loaf white-looking white-maned white-mantled white-marked white-mooned white-mottled white-mouthed white-mustard white-mustard oil white-necked whitening stone white-nosed white-painted white-paneled white-petaled white-pickle white-pickle mosaic white-pine white-pine blister rust white-pine rust white-pine weevil white-piped white-plumed white-rag white-railed white-rayed white-red white-ribbed white-ribboned white-ribboner white-rinded white-robed white-roofed white rot white-ruffed white-rumped white-russet white-salted white-satin white-set white-sewing white-shafted white-sheeted white-shouldered white-sided white-skin white-skinned white slave white slaver white slavery white-slaving white-sleeved white-spored white-spotted white-stemmed white-stoled white-strawed white-tailed white-thighed white-throated white-tinned white-tipped white-tomentose white-tongued white-tooth white-toothed white-topped white-tufted white-tusked white-uniformed white-veiled white-veined white-vented white-waistcoated white-walled white-wanded white-water white-waving white-way white-whiskered white-wig white-wigged white-winged whitewood bark white-woolly white-wristed white-zoned whiting bottle whiting box whiting brush whiting can whiting dabber whiting filler whiting furnace whiting kit whiting loader whiting maker whiting mill whiting packer whiting paste whiting pollack whiting powder whiting sponge whiting time whiting tin whitish-blue whitish-brown whitish-cream whitish-flowered whitish-green whitish-lavender whitish-red whitish-tailed whitish-yellow whitlow grass whitlowwort family Whitsun ale Whitsun farthings Whitsun gillyflower Whitsun monday Whitsun tuesday whitten tree Whit-tuesday whitty-tree Whit-week whity-brown whity-gray whity-green whity-yellow whiz-bang whizzing stick whole-and-half whole-and-half compass whole-backed whole-bodied whole-bound whole-cloth whole-colored whole-eared whole-eyed whole-feathered whole-footed whole-headed whole-hog whole-hogger whole-hoofed whole-leaved whole-length whole-minded whole-mouthed whole-or-none whole-sail wholesale dealer whole-seas whole-skinned whole-souled whole-souledly whole-souledness whole-spirited whole-step whole time whole-timer whole tone whole-tone scale whole-wheat whole-witted whooping cough why-not wicked-acting wicked-eyed wicked-looking wicked-minded wicked-speaking wicked-tongued wicker-woven wicket dam wicket door wicket gate widbin pear tree wide-abounding wide-accepted wide-angle wide-arched wide-armed wide-awake wide-awakeness wide-banked wide-branched wide-branching wide-breasted wide-brimmed wide-cast wide-chapped wide-circling wide-climbing wide-consuming wide-crested wide-distant wide-doored wide-eared wide-echoing wide-elbowed wide-expanded wide-expanding wide-extended wide-extending wide-eyed wide-faced wide-flung wide-framed wide-gaping wide-gated wide gauge wide-girdled wide-handed wide-hipped wide-honored wide-imperial wide-jointed wide-kneed wide-lamented wide-leafed wide-leaved wide-lipped wide-met wide-minded wide-necked wide-nosed wide-open wide-opened wide-openly wide-openness wide-palmed wide-patched wide-permitted wide-petaled wide-pledged wide-ranging wide ration wide-reaching wide-realmed wide-resounding wide-ribbed wide-rimmed wide-rolling wide-row wide-said wide-sanctioned wide-seen wide-set wide-shaped wide-shown wide-skirted wide-sleeved wide-sold wide-soled wide-sought wide-spaced wide-spanned wide-spreaded wide-spreading wide-straddling wide-streeted wide-stretched wide-stretching wide-throated wide-toed wide-tracked wide-veined wide-wasting wide-watered wide-wayed wide-winding wide-winged wide-yawning widgeon coot widgeon grass widow-bench widow bird widow duck widow finch widow fish widow flower widow-maker widow monkey widow right widow-wail widow-wail family widow woman wife-awed wife-beating wife-bound wife-hunting wife-ridden wife-worn wig block wiggen tree wiggle-tail wiggle-tail cultivator wiggle-waggle wiggle-woggle wiggly-waggly wig sumac wig tree wigwag signal wild-acting wild-aimed wild-billowing wild-blooded wild-booming wild-born wild-brained wild-bred wildcat bank wildcat well wild cherry wild-chosen wilderness area wild-eyed wild flower wild-flying wild-fought wild fowl wild-fowler wild-fowling wild-goose wild-goose chase wild-goose plum wild-grown wild-haired wild-headed wild-headedness wild-looking wild-made wild man wild-notioned wild-oat wild-oat kicker wild-phrased wild-spirited wild-staring wild-warbling wild-warring wild-williams wild-winged wild-witted wild-woven will-commanding will-fraught Willie-boy willie gow willie hawkie willie wagtail willie-waucht willie wicket will-less will-lessly will-lessness will-o-the-wisp willow acacia willow amsonia willow apple willow beauty willow beetle willow-bordered willow borer willow buffer willow cactus willow cat willow catfish willow chafer willow charcoal willow-colored willow-cone willow-cone gall willow cottonwood willow family willow fly willow-fringed willow gall willow goldfinch willow green willow grouse willow-grown willow herb willow lark willow leaf willow leaf beetle willow-leaved willow louse willow moth willow myrtle willow oak willow pattern willow peeler willow poplar willow ptarmigan willow sawfly willow-shaded willow shoot willow-skirted willow slug willow slug caterpillar willow sparrow willow thorn willow thrush willow tree willow-tree money willow-tufted willow-veiled willow wand willow warbler willow-wielder willow-wood willow wren will power will-strong will-willet will-with-the-wisp will-worship will-worshiper willy-mufty willy-nilly willy-wagtail willy-wicket willy-willy wilt disease wilting coefficient wilting percentage wilting point wince pit wince pot winch driver wincing machine wind-balanced wind-balancing wind band wind beam wind-beaten wind belt wind blast wind-blazing wind-blown wind-borne wind-bound wind box wind brace wind-broken wind-built wind burn wind catcher wind-changing wind-chapped wind chest wind-clipped wind cloud wind colic wind component table wind cone wind contusion wind cripple wind cutter wind-delayed wind-dispersed wind drift wind-driven wind dropsy wind eddy wind egg wind engine winder-on winder rod wind-exposed wind-fanned wind-fast wind-fertilization wind-fertilized windflower gentian wind-flowing wind-footed wind-force wind furnace wind gap wind gauge wind-god wind-grass wind guard wind gun wind harp wind hawk wind herb wind house wind-hungry wind indicator winding engine winding frame winding pendant winding sheet winding stick winding strip winding tackle wind instrument wind-instrumental wind-instrumentalist wind-laid wind-lashed wind load wind machine wind-making wind mantle windmill grass windmill-like windmill orchid windmill palm windmill pink windmill plane windmill plant windmill tower wind motor wind music wind-nodding wind-obeying wind-outspeeding window back window bar window bay window board window bole window box window-breaking window-broken window card window case window catch window cleaner window-cleaning window curtain window decoration window decorator window display window dresser window dressing window-efficiency window-efficiency ratio window envelope window fixture window fly window frame window furniture window gardening window glass window head window lead window martin window mirror window-opening window oyster window sash window screen window seat window shade window shell window-shop window-shopper window-shopping window show window shutter window sill window-smashing window sole window space window stile window stool window stop window swallow window tax window trim window trimmer window trimming window-ventilating window work wind part wind-parted wind plant wind-pollinated wind-pollination wind poppy wind porch wind power wind-puff wind-puffed wind pump wind-raising wind-rent wind resistance wind ripple wind-rode wind rose wind sail wind scale wind-scattered wind scoop wind scorpion wind shake wind-shaken wind sheet wind shelf windshield wing windshield wiper wind-shift wind-shift line wind side wind signal wind slash wind sleeve wind sock wind stack wind stacker wind stop windstorm insurance wind-struck wind-stuffed wind-sucking wind supply wind-swept wind-swift wind-swung wind-taut wind tee wind throw wind thrush wind tie wind-toned wind trunk wind tunnel wind valley wind vane wind-wandering wind-waved wind-waving wind wheel wind-whipped wind-winged wind-worn windy-aisled windy-blowing windy-clear windy-footed windy-headed windy-looking windy-mouthed windy-voiced windy-worded wine acid wine apple wine bag wine biscuit wine black wine-bright wine bush wine butt wine card wine cask wine-cask borer wine cellar wine-colored wine cooler wine cooper wine-crowned wine-cup wine-dark wine-drabbed wine-drinking wine-driven wine-drunken wine ferment wine flask wine fly wine fountain wine gallon wine grape wine-hardy wine-heated wine-inspired wine-laden wine lees wine maker wine making wine measure wine merchant wine-merry wine palm wine party wine plant wine press wine presser wine-producing wine purple wine red wine seller wine-selling wine-shaken wine-soaked wine-stained wine stone wine-stuffed wine-swilling wine tester wine thrush wine-tinged wine tun wine vault wine vinegar wine whey wine-wise wine yeast wine yellow wine-yielding wing back formation wing band wing bar wing bay wing bearing wing bolt wing bone wing-borne wing bow wing-broken wing car wing case wing cell wing chair wing-clipped wing clipper wing clipping wing collar wing compass wing cover wing covert wing dam wing deck wing divider wing dividers winged-footed winged-heeled winged-leaved wing elm wing feather wing flap wing-footed wing game wing gap wing gudgeon wing-hoofed wing jam wing-leafed wing-leaved wing-limed wing load wing loading wing-loose wing-maimed wing-margined wing net wing nut wing over wing pad wing passage wing petal wing plow wing power wing quill wing rail wing resistance wing sac wing screw wing-shaped wing sheath wing shell wing shooting wing shot wing-slot wing snail wing stopper wing-swift wing tie wing-tip wing-tip flare wing-tip float wing-tipped wing top wing tract wing transom wing truss wing valve wing wale wing wall wing-wearily wing-weariness wing-weary wing-wide winking cartilage winking muscle winning gallery winning opening winning post winnow cloth winnow-corb winnowing basket winnowing fan winnowing machine winnow sheet winter aconite winter annual winter apple Winter banana winter barley winter-beaten winter beer winter-blasted winter blight winter-blooming winter-boding winter bonnet winter-bound winter brake winter bud winter bunting winter cherry winter-chilled winter-clad winter clover winter count winter cress winter crookneck winter crop winter daffodil winter-damaged winter duck winter egg winter fallow winter fat winter-fattened winter-fed winter-felled winter fever winter flounder winter flower winter-flowering winter garden winter geranium winter gillyflower winter-gladdening winter golf winter grape winter-gray winter green wintergreen family wintergreen oil winter-ground winter-grown winter gull winter-habited winter hail winter-hardened winter hawk winter heath winter heliotrope winter hellebore winter house winter huckleberry winter itch winter leaf winter lettuce winter-long winter-love winter-loving winter-made winter melon winter mew winter midge winter moth Winter nelis winter oats winter oil winter-old winter pear winter pink winter plum winter-proof winter-proud winter-pruned winter purslane winter-quarter winter quarters winter radish winter-reared winter-rig winter-ripening winter rocket winter rose winter rye winter savory winter-seeming winter shad winter-shaken winter sheldrake winter skate winter sleep winter snipe winter solstice winter-sown winter spice winter spore winter squash winter-standing winter-starved winter strawberry winter sucker winter sunscald winter sweet winter-swollen winter teal winter-thin winter-verging winter vetch winter-visaged winter wagtail winter-wasted winter wheat winter-withered winter wolfsbane winter-worn winter wren winter yellowlegs wipe break wipe breaker wipe joint wiper shaft wiper wheel wiping contact wiping rod wire bender wire-bending wire bent wire birch wire-blocking wire-borne wire-bound wire bridge wire-brushing wire-caged wire cartridge wire chief wire chisel wire cloth wire coat wire-coiling wire coverer wire-crimping wire-cut wire cutter wire cutting wire drawer wire drawing wire edge wire-edged wire entanglement wire-feed wire-feeding wire-flattening wire former wire galvanizer wire-galvanizing wire gauge wire glass wire grama wire grass wire grating wire grub wire-guarded wire gun wire-haired wire house wire-hung wire-insulating wire lath wireless apparatus wireless beacon wireless compass wireless operator wireless set wireless telegraph wireless telegrapher wireless telegraphist wireless telegraphy wireless telephone wireless telephony wire line wire ling wire mark wire-measuring wire-mended wire micrometer wire money wire nail wire-netted wire nut wire plant wire-pointing wire press wire radio wire recorder wire reducer wire road wire rod wire roller wire-rolling wire rush wire-safed wire saw wire-sewed wire sewer wire-sewn wire-shafted wire silver wire spooler wire-spun wire stem wire stitch wire-stitched wire stitcher wire stitching wire straightener wire-straightening wire strander wire-stranding wire-stretching wire-stringed wire-strung wire-tailed wire tapper wire tapping wire tester wire-testing wire tightener wire-tightening wire tinner wire-tinning wire-toothed wire vine wire walker wire weaver wire welder wire wheel wire-wheeled wire winder wire-winding wire-wound wire-wove wire-woven wiring die wiring machine wiring press wiring punch wiry-brown wiry-coated wiry-haired wiry-leaved wiry-looking wiry-stemmed wiry-voiced wisdom-bred wisdom-given wisdom-giving wisdom-led wisdom literature wisdom-loving wisdom-seasoned wisdom-seeking wisdom-teaching wisdom tooth wisdom-working wise-bold wise-framed wise-hardy wise-headed wise-heart wise-judging wise-lipped wise-reflecting wise-said wise-spoken wise-valiant wise-worded wishbone bush wish fulfillment wishful thinker wishing bone wishing cap wish-maiden wish-wash wish-washy wishy-washily wishy-washiness wishy-washy wisteria blue wisteria violet wistful-eyed wit-abused wit-assailing wit-beaten witch alder witch baiter witch baiting witch bird witch broom witch burner witch burning witch butter witch cake witch-charmed witch chick witch doctor witch doctoring witch doctory witch doctress witch-elm wit-cherishing witch-finder witch-finding witch fire witch flounder witch gowan witch grass witch hazel witch-hazel family witch-held witch hobble witch hopple witch hunt witch-hunter witch-hunting witch knot witch light witch lock witch mania witch mark witch master witch meal witch moth witch-ridden witch sabbath witch stick witch stitch witch-stricken witch tree wit-crack wit-cracker wit-drawn wit-foundered wit-fraught wit-gracing withdrawing room with-drawn withe rod wither-wrung within-bound within-named withy-bound withy-woody wit-infusing wit-loving wit-masked witness box witness corner witness stand witney nap wit-offended wit-oppressing wit-pointed wit-salted wit-snapper wit-starved wit-stung wit tooth witty-brained witty-conceited witty-feigned witty-pated witty-pretty witty-worded wit-worn wizard-woven wizen-faced wizen-hearted woad-leaved woad-painted woad vat wobble pump wobble saw wobbling disk woe-begetting woe-beseen woe-bested woe-betrothed woe-boding woe-dejected woe-delighted woe-denouncing woe-destined woe-embroidered woe-enwrapped woe-exhausted woe-foreboding woe-fraught woeful-wan woe-grim woe-humbled woe-illumed woe-infirmed woe-laden woe-maddened woe-revolving woe-scorning woe-sprung woe-stricken woe-struck woe-surcharged woe-threatened woe-tied woe-wearied woe-weary woe-wedded woe-whelmed woe-wrinkled wold mouse wolf-begotten wolf-colored wolf cub wolf dog wolf eel wolf-eyed wolf fish wolf fruit wolf grape wolf-gray wolf-haunted wolf-headed wolf-hunting wolf madness wolf-man wolf moth wolf-moved wolf note wolf pack wolfram lamp wolfram ocher wolfram steel wolf-scaring wolf-shaped wolf-slaying wolf snake wolf spider wolf-suckled wolf tooth wolf tree wolf willow woman-bearing woman-born woman-bred woman-built woman chaser woman child woman-churching woman-conquered woman-daunted woman-degrading woman-despising woman-easy woman-faced woman-fair woman-fashion woman-flogging woman-governed woman-grown woman-hating woman-headed woman-loving woman-mad woman-made woman-man woman movement woman-murdering woman-proud woman-ridden woman-shy woman-suffrage woman-suffragist woman-tended woman-vested woman-wary womb-enclosed womb-lodged wonder-beaming wonder-bearing wonder-charmed wonder-dumb wonder-exciting wonder-fed wonder-hiding wonder-loving wonder-mocking wonder-promising wonder-raising wonder-seeking wonder-sharing wonder-smit wonder-smitten wonder-stirring wonder-stricken wonder-striking wonder-struck wonder-teeming wonder-waiting wonder-worker wonder-working wonder-wounded wonder-writing wonga-wonga wont-believer wont-learn wont-wait wont-work wood acid wood alcohol wood almond wood-and-water joey wood anemone wood ant wood apple wood-apple gum wood aster wood avens wood awl wood baboon wood barker wood bass wood bedstraw wood bender wood betony woodbine-clad woodbine-covered woodbine green woodbine-wrought wood bison wood block wood boiler wood borer wood-boring wood-born wood-bred wood broom wood brown wood buffalo wood-built wood bundle wood calamint wood calker wood carpet wood carver wood carving wood-cased wood cell wood cement woodchat shrike wood checker wood chess wood chopper woodchuck day wood cleaner wood cleaver wood cloth wood coal woodcock owl woodcock pilot woodcock shell woodcock snipe woodcock soil wood coker wood collier wood copper wood corn Wood cree wood-crowned wood cudweed wood culver wood distiller wood dove wood draftsman wood drake wood drawing wood dresser wood-dried wood driller wood duck wood duster wood-dwelling wood dyer wood-eating wood-embosomed wood-embossing wood enameler wooden-barred wooden-bottom wood-encumbered wooden-faced wooden-featured wood engraver wood engraving wooden-hooped wooden-hulled wooden-legged wooden-lined wooden-pinned wooden-posted wooden-seated wooden-shoed wooden-sided wooden-soled wooden spoon wooden spoonist wooden-tined wooden tongue wooden-walled wooden wedge wooden-wheeled wood evil wood-faced wood facer wood fagoter wood feller wood fern wood fiber wood-fibered wood file wood filler wood finisher wood flour wood flower wood fretter wood fringe wood-fringed wood frog wood gas woodgate rust wood gatherer wood germander wood-girt wood grass wood groundsel wood grouse wood grower wood grubber wood gum wood hair grass wood hen wood hewer wood-hewing wood honey wood-hooped wood hoopoe wood hyacinth wood ibis wood ipecac wood keeper wood-keyed wood kingfisher wood laborer woodland brown woodland caribou woodland goldenrod woodland primrose woodland star woodland sunflower wood lark wood laurel wood leopard wood leopard moth wood lily wood-lined wood loader wood lock wood lot wood louse wood machine wood machinist wood-mat wood meadow grass wood meal wood measurer wood milling machine wood mite wood molder wood mouse wood naphtha wood-nep wood nettle wood nightshade wood-note wood nut wood nymph wood offering wood oil wood oil tree wood-oil-tree family wood opal wood owl wood packing wood painting wood-paneled wood paper wood parenchyma wood partridge wood-paved wood pavior wood pea wood peat wood pegger wood pennyroyal wood pewee wood pie wood pigeon wood pimpernel wood planer wood-planing wood plant wood polisher wood port wood pulp wood pussy wood quail wood quartet wood-queest wood-quest wood quintet wood rabbit wood range wood rat wood ray wood-ray parenchyma wood reed wood reed grass wood render wood-rip wood robin wood-roofed wood rose wood rosin wood rot wood rush wood sage wood sandpiper wood saw wood sawyer wood scale woods cranberry wood screw wood-sheathed wood sheldrake wood shock wood shrike wood-skirted wood slave wood snail wood snipe wood sorrel wood-sorrel family wood-sour wood spack wood spear grass woods phlox wood spirit wood splitter wood spurge woods run wood stain wood stainer wood stamp wood star wood-stock wood stork wood stove wood strawberry wood sugar wood swallow wood tapper wood tar wood-tar pitch wood tenoner wood terrapin wood thrush wood tick wood tin wood titmouse wood tortoise wood trimmer wood turner wood turning wood-turning lathe wood turpentine wood vetch wood vetchling wood vine wood vinegar wood violet wood-walled wood warbler wood wasp wood widgeon wood willower wood wind wood-wind instrument wood-wind quartet wood-wind quintet wood wool woodworking chisel woodworking lathe wood wren woody-stemmed wooer-bab wool-backed wool-bearing wool breaker wool-bundling wool burler wool-burring wool card wool carder wool carding wool classer wool classing wool-cleaning wool clip wool comb wool comber wool combing wool-coming wool crepe wool driver wool-drying wool-dyed wool-eating woolen-clad woolen draper woolen drapery woolen-frocked woolen mill woolen-stockinged wool extract wool extractor wool fat wool feeder wool fiber wool-flock wool former wool-fringed wool grade wool grader wool grading wool grass wool grease wool green wool-growing wool hall wool hardener wool-hetchel wool-laden wool-lined woolly bear woolly-butted woolly-coated woolly foot woolly-haired woolly-haried woolly-headed woolly-leaved woolly-looking woolly-minded woolly-mindedness woolly-pated woolly-podded woolly-tailed woolly-white woolly-witted woolly worm wool mill wool moth wool needle wool-oerburdened wool oil wool oiler wool packer wool-packing wool-pated wool-picking wool powder wool-producing wool-rearing wool sampler wool scour wool spinner wool spinning wool sponge wool staple wool stapler wool-stapling wool stripper wool table wool thistle wool tree wool waste wool wax wool-white wool-witted wool-woofed wooly-headed wootz steel word accent word-beat word-blind word blindness word-bound word-breaking word-catcher word-catching word-charged word-clad word class word-compelling word-conjuring word contest word-deaf word deafness word-dearthing word-driven word form word-for-word word hoard word-jobber word-juggling word-keeping word lore word method word music word musician word-of-mouth word order word-paint word painter word painting word-perfect word picture word-pity word salad word-seller word-selling word sign word-slinger word-slinging word-splitting word square word stress word symbol word value word-wounded work-and-turn work cure work curve worker cell worker comb worker-correspondent worker-guard worker major worker minor work function work-hardened work horse work-hour workhouse sheeting workhouse test working card working class working-day working dog working drawing working face working fit working fluid working gauge working hypothesis working line working load working order working papers working pattern working pit working plan working point working rod working strength working stress working substance working tube work lead work-producing work roller work school works council work-seeking work sheet work shoe work-shy work-shyness works manager work song work spreading work-stained work stock work stone work-stopper work-study-play plan work-study-play school work ticket work train work-up work-wan work-weary work week work-worn world-abhorring world-abiding world-abstracted world-accepted world-acknowledged world-adored world-adorning world-advancing world-advertised world-affecting world-agitating world-alarming world-altering world-amazing world-amusing world-animating world-anticipated world-applauded world-appreciated world-apprehended world-approved world-argued world-arousing world-arresting world ash world-assuring world-astonishing world-authorized world-awed world-barred world-beater world-beating world-beheld world-beloved world belt world-beset world-borne world-bound world-braving world-broken world-bruised world-building world-burdened world-busied World calendar world-canvassed world-captivating world-celebrated world-censored world-censured world-challenging world-changing world-charming world-cheering world-choking world-chosen world-circling world-circulated world-civilizing world-classifying world-cleansing world-comforting world-commanding world-commended world-compassing world-compelling world concept world-condemned world-confounding world-connecting world-conquering world-conscious world-consciousness world-constituted world-consuming world-contemning world-contracting world-contrasting world-controlling world-converting world-copied world-corrupted world-corrupting world-covering world-creating world-credited world-crippling world-crowding world-crushed world-deaf world-debated world-deceiving world-deep world-defying world-delighting world-delivering world-demanded world-denying world-depleting world-depressing world-describing world-deserting world-desired world-desolation world-despising world-destroying world-detached world-detesting world-devouring world-diminishing world-directing world-disappointing world-discovering world-discussed world-disgracing world-dissolving world-distributed world-disturbing world-divided world-dividing world-dominating world-dreaded world-dwelling world-echoed world-educating world-embracing world-eminent world-encircling world-ending world-enlarging world-enlightening world-entangled world-enveloping world-envied world-esteemed world-excelling world-exciting world-famed world-familiar world-famous world-favored world-fearing world-felt world-forgetting world-forgotten world-forming world-forsaken world-forsaking world-fretted world-girdling world-gladdening world-governing world-grasping world-great world-grieving world ground world-hailed world-hardened world-hating world-heating world-helping world-honored world-horrifying world-humiliating world-imagining world-improving world-infected world-informing world-involving world island world-jaded world-jeweled world-joining world-kindling world-knowing world-known world-lamented world-lasting world-leading world-leveling world-lighting world line world-linking world-long world-loving worldly-minded worldly-mindedly worldly-mindedness worldly-wise world-mad world-made world-marked world-mastering world-melting world-menacing world-missed world-mocking world-mourned world-moving world myth world-naming world-needed world-neglected world-nigh world-noised world-noted world-obligating world-observed world-occupying world-offending world-old world-opposing world-oppressing world-ordering world-organizing world-outraging world-overcoming world-overthrowing world-owned world-paralyzing world-pardoned world-patriotic world-peopling world-perfecting world-pestering world-picked world-pitied world-plaguing world-pleasing world point world-poisoned world politics world-pondered world-populating world-portioning world-possessing world pound world power world-practiced world premiere world-preserving world-prevalent world-prized world-producing world-prohibited world-protected world-raising world-rare world-read world-recognized world-redeeming world-reflected world-regulating world-rejected world-rejoicing world-relieving world-remembered world-renewing world-renowned world-resented world-respected world-restoring world-revealing world-reviving world-revolving world-ridden world-round world-rousing world-roving world-ruling world-sacred world-sacrificing world-sanctioned world-sated world-saving world-scarce world-scattered world-schooled world-scorning world-seasoned world-self world series world-serving world-settling world-shaking world-sharing worlds-high world-shocking world-sick world-simplifying world-sized world-slandered world-sobered world-soiled world soul world speech world spirit world-spoiled world-spread world-stained world-startling world state world-staying world-stirring world-strange world-studded world-subduing world-sufficing world-supplying world-supporting world-surrounding world-surveying world-sustaining world-swallowing world-taking world-taming world-taught world-tempted world-tested world-thrilling world-tired world-tolerated world-tossing world tree world-troubling world-turning world-uniting world-used world-valid world-valued world-venerated world view world-waited world-wandering world-wanted World war world-wasting world-watched world-wearied world-wearily world-weariness world-weary world-welcome world-wept world-wide world-widely world-wideness world-winning world-wise world-without-end world-witnessed world-worn world-wrecking worm abscess worm aneurysm worm bark worm-breeding worm brood worm burrow worm-cankered worm capsule worm cast worm-consumed worm conveyer worm-destroying worm disease worm-driven worm-eat worm-eaten worm-eatenness worm-eater worm-eating worm fence worm fever worm gear worm-geared worm-gear elevator worm gearing worm-gnawed worm-gnawn worm grass worm gut worm-killing worm moss worm-nest worm oil worm-pierced worm powder worm punch worm-resembling worm-reserved worm-riddled worm-ripe wormseed mustard wormseed oil worm-shaped worm shell worm snake worm-spun worm tea worm thread worm tincture worm-tongued worm tube worm wheel worm-wheel hob thread worm wire wormwood oil wormwood sage worm-worn worm-wrought worn-down worn-out worn-outness worry-carl worse-affected worse-applied worse-bodied worse-born worse-bred worse-calculated worse-conditioned worse-disposed worse-dispositioned worse-executed worse-faring worse-governed worse-handled worse-informed worse-lighted worse-mannered worse-mated worse-named worse-natured worse-opinionated worse-ordered worse-paid worse-performed worse-printed worse-rated worse-ruled worse-satisfied worse-served worse-spent worse-succeeding worse-taught worse-tempered worse-thoughted worse-timed worse-treated worse-typed worse-utilized worse-wanted worse-wrought worship-paying worst-affected worst-bred worst-cast worst-damaged worst-deserving worst-disposed worst-fashioned worst-formed worst-governed worst-informed worst-managed worst-manned worst-paid worst-printed worst-ruled worst-served worst-taught worst-timed worst-treated worst-used worst-wanted worth-while worth-whileness would-be would-have-been wound chevron wound cork wound-dressing wound fever wound-fevered wound-free wound fungus wound gall wound-inflicting wound-marked wound parasite wound-plowed wound-producing wound rocket wound-scarred wound-secreted wound-worn wou-wou woven-wire wrack grass wrap-around wrapping-gown wrapping paper wrap-round wrap-up wrath-allaying wrath-bewildered wrath-consumed wrath-faced wrathful-eyed wrath-kindled wrath-kindling wrath-provoking wrath-swollen wrath-wreaking wreath-crowned wreath-drifted wreath-festooned wreath goldenrod wreath shell wreath-wrought wreck-bestrewn wreck buoy wreck-causing wreck-devoted wreck-free wreck gun wrecking frog wrecking pump wreck master wreck-raising wreck-strewn wreck-threatening wren babbler wrench fit wrench forger wrench hammer wrench head wren tit wren warbler wrest block wrest pin wrest plank wretched-fated wretched-looking wretched-witched wringing fit wringing machine wringing-wet wrinkle-coated wrinkled-browed wrinkled-cheeked wrinkled-leaved wrinkled-old wrinkled-shelled wrinkled-visaged wrinkle-faced wrinkle-fronted wrinkle-furrowed wrinkle-making wrinkle-scaled wrist clonus wrist drop wrist joint wrist pin wrist plate wrist shot wrist watch write-off write-up writing board writing cabinet writing case writing desk writing exercise writing fluid writing frame writing ink writing lesson writing machine writing master writing pad writing paper writing reed writing room writing set writing table writing telegraph written hand wrong-directed wrong-ended wrong-endedness wrong-feigned wrong-gotten wrong-grounded wrong-jawed wrong-minded wrong-mindedly wrong-mindedness wrong-ordered wrong-principled wrong-screwed wrong-thinking wrong-timed wrong-voting wroth money wroth penny wroth silver wrought iron wrought-up wry-armed wry-billed wry-blown wry-eyed wry-faced wry-formed wry-guided wry-legged wry-looked wry-mouthed wry-necked wry-neckedness wry-nosed wry-set wry-tailed wry-toothed W-shaped W surface wung-out wych-elm wych-hazel X chromosome Xipe-totec Xiphium iris X radiation X ray X-ray cancer X-ray photograph X-ray photography X-ray-proof X-ray spectrograph X-ray spectrometer X-ray spectrum X-ray therapy X-ray tube X-shaped xylem parenchyma xylene blue xylite oil yaba bark yacca gum yacht berth yacht builder yacht-built yacht club yacht decorator yacht designer yacht engineer yacht ensign yacht gear yacht propeller yacht race yacht racing yacht rigging yacht squadron Yajur-veda yam bean yam family yam potato yam-root yam stick yam tree yang-kin Yankee-doodle Yankee-doodledom Yankee-doodleism Yao-min Yao yin yapp binding yard boy yard-broad yard cleaner yard-deep yard donkey yard engineer yard foreman yard grass yarding engine yard inspector yard laborer yard locomotive yard-long yard-long bean yard lumber yard porter yard regulator yard rope yard rush yard scavenger yard signalman yard slings yard-square yard sweeper yard tackle yard-thick yard trader yard-wide yarn baller yarn bleacher yarn boiler yarn-boiling yarn buncher yarn bundler yarn carrier yarn-cleaning yarn conditioner yarn croft yarn dresser yarn dryer yarn-dyed yarn dyer yarn finisher yarn inspector yarn-measuring yarn-mercerizing yarn packer yarn printer yarn reel yarn reeler yarn remover yarn sizer yarn sorter yarn spinner yarn-spinning yarn spreader yarn stretcher yarn stripper yarn tester yarn-testing yarn twister yarn warper yarn washer yarn waste yarn weigher yarn winder yate tree yaw-haw yawl-rigged yaw shrub yaw-sighted y-bake y-blend y-blent Y box Y branch Y bridge y-cast Y chromosome y-clept Y connection Y cross Y current Y curve yea-and-nay yea-and-nayish yea-nay year-born year count year-counted year hour year letter year-marked year-old year-round yea sayer yeast bee yeast-bitten yeast cake yeast cell yeast fungus yeast plant yeast powder yeast spot Yed posterior Yed prior yellow-aproned yellow-armed yellow-backed yellow-banded yellow-bark yellow-barked yellow-bark oak yellow-barred yellow-beaked yellow-bearded yellow-bellied yellow-billed yellow-black yellow-blossomed yellow-blotched yellow-bodied yellow book yellow-breasted yellow-browed yellow-brown yellow-capped yellow-centered yellow-checked yellow-cheeked yellow-chinned yellow-collared yellow-colored yellow-covered yellow-crested yellow-cross yellow-cross liquid yellow-crowned yellow-daisy yellow-dog yellow-dotted yellow-dun yellow-dye yellow-dyed yellow-dye tree yellow-eared yellow-earth yellow-eye yellow-eyed yellow-eyed grass yellow-eyed-grass family yellow-faced yellow-feathered yellow-fever yellow-fever fly yellow-fever mosquito yellow-fin yellow-fingered yellow-finned yellow-flagged yellow-fleeced yellow-fleshed yellow-flowered yellow-flowering yellow-footed yellow-fringed yellow-fronted yellow-fruited yellow-funneled yellow-girted yellow-gloved yellow-green yellow-haired yellow-handed yellow-headed yellow-hilted yellow-horned yellow-hosed yellowish-amber yellowish-brown yellowish-colored yellowish-gold yellowish-gray yellowish-green yellowish-green-yellow yellowish-haired yellowish-pink yellowish-red yellowish-red-yellow yellowish-rose yellowish-skinned yellowish-tan yellowish-white yellow jack yellow jacket yellow-jerkined yellow journal yellow journalism yellow journalist yellow-labeled yellow-leaved yellow-legged yellow-legger yellow-legginged yellow-lettered yellow-lit yellow-locked yellow-lustered yellow-maned yellow-marked yellow-necked yellow-nosed yellow-olive yellow-painted yellow-papered yellow-pinioned yellow-pyed yellow-rayed yellow-red yellow-ringed yellow-ringleted yellow-ripe yellow-robed yellow-rooted yellow-rumped yellow-sallow yellow-seal yellow-sealed yellow-shafted yellow-shanked yellow-shouldered yellow-skinned yellow-skirted yellow-speckled yellow-splotched yellow-spotted yellow-sprinkled yellow-stained yellow-starched yellow-striped yellow-tailed yellow-throated yellow-tinged yellow-tinging yellow-tinted yellow-tipped yellow-toed yellow-tressed yellow-tufted yellow-vented yellow-washed yellow-white yellow-winged yelly-hoo yelly-hooing ye-makimono y-end Yenisei ostyak yeoman service yerba buena Yerba de para yerba mansa yerba mate yerba reuma yerba sagrada yerba santa yeshiva bocher yes man yes-no yes-noer yes-noism yew berry yew-besprinkled yew-crested yew family yew green yew-hedged yew-leaved yew pine yew-roofed yew-shaded yew tree yew-treed Y-gun yield point yield value yill-caup Y joint Y level Y ligament Y moth yohimbe bark yo-ho yoke bone yoke devil yoke elm yoke-footed yoke method yoke riveter yoke-toed yo-kyoku yolk bag yolk boil yolk cord yolk duct yolk gland yolk nucleus yolk plate yolk plug yolk sac yolk stalk yolk yellow you-be-damned you-be-damnedness you-know-what young-bladed young-chinned young-conscienced young-counseled youngest-born young-eyed young-headed young lady young-ladydom young-ladyfied young-ladyhood young-ladyish young-ladyism young-ladylike young-ladyship young-looking young man young-manhood young-manlike young-manliness young-manly young-mannish young-mannishness young-manship young-old young-winged young woman young-womanhood young-womanish young-womanishness young-womanlike young-womanly young-womanship young-yeared youth-bold youth-consuming you-uns Yo-yo y-painted Y point y-pointing Y-potential y-rapt y-scalded Y-shaped y-ssed Y theodolite y tile Y track ytterbium metal yttrium metal Y tube yuan dollar yucca borer yucca cactus yucca fertilizer yucca moth yucca palm yucca pollenizer Yueh-pan yule block yule log yum-yum Yung-cheng y-warn Y winding zacate limon zanona palm zante fustic zapota gum Z bar Z chromosome zeal-blind zeal-consuming zeal-inflamed zeal-inspiring zeal-pretending zeal-quenching zeal-scoffing zeal-transported zeal-worthy zebra antelope zebra-back zebra bird zebra caterpillar zebra fish zebra grass zebra opossum zebra parakeet zebra plant zebra poison zebra shark zebra spider zebra swallowtail zebra-tailed zebra wolf zebrawood family zebu cattle zee bar zenaida dove Zend-avesta Zend-avestaic zenith blue zenith collimator zenith distance zenith point zenith-pole zenith-pole arc zenith sector zenith star zenith-star arc zenith telescope zenith tube zephr worsted zephyr cloth zephyr-fanned zephyr flower zephyr-haunted zephyr-kissed zephyr lily zephyr shawl zephyr shirting zephyr yarn zero ablaut grade zero algebra zero beat zero day zero-dimensional zero element zero fleck zero grade zero group zero hour zero-lift zero-lift angle zero magnet zero mark zero matrix zero method zero oil zero point zero post zero potential zero set zero stem zero thrust pitch zero tone zero torque pitch zero vector Zero-zero zeta function zigzag-fashion zigzag-lined zigzag-shaped zimocca sponge zinc alkyl zinc amide zinc blende zinc bloom zinc bromide zinc carbonate zinc chloride zinc chromate zinc chrome zinc-coated zinc crust zinc dust zinc engraving zinc-etched zinc etching zinc ethide zinc ethyl zinc fixer zinc flowers zinc gray zinc green zinc-lined zinc methide zinc methyl zinc ointment zinco-polar zinc orange zinc oxide zinc-roofed zinc-sampler zinc sender zinc spar zinc spinel zinc standard cell zinc sulphate zinc sulphide zinc vitriol zinc white zinc yellow zirconium oxide zircon light zircon-syenite z iron zone axis zone catalogue zone-confounding zone fire zone line zone-marked zone phenomenon zone plate zone system zone-tailed zone tariff zone time zoning act zoning commission zoning law zoning ordinance Zonta club zoot suit zoot-suiter Zouave jacket Z rail Z-shaped z term Zuben el genubi Zulu-kaffir Zu-zu zwitter ion formeddict/words 444 3 12 631557 4267504245 6126 a AAA AAAS aardvark Aarhus Aaron ABA Ababa aback abacus abalone abandon abase abash abate abbas abbe abbey abbot Abbott abbreviate abc abdicate abdomen abdominal abduct Abe abed Abel Abelian Abelson Aberdeen Abernathy aberrant aberrate abet abetted abetting abeyance abeyant abhor abhorred abhorrent abide Abidjan Abigail abject abjure ablate ablaze able ablution abnegation Abner abnormal Abo aboard abode abolish abolition abominable abominate aboriginal aborigine aborning abort abound about above aboveboard aboveground abovementioned abrade Abraham Abram Abramson abrasion abrasive abreact abreast abridge abridgment abroad abrogate abrupt abscess abscissa abscissae abscond absent absentee absenteeism absentia absentminded absinthe absolute absolution absolve absorb absorbent absorption absorptive abstain abstention abstinent abstract abstractor abstruse absurd absurdum abuilding abundant abusable abuse abusive abut abutted abutting abysmal abyss Abyssinia AC acacia academia academic academician academy Acadia acanthus Acapulco accede accelerate accelerometer accent accentual accentuate accept acceptant acceptor access accessible accession accessory accident accidental accipiter acclaim acclamation acclimate accolade accommodate accompaniment accompanist accompany accomplice accomplish accord accordant accordion accost account accountant accouter Accra accredit accreditation accretion accrual accrue acculturate accumulate accuracy accurate accusation accusative accusatory accuse accustom ace acerbic acerbity acetaminophen acetate acetic acetone acetylene Achaean ache achieve Achilles aching achromatic acid acidic acidify acidulate acidulous Ackerman Ackley acknowledge acknowledgeable ACM acme acolyte acorn acoustic acquaint acquaintance acquiesce acquiescent acquire acquisition acquisitive acquit acquittal acquitting acre acreage acrid acrimonious acrimony acrobacy acrobat acrobatic acronym acrophobia acrophobic acropolis across acrylate acrylic act Actaeon actinic actinide actinium actinolite actinometer activate Acton actor actress actual actuarial actuate acuity acumen acupuncture acute acyclic ad Ada adage adagio Adair Adam adamant Adamson adapt adaptation adaptive add addend addenda addendum addict Addis Addison addition additive addle address addressee Addressograph adduce Adelaide Adele Adelia Aden adenine adenoma adenosine adept adequacy adequate adhere adherent adhesion adhesive adiabatic adieu adipic Adirondack adjacent adject adjectival adjoin adjoint adjourn adjudge adjudicate adjunct adjust adjutant Adkins Adler Adlerian administer administrable administrate administratrix admiral admiralty admiration admire admissible admission admit admittance admitted admitting admix admixture admonish admonition ado adobe adolescent Adolph Adolphus Adonis adopt adoption adoptive adoration adore adorn adposition adrenal adrenalin adrenaline Adrian Adriatic Adrienne adrift adroit adsorb adsorbate adsorption adsorptive adulate adult adulterate adulterous adultery advance advantage advantageous advent adventitious adventure adventurous adverb adverbial adversary adverse advert advertise advice advisable advise advisee advisor advisory advocacy advocate Aegean aegis Aeneas Aeneid aeolian Aeolus aerate aerial aerie Aerobacter aerobic aerodynamic aerofoil aerogene aeronautic aerosol aerospace Aeschylus Aesop aesthete aesthetic afar affable affair affect affectate affectionate afferent affiance affidavit affiliate affine affirm affirmation affirmative affix afflict affluent afford afforest afforestation affricate affront Afghan Afghanistan aficionado afield afire aflame afloat afoot aforementioned aforesaid aforethought afraid afreet afresh Africa Afrikaans Afrikaner afro aft afterbirth aftereffect afterglow afterimage afterlife aftermath afternoon afterthought afterward afterword again against Agamemnon agar agate Agatha agave age Agee agenda agent agglomerate agglutinate agglutinin aggravate aggregate aggression aggressive aggressor aggrieve aghast agile agitate agleam Agnes Agnew agnomen agnostic ago agog agone agony agouti agrarian agree agreeable agreeing agribusiness Agricola agricultural agriculture agrimony agronomist agronomy ague Agway ah ahead ahem Ahmedabad ahoy aid Aida aide Aides Aiken ail ailanthus aile aileron aim ain't Ainu air airborne airbrush aircraft airdrop airedale Aires airfare airfield airflow airframe airlift airline airlock airmail airman airmass airmen airpark airplane airport airspeed airstrip airtight airway airy aisle Aitken ajar Ajax AK Akers akin Akron AL ala Alabama Alabamian alabaster alacrity Aladdin alai Alameda Alamo alan alarm Alasdair Alaska Alastair alb alba albacore Albania Albany albatross albeit Alberich Albert Alberta Alberto albino Albrecht Albright album albumin Albuquerque Alcestis alchemist alchemy Alcmena Alcoa alcohol alcoholic Alcott alcove Aldebaran aldehyde Alden alder alderman aldermen Aldrich aldrin ale Alec Aleck aleph alert Aleutian alewife Alex Alexander Alexandra Alexandre Alexandria Alexei Alexis alfalfa alfonso Alfred Alfredo alfresco alga algae algaecide algal algebra algebraic Algenib Alger Algeria Algiers alginate Algol Algonquian Algonquin algorithm algorithmic Alhambra Ali alia alias alibi Alice Alicia alien alienate alight align alike alimentary alimony aliphatic aliquot Alison Alistair alive alizarin alkali alkaline alkaloid all Allah Allan allay allegate allege Allegheny allegiant allegoric allegory Allegra allegro allele allemand Allen Allentown allergic allergy alleviate alley alleyway alliance alligator Allis Allison alliterate allmsgs allocable allocate allot allotropic allotted allotting allow allowance alloy allspice Allstate allude allure allusion allusive alluvial alluvium ally allyl Allyn alma Almaden almagest almanac almighty almond almost aloe aloft aloha alone along alongside aloof aloud alp alpaca alpenstock Alpert alpha alphabet alphabetic alphanumeric Alpheratz Alphonse alpine already Alsatian also Alsop Altair altar alter alterate altercate altern alternate althea although altimeter altitude alto altogether Alton altruism altruist alum alumina aluminate alumna alumnae alumni alumnus alundum Alva Alvarez alveolar alveoli alveolus Alvin alway alyssum A&M am AMA Amadeus amalgam amalgamate amanita amanuensis amaranth Amarillo amass amateur amateurish amatory amaze Amazon ambassador amber ambiance ambidextrous ambient ambiguity ambiguous ambition ambitious ambivalent amble ambrose ambrosia ambrosial ambulant ambulatory ambuscade ambush Amelia ameliorate amen amend amende Amerada America Americana americium Ames amethyst amethystine Amharic Amherst ami amicable amid amide amidst amigo amino aminobenzoic amiss amity Amman Ammerman ammeter ammo ammonia ammoniac ammonite ammonium ammunition amnesia amnesiac amnesty amniocentesis amniotic Amoco amoeba amoebae amoeboid amok among amongst amoral amorphous amort Amos amount amp amperage ampere ampersand Ampex amphetamine amphibian amphibious amphibole amphibology amphioxis ample amplify amplitude amply amputate amra Amsterdam Amtrak amulet amuse amy amygdaloid an ana Anabaptist Anabel anachronism anachronistic anaconda Anacreon anaerobic anaglyph anagram Anaheim Analects analeptic analgesic analogous analogue analogy analyses analysis analyst analytic anamorphic anaphora anaphoric anaplasmosis anarch anarchic anarchy Anastasia anastigmat anastigmatic anastomosis anastomotic anathema Anatole anatomic anatomist anatomy ancestor ancestral ancestry anchor anchorage anchorite anchovy ancient ancillary and Andalusia Andean Andersen Anderson Andes andesine andesite Andorra Andover Andre Andrea Andrei Andrew androgen Andromache Andromeda Andy anecdotal anecdote anemone anent anew angel Angela Angeles angelfish angelic Angelica Angelina Angeline Angelo anger Angie angiosperm angle Angles Anglican Anglo Anglophobia Angola Angora angry angst angstrom anguish angular Angus anharmonic Anheuser anhydride anhydrite anhydrous ani aniline animadversion animadvert animal animate animism animist animosity anion anionic anise aniseikonic anisotropic anisotropy Anita Ankara ankle Ann Anna annal Annale Annalen Annapolis Anne anneal annelid Annette annex Annie annihilate anniversary annotate announce annoy annoyance annual annuity annul annular annuli annulled annulling annulus annum annunciate anode anodic anoint anomalous anomaly anomie anonymity anonymous anorexia anorthic anorthite anorthosite another Anselm Anselmo ANSI answer ant antacid Antaeus antagonism antagonist antarctic Antarctica Antares ante anteater antebellum antecedent antedate antelope antenna antennae anterior anthem anther anthology Anthony anthracite anthracnose anthropocentric anthropogenic anthropoid anthropology anthropomorphic anthropomorphism anti antic anticipate anticipatory anticonvulsant Antietam antigen Antigone antigorite Antilles antimony Antioch antipasto antipathy antiperspirant antiphonal antipodal antipode antiquarian antiquary antiquated antique antiquity antisemite antisemitic antithetic antivenin antler Antoine Antoinette Anton Antonio Antony antonym Antwerp anus anvil anxiety anxious any anybody anybody'd anyhow anyone anyplace anything anyway anywhere aorta A&P apache apart apartheid apathetic apathy apatite ape aperiodic aperture apex aphasia aphasic aphelion aphid aphorism aphrodisiac Aphrodite apiary apical apices apiece aplomb apocalypse apocalyptic Apocrypha apocryphal apogee Apollo Apollonian apologetic apologia apology apoplectic apoplexy apostasy apostate apostle apostolic apostrophe apothecary apothegm apotheosis Appalachia appall appanage apparatus apparel apparent apparition appeal appear appearance appeasable appease appellant appellate append appendage appendices appendix appertain appetite Appian applaud applause apple Appleby applejack Appleton appliance applicable applicant applicate applique apply appoint appointe appointee apport apposite apposition appraisal appraise appreciable appreciate apprehend apprehension apprehensive apprentice apprise approach approbation appropriable appropriate approval approve approximable approximant approximate apricot April apron apropos apse apt aptitude aqua aquarium Aquarius aquatic aqueduct aqueous aquifer Aquila Aquinas AR Arab arabesque Arabia Arabic Araby Arachne arachnid Arapaho arbiter arbitrage arbitrary arbitrate arboreal arborescent arboretum arbutus arc arcade Arcadia arcana arcane arccos arccosine arch archae archaic archaism archangel archbishop archdiocese archenemy archery archetype archetypical archfool Archibald Archimedes archipelago architect architectonic architectural architecture archival archive arcing arclength arcsin arcsine arctan arctangent arctic Arcturus Arden ardent arduous are area areaway areawide arena arenaceous aren't Arequipa Ares Argentina Argentine Argentinian argillaceous arginine Argive argo argon Argonaut Argonne argot argue argument argumentation argumentative Argus arhat aria Ariadne Arianism arid Aries arise arisen aristocracy aristocrat aristocratic Aristotelean Aristotelian Aristotle arithmetic Arizona ark Arkansan Arkansas Arlen Arlene Arlington arm armada armadillo Armageddon armament Armata armature armchair Armco Armenia armful armhole armillaria armistice armload armoire Armonk Armour armpit Armstrong army Arnold aroma aromatic arose around arousal arouse ARPA arpeggio arrack Arragon arraign arrange arrangeable array arrear arrest Arrhenius arrival arrive arrogant arrogate arrow arrowhead arrowroot arroyo arsenal arsenate arsenic arsenide arsine arson art Artemis artemisia arterial arteriole arteriolosclerosis arteriosclerosis artery artful arthritis arthropod Arthur artichoke article articulate articulatory Artie artifact artifice artificial artillery artisan artistry Arturo artwork arty Aruba arum aryl a's as asbestos ascend ascendant ascension ascent ascertain ascetic ascii ascomycetes ascribe ascription aseptic ash ashame ashen Asher Asheville Ashland Ashley ashman ashmen Ashmolean ashore ashram ashtray ashy Asia Asiatic aside Asilomar asinine ask askance askew asleep asocial asparagine asparagus aspartic aspect aspen asperity aspersion asphalt aspheric asphyxiate aspidistra aspirant aspirate aspire aspirin asplenium ass assai assail assailant Assam assassin assassinate assault assay assemblage assemble assent assert assess assessor asset assiduity assiduous assign assignation assignee assimilable assimilate assist assistant associable associate assonant assort assuage assume assumption assurance assure Assyria Assyriology Astarte astatine aster asteria asterisk asteroid asteroidal asthma astigmat astigmatic ASTM astonish Astor Astoria astound astraddle astral astray astride astringent astrologer astrology astronaut astronautic astronomer astronomic astronomy astrophysical astrophysicist astrophysics astute Asuncion asunder asylum asymmetry asymptomatic asymptote asymptotic asynchronous asynchrony at Atalanta atavism atavistic Atchison ate Athabascan atheism atheist Athena Athenian Athens athlete athletic athwart Atkins Atkinson Atlanta atlantes atlantic Atlantis atlas atmosphere atmospheric atoll atom atomic atonal atone atonic atop Atreus atrocious atrocity atrophic atrophy Atropos AT&T attach attache attack attain attainder attempt attend attendant attendee attention attentive attenuate attest attestation attic Attica attire attitude Attlee attorney attract attribute attribution attributive attrition attune Atwater Atwood atypic Auberge Aubrey auburn Auckland auction auctioneer audacious audacity audible audience audio audiotape audiovisual audit audition auditor auditorium auditory Audrey Audubon Auerbach Aug Augean auger augite augment augmentation augur august Augusta Augustine Augustus auk aunt auntie aura aural Aurelius aureomycin auric Auriga aurochs aurora Auschwitz auspice auspices auspicious austenite austere Austin austral Australia Australis australite Austria authentic authenticate author authoritarian authoritative autism autistic auto autobiography autochthonous autoclave autocollimate autocorrelate autocracy autocrat autocratic autograph automat automata automate automatic automaton automobile automorphism automotive autonomic autonomous autonomy autopilot autopsy autosuggestible autotransformer autumn autumnal auxiliary auxin avail avalanche avarice avaricious Ave avenge Aventine avenue aver average Avernus averred averring averse aversion avert Avery Avesta avian aviary aviate aviatrix avid Avignon avionic Avis Aviv avocado avocate avocet Avogadro avoid avoidance Avon avow avowal await awake awaken award aware awash away awe awesome awful awhile awkward awl awn awoke awry ax axe axial axiology axiom axiomatic axis axisymmetric axle axolotl axon aye Ayers Aylesbury AZ azalea Azerbaijan azimuth azimuthal Azores Aztec Aztecan azure b babbitt babble Babcock babe Babel baboon baby Babylon babysat babysit babysitting baccalaureate baccarat bacchanalian Bacchus Bach bachelor bacilli bacillus back backboard backbone backdrop backfill backgammon background backhand backlash backlog backorder backpack backpedal backplane backplate backscatter backside backslash backslide backspace backstage backstitch backstop backtrack backup backward backwash backwater backwood backyard bacon bacteria bacterial bacterium bad bade Baden badge badinage badland badminton Baffin baffle bag bagatelle baggage bagging baggy Baghdad Bagley bagpipe bah Bahama Bahrein bail Bailey bailiff bainite Baird bait Baja bake Bakelite Bakersfield bakery Bakhtiari baklava Baku balance Balboa balcony bald baldpate Baldwin baldy bale baleen baleful Balfour Bali Balinese balk Balkan balky ball ballad Ballard ballast ballerina ballet balletomane ballfield balloon ballot ballroom ballyhoo balm balmy balsa balsam Baltic Baltimore Baltimorean balustrade Balzac bam Bamako Bamberger Bambi bamboo ban Banach banal banana Banbury band bandage bandgap bandit bandpass bandstand bandstop bandwagon bandwidth bandy bane baneberry baneful bang bangkok Bangladesh bangle Bangor Bangui banish banister banjo bank bankrupt bankruptcy bannock banquet banshee bantam banter Bantu Bantus baobab baptism baptismal Baptist Baptiste baptistery bar barb Barbados Barbara barbarian barbaric barbarism barbarous barbecue barbell barber barberry barbital barbiturate Barbour barbudo Barcelona Barclay bard bare bareback barefaced barefoot barfly bargain barge baritone barium bark barkeep barley Barlow barn Barnabas barnacle Barnard Barnes Barnet Barnett Barney Barnhard barnstorm Barnum barnyard barometer baron baroness baronet baronial barony baroque Barr barrack barracuda barrage barre barrel barren Barrett barrette barricade barrier Barrington barrow Barry Barrymore Barstow bartend bartender barter Barth Bartholomew Bartlett Bartok Barton barycentric baryon basal basalt basaltic base baseball baseband baseboard Basel baseline baseman basemen baseplate basepoint bash bashaw bashful basic basidiomycetes basil basilar basilica basilisk basin basis bask basket basketball basketry basophilic Basque bass Bassett bassi bassinet basso bassoon basswood bastard baste bastion bat Batavia batch Batchelder bate bateau Bateman bater bath bathe bathos bathrobe bathroom bathtub Bathurst batik baton Bator batt battalion Battelle batten battery battle battlefield battlefront battleground batwing bauble baud Baudelaire Bauer Bauhaus Bausch bauxite Bavaria bawd bawdy bawl Baxter bay bayberry Bayda Bayesian Baylor bayonet Bayonne bayou Bayport Bayreuth bazaar be beach beachhead beacon bead beadle beady beagle beak beam bean bear bearberry beard Beardsley bearish beast beastie beat beaten beater beatific beatify beatitude beatnik Beatrice beau Beaujolais Beaumont Beauregard beauteous beautiful beautify beauty beaux beaver bebop becalm became because Bechtel beck becket Beckman beckon Becky become bed bedazzle bedbug bedevil bedfast bedfellow Bedford bedim bedimmed bedimming bedlam bedpost bedraggle bedridden bedrock bedroom bedside bedspread bedspring bedstraw bedtime bee Beebe beebread beech Beecham beechwood beef beefsteak beefy beehive been beep beer beeswax beet Beethoven beetle befall befallen befell befit befitting befog befogging before beforehand befoul befriend befuddle beg began begat beget begetting beggar beggary begging begin beginner beginning begonia begot begotten begrudge beguile begun behalf behave behead beheld behind behold beige Beijing being Beirut bel Bela belate belch Belfast belfry Belgian Belgium Belgrade belie belief believe belittle Belize bell Bella belladonna Bellamy Bellatrix bellboy belle bellflower bellhop bellicose belligerent Bellingham Bellini bellman bellmen bellow bellum bellwether belly bellyache bellyaching bellyful Belmont Beloit belong belove below Belshazzar belt Beltsville beluga belvedere BEMA bemadden beman bemoan bemuse Ben Benares bench benchmark bend Bendix beneath Benedict Benedictine benediction Benedikt benefactor benefice beneficent beneficial beneficiary benefit Benelux benevolent Bengal Bengali benight benign Benjamin Bennett Bennington Benny Benson bent Bentham benthic Bentley Benton Benz Benzedrine benzene Beograd Beowulf beplaster bequeath bequest berate Berea bereave bereft Berenices Beresford beret berg bergamot Bergen Bergland Berglund Bergman Bergson Bergstrom beribbon beriberi Berkeley berkelium Berkowitz Berkshire Berlin Berlioz Berlitz Berman Bermuda Bern Bernadine Bernard Bernardino Bernardo berne Bernet Bernhard Bernice Bernie Berniece Bernini Bernoulli Bernstein Berra berry berserk Bert berth Bertha Bertie Bertram Bertrand Berwick beryl beryllium beseech beset besetting beside besiege besmirch besotted bespeak bespectacled bespoke Bess Bessel Bessemer Bessie best bestial bestiary bestir bestirring bestow bestowal bestseller bestselling bestubble bet beta betatron betel Betelgeuse beth bethel Bethesda Bethlehem bethought betide betoken betony betray betrayal betroth betrothal Betsey Betsy Bette bettor Betty between betwixt bevel beverage Beverly bevy bewail beware bewhisker bewilder bewitch bey beyond bezel Bhagavadgita bhoy Bhutan Bialystok bianco bias biaxial bib bibb Bible biblical bibliography bibliophile bicameral bicarbonate bicep bichromate bicker biconcave biconnected bicycle bid bidden biddy bide bidiagonal bidirectional bien biennial biennium bifocal bifurcate big bigamy Bigelow Biggs bighorn bigot bigotry biharmonic bijection bijective bijouterie bike bikini bilabial bilateral bilayer Bilbao bile bilge bilharziasis bilinear bilingual bilk bill billboard billet billfold billiard Billie Billiken billion billionth billow billy Biltmore bimetallic bimetallism Bimini bimodal bimolecular bimonthly bin binary binaural bind bindery bindle bindweed bing binge Bingham Binghamton bingle Bini binocular binomial binuclear biochemic biography biology biometry biopsy biota biotic biotite bipartisan bipartite bipedal biplane bipolar biracial birch bird birdbath birdcage birdie birdseed birdwatch birefringent Birgit Birmingham birth birthday birthplace birthrate birthright biscuit bisect bisexual bishop bishopric Bismarck Bismark bismuth bison bisque Bissau bistable bistate bit bitch bite bitnet bitt bitten bittern bitternut bitterroot bittersweet bitumen bituminous bitwise bivalve bivariate bivouac biz bizarre Bizet blab black blackball blackberry blackbird blackboard blackbody Blackburn blacken Blackfeet Blackfoot blackguard blackjack blackmail Blackman blackout blacksmith Blackstone blacktop Blackwell bladder bladdernut bladderwort blade Blaine Blair Blake blame blameworthy blanc blanch Blanchard Blanche bland blandish blank blanket blare blaspheme blasphemous blasphemy blast blastula blat blatant blather Blatz blaze blazon bleach bleak bleary bleat bled bleed Bleeker blemish blend Blenheim bless blest blew blight blimp blind blindfold blink Blinn blip bliss blissful blister blithe blitz blitzkrieg blizzard bloat blob bloc Bloch block blockade blockage blockhouse blocky bloke Blomberg Blomquist blond blonde blood bloodbath bloodhound bloodletting bloodline bloodroot bloodshed bloodshot bloodstain bloodstone bloodstream bloody bloom Bloomfield Bloomington bloop blossom blot blotch blouse blow blowfish blown blowup blubber bludgeon blue blueback blueberry bluebill bluebird bluebonnet bluebook bluebush bluefish bluegill bluegrass bluejacket blueprint bluestocking bluet bluff bluish Blum Blumenthal blunder blunderbuss blunt blur blurb blurry blurt blush bluster blustery blutwurst Blvd Blythe BMW boa boar board boardinghouse boast boastful boat boathouse boatload boatman boatmen boatswain boatyard bob Bobbie bobbin bobble bobby bobcat bobolink Boca bock bode bodhisattva bodice Bodleian body bodybuilder bodybuilding bodyguard Boeing Boeotia bog bogey bogeyman bogeymen bogging boggle boggy Bogota bogus bogy Bohemia Bohr boil Bois Boise boisterous bold boldface bole boletus bolivar Bolivia bolo Bologna bolometer Bolshevik Bolshevism Bolshevist Bolshoi bolster bolt Bolton Boltzmann bomb bombard bombast bombastic Bombay bombproof bon bona bonanza Bonaparte Bonaventure bond bondage bondsman bondsmen bone bonfire bong bongo Boniface bonito Bonn bonnet Bonneville Bonnie bonus bony bonze boo booby boogie book bookbind bookcase bookend bookie bookish bookkeep booklet bookmark bookplate bookseller bookshelf bookshelves bookstore bookworm booky boolean boom boomerang boon Boone boor boorish boost boot Bootes booth bootleg bootlegger bootlegging bootstrap bootstrapping booty booze bop borate borax Bordeaux bordello Borden border borderland borderline bore boreal Borealis Boreas boredom Borg boric Boris born borne Borneo boron borosilicate borough Borroughs borrow Bosch Bose bosom boson bosonic Bosporus boss bossy Boston Boswell botanic botanist botany botch botfly both bothersome Botswana bottle bottlecap bottleneck bottom bottommost botulin botulism Boucher bouffant bough bought bouillabaisse bouillon boulder boulevard bounce bouncy bound boundary bountiful bounty bouquet Bourbaki bourbon bourgeois bourgeoisie bourn boustrophedon bout boutique bovine bow Bowditch Bowdoin bowel Bowen bowerbird bowfin bowie bowl bowline bowman bowmen bowstring box boxcar boxwood boxy boy boyar Boyce boycott Boyd boyish Boyle Boylston BP brace bracelet bracken bracket brackish bract brad Bradbury Bradford Bradley Bradshaw Brady brae brag Bragg bragging Brahmaputra Brahms Brahmsian braid Braille brain Brainard brainchild brainstorm brainwash brainy brake brakeman brakemen bramble bran branch brand Brandeis Brandenburg brandish Brandon Brandt brandy brandywine Braniff brant brash Brasilia brass brassiere brassy bratwurst Braun bravado brave bravery bravo bravura brawl bray brazen brazier Brazil Brazilian Brazzaville breach bread breadboard breadfruit breadroot breadth break breakage breakaway breakdown breakfast breakneck breakoff breakpoint breakthrough breakup breakwater bream breast breastplate breastwork breath breathe breathtaking breathy breccia bred breech breed breeze breezy Bremen bremsstrahlung Brenda Brendan Brennan Brenner Brent Brest brethren Breton Brett breve brevet brevity brew brewery Brewster Brian briar bribe bribery Brice brick brickbat bricklayer bricklaying bridal bride bridegroom bridesmaid bridge bridgeable bridgehead Bridgeport Bridget Bridgetown Bridgewater bridgework bridle Brie brief briefcase brig brigade brigadier brigand brigantine Briggs Brigham bright brighten Brighton brilliant Brillouin brim brimful brimstone Brindisi brindle brine bring brink brinkmanship briny Brisbane brisk bristle bristlecone bristly Bristol Britain Britannic Britannica britches British Briton Brittany Britten brittle broach broad broadcast broaden broadloom broadminded broadside Broadway brocade broccoli brochure Brock brockle Broglie broil broke broken brokerage Bromfield bromide bromine Bromley bronchi bronchial bronchiolar bronchiole bronchitis bronchus bronco Brontosaurus Bronx bronze bronzy brood broody brook Brooke Brookhaven Brookline Brooklyn brookside broom broomcorn broth brothel brother brought brouhaha brow browbeaten brown Browne Brownell Brownian brownie brownish browse Bruce brucellosis Bruckner Bruegel bruise bruit Brumidi brunch brunette Brunhilde Bruno Brunswick brunt brush brushfire brushstroke brushwork brushy brusque Brussels brutal brute Bryan Bryant Bryce Bryn bryophyta bryophyte bryozoa b's BSTJ BTL bub bubble bubonic buccaneer Buchanan Bucharest Buchenwald Buchwald buck buckaroo buckboard bucket bucketful buckeye buckhorn buckle Buckley Bucknell buckshot buckskin buckthorn buckwheat bucolic bud Budapest Budd Buddha Buddhism Buddhist buddy budge budget budgetary Budweiser Buena Buenos buff buffalo buffet bufflehead buffoon bug bugaboo bugeyed bugging buggy bugle Buick build buildup built builtin Bujumbura bulb bulblet bulbous Bulgaria bulge bulk bulkhead bulky bull bulldog bulldoze bullet bulletin bullfinch bullfrog bullhead bullhide bullish bullock bullrush bullseye bullwhack bully bullyboy bulrush bulwark bum bumble bumblebee bump bumpkin bumptious bumpy bun bunch Bundestag bundle Bundoora bundy bungalow bungle bunk bunkmate bunny Bunsen bunt Bunyan buoy buoyant burbank Burch burden burdensome burdock bureau bureaucracy bureaucrat bureaucratic buret burette burg burgeon burgess burgher burglar burglarproof burglary Burgundian Burgundy burial Burke burl burlap burlesque burley Burlington burly Burma Burmese burn Burnett Burnham burnish burnout Burnside burnt burp Burr burro Burroughs burrow bursitis burst bursty Burt Burton Burtt Burundi bury bus busboy Busch bush bushel bushland bushmaster Bushnell bushwhack bushy business businessman businessmen businesswoman businesswomen busload buss bust bustard bustle busy busywork but butadiene butane butch butchery butene buteo butler butt butte butterball buttercup butterfat Butterfield butterfly buttermilk butternut butterscotch buttery buttock button buttonhole buttonweed buttress Buttrick butyl butyrate butyric buxom Buxtehude Buxton buy buzz buzzard buzzing buzzword buzzy by bye bygone bylaw byline bypass bypath byproduct Byrd Byrne byroad Byron Byronic bystander byte byway byword Byzantine Byzantium c CA cab cabal cabana cabaret cabbage cabdriver cabin cabinet cabinetmake cabinetry cable Cabot cacao cachalot cache caching cackle CACM cacophonist cacophonous cacophony cacti cactus cadaver cadaverous caddis caddy cadent cadenza cadet Cadillac cadmium cadre Cady Caesar Caesarian cafe cafeteria cage cagey Cahill cahoot caiman Cain Caine cairn Cairo cajole Cajun cake Cal calabash Calais calamitous calamity calamus calcareous calcify calcite calcium calculable calculate calculi calculus Calcutta Calder caldera Caldwell Caleb calendar calendrical calf calfskin Calgary Calhoun caliber calibrate calibre calico California californium caliper caliph caliphate calisthenic Calkins call calla Callaghan Callahan calligraph calligraphy calliope Callisto callosity callous callus calm caloric calorie calorimeter Calumet calumniate calumny Calvary calve Calvert Calvin calypso calyx cam camaraderie camber Cambodia Cambrian cambric Cambridge Camden came camel camelback camellia camelopard Camelot Camembert cameo camera cameraman cameramen Cameron Cameroon Cameroun camilla Camille Camino camouflage camp campaign campanile Campbell campfire campground campion campsite campus can Canaan Canada Canadian canal canary Canaveral Canberra cancel cancellate cancelled cancelling cancer cancerous candela candelabra candid candidacy candidate Candide candle candlelight candlestick candlewick candy cane Canfield canine Canis canister canker cankerworm canna cannabis cannel cannery cannibal cannister cannon cannonball cannot canny canoe canoeist Canoga canon canonic Canopus canopy can't cant Cantabrigian cantaloupe canteen Canterbury canterelle canticle cantilever cantle canto canton Cantonese cantor canvas canvasback canvass canyon cap capacious capacitance capacitate capacitive capacitor capacity cape capella caper Capetown capillary Capistrano capita capital capitol Capitoline capitulate capo caprice capricious Capricorn capsize capstan capstone capsule captain captaincy caption captious captivate captive captor capture capuchin Caputo capybara car carabao Caracas caramel carapace caravan caraway carbide carbine carbohydrate Carboloy carbon carbonaceous carbonate Carbondale Carbone carbonic Carboniferous carbonium carbonyl carborundum carboxy carboxylic carboy carbuncle carcass carcinogen carcinogenic carcinoma card cardamom cardboard cardiac Cardiff cardigan cardinal cardioid cardiology cardiovascular care careen career carefree careful caress caret caretaker careworn Carey Cargill cargo cargoes Carib Caribbean caribou caricature Carl Carla Carleton Carlin Carlisle Carlo carload Carlsbad Carlson Carlton Carlyle Carmela Carmen Carmichael carmine carnage carnal carnation carne Carnegie carney carnival carob carol Carolina Caroline Carolingian Carolinian Carolyn carouse carousel carp carpal Carpathia carpenter carpentry carpet carpetbag carpetbagger carpetbagging carport Carr carrageen Carrara carrel carriage Carrie carrion Carroll carrot Carruthers carry carryover Carson cart carte cartel Cartesian Carthage cartilage cartilaginous cartographer cartography carton cartoon cartridge cartwheel Caruso carve carven Casanova casbah cascade cascara case casebook casein casework Casey cash cashew cashier cashmere casino cask casket Cassandra cassava casserole cassette Cassiopeia Cassius cassock cast castanet caste casteth castigate Castillo castle castor castrate Castro casual casualty cat cataclysmic cataleptic Catalina catalogue Catalonia catalpa catalysis catalyst catalytic catapult cataract catastrophe catastrophic catatonia catatonic catawba catbird catch catchup catchword catchy catechism categoric category catenate cater caterpillar catfish catharsis cathedral Catherine Catherwood catheter cathode cathodic catholic Cathy cation cationic catkin catnip Catskill catsup cattail cattle cattleman cattlemen catwalk Caucasian Caucasus Cauchy caucus caudal caught cauliflower caulk causal causate cause caustic caution cautionary cautious cavalcade cavalier cavalry cave caveat caveman cavemen Cavendish cavern cavernous caviar cavil cavilling Caviness cavort caw cayenne Cayley Cayuga CBS CDC cease ceasefire Cecil Cecilia Cecropia cedar cede cedilla Cedric ceil celandine Celanese Celebes celebrant celebrate celebratory celebrity celerity celery celesta celestial Celia cell cellar cellophane cellular celluloid cellulose Celsius Celt Celtic cement cemetery Cenozoic censor censorial censure census cent centaur centenary centennial centerline centerpiece centigrade centipede central centrex centric centrifugal centrifugate centrifuge centripetal centrist centroid centum century Cepheus ceramic ceramium Cerberus cereal cerebellum cerebral cerebrate ceremonial ceremonious ceremony Ceres cereus cerise cerium CERN certain certainty certificate certify certiorari certitude cerulean Cervantes cervix Cesare cesium cessation cession Cessna cetacean cetera Cetus Ceylon Cezanne cf Chablis Chad Chadwick chafe chaff chagrin chain chair chairlady chairman chairmen chairperson chairwoman chairwomen chaise chalcedony chalcocite chalice chalk chalkline chalky challenge Chalmers chamber chamberlain chambermaid chameleon chamfer chamois chamomile champ champagne Champaign champion Champlain chance chancel chancellor chancery chancy chandelier Chandigarh chandler Chang change changeable changeover channel chanson chant chantey Chantilly chantry Chao chaos chaotic chap chaparral chapati chapel chaperon chaperone chaplain Chaplin Chapman chapter char character characteristic charcoal charcuterie chard charge chargeable chariot charisma charismatic charitable charity Charlemagne Charles Charleston Charley Charlie Charlotte Charlottesville charm Charon chart Charta Chartres chartreuse chartroom Charybdis chase chasm chassis chaste chastise chastity chat chateau chateaux Chatham Chattanooga chattel chatty Chaucer chauffeur Chauncey Chautauqua chauvinism chauvinist chaw cheap cheat cheater check checkbook checkerberry checkerboard checklist checkout checkpoint checksum checksummed checksumming checkup Cheddar cheek cheekbone cheeky cheer cheerful cheerleader cheery cheese cheesecake cheesecloth cheesemaking cheesy cheetah chef chelate Chelsea chemic chemise chemisorb chemisorption chemist chemistry chemotherapy Chen Cheney chenille cherish Cherokee cherry chert cherub cherubim Cheryl Chesapeake Cheshire chess chest Chester Chesterton chestnut chevalier Chevrolet chevron chevy chew chewy Cheyenne chi Chiang chianti chic Chicago Chicagoan chicanery Chicano chick chickadee chicken chickpea chickweed chicory chide chief chiefdom chieftain chiffon chigger chignon chilblain child childbearing childbirth childish childrearing children Chile chili chill chilly chime chimera chimeric Chimique chimney chimpanzee chin china Chinaman Chinamen Chinatown chinch chinchilla chine Chinese chink Chinook chinquapin chintz chintzy chip chipboard chipmunk Chippendale chiropractor chirp chisel Chisholm chit chitin chitinous chiton chivalrous chivalry chive Chloe chlorate chlordane chloride chlorine chloroform chlorophyll chloroplast chloroplatinate chock chocolate Choctaw choice choir choirmaster choke chokeberry cholera cholesterol choline cholinesterase chomp Chomsky chondrite choose choosy chop Chopin choppy chopstick choral chorale chord chordal chordata chordate chore choreograph choreography chorine chortle chorus choryza chose chosen Chou chow chowder Chris Christ christen Christendom Christensen Christenson Christian Christiana Christianson Christie Christina Christine Christmas Christoffel Christoph Christopher Christy chromate chromatic chromatin chromatogram chromatograph chromatography chrome chromic chromium chromosomal chromosome chromosphere chronic chronicle chronograph chronography chronology chrysalis chrysanthemum Chrysler chrysolite chub chubby chuck chuckle chuckwalla chuff chug chugging chum chummy chump Chungking chunk chunky church churchgoer churchgoing Churchill Churchillian churchman churchmen churchwoman churchwomen churchyard churn chute chutney CIA cicada Cicero Ciceronian cider cigar cigarette cilia ciliate cinch Cincinnati cinder Cinderella Cindy cinema cinematic Cinerama cinnabar cinnamon cinquefoil cipher circa circadian Circe circle circlet circuit circuitous circuitry circulant circular circulate circulatory circumcircle circumcise circumcision circumference circumferential circumflex circumlocution circumpolar circumscribe circumscription circumspect circumsphere circumstance circumstantial circumvent circumvention circus cistern cit citadel citation cite citizen citizenry citrate citric Citroen citron citrus city cityscape citywide civet civic civil civilian clad cladophora claim claimant Claire clairvoyant clam clamber clammy clamp clamshell clan clandestine clang clank clannish clap clapboard Clapeyron Clara Clare Claremont Clarence Clarendon claret clarify clarinet clarity Clark Clarke clash clasp class classic classificatory classify classmate classroom classy clatter clattery Claude Claudia Claudio Claus clause Clausen Clausius claustrophobia claustrophobic clavicle claw clay Clayton clean cleanse cleanup clear clearance clearheaded Clearwater cleat cleavage cleave clef cleft Clemens clement Clemson clench clergy clergyman clergymen cleric clerk Cleveland clever cliche click client clientele cliff cliffhang Clifford Clifton climactic climate climatic climatology climax climb clime clinch cling clinic clinician clink Clint Clinton Clio clip clipboard clique clitoris Clive cloaca cloacal cloak cloakroom clobber clock clockwatcher clockwise clockwork clod cloddish clog clogging cloister clomp clone clonic close closet closeup closure clot cloth clothbound clothe clothesbrush clotheshorse clothesline clothesman clothesmen clothier Clotho cloture cloud cloudburst cloudy clout clove clown clownish cloy club clubhouse clubroom cluck clue Cluj clump clumsy clung cluster clutch clutter Clyde Clytemnestra CO co coach coachman coachmen coachwork coadjutor coagulable coagulate coal coalesce coalescent coalition coarse coarsen coast coastal coastline coat Coates coattail coauthor coax coaxial cob cobalt Cobb cobble cobblestone Cobol cobra cobweb coca cocaine coccidiosis cochineal cochlea Cochran Cochrane cock cockatoo cockcrow cockeye cockfight cockle cocklebur cockleshell cockpit cockroach cocksure cocktail cocky coco cocoa coconut cocoon cod coda Coddington coddle code codebreak codeposit codetermine codeword codex codfish codicil codify codomain codon codpiece Cody coed coeditor coeducation coefficient coequal coerce coercible coercion coercive coevolution coexist coexistent coextensive cofactor coffee coffeecup coffeepot coffer Coffey coffin Coffman cog cogent cogitate cognac cognate cognition cognitive cognoscenti Cohen cohere coherent cohesion cohesive Cohn cohomology cohort cohosh coiffure coil coin coinage coincide coincident coincidental coke col cola colander colatitude Colby cold coldhearted Cole Coleman Coleridge Colette coleus Colgate colic colicky coliform coliseum collaborate collage collagen collapse collapsible collar collarbone collard collate collateral colleague collect collectible collector college collegian collegiate collet collide collie Collier collimate collinear Collins collision collocate colloidal Colloq colloquia colloquial colloquium colloquy collude collusion cologne Colombia Colombo colon colonel colonial colonist colonnade colony Colorado colorate coloratura colorimeter colossal Colosseum colossi colossus colt coltish coltsfoot Columbia columbine Columbus column columnar colza coma Comanche comatose comb combat combatant combatted combinate combinatorial combinatoric combine combustible combustion come comeback comedian comedy comestible comet cometary cometh comfort comic Cominform comma command commandant commandeer commando commemorate commend commendation commendatory commensal commensurable commensurate comment commentary commentator commerce commercial commingle commiserate commissariat commissary commission commit committable committal committed committee committeeman committeemen committeewoman committeewomen committing commodious commodity commodore common commonality commonplace commonweal commonwealth commotion communal commune communicable communicant communicate communion communique commutate commute compact compactify Compagnie companion companionway company comparative comparator compare comparison compartment compass compassion compassionate compatible compatriot compel compellable compelled compelling compendia compendium compensable compensate compensatory compete competent competition competitive competitor compilation compile complacent complain complainant complaint complaisant complement complementarity complementary complementation complete completion complex complexion compliant complicate complicity compliment complimentary compline comply component componentry comport compose composite composition compositor compost composure compote compound comprehend comprehensible comprehension comprehensive compress compressible compression compressive compressor comprise compromise Compton comptroller compulsion compulsive compulsory compunction computation compute comrade con Conakry Conant concatenate concave conceal concede conceit conceive concentrate concentric concept conception conceptual concern concert concerti concertina concertmaster concerto concession concessionaire conch concierge conciliate conciliatory concise concision conclave conclude conclusion conclusive concoct concomitant concord concordant concourse concrete concretion concubine concur concurred concurrent concurring concussion condemn condemnate condemnatory condensate condense condensible condescend condescension condiment condition condolence condominium condone conduce conducive conduct conductance conductor conduit cone coneflower Conestoga coney confabulate confect confectionery confederacy confederate confer conferee conference conferrable conferred conferring confess confession confessor confidant confidante confide confident confidential configuration configure confine confirm confirmation confirmatory confiscable confiscate confiscatory conflagrate conflict confluent confocal conform conformal conformance conformation confound confrere confront confrontation Confucian Confucius confuse confusion confute congeal congener congenial congenital congest congestion congestive conglomerate Congo Congolese congratulate congratulatory congregate congress congressional congressman congressmen congresswoman congresswomen congruent conic conifer coniferous conjectural conjecture conjoin conjoint conjugacy conjugal conjugate conjunct conjuncture conjure Conklin Conley conn Connally connect Connecticut connector Conner Connie connivance connive connoisseur Connors connotation connotative connote connubial conquer conqueror conquest conquistador Conrad Conrail consanguine consanguineous conscience conscientious conscionable conscious conscript conscription consecrate consecutive consensus consent consequent consequential conservation conservatism conservative conservator conservatory conserve consider considerate consign consignee consignor consist consistent consolation console consolidate consonant consonantal consort consortium conspecific conspicuous conspiracy conspirator conspiratorial conspire constant Constantine Constantinople constellate consternate constipate constituent constitute constitution constitutive constrain constraint constrict constrictor construal construct constructible constructor construe consul consular consulate consult consultant consultation consultative consume consummate consumption consumptive contact contagion contagious contain contaminant contaminate contemplate contemporaneous contemporary contempt contemptible contemptuous contend content contention contentious contest contestant context contextual contiguity contiguous continent continental contingent continua continual continuant continuation continue continuity continuo continuous continuum contort contour contraband contrabass contraception contraceptive contract contractor contractual contradict contradictory contradistinct contradistinguish contraindicate contralateral contralto contrapositive contraption contrariety contrary contrast contravariant contravene contravention contretemps contribute contribution contributor contributory contrite contrition contrivance contrive control controllable controlled controller controlling controversial controversy controvertible contumacy contusion conundrum Convair convalesce convalescent convect convene convenient convent convention converge convergent conversant conversation converse conversion convert convertible convex convey conveyance conveyor convict convince convivial convocate convoke convolute convolution convolve convoy convulse convulsion convulsive Conway cony coo cook cookbook Cooke cookery cookie cooky cool coolant Cooley coolheaded Coolidge coon coop cooperate coordinate Coors coot cop cope Copeland Copenhagen Copernican Copernicus copious coplanar copolymer copperas Copperfield copperhead coppery copra coprinus coprocessor coproduct copter copulate copy copybook copyright copywriter coquette coquina coral coralberry coralline corbel Corbett Corcoran cord cordage cordial cordite cordon corduroy core Corey coriander Corinth Corinthian Coriolanus cork corkscrew cormorant corn cornbread cornea Cornelia Cornelius Cornell cornerstone cornet cornfield cornflower cornish cornmeal cornstarch cornucopia Cornwall corny corolla corollary corona Coronado coronary coronate coroner coronet coroutine Corp corpora corporal corporate corporeal corps corpse corpsman corpsmen corpulent corpus corpuscle corpuscular corral corralled correct corrector correlate correspond correspondent corridor corrigenda corrigendum corrigible corroborate corroboree corrode corrodible corrosion corrosive corrugate corrupt corruptible corruption corsage corset Corsica cortege cortex Cortez cortical Cortland corundum coruscate Corvallis corvette Corvus cos cosec coset Cosgrove cosh cosine cosmetic cosmic cosmology cosmopolitan cosmos cosponsor Cossack cost Costa Costello costume cosy cot cotangent coterie cotillion cotman cotoneaster cotta cottage cotton cottonmouth cottonseed cottontail cottonwood cottony Cottrell cotty cotyledon couch cougar cough could couldn't coulomb Coulter council councilman councilmen councilwoman councilwomen counsel counselor count countdown countenance counteract counterargument counterattack counterbalance counterclockwise counterexample counterfeit counterflow counterintuitive counterman countermand countermeasure countermen counterpart counterpoint counterpoise counterproductive counterproposal counterrevolution counterrevolutionary countersink countersunk counterthreat countervail counterweight countrify country countryman countrymen countryside countrywide county countywide coup coupe couple couplet coupon courage courageous courier course court courteous courtesan courtesy courthouse courtier Courtney courtroom courtyard couscous cousin couturier covalent covariant covariate covary cove coven covenant Coventry cover coverage coverall coverlet covert covet covetous cow Cowan coward cowardice cowbell cowbird cowboy cowhand cowherd cowhide cowl cowlick cowman cowmen coworker cowpea cowpoke cowpony cowpox cowpunch cowry cowslip cox coxcomb coy coyly coyote coypu cozen cozy CPA cpu crab crabapple crack crackle crackpot cradle craft craftsman craftsmen craftspeople craftsperson crafty crag craggy Craig cram Cramer cramp crampon cranberry Crandall crane Cranford crania cranium crank crankcase crankshaft cranky cranny Cranston crap crappie crash crass crate crater cravat crave craven craw Crawford crawl crawlspace crayfish crayon craze crazy creak creaky cream creamery creamy crease create creature creche credent credential credenza credible credit creditor credo credulity credulous creed creedal creek creekside creep creepy cremate crematory Creole Creon creosote crepe crept crescendo crescent cress crest crestfallen Crestview Cretaceous Cretan Crete cretin cretinous crevice crew crewcut crewel crewman crewmen crib cribbage cricket crime Crimea criminal crimp crimson cringe crinkle crinoid cripple crises crisis crisp Crispin criss crisscross criteria criterion critic critique critter croak Croatia crochet crock crockery Crockett crocodile crocodilian crocus croft Croix Cromwell Cromwellian crone crony crook croon crop cropland crore Crosby cross crossarm crossbar crossbill crosscut crosshatch crosslink crossover crosspoint crossroad crosstalk crosswalk crossway crosswise crossword crosswort crotch crotchety crouch croupier crow crowbait crowbar crowberry crowd crowfoot Crowley crown croydon CRT crucial crucible crucifix crucifixion crucify crud cruddy crude cruel cruelty Cruickshank cruise crumb crumble crummy crump crumple crunch crunchy crupper crusade crush Crusoe crust crustacean crusty crutch crux Cruz cry cryogenic cryostat crypt cryptanalysis cryptanalyst cryptanalytic cryptic crypto cryptogram cryptographer cryptography crystal crystalline crystallite crystallographer crystallography c's csnet CT cub Cuba cubby cubbyhole cube cubic cubicle cubit cuckoo cucumber cud cuddle cuddly cudgel cue cuff cufflink cuisine Culbertson culinary cull culminate culpa culpable culprit cult cultivable cultivar cultivate cultural culture Culver culvert Cumberland cumbersome cumin Cummings Cummins cumulate cumulus Cunard cuneiform cunning Cunningham CUNY cup cupboard cupful Cupid cupidity cupric cuprous cur curate curb curbside curd curdle cure curfew curia curie curio curiosity curious curium curl curlew curlicue curmudgeon Curran currant current curricula curricular curriculum curry curse cursive cursor cursory curt curtail curtain Curtis curtsey curvaceous curvature curve curvilinear Cushing cushion Cushman cusp Custer custodial custodian custody custom customary customhouse cut cutaneous cutback cute cutlass cutler cutlet cutoff cutout cutover cutset cutthroat cuttlebone cuttlefish cutworm Cuvier Cuzco Cyanamid cyanate cyanic cyanide cybernetic cycad Cyclades cycle cyclic cyclist cyclone cyclopean Cyclops cyclorama cyclotomic cyclotron cygnet Cygnus cylinder cylindric cymbal cynic Cynthia cypress Cyprian Cypriot Cyprus Cyril Cyrillic Cyrus cyst cysteine cytochemistry cytolysis cytoplasm cytosine CZ czar czarina Czech Czechoslovakia Czerniak d dab dabble Dacca dachshund dactyl dactylic dad Dada daddy Dade Daedalus daemon daffodil daffy dagger daguerreotype Dahl dahlia Dahomey Dailey Daimler dainty dairy Dairylea dairyman dairymen dais daisy Dakar Dakota dal dale Daley Dalhousie Dallas dally Dalton Daly Dalzell dam damage Damascus damask dame damn damnation Damocles Damon damp dampen damsel damselfly Dan Dana Danbury dance dandelion dandy Dane dang danger dangerous dangle Daniel Danielson Danish dank Danny Dante Danube Danubian Danzig Daphne dapper dapple Dar dare Darius dark darken darkle Darlene darling darn DARPA Darrell Darry d'art dart Dartmouth Darwin Darwinian dash dashboard dastard data database date dateline dater Datsun datum datura daub Daugherty daughter daunt dauphin dauphine Dave davenport David Davidson Davies Davis Davison davit Davy dawdle dawn Dawson day daybed daybreak daydream daylight daytime Dayton Daytona daze dazzle DC de deacon deaconess deactivate dead deaden deadhead deadline deadlock deadwood deaf deafen deal deallocate dealt dean Deane Deanna dear Dearborn dearie dearth death deathbed deathward debacle debar debarring debase debate debater debauch debauchery Debbie Debby debenture debilitate debility debit debonair Deborah Debra debrief debris debt debtor debug debugged debugger debugging debunk Debussy debut debutante Dec decade decadent decal decant decapitate decapod decathlon Decatur decay Decca decease decedent deceit deceitful deceive decelerate December decennial decent deception deceptive decertify decibel decide deciduous decile decimal decimate decipher decision decisive deck declaim declamation declamatory declaration declarative declarator declaratory declare declassify declination decline declivity decode decolletage decollimate decompile decomposable decompose decomposition decompress decompression decontrol decontrolled decontrolling deconvolution deconvolve decor decorate decorous decorticate decorum decouple decoy decrease decree decreeing decrement decry decrypt decryption dedicate deduce deducible deduct deductible Dee deed deem deep deepen deer Deere deerskin deerstalker deface default defeat defecate defect defector defend defendant defensible defensive defer deferent deferrable deferred deferring defiant deficient deficit define definite definition definitive deflate deflater deflect deflector defocus defoliate deforest deforestation deform deformation defraud defray defrost deft defunct defy degas degassing degeneracy degenerate degradation degrade degrease degree degum degumming dehumidify dehydrate deify deign Deimos Deirdre deity deja deject Del Delaney Delano Delaware delay delectable delectate delegable delegate delete deleterious deletion Delft Delhi Delia deliberate delicacy delicate delicatessen delicious delicti delight delightful Delilah delimit delimitation delineament delineate delinquent deliquesce deliquescent delirious delirium deliver deliverance delivery deliveryman deliverymen dell Della Delmarva delouse Delphi Delphic delphine delphinium Delphinus delta deltoid delude deluge delusion delusive deluxe delve demagnify demagogue demand demarcate demark demean demented dementia demerit Demeter demi demigod demijohn demiscible demise demit demitted demitting democracy democrat democratic demodulate demographer demography demolish demolition demon demoniac demonic demonstrable demonstrate demote demountable Dempsey demultiplex demur demure demurred demurrer demurring demystify den denature dendrite dendritic Deneb Denebola deniable denial denigrate denizen Denmark Dennis Denny denominate denotation denotative denote denouement denounce dense densitometer dent dental dentistry dentition Denton denture denudation denude denumerable denunciate Denver deny deodorant deoxyribonucleic deoxyribose depart departure depend dependent depict deplane deplete depletion deplore deploy deport deportation deportee depose deposit depositary deposition depositor depository depot deprave deprecate deprecatory depreciable depreciate depredation depress depressant depressible depression depressive depressor deprivation deprive depth deputation depute deputy derail derange derate derby Derbyshire dereference deregulate Derek derelict deride derision derisive derivate derive dermatology derogate derogatory derrick derriere dervish Des descant Descartes descend descendant descendent descent describe description descriptive descriptor desecrate desecrater desegregate desert deserve desiccant desiccate desiderata desideratum design designate desire desirous desist desk Desmond desolate desolater desorption despair desperado desperate despicable despise despite despoil despond despondent despot despotic dessert destinate destine destiny destitute destroy destruct destructor desuetude desultory detach detail detain d'etat detect detector detent detente detention deter detergent deteriorate determinacy determinant determinate determine deterred deterrent deterring detest detestation detonable detonate detour detoxify detract detractor detriment detritus Detroit deuce deus deuterate deuterium deuteron devastate develop deviant deviate device devil devilish devious devise devisee devoid devolve Devon Devonshire devote devotee devotion devour devout dew dewar dewdrop Dewey Dewitt dewy dexter dexterity dextrose dextrous dey Dhabi dharma diabase diabetes diabetic diabolic diachronic diacritic diadem diagnosable diagnose diagnosis diagnostic diagnostician diagonal diagram diagrammatic diagrammed diagramming dial dialect dialectic dialogue dialup dialysis diamagnetic diamagnetism diameter diamond Diana Diane Dianne diaper diaphanous diaphragm diary diathermy diathesis diatom diatomaceous diatomic diatonic diatribe dibble dice dichloride dichondra dichotomy dick dickcissel dickens Dickerson dickey Dickinson Dickson dicotyledon dicta dictate dictatorial diction dictionary dictum did didactic diddle didn't Dido die Diebold Diego diehard dieldrin dielectric diem dieresis diesel diet dietary dietetic diethylstilbestrol dietician Dietrich diety Dietz diffeomorphic diffeomorphism differ different differentiable differential differentiate difficult difficulty diffident diffract diffractometer diffuse diffusible diffusion diffusive difluoride dig digamma digest digestible digestion digestive digging digit digital digitalis dignify dignitary dignity digram digress digression dihedral dilapidate dilatation dilate dilatory dilemma dilettante diligent dill Dillon dilogarithm diluent dilute dilution dim dime dimension dimethyl diminish diminuendo diminution diminutive dimorphic dimorphism dimple din Dinah dine ding dinghy dingo dingy dinnertime dinnerware dinosaur dint diocesan diocese Diocletian diode Diogenes Dionysian Dionysus Diophantine diopter diorama diorite dioxide dip diphtheria diphthong diploid diploidy diploma diplomacy diplomat diplomatic dipole Dirac dire direct director directorate directory directrices directrix dirge Dirichlet dirt dirty Dis disaccharide disambiguate disastrous disburse disc discern discernible disciple disciplinary discipline discoid discomfit discordant discovery discreet discrepant discrete discretion discretionary discriminable discriminant discriminate discriminatory discus discuss discussant discussion disdain disdainful disembowel disgruntle disgustful dish dishevel dishwasher dishwater disjunct disk dismal dismissal Disney Disneyland disparage disparate dispel dispelled dispelling dispensable dispensary dispensate dispense dispersal disperse dispersible dispersion dispersive disposable disposal disputant dispute disquietude disquisition disrupt disruption disruptive dissemble disseminate dissension dissertation dissident dissipate dissociate dissuade distaff distal distant distillate distillery distinct distinguish distort distraught distribution distributive distributor district disturb disturbance disulfide disyllable ditch dither ditto ditty diurnal diva divalent divan dive diverge divergent diverse diversify diversion diversionary divert divest divestiture divide dividend divination divine divisible division divisive divisor divorce divorcee divulge Dixie dixieland Dixon dizzy Djakarta DNA Dnieper do Dobbin Dobbs doberman dobson docile dock docket dockside dockyard doctor doctoral doctorate doctrinaire doctrinal doctrine document documentary documentation DOD Dodd doddering dodecahedra dodecahedral dodecahedron dodge dodo Dodson doe doesn't d'oeuvre doff dog dogbane dogberry Doge dogfish dogging doggone doghouse dogleg dogma dogmatic dogmatism dogmatist dogtooth dogtrot dogwood Doherty Dolan dolce doldrum dole doleful doll dollar dollop dolly dolomite dolomitic Dolores dolphin dolt doltish domain dome Domenico Domesday domestic domesticate domicile dominant dominate domineer Domingo Dominic Dominican Dominick dominion Dominique domino don Donahue Donald Donaldson donate done Doneck donkey Donna Donnelly Donner donnybrook donor Donovan don't doodle Dooley Doolittle doom doomsday door doorbell doorkeep doorkeeper doorknob doorman doormen doorstep doorway dopant dope Doppler Dora Dorado Dorcas Dorchester Doreen Doria Doric Doris dormant dormitory dormouse Dorothea Dorothy dorsal Dorset Dortmund dosage dose dosimeter dossier Dostoevsky dot dote double Doubleday doubleheader doublet doubleton doubloon doubt doubtful douce Doug dough Dougherty doughnut Douglas Douglass dour douse dove dovekie dovetail Dow dowager dowel dowitcher Dowling down downbeat downcast downdraft Downey downfall downgrade downhill downplay downpour downright downside downslope downspout downstairs downstream downtown downtrend downtrodden downturn downward downwind downy dowry Doyle doze dozen Dr drab drably Draco Draconian draft draftee draftsman draftsmen draftsperson drafty drag dragging dragnet dragon dragonfly dragonhead dragoon drain drainage drake dram drama dramatic dramatist dramaturgy drank drape drapery drastic draught Dravidian draw drawback drawbridge drawl drawn drawstring drayman dread dreadful dreadnought dream dreamboat dreamt dreamy dreary dredge dreg drench dress dressmake dressy drew Drexel Dreyfuss drib dribble drift driftwood drill drink drip drippy Driscoll drive driven driveway drizzle drizzly droll dromedary drone drool droop droopy drop drophead droplet dropout drosophila dross drought drove drown drowse drowsy drub drudge drudgery drug drugging drugstore druid drum drumhead drumlin Drummond drunk drunkard drunken drupe Drury dry dryad Dryden d's du dual Duane dub Dubhe dubious dubitable Dublin ducat duchess duck duckbilled duckling duckweed duct ductile ductwork dud Dudley due duel duet duff duffel Duffy dug Dugan dugong dugout duke dulcet dull dully dulse Duluth duly Duma dumb dumbbell dumbly dummy dump dumpling dumpster Dumpty dumpy dun Dunbar Duncan dunce dune Dunedin dung dungeon Dunham dunk Dunkirk Dunlap Dunlop Dunn duodenal duodenum duopolist duopoly dupe duplex duplicable duplicate duplicity DuPont Duquesne durable durance Durango duration Durer duress Durham during Durkee Durkin Durrell Durward Dusenberg Dusenbury dusk dusky Dusseldorf dust dustbin dusty Dutch dutchess Dutchman Dutchmen dutiable dutiful Dutton duty dwarf dwarves dwell dwelt Dwight dwindle Dwyer dyad dyadic dye dyeing dyestuff dying Dyke Dylan dynamic dynamism dynamite dynamo dynast dynastic dynasty dyne dysentery dyspeptic dysplasia dysprosium dystrophy e each Eagan eager eagle ear eardrum earl earmark earn earnest earphone earring earshot earsplitting earth earthen earthenware Earthman Earthmen earthmover earthmoving earthquake earthworm earthy earwig ease easel east eastbound eastern easternmost Eastland Eastman eastward Eastwood easy easygoing eat eaten eater Eaton eave eavesdrop eavesdropping ebb Eben ebony ebullient eccentric Eccles ecclesiastic echelon echidna echinoderm echo echoes echolocation eclat eclectic eclipse ecliptic eclogue Ecole ecology econometric economic economist economy ecosystem ecstasy ecstatic ectoderm ectopic Ecuador ecumenic ecumenist Ed Eddie eddy edelweiss edematous Eden Edgar edge Edgerton edgewise edgy edible edict edifice edify Edinburgh Edison edit Edith edition editor editorial Edmonds Edmondson Edmonton Edmund Edna EDT Eduardo educable educate Edward Edwardian Edwardine Edwin Edwina eel eelgrass EEOC e'er eerie eerily efface effaceable effect effectual effectuate effeminate efferent effete efficacious efficacy efficient Effie effloresce efflorescent effluent effluvia effluvium effort effusion effusive eft e.g egalitarian Egan egg egghead eggplant eggshell ego egocentric egotism egotist egregious egress egret Egypt Egyptian Egyptology eh Ehrlich eider eidetic eigenfunction eigenspace eigenstate eigenvalue eigenvector eight eighteen eighteenth eightfold eighth eightieth eighty eightyfold Eileen Einstein Einsteinian einsteinium Eire Eisenhower Eisner either ejaculate eject ejector eke Ekstrom Ektachrome el elaborate Elaine elan elapse elastic elastomer elate Elba elbow elder eldest Eldon Eleanor Eleazar elect elector electoral electorate Electra electress electret electric electrician electrify electro electrocardiogram electrocardiograph electrode electroencephalogram electroencephalograph electroencephalography electrolysis electrolyte electrolytic electron electronic electrophoresis electrophorus elegant elegiac elegy element elementary Elena elephant elephantine elevate eleven elevenfold eleventh elfin Elgin Eli elicit elide eligible Elijah eliminable eliminate Elinor Eliot Elisabeth Elisha elision elite Elizabeth Elizabethan elk Elkhart ell Ella Ellen Elliot Elliott ellipse ellipsis ellipsoid ellipsoidal ellipsometer elliptic Ellis Ellison Ellsworth Ellwood elm Elmer Elmhurst Elmira Elmsford Eloise elongate elope eloquent else Elsevier elsewhere Elsie Elsinore Elton eluate elucidate elude elusive elute elution elver elves Ely Elysee elysian em emaciate emacs emanate emancipate Emanuel emasculate embalm embank embarcadero embargo embargoes embark embarrass embassy embattle embed embeddable embedded embedder embedding embellish ember embezzle embitter emblazon emblem emblematic embodiment embody embolden emboss embouchure embower embrace embraceable embrittle embroider embroidery embroil embryo embryology embryonic emcee emendable emerald emerge emergent emeriti emeritus Emerson Emery emetic emigrant emigrate emigre emigree Emil Emile Emilio Emily eminent emirate emissary emission emissive emit emittance emitted emitter emitting emma Emmanuel Emmett emolument Emory emotion empathic empathy emperor emphases emphasis emphatic emphysema emphysematous empire empiric emplace employ employee emporium empower empress empty emptyhanded emulate emulsify emulsion en enamel encapsulate encephalitis enchantress enclave encomia encomium encore encroach encryption encumber encumbrance encyclopedic end endemic endgame Endicott endoderm endogamous endogamy endogenous endometrial endometriosis endomorphism endorse endosperm endothelial endothermic endow endpoint endure enemy energetic energy enervate enfant enforceable enforcible Eng engage Engel engine engineer England Englander Engle Englewood English Englishman Englishmen enhance Enid enigma enigmatic enjoinder enlargeable enmity Enoch enol enormity enormous Enos enough enquire enquiry Enrico enrollee ensconce ensemble enstatite entendre enter enterprise entertain enthalpy enthusiasm enthusiast enthusiastic entice entire entirety entity entomology entourage entranceway entrant entrepreneur entrepreneurial entropy entry enumerable enumerate enunciable enunciate envelop envelope enviable envious environ envoy envy enzymatic enzyme enzymology Eocene eohippus eosine EPA epaulet ephemeral ephemerides ephemeris Ephesian Ephesus Ephraim epic epicure Epicurean epicycle epicyclic epidemic epidemiology epidermic epidermis epigenetic epigram epigrammatic epigraph epilepsy epileptic epilogue epimorphism Epiphany epiphany epiphyseal epiphysis epiphyte epiphytic episcopal Episcopalian episcopate episode episodic epistemology epistle epistolatory epitaph epitaxial epitaxy epithelial epithelium epithet epitome epoch epochal eponymous epoxy epsilon Epsom Epstein equable equal equanimity equate equatorial equestrian equidistant equilateral equilibrate equilibria equilibrium equine equinoctial equinox equip equipoise equipotent equipped equipping equitable equitation equity equivalent equivocal equivocate era eradicable eradicate erasable erase Erasmus Erastus erasure Erato Eratosthenes erbium ERDA ere erect erg ergative ergodic Eric Erich Erickson Ericsson Erie Erik Erlenmeyer ermine Ernest Ernestine Ernie Ernst erode erodible Eros erosible erosion erosive erotic erotica err errand errant errantry errata erratic erratum Errol erroneous error ersatz Erskine erudite erudition erupt eruption Ervin Erwin e's escadrille escalate escapade escape escapee escarpment escheat Escherichia eschew escort escritoire escrow escutcheon Eskimo Esmark esophagi esoteric especial espionage esplanade Esposito espousal espouse esprit esquire essay Essen essence essential Essex EST establish estate esteem Estella ester Estes Esther estimable estimate Estonia estop estoppal estrange estrogen estrous estrus estuarine estuary et eta etc etch eternal eternity Ethan ethane ethanol Ethel ether ethereal ethernet ethic Ethiopia ethnic ethnography ethnology ethnomusicology ethology ethos ethyl ethylene etiology etiquette Etruria Etruscan etude etymology eucalyptus Eucharist Euclid Euclidean eucre Eugene Eugenia eugenic euglena eukaryote eukaryotic Euler Eulerian eulogy Eumenides Eunice euphemism euphemist euphonious euphony euphorbia euphoria euphoric Euphrates Eurasia eureka Euridyce Euripides Europa Europe European europium Eurydice eutectic Euterpe euthanasia eutrophication Eva evacuate evade evaluable evaluate evanescent evangel evangelic Evans Evanston Evansville evaporate evasion evasive eve Evelyn even evenhanded evensong event eventful eventide eventual eventuate Eveready Everett Everglade evergreen Everhart everlasting every everybody everyday everyman everyone everything everywhere evict evident evidential evil evildoer evince eviscerate evocable evocate evoke evolution evolutionary evolve evzone ewe ex exacerbate exact exactitude exaggerate exalt exaltation exam examination examine example exasperate exasperater excavate exceed excel excelled excellent excelling excelsior except exception excerpt excess excessive exchange exchangeable exchequer excisable excise excision excitation excitatory excite exciton exclaim exclamation exclamatory exclude exclusion exclusionary exclusive excommunicate excoriate excrement excrescent excrete excretion excretory excruciate exculpate exculpatory excursion excursus excusable excuse exec execrable execrate execute execution executive executor executrix exegesis exegete exemplar exemplary exemplify exempt exemption exercisable exercise exert Exeter exfoliate exhale exhaust exhaustible exhaustion exhaustive exhibit exhibition exhibitor exhilarate exhort exhortation exhumation exhume exigent exile exist existent existential exit exodus exogamous exogamy exogenous exonerate exorbitant exorcise exorcism exorcist exoskeleta exoskeleton exothermic exotic exotica expand expanse expansible expansion expansive expatiate expatriate expect expectant expectation expectorant expectorate expedient expedite expedition expeditious expel expellable expelled expelling expend expenditure expense expensive experience experiential experiment experimentation expert expertise expiable expiate expiration expire expiry explain explanation explanatory expletive explicable explicate explicit explode exploit exploitation exploration exploratory explore explosion explosive exponent exponential exponentiate export exportation expose exposit exposition expositor expository exposure expound express expressible expression expressive expressway expropriate expulsion expunge expurgate exquisite extant extemporaneous extempore extend extendible extensible extension extensive extensor extent extenuate exterior exterminate external extinct extinguish extirpate extol extolled extoller extolling extort extra extracellular extract extractor extracurricular extradite extradition extralegal extramarital extramural extraneous extraordinary extrapolate extraterrestrial extraterritorial extravagant extravaganza extrema extremal extreme extremum extricable extricate extrinsic extroversion extrovert extrude extrusion extrusive exuberant exudate exude exult exultant exultation Exxon eye eyeball eyebright eyebrow eyeful eyeglass eyelash eyelet eyelid eyepiece eyesight eyesore eyewitness Ezekiel Ezra f FAA Faber Fabian fable fabric fabricate fabulous facade face faceplate facet facetious facial facile facilitate facsimile fact factious facto factor factorial factory factual faculty fad fade fadeout faery Fafnir fag Fahey Fahrenheit faience fail failsafe failsoft failure fain faint fair Fairchild Fairfax Fairfield fairgoer Fairport fairway fairy faith faithful fake falcon falconry Falkland fall fallacious fallacy fallen fallible falloff Fallopian fallout fallow Falmouth false falsetto falsify Falstaff falter fame familial familiar familism family famine famish famous fan fanatic fanciful fancy fanfare fanfold fang fangled Fanny fanout fantasia fantasist fantastic fantasy fantod far farad Faraday Farber farce farcical fare farewell farfetched Fargo farina Farkas Farley farm farmhouse Farmington farmland Farnsworth faro Farrell farsighted farther farthest fascicle fasciculate fascinate fascism fascist fashion fast fasten fastidious fat fatal fate fateful father fathom fatigue Fatima fatten fatty fatuous faucet Faulkner fault faulty faun fauna faunal Faust Faustian Faustus fawn fay Fayette Fayetteville faze FBI FCC FDA Fe fealty fear fearful fearsome feasible feast feat feather featherbed featherbedding featherbrain feathertop featherweight feathery feature Feb febrile February fecal feces feckless fecund fed federal federate Fedora fee feeble feed feedback feel Feeney feet feign feint feisty Feldman feldspar Felice Felicia felicitous felicity feline Felix fell fellow felon felonious felony felsite felt female feminine feminism feminist femoral femur fence fencepost fend fennec fennel Fenton fenugreek Ferber Ferdinand Ferguson Fermat ferment fermentation Fermi fermion fermium fern Fernando fernery ferocious ferocity Ferreira Ferrer ferret ferric ferris ferrite ferroelectric ferromagnet ferromagnetic ferrous ferruginous ferrule ferry fertile fervent fervid fescue fest festival festive festoon fetal fetch fete fetid fetish fetter fettle fetus feud feudal feudatory fever feverish few fiance fiancee fiasco fiat fib fiberboard Fiberglas Fibonacci fibration fibrin fibrosis fibrous fiche fickle fiction fictitious fictive fiddle fiddlehead fiddlestick fide fidelity fidget fiducial fief fiefdom field fieldstone fieldwork fiend fiendish fierce fiery fiesta fife FIFO fifteen fifteenth fifth fiftieth fifty fiftyfold fig figaro fight figural figurate figure figurine Fiji Fijian filament filamentary filamentous filbert filch file filet filial filibuster filigree Filipino fill fillet fillip filly film filmdom filmmake filmstrip filmy filter filth filthy filtrate fin final finale finance financial financier finch find fine finery finesse finessing finger fingerling fingernail fingerprint fingertip finial finicky finish finite finitude fink Finland Finley Finn Finnegan Finnish finny fir fire firearm fireboat firebreak firebug firecracker firefly firehouse firelight fireman firemen fireplace firepower fireproof fireside Firestone firewall firewood firework firm firmware first firsthand fiscal Fischbein Fischer fish fisherman fishermen fishery fishmonger fishpond fishy Fisk Fiske fissile fission fissure fist fisticuff fit Fitch Fitchburg fitful Fitzgerald Fitzpatrick Fitzroy five fivefold fix fixate fixture Fizeau fizzle fjord FL flabbergast flack flag flagellate flageolet flagging Flagler flagpole flagrant Flagstaff flagstone flail flair flak flake flaky flam flamboyant flame flamingo flammable flan Flanagan Flanders flange flank flannel flap flare flash flashback flashlight flashy flask flat flatbed flathead flatiron flatland flatten flattery flatulent flatus flatworm flaunt flautist flaw flax flaxen flaxseed flea fleabane fleawort fleck fled fledge fledgling flee fleece fleeing fleet Fleming flemish flesh fleshy fletch Fletcher flew flex flexible flexural flexure flick flight flimsy flinch fling flint flintlock flinty flip flipflop flippant flirt flirtation flirtatious flit Flo float floc flocculate flock floe flog flogging flood floodgate floodlight floodlit floodwater floor floorboard flop floppy flora floral Florence Florentine florican florid Florida Floridian florin florist floruit flotation flotilla flounce flounder flour flourish floury flout flow flowchart flowerpot flowery flown Floyd flu flub fluctuate flue fluent fluff fluffy fluid fluke flung flunk flunky fluoresce fluorescein fluorescent fluoridate fluoride fluorine fluorite fluorocarbon fluorspar flurry flush fluster flute flutter flux fly flycatcher flyer Flynn flyway FM FMC foal foam foamflower foamy fob focal foci focus focussed fodder foe fog Fogarty fogging foggy fogy foible foil foist fold foldout Foley foliage foliate folic folio folk folklore folksinger folksinging folksong folksy folktale follicle follicular follow followeth folly Fomalhaut foment fond fondle font Fontaine Fontainebleau food foodstuff fool foolhardy foolish foolproof foolscap foot footage football footbridge Foote footfall foothill foothold footman footmen footnote footpad footpath footprint footstep footstool footwear footwork fop foppish for forage foraminifera foray forbade forbear forbearance Forbes forbid forbidden forbidding forbore forborne force forceful forcible ford Fordham fore foreign forensic forest forestry forever forfeit forfeiture forfend forgather forgave forge forgery forget forgetful forgettable forgetting forgive forgiven forgo forgone forgot forgotten fork forklift forlorn form formal formaldehyde formant format formate formatted formatting formic Formica formidable Formosa formula formulae formulaic formulate forsake forsaken forsook forswear forswore forsworn Forsythe fort forte Fortescue forth forthcome forthcoming forthright forthwith fortieth fortify fortin fortiori fortitude fortnight fortran fortress fortuitous fortunate fortune forty fortyfold forum forward forwent Foss fossil fossiliferous foster fosterite fought foul foulmouth found foundation foundling foundry fount fountain fountainhead four fourfold Fourier foursome foursquare fourteen fourteenth fourth fovea fowl fox foxglove Foxhall foxhole foxhound foxtail foxtrot foxy foyer FPC fractal fraction fractionate fractious fracture fragile fragment fragmentary fragmentation fragrant frail frailty frambesia frame framework Fran franc franca France Frances franchise Francine Francis Franciscan Francisco francium franco Francoise frangipani frank Frankel Frankfort Frankfurt frankfurter franklin frantic Franz Fraser fraternal fraternity Frau fraud fraudulent fraught fray Frazier frazzle freak freakish freckle Fred Freddie Freddy Frederic Frederick Fredericksburg Fredericton Fredholm Fredrickson free freeboot freedman freedmen freedom freehand freehold freeing freeload freeman freemen Freeport freestone freethink Freetown freeway freewheel freeze freight French Frenchman Frenchmen frenetic frenzy freon frequent fresco frescoes fresh freshen freshman freshmen freshwater Fresnel Fresno fret Freud Freudian Frey Freya friable friar fricative Frick friction Friday fridge Friedman Friedrich friend Friesland frieze frigate Frigga fright frighten frightful frigid Frigidaire frill frilly fringe Frisian frisky fritillary fritter Fritz frivolity frivolous frizzle frizzy fro frock frog frolic frolicked frolicking from frond front frontage frontal frontier frontiersman frontiersmen frost frostbite frostbitten frosty froth frothy frown frowzy froze frozen fructose Fruehauf frugal fruit fruitful fruition frustrate frustrater frustum fry Frye f's Ft FTC Fuchs Fuchsia fudge fuel fugal fugitive fugue Fuji Fujitsu Fulbright fulcrum fulfill full fullback Fullerton fully fulminate fulsome Fulton fum fumarole fumble fume fumigant fumigate fun function functionary functor functorial fund fundamental fundraiser fundraising funeral funerary funereal fungal fungi fungible fungicide fungoid fungus funk funky funnel funny fur furbish furious furl furlong furlough Furman furnace furnish furniture furrier furrow furry further furthermore furthermost furthest furtive fury furze fuse fuselage fusible fusiform fusillade fusion fuss fussy fusty futile future fuzz fuzzy g GA gab gabardine gabble gabbro Gaberones gable Gabon Gabriel Gabrielle gad gadfly gadget gadgetry gadolinium gadwall Gaelic gaff gaffe gag gage gagging gaggle gagwriter gaiety Gail gaillardia gain Gaines Gainesville gainful gait Gaithersburg gal gala galactic galactose Galapagos Galatea Galatia galaxy Galbreath gale Galen galena galenite Galilean Galilee Galileo gall Gallagher gallant gallantry gallberry gallery galley gallinule gallium gallivant gallon gallonage gallop Galloway gallows gallstone Gallup gallus Galois Galt galvanic galvanism galvanometer Galveston Galway gam Gambia gambit gamble gambol game gamecock gamesmanship gamete gamin gamma gamut gander Gandhi Gandhian gang Ganges gangland gangling ganglion gangplank gangster gangway gannet Gannett gantlet gantry Ganymede GAO gap gape gar garage garb garbage garble Garcia garden gardenia Gardner Garfield gargantuan gargle Garibaldi garish garland garlic garner garnet garnish Garrett garrison Garrisonian garrulous Garry garter Garth Garvey Gary gas Gascony gaseous gases gash gasify gasket gaslight gasoline gasp Gaspee gassy Gaston gastrointestinal gastronome gastronomic gastronomy gate gatekeeper Gates gateway gather Gatlinburg gator gauche gaucherie gaudy gauge gaugeable Gauguin Gaul gauleiter Gaulle gaunt gauntlet gaur gauss Gaussian Gautama gauze gauzy gave gavel Gavin gavotte gawk gawky gay Gaylord gaze gazebo gazelle gazette gazpacho GE gear gecko gee geese Gegenschein Geiger Geigy geisha gel gelable gelatin gelatine gelatinous geld gem geminate Gemini Geminid Gemma gemsbok gemstone gender gene genealogy genera general generate generic generosity generous Genesco genesis genetic Geneva Genevieve genial genie genii genital genitive genius Genoa genotype genre gent genteel gentian gentile gentle gentleman gentlemen gentlewoman gentlewomen gentry genuflect genuine genus geocentric geochemical geochemistry geochronology geode geodesic geodesy geodetic geoduck Geoffrey geographer geography geology geometer geometrician geophysical geophysics geopolitic George Georgetown Georgia geothermal Gerald Geraldine geranium Gerard Gerber gerbil Gerhard Gerhardt geriatric germ German germane Germanic germanium Germantown Germany germicidal germicide germinal germinate Gerry Gershwin Gertrude gerund gerundial gerundive gestalt Gestapo gestation gesticulate gestural gesture get getaway Getty Gettysburg geyser Ghana Ghanian ghastly Ghent gherkin ghetto ghost ghoul ghoulish Giacomo giant giantess gibberellin gibberish gibbet gibbon gibbous Gibbs gibby gibe giblet Gibraltar Gibson giddap giddy Gideon Gifford gift gig gigacycle gigahertz gigantic gigavolt gigawatt gigging giggle Gil gila gilbert Gilbertson Gilchrist gild Gilead Giles gill Gillespie Gillette Gilligan Gilmore gilt gimbal Gimbel gimlet gimpy gin Gina ginger gingham ginkgo ginmill Ginn Gino Ginsberg Ginsburg ginseng Giovanni giraffe gird girdle girl girlie girlish girt girth gist Giuliano Giuseppe give giveaway given giveth gizmo gizzard gjetost glacial glaciate glacier glacis glad gladden gladdy glade gladiator gladiolus Gladstone Gladys glamor glamorous glamour glance gland glandular glans glare Glasgow glass glassine glassware glasswort glassy Glaswegian glaucoma glaucous glaze gleam glean Gleason glee gleeful glen Glenda Glendale Glenn glib glibly Glidden glide glimmer glimpse glint glissade glisten glitch glitter gloat glob global globe globular globule globulin glom glomerular gloom gloomy Gloria Gloriana glorify glorious glory gloss glossary glossolalia glossy glottal glottis Gloucester glove glow glucose glue gluey glum glut glutamate glutamic glutamine gluten glutinous glutton gluttonous gluttony glyceride glycerin glycerinate glycerine glycerol glycine glycogen glycol glyph GM GMT gnarl gnash gnat gnaw gneiss gnome gnomon gnomonic gnostic GNP gnu go Goa goad goal goat gob gobble gobbledygook Gobi goblet god Goddard goddess godfather Godfrey godhead godkin godmother godparent godsend godson Godwin godwit goes Goethe Goff gog goggle Gogh gogo gold Goldberg golden goldeneye goldenrod goldenseal goldfinch goldfish Goldman goldsmith Goldstein Goldstine Goldwater Goleta golf Goliath golly gonad gonadotropic gondola gone gong Gonzales Gonzalez goober good goodbye Goode Goodman Goodrich goodwill Goodwin goody Goodyear goof goofy goose gooseberry GOP gopher Gordian Gordon gore Goren gorge gorgeous gorgon Gorham gorilla Gorky gorse Gorton gory gosh goshawk gosling gospel gossamer gossip got Gotham Gothic gotten Gottfried Goucher Gouda gouge Gould gourd gourmet gout govern governance governess governor gown GPO grab grace graceful gracious grackle grad gradate grade gradient gradual graduate Grady Graff graft graham grail grain grainy grammar grammarian grammatic gramophone granary grand grandchild grandchildren granddaughter grandeur grandfather grandiloquent grandiose grandma grandmother grandnephew grandniece grandpa grandparent grandson grandstand granite granitic granny granola grant grantee grantor granular granulate granule Granville grape grapefruit grapevine graph grapheme graphic graphite grapple grasp grass grasshopper grassland grassy grata grate grateful grater gratify gratis gratitude gratuitous gratuity grave gravel graven gravestone graveyard gravid gravitate gravitometer graviton gravy Grayson graze grease greasy great greatcoat greater grebe Grecian Greece greed greedy Greek green Greenbelt Greenberg Greenblatt Greenbriar Greene greenery Greenfield greengrocer greenhouse greenish Greenland Greensboro greensward greenware Greenwich greenwood Greer greet Greg gregarious Gregg Gregory gremlin grenade Grendel Grenoble grep Gresham Greta Gretchen grew grey greyhound greylag grid griddle gridiron gridlock grief grievance grieve grievous griffin Griffith grill grille grillwork grim grimace Grimaldi grime Grimm grimy grin grind grindstone grip gripe grippe grisly grist gristmill Griswold grit gritty grizzle grizzly groan groat grocer grocery groggy groin grommet groom groove grope grosbeak gross Grosset Grossman Grosvenor grotesque Groton grotto grottoes grouch grouchy ground groundhog groundsel groundskeep groundwork group groupoid grouse grout grove grovel Grover grow growl grown grownup growth grub grubby grudge gruesome gruff grumble Grumman grump grumpy grunt Gruyere gryphon g's GSA GU Guam guanidine guanine guano guarantee guaranteeing guaranty guard guardhouse Guardia guardian Guatemala gubernatorial Guelph Guenther guerdon guernsey guerrilla guess guesswork guest guffaw Guggenheim Guiana guidance guide guidebook guideline guidepost guignol guild guildhall guile Guilford guillemot guillotine guilt guilty guinea Guinevere guise guitar Gujarat Gujarati gulch gules gulf gull Gullah gullet gullible gully gulp gum gumbo gumdrop gummy gumption gumshoe gun Gunderson gunfight gunfire gunflint gunk gunky gunman gunmen gunnery gunny gunplay gunpoint gunpowder gunshot gunsling Gunther gurgle Gurkha guru Gus gush gusset gust Gustafson Gustav Gustave Gustavus gusto gusty gut Gutenberg Guthrie gutsy guttural guy Guyana guzzle Gwen Gwyn gym gymnasium gymnast gymnastic gymnosperm gyp gypsite gypsum gypsy gyrate gyrfalcon gyro gyrocompass gyroscope h ha Haag Haas habeas haberdashery Haberman Habib habit habitant habitat habitation habitual habituate hacienda hack hackberry Hackett hackle hackmatack hackney hacksaw had Hadamard Haddad haddock Hades Hadley hadn't Hadrian hadron hafnium Hagen Hager haggard haggis haggle hagiography Hagstrom Hague Hahn Haifa haiku hail hailstone hailstorm Haines hair haircut hairdo hairpin hairspring hairy Haiti Haitian Hal halcyon hale Haley half halfback halfhearted halftone halfway halibut halide Halifax halite hall hallelujah Halley hallmark hallow Halloween hallucinate hallucinatory hallucinogen hallucinogenic hallway halma halo halocarbon halogen Halpern Halsey Halstead halt halvah halve Halverson ham Hamal Hamburg hamburger Hamilton hamlet Hamlin hammerhead hammock Hammond hamper Hampshire Hampton hamster hamstrung Han Hancock hand handbag handbook handclasp handcuff Handel handful handgun handhold handicap handicapped handicapper handicapping handicraft handicraftsman handicraftsmen handiwork handkerchief handle handleable handlebar handline handmade handmaiden handout handpicked handprint handset handshake handsome handspike handstand handwaving handwrite handwritten handy handyman handymen Haney Hanford hang hangable hangar hangdog hangman hangmen hangnail hangout hangover hank Hankel Hanley Hanlon Hanna Hannah Hannibal Hanoi Hanover Hanoverian Hans Hansel Hansen hansom Hanson Hanukkah hap haphazard haploid haploidy haplology happen happenstance happy Hapsburg harangue harass Harbin harbinger Harcourt hard hardbake hardboard hardboiled hardbound hardcopy hardcover harden hardhat hardhearted Hardin hardscrabble hardtack hardtop hardware hardwire hardwood hardworking hardy hare harebrained harelip harem hark harken Harlan Harlem Harley harm harmful Harmon harmonic harmonica harmonious harmony harness Harold harp harpoon harpsichord harpy Harriet Harriman Harrington Harris Harrisburg Harrison harrow harry harsh harshen hart Hartford Hartley Hartman Harvard harvest harvestman Harvey has hash hashish hasn't hasp hassle hast haste hasten Hastings hasty hat hatch hatchery hatchet hatchway hate hateful hater Hatfield hath Hathaway hatred Hatteras Hattie Hattiesburg Haugen haughty haul haulage haunch haunt Hausa Hausdorff Havana have haven haven't haversack Havilland havoc haw Hawaii Hawaiian hawk Hawkins Hawley hawthorn Hawthorne hay Hayden Haydn Hayes hayfield Haynes haystack hayward hazard hazardous haze hazel hazelnut hazy he head headache headboard headcount headdress headland headlight headline headlong headman headmaster headmen headphone headquarter headroom headset headsman headsmen headstand headstone headstrong headwall headwater headway headwind heady heal Healey health healthful healthy Healy heap hear heard hearken hearsay hearse Hearst heart heartbeat heartbreak hearten heartfelt hearth heartland heartrending heartthrob hearty heat heater heath heathen heathenish Heathkit heave heaven heavenward heavy heavyset heavyweight Hebe hebephrenic Hebraic Hebrew Hebrides Hecate hecatomb heck heckle Heckman hectic hector Hecuba he'd hedge hedgehog hedonism hedonist heed heel heft hefty Hegelian hegemony Heidegger Heidelberg heifer heigh height heighten Heine Heinrich Heinz heir heiress Heisenberg held Helen Helena Helene Helga helical helicopter heliocentric heliotrope helium helix he'll hell hellbender hellebore Hellenic Hellespont hellfire hellgrammite hellish hello helm helmet Helmholtz helmsman helmsmen Helmut help helpful helpmate Helsinki Helvetica hem hematite Hemingway hemisphere hemispheric hemlock hemp Hempstead hen henbane hence henceforth henchman henchmen Henderson Hendrick Hendrickson henequen Henley henpeck Henri Henrietta henry hepatica hepatitis Hepburn heptane her Hera Heraclitus herald herb herbarium Herbert herbicide herbivore herbivorous Herculean Hercules herd herdsman herdsmen here hereabout hereafter hereby hereditary heredity Hereford herein hereinabove hereinafter hereinbelow hereof heresy heretic hereto heretofore hereunder hereunto herewith heritable heritage Herkimer Herman Hermann hermaphrodite hermaphroditic hermeneutic Hermes hermetic hermit hermitage Hermite hermitian Hermosa Hernandez hernia hero Herodotus heroes heroic heroin heroine heroism heron herpes herpetology Herr herringbone Herschel herself Hershel Hershey hertz Hertzog hesitant hesitate hesitater Hesperus Hess Hesse Hessian Hester heterocyclic heterodyne heterogamous heterogeneity heterogeneous heterosexual heterostructure heterozygous Hetman Hettie Hetty Heublein heuristic Heusen Heuser hew Hewett Hewitt Hewlett hewn hex hexachloride hexadecimal hexafluoride hexagon hexagonal hexameter hexane hey heyday hi Hiatt hiatus Hiawatha hibachi Hibbard hibernate Hibernia hick Hickey Hickman hickory hid hidalgo hidden hide hideaway hidebound hideous hideout hierarchal hierarchic hierarchy hieratic hieroglyphic Hieronymus hifalutin Higgins high highball highboy highfalutin highhanded highland highlight highroad hightail highway highwayman highwaymen hijack hike hilarious hilarity Hilbert Hildebrand hill hillbilly Hillcrest Hillel hillman hillmen hillock hillside hilltop hilly hilt Hilton hilum him Himalaya himself hind Hindi hindmost hindquarters hindrance hindsight Hindu Hindustan Hines hinge Hinman hint hinterland hip hippie hippo Hippocrates Hippocratic hippodrome hippopotamus hippy hipster Hiram hire hireling Hiroshi Hiroshima Hirsch hirsute his Hispanic hiss histamine histidine histochemic histochemistry histogram histology historian historic historiography history histrionic hit Hitachi hitch Hitchcock hither hitherto Hitler hive ho hoagie Hoagland hoagy hoar hoard hoarfrost hoarse hoax hob Hobart Hobbes hobble Hobbs hobby hobbyhorse hobo Hoboken hoc hock hockey hodge hodgepodge Hodges Hodgkin hoe Hoff Hoffman hog hogan hogging hoi Hokan Holbrook Holcomb hold holden holdover holdup hole holeable holiday Holland hollandaise holler Hollerith Hollingsworth Hollister hollow Holloway hollowware holly hollyhock Hollywood Holm Holman Holmdel Holmes holmium holocaust Holocene hologram holography Holst Holstein holster holt Holyoke holystone Hom homage home homebound homebuilder homebuilding homecoming homeland homemade homemake homeobox homeomorph homeomorphic homeopath homeopathic homeowner Homeric homesick homespun homestead homeward homework homicidal homicide homily hominid homo homogenate homogeneity homogeneous homologous homologue homology homomorphic homomorphism homonym homophobia homosexual homotopy homozygous homunculus Honda hondo Honduras hone honest honesty honey honeybee honeycomb honeydew honeymoon honeysuckle Honeywell hong honk honky Honolulu honoraria honorarium honorary honoree honorific Honshu hooch hood hoodlum hoof hoofmark hoofprint hook hookup hookworm hooligan hoop hoopla hoosegow Hoosier hoot Hoover hooves hop hope hopeful Hopi Hopkins Hopkinsian hopple hopscotch Horace Horatio horde horehound horizon horizontal hormonal hormone horn hornbeam hornblende Hornblower hornet hornmouth hornpipe horntail hornwort horny horology horoscope Horowitz horrendous horrible horrid horrify horror horse horseback horsedom horseflesh horsefly horsehair horseman horsemen horseplay horsepower horseshoe horsetail horsewoman horsewomen horticulture Horton Horus hose hosiery hospice hospitable hospital host hostage hostelry hostess hostile hostler hot hotbed hotbox hotel hotelman hotfoot hothead hothouse hotrod Hottentot Houdaille Houdini hough Houghton hound hour hourglass house houseboat housebreak housebroken housefly household housekeep housemate housewife housewives housework Houston hove hovel hover how Howard howdy Howe Howell however howl howsoever howsomever hoy hoyden hoydenish Hoyt Hrothgar h's hub Hubbard Hubbell hubbub hubby hubcap Huber Hubert hubris huck huckleberry huckster huddle Hudson hue huff Huffman hug huge hugging Huggins Hugh Hughes Hugo huh hulk hull hullaballoo hullabaloo hum human humane humanitarian humble Humboldt humdrum humerus humid humidify humidistat humiliate humility Hummel hummingbird hummock humorous hump humpback Humphrey humpty humus Hun hunch hunchback hundred hundredfold hundredth hung Hungarian Hungary hungry hunk hunt Huntington Huntley Huntsville Hurd hurdle hurl hurley Huron hurrah hurray hurricane hurry Hurst hurt hurtle hurty Hurwitz husband husbandman husbandmen husbandry hush husky hustle Huston hut hutch Hutchins Hutchinson Hutchison Huxley Huxtable huzzah hyacinth Hyades hyaline Hyannis hybrid Hyde hydra hydrangea hydrant hydrate hydraulic hydride hydro hydrocarbon hydrochemistry hydrochloric hydrochloride hydrocyanic hydrodynamic hydroelectric hydrofluoric hydrogen hydrogenate hydrology hydrolysis hydrometer hydronium hydrophilic hydrophobia hydrophobic hydrophone hydrosphere hydrostatic hydrothermal hydrous hydroxide hydroxy hydroxyl hydroxylate hyena hygiene hygrometer hygroscopic hying Hyman hymen hymn hymnal hyper hyperbola hyperbolic hyperboloid hyperboloidal hypertensive hyperthermia hyphen hyphenate hypnosis hypnotic hypoactive hypochlorite hypochlorous hypocrisy hypocrite hypocritic hypocycloid hypodermic hypophyseal hypotenuse hypothalamic hypothalamus hypothalmus hypothermia hypotheses hypothesis hypothetic hypothyroid hypotonic hysterectomy hysteresis hysteria hysteric hysteron i IA iambic Ian Iberia ibex ibid ibis IBM Ibn Icarus ICC ice iceberg icebox icecap iceland Icelandic iceman ichneumon icicle icky icon iconoclasm iconoclast iconography icosahedra icosahedral icosahedron icy I'd id Ida Idaho idea ideal ideate idempotent identical identify identity ideogram ideolect ideology idetic idiocy idiom idiomatic idiosyncrasy idiosyncratic idiot idiotic idle idly idol idolatry idyll idyllic i.e IEEE if iffy Ifni igloo igneous ignite ignition ignoble ignominious ignominy ignoramus ignorant ignore Igor ii iii Ike IL ileum iliac Iliad I'll ill illegal illegible illegitimacy illegitimate illicit illimitable Illinois illiteracy illiterate illogic illume illuminate illumine illusion illusionary illusive illusory illustrate illustrious Ilona Ilyushin I'm image imagen imagery imaginary imaginate imagine imbalance imbecile imbibe Imbrium imbroglio imbrue imbue imitable imitate immaculate immanent immaterial immature immeasurable immediacy immediate immemorial immense immerse immersion immigrant immigrate imminent immiscible immobile immobility immoderate immodest immodesty immoral immortal immovable immune immunoelectrophoresis immunology immutable imp impact impair impale impalpable impart impartation impartial impassable impasse impassion impassive impatient impeach impeccable impedance impede impediment impel impelled impeller impelling impend impenetrable imperate imperceivable imperceptible imperfect imperial imperil imperious imperishable impermeable impermissible impersonal impersonate impertinent imperturbable impervious impetuous impetus impiety impinge impious impish implacable implant implantation implausible implement implementation implementer implementor implicant implicate implicit implore impolite impolitic imponderable import important importation importunate importune impose imposition impossible impost imposture impotent impound impoverish impracticable impractical imprecate imprecise impregnable impregnate impresario impress impressible impression impressive imprimatur imprint imprison improbable impromptu improper impropriety improve improvident improvisate improvise imprudent impudent impugn impulse impulsive impunity impure imputation impute in inability inaccessible inaccuracy inaccurate inaction inactivate inactive inadequacy inadequate inadmissible inadvertent inadvisable inalienable inalterable inane inanimate inappeasable inapplicable inappreciable inapproachable inappropriate inapt inaptitude inarticulate inasmuch inattention inattentive inaudible inaugural inaugurate inauspicious inauthentic inboard inborn inbred inbreed Inc Inca incalculable incandescent incant incantation incapable incapacitate incapacity incarcerate incarnate incautious incendiary incense incentive inception inceptor incessant incest incestuous inch inchoate inchworm incident incidental incinerate incipient incise incisive incisor incite inclement inclination incline inclose include inclusion inclusive incognito incoherent incombustible income incommensurable incommensurate incommunicable incommutable incomparable incompatible incompetent incomplete incompletion incomprehensible incomprehension incompressible incomputable inconceivable inconclusive incondensable incongruity incongruous inconsequential inconsiderable inconsiderate inconsistent inconsolable inconspicuous inconstant incontestable incontrollable incontrovertible inconvenient inconvertible incorporable incorporate incorrect incorrigible incorruptible increasable increase incredible incredulity incredulous increment incriminate incubate incubi incubus inculcate inculpable incumbent incur incurred incurrer incurring incursion indebted indecent indecipherable indecision indecisive indecomposable indeed indefatigable indefensible indefinable indefinite indelible indelicate indemnity indent indentation indenture independent indescribable indestructible indeterminable indeterminacy indeterminate index India Indiana Indianapolis indicant indicate indices indict Indies indifferent indigene indigenous indigent indigestible indigestion indignant indignation indignity indigo Indira indirect indiscernible indiscoverable indiscreet indiscretion indiscriminate indispensable indispose indisposition indisputable indissoluble indistinct indistinguishable indium individual individuate indivisible Indo Indochina Indochinese indoctrinate Indoeuropean indolent indomitable Indonesia indoor indorse indubitable induce inducible induct inductance inductee inductor indulge indulgent Indus industrial industrious industry indwell indy inebriate inedible ineducable ineffable ineffective ineffectual inefficacy inefficient inelastic inelegant ineligible ineluctable inept inequality inequitable inequity inequivalent ineradicable inert inertance inertia inertial inescapable inessential inestimable inevitable inexact inexcusable inexhaustible inexorable inexpedient inexpensive inexperience inexpert inexpiable inexplainable inexplicable inexplicit inexpressible inextinguishable inextricable infallible infamous infamy infant infanticide infantile infantry infantryman infantrymen infarct infatuate infeasible infect infectious infelicitous infelicity infer inference inferential inferior infernal inferno inferred inferring infertile infest infestation infidel infield infighting infiltrate infima infimum infinite infinitesimal infinitive infinitude infinitum infinity infirm infirmary infix inflame inflammable inflammation inflammatory inflate inflater inflationary inflect inflexible inflict inflorescent inflow influence influent influential influenza influx info inform informal informant information informative infra infract infrared infrastructure infrequent infringe infuriate infuse infusible infusion infusoria ingather ingenious ingenuity ingenuous Ingersoll ingest ingestible ingestion inglorious ingot ingrained Ingram ingrate ingratiate ingratitude ingredient ingrown inhabit inhabitant inhabitation inhalation inhale inharmonious inhere inherent inherit inheritance inheritor inhibit inhibition inhibitor inhibitory inholding inhomogeneity inhomogeneous inhospitable inhuman inhumane inimical inimitable iniquitous iniquity initial initiate inject injudicious Injun injunct injure injurious injury injustice ink inkling inlaid inland inlay inlet Inman inmate inn innard innate innermost innkeeper innocent innocuous innovate innuendo innumerable inoculate inoperable inoperative inopportune inordinate inorganic input inputting inquest inquire inquiry inquisition inquisitive inquisitor inroad insane insatiable inscribe inscription inscrutable insect insecticide insectivore insectivorous insecure inseminate insensible insensitive inseparable insert inset inshore inside insidious insight insightful insignia insignificant insincere insinuate insipid insist insistent insofar insolate insolent insoluble insolvable insolvent insomnia insomniac insouciant inspect inspector inspiration inspire instable install installation instant instantaneous instantiate instar instead instep instigate instill instillation instinct instinctual institute institution instruct instructor instrument instrumentation insubordinate insubstantial insufferable insufficient insular insulate insulin insult insuperable insupportable insuppressible insurance insure insurgent insurmountable insurrect intact intake intangible integer integrable integral integrand integrate integrity integument intellect intellectual intelligent intelligentsia intelligible intemperance intemperate intend intendant intense intensify intensive intent intention inter intercalate intercept interception interceptor intercom interdict interdigitate interest interfere interference interferometer interferon interim interior interject interlude intermediary intermit intermittent intern internal internescine Interpol interpolate interpolatory interpret interpretation interpretive interregnum interrogate interrogatory interrupt interruptible interruption intersect intersperse interstice interstitial interval intervene intervenor intervention interviewee intestate intestinal intestine intimacy intimal intimate intimater intimidate into intolerable intolerant intonate intone intoxicant intoxicate intra intractable intransigent intransitive intrepid intricacy intricate intrigue intrinsic introduce introduction introductory introit introject introspect introversion introvert intrude intrusion intrusive intuit intuition intuitive inundate inure invade invalid invalidate invaluable invariable invariant invasion invasive invective inveigh inveigle invent invention inventive inventor inventory Inverness inverse inversion invert invertebrate invertible invest investigate investigatory investor inveterate inviable invidious invigorate invincible inviolable inviolate invisible invitation invite invitee invocable invocate invoice invoke involuntary involute involution involutorial involve invulnerable inward Io iodate iodide iodinate iodine ion ionic ionosphere ionospheric iota Iowa ipecac ipsilateral ipso IQ IR Ira Iran Iranian Iraq Iraqi irate ire Ireland Irene iridium iris Irish Irishman Irishmen irk irksome Irma iron ironbound ironic ironside ironstone ironwood irony Iroquois irradiate irrational Irrawaddy irreclaimable irreconcilable irreconciliable irrecoverable irredeemable irredentism irredentist irreducible irrefutable irregular irrelevant irremediable irremovable irreparable irreplaceable irrepressible irreproachable irreproducible irresistible irresolute irresolution irresolvable irrespective irresponsible irretrievable irreverent irreversible irrevocable irrigate irritable irritant irritate irruption IRS Irvin Irvine Irving Irwin i's is Isaac Isaacson Isabel Isabella Isadore Isaiah isentropic Isfahan Ising isinglass Isis Islam Islamabad Islamic island isle islet isn't isochronal isochronous isocline isolate Isolde isomer isomorph isomorphic isopleth isotherm isotope isotropy Israel Israeli Israelite issuant issue Istanbul isthmus Istvan it Italian italic Italy itch itchy it'd item iterate Ithaca itinerant itinerary it'll Ito itself IT&T ITT iv Ivan Ivanhoe I've Iverson ivory ivy ix Izvestia j jab Jablonsky jack jackal jackanapes jackass jackboot jackdaw jacket Jackie jackknife Jackman jackpot Jackson Jacksonville Jacky JACM Jacob Jacobean Jacobi Jacobian Jacobite Jacobsen Jacobson Jacobus Jacqueline Jacques jade Jaeger jag jagging jaguar Jaime Jakarta jake jalopy jam Jamaica jamboree James Jamestown Jan Jane Janeiro Janet jangle Janice janissary janitor janitorial Janos Jansenist January Janus Japan Japanese jar jargon Jarvin Jason jasper jaundice jaunty Java java javelin jaw jawbone jay jazz jazzy jealous jealousy jean Jeannie Jed jeep Jeff Jefferson Jeffrey Jehovah jejune jejunum jelly jellyfish Jenkins Jennie Jennifer Jennings jenny Jensen jeopard jeopardy Jeremiah Jeremy Jeres Jericho jerk jerky Jeroboam Jerome jerry jersey Jerusalem jess Jesse Jessica Jessie jest Jesuit Jesus jet jetliner jettison Jew jewel Jewell jewelry Jewett Jewish jibe jiffy jig jigging jiggle jigsaw Jill jilt Jim Jimenez Jimmie jimmy jingle jinx jitter jitterbug jittery jive Jo Joan Joanna Joanne Joaquin job jobholder jock jockey jockstrap jocose jocular jocund Joe Joel joey jog jogging joggle Johann Johanna Johannes Johannesburg Johansen Johanson John Johnny Johnsen Johnson Johnston Johnstown join joint joke Joliet Jolla jolly jolt Jon Jonas Jonathan Jones jonquil Jordan Jorge Jorgensen Jorgenson Jose Josef Joseph Josephine Josephson Josephus Joshua Josiah joss jostle jot joule jounce journal journalese journey journeyman journeymen joust Jovanovich Jove jovial Jovian jowl jowly joy Joyce joyful joyous joyride joystick Jr j's Juan Juanita jubilant jubilate Judaica Judaism Judas Judd Jude judge judicable judicatory judicature judicial judiciary judicious Judith judo Judson Judy jug jugate juggernaut jugging juggle Jugoslavia juice juicy juju jujube juke jukebox Jukes julep Jules Julia Julie Juliet Julio Julius July jumble jumbo jump jumpy junco junction junctor juncture June Juneau Jung Jungian jungle junior juniper junk junkerdom junketeer junky Juno junta Jupiter Jura Jurassic jure juridic jurisdiction jurisprudent jurisprudential juror jury just justice justiciable justify Justine Justinian jut jute Jutish Jutland juvenile juxtapose juxtaposition k Kabuki Kabul Kaddish Kafka Kafkaesque Kahn kaiser Kajar Kalamazoo kale kaleidescope kaleidoscope kalmia Kalmuk Kamchatka kamikaze Kampala Kampuchea Kane kangaroo Kankakee Kannada Kansas Kant kaolin kaolinite Kaplan kapok kappa Karachi Karamazov karate Karen Karl karma Karol Karp karyatid Kashmir Kaskaskia Kate Katharine Katherine Kathleen Kathy Katie Katmandu Katowice katydid Katz Kauffman Kaufman kava Kay kayo kazoo Keaton Keats keddah keel keelson keen Keenan keep keeshond keg Keith Keller Kelley Kellogg kelly kelp Kelsey Kelvin Kemp ken Kendall Kennan Kennecott Kennedy kennel Kenneth Kenney keno Kensington Kent Kenton Kentucky Kenya Kenyon Kepler kept kerchief Kermit kern kernel Kernighan kerosene Kerouac Kerr kerry kerygma Kessler kestrel ketch ketchup keto ketone ketosis Kettering kettle Kevin key keyboard Keyes keyhole Keynes Keynesian keynote keypunch keystone keyword khaki khan Khartoum Khmer Khrushchev kibbutzim kibitz kick kickback kickoff kid Kidde kiddie kidnap kidnapped kidnapping kidney Kieffer Kiev Kiewit Kigali Kikuyu Kilgore Kilimanjaro kill killdeer killjoy kilohm Kim Kimball Kimberly kimono kin kind kindergarten kindle kindred kinematic kinesic kinetic king kingbird kingdom kingfisher kinglet kingpin Kingsbury Kingsley Kingston kink kinkajou kinky Kinney Kinshasha kinsman kinsmen kiosk Kiowa Kipling Kirby Kirchner Kirchoff kirk Kirkland Kirkpatrick Kirov kiss kit Kitakyushu kitchen kitchenette kite kitten kittenish kittle kitty kiva kivu Kiwanis kiwi Klan Klaus klaxon kleenex Klein Kline Klux klystron knack Knapp knapsack Knauer knead knee kneecap kneel knelt knew knick Knickerbocker knife knight Knightsbridge knit knives knob knobby knock knockdown knockout knoll Knossos knot Knott knotty know knoweth knowhow knowledge knowledgeable Knowles Knowlton known Knox Knoxville knuckle knuckleball Knudsen Knudson knurl Knutsen Knutson koala Kobayashi Koch Kochab Kodachrome kodak Kodiak Koenig Koenigsberg kohlrabi koinonia kola kolkhoz kombu Kong Konrad Koppers Koran Korea kosher Kovacs Kowalewski Kowalski Kowloon kraft Krakatoa Krakow Kramer Krause kraut Krebs Kremlin Kresge Krieger krill Krishna Kristin Kronecker Krueger Kruger krummholz Kruse krypton KS k's Ku kudo kudzu Kuhn kulak Kumar kumquat Kurd Kurt Kuwait kwashiorkor KY Kyle Kyoto l la lab Laban label labia labial labile lability labium laboratory laborious labour Labrador labradorite labyrinth lac lace lacerate Lacerta lacewing Lachesis lachrymose lack lackadaisic lackey laconic lacquer lacrosse lactate lactose lacuna lacunae lacustrine lacy lad laden ladle lady ladybird ladybug ladyfern Lafayette lag lager lagging lagoon Lagos Lagrange Lagrangian Laguerre Lahore laid Laidlaw lain lair laissez laity lake Lakehurst lakeside lakh lam lama Lamar Lamarck lamb lambda lambert lame lamellar lament lamentation laminar laminate lamp lampblack lamplight lampoon lamprey Lana Lancashire Lancaster lance Lancelot lancet land landau landfill landhold Landis landlady landlocked landlord landlubber landmark landmass landowner landowning landscape landslide lane Lang Lange Langley Langmuir language languid languish langur Lanka lanky Lansing lantern lanthanide lanthanum Lao Laocoon Laos Laotian lap lapel lapelled lapidary Laplace lappet lapse Laramie larceny larch lard Laredo Lares large largemouth largesse lariat lark Larkin larkspur Larry Lars Larsen Larson larva larvae larval laryngeal larynges larynx lascar lascivious lase lash lass lasso last Laszlo latch late latent later latera lateral Lateran laterite latex lath lathe Lathrop Latin Latinate latitude latitudinal latitudinary Latrobe latter lattice latus Latvia laud laudanum laudatory Lauderdale Laue laugh laughingstock Laughlin laughter launch launder laundry laura laureate laurel Lauren Laurent Laurentian Laurie Lausanne lava lavabo lavatory lavender lavish Lavoisier law lawbreaker lawbreaking lawful lawgiver lawgiving lawmake lawman lawmen lawn Lawrence lawrencium Lawson lawsuit lawyer lax laxative lay layette layman laymen layoff layout layperson Layton layup Lazarus laze lazy lazybones lea leach leachate lead leaden leadeth leadsman leadsmen leaf leaflet leafy league leak leakage leaky lean Leander leap leapfrog leapt Lear learn lease leasehold leash least leather leatherback leatherneck leatherwork leathery leave leaven Leavenworth Lebanese Lebanon lebensraum Lebesgue lecher lechery lectern lectionary lecture led ledge lee leech Leeds leek leer leery Leeuwenhoek leeward leeway left leftmost leftover leftward lefty leg legacy legal legate legatee legato legend legendary Legendre legerdemain legging leggy leghorn legible legion legislate legislature legitimacy legitimate legume leguminous Lehigh Lehman Leibniz Leigh Leighton Leila leisure leitmotif leitmotiv Leland lemma lemming lemon lemonade Lemuel lemur Len Lena lend length lengthen lengthwise lengthy lenient Lenin Leningrad Lennox Lenny Lenore lens lent Lenten lenticular lentil Leo Leon Leona Leonard Leonardo Leone Leonid leonine leopard Leopold leper lepidolite lepidopterist leprosy Leroy Lesbian lesion Leslie Lesotho less lessee lessen lesson lessor lest Lester let lethal lethargy Lethe Letitia letterhead letterman lettermen lettuce leucine Lev levee level lever leverage Levi leviathan Levin Levine Levis levitate Leviticus Levitt levity levulose levy lew lewd lewis lexical lexicographer lexicography lexicon Lexington Leyden liable liaison liana liar libation libel libelous liberal liberate Liberia libertarian libertine liberty libidinous libido Libra librarian library librate librettist libretto Libreville Libya lice licensable licensee licensor licentious lichen lick licorice lid lie Lieberman Liechtenstein lien lieu lieutenant life lifeblood lifeboat lifeguard lifelong lifespan lifestyle lifetime LIFO lift ligament ligand ligature Ligget Liggett light lighten lightface lightfooted lighthearted lighthouse lightning lightproof lightweight lignite lignum like likeable liken likewise Lila lilac Lilian Lillian Lilliputian Lilly lilt lily lim Lima limb limbic limbo lime limelight limerick limestone limit limitate limnology limousine limp limpet limpid limpkin Lin linchpin Lincoln Lind Linda Lindberg Lindbergh linden Lindholm Lindquist Lindsay Lindsey Lindstrom line lineage lineal linear linebacker lineman linemen linen lineprinter lineup linger lingerie lingo lingua lingual linguist liniment link linkage Linnaeus linoleic linoleum Linotype linseed lint Linton Linus lion Lionel lioness lip lipid Lippincott Lipschitz Lipscomb lipstick Lipton liquefaction liquefy liqueur liquid liquidate liquor Lisa Lisbon Lise lisle lisp Lissajous list listen lit litany literacy literal literary literate literature lithe lithic lithium lithograph lithography lithology lithosphere lithospheric Lithuania litigant litigate litigious litmus litterbug littermate little littleneck Littleton Litton littoral liturgic liturgy live liven Livermore Liverpool Liverpudlian liverwort livery livestock liveth livid Livingston livre Liz lizard Lizzie llama Lloyd lo load loaf loam loamy loan loanword loath loathe loathsome loaves lob lobar lobby lobe Lobelia loblolly lobo lobscouse lobster lobular lobule local locale locate loch loci lock Locke Lockhart Lockheed Lockian locknut lockout locksmith lockup Lockwood locomote locomotion locomotive locomotor locomotory locoweed locus locust locutor lodestone lodge lodgepole Lodowick Loeb l'oeil loess loft lofty log Logan logarithm logarithmic loge loggerhead logging logic logician login logistic logjam loin loincloth Loire Lois loiter Loki Lola loll lollipop lolly Lomb Lombard Lombardy Lome London lone lonesome long longevity Longfellow longhand longhorn longish longitude longitudinal longleg longstanding longtime longue longwinded look lookout lookup loom Loomis loon loop loophole loose looseleaf loosen loosestrife loot lop lope Lopez lopseed lopsided loquacious loquacity loquat lord lordosis lore Lorelei Loren Lorenz Lorinda loris Lorraine lorry losable lose loss lossy lost lot lotion Lotte lottery Lottie lotus Lou loud loudspeaker loudspeaking Louis Louisa Louise Louisiana Louisville lounge Lounsbury Lourdes louse lousewort lousy Louvre love lovebird Lovelace Loveland lovelorn low lowboy lowdown Lowe Lowell lowland Lowry lox loy loyal loyalty lozenge l's LSI LTV Lubbock Lubell lubricant lubricate lubricious lubricity Lucas Lucerne Lucia Lucian lucid Lucifer Lucille Lucius luck lucky lucrative lucre Lucretia Lucretius lucy ludicrous Ludlow Ludwig Lufthansa Luftwaffe lug luge luger luggage lugging lugubrious Luis luke lukewarm lull lullaby lulu lumbago lumbar lumber lumberjack lumberman lumbermen lumen luminance luminary luminescent luminosity luminous lummox lump lumpish Lumpur lumpy lunacy lunar lunary lunate lunatic lunch luncheon lunchroom lunchtime Lund Lundberg Lundquist lung lunge lupine Lura lurch lure lurid lurk Lusaka luscious lush lust lustful lustrous lusty lutanist lute lutetium Luther Lutheran Lutz lux luxe Luxembourg luxuriant luxuriate luxurious luxury Luzon L'vov lycee lycopodium Lydia lye lying Lykes Lyle Lyman lymph lymphocyte lymphoma lynch Lynchburg Lynn lynx Lyon Lyra lyre lyrebird lyric Lysenko lysergic lysine m ma Mabel Mac macabre Macadamia macaque MacArthur Macassar macaw Macbeth MacDonald MacDougall mace Macedon Macedonia macerate MacGregor Mach machete Machiavelli machination machine machinery machismo macho macintosh mack MacKenzie mackerel Mackey Mackinac Mackinaw mackintosh MacMahon MacMillan Macon macro macromolecular macromolecule macrophage macroscopic macrostructure mad Madagascar madam Madame madcap madden Maddox made Madeira Madeleine Madeline madhouse Madhya Madison madman madmen Madonna Madras Madrid madrigal Madsen madstone Mae maelstrom maestro Mafia Mafioso magazine Magdalene Magellanic magenta Maggie maggot maggoty magi magic magician magisterial magistrate magma magna magnanimity magnanimous magnate magnesia magnesite magnesium magnet magnetic magnetite magneto magnetron magnificent magnify magnitude magnolia magnum Magnuson Magog magpie Magruder maharaja Maharashtra Mahayana Mahayanist mahogany Mahoney maid maiden maidenhair maidservant Maier mail mailbox mailman mailmen maim main Maine mainframe mainland mainline mainstay mainstream maintain maintenance maitre majestic majesty major Majorca make makeshift makeup Malabar maladapt maladaptive maladjust maladroit malady Malagasy malaise malaprop malaria malarial Malawi Malay Malaysia Malcolm malconduct malcontent Malden maldistribute Maldive male maledict malevolent malfeasant malformation malformed malfunction Mali malice malicious malign malignant mall mallard malleable mallet Mallory mallow malnourished malnutrition malocclusion Malone Maloney malposed malpractice Malraux malt Malta Maltese Malthus Malthusian Malton maltose maltreat maltster mambo mamma mammal mammalian mammary mammoth man mana manage manageable managerial Managua Manama manatee Manchester Manchuria mandamus mandarin mandate mandatory mandible mandrake mandrel mandrill mane maneuver Manfred manganese mange mangel mangle mango mangrove mangy Manhattan manhole mania maniac maniacal manic manicure manifest manifestation manifesto manifold manikin Manila manioc manipulable manipulate Manitoba mankind Manley Mann manna mannequin mannitol manometer manor manpower manse manservant Mansfield mansion manslaughter mantel mantelpiece mantic mantis mantissa mantle mantrap manual Manuel manufacture manumission manumit manumitted manure manuscript Manville many manzanita Mao Maori map maple mar marathon maraud marble Marc Marceau Marcel Marcello march Marcia Marco Marcus Marcy Mardi mare Margaret margarine Margery margin marginal marginalia Margo Marguerite maria Marianne Marie Marietta marigold marijuana Marilyn marimba Marin marina marinade marinate marine Marino Mario Marion marionette marital maritime marjoram Marjorie Marjory mark market marketeer marketplace marketwise Markham Markov Markovian marksman marksmen Marlboro Marlborough Marlene marlin Marlowe marmalade marmoset marmot maroon marque marquee marquess Marquette marquis marriage marriageable Marrietta Marriott marrow marrowbone marry Marseilles marsh Marsha marshal Marshall marshland marshmallow marshy marsupial mart marten martensite Martha martial Martian martin Martinez martingale martini Martinique Martinson Marty martyr martyrdom marvel marvelous Marvin Marx Mary Maryland marzipan mascara masculine maser Maseru mash mask masochism masochist mason Masonic Masonite masonry masque masquerade mass Massachusetts massacre massage masseur Massey massif massive mast masterful mastermind masterpiece mastery mastic mastiff mastodon mat match matchbook matchmake mate Mateo mater material materiel maternal maternity math mathematic mathematician Mathews Mathewson Mathias Mathieu Matilda matinal matinee matins Matisse matriarch matriarchal matriarchy matrices matriculate matrilineal matrimonial matrimony matrix matroid matron Matson Matsumoto matte Matthew mattock mattress Mattson maturate mature maudlin maul Maureen Maurice Mauricio Maurine Mauritania Mauritius mausoleum mauve maverick Mavis maw mawkish Mawr max maxim maxima maximal Maximilian maximum Maxine maxwell Maxwellian may Maya mayapple maybe Mayer Mayfair Mayflower mayfly mayhem Maynard Mayo mayonnaise mayor mayoral mayst Mazda maze mazurka MBA Mbabane McAdams McAllister McBride McCabe McCall McCallum McCann McCarthy McCarty McCauley McClain McClellan McClure McCluskey McConnel McConnell McCormick McCoy McCracken McCullough McDaniel McDermott McDonald McDonnell McDougall McDowell McElroy McFadden McFarland McGee McGill McGinnis McGovern McGowan McGrath McGraw McGregor McGuire McHugh McIntosh McIntyre McKay McKee McKenna McKenzie McKeon McKesson McKinley McKinney McKnight McLaughlin McLean McLeod McMahon McMillan McMullen McNally McNaughton McNeil McNulty McPherson MD me mead meadow meadowland meadowlark meadowsweet meager meal mealtime mealy mean meander meaningful meant meantime meanwhile measle measure meat meaty Mecca mechanic mechanism mechanist mecum medal medallion meddle Medea Medford media medial median mediate medic medicate Medici medicinal medicine medico mediocre mediocrity meditate Mediterranean medium medlar medley Medusa meek meet meetinghouse Meg megabit megabyte megahertz megalomania megalomaniac megalopolis megaton megavolt megawatt megaword megohm Meier Meiji meiosis Meistersinger Mekong Mel melamine melancholy Melanesia melange Melanie melanin melanism melanoma Melbourne Melcher meld melee Melinda meliorate Melissa Mellon mellow melodic melodious melodrama melodramatic melody melon Melpomene melt meltdown Melville Melvin member membrane memento memo memoir memorabilia memorable memoranda memorandum memorial memory Memphis men menace menagerie menarche mend mendacious mendacity Mendel mendelevium Mendelian Mendelssohn Menelaus menfolk menhaden menial meningitis meniscus Menlo Mennonite menopausal menopause Menorca menstrual menstruate mensurable mensuration mental mention mentor menu Menzies meow Mephistopheles mercantile Mercator Mercedes mercenary mercer merchandise merchant merciful Merck mercurial mercuric mercury mercy mere Meredith meretricious merganser merge meridian meridional meringue merit meritorious Merle merlin mermaid Merriam Merrill Merrimack merriment Merritt merry merrymake Mervin mesa mescal mescaline mesenteric mesh mesmeric mesoderm meson Mesopotamia Mesozoic mesquite mess message messenger Messiah messiah messianic messieurs Messrs messy mestizo met metabole metabolic metabolism metabolite metal metallic metalliferous metallography metalloid metallurgic metallurgist metallurgy metalwork metamorphic metamorphism metamorphose metamorphosis metaphor metaphoric metazoa metazoan Metcalf mete meteor meteoric meteorite meteoritic meteorology meter methacrylate methane methanol methionine method methodic methodology Methuen Methuselah methyl methylene meticulous metier metonymy metric metro metronome metropolis metropolitan mettle mettlesome Metzler mew Mexican Mexico Meyer mezzanine mezzo mi Miami miaow miasma miasmal mica mice Michael Michaelangelo Michel Michelangelo Michele Michelin Michelson michigan Mickelson Mickey Micky micro microbe microbial microcosm micrography micron Micronesia microscopy mid Midas midband midday middle Middlebury middleman middlemen Middlesex Middleton Middletown middleweight midge midget midland midmorn midnight midpoint midrange midscale midsection midshipman midshipmen midspan midst midstream midterm midway midweek Midwest Midwestern midwife midwinter midwives midyear mien miff mig might mightn't mighty mignon migrant migrate migratory Miguel mike mila Milan milch mild mildew Mildred mile mileage Miles milestone milieu militant militarism militarist military militate militia militiaman militiamen milk milkweed milky mill Millard millenarian millenia millennia millennium millet Millie Millikan millinery million millionaire millionfold millionth millipede millstone milord milt Milton Miltonic Milwaukee mimeograph mimesis mimetic Mimi mimic mimicked mimicking mimicry mimosa min minaret mince mincemeat mind Mindanao mindful mine minefield mineral mineralogy Minerva minestrone minesweeper mingle mini miniature minicomputer minim minima minimal minimax minimum minion ministerial ministry mink Minneapolis Minnesota Minnie minnow Minoan minor Minos minot Minotaur Minsk Minsky minstrel minstrelsy mint minuend minuet minus minuscule minute minuteman minutemen minutiae Miocene Mira miracle miraculous mirage Miranda mire Mirfak Miriam mirror mirth misanthrope misanthropic miscegenation miscellaneous miscellany mischievous miscible miscreant miser misery misnomer misogynist misogyny miss misshapen missile mission missionary Mississippi Mississippian missive Missoula Missouri Missy mist mistletoe mistress misty MIT Mitchell mite miterwort mitigate mitochondria mitosis mitral mitre mitt mitten mix mixture mixup Mizar MN mnemonic MO moan moat mob mobcap Mobil mobile mobility mobster moccasin mocha mock mockernut mockery mockingbird mockup modal mode model modem moderate modern modest Modesto modesty modicum modify modish modular modulate module moduli modulo modulus Moe Moen Mogadiscio Moghul Mohammed Mohammedan Mohawk Mohr moiety Moines moire Moiseyev moist moisten moisture molal molar molasses mold Moldavia moldboard moldy mole molecular molecule molehill molest Moliere Moline Moll Mollie mollify mollusk Molly mollycoddle Moloch molt molten Moluccas molybdate molybdenite molybdenum moment momenta momentary momentous momentum mommy Mona Monaco monad monadic monarch monarchic monarchy Monash monastery monastic monaural Monday monel monetarism monetary money moneymake moneywort Mongolia mongoose monic Monica monies monitor monitory monk monkey monkeyflower monkish Monmouth Monoceros monochromator monocular monogamous monogamy monolith monologist monologue monomer monomeric monomial Monongahela monopoly monotonous monotreme monoxide Monroe Monrovia Monsanto monsieur monsoon monster monstrosity monstrous Mont montage Montague Montana Montclair monte Montenegrin Monterey Monteverdi Montevideo Montgomery month Monticello Montmartre Montpelier Montrachet Montreal Monty monument moo mooch mood moody moon moonbeam Mooney moonlight moonlit moor Moore Moorish moose moot mop moraine moral morale Moran morass moratorium Moravia morbid more morel Moreland moreover Moresby Morgan morgen morgue Moriarty moribund Morley Mormon morn Moroccan Morocco moron morose morpheme morphemic morphine morphism morphology morphophonemic Morrill morris Morrison Morrissey Morristown morrow Morse morsel mort mortal mortar mortem mortgage mortgagee mortgagor mortician mortify mortise Morton mortuary mosaic Moscow Moser Moses Moslem mosque mosquito mosquitoes moss mossy most mot motel motet moth mother motherland motif motion motivate motive motley motor motorcade motorcar motorcycle Motorola mottle motto mould Moulton mound mount mountain mountaineer mountainous mountainside mountaintop mountebank mourn mournful mouse mousse moustache mousy mouth mouthful mouthpart mouthpiece Mouton move movie mow Moyer Mozart mozzarella MPH Mr Mrs Ms m's Mt mu much mucilage muck mucosa mucus mud Mudd muddle muddlehead muddy mudguard mudhole mudsling Mueller Muenster muezzin muff muffin muffle mug mugging muggy mugho Muir Mukden mukluk mulatto mulberry mulch mulct mule mulish mull mullah mullein Mullen mulligan mulligatawny mullion multi Multics multifarious multinomial multiple multiplet multiplex multiplexor multiplicand multiplication multiplicative multiplicity multitude multitudinous mum mumble Mumford mummify mummy munch Muncie mundane mung Munich municipal munificent munition Munson muon Muong mural murder murderous muriatic Muriel murk murky murmur Murphy Murray murre Muscat muscle Muscovite Muscovy muscular musculature muse museum mush mushroom mushy music musicale musician musicology musk Muskegon muskellunge musket muskmelon muskox muskoxen muskrat musky muslim muslin mussel must mustache mustachio mustang mustard mustn't musty mutagen mutandis mutant mutate mutatis mute mutilate mutineer mutiny mutt mutter mutton mutual mutuel Muzak Muzo muzzle my Mycenae Mycenaean mycobacteria mycology mycoplasma mycorrhiza myel myeline myeloid Myers mylar mynah Mynheer myocardial myocardium myofibril myoglobin myopia myopic myosin Myra myriad Myron myrrh myrtle myself Mysore mysterious mystery mystic mystify mystique myth mythic mythology n NAACP nab Nabisco Nadine nadir nag Nagasaki nagging Nagoya Nagy naiad nail Nair Nairobi naive naivete Nakayama naked name nameable nameplate namesake Nan Nancy Nanette Nanking nanosecond Nantucket Naomi nap napkin Naples Napoleon Napoleonic Narbonne narcissist narcissus narcosis narcotic Narragansett narrate narrow narrowminded narwhal nary NASA nasal nascent Nash Nashua Nashville Nassau nasturtium nasty Nat natal Natalie Natchez Nate Nathan Nathaniel nation nationwide native NATO natty natural nature naturopath naughty nausea nauseate nauseum nautical nautilus Navajo naval nave navel navigable navigate navy nawab nay Nazarene Nazareth Nazi Nazism NBC NBS NC NCAA NCO NCR ND Ndjamena ne Neal Neanderthal Neapolitan near nearby nearsighted neat neater neath Nebraska Nebuchadnezzar nebula nebulae nebular nebulous necessary necessitate necessity neck necklace neckline necktie necromancer necromancy necromantic necropsy necrosis necrotic nectar nectareous nectarine nectary Ned nee need needful needham needle needlepoint needn't needy nefarious Neff negate neglect negligee negligent negligible negotiable negotiate Negro Negroes Negroid Nehru neigh Neil neither Nell Nellie Nelsen Nelson nematocyst nematode nemesis neo neoclassic neodymium neolithic neologism neon neonatal neonate neophyte neoprene neoteny Nepal nepenthe nephew nepotism nepotistic Neptune neptunium nereid Nero nerve nervous Ness nest nestle Nestor net nether Netherlands netherworld nettle nettlesome network Neumann neural neuralgia neurasthenic neuritis neuroanatomic neuroanatomy neuroanotomy neurology neuromuscular neuron neuronal neuropathology neurophysiology neuropsychiatric neuroses neurosis neurotic neuter neutral neutrino neutron neutronium Neva Nevada neve nevertheless Nevins new Newark Newbold newborn Newcastle newcomer newel Newell newfound Newfoundland newline newlywed Newman Newport newsboy newscast newsletter newsman newsmen newspaper newspaperman newspapermen newsreel newsstand Newsweek newt newton Newtonian next Nguyen NH niacin Niagara Niamey nib nibble Nibelung Nicaragua nice nicety niche Nicholas Nicholls Nichols Nicholson nichrome nick nickel nickname Nicodemus Nicosia nicotinamide nicotine niece Nielsen Nielson Nietzsche nifty Niger Nigeria niggardly nigger niggle nigh night nightcap nightclub nightdress nightfall nightgown nighthawk nightingale nightmare nightmarish nightshade nightshirt nighttime NIH nihilism nihilist Nikko Nikolai nil Nile nilpotent nimble nimbus NIMH Nina nine ninebark ninefold nineteen nineteenth ninetieth ninety ninetyfold Nineveh ninth Niobe niobium nip nipple Nippon nirvana nit nitpick nitrate nitric nitride nitrite nitrogen nitrogenous nitroglycerine nitrous nitty Nixon NJ NM NNE NNW no NOAA Noah nob Nobel nobelium noble nobleman noblemen noblesse nobody nobody'd nocturnal nocturne nod nodal node nodular nodule Noel Noetherian noise noisemake noisome noisy Nolan Noll nolo nomad nomadic nomenclature nominal nominate nominee nomogram nomograph non nonce nonchalant nondescript none nonetheless nonogenarian nonsensic noodle nook noon noontime noose nor Nora Nordhoff Nordic Nordstrom Noreen Norfolk norm Norma normal normalcy Norman Normandy normative Norris Norse north Northampton northbound northeast northeastern northerly northern northernmost northland Northrop Northrup Northumberland northward northwest northwestern Norton Norwalk Norway Norwegian Norwich nose nosebag nosebleed nostalgia nostalgic Nostradamus Nostrand nostril nosy not notary notate notch note notebook noteworthy nothing notice noticeable notify notion notocord notoriety notorious Notre Nottingham notwithstanding Nouakchott nought noun nourish nouveau Nov nova novae Novak novel novelty November novice novitiate novo Novosibirsk now nowaday nowhere nowise noxious nozzle NRC nroff n's NSF NTIS nu nuance Nubia nubile nucleant nuclear nucleate nuclei nucleic nucleoli nucleolus nucleon nucleotide nucleus nuclide nude nudge nudibranch nugatory nugget nuisance null nullify Nullstellensatz numb numbly numerable numeral numerate numeric numerology numerous numinous numismatic numismatist nun nuptial nurse nursery nurturant nurture nut nutate nutcrack nuthatch nutmeg nutria nutrient nutrition nutritious nutritive nutshell nuzzle NV NW NY NYC nylon nymph nymphomania nymphomaniac Nyquist NYU o oaf oak oaken Oakland Oakley oakwood oar oases oasis oat oatcake oath oatmeal obduracy obdurate obedient obeisant obelisk Oberlin obese obey obfuscate obfuscatory obituary object objectify objector objet oblate obligate obligatory oblige oblique obliterate oblivion oblivious oblong obnoxious oboe oboist O'Brien obscene obscure obsequious obsequy observant observation observatory observe obsess obsession obsessive obsidian obsolescent obsolete obstacle obstetric obstetrician obstinacy obstinate obstruct obstruent obtain obtrude obtrusive obtuse obverse obviate obvious ocarina occasion occident occidental occipital occlude occlusion occlusive occult occultate occupant occupation occupy occur occurred occurrent occurring ocean Oceania oceanic oceanographer oceanography oceanside ocelot o'clock O'Connell O'Connor Oct octagon octagonal octahedra octahedral octahedron octal octane octant octave Octavia octennial octet octile octillion October octogenarian octopus octoroon ocular odd oddball ode O'Dell Odessa Odin odious odium odometer O'Donnell odorous O'Dwyer Odysseus odyssey oedipal Oedipus oenology o'er oersted of off offal offbeat Offenbach offend offensive offer offertory offhand office officeholder officemate official officialdom officiate officio officious offload offprint offsaddle offset offsetting offshoot offshore offspring offstage oft often oftentimes Ogden ogle ogre ogress oh O'Hare Ohio ohm ohmic ohmmeter oil oilcloth oilman oilmen oilseed oily oint Ojibwa OK okapi okay Okinawa Oklahoma okra Olaf Olav old olden Oldenburg Oldsmobile oldster Olduvai oldy oleander O'Leary olefin oleomargarine olfactory Olga oligarchic oligarchy Oligocene oligoclase oligopoly Olin olive Olivetti Olivia Olivier olivine Olsen Olson Olympia Olympic Omaha Oman ombudsman ombudsperson omega omelet omen omicron ominous omission omit omitted omitting omnibus omnipotent omnipresent omniscient omnivore omnivorous on once oncology oncoming one Oneida O'Neill onerous oneself onetime oneupmanship ongoing onion onlooker onlooking only onomatopoeia onomatopoeic Onondaga onrush onrushing onset onslaught Ontario onto ontogeny ontology onus onward onyx oocyte oodles ooze opacity opal opalescent opaque OPEC Opel open opera operable operand operant operate operatic operetta operon Ophiucus opiate opinion opinionate opium opossum Oppenheimer opponent opportune opposable oppose opposite opposition oppress oppression oppressive oppressor opprobrium opt opthalmic opthalmology optic optima optimal optimism optimist optimum option optoacoustic optoisolate optometrist optometry opulent opus or oracle oracular oral orange orangeroot orangutan orate oratoric oratorio oratory orb orbit orbital Orca orchard orchestra orchestral orchestrate orchid orchis ordain ordeal order ordinal ordinance ordinary ordinate ordnance ore oregano Oregon Oresteia Orestes organ organdy organic organismic organometallic orgasm orgiastic orgy orient oriental orifice origami origin original originate Orin Orinoco oriole Orion Orkney Orlando Orleans ornament ornamentation ornate ornery ornithology orography Orono orphan orphanage Orpheus Orphic Orr Ortega orthant orthicon orthoclase orthodontic orthodontist orthodox orthodoxy orthogonal orthography orthonormal orthopedic orthophosphate orthorhombic Orville Orwell Orwellian o's Osaka Osborn Osborne Oscar oscillate oscillatory oscilloscope Osgood O'Shea Oshkosh osier Osiris Oslo osmium osmosis osmotic osprey osseous ossify ostensible ostentation ostentatious osteology osteopath osteopathic osteopathy osteoporosis ostracism ostracod Ostrander ostrich O'Sullivan Oswald Othello other otherwise otherworld otiose Otis Ott Ottawa otter Otto Ottoman Ouagadougou ouch ought oughtn't ounce our ourselves oust out outermost outlandish outlawry outrageous ouvre ouzel ouzo ova oval ovary ovate oven ovenbird over overt overture Ovid oviduct oviform oviparous ovipositor ovoviviparous ovulate ovum ow owe Owens owl owlet owly own ox oxalate oxalic oxbow oxcart oxen oxeye Oxford oxidant oxidate oxide Oxnard Oxonian oxygen oxygenate oyster Ozark ozone p pa Pablo Pabst pace pacemake pacesetting pacific pacifism pacifist pacify pack package Packard packet pact pad paddle paddock paddy padlock padre paean pagan page pageant pageantry paginate pagoda paid pail pain Paine painful painstaking paint paintbrush pair pairwise Pakistan Pakistani pal palace palaeontology palate Palatine palazzi palazzo pale paleoanthropology Paleolithic Paleozoic Palermo Palestine palette palfrey palindrome palindromic palisade pall palladia Palladian palladium pallet palliate pallid palm palmate palmetto Palmolive Palmyra Palo Palomar palp palpate palsy Pam Pamela pampa pamper pamphlet pan panacea panama Panamanian pancake Pancho pancreas pancreatic panda Pandanus pandemic pandemonium pander Pandora pane panel pang Pangaea panhandle panic panicked panicking panicky panicle panjandrum panoply panorama panoramic pansy pant pantaloon pantheism pantheist pantheon panther pantomime pantomimic pantothenic pantry panty Paoli pap papa papacy papal papaw paper paperback paperweight paperwork papery papillary papoose Pappas pappy paprika Papua papyri papyrus par parabola parabolic paraboloid paraboloidal parachute parade paradigm paradigmatic paradise paradox paradoxic paraffin paragon paragonite paragraph Paraguay Paraguayan parakeet paralinguistic parallax parallel parallelepiped parallelogram paralysis paralytic paramagnet paramagnetic parameter paramilitary paramount Paramus paranoia paranoiac paranoid paranormal parapet paraphernalia paraphrase parapsychology parasite parasitic parasol parasympathetic paratroop paraxial parboil parcel parch pardon pare paregoric parent parentage parental parentheses parenthesis parenthetic Pareto pariah parimutuel Paris parish parishioner Parisian park parka Parke Parkinson parkish parkland parkway parlance parlay parley parliament parliamentarian parliamentary Parmesan parochial parody parole parolee paroxysm parquet Parr Parrish parrot parry parse Parsi Parsifal parsimonious parsimony parsley parsnip parson parsonage part partake Parthenon Parthia partial participant participate participle particle particular particulate partisan partition partner partook partridge party parvenu Pasadena Pascal paschal pasha Paso pass passage passageway Passaic passarine passband passbook passe passenger passerby passim passion passionate passivate passive Passover passport password past paste pasteboard pastel pasteup Pasteur pastiche pastime pastor pastoral pastry pasture pasty pat Patagonia patch patchwork patchy pate patent patentee pater paternal paternoster Paterson path pathbreaking pathetic pathogen pathogenesis pathogenic pathology pathos pathway patient patina patio patois patriarch patriarchal patriarchy Patrice Patricia patrician Patrick patrilineage patrilineal patrimonial patrimony patriot patriotic patristic patrol patrolled patrolling patrolman patrolmen patron patronage patroness Patsy pattern Patterson Patti Patton patty paucity Paul Paula Paulette Pauli Pauline Paulo Paulsen Paulson Paulus paunch paunchy pauper pause pavanne pave pavilion Pavlov Pavlovian paw pawn pawnbroker pawnshop pawpaw Pawtucket pax pay paycheck payday payload paymaster Payne payoff payroll Paz PBS PDP pea Peabody peace peaceable peaceful peacemake peacetime peach Peachtree peacock peafowl peahen peak peaky peal Peale peanut pear Pearce pearl pearlite pearlstone Pearson peasant Pease peat pebble pecan peccary peck Pecos pectoral pectoralis peculate peculiar pecuniary pedagogic pedagogue pedagogy pedal pedant pedantic pedantry peddle pedestal pedestrian pediatric pediatrician pedigree pediment Pedro pee peek peel peep peephole peepy peer peg Pegasus pegboard pegging Peggy pejorative Peking pelagic Pelham pelican pellagra pellet pellucid Peloponnese pelt peltry pelvic pelvis Pembroke pemmican pen penal penalty penance penates pence penchant pencil pencilled pend pendant pendulous pendulum Penelope penetrable penetrate penguin Penh penicillin peninsula peninsular penis penitent penitential penitentiary penman penmen Penn penna pennant Pennsylvania penny pennyroyal Penrose Pensacola pension pensive pent pentagon pentagonal pentagram pentane Pentateuch pentatonic Pentecost pentecostal penthouse penultimate penumbra penumbral penurious penury peon peony people Peoria pep peppercorn peppergrass peppermint pepperoni peppery peppy Pepsi PepsiCo peptide per perceive percent percentage percentile percept perceptible perception perceptive perceptual perch perchance perchlorate Percival percolate percussion percussive Percy perdition peregrine peremptory perennial Perez perfect perfectible perfidious perfidy perforate perforce perform performance perfume perfumery perfunctory perfusion Pergamon perhaps Periclean Pericles peridotite perigee perihelion peril Perilla perilous perimeter period periodic peripatetic peripheral periphery periphrastic periscope perish peritectic periwinkle perjure perjury perk Perkins perky Perle permafrost permalloy permanent permeable permeate Permian permissible permission permissive permit permitted permitting permutation permute pernicious peroxide perpendicular perpetrate perpetual perpetuate perpetuity perplex perquisite Perry persecute persecution persecutory Perseid Persephone Perseus perseverant persevere Pershing Persia persiflage persimmon persist persistent person persona personage personal personify personnel perspective perspicacious perspicacity perspicuity perspicuous perspiration perspire persuade persuasion persuasive pert pertain Perth pertinacious pertinent perturb perturbate Peru perusal peruse Peruvian pervade pervasion pervasive perverse perversion pervert pessimal pessimism pessimist pessimum pest peste pesticide pestilent pestilential pestle pet petal Pete peter Petersburg Petersen Peterson petiole petit petite petition petrel petri petrify petrochemical petroglyph petrol petroleum petrology petticoat petty petulant petunia Peugeot pew pewee pewter pfennig Pfizer pH phage phagocyte phalanger phalanges phalanx phalarope phantasm phantasy phantom pharmaceutic pharmacist pharmacology pharmacopoeia pharmacy phase Ph.D PhD pheasant Phelps phenol phenolic phenomena phenomenal phenomenology phenomenon phenotype phenyl phenylalanine pheromone phi Phil Philadelphia philanthrope philanthropic philanthropy philharmonic Philip Philippine Philistine Phillip philodendron philology philosoph philosophic philosophy Phipps phloem phlox phobic Phobos phoebe Phoenicia phoenix phon phone phoneme phonemic phonetic phonic phonograph phonology phonon phony phosgene phosphate phosphide phosphine phosphite phosphor phosphoresce phosphorescent phosphoric phosphorous phosphorus phosphorylate photo photogenic photography photolysis photolytic photometry photon phrase phrasemake phraseology phthalate phycomycetes phyla Phyllis phylogenetic phylogeny phylum physic physician physiochemical physiognomy physiology physiotherapist physiotherapy physique phytoplankton pi pianissimo pianist piano pianoforte piazza pica Picasso picayune Piccadilly piccolo pick pickaxe pickerel Pickering picket Pickett Pickford pickle Pickman pickoff pickup picky picnic picnicked picnicker picnicking picofarad picojoule picosecond Pict pictorial picture picturesque piddle pidgin pie piece piecemeal piecewise Piedmont pier pierce Pierre Pierson pietism piety piezoelectric pig pigeon pigeonberry pigeonfoot pigeonhole pigging piggish piggy pigment pigmentation pigpen pigroot pigskin pigtail pike Pilate pile pilewort pilfer pilferage pilgrim pilgrimage pill pillage pillar pillory pillow Pillsbury piloerection pilot pimp pimple pin pinafore pinball pincer pinch pincushion pine pineapple Pinehurst ping pinhead pinhole pinion pink pinkie pinkish pinnacle pinnate pinniped pinochle pinpoint pinscher Pinsky pint pintail pinto pinwheel pinxter pion pioneer Piotr pious pip pipe pipeline pipette pipetting pipsissewa piquant pique piracy Piraeus pirate pirogue pirouette pirouetting Piscataway Pisces piss pistachio pistol pistole piston pit pitch pitchblende pitchfork pitchstone piteous pitfall pith pithy pitiable pitiful pitman Pitney Pitt Pittsburgh Pittsfield Pittston pituitary pity Pius pivot pivotal pixel pixy Pizarro pizza pizzicato Pl placate placater place placeable placebo placeholder placemat placenta placental placid plagiarism plagiarist plagioclase plague plaguey plaid plain Plainfield plaintiff plaintive plait plan planar Planck plane planeload planet planetaria planetarium planetary planetesimal planetoid plank plankton planoconcave planoconvex plant plantain plantation plaque plasm plasma plasmid plasmon plaster plastic plastisol plastron plat plate plateau platelet platen platform platinum platitude platitudinous Plato platonic Platonism Platonist platoon Platte platypus plaudit plausible play playa playback playboy playful playground playhouse playmate playoff playpen playroom plaything playtime playwright playwriting plaza plea plead pleasant please pleasure pleat plebeian plebian plebiscite plectrum pledge Pleiades Pleistocene plenary plenipotentiary plenitude plentiful plenty plenum plethora pleura pleural pleurisy Plexiglas pliable pliant plight Pliny Pliocene plod plop plot plover plow plowman plowmen plowshare ploy pluck plucky plug plugboard pluggable plugging plum plumage plumb plumbago plumbate plume plummet plump plunder plunge plunk pluperfect plural plus plush plushy Plutarch Pluto pluton plutonium ply Plymouth plyscore plywood PM pneumatic pneumococcus pneumonia Po poach POBox pocket pocketbook pocketful Pocono pod podge podia podium Poe poem poesy poet poetic poetry pogo pogrom poi poignant Poincare poinsettia point pointwise poise poison poisonous Poisson poke pokerface pol Poland polar polarimeter Polaris polariscope polariton polarogram polarograph polarography Polaroid polaron pole polecat polemic police policeman policemen policewoman policy polio poliomyelitis polis polish Politburo polite politic politician politicking politico Polk polka polkadot poll Pollard pollen pollinate pollock polloi pollutant pollute pollution Pollux pollywog polo polonaise polonium polopony polyandrous polyandry polygamous polygamy polygon polygonal polygynous polygyny polyhedra polyhedral polyhedron Polyhymnia polymer polymerase polymeric polymorph polymorphic Polynesia polynomial Polyphemus polyphony polyploidy polysaccharide polysemous polysemy polytechnic polytope polytypy pomade pomegranate pomelo pomology Pomona pomp pompadour pompano Pompeii pompey pompon pomposity pompous Ponce Ponchartrain poncho pond ponder ponderosa ponderous pong pont Pontiac pontiff pontific pontificate pontification pony pooch poodle pooh pool Poole poop poor pop pope popish poplar poplin poppy populace popular populate populism populist populous porcelain porch porcine porcupine pore pork pornographer pornography porosity porous porphyry porpoise porridge port portage portal Porte portend portent portentous porterhouse portfolio Portia portico portland portmanteau Porto portrait portraiture portray portrayal Portsmouth Portugal Portuguese portulaca posable pose Poseidon poseur posey posh posit position positive positron Posner posse posseman possemen possess possession possessive possessor possible possum post postage postal postcard postcondition postdoctoral posterior posteriori posterity postfix postgraduate posthumous postlude postman postmark postmaster postmen postmodern postmortem postmultiply postoperative postorder postpone postposition postprocess postprocessor postscript postulate posture postwar posy pot potable potash potassium potato potatoes potbelly potboil potent potentate potential potentiometer pothole potion potlatch Potomac potpourri potsherd pottery Potts pouch Poughkeepsie poultice poultry pounce pound pour pout poverty pow powder powderpuff powdery Powell power powerful powerhouse Poynting ppm PR practicable practical practice practise practitioner Pradesh Prado praecox pragmatic pragmatism pragmatist Prague prairie praise praiseworthy praline pram prance prank praseodymium Pratt Pravda pray prayerful pre preach preachy Precambrian precarious precedent precept precess precinct precious precipice precipitable precipitate precipitous precise precision preclude precocious precocity predacious predatory predecessor predicament predicate predict predictor predilect preempt preemption preemptive preemptor preen prefab prefatory prefect prefecture prefer preference preferential preferred preferring pregnant prehensile prejudice preliminary prelude premier premiere premise premium premonition Prentice prep preparation preparative preparator preparatory prepare preponderant preponderate preposterous prerogative Presbyterian Prescott prescription prescriptive presentation preservation preside president presidential press pressure prestidigitate prestige prestigious presto Preston presume presumption presumptive pretentious Pretoria pretty prevail prevalent prevention preventive previous prexy prey Priam price prick prickle pride priest priestess Priestley prig priggish prim prima primacy primal primary primate prime primeval primitive primordial primp primrose prince princess Princeton principal Principia principle print printmake printout prior priori priory Priscilla prism prismatic prison prissy pristine Pritchard privacy private privet privilege privy prize prizewinning pro probabilist probate probationary probe problem problematic probosces proboscis procaine procedural procedure proceed process procession processor proclaim proclamation proclivity procrastinate procreate procrustean Procrustes Procter proctor procure Procyon prod prodigal prodigious prodigy produce producible product Prof profane profess profession professor professorial proffer proficient profile profit profiteer profligate profound profundity profuse profusion progenitor progeny prognosis prognosticate programmable programmatic programmed programmer programming progress progression progressive prohibit prohibition prohibitive prohibitory project projectile projector prokaryote prokaryotic Prokofieff prolate proletariat proliferate prolific proline prolix prologue prolong prolongate prolusion prom promenade Promethean Prometheus promethium prominent promiscuity promiscuous promise promote promotion prompt promptitude promulgate prone prong pronghorn pronominal pronoun pronounce pronounceable pronto pronunciation proof proofread prop propaganda propagandist propagate propane propel propellant propelled propeller propelling propensity proper property prophecy prophesy prophet prophetic propionate propitiate propitious proponent proportion proportionate propos proposal propose proposition proprietary proprietor propriety proprioception proprioceptive propulsion propyl propylene prorate prorogue prosaic proscenium prosciutto proscribe proscription prose prosecute prosecution prosecutor proselyte Proserpine prosodic prosody prosopopoeia prospect prospector prospectus prosper prosperous prostaglandin prostate prosthetic prostitute prostitution prostrate protactinium protagonist protean protease protect protector protectorate protege protein proteolysis proteolytic protest protestant protestation prothonotary Protista proto protocol proton Protophyta protoplasm protoplasmic prototype prototypic Protozoa protozoan protract protractor protrude protrusion protrusive protuberant proud Proust prove proven provenance Provence proverb proverbial provide provident providential province provincial provision proviso provocateur provocation provocative provoke provost prow prowess prowl proximal proximate proximity proxy prude prudent prudential prudish prune prurient Prussia prussic pry p's psalm psalter pseudo pseudonym pseudonymous psi psych psyche psychiatric psychiatrist psychiatry psychic psycho psychoacoustic psychoanalysis psychoanalyst psychoanalytic psychobiology psychology psychometry psychopath psychopathic psychophysic psychophysiology psychopomp psychoses psychosis psychosomatic psychotherapeutic psychotherapist psychotherapy psychotic psyllium PTA ptarmigan pterodactyl Ptolemaic Ptolemy pub puberty pubescent public publication publish Puccini puck puckish pudding puddingstone puddle puddly pueblo puerile Puerto puff puffball puffery puffin puffy pug Pugh puissant puke Pulaski Pulitzer pull pullback pulley Pullman pullover pulmonary pulp pulpit pulsar pulsate pulse pulverable puma pumice pummel pump pumpkin pumpkinseed pun punch punctilio punctilious punctual punctuate puncture pundit punditry pungent Punic punish punitive Punjab Punjabi punk punky punster punt puny pup pupa pupae pupal pupate pupil puppet puppeteer puppy puppyish Purcell purchasable purchase Purdue pure puree purgation purgative purgatory purge purify Purina purine Puritan puritanic purl purloin purple purport purpose purposeful purposive purr purse purslane pursuant pursue pursuit purvey purveyor purview pus Pusan Pusey push pushbutton pushout pushover pushpin pushy pussy pussycat put putative putdown Putnam putrefaction putrefy putrid putt putty puzzle PVC Pygmalion pygmy pyknotic Pyle Pyongyang pyracanth pyramid pyramidal pyre Pyrex pyridine pyridoxine pyrimidine pyrite pyroelectric pyrolyse pyrolysis pyrometer pyrophosphate pyrotechnic pyroxene pyroxenite Pyrrhic Pythagoras Pythagorean python q Qatar QED q's qua quack quackery quad quadrangle quadrangular quadrant quadratic quadrature quadrennial quadric quadriceps quadrilateral quadrille quadrillion quadripartite quadrivium quadrupedal quadruple quadruplet quadrupole quaff quagmire quahog quail quaint quake Quakeress qualify qualitative quality qualm quandary quanta Quantico quantify quantile quantitative quantity quantum quarantine quark quarrel quarrelsome quarry quarryman quarrymen quart quarterback quartermaster quartet quartic quartile quarto quartz quartzite quasar quash quasi quasiparticle quaternary quatrain quaver quay queasy Quebec queen Queensland queer quell quench quern querulous query quest question questionnaire quetzal queue queueing Quezon quibble Quichua quick quicken quickie quicklime quicksand quicksilver quickstep quid quiescent quiet quietus quill quillwort quilt quince quinine Quinn quint quintessence quintessential quintet quintic quintillion quintuplet quintus quip quipped quipping Quirinal quirk quirky quirt quit quite Quito quitter quitting quiver Quixote quixotic quiz quizzed quizzes quizzical quizzing quo quod quonset quorum quota quotation quote quotient r rabat rabbet rabbi rabbinate rabbinical rabbit rabble rabid rabies Rabin raccoon race racemose racetrack raceway Rachel Rachmaninoff racial rack racket racketeer rackety racy radar Radcliffe radial radian radiant radiate radical radices radii radio radioactive radioastronomy radiocarbon radiochemical radiochemistry radiography radiology radiometer radiophysics radiosonde radiotherapy radish radium radius radix radon Rae Rafael Rafferty raffia raffish raft rag rage ragging ragout Ragusan ragweed raid rail railbird railhead raillery railroad railway rain rainbow raincoat raindrop rainfall rainstorm rainwater rainy raise raisin raj rajah rake rakish Raleigh rally Ralph Ralston ram Ramada Raman ramble rambunctious ramify Ramo ramp rampage rampant rampart ramrod Ramsey ramshackle ran ranch rancho rancid rancorous Rand Randall Randolph random randy rang range rangeland Rangoon rangy Ranier rank Rankin Rankine rankle ransack ransom rant Raoul rap rapacious rapacity rape Raphael rapid rapier rapport rapprochement rapt raptor raptorial rapture rare rarefy Raritan rasa rascal rash Rasmussen rasp raspberry raster Rastus rat rata rate rater rather ratify ratio ratiocinate rationale rattail rattle rattlesnake raucous Raul raunchy ravage rave ravel raven ravenous ravine ravish raw rawboned rawhide Rawlinson ray Rayleigh Raymond Raytheon raze razor razorback RCA R&D Rd re reach reactant reactionary read readout ready Reagan real realm realtor realty ream reap rear reason reave reb Rebecca rebel rebellion rebellious rebuke rebuttal recalcitrant receipt receive receptacle reception receptive receptor recess recessive recherche Recife recipe recipient reciprocal reciprocate reciprocity recital recitative reck reckon reclamation recline recluse reclusive recompense reconcile recondite reconnaissance recovery recriminate recrudescent recruit rectangle rectangular rectifier rectify rectilinear rectitude rector rectory recumbent recuperate recursion recusant recuse red redact redactor redbird redbud redcoat redden reddish redemption redemptive redhead Redmond redneck redolent redound redpoll redshank redstart Redstone redtop reduce reducible reductio redundant redwood reed reedbuck reedy reef reek reel Reese refectory refer referee refereeing referenda referendum referent referential referral referred referring reflect reflectance reflector reflexive reformatory refract refractometer refractory refrain refrigerate refuge refugee refusal refutation refute regal regalia regard regatta regent regime regimen regiment regimentation Regina Reginald region Regis registrable registrant registrar registration registry regress regression regressive regret regretful regrettable regretted regretting regular regulate regulatory Regulus regurgitate rehabilitate rehearsal Reich Reid reign Reilly reimbursable reimburse rein reindeer reinforce Reinhold reinstate reject rejoice rejoinder relaxation releasable relevant reliant relic relict relief relieve religion religiosity religious relinquish reliquary relish reluctant remainder remand Rembrandt remediable remedy remembrance Remington reminisce reminiscent remit remittance remnant remonstrate remorse remorseful remote removal remunerate Rena renaissance renal Renault rend render rendezvous rendition Rene renewal rennet Renoir renounce renovate renown Rensselaer rent rental renunciate rep repairman repairmen reparation repartee repeater repel repelled repellent repelling repentant repertoire repertory repetitious repetitive replenish replete replica replicate reportorial repository reprehensible representative repression repressive reprieve reprimand reprisal reprise reproach reptile reptilian republican repudiate repugnant repulsion repulsive reputation repute require requisite requisition rescind rescue resemblant resemble resentful reserpine reservation reservoir resident residential residual residuary residue residuum resignation resilient resiny resist resistant resistible resistive resistor resonate resorcinol resourceful respect respectful respiration respirator respiratory resplendent respond respondent response responsible responsive rest restaurant restaurateur restful restitution restive restoration restorative restraint restroom result resultant resume resumption resurgent resurrect resuscitate ret retain retaliate retaliatory retard retardant retardation retch retention retentive reticent reticulate reticulum retina retinal retinue retiree retribution retrieval retrieve retroactive retrofit retrofitted retrofitting retrograde retrogress retrogressive retrorocket retrospect retrovision returnee Reub Reuben Reuters rev revel revelation revelatory revelry revenge revenue rever reverberate revere reverend reverent reverie reversal reversible revert revisable revisal revival revive revocable revoke revolution revolutionary revolve revulsion revved revving Rex Reykjavik Reynolds rhapsodic rhapsody Rhea Rhenish rhenium rheology rheostat rhesus rhetoric rhetorician rheum rheumatic rheumatism Rhine rhinestone rhino rhinoceros rhizome rho Rhoda Rhode Rhodes Rhodesia rhodium rhododendron rhodolite rhodonite rhombi rhombic rhombus rhubarb rhyme rhythm rhythmic RI rib ribald ribbon riboflavin ribonucleic ribose ribosome Rica rice rich Richard Richardson Richfield Richmond Richter rick rickets Rickettsia rickety rickshaw Rico ricochet ricotta rid riddance ridden riddle ride ridge ridgepole Ridgway ridicule ridiculous Riemann Riemannian rife riffle rifle rifleman riflemen rift rig Riga Rigel rigging Riggs right righteous rightful rightmost rightward rigid rigorous Riley rill rilly rim rime rimy Rinehart ring ringlet ringside rink rinse Rio Riordan riot riotous rip riparian ripe ripen Ripley ripoff ripple rise risen risible risk risky Ritchie rite Ritter ritual Ritz rival rivalry riven river riverbank riverfront riverine riverside rivet Riviera rivulet Riyadh RNA roach road roadbed roadblock roadhouse roadrunner roadside roadster roadway roam roar roast rob robbery robbin robe Robert Roberta Roberto Robertson robin Robinson robot robotics robust Rochester rock rockabye rockaway rockbound Rockefeller rocket Rockford Rockies Rockland Rockwell rocky rococo rod rode rodent rodeo Rodgers Rodney Rodriguez roe roebuck Roentgen Roger rogue roguish roil roister Roland role roll rollback rollick Rollins Roman romance Romanesque Romania Romano romantic Rome Romeo romp Romulus Ron Ronald rondo Ronnie rood roof rooftop rooftree rook rookie rooky room roomful roommate roomy Roosevelt Rooseveltian roost root rootstock rope ropy Rosa Rosalie rosary rose rosebud rosebush Roseland rosemary Rosen Rosenberg Rosenblum Rosenthal Rosenzweig Rosetta rosette Ross roster rostrum rosy rot Rotarian rotary rotate ROTC rote rotenone Roth Rothschild rotogravure rotor rototill rotten rotund rotunda rouge rough roughcast roughen roughish roughneck roughshod roulette round roundabout roundhead roundhouse roundoff roundtable roundup roundworm rouse Rousseau roustabout rout route routine rove row rowboat rowdy Rowe Rowena Rowland Rowley Roxbury Roy royal royalty Royce RPM r's RSVP Ruanda rub Rubaiyat rubbery rubbish rubble rubdown Rube Ruben rubicund rubidium Rubin rubric ruby ruckus rudder ruddy rude rudiment rudimentary Rudolf Rudolph Rudy Rudyard rue rueful ruffian ruffle rufous Rufus rug ruin ruination ruinous rule rum Rumania rumble rumen Rumford ruminant ruminate rummage rummy rump rumple rumpus run runabout runaway rundown rune rung Runge runic runneth runny Runnymede runoff runt runty runway Runyon rupee rupture rural ruse rush Rushmore rusk Russ Russell russet Russia Russo russula rust rustic rustle rustproof rusty rut rutabaga Rutgers Ruth ruthenium Rutherford ruthless rutile Rutland Rutledge rutty Rwanda Ryan Rydberg Ryder rye s sa sabbath sabbatical Sabina Sabine sable sabotage sabra sac saccharine sachem Sachs sack sacral sacrament Sacramento sacred sacrifice sacrificial sacrilege sacrilegious sacristan sacrosanct sad sadden saddle saddlebag Sadie sadism sadist Sadler safari safe safeguard safekeeping safety saffron sag saga sagacious sagacity sage sagebrush sagging Saginaw sagittal Sagittarius sago saguaro Sahara said Saigon sail sailboat sailfish sailor saint sake Sal salaam salacious salad salamander salami salary sale Salem Salerno salesgirl Salesian saleslady salesman salesmen salesperson salient Salina saline Salisbury Salish saliva salivary salivate Salk Salle sallow sally salmon salmonberry salmonella salon saloon saloonkeep salsify salt saltbush Salton saltwater salty salubrious salutary salutation salute salutory Salvador salvage salvageable salvation Salvatore salve salvo Sam samarium samba same Sammy Samoa samovar sample Sampson Samson Samuel Samuelson samurai San Sana sanatoria sanatorium Sanborn Sanchez Sancho sanctify sanctimonious sanction sanctity sanctuary sand sandal sandalwood sandbag sandblast Sandburg sanderling Sanderson sandhill Sandia sandman sandpaper sandpile sandpiper Sandra sandstone Sandusky sandwich sandy sane Sanford sang sangaree sanguinary sanguine sanguineous Sanhedrin sanicle sanitarium sanitary sanitate sank sans Sanskrit Santa Santayana Santiago Santo Sao sap sapiens sapient sapling saponify sapphire Sappho sappy saprophyte saprophytic sapsucker Sara Saracen Sarah Saran Sarasota Saratoga sarcasm sarcastic sarcoma sarcophagus sardine Sardinia sardonic Sargent sari sarong sarsaparilla sarsparilla sash sashay sashimi Saskatchewan Saskatoon sassafras sat satan satanic satellite satiable satiate satiety satin satire satiric satisfaction satisfactory satisfy saturable saturate saturater Saturday Saturn Saturnalia saturnine satyr sauce saucepan saucy Saud Saudi sauerkraut Saul Sault sauna Saunders saunter sausage saute sauterne savage savagery savanna Savannah savant save Saviour Savonarola savoy Savoyard savvy saw sawbelly sawdust sawfish sawfly sawmill sawtimber sawtooth sawyer sax saxifrage Saxon Saxony saxophone say SC scab scabbard scabious scabrous scad scaffold Scala scalar scald scale scallop scalp scaly scam scamp scan scandal scandalous Scandinavia scandium scant scanty scapegoat scapula scapular scar Scarborough scarce scare scarecrow scarf scarface scarify Scarlatti scarlet scarp Scarsdale scarves scary scat scathe scathing scatterbrain scattergun scaup scavenge scenario scene scenery scenic scent sceptic Schaefer Schafer Schantz schedule Scheherazade schelling schema schemata schematic scheme Schenectady scherzo Schiller schism schist schizoid schizomycetes schizophrenia schizophrenic Schlesinger schlieren Schlitz Schloss Schmidt Schmitt Schnabel schnapps Schneider Schoenberg Schofield scholar scholastic school schoolbook schoolboy schoolgirl schoolgirlish schoolhouse schoolmarm schoolmaster schoolmate schoolroom schoolteacher schoolwork schoolyard schooner Schottky Schroeder Schroedinger Schubert Schultz Schulz Schumacher Schumann Schuster Schuyler Schuylkill Schwab Schwartz Schweitzer Sci sciatica science scientific scientist scimitar scintillate scion scissor sclerosis sclerotic SCM scoff scold scoop scoot scope scopic scops scorch score scoreboard scorecard scoria scorn scornful Scorpio scorpion Scot scotch Scotia Scotland Scotsman Scotsmen Scott Scottish Scottsdale Scotty scoundrel scour scourge scout scowl scrabble scraggly scram scramble Scranton scrap scrapbook scrape scrappy scratch scratchy scrawl scrawny scream screech screechy screed screen screenful screenplay screw screwball screwbean screwdriver screwworm screwy scribble scribe Scribners scrim scrimmage Scripps script scription scriptural scripture scriptwriter scriven scroll scrooge scrotum scrounge scrub scrubby scruffy scrumptious scruple scrupulosity scrupulous scrutable scrutiny scuba scud scuff scuffle scull sculpin sculpt sculptor sculptural sculpture scum scurrilous scurry scurvy scuttle scutum Scylla scythe Scythia SD SE sea seabed seaboard Seaborg seacoast seafare seafood Seagram seagull seahorse seal sealant seam seaman seamen seamstress seamy Sean seance seaport seaquake sear search searchlight seashell seashore seaside season seasonal seat seater Seattle seaward seawater seaweed seaworthy sebaceous Sebastian sec secant secede secession seclude seclusion second secondary secondhand secrecy secret secretarial secretariat secretary secrete secretion secretive sect sectarian section sector secular secure sedan sedate sedentary seder sedge sediment sedimentary sedimentation sedition seditious seduce seduction seductive sedulous see seeable seed seedbed seedling seedy seeing seek seem seen seep seepage seersucker seethe seething segment segmentation Segovia segregant segregate Segundo Seidel seismic seismograph seismography seismology seize seizure seldom select selectman selectmen selector Selectric Selena selenate selenite selenium self selfadjoint selfish Selfridge Selkirk sell sellout Selma seltzer selves Selwyn semantic semaphore semblance semester semi seminal seminar seminarian seminary Seminole Semiramis Semite Semitic semper sen senate senatorial send Seneca Senegal senescent senile senior senor Senora senorita sensate sense sensible sensitive sensor sensory sensual sensuous sent sentence sentential sentient sentiment sentinel sentry Seoul sepal separable separate sepia Sepoy sept septa septate September septennial septic septillion septuagenarian septum sepulchral seq sequel sequent sequential sequester sequestration sequin sequitur Sequoia sera seraglio serape seraphim Serbia serenade serendipitous serendipity serene serf serge sergeant Sergei serial seriatim sericulture series serif serine serious sermon serology Serpens serpent serpentine serum servant serve service serviceable serviceberry serviceman servicemen serviette servile servitor servitude servo servomechanism sesame session set setback Seth Seton setscrew settle setup seven sevenfold seventeen seventeenth seventh seventieth seventy seventyfold sever several severalfold severalty severe Severn Seville sew sewage Seward sewerage sewn sex Sextans sextet sextic sextillion sexton sextuple sextuplet sexual sexy Seychelle Seymour sforzando shabby shack shackle shad shadbush shade shadflower shadow shadowy shady Shafer Shaffer shaft shag shagbark shagging shaggy shah shake shakeable shakedown shaken Shakespeare Shakespearean Shakespearian shako shaky shale shall shallot shallow shalom sham shaman shamble shame shameface shameful shampoo shamrock Shanghai shank Shannon shan't Shantung shanty shape Shapiro shard share sharecrop sharecropper shareholder Shari shark Sharon sharp Sharpe sharpen sharpshoot Shasta shatter shatterproof Shattuck shave shaven shaw shawl Shawnee shay she Shea sheaf shear Shearer sheath sheathe sheave shebang she'd shed Shedir Sheehan sheen sheep sheepherder sheepskin sheer sheet Sheffield sheik Sheila Shelby Sheldon shelf she'll shell Shelley shellfish shelter Shelton shelve Shenandoah shenanigan Shepard shepherd shepherdess Sheppard Sheraton sherbet Sheridan sheriff Sherlock Sherman Sherrill sherry Sherwin Sherwood shibboleth shield shift shifty shill Shiloh shim shimmy shin shinbone shine shingle Shinto shiny ship shipboard shipbuild shipbuilding shiplap Shipley shipload shipman shipmate shipmen shipshape shipwreck shipyard shire shirk Shirley shirt shirtmake shish shitepoke shiv Shiva shiver shivery Shmuel shoal shock Shockley shod shoddy shoe shoehorn shoelace shoemake shoestring shoji shone shoo shoofly shook shoot shop shopkeep shopworn shore shorebird shorefront shoreline short shortage shortcake shortcoming shortcut shorten shortfall shorthand shortish shortsighted shortstop Shoshone shot shotbush shotgun should shoulder shouldn't shout shove shovel show showboat showcase showdown showman showmen shown showpiece showplace showroom showy shrank shrapnel shred Shreveport shrew shrewd shrewish shriek shrift shrike shrill shrilly shrimp shrine shrink shrinkage shrive shrivel shroud shrove shrub shrubbery shrug shrugging shrunk shrunken Shu shuck shudder shuddery shuffle shuffleboard Shulman shun shunt shut shutdown shutoff shutout shuttle shuttlecock shy Shylock shyly sial SIAM Siamese Sian sib Siberia sibilant Sibley sibling sibyl sic Sicilian Sicily sick sickbed sicken sickish sickle sicklewort sickroom side sidearm sideband sideboard sidecar sidelight sideline sidelong sideman sidemen sidereal siderite sidesaddle sideshow sidestep sidestepped sidestepping sidetrack sidewalk sidewall sideway sidewinder sidewise sidle Sidney siege Siegel Siegfried Sieglinda Siegmund Siemens Siena sienna sierra siesta sieve sift sigh sight sightsee sightseeing sightseer sigma Sigmund sign signal signature signboard signet significant signify Signor Signora signpost Sikh Sikkim Sikorsky silage silane Silas silent silhouette silica silicate siliceous silicic silicide silicon silicone silicosis silk silken silkworm silky sill silly silo silt siltation siltstone silty silver Silverman silversmith silverware silvery sima simian similar simile similitude Simla simmer Simmons Simon Simonson simper simple simplectic simpleminded simpleton simplex simplicial simplicity simplify simplistic simply Simpson Sims simulate simulcast simultaneity simultaneous sin Sinai Sinbad since sincere Sinclair sine sinew sinewy sinful sing singable Singapore singe single singlehanded singleminded singlet singleton singsong singular sinh sinister sinistral sink sinkhole Sino Sinology sinter sinuous sinus sinusoid sinusoidal Sioux sip sir sire siren Sirius sis sisal siskin sister Sistine Sisyphean Sisyphus sit site situ situate situs siva six sixfold sixgun sixteen sixteenth sixth sixtieth sixty sixtyfold size sizzle skat skate skateboard skater skeet skein skeleta skeletal skeleton skeptic sketch sketchbook sketchpad sketchy skew ski skid skiddy skiff skill skillet skillful skim skimp skimpy skin skindive skinflint skinny skintight skip skipjack Skippy skirmish skirt skit skittle Skopje skulk skull skullcap skullduggery skunk sky Skye skyhook skyjack skylark skylight skyline skyrocket skyscrape skyward skywave skyway slab slack slacken sladang slag slain slake slam slander slanderous slang slant slap slapdash slapstick slash slat slate slater slaughter slaughterhouse Slav slave slavery Slavic slavish Slavonic slay sleazy sled sledge sledgehammer sleek sleep sleepwalk sleepy sleet sleety sleeve sleigh sleight slender slept sleuth slew slice slick slid slide slight slim slime slimy sling slingshot slink slip slippage slippery slipshod slit slither sliver slivery Sloan Sloane slob Slocum sloe slog slogan sloganeer slogging sloop slop slope sloppy slosh slot sloth slothful slouch slough Slovakia sloven Slovenia slow slowdown sludge slug slugging sluggish sluice slum slumber slump slung slunk slur slurp slurry slush slushy sly smack small Smalley smallish smallpox smalltime smart smash smattering smear smell smelly smelt smile smirk smite smith smithereens Smithfield Smithson smithy smitten smog smoke smokehouse smokescreen smokestack smoky smolder smooch smooth smoothbore smote smother Smucker smudge smudgy smug smuggle smut smutty Smyrna Smythe snack snafu snag snagging snail snake snakebird snakebite snakeroot snap snapback snapdragon snappish snappy snapshot snare snark snarl snatch snazzy sneak sneaky sneer sneeze snell snick Snider sniff sniffle snifter snigger snip snipe snippet snippy snivel snob snobbery snobbish snook snoop snoopy snore snorkel snort snotty snout snow snowball snowbank snowfall snowflake snowshoe snowstorm snowy snub snuff snuffle snug snuggle snuggly Snyder so soak soap soapstone soapsud soapy soar sob sober sobriety sobriquet Soc soccer sociable social societal Societe society socioeconomic sociolinguistic sociology sociometry sock socket sockeye Socrates Socratic sod soda sodden sodium sofa soffit Sofia soft softball softcover soften software softwood soggy soignee soil soiree sojourn Sol solace solar sold solder soldier soldiery sole solecism solemn solenoid solicit solicitation solicitor solicitous solicitude solid solidarity solidify soliloquy solipsism solitary soliton solitude solo Solomon Solon solstice soluble solute solution solvate solve solvent soma somal Somali Somalia somatic somber sombre some somebody somebody'll someday somehow someone someone'll someplace Somers somersault Somerset Somerville something sometime somewhat somewhere sommelier Sommerfeld somnolent son sonant sonar sonata song songbag songbird songbook songful sonic sonnet sonny Sonoma Sonora sonorant sonority sonorous Sony soon soot sooth soothe soothsay soothsayer sop sophia Sophie sophism sophisticate sophistry Sophoclean Sophocles sophomore sophomoric soprano sora sorb sorcery sordid sore Sorensen Sorenson sorghum sorority sorption sorrel sorrow sorrowful sorry sort sortie sou souffle sough sought soul soulful sound soundproof soup soupy sour sourberry source sourdough sourwood Sousa soutane south Southampton southbound southeast southeastern southern southernmost Southey southland southpaw southward southwest southwestern souvenir sovereign sovereignty soviet sovkhoz sow sowbelly sowbug sown soy soya soybean spa space spacecraft spacesuit spacetime spacious spade spaghetti Spain spalding span spandrel spangle Spaniard spaniel Spanish spar spare sparge spark sparkle Sparkman sparky sparling sparrow sparse Sparta spartan spasm spasmodic spastic spat spate spatial spatlum spatterdock spatula Spaulding spavin spawn spay speak speakeasy spear spearhead spearmint spec special speciate specie species specific specify specimen specious speck speckle spectacle spectacular spectator Spector spectra spectral spectrogram spectrograph spectrography spectrometer spectrophotometer spectroscope spectroscopic spectroscopy spectrum specular speculate sped speech speed speedboat speedometer speedup speedwell speedy spell spellbound Spencer Spencerian spend spent sperm spermatophyte spermatozoa spermatozoon Sperry spew sphagnum sphalerite sphere spheric spheroid spheroidal spherule sphinx sphygmomanometer Spica spice spicebush spicy spider spiderwort spidery Spiegel spigot spike spikenard spiky spill spillover spilt spin spinach spinal spindle spindly spine spinel spinnaker spinneret spinodal spinoff spinster spiny spiral spire spirit spiritual Spiro spirochaete Spirogyra spit spite spiteful spitfire spittle spitz splash splashy splat splay spleen spleenwort splendid splenetic splice spline splint splintery split splotch splotchy splurge splutter spoil spoilage Spokane spoke spoken spokesman spokesmen spokesperson sponge spongy sponsor spontaneity spontaneous spoof spook spooky spool spoon spoonful sporadic spore sport sportsman sportsmen sportswear sportswriter sportswriting sporty spot spotlight spotty spouse spout Sprague sprain sprang sprawl spray spread spree sprig sprightly spring springboard springe Springfield springtail springtime springy sprinkle sprint sprite sprocket Sproul sprout spruce sprue sprung spud spume spumoni spun spunk spunky spur spurge spurious spurn spurt sputnik sputter spy spyglass squabble squad squadron squalid squall squamous squander square squash squashberry squashy squat squatted squatter squatting squaw squawbush squawk squawroot squeak squeaky squeal squeamish squeegee squeeze squelch Squibb squid squill squint squire squirm squirmy squirrel squirt squishy Sri s's SSE SST SSW St stab stabile stable stableman stablemen staccato stack Stacy stadia stadium staff Stafford stag stage stagecoach stagnant stagnate stagy Stahl staid stain stair staircase stairway stairwell stake stalactite stalagmite stale stalemate Staley Stalin stalk stall stallion stalwart stamen Stamford stamina staminate stammer stamp stampede Stan stance stanch stanchion stand standard standby standeth Standish standoff standpoint standstill Stanford Stanhope stank Stanley stannic stannous Stanton stanza staph staphylococcus staple Stapleton star starboard starch starchy stardom stare starfish stargaze stark Starkey starlet starlight starling Starr starry start startle startup starvation starve stash stasis state Staten stater stateroom statesman statesmen statewide static stationarity stationary stationery stationmaster statistician Statler stator statuary statue statuesque statuette stature status statute statutory Stauffer staunch Staunton stave stay stead steadfast steady steak steal stealth stealthy steam steamboat steamy stearate stearic Stearns steed steel Steele steelmake steely Steen steep steepen steeple steeplebush steeplechase steer steeve Stefan Stegosaurus stein Steinberg Steiner stella stellar stem stench stencil stenographer stenography stenotype step stepchild Stephanie stephanotis Stephen Stephenson stepmother steppe steprelation stepson stepwise steradian stereo stereography stereoscopy sterile sterling stern sternal Sternberg Sterno sternum steroid stethoscope Stetson Steuben Steve stevedore Steven Stevenson stew steward stewardess Stewart stick stickle stickleback stickpin sticktight sticky stiff stiffen stifle stigma stigmata stile stiletto still stillbirth stillwater stilt stimulant stimulate stimulatory stimuli stimulus sting stingray stingy stink stinkbug stinkpot stinky stint stipend stipple stipulate stir Stirling stirrup stitch stoat stochastic stock stockade stockbroker stockholder Stockholm stockpile stockroom Stockton stocky stodgy stoic stoichiometry stoke Stokes stole stolen stolid stomach stomp stone stonecrop Stonehenge stonewall stoneware stonewort stony stood stooge stool stoop stop stopband stopcock stopgap stopover stoppage stopwatch storage store storefront storehouse storekeep storeroom Storey stork storm stormbound stormy story storyboard storyteller storytelling stout stove stow stowage stowaway strabismic strabismus straddle strafe straggle straight straightaway straighten straightforward straightway strain strait strand strange strangle strangulate strap strata stratagem strategic strategist strategy Stratford stratify stratosphere stratospheric Stratton stratum stratus Strauss straw strawberry strawflower stray streak stream streamline streamside street streetcar strength strengthen strenuous streptococcus streptomycin stress stressful stretch strewn striate stricken Strickland strict stricture stride strident strife strike strikebreak string stringent stringy strip stripe striptease strive striven strobe stroboscopic strode stroke stroll Strom Stromberg strong stronghold strongroom strontium strop strophe strove struck structural structure struggle strum strung strut strychnine Stuart stub stubble stubborn stubby stucco stuck stud Studebaker student studio studious study stuff stuffy stultify stumble stump stumpage stumpy stun stung stunk stunt stupa stupefy stupendous stupid stupor Sturbridge sturdy sturgeon Sturm stutter Stuttgart Stuyvesant Stygian style styli stylish stylites stylus stymie styrene Styrofoam Styx suave sub subject subjunctive sublimate subliminal submersible submit submittal submitted submitting subpoena subrogation subservient subsidiary subsidy subsist subsistent substantial substantiate substantive substituent substitute substitution substitutionary substrate subsume subterfuge subterranean subtle subtlety subtly subtrahend suburb suburbia subversive subvert succeed success successful succession successive successor succinct succubus succumb such suck suckle sucrose suction sud Sudan Sudanese sudden sudorific suds sue suet suey Suez suffer suffice sufficient suffix suffocate Suffolk suffrage suffragette suffuse sugar sugary suggest suggestible suggestion suggestive suicidal suicide suit suitcase suite suitor sukiyaki sulfa sulfanilamide sulfate sulfide sulfite sulfonamide sulfur sulfuric sulfurous sulk sulky sullen Sullivan sully sulphur sultan sultry sum sumac Sumatra Sumeria summand summary summate summertime summit summitry summon Sumner sumptuous Sumter sun sunbeam sunbonnet sunburn sunburnt Sunday sunder sundew sundial sundown sundry sunfish sunflower sung sunglasses sunk sunken sunlight sunlit sunny Sunnyvale sunrise sunscreen sunset sunshade sunshine sunshiny sunspot suntan suntanned suntanning SUNY sup super superannuate superb superbly supercilious superficial superfluity superfluous superintendent superior superlative superlunary supernatant supersede superstition superstitious supervene supervisory supine supplant supple supplementary supplicant supplicate supply support supposable suppose supposition suppress suppressible suppression suppressor supra supranational supremacy supreme supremum surah surcease surcharge sure surefire surety surf surface surfactant surfeit surge surgeon surgery surgical surjection surjective surly surmise surmount surname surpass surplus surprise surreal surrender surreptitious surrey surrogate surround surtax surtout surveillant survey surveyor survival survive survivor Sus Susan Susanne susceptance susceptible sushi Susie suspect suspend suspense suspension suspensor suspicion suspicious Sussex sustain sustenance Sutherland Sutton suture Suzanne suzerain suzerainty Suzuki svelte Svetlana SW swab swabby swag Swahili swain swallow swallowtail swam swami swamp swampland swampy swan swank swanky Swanson swap swarm swart Swarthmore Swarthout swarthy swastika swat swatch swath swathe sway Swaziland swear sweat sweatband sweater sweatpants sweatshirt sweatshop sweatsocks sweaty Swede Sweden Swedish Sweeney sweep sweepstake sweet sweetbread sweeten sweetheart sweetie sweetish swell swelt swelter Swenson swept swerve swidden swift swig swigging swill swim swimsuit swindle swine swing swingable swingy swipe swirl swirly swish swishy swiss switch switchback switchblade switchboard switchgear switchman switchmen Switzer Switzerland swivel swizzle swollen swoop sword swordfish swordplay swordtail swore sworn swum swung sybarite Sybil sycamore sycophant sycophantic Sydney syenite Sykes syllabi syllabic syllabify syllable syllabus syllogism syllogistic Sylow sylvan Sylvania Sylvester Sylvia symbiont symbiosis symbiote symbiotic symbol symbolic symmetry sympathetic sympathy symphonic symphony symplectic symposia symposium symptom symptomatic synagogue synapse synaptic synchronism synchronous synchrony synchrotron syncopate syndic syndicate syndrome synecdoche synergism synergistic synergy Synge synod synonym synonymous synonymy synopses synopsis synoptic syntactic syntax synthesis synthetic syphilis syphilitic Syracuse Syria syringa syringe syrinx syrup syrupy system systematic systemic systemwide syzygy Szilard t TA tab tabernacle table tableau tableaux tablecloth tableland tablespoon tablespoonful tablet tabletop tabloid taboo tabu tabula tabular tabulate tachinid tachometer tachyon tacit taciturn Tacitus tack tackle tacky Tacoma tact tactful tactic tactile tactual tad tadpole taffeta taffy taft tag tagging Tahiti Tahoe taiga tail tailgate taillight tailor tailspin tailwind taint Taipei Taiwan take taken takeoff takeover talc talcum tale talent talisman talismanic talk talkative talkie talky tall Tallahassee tallow tally tallyho Talmud Talmudic talon talus tam tamale tamarack tamarind tamarisk tambourine tame Tamil Tammany tamp Tampa tampon tan tanager Tanaka Tananarive tandem tang Tanganyika tangent tangential tangerine tangible tangle tango tangy tanh tank tankard tannin tansy tantalum Tantalus tantamount Tantric tantrum Tanya Tanzania tao tap tapa tape taper tapestry tapeworm tapioca tapir tapis tappa tappet taproot tar tara tarantara tarantula Tarbell tardy target tariff tarnish taro tarpaper tarpaulin tarpon tarry Tarrytown tarsier tart tartar Tartary Tarzan task taskmaster Tasmania Tass tassel taste tasteful tasting tasty tat tate tater tattle tattler tattletale tattoo tatty tau taught taunt Taurus taut tautology tavern taverna tawdry tawny tax taxa taxation taxi taxicab taxidermist taxidermy taxied taxiway taxon taxonomic taxonomist taxonomy taxpayer taxpaying Taylor tea teacart teach teacup teahouse teak teakettle teakwood teal team teammate teamster teamwork teapot tear teardrop tearful tease teasel teaspoon teaspoonful teat tech technetium technic technician Technion technique technology tectonic tecum Ted Teddy tedious tedium tee teeing teem teen teenage teensy teet teeth teethe teetotal Teflon Tegucigalpa Teheran Tehran tektite Tektronix Tel telecommunicate teleconference Teledyne Telefunken telegram telegraph telegraphy telekinesis telemeter teleology teleost telepathic telepathy telephone telephonic telephony telephoto telephotography teleprinter teleprocessing teleprompter telescope telescopic teletype teletypesetting teletypewrite televise television Telex tell telltale tellurium temerity temper tempera temperance temperate temperature tempest tempestuous template temple Templeton tempo temporal temporary tempt temptation temptress ten tenable tenacious tenacity tenant tend tendency tenderfoot tenderhearted tenderloin tendon tenebrous tenement tenet tenfold Tenneco Tennessee Tenney tennis Tennyson tenon tenor tense tensile tension tensor tenspot tent tentacle tentative tenth tenuous tenure tepee tepid teratogenic teratology terbium tercel Teresa term termcap terminable terminal terminate termini terminology terminus termite tern ternary Terpsichore terpsichorean Terra terrace terrain terramycin terrapin Terre terrestrial terrible terrier terrific terrify territorial territory terror terry terse tertiary Tess tessellate test testament testamentary testate testes testicle testicular testify testimonial testimony testosterone testy tetanus tete tether tetrachloride tetrafluoride tetragonal tetrahedra tetrahedral tetrahedron tetravalent Teutonic TEX Texaco Texan Texas text textbook textile Textron textual textural texture Thai Thailand Thalia thallium thallophyte than thank thankful thanksgiving that thatch that'd that'll thaw Thayer the Thea theatric Thebes thee theft their theism theist Thelma them thematic theme themselves then thence thenceforth theocracy theocratic Theodore Theodosian theologian theology theorem theoretic theoretician theorist theory therapeutic therapist therapy there thereabouts thereafter thereat thereby there'd therefor therefore therefrom therein there'll thereof thereon Theresa thereto theretofore thereunder thereupon therewith thermal thermionic thermistor thermo Thermofax thermophilic thermostat thesaurus these theses Theseus thesis thespian Thessalonian Thessaly theta Thetis they they'd they'll they're they've thiamin thick thicken thicket thickish thief thieves thieving thigh thimble thimbleful Thimbu thin thine thing think thinnish thiocyanate thiouracil third thirdhand thirst thirsty thirteen thirteenth thirtieth thirty thirtyfold this this'll thistle thistledown thither Thomas Thomistic Thompson Thomson thong Thor thoracic thorax Thoreau thoriate thorium thorn Thornton thorny thorough thoroughbred thoroughfare thoroughgoing Thorpe Thorstein those thou though thought thoughtful thousand thousandfold thousandth Thrace Thracian thrall thrash thread threadbare threat threaten three threefold threesome threonine thresh threshold threw thrice thrift thrifty thrill thrips thrive throat throaty throb throes thrombosis throne throng throttle through throughout throughput throw throwback thrown thrum thrush thrust Thruway Thuban thud thug thuggee Thule thulium thumb thumbnail thumbprint thump thunder thunderclap thundercloud thunderflower thunderous thundershower thunderstorm Thurman Thursday thus thwack thwart thy thyme thymine thymus thyratron thyroglobulin thyroid thyroidal thyronine thyrotoxic thyroxine thyself ti Tiber tibet Tibetan tibia tic tick ticket tickle ticklish tid tidal tidbit tide tideland tidewater tidy tie Tientsin tier Tiffany tift tiger tight tighten tightwad tigress Tigris til tilde tile till tilt tilth Tim timber timberland timbre time timeout timepiece timeshare timetable timeworn Timex timid Timon timothy tin Tina tincture tinder tine tinfoil tinge tingle tinker tinkle tinny tinsel tint tintype tiny Tioga tip tipoff Tipperary tipple tippy tipsy tiptoe tirade Tirana tire tiresome tissue tit Titan titanate titanic titanium tithe tithing titian titillate title titmice titmouse Tito titrate titular Titus tizzy TN TNT to toad toady toast tobacco Tobago Toby toccata today today'll Todd toddle toddy toe TOEFL toehold toenail toffee tofu tog together togging toggle Togo togs toil toilet toilsome tokamak token Tokyo told Toledo tolerable tolerant tolerate toll tollbooth tollgate tollhouse Tolstoy toluene Tom tomahawk tomato tomatoes tomb tombstone tome Tomlinson Tommie tommy tomography tomorrow Tompkins ton tonal tone tong tongue Toni tonic tonight tonk tonnage tonsil tonsillitis tony too toodle took tool toolkit toolmake toolsmith toot tooth toothache toothbrush toothpaste toothpick toothy tootle top topaz topcoat Topeka topgallant topheavy topic topmost topnotch topocentric topography topology toponym toponymy topple topsoil Topsy tor torah torch tore tori torn tornado toroid toroidal Toronto torpedo torpedoes torpid torpor torque torr Torrance torrent torrential torrid torsion torso tort tortoise tortoiseshell tortuous torture torus tory Toshiba toss tot total totalitarian tote totem totemic toto touch touchdown touchstone touchy tough tour tournament tousle tout tow toward towboat towel tower towhead towhee town townhouse Townsend townsman townsmen toxic toxicology toxin toy Toyota trace traceable tracery trachea tracheae track trackage tract tractor Tracy trade trademark tradeoff tradesman tradesmen tradition traffic trafficked trafficker trafficking trag tragedian tragedy tragic tragicomic trail trailblazer trailblazing trailhead trailside train trainee trainload trainman trainmen traipse trait traitor traitorous trajectory tram trammel tramp trample tramway trance tranquil tranquillity trans transact transalpine transatlantic transceiver transcend transcendent transcendental transconductance transcontinental transcribe transcript transcription transducer transduction transect transept transfer transferee transference transferor transferral transferred transferring transfinite transfix transform transformation transfusable transfuse transfusion transgress transgression transgressor transient transistor transit Transite transition transitive transitory translate transliterate translucent transmissible transmission transmit transmittable transmittal transmittance transmitted transmitter transmitting transmutation transmute transoceanic transom transonic transpacific transparent transpiration transpire transplant transplantation transport transportation transposable transpose transposition transship transshipping transudate Transvaal transversal transverse transvestite Transylvania trap trapezium trapezoid trapezoidal trash trashy Trastevere trauma traumatic travail travel travelogue traversable traversal traverse travertine travesty Travis trawl tray treacherous treachery tread treadle treadmill treason treasonous treasure treasury treat treatise treaty treble tree treetop trefoil trek trellis tremble tremendous tremolo tremor tremulous trench trenchant trencherman trenchermen trend trendy Trenton trepidation trespass tress trestle Trevelyan triable triad trial triangle triangular triangulate Triangulum Trianon Triassic triatomic tribal tribe tribesman tribesmen tribulate tribunal tribune tributary tribute Triceratops Trichinella trichloroacetic trichloroethane trichrome trick trickery trickle trickster tricky trident tridiagonal triennial trifle trifluoride trig trigonal trigonometry trigram trilingual trill trillion trillium trilobite trilogy trim trimer trimester Trinidad trinitarian trinity trinket trio triode trioxide trip tripartite tripe triphammer triphenylphosphine triple triplet Triplett triplex triplicate triploid triploidy tripod tripoli triptych trisodium Tristan tristate trisyllable trite tritium triton triumph triumphal triumphant triune trivalent trivia trivial trivium Trobriand trod trodden troff troglodyte troika Trojan troll trolley trollop trombone trompe troop trophic trophy tropic tropopause troposphere tropospheric trot trouble troubleshoot troublesome trough trounce troupe trouser trout Troutman troy truant truce truck truckload truculent trudge Trudy true truffle truism Truk truly Truman Trumbull trump trumpery trumpet truncate trundle trunk trunkful truss trust trustee trustful trustworthy trusty truth truthful TRW try trypsin trytophan t's tsar tsarina tset tsunami TTL TTY tty tub tuba tube tuberculin tuberculosis tuberous tubular tubule tuck Tucson Tudor Tuesday tuff tuft tug tugboat tugging tuition Tulane tularemia tulip tulle Tulsa tum tumble tumbrel tumult tumultuous tun tuna tundra tune tuneful tung tungstate tungsten tunic Tunis Tunisia tunnel tupelo tuple turban turbid turbidity turbinate turbine turbofan turbojet turbulent turf Turin Turing turk turkey Turkish turmeric turmoil turn turnabout turnaround turnery turnip turnkey turnoff turnout turnover turnpike turnstone turntable turpentine turpitude turquoise turret turtle turtleback turtleneck turvy Tuscaloosa Tuscan Tuscany Tuscarora tusk Tuskegee tussle tussock Tutankhamen tutelage Tutenkhamon tutor tutorial Tuttle tutu tuxedo TV TVA TWA twaddle twain tweak tweed tweedy tweeze twelfth twelve twelvefold twentieth twenty twentyfold twice twiddle twig twigging twilight twill twin twine twinge twinkle twirl twirly twist twisty twit twitch twitchy two twofold Twombly twosome TWX TX Tyburn tycoon tying tyke Tyler tympanum type typeface typescript typeset typesetter typesetting typewrite typewritten typhoid Typhon typhoon typhus typic typify typo typographer typography typology tyrannic tyrannicide Tyrannosaurus tyranny tyrant tyrosine Tyson Tzeltal u ubiquitous ubiquity UCLA Uganda ugh ugly UK Ukraine Ukrainian Ulan ulcer ulcerate Ullman ulna Ulster ulterior ultimate ultimatum ultra Ulysses umber umbilical umbilici umbilicus umbra umbrage umbrella umpire UN un unanimity unanimous unary unbeknownst unchristian uncle uncouth unction unctuous under underclassman underclassmen underivable underived underling undulate UNESCO ungulate uniaxial unicorn unidimensional unidirectional uniform unify unilateral unimodal uninominal union uniplex unipolar uniprocessor unique Uniroyal unisex unison unit unital unitarian unitary unite unity Univac univalent univariate universal universe Unix unkempt unruly until unwieldy up upbeat upbraid upbring upcome update updraft upend upgrade upheaval upheld uphill uphold upholster upholstery upkeep upland uplift upon upperclassman upperclassmen uppercut uppermost upraise upright uprise upriver uproar uproarious uproot upset upsetting upshot upside upsilon upslope upstage upstair upstand upstart upstate upstater upstream upsurge upswing uptake Upton uptown uptrend upturn upward upwell upwind uracil urania uranium Uranus uranyl urban Urbana urbane urbanite urchin Urdu urea uremia urethane urethra urge urgent Uri urinal urinary urinate urine Uris urn urology Urquhart Ursa Ursula Ursuline Uruguay urushiol U.S u's us U.S.A USA usable USAF usage USC USC&GS USDA use useful USGS usher USIA USN USPS USSR usual usurer usurious usurp usurpation usury UT Utah utensil uterine uterus Utica utile utilitarian utility utmost utopia utopian Utrecht utter utterance uttermost v VA vacant vacate vacationland vaccinate vaccine vacillate vacua vacuo vacuolate vacuole vacuous vacuum vade Vaduz vagabond vagary vagina vaginal vagrant vague Vail vain vainglorious vale valedictorian valedictory valent valentine Valerie Valery valet valeur Valhalla valiant valid validate valine Valkyrie Valletta valley Valois Valparaiso valuate value valve vamp vampire van vanadium Vance Vancouver vandal Vandenberg Vanderbilt Vanderpoel vane vanguard vanilla vanish vanity vanquish vantage variable variac Varian variant variate variegate variety various varistor Varitype varnish varsity vary vascular vase vasectomy vasoconstriction Vasquez vassal Vassar vast vat Vatican vaudeville Vaudois Vaughan Vaughn vault veal vector vectorial Veda vee veer veery Vega vegetable vegetarian vegetate vehement vehicle vehicular veil vein velar Velasquez veldt Vella vellum velocity velours velvet velvety venal vend vendetta vendible vendor veneer venerable venerate venereal Venetian venetian Veneto Venezuela vengeance vengeful venial Venice venison venom venomous venous vent ventilate ventral ventricle ventriloquism ventriloquist venture venturesome venturi Venus Venusian Vera veracious veracity veranda verandah verb verbal verbatim verbena verbiage verbose verdant Verde Verdi verdict verge veridic verify verisimilitude veritable verity Verlag vermeil vermiculite vermilion vermin Vermont vermouth Verna vernacular vernal Verne vernier Vernon Verona Veronica versa Versailles versatec versatile verse version versus vertebra vertebrae vertebral vertebrate vertex vertical vertices vertigo verve very vesicular vesper vessel vest vestal vestibule vestige vestigial vestry Vesuvius vet vetch veteran veterinarian veterinary veto vex vexation vexatious vi via viaduct vial vibrant vibrate vibrato viburnum vicar vicarious vice viceroy Vichy vicinal vicinity vicious vicissitude Vicksburg Vicky victim victor Victoria victorious victory victrola victual Vida video videotape vie Vienna Viennese Vientiane Viet Vietnam Vietnamese view viewpoint vigil vigilant vigilante vignette vigorous vii viii Viking Vikram vile vilify villa village villain villainous villein vinaigrette Vincent Vinci vindicate vindictive vine vinegar vineyard Vinson vintage vintner vinyl viola violate violent violet violin viper viral Virgil virgin virginal Virginia Virgo virgule virile virtual virtue virtuosi virtuosity virtuoso virtuous virulent virus visa visage viscera visceral viscid viscoelastic viscometer viscosity viscount viscous vise Vishnu visible Visigoth vision visionary visit visitation visitor visor vista visual vita vitae vital vitamin vitiate Vito vitreous vitrify vitriol vitriolic vitro viva vivace vivacious vivacity Vivaldi Vivian vivid vivify viviparous vivisection vivo vixen viz Vladimir Vladivostok vocable vocabularian vocabulary vocal vocalic vocate vociferous vodka Vogel vogue voice voiceband void volatile volcanic volcanism volcano volcanoes vole volition Volkswagen volley volleyball Volstead volt Volta voltage voltaic Voltaire Volterra voltmeter voluble volume volumetric voluminous voluntary volunteer voluptuous Volvo vomit von voodoo voracious voracity vortex vortices vorticity Voss votary vote votive vouch vouchsafe Vought vow vowel voyage Vreeland v's vs VT Vulcan vulgar vulnerable vulpine vulture vying w WA Waals Wabash WAC wack wacke wacky Waco wad waddle wade wadi Wadsworth wafer waffle wag wage wagging waggle Wagner wagoneer wagonload wah Wahl wail wainscot Wainwright waist waistcoat waistline wait Waite waitress waive wake Wakefield wakeful waken wakerobin wakeup Walcott Walden Waldo Waldorf Waldron wale Walgreen walk walkie walkout walkover walkway wall walla wallaby Wallace wallboard Waller wallet Wallis wallop wallow wallpaper wally walnut Walpole walrus Walsh Walt Walter Waltham Walton waltz wan wand wander wane Wang wangle want wanton wapato wapiti Wappinger war warble Warburton ward warden wardrobe wardroom ware warehouse warehouseman warehousemen warfare warhead Waring warm warmhearted warmish warmonger warmth warmup warn warp warplane warrant warranty warren warrior Warsaw wart wartime warty Warwick wary was wash washbasin washboard washbowl Washburn Washington washout washy wasn't wasp waspish Wasserman wast wastage waste wastebasket wasteful wasteland wastewater wasting wastrel Watanabe watch watchband watchdog watchful watchmake watchman watchmen watchword watchworks water Waterbury watercourse watercress waterfall waterfowl waterfront Watergate waterhole Waterhouse waterline Waterloo Waterman watermelon waterproof watershed waterside watertight Watertown waterway watery Watkins Watson watt wattage wattle wave waveform wavefront waveguide wavelength wavenumber wavy wax waxen waxwing waxwork waxy way waybill waylaid waylay Wayne wayside wayward we weak weaken weal wealth wealthy wean weapon weaponry wear wearisome weary weasel weather weatherbeaten weatherproof weatherstrip weatherstripping weave web Webb weber Webster WECo we'd wed wedge wedlock Wednesday wee weed weedy week weekday weekend weep Wehr Wei Weierstrass weigh weight weighty Weinberg Weinstein weir weird Weiss Welch welcome weld Weldon welfare we'll well wellbeing Weller Welles Wellesley wellington wellwisher welsh welt Wendell Wendy went wept we're were weren't Werner wert Werther Wesley Wesleyan west westbound Westchester westerly western westernmost Westfield Westinghouse Westminster Weston westward wet wetland we've Weyerhauser whack whale whalebone Whalen wham wharf Wharton wharves what what'd whatever Whatley whatnot what're whatsoever wheat Wheatstone whee wheedle wheel wheelbarrow wheelbase wheelchair wheelhouse wheeze wheezy Whelan whelk Wheller whelm whelp when whence whenever where whereabout whereas whereby where'd wherefore wherein whereof whereon where're wheresoever whereupon wherever wherewith whet whether whey which whichever whiff whig while whim whimper whimsey whimsic whimsy whine whinny whip whiplash Whippany whippet Whipple whipsaw whir whirl whirligig whirlpool whirlwind whisk whisper whistle whistleable whit Whitaker Whitcomb white whiteface Whitehall whitehead Whitehorse whiten whitetail whitewash whither whitish Whitlock Whitman Whitney Whittaker Whittier whittle whiz whizzing who whoa who'd whodunit whoever whole wholehearted wholesale wholesome who'll wholly whom whomever whomsoever whoop whoopee whoosh whop whore whorl whose whosoever whup why WI Wichita wick wicket wide widen widespread widgeon widget widow width widthwise wield wiener Wier wife wig wigging Wiggins wiggle wiggly Wightman wigmake wigwam Wilbur Wilcox wild wildcat wildcatter wildebeest wilderness wildfire wildflower wildlife wile Wiley Wilfred wilful Wilhelm Wilhelmina Wilkes Wilkie Wilkins Wilkinson will Willa Willard willful William Williamsburg Williamson Willie Willis Willoughby willow willowy Wilma Wilmington Wilshire Wilson wilt wily win wince winch Winchester wind windbag windblown windbreak windfall windmill window windowpane windowsill windshield Windsor windstorm windsurf windswept windup windward windy wine winemake winemaster winery wineskin Winfield wing wingback wingbeat wingman wingmen wingspan wingspread wingtip Winifred wink winkle Winnetka Winnie Winnipeg Winnipesaukee winnow wino Winslow winsome Winston winter wintergreen wintertime Winthrop wintry winy wipe wire wireman wiremen wiry Wisconsin wisdom wise wiseacre wisecrack wisenheimer wish wishbone wishful wishy wisp wispy wistful wit witch witchcraft with withal withdraw withdrawal withdrawn withdrew withe wither withheld withhold within without withstand withstood withy witness Witt Wittgenstein witty wive wizard wobble woe woebegone woeful wok woke Wolcott wold wolf Wolfe Wolff Wolfgang wolfish wolve wolverine woman womb wombat women won wonder wonderful wonderland wondrous Wong won't wont woo wood Woodard Woodbury woodcarver woodchuck woodcock woodcut wooden woodgrain woodhen woodland Woodlawn woodlot woodpeck woodrow woodruff woodshed woodside Woodstock woodward woodwind woodwork woody woodyard wool woolgather Woolworth Wooster wop Worcester Worcestershire word Wordsworth wordy wore work workbench workbook workday workforce workhorse workload workman workmen workout workpiece workplace worksheet workshop workspace workstation worktable world worldwide worm wormy worn worrisome worry worse worsen worship worshipful worst worth Worthington worthwhile worthy Wotan would wouldn't wound wove woven wow wrack wraith wrangle wrap wraparound wrapup wrasse wrath wrathful wreak wreath wreathe wreck wreckage wren wrench wrest wrestle wretch wriggle wright Wrigley wring wrinkle wrist wristband wristwatch writ write writeup writhe writhing written wrong wrongdoer wrongdoing wrongful Wronskian wrote wrought wry w's Wu Wuhan WV WY Wyandotte Wyatt Wyeth Wylie Wyman Wyner wynn Wyoming wysiwyg x Xavier xenon xenophobia xerography xerox Xerxes Xhosa xi x's xylem xylene xylophone y yacht yachtsman yachtsmen yah yak Yakima Yale Yalta yam Yamaha yang yank Yankee Yankton Yaounde yap yapping Yaqui yard yardage yardstick Yarmouth yarmulke yarn yarrow Yates yaw yawl yawn ye yea Yeager yeah year yearbook yearn yeast yeasty Yeats yell yellow yellowish Yellowknife Yellowstone yelp Yemen yen yeoman yeomanry yeomen yeshiva yesterday yesteryear yet yew Yiddish yield yin yip yipping YMCA yodel Yoder yoga yoghurt yogi yogurt yoke yokel Yokohama Yokuts yolk yon yond Yonkers yore York Yorkshire Yorktown Yosemite Yost you you'd you'll young youngish youngster Youngstown your you're yourself yourselves youth youthful you've yow Ypsilanti y's ytterbium yttrium Yucatan yucca yuck Yugoslav Yugoslavia yuh Yuki Yukon yule Yves Yvette YWCA z Zachary zag zagging Zagreb Zaire Zambia Zan Zanzibar zap zazen zeal Zealand zealot zealous zebra Zeiss Zellerbach Zen zenith zero zeroes zeroth zest zesty zeta Zeus Ziegler zig zigging zigzag zigzagging zilch zillion Zimmerman zinc zing zinnia Zion zip zircon zirconium zither zloty zodiac zodiacal Zoe Zomba zombie zone zoo zoology zoom zooplankton Zorn Zoroaster Zoroastrian zounds z's zucchini Zulu Zurich zygote ation usury UT Utah utensil uterine uterus Utica utile utilitarian utility utmost utopia utopian Utrecht utter utterance uttermost v VA vacant vadict/README 444 0 12 12123 4267504246 5661 Copyright (c) 1987 Regents of the University of California. All rights reserved. The Berkeley software License Agreement specifies the terms and conditions for redistribution. @(#)README 1.4 (Berkeley) 3/20/87 All files and subdirectories of /usr/dict are recommended for rdisting except web2 and web2a (because of their size), and some of the files hlist* depending on needs of your machine (details below). Descriptions of most of these files are given under FILES below. The new subdirectory "special" contains lists of words in specialized fields, which may be hashed in with the regular lists on machines having many users working in these fields. As of this writing, there are two such specialized wordlists. It is advised that system managers also create a directory /usr/local/dict. This can be used to maintain files of particular interest to users of each machine (e.g., surnames of members of the department on a departmental machine). The hashed wordlists hlista and hlistb in this distribution include the words in the file special/4bsd, comprising current 4bsd commands, system calls, etc. (from "abs" to "zcat"). Machines whose primary users are programmers should take these files by rdist. For machines with other user populations, a file "hlist" is provided which only contains the contents of /usr/dict/words. Managers of such machines should rdist this file, and use "spellin" to produce files hlist{a,b} which contain the words from /usr/dict/{american,british} respectively, plus any other files appropriate to the needs of the majority of their users. (Some basic unix commands and terms that general users are likely to encounter, e.g. troff, emacs, tty, have been included in /usr/dict/words. More may be added as suggestions are received.) Here, for instance is a script that might be used to create the hashlists on a particular machine, so as to include the words in /usr/dict/special/math, as well as two local lists which we will assume are called /usr/local/dict/surnames and /usr/local/dict/acronyms. # cd /usr/dict cat american special/math /usr/local/dict/{surnames,acronyms} | \ spellin hlist > hlista cat british special/math /usr/local/dict/{surnames,acronyms} | \ spellin hlist > hlistb Hashlists can also be created from scratch using /usr/src/usr.bin/spell/Makefile. This is now written so that if "make" is run with no options it will produce the hashed files as presently distributed, but so that the extra wordlists used can be controlled with variables LOCAL and SPECIAL. For instance, the results given by the above script can be obtained by doing: cd /usr/src/usr.bin/spell make LOCAL='/usr/local/dict/surnames /usr/local/dict/acronyms' \ SPECIAL=special.math make install Returning to the subject of the wordlists in /usr/dict, these are, in general, ordered as in sort -df. This makes no difference for spell's hashing process, but makes a difference for other commands, such as "look", that perform binary searches on the unhashed lists. Complaints, and any additional suggestions for words or wordlists, should be sent to me. I cannot fix bugs involving the code of "spell", but I am maintaining a list of these bugs, and of other ideas for improvement. George Bergman, gbergman@cartan.Berkeley.Edu 18 March, 1987 -------------------------------------------------------------------- FILES and subdirectories of /usr/dict: words -- common words, and important technical terms from all fields, that are spelled the same in British and American usage. american -- spellings preferred in American but not British usage. british -- spellings preferred in British but not American usage. stop -- forms that would otherwise be derivable by "spell" from words in one of the above files, but should not be accepted. hlist -- hashed list, formed from the file "words" only. hlista -- hashed list, formed from files {words,american,special/4bsd}. hlistb -- hashed list, formed from files {words,british,special/4bsd}. hstop -- hashed list, formed from file "stop". web2 -- words from Webster's 2nd International (see WEB below). web2a -- compounds and phrases from same source. README -- this file papers/ -- an (out-of-date specialized) bibliographical database, used as the default by the program "refer". special/ -- directory of less common terms from specialized fields. It presently contains: special/4bsd -- commands and system calls (from filenames in /usr/man/man[1238n]), and builtin csh commands (named in /usr/man/man1/csh.1) of the current version of 4bsd Unix. (Supersedes old "/usr/src/usr.bin/spell/local".) special/math -- some mathematical terms not in /usr/dict/words. WEB ---- (introduction provided by jaw@riacs) ------------------------- Welcome to Webster's Second International, all 234,936 words worth. The 1934 copyright has elapsed, according to the supplier. The supplemental 'web2a' list contains hyphenated terms as well as assorted noun and adverbial phrases. The wordlist makes a dandy 'grep' victim. -- James A. Woods {ihnp4,hplabs}!ames!jaw (or jaw@riacs) \ spellin hlist > hlista cat british special/math /usr/local/dict/{surnames,acronyms} | \ spellin hlist > hlistb Hashlists can also be created from scratch using /usr/src/usr.bin/spell/Makefile. This is now written so that if "make" is run with no options it will produce the hashed files as presently distributed, but so that the extra wordlists used can be controlled with variables LOCAL and SPECIAL. For instancdoc/ 755 0 0 0 4017005722 4462 doc/2.10/ 755 3 12 0 4743704531 5102 doc/2.10/MANIFEST 444 3 12 1162 4016736137 6316 The following are the documents unique to the 2.9/2.10 systems. Many of them are of historical interest only. 2.9_kernel.ms -- Description of changes between 2.8 and 2.9 assembler -- PDP-11 assembler guide f77 -- 2.9 FORTRAN compiler guide fsck -- File system check program guide ovpap -- Documentation of the 2.9/2.10 text overlay scheme. ovtutorial pascal -- Documentation of the 2.9/2.10 Pascal system. px pxp rogue -- Very old rogue description, see 4.3's for an update. setup -- Setup documents for 2.9 system. setup.V7 -- Setup documents for V7 system. v7index -- Index and summary for the V7 manuals. v7summary usage. stop -- forms that would otherwise be derivable by "spell" from words in one of the above files, but should not be accepted. hlist -- hashed list, formed from the file "words" only. hlista -- hashed list, formed from files {words,american,special/4bsd}. hlistb -- hashed list, formed from files {words,british,special/4bsd}. hstop -- hashed list, formed frdoc/2.10/setup.2.9/ 755 3 12 0 4045761356 6554 doc/2.10/setup.2.9/Makefile 444 3 12 61 3141164415 10221 FMTR = vtroff setup: tbl setup.? | ${FMTR} -ms setup.09setup.19setup.29setup.39setup.49setup.59setup.69setup.79setup.89LRCSp.doc/2.10/setup.2.9/setup.0 444 3 12 3521 3141164403 10043 .bd S B 3 .if \nv .rm CM .TL Installing and Operating 2.9BSD .br \*(DY .AU Michael J. Karels Carl F. Smith .AI University of California Berkeley, California 94720 .de IR \fI\\$1\|\fP\\$2 .. .de UX UNIX\\$1 .. .AB .PP .FS \u\(dg\d\s-2DEC\s0, \s-2MASSBUS\s0, \s-2PDP\s0, and \s-2UNIBUS\s0 are trademarks of Digital Equipment Corporation. .FE .FS \u\(dd\d\s-2UNIX\s0 is a trademark of Bell Laboratories. .FE This document contains instructions for installation and operation of the Second Berkeley Software Distribution's 2.9BSD release of the PDP-11\(dg .UX \(dd system. It is adapted from the paper .I Installing and Operating 4.1bsd .R by Bill Joy. .PP This document explains the procedures for installation of Berkeley UNIX on a PDP-11 or to upgrade an existing Berkeley PDP-11 UNIX system to the new release. It then explains how to configure the kernel for the available devices and user load, lay out file systems on the available disks, set up terminal lines and user accounts, and do system specific tailoring. It also explains system operations procedures: shutdown and startup, hardware error reporting and diagnosis, file system backup procedures, resource control, performance monitoring, and procedures for recompiling and reinstalling system software. Technical details on the kernel changes are presented in the accompanying paper, ``Changes in the Kernel in 2.9BSD.'' .PP The 2.9BSD release, unlike previous versions of the Second Berkeley Software Distribution, is a complete Version 7 UNIX system with all of the standard UNIX tools and utilities, with or without Berkeley modifications. Therefore, it does not need to be layered onto an existing Version 7 system; because of the many changes and additions throughout the system, it would require a substantial effort to merge into most earlier systems. .AE .ds LH "Installing/Operating 2.9BSD .ds CF \*(DY has elapsed, according to the supplier. The supplemental 'web2a' list contains hyphenated terms as well as assorted noun and adverbial phrases. The wordlist makes a dandy 'doc/2.10/setup.2.9/setup.1 444 3 12 25047 3144650664 10107 .ds RH Introduction .LP .nr H1 1 .bp .LG .B .ce 1. INTRODUCTION .sp 2 .R .NL .PP This document explains how to install the 2.9BSD release of the Berkeley version of UNIX for the PDP-11 on your system. If you are running the July 1981 release of the system, which was called 2.8BSD, you can avoid a full bootstrap from the new tape by extracting only the software that has changed. Be warned, however, that there are a large number of changes. Unless you have many local modifications it will probably be easier to bring up an intact 2.9BSD system and merge your local changes into it. If you are running any other version of UNIX on your PDP-11, you will have to do a full bootstrap. This means dumping all file systems which are to be retained onto tape in a format that can be read in again later (\fItar\fP format is best, or V7 \fIdump\fP if the file system configuration will be the same). A new root file system can be made and read in using standalone utilites on the tape. The system sources and the rest of the /usr file system can then be extracted. Finally, old file systems can be reloaded from tape. .PP To get an overview of the process and an idea of some of the alternative strategies that are available, it is wise to look through all of these instructions before beginning. .NH 2 Hardware supported .PP This distribution can be booted on a PDP-11/23, 24, 34, 34A, 40, 44, 45, 55, 60, or 70 CPU with at least 192 Kbytes of memory and any of the following disks\(dg: .DS .TS lw(1.5i) l. DEC MASSBUS: RM03, RM05, RP04, RP05, RP06 DEC UNIBUS: RK05, RK06, RK07, RL01, RL02, RM02, RP03, RP04, RP05, RP06 AED 8000 UNIBUS: AMPEX DM980 (emulating RP03) AED STORM-II AMPEX DM980 (emulating RM02) DIVA COMP V MASSBUS: AMPEX 9300 EMULEX SC-21 UNIBUS: AMPEX 9300, CDC 9766 (emulating RM05) EMULEX SC-11 or SC-21 UNIBUS: CDC 9762, AMPEX DM980 .TE .DE The tape drives\(dg supported by this distribution are: .DS .TS lw(1.5i) l. DEC MASSBUS: TE16, TU45, TU77 DEC UNIBUS: TE10, TE16, TS11, TU45, TU77 DATUM 15X20 UNIBUS: KENNEDY 9100 (emulating TE10) EMULEX TC-11 UNIBUS: KENNEDY 9100, 9300 (emulating TE10) .TE .DE .FS \u\(dg\d Other controllers and drives may be easily usable with the system, but might require minor modifications to the system to allow bootstrapping. The controllers and the drives shown here are known to work as bootstrap devices. .FE .NH 2 Distribution format .PP The distribution format is two 9-track 800bpi 2400' magnetic tapes. The tapes are also available at 1600bpi. The format for 1600bpi tapes is the same. If you are able to do so, it is a good idea to immediately copy the tapes in the distribution kit to guard against disaster. The first tape contains some 512-byte records, some 1024-byte records, followed by many 10240-byte records. There are interspersed tape marks; end-of-tape is signaled by a double end-of-file. The second tape contains only 10240-byte records with no interspersed tape marks. .PP The boot tape contains several standalone utility programs, a \fIdump\fP image of a root file system, and a \fItar\fP image of part of the /usr file system. The files on this tape are: .DS .TS center; l l c n l n. File Contents Record Size 0 boot block 512 (EOR) boot block 512 (EOR) Standalone \fBBoot\fP 512 (EOF) 1 Standalone \fBcat\fP 1024 (EOF) 2 This index 1024 (use \fBcat\fP to read) (EOF) 3 Standalone \fBmkfs\fP 1024 (see \fImkfs\fP\|(8)\(dg) (EOF) 4 Standalone \fBrestor\fP 1024 (see \fIrestor\fP\|(8)) (EOF) 5 Standalone \fBicheck\fP 1024 (see \fIicheck\fP\|(8)) (EOF) 6 Dump of small ``root'' file system 10240 (213 10K-byte blocks; see \fIdump\fP\|(8)) (EOF) 7 Tar archive of /usr files 10240 .\"CHECK (most of the tape; see \fItar\fP\|(1)) (EOF) (EOF) .TE .DE .FS \u\(dg\dReferences of the form \fIX\fP(\fIY\fP) mean the subsection named \fIX\fP in section \fIY\fP of the Berkeley \s-2PDP-11\s0 \s-2UNIX\s0 Programmer's manual. .FE The last file on the tape is a \fItar\fP image of most of the /usr file system except for sources (relative to /usr; see \fItar\fP\|(1)). It contains most of the binaries and other material which is normally kept on-line, with the following directories: \fB70 adm bin contrib dict doc games include lib local man msgs preserve public spool sys tmp ucb\fP. .\"CHECK It contains 1594 10K byte blocks. The second tape contains one file in \fItar\fP format, again relative to /usr, .\"CHECK consisting of 1958 10K byte blocks and containing the source tree with all command and kernel sources. It contains the directories \fBnet\fP, \fBsrc\fP, and \fBingres\fP and includes the Berkeley additions (which are in /usr/src/ucb and /usr/ingres). The \fBnet\fP directory contains sources for the TCP/IP system. .NH 2 UNIX device naming .PP UNIX has a set of names for devices that are different from the DEC names for the devices. The disk and tape names used by the bootstrap and the system are: .DS .TS l l. RK05 disks \fBrk\fP RK06, RK07 disks \fBhk\fP RL01, RL02 disks \fBrl\fP RP02, RP03 disks \fBrp\fP TE16, TU45, TU77/TM02, 3 tapes \fBht\fP TE10/TM11 tapes \fBtm\fP TS11 tapes \fBts\fP .TE .DE .PP There is also a generic disk driver, \fBxp\fP, that will handle most types of SMD disks on one or more controllers (even different types on the same controller). The \fBxp\fP driver handles RM02, RM03, RM05, RP04, RP05 and RP06 disks on DEC, Emulex, and Diva UNIBUS or MASSBUS controllers. .PP The standalone system used to bootstrap the full UNIX system uses device names of the form: .DS \fIxx\|\fP(\fIy\fP,\fIz\fP) .DE where \fIxx\fP is one of \fBhk\fP, \fBht\fP, \fBrk\fP, \fBrl\fP, \fBrp\fP, \fBtm\fP, \fBts\fP, or \fBxp\fP. The value \fIy\fP specifies the device or drive unit to use. The \fIz\fP value is interpreted differently for tapes and disks: for disks it is a block offset for a file system and for tapes it is a file number on the tape. .PP Large UNIX physical disks (\fBhk\fP, \fBrp\fP, \fBxp\fP) are divided into 8 logical disk partitions, each of which may occupy any consecutive cylinder range on the physical device. The cylinders occupied by the 8 partitions for each drive type are specified in section 4 of the Berkeley PDP-11 \s-2UNIX\s0 Programmer's manual.\(dg .FS \u\(dg\dIt is possible to change the partitions by changing the values in the disk's sizes array in ioconf.c. .FE Each partition may be used for either a raw data area such as a swapping area or to store a UNIX file system. It is conventional for the first partition on a disk to be used to store a root file system, from which UNIX may be bootstrapped. The second partition is traditionally used as a swapping area, and the rest of the disk is divided into spaces for additional ``mounted file systems'' by use of one or more additional partitions. .PP The disk partitions have names in the standalone system of the form ``\fIxx\|\fP(\fIy\fP,\fIz\fP)'' as described above. Thus partition 1 of an RK07 at drive 0 would be ``hk(0,5940)''. When not running standalone, this partition would normally be available as ``/dev/hk0b''. Here the prefix ``/dev'' is the name of the directory where all ``special files'' normally live, the ``hk'' serves an obvious purpose, the ``0'' identifies this as a partition of hk drive number ``0'' and the ``b'' identifies this as partition 1 (where we number from 0, the 0th partition being ``hk0a''). Finally, ``5940'' is the sector offset to partition 1, as determined from the manual page .IR hk (4). .PP Returning to the discussion of the standalone system, we recall that tapes also took two integer parameters. In the case of a TE16/TU tape formatter on drive 0, the files on the tape have names ``ht(0,0)'', ``ht(0,1)'', etc. Here ``file'' means a tape file containing a single data stream separated by a single tape mark. The distribution tapes have data structures in the tape files and though the first tape contains only 8 tape files, it contains several thousand UNIX files. .NH 2 UNIX devices: block and raw .PP UNIX makes a distinction between ``block'' and ``character'' (raw) devices. Each disk has a block device interface where the system makes the device byte addressable and you can write a single byte in the middle of the disk. The system will read out the data from the disk sector, insert the byte you gave it and put the modified data back. The disks with the names ``/dev/\fIxx\^\fP0a'', etc. are block devices and thus use the system's normal buffering mechanism. There are also raw devices available, which do physical I/O operations directly from the program's data area. These have names like ``/dev/r\fIxx\^\fP0a'', the ``r'' here standing for ``raw.'' In the bootstrap procedures we will often suggest using the raw devices, because these tend to work faster. In general, however, the block devices are used. They are where file systems are ``mounted.'' The UNIX name space is increased by logically associating (\fImount\fP\|ing) a UNIX file system residing on a given block device with a directory in the current name space. See \fImount\fP\|(2) and \fImount\fP\|(8). This association is severed by \fIumount\fP. .PP You should be aware that it is sometimes important to use the character device (for efficiency) or not (because it wouldn't work, e.g. to write a single byte in the middle of a sector). Don't change the instructions by using the wrong type of device indiscriminately. .NH 2 Reporting problems or questions .PP Problems with the software of this distribution, or errors or omissions in the documentation, should be reported to the 2BSD group. Whenever possible, submit such reports by electronic mail; the address is: .DS .ta 2i 2bsd@berkeley (by ARPAnet) or ucbvax!2bsd (by UUCP) .DT .DE There is a mail drop for bug reports and fixes: .DS .ta 2i 2bsd-bugs@berkeley (by ARPAnet) or ucbvax!2bsd-bugs (by UUCP) .DT .DE These reports or fixes are expected to be in the format generated by the \fIsendbug\fP\|(1) program. A redistribution list of users who have indicated that they would like to receive bug reports is also maintained: .DS .ta 2i 2bsd-people@berkeley (by ARPAnet) or ucbvax!2bsd-people (by UUCP) .DT .DE This list may also be used as a general forum for help requests, sharing common experiences, etc. Requests to be added to (or deleted from) this list should be made to the 2bsd address above. If it is not possible to use electronic mail, then call or write the 2BSD office. Although there is seldom someone there to take your call, there is an answering machine, and your request will be forwarded to the appropriate person. The phone number and mailing address are: .DS Berkeley \s-1PDP\s0-11 Software Distribution \- 2BSD Computer Science Division, Department of \s-1EECS\s0 573 Evans Hall University of California, Berkeley Berkeley, California 94720 (415) 642-6258 .DE merge your local changes into it. If you are running any other version of UNIX on your PDP-11, you will have to do a full bootstrap. This means dumping all file systems which are to be retained onto tape in a format that can be read in again later (\fItar\fP format is best, or V7 \fIdump\fP if the file system configuration will be the same). A new root file system can be made and read in using standalone utilites on the tape. The system sources and the rest of the /usdoc/2.10/setup.2.9/setup.2 444 3 12 40647 4045761356 10115 .ds RH Bootstrapping .bp .nr H1 2 .nr H2 0 .bp .LG .B .ce 2. BOOTSTRAP PROCEDURES .sp 2 .R .NL .PP This section explains the bootstrap procedures that can be used to get one of the kernels supplied with this tape running on your machine. If you are not yet running UNIX or are running a version of UNIX other than 2.8BSD, you will have to do a full bootstrap. .PP If you are running 2.8BSD you can use the update procedure described in section 4.2 instead of a full bootstrap. This will affect modifications to the local system less than a full bootstrap. Note, however, that a full bootstrap will probably require less effort unless you have made major local modifications which you must carry over to the new system. .PP If you are already running UNIX and need to do a full bootstrap you should first save your existing files on magnetic tape. The 2.9BSD file system uses 1K-byte blocks by clustering disk blocks (as did the 2.8BSD system); file systems in other formats cannot be mounted. .B Those upgrading from 2.8 should note that 2.9BSD uses generally different file system partition sizes than 2.8BSD, and that a few of the major device numbers have changed (in particular, that for the hk). .R The easiest way to save the current files on tape is by doing a full dump and then restoring in the new system. This works also in converting V7, System-III, or System-V 512-byte file systems. Although the dump format is different on V7, System-III, and System-V, \fI512restor\fP\|(8) can restore old format V7 \fIdump\fP image tapes into the file system format used by 2.9BSD. .IR Tar (1) can also be used to exchange files from different file system formats, and has the additional advantage that directory trees can be placed on different file systems than on the old configuration. Note that 2.9BSD does not support \fIcpio\fP tape format. .PP The tape bootstrap procedure involves three steps: loading the tape bootstrap monitor, creating and initializing a UNIX ``root'' file system system on the disk, and booting the system. .NH 2 Booting from tape .PP To load the tape bootstrap monitor, first mount the magnetic tape on drive 0 at load point, making sure that the write ring is not inserted. Then use the normal bootstrap ROM, console monitor or other bootstrap to boot from the tape. If no other means are available, the following code can be keyed in and executed at (say) 0100000 to boot from a TM tape drive (the magic number 172526 is the address of the TM-11 current memory address register; an adjustment may be necessary if your controller is at a nonstandard address): .DS .TS l l. 012700 (mov $172526, r0) 172526 010040 (mov r0, -(r0)) 012740 (mov $60003, -(r0)) 060003 000777 (br .) .TE .DE When this is executed, the first block of the tape will be read into memory. Halt the CPU and restart at location 0. .PP The console should type .DS .B \fInn\fPBoot : .R .DE where \fInn\fP is the CPU class on which it believes it is running. The value will be one of 24, 40, 45 or 70, depending on whether separate instruction and data (separate I/D) and/or a UNIBUS map are detected. The CPUs in each class are: .DS .TS c l c c. Class PDP11s Separate I/D UNIBUS map 24 24 - + 40 23, 34, 34A, 40, 60 - - 45 45, 55 + - 70 44, 70 + + .TE .DE The bootstrap can be forced to set up the machine as for a different class of PDP11 by placing an appropriate value in the console switch register (if there is one) while booting it. The value to use is the PDP11 class, interpreted as an \fIoctal\fP number (use, for example, 070 for an 11/70). \fBWarning:\fP some old DEC bootstraps use the switch register to indicate where to boot from. On such machines, if the value in the switch register indicates an incorrect CPU, be sure to reset the switches immediately after initiating the tape bootstrap. .PP You are now talking to the tape bootstrap monitor. At any point in the following procedure you can return to this section, reload the tape bootstrap, and restart. .PP To first check that everything is working properly, you can use the \fIcat\fP program on the tape to print the list of utilities on the tape. Through the rest of this section, substitute the correct disk type for \fIdk\fP and the tape type for \fItp\fP. In response to the prompt of the bootstrap which is now running, type .DS \fItp\|\fP(0,1) (load file 1 from tape 0) .DE \fICat\fP will respond .DS .B Cat File? .R .DE The table of contents is in file 2 on the tape, therefore answer .DS \fItp\|\fP(0,2) .DE The tape will move, then a short list of files will print on the console, followed by: .DS .B exit called \fInn\fPBoot : .R .DE After \fIcat\fP is finished, it returns to the bootstrap for the next operation. .NH 2 Creating an empty UNIX file system .PP Now create the root file system using the following procedures. First determine the size of your root file system from the following table: .DS .TS l l. Disk Root File System Size (1K-byte blocks) hk 2970 rk\(dg 2000 rl01\(dg 4000 rl02\(dg 8500 rp 5200 xp 4807 (RP04/RP05/RP06) 2400 (RM02/RM03) 4560 (RM05) 4702 (DIVA) .TE .DE .FS \u\(dg\dThese sizes are for full disks less some space used for swapping. .FE .PP If the disk on which you are creating a root file system is an \fBxp\fP disk, you should check the drive type register at this time to make sure it holds a value that will be recognized correctly by the driver. There are numbering conflicts; the following numbers are used internally: .DS .TS c l c l. Drive Type Register Drive Assumed Low Byte (standard address: 0776726) 022 RP04/05/06 025 RM02/RM03 027 RM05 076 Emulex SC-21/300 Mb RM05 emulation (815 cylinders) 077 Diva Comp-V/300 Mb SMD .TE .DE Check the drive type number in your controller manual, or halt the CPU and examine this register. If the value does not correspond to the actual drive type, you must place the correct value in the switch register after the tape bootstrap is running and before any attempt is made to access the drive. This will override the drive type register. This value must be present at the time each program (including the bootstrap itself) first tries to access the disk. On machines without a switch register, the \fIxptype\fP variable can be patched in memory. After starting each utility but before accessing the disk, halt the CPU, place the new drive type number at the proper memory location with the console switches or monitor, and then continue. The location of \fIxptype\fP in each utility is .\"CHECK mkfs: 032700, restor: 031570, icheck: 030150 and boot: 0427754 (the location for boot is higher because it relocates itself). Once UNIX itself is booted (see below) you must patch it also. .PP Finally, determine the proper interleaving factors \fIm\fP and \fIn\fP for your disk and CPU combination from the following table. These numbers determine the layout of the free list that will be constructed; the proper interleaving will help increase the speed of the file system. If you have a non-DEC disk that emulates one of the disks listed, you may be able to use these numbers as well, but check that the actual disk geometry is the same as the emulated disk (rather than the controller mapping onto a different physical disk). Also, the rotational speed must be the same as the DEC disk for these numbers to apply. .DS .TS cB s s s s s s s s l l l l l l l l l. Disk Interleaving Factors for Disk/CPU Combinations (\fIm\fP/\fIn\fP) CPU RK05 RK06/7 RL01/2 RM02 RM03 RM05 RP03 RP04/5/6 11/23 X/12 X/33 X/10 X/80 - - X/100 X/209 11/24 X/12 7/33 X/10 10/80 - - X/100 10/209 11/34 X/12 6/33 X/10 8/80 - - 3/100 8/209 11/40 2/12 6/33 X/10 8/80 - - 3/100 8/209 11/44 X/12 4/33 X/10 6/80 - - 2/100 6/209 11/45 2/12 5/33 X/10 7/80 - - 3/100 7/209 11/55 X/12 5/33 X/10 7/80 - - 3/100 7/209 11/60 X/12 5/33 X/10 7/80 - - 3/100 7/209 11/70 X/12 3/33 X/10 5/80 7/80 7/304 X/100 5/209 .TE .DE For example, for an RP06 on an 11/70, \fIm\fP is 5 and \fIn\fP is 209. See \fImkfs\fP\|(8) for more explanation of the values of \fIm\fP and \fIn\fP. An X entry means that we do not know the correct number for this combination of CPU and disk. If you do, please let us know. If \fIm\fP is unspecified or you have a disk which emulates a DEC disk, use the number for the most similar disk/CPU pair. .B If \fIn\fP is unspecified, use the cylinder size divided by 2. .R .PP Then run a standalone version of the \fImkfs\fP (8) program. In the following procedure, substitute the correct types for \fItp\fP and \fIdk\fP and the size determined above for \fIsize\fP: .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,3) \fBMkfs\fP \fBfile system:\fP \fIdk\|\fP(0,0) (root is the first file system on drive 0) \fBfile system size:\fP \fIsize\fP (count of 1024 byte blocks in root) \fBinterleaving factor (m, 5 default):\fP \fIm\fP (interleaving, see above) \fBinterleaving modulus (n, 10 default):\fP \fIn\fP (interleaving, see above) \fBisize = XX\fP (count of inodes in root file system) \fBm/n = \fP\fIm n\fP (interleave parameters) \fBExit called\fP \fInn\fP\fBBoot\fP \fB:\fP (back at tape boot level) .TE .DE You now have an empty UNIX root file system. .NH 2 Restoring the root file system .PP To restore a small root file system onto it, type .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,4) \fBRestor\fP \fBTape?\fP \fItp\|\fP(0,6) (unit 0, seventh tape file) \fBDisk?\fP \fIdk\|\fP(0,0) (into root file system) \fBLast chance before scribbling on disk.\fP (just hit return) (30 second pause then tape should move) (tape moves for a few minutes) .B end of tape Exit called \fInn\fPBoot \fB:\fR (back at tape boot level) .R .TE .DE If you wish, you may use the \fIicheck\fP program on the tape, \fItp\|\fP(0,5), to check the consistency of the file system you have just installed. .NH 2 Booting UNIX .PP You are now ready to boot from disk. It is best to read the rest of this section first, since some systems must be patched while booting. Then type: .DS .TS lw(1.5i) l. \fB:\fP\fIdk\|\fP(0,0)\fIdk\^\fPunix (bring in \fIdk\^\fPunix off root system) .TE .DE The standalone boot program should then read \fIdk\^\fPunix from the root file system you just created, and the system should boot: .DS .B .\"CHECK Berkeley UNIX (Rev. 2.9.5) Mon Aug 2 18:44:30 PDT 1983 mem = xxx CONFIGURE SYSTEM: .R (Information about various devices will print; most of them will probably not be found until the addresses are set below.) .B erase=^?, kill=^U, intr=^C # .R .DE If you are booting from an \fIxp\fP with a drive type that is not recognized, it will be necessary to patch the system before it first accesses the root file system. Halt the processor after it has begun printing the version string but before it has finished printing the ``mem = xxx'' string. Place the drive type number corresponding to your drive .\"CHECK at location 061472; the addresses for drives 1, 2 and 3 are 061506, 061522 and 061536 respectively. If you plan to use any drives other than 0 before you recompile the system, you should patch these locations. Make the patches and continue the CPU. The value before patching must be zero. If it is not, you have halted too late and should try again. .PP UNIX begins by printing out a banner identifying the version of the system that is in use and the date it was compiled. Note that this version is different from the system release number, and applies only to the operating system kernel. .PP Next the .I mem message gives the amount of memory (in bytes) available to user programs. On an 11/23 with no clock control register, a message ``No clock???'' will print next; this is a reminder to turn on the clock switch if it is not already on, since UNIX cannot enable the clock itself. The information about different devices being attached or not being found is produced by the \fIautoconfig\fP\|(8) program. Most of this is not important for the moment, but later the device table can be edited to correspond to your hardware. However, the tape drive of the correct type should have been detected and attached. .PP The ``erase=...'' message is part of /.profile that was executed by the root shell when it started. The file /.profile contained commands to set the UNIX erase, line kill and interrupt characters to be what is standard on DEC systems so that it is consistent with the DEC console interface characters. This is not normal for UNIX, but is convenient when working on a hardcopy console; change it if you like. .PP UNIX is now running, and the Berkeley PDP-11 \s-2UNIX\s0 Programmer's manual applies. The `#' is the prompt from the Shell, and lets you know that you are the super-user, whose login name is ``root.'' .PP There are a number of copies of \fIunix\fP on the root file system, one for each possible type of root file system device. All but one of them (\fIxpunix\fP) has had its symbol table removed (i.e. they have been ``stripped''; see .IR strip (1)). The unstripped copy is linked (see .IR ln (1)) to \fI/unix\fP to provide a system namelist for programs like .IR ps (1) and .IR autoconfig (8). All of the systems were created from \fI/unix\fP by the C shell script \fI/genallsys.sh\fP. If you had to patch the \fIxp\fP type as you booted, you may want to use \fIadb\fP (see .IR adb (1)) to make the same patch in a copy of \fIxpunix\fP. If you are short of space, you can patch a copy of \fI/unix\fP instead (setting the rootdev, etc.) and install it as \fI/unix\fP after verifying that it works. See \fI/genallsys.sh\fP for examples of using \fIadb\fP to patch the system. The system load images for other disk types can be removed. .B Do not remove or replace the copy of \fI/unix\fP, however, unless you have made a working copy of it that is patched for your file system configuration and still has a symbol table. .R Many programs use the symbol table of /\fIunix\fP in order to determine the locations of things in memory, therefore /\fIunix\fP should always be an unstripped file corresponding to the current system. If at all possible, you should save the original UNIX binaries for your disk configuration (\fIdk\fP\^unix and unix) for use in an emergency. .PP There are a few minor details that should be attended to now. The system date is initially set from the root file system, and should be reset. The root password should also be set: .DS .TS lw(1.5i) l. \fB#\fP date \fIyymmddhhmm\fP (set date, see \fIdate\fP\|(1)) \fB#\fP passwd root (set password for super-user) \fBNew password:\fP (password will not echo) \fBRetype new password:\fP .TE .DE .NH 2 Installing the disk bootstrap .PP The disk with the new root file system on it will not be bootable directly until the block 0 bootstrap program for the disk has been installed. There are copies of the bootstraps in /mdec. This is not the usual location for the bootstraps (that is /usr/src/sys/mdec), but it is convenient to be able to install the boot block now. Use \fIdd\fP\|(1) to copy the right boot block onto the disk; the first form of the command is for small disks (\fBrk\fP, \fBrl\fP) and the second form for disks with multiple partitions (\fBhk\fP, \fBrp\fP, \fBxp\fP), substituting as usual for \fIdk\fP: .DS \fB#\fP dd if=\fIdk\^\fPuboot of=/dev/r\fIdk\^\fP0 count=1 or \fB#\fP dd if=\fIdk\^\fPuboot of=/dev/r\fIdk\^\fP0a count=1 .DE will install the bootstrap in block 0. Once this is done, booting from this disk will load and execute the block 0 bootstrap, which will in turn load /boot (actually, the boot program on the first file system, which is root). The console will print .DS .TS lw(1.5i) l. \fB>boot\fP (printed by the block 0 boot) .B \fInn\fPBoot \fR(printed by /boot)\fP : .R .TE .DE The '>' is the prompt from the first bootstrap. It automatically boots /\fIboot\fP for you; if /\fIboot\fP is not found, it will prompt again and allow another name to be tried. It is a very small and simple program, however, and can only boot the second-stage boot from the first file system. Once /boot is running and prints its ``: '' prompt, boot unix as above, using \fIdk\^\fPunix or unix as appropriate. .NH 2 Checking the root file system .PP Before continuing, check the integrity of the root file system by giving the command .DS \fB#\fP fsck /dev/r\fIdk\^\fP0a .DE (omit the \fBa\fP for an RK05 or RL). The output from .I fsck should look something like: .DS .B /dev/r\fIxx\^\fP0a File System: / ** Checking /dev/r\fIxx\^\fP0a ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Free List .\"CHECK 236 files 1881 blocks xxxxx free .R .R .DE .PP If there are inconsistencies in the file system, you may be prompted to apply corrective action; see the document describing .I fsck for information. The number of free blocks will vary depending on the disk you are using for your root file system. 11/40 2/12 6/33 X/10 8/80 - - 3/100 8/209 11/44 X/12 4/33 X/10 6/80 - - 2/100 6/209 11/45doc/2.10/setup.2.9/setup.3 444 3 12 44112 3144651164 10077 .nr H1 3 .nr H2 0 .ds RH "Device and file system configuration .bp .LG .B .ce 3. DEVICE AND FILE SYSTEM CONFIGURATION .sp 2 .R .NL .PP This section will describe ways in which the file systems can be set up for the disks available. It will then describe the files and directories that will be set up for the local configuration. These are the \fI/dev\fP directory, with special files for each peripheral device, and the tables in \fI/etc\fP that contain configuration-dependent data. Some of these files should be edited after reading this section, and others can wait until later if you choose. The disk configuration should be chosen before the rest of the distribution tape is read onto disk to minimize the work of reconfiguration. .NH 2 Disk configuration .PP This section describes how to lay out file systems to make use of the available space and to balance disk load for better system performance. The steps described in this section (3.1) are optional. .NH 3 Disk naming and divisions .PP Each large physical disk drive can be divided into up to 8 partitions; UNIX typically uses only 3 to 5 partitions. For instance, on an RM03 the first partition, rm0a, is used for a root file system, a backup thereof, or a small file system like /tmp; the second partition, rm0b, is used for swapping or a small file system; and the third partition, rm0c, holds a user file system. Many disks can be divided in different ways; for example, the third section (\fBc\fP) of the RM03 could instead be divided into two file systems, using the rm0d and rm0e partitions instead, perhaps holding /usr and the user's files. The disk partition tables are specified in the \fIioconf.c\fP file for each system, and may be changed if necessary. The last partition (\fBh\fP) always describes the entire disk, and can be used for disk-to-disk copies. .PP \fBWarning:\fP for disks on which DEC standard 144 bad sector forwarding is supported, the last track and up to 126 preceeding sectors contain replacement sectors and bad sector lists. Disk-to-disk copies should be careful to avoid overwriting this information. See \fIbad144\fP\|(8). Bad sector forwarding is optional in the \fBhk\fP, \fBhp\fP, \fBrm\fP, and \fBxp\fP drivers. It has been only lightly tested in the latter three cases. .NH 3 Space available .PP The space available on a disk varies per device. The amount of space available on the common disk partitions for /usr is listed in the following table. Not shown in the table are the partitions of each drive devoted to the root file system and the swapping area. .DS .TS center; l l n. Type Name Size _ RK06 hk?d 9.2 Mb RK07 hk?c 22.4 Mb RM02, RM03 rm?c 60.2 Mb RM02, RM03 rm?d 30.9 Mb RP03 rp?c 33.3 Mb RP04, RP05, RP06 hp?c 74.9 Mb RP06 hp?d 158.9 Mb RM05 xp?c 115.4 Mb RM05 xp?e 80.9 Mb .TE .DE .PP Each disk also has a swapping area and a root file system. .\"CHECK The distributed system binaries and sources occupy about 38 megabytes. .PP The sizes and offsets of all of the disk partitions are in the manual pages for the disks; see section 4 of the Berkeley PDP-11 \s-2UNIX\s0 Programmer's manual. Be aware that the disks have their sizes measured in ``sectors'' of 512 bytes each, while the UNIX file system blocks are 1024 bytes each. Thus if a disk partition has 10000 sectors (disk blocks), it will have only 5000 UNIX file system blocks, and you \fBmust\fP divide by 2 to use 5000 when specifying the size to the \fImkfs\fP command. The sizes and offsets in the kernel (ioconf.c) and the manual pages are in 512-byte blocks. If bad sector forwarding is supported for your disk, be sure to leave sufficient room to contain the bad sector information when making new file systems. .NH 3 Layout considerations .PP There are several considerations in deciding how to adjust the arrangement of things on your disks: the most important is making sure there is adequate space for what is required; secondarily, throughput should be maximized. Swapping space is an important parameter. Since running out of swap space often causes the system to panic, it must be large enough that this does not happen. .PP Many common system programs (the C compiler, the editor, the assembler etc.) create intermediate files in the /tmp directory, so the file system where this is stored also should be made large enough to accommodate most high-water marks; if you have several disks, it makes sense to mount this in a ``root'' or ``swap'' (i.e. first or second partition) file system on another disk. On RK06 and RK07 systems, where there is little space in the hk?c or hk?d file systems to store the system source, it is normal to mount /tmp on /dev/hk1a. .PP The efficiency with which UNIX is able to use the CPU is often strongly affected by the configuration of disks. For general time-sharing applications, the best strategy is to try to split the most actively-used sections among several disk arms. There are at least five components of the disk load that you can divide between the available disks: .DS 1. The root file system. 2. The swap area. 3. The /tmp file system. 4. The /usr file system. 5. The user files. .DE Here are several possibilities for utilizing 2, 3 and 4 disks: .TS center box; l | c s s l | cw(5) | cw(5) | cw(5). disks _ _ _ what 2 3 4 _ root 1 1 1 tmp 1 3 4 usr 1 2 2 swapping 2 3 4 users 2 1+3 1+3 archive x x 4 .TE .PP The most important consideration is to even out the disk load as much as possible, and to do this by decoupling file systems (on separate arms) between which heavy copying occurs. Note that a long term average balanced load is not important; it is much more important to have instantaneously balanced load when the system is busy. When placing several busy file systems on the same disk, it is helpful to group them together to minimize arm movement, with less active file systems off to the side. .PP Intelligent experimentation with a few file system arrangements can pay off in much improved performance. It is particularly easy to move the root, the /tmp file system and the swapping areas. Note, though, that the disks containing the root and swapping area can never be removed while UNIX is running. Place the user files and the /usr directory as space needs dictate and experiment with the other, more easily moved file systems. .PP As an example, consider a system with RM03s. On the first RM03, \fBrm0\fP, we will put the root file system in \fBrm0a\fP, and the \fB/usr\fP file system in \fBrm0c\fP, which has enough space to hold it and then some. If we had only one RM03, we would put user files in the \fBrm0c\fP partition with the system source and binaries, or split them between \fBrm0d\fP and \fBrm0e\fP. The /tmp directory will be part of the root file system, as no file system will be mounted on /tmp. .PP If we had a second RM03, we would create a file system in \fBrm1c\fP and put user files there, calling the file system /mnt. We would keep a backup copy of the root file system in the \fBrm1a\fP disk partition, a file system for /tmp on \fBrm0b\fP, and swap on \fBrm1b\fP. .NH 3 Implementing a layout .PP Once a disk layout has been chosen, the appropriate special files for the disk partitions must be created (see Setting up the /dev directory, below). Empty file systems will then be created in the appropriate partitions with .IR mkfs (8), and the files belonging in the file system can then be restored from tape. The section on setting up the /usr file system contains detailed information on this process. The swap device is specified when the kernel is configured, which is also discussed later. At that time, you may also want to consider whether to use the root device or another file system (e.g. /tmp) for the pipe device (the pipe device is a file system where the kernel keeps temporary files related to pipe I/O; it should be \fImount\fP\^ed before any I/O through pipes is attempted). .NH 2 Setting up the /dev directory .PP Devices are accessed through special files in the file system, made by the .IR mknod (8) program and normally kept in the /dev directory. Devices to be supported by UNIX are implemented in the kernel by drivers; the proper driver is selected by the major device number and type specified to .IR mknod . All devices supported by the distribution system already have nodes in /dev. They were created by the /dev/MAKE shell script. It is easiest to rebuild this directory from the beginning with the correct devices for your configuration. First, determine the UNIX names of the devices on your system (e.g. \fIdh\fP, \fIlp\fP, \fIxp\fP). Some will be the same as the names of devices on the generic system. Others need not be. See section 4 of the UNIX Programmer's Manual. Next create a new directory /newdev, copy /dev/MAKE into it, edit MAKE to provide an entry for local needs, replacing the case LOCAL, and run it to generate the desired devices in the /newdev directory. The LOCAL entry can be used for any unusual devices, and to rename standard devices as desired. It should also move the node for the disk partition being used as the swap area to \fIswap\fP (or, if swap is after a file system as on RK05 or RL disks, link the other node to \fIswap\fP). Different devices are specified to MAKE in various ways. Terminal multiplexors (DZ and DH) are specified by boards, and 8 or 16 nodes will be made, as appropriate. Disks are made by partition, for example xp0c, so that you may make the nodes corresponding to the file systems that you intend to use. Note that \fIhp\fP, \fIrm\fP and \fIxp\fP are actually synonyms, but you should use the name corresponding to the driver you plan to use. The kernel configuration section (section 5.4.1) has more information. For tape drives, there are different invocations for different types of controllers, although the nodes produced will have the same names. The different types are \fIht\fP, \fItm\fP and \fIts\fP, as above, and also \fIut\fP, which is used for the Emulex TC-11 and other TM-11 emulations that are also capable of selecting 1600 or 800 bpi under software control. Making \fIht0\fP or \fIut0\fP will result in nodes \fImt0\fP and \fImt1\fP (800 and 1600 bpi, respectively) and parallel nodes for other options; \fIht1\fP uses the names \fImt2\fP and \fImt3\fP. See .IR ht (4) and .IR tm (4). In contrast, the MAKE script makes only one set of nodes for \fItm\fP or \fIts\fP, without changing the unit number specified. Different sites use different naming conventions for tapes; you could use the LOCAL entry in MAKE to move the tape files to your favorite names. .PP As an example, if your machine had a single DZ-11, two DH-11s, an RP03 disk, two RP06 disks, and a TM03 tape formatter you would do: .DS \fB#\fP cd / \fB#\fP mkdir newdev \fB#\fP cp /dev/MAKE /newdev/MAKE \fB#\fP cd newdev \fB#\fP ./MAKE dz0 dh1 ht0 std LOCAL \fB#\fP ./MAKE rp0a rp0b rp0c hp0a hp0b hp0c hp1a hp1b hp1d hp1e .DE Note the ``std'' argument here that causes standard devices such as \fIconsole\fP, the console terminal, to be created. .PP You can then do .DS \fB#\fP cd / \fB#\fP mv dev genericdev ; mv newdev dev \fB#\fP sync .DE to install the new device directory. Once you are confident that the new directory is set up properly, you can remove /genericdev. .NH 2 Editing system-dependent configuration files .PP There are a number of small files in /\fIetc\fP that are used by various programs to determine things about the local configuration. At this point, several of these should be edited to describe the local configuration. You may have old versions of some of them which you may want to use, or you may edit the files that are provided as examples. Some of this may be done later at your convenience, but is presented here for organization. Both \fB/etc/dtab\fP and \fB/etc/fstab\fP should be edited now. .NH 3 /etc/dtab .PP This file contains the list of devices which will be checked at boot time by .IR autoconfig (8). The devices that are listed are tested to see whether they exist and have the correct register addresses and interrupt vectors. If they do, and the kernel has a corresponding driver routine, \fIautoconfig\fP notifies the driver that the device exists at that address. In this way, the addresses and vectors of most devices do not need to be compiled into the operating system. The exception is that disks must be preconfigured if they are to be used as root file systems. .PP This file should be edited to include all of the devices on the system with the exception of the clock and console device. Other device entries can be deleted or commented out with a '#' at the beginning of the line. The format of the entries is defined in .IR dtab (5). .IR Autoconfig (8) describes the autoconfiguration process. One word of caution: if a device fails to interrupt as expected, and if its unit number is specified (not a '?' wildcard), \fIautoconfig\fP will notify the driver that the device is \fBnot\fP present, and preconfigured devices (like root disks) could be disconnected. Thus, it is probably best to use a '?' instead of a unit number for your root disks until you are confident that the probe always finds that disk, especially if your disk controller is an emulation of another disk type. Disks that are not used as boot devices for UNIX can be properly listed with unit numbers. .NH 3 /etc/fstab .PP This file contains the list of file systems normally mounted on the system. Its format is defined in .IR fstab (5). Programs like .IR df (1) and .IR fsck (8) use this list to control their actions. Each disk partition that has been assigned a function should be listed here. See the manual pages for specifics on how to configure this file. .NH 3 /etc/ident .PP The banner printed by .IR getty (8) is read from /etc/ident. Edit this file to the banner you wish to use. It may contain special characters to clear terminal screens, etc., but note that the same file is used for all terminals. .NH 3 /etc/motd .PP The contents of /etc/motd, the ``message of the day,'' is displayed at the terminal when a user is logged in by .IR login (1). .NH 3 /etc/passwd, /etc/group .PP These files obviously need local modifications. See the section on adding new users. Entries for pseudo-users (user IDs that are not used for logins) have password fields containing ``***'', since encrypted passwords never not contain asterisks. .NH 3 /etc/rc .PP As the system begins multiuser operations, it executes the commands in /etc/rc (see .IR init (8)). Most of the commands in this file are standard and should not be changed, including the section for checking file systems after a reboot. These commands will be ignored if autoreboot is not enabled. You should edit /etc/rc to set your machine's name. Look for the line .DS /etc/hostname hostnameunknown .DE and change \fIhostnameunknown\fP to the name of your machine. This name will be used by .IR Mail (1) and .IR uucp (1) (among others) and should correspond to the name by which your machine is known to external networks (if any). At this time you may wish to add additional commands to this file if you need to start additional daemons, remove old lock files, or perform any other cleanup as the system comes up. .NH 3 Configuring terminals .PP If UNIX is to support simultaneous access from more than just the console terminal, the file /etc/ttys (\fIttys\fP\|(5)) has to be edited. .PP Terminals connected via DZ interfaces are conventionally named \fBtty\fP\fIdd\fP where \fIdd\fP is a decimal number, the ``minor device'' number. The lines on dz0 are named /dev/tty00, /dev/tty01, ... /dev/tty07. Lines on DH interfaces are conventionally named \fBttyh\fP\fIx\fP, where \fIx\fP is a hexadecimal digit. If more than one DH interface is present in a configuration, successive terminals would be named \fBttyi\fP\fIx\fP, \fBttyj\fP\fIx\fP, etc. .PP To add a new terminal be sure the device is configured into the system, that the special file for the device has been made by /dev/MAKE, and the special file exists. Then set the first character of the appropriate line of /etc/ttys to 1 (or add a new line). The first character may also be 3 if the line is also to be used in maintenance mode (see \fIinit\fP\|(8)). .PP The second character of each line in the /etc/ttys file lists the speed and initial parameter settings for the terminal. The most common choices, from .IR getty (8), are: .DS 0 300-1200-150-110 3 1200-300 4 300 (e.g. console) 5 300-1200 6 1200 7 2400 8 4800 9 9600 B autobaud .DE Here the first speed is the speed a terminal starts at, and ``break'' switches speeds. Thus a newly added terminal /dev/tty00 could be added as .DS 19tty00 .DE if it was wired to run at 9600 baud. The ``B'' indicates that \fIgetty\fP should attempt to guess a line's speed when the user types a carriage return or control-C. Note that this requires kernel support. See section 5.3.6 below. .PP Dialup terminals should be wired so that the carrier is asserted only when the phone line is dialed up. For non-dialup terminals from which modem control is not available, you must either wire back the signals so that the carrier always appears to be present, or (for lines on a DH-11 or DZ-11) add 0200 to the minor device number to indicate that carrier is to be ignored. See .IR dh (4) and .IR dz (4) for details. .PP You should also edit the file /etc/ttytype placing the type of each terminal there (see \fIttytype\fP\|(5)). .PP When the system starts running multi-user, all terminals that are listed in /etc/ttys having a 1 or 3 as the first character of their line are enabled. If, during normal operations, it is desired to disable a terminal line, the super-user can edit the file /etc/ttys, change the first character of the corresponding line to 0 and then send a hangup signal to the \fIinit\fP process, by typing (see .IR kill (1)) .DS \fB#\fP kill \-1 1 or \fB#\fP kill \-HUP 1 .DE Terminals can similarly be enabled by changing the first character of a line from a 0 to a 1 and sending a hangup to \fIinit\fP. .PP Note that if a special file is inaccessible when \fIinit\fP tries to create a process for it, init will print a message on the console and try to reopen the terminal every minute, reprinting the warning message every 10 minutes. .PP Finally note that you should change the names of any dialup terminals to ttyd? where ? is in [0-9a-f] since some programs use this property of the names to decide whether a terminal is a dialup. Shell commands to do this should be put in the /dev/MAKE script under case LOCAL. ion system already have nodes in /dev. They were created by the /dev/MAKE shell script. It is easiest to rebuild this directory from the beginning with the correct devices for your configuration. First, determine the UNIX names of the devices on your system (e.g. \fIdh\fP, \fIlp\fP, \fIxp\fP). Some will be the same as the names of devices on the generic system. Others need not be. See section 4 of the UNIX Programmer's Manual. Next doc/2.10/setup.2.9/setup.4 444 3 12 25340 3144651227 10102 .nr H1 4 .nr H2 0 .ds CF \*(DY .ds RH "/usr setup .bp .LG .B .ce 4. SETTING UP THE /usr FILE SYSTEM .sp 2 .R .NL .PP The next step in bringing up the 2.9BSD distribution is to read in the binaries and sources on the /usr file system. This will also demonstrate how to add new file systems in general, and the overall procedure can be repeated to set up additional file systems. There are two portions of the /usr file system, one on each tape. The first tape contains the binary directories, manual pages and documentation, as well as skeletal directories such as spool and msgs. If you have room, it is easiest to extract everything. The size of the entire /usr file system image on the distribution tapes .\"CHECK is 38 megabytes. It will not fit on a single RK05, RK06/7 or RL01/2. In these cases, the /usr file system will have to be extracted in sections or split across multiple disks. The \fIbin\fP, \fIinclude\fP, \fIlib\fP, and \fIucb\fP subdirectories are essential. The system sources will also be needed to reconfigure the kernel; they are in /usr/src/sys. The \fIadm\fP, \fIdict\fP, \fImsgs\fP, \fIpreserve\fP, \fIspool\fP, \fIsys\fP and \fItmp\fP directories may also be extracted to provide a skeletal system. The first part of this section describes how to extract /usr as part of a full bootstrap; the second part explains how to install 2.9BSD as an upgrade to a 2.8BSD system if you decide not to perform a full bootstrap. .NH 2 Full bootstrap procedure .PP This procedure will create a new file system and extract the /usr directory into it. First determine the name of the disk on which you plan to place the new file system, for example rm0c, and substitute it for \fIdisk\fP throughout this section. You may want to create a small ``prototype'' file to describe the file system (see .IR mkfs (8)) in order to change the size of the inode list. This is the same as the maximum number of files that can be created on the file system. The default is to allow 16 inodes (occupying one block) per 24 file system blocks, allowing the file system to be completely filled with small files (1-2 blocks). This is more than required for /usr and other file systems which have larger average file size. If you decide to set up a prototype file for \fImkfs\fP, use its name for \fIproto\fP below. The prototype file needs to contain only the name of the bootstrap, the sizes, and the line for the root directory (don't forget the '$' to terminate). Look up the correct size for this file system in the manual section for the disk. Note that the size given to \fImkfs\fP is in file system blocks of 1024 bytes, and thus the sizes in the manual page will have to be divided by 2. If not using a prototype file, substitute the size for \fIproto\fP in the mkfs command below. Finally, recall the interleaving parameters \fIm\fP and \fIn\fP that you used in making the root file system. They are in the table in section 2.2. Comments are enclosed in ( ); don't type these. Then execute the following commands (substituting \fIrmt1\fP and \fInrmt1\fP for \fIrmt0\fP and \fInrmt0\fP respectively if you have a 1600 bpi tape on an ht or tm controller): .br .ne 5 .sp .ID .ta \w"\fB#\fP\ /etc/mkfs\ /dev/r\fIdisk\fP\ \fIproto\fP\ \fIm\fP\ \fIn\fP\ \ \ "u .nf \fB#\fP /etc/mkfs /dev/r\fIdisk\fP \fIproto\fP \fIm\fP \fIn\fP (create empty user file system) \fBisize = \fP\fInnnnn\fP (the count of available inodes) \fBm/n =\fP \fIm n\fP (free list interleave parameters) (this takes a few minutes) \fB#\fP /etc/mount /dev/\fIdisk\fP /usr (mount the usr file system) \fB#\fP cd /usr (make /usr the current directory) (make sure that the first tape is mounted) \fB#\fP mt -t /dev/nrmt0 fsf 7 (skip first seven tape files) \fB#\fP tar xpf /dev/rmt0 (extract the /usr file system binaries) (this takes about 20 minutes) (now mount the second tape) \fB#\fP tar xpf /dev/rmt0 (extract the /usr file system sources) (this takes another 20 minutes) .fi .DE .PP You can now check the consistency of the /usr file system by doing .DS .TS lw(1.5i) l. \fB#\fP cd / (back to root) \fB#\fP /etc/umount /dev/\fIdisk\fP (unmount /usr) \fB#\fP fsck /dev/r\fIdisk\fP .TE .DE To use the /usr file system, you should now remount it by saying .DS \fB#\fP /etc/mount /dev/\fIdisk\fP /usr .DE .DT .PP If you are installing the distribution on a PDP11/44, 11/45, or 11/70 (machines with separate instruction and data space) you should test and install the separate I/D versions of csh, ex, etc. in /usr/70. Note, however, that these binaries assume the existence of hardware floating point support. .NH 2 Bootstrap path 2: upgrading 2.8BSD .PP Begin by reading the other parts of this document to see what has changed since the last time you bootstrapped the system. Also look at the new manual sections provided to you. If you have local system modifications to the kernel to install, look at the document ``Changes in the Kernel in 2.9BSD'' to get an idea of how the system changes will affect your local mods. Disclaimer: there are a very large number of changes from 2.8BSD to 2.9. This section may not be complete, and if a new program fails to work after being recompiled, you may find that additional libraries or other components may also need to be updated. .PP There are 6 major areas of changes that you will need to incorporate to convert to the new system: .IP 1. The new kernel and the associated programs that implement job control or read kernel memory: autoconfig, csh, the jobs library, login, ps, pstat, w, etc. .IP 2. The programs related to system reboots and shutdowns. .IP 3. The programs directly related to user text overlays: adb and ld. .IP 4 The C compiler driver, C preprocessor, and assembler. .IP 5 The new version of the standard I/O library. .IP 6. Other programs with significant bug fixes, significant improvements, or which were previously unavailable because they had not been overlaid. .PP Here is a step-by-step guide to converting. Before you begin you should do a full backup of your root and /usr file systems as a precaution against irreversible mistakes. .IP 1. Set the shell variable ``nbsd'' to the name of a directory where an empty file system can be mounted and .\"CHECK a quantity of material from the tape (you should allow for about 38 megabytes) can be extracted. Choose a disk of sufficient size to hold this quantity of material, make a file system, and mount $nbsd on this disk. Next, restore (see \fIrestor\fP\|(8)) the root file system dump image to this disk. Finally, change directory to ``$nbsd/usr'', and extract the eighth file from the first distribution tape and all of the second tape using \fItar\fP (see \fItar\fP\|(1)). .IP 2. Install the new include files by copying $nbsd/usr/include/*.h to /usr/include and $nbsd/usr/include/sys/*.h to /usr/include/sys. Install the C compiler driver from the new system by copying $nbsd/bin/cc to /bin/cc. Install the assembler from the new system by copying $nbsd/bin/as to /bin/as and $nbsd/lib/as2 to /lib/as2. Install the new C preprocessor by copying $nbsd/lib/cpp to /lib/cpp. Install the new versions of adb and ld by copying $nbsd/bin/adb and $nbsd/bin/ld to /bin. .IP 3. Reconfigure the system in $nbsd/usr/src/sys to correspond to your configuration according to the instructions in section 5. .IP 4. Put in the new versions of the following programs: .RS .IP /bin: csh, kill, login, iostat, ps, pstat, vmstat .IP /etc: autoconfig, fsck, init, mount, reboot, savecore, shutdown, umount .IP /usr/ucb: ex, w .RE .IP Merge any local changes to /etc/rc into $nbsd/etc/rc. Put the resulting file in /etc/rc. Create the directory /usr/sys and perhaps some files in this directory (read \fIsavecore\fP\|(8)). Make a device description file for \fIautoconfig\fP. See \fIdtab\fP\|(5) and \fIautoconfig\fP\|(8). .IP 5. Try bootstrapping the new system; it should now work. Make sure to write new instructions to your operators. .IP 6. Incorporate some other important bug fixes or enhancements: .RS .IP a) Replace the file tmac.an in the directory /usr/lib/tmac with the version from $nbsd/usr/lib/tmac. Replace the file /usr/lib/me/local.me with the version from $nbsd/usr/lib/me; copy $nbsd/usr/lib/me/refs.me to /usr/lib/me. .IP b) Install the new C library source, /usr/src/lib/c, rebuild and reinstall /lib/libc.a and /usr/lib/libovc.a. .IP c) Install the jobs library, /usr/src/lib/jobs and build and install /usr/lib/libjobs.a and /usr/lib/libovjobs.a. .IP d) Replace the directory /usr/src/cmd/refer. Then rebuild and reinstall the programs. .IP e) Install the new Mail source, /usr/src/ucb/Mail and reinstall /usr/ucb/Mail. .IP f) If the target machine is a nonseparate I/D CPU, install the new .I lex and .I yacc directories, compile and install the programs. .IP g) Install the new version of .I tar from $nbsd/usr/src/cmd/tar.c and also the program .I mt from $nbsd/usr/src/ucb/mt.c. .IP h) Merge your changes to /usr/src/ucb/termcap/reorder and reinstall the terminal data base, /etc/termcap. Install the new terminal library, /usr/src/ucb/termlib, remake and reinstall /usr/lib/libtermcap.a and /usr/lib/libovtermcap.a. Then make and install the new version of .I ex. .IP i) If you want the new version of the Pascal system incorporating overlays (for nonseparate I/D CPUs), remake the directories .I pi and .I px in $nbsd/usr/src/cmd and install the programs. .IP j) Install the new F77 compiler, /usr/src/cmd/f77, and the new libraries, /usr/src/lib/lib*77. Then remake and reinstall them. .IP k) Install the new library sources, /usr/src/lib/{ape,curses,m,mp,plot} and remake and reinstall the new libraries. .IP l) Install new versions of as many of the following programs as you choose: 512dumpdir, 512restor, atrun, cat, catman, ccat, compact, checkobj, ctags, df, diff, du, egrep, error, expand, fgrep, find, from, grep, hostname, jove, l11, lint, ln, lock, login, lpr, ls, m11, make, man, mkfs, more, msgs, mv, ncheck, printenv, pq, ranm, rewind, rm, rmdir, sed, setquota, size, sort, split, sq, strings, strip, stty, sysline, tail, tbl, tset, ul, uncompact, unexpand, vsh, wc. .IP m) Install the modified or new administrative programs: ac, getty, last. .IP n) Install some security fixes in the mail systems by installing new sources for berknet (/usr/src/ucb/berknet), delivermail (/usr/src/ucb/delivermail), mail (/usr/src/cmd/mail.c), and secret mail (/usr/src/cmd/xsend), and remaking and reinstalling the new binaries. .IP o) Install the new version of uucp (/usr/src/cmd/uucp). .IP p) Install the news (/usr/contrib/news) or notes (/usr/contrib/notes) bulletin board system if you wish. .IP q) Install the new \fIeqn\fP\|(1) symbol macros, /usr/public/eqnSyms. .IP r) Install manual pages corresponding to the new and changed programs. .IP s) Remove the old programs /bin/ovas, /bin/ovld, /lib/ovas2, and /bin/ovadb. Remove the libucbpath library. Remove the old version of reset and link the new version of tset to reset. .RE C-11 and other TM-11 emulations that are also capable of selecting 1600 or 800 bpi under software control. Making \fIht0\fP or \fIut0\fP will result in nodes \fImt0\fP and \fImt1\fP (800 and 1600 bpi, respectively) and parallel nodes for other options; \fIht1\fP uses the names \fImt2\fP doc/2.10/setup.2.9/setup.5 444 3 12 110702 3141360211 10103 .nr H1 5 .nr H2 0 .ds CF \*(DY .ds RH "Kernel configuration .bp .LG .B .ce 5. CONFIGURING AND COMPILING THE KERNEL .sp 2 .R .NL .PP This section describes procedures used to set up a PDP-11 UNIX kernel (operating system). It explains the layout of the kernel code, compile time options, how files for devices are made and drivers for the devices are configured into the system and how the kernel is rebuilt to include the needed drivers. Procedures described here are used when a system is first installed or when the system configuration changes. Procedures for normal system operation are described in the next section. We also suggest ways to organize local changes to the kernel. .NH 2 Kernel organization .PP The kernel source is kept in the subdirectories of /usr/src/sys. The directory /usr/src/sys/sys contains the mainline kernel code, implementing system calls, the file system, memory management, etc. The directory /usr/src/sys/dev contains device drivers and other low-level routines. The header files and scripts used to compile the kernel are kept in /usr/src/sys/conf, and are copied from there into a separate directory for each machine configuration. It is in this directory, /usr/src/sys/\fImachine\fP, that the kernel is compiled. .NH 2 Configuring a System .PP The kernel configuration of each PDP-11 UNIX system is described by a set of header files (one for each device driver) and one file of magic numbers (ioconf.c) stored in a subdirectory of /usr/src/sys for each configuration. Pick a name for your machine (call it PICKLE). Then in the /usr/src/sys/conf directory, create a configuration file PICKLE describing the system you wish to build, using the format in .IR config (8). This is most easily done by making a copy of the GENERIC file used for the distributed UNIX binary. Many of the fields in the configuration file correspond to parameters listed in the remainder of this section, which should be scanned before proceeding. See especially section 5.4.3 on how to set up automatic reboots and dumps. Then use \fIconfig\fP to create a system directory ../PICKLE with ``config PICKLE.'' Note the difference between \fIconfig\fP and \fIautoconfig\fP. \fIConfig\fP sets up a directory in which the kernel will be compiled, with all of the system-specific files used in compilation, and specifies what devices will potentially be supported. \fIAutoconfig\fP adapts the running kernel to the hardware actually present, by testing and setting the register addresses and interrupt vectors. .PP \fIConfig\fP does most of the work of configuration, but local needs will dictate some changes in the options and parameters in the header files. All of the options are listed in the next section. Examine whoami.h, localopts.h, param.h, and param.c and make any changes required; it might also be wise to look through the header files for the devices that you have configured, to check any options specific to the device drivers that are listed there. After you have finished configuring a kernel and tested it, you should install whoami.h in /usr/include, and copy localopts.h and param.h into /usr/include/sys. This will allow user-level programs to stay in sync with the running kernel. .PP If you wish to change any disk partition tables or device control status register addresses (other than those configured at boot time by .IR autoconfig (8)), edit ioconf.c and change the appropriate line\|(s). The file l.s contains the interrupt vectors and interface code and may also be edited if necessary, but usually will require no change. Both c.c and l.s include support for all normal devices according to the header files per device, and with autoconfiguration, the actual vectors need not be specified in advance. Finally, examine the Makefile, especially the options near the top and the load rules. If you have placed the include files in the standard directories, you shouldn't have to make any changes to the options there. .PP The following sections give short descriptions of the various compile-time options for the kernel, and more extensive information on the autoreboot and disk monitoring setup. After verifying that those features are configured correctly for your system, you can proceed to kernel compilation. .NH 2 Compile Time Options .PP The 2.9BSD kernel is highly tunable. This section gives a brief description of the many compile-time options available, and references to sections of the Berkeley PDP-11 \s-2UNIX\s0 Programmer's manual where more information can be found. Options fall into four categories; the letters following each will be used to mark the options throughout the rest of this section. .nr x \w'Configuration Dependent\ (C)\ \ \ \ 'u .IP "Standard (S)" \nxu These include options which we consider necessary for reasonable system performance or resiliency. .IP "Desirable (D)" These include many other features that are convenient but which may be turned off if system size is critical. The user programs and libraries distributed with 2.9BSD generally assume that these are turned on, so turning them off may necessitate recompiling libraries or programs. These options, along with those designated ``standard'', have received the most thorough testing. .IP "Configuration Dependent (C)" Options that depend on such things as the physical configuration or speed issues fall into this category. .IP "Experimental (X)" New features that have not been well tested, options that have known problems, or ones that we do not normally use are listed as experimental. You should not use such options unless the problems listed are not considerations for your system, or you are willing to watch things closely and possibly do some debugging. .PP The following sections list the parameters and options used in the kernel. The parameters (section 5.3.2) have numeric values, usually table sizes, and most of them are in param.h or param.c. Those that are in param.h are typically not changed, with the possible exception of \fBMAXMEM\fP, as their values are set by convention. The option flags are either defined or undefined to enable or disable the corresponding feature, with the exception of \fBUCB_NKB\fP, which is unlikely to change. Each option is marked with a letter to indicate into which of the four categories above it falls. .NH 3 Hardware .PP .nr x \w'\fBTEXAS_AUTOBAUD\fP\ \ X\ \ \ ' .nr y \w'\fBTEXAS_AUTOBAUD\fP\ \ ' .IP \fBENABLE34\h'|\nyu'X\fP \nxu Automatically detect and support Able Computer's ENABLE/34\(dg .FS \u\(dg\d\s-2ENABLE/34\s0 is a trademark of Able Computer, Inc. .FE memory management board. This option implies \fBUNIBUS_MAP\fP. .IP \fBNONFP\h'|\nyu'C\fP Do not compile in code to automatically detect and support an FP11 floating point processor. Also, include a fast illegal-instruction trap handler and modify the signal routines to make it possible to run programs using the floating-point interpreter under trace. .IP \fBNONSEPARATE\h'|\nyu'C\fP Do not attempt to support separate I/D user programs. .IP \fBPARITY\h'|\nyu'C\fP Recognize and deal with cache and memory parity traps. .IP \fBPDP11\h'|\nyu'C\fP This should be set to the CPU type of the target machine (23, 24, 34, 40, 44, 45, 60, 70, or GENERIC). You should use 34 for an 11/34A and 45 for an 11/55. GENERIC should be used to build a system which runs on a variety of CPUs. It was used to make the distributed kernels. \fBMENLO_KOV\fP and \fBNONSEPARATE\fP are defined if \fBPDP11\fP is 23, 24, 34, 40, or 60. \fBMENLO_KOV\fP is also defined if \fBPDP11\fP is GENERIC. \fBUNIBUS_MAP\fP is defined if \fBPDP11\fP is 44, 70, or GENERIC. .IP \fBSMALL\h'|\nyu'C\fP Use smaller (by about a factor of 8) queues and hash tables. .IP \fBUNIBUS_MAP\h'|\nyu'C\fP Compile in code to detect (and support if present) a UNIBUS map. .NH 3 Parameters .NH 4 Global configuration .IP \fBMAXUSERS\fP \nxu This is the maximum number of users the system should normally expect to support. \fIConfig\fP sets this from the corresponding field in the description file; the definition is copied into the system Makefile rather than a header file. It is not intended to be a hard limit. It is used in sizing other parameters (\fBCMAPSIZ\fP, \fBNFILE\fP, \fBNINODE\fP, \fBNPROC\fP, \fBNTEXT\fP, and \fBSMAPSIZ\fP). The formulae are found in \fIparam.c\fP. Reasonable values for \fBMAXUSERS\fP might be 3 or 4 on a small system (11/34, 11/40), 15 for an 11/44 with a reasonable amount of memory, and 15-30 for an 11/70 system. .IP \fBTIMEZONE\fP The number of minutes westward from Greenwich. \fIConfig\fP sets this from the corresponding field in the description file. Examples: for Pacific Standard time, 8 (* 60); for EST, 5. .IP \fBDSTFLAG\fP Should be 1 if daylight savings time applies in your locality and 0 otherwise. \fIConfig\fP sets this from the field in the description file. .IP \fBHZ\fP This is the line clock frequency (e.g. 50 for a 50 Hz. clock). .NH 4 Tunable parameters .IP \fBCMAPSIZ\fP \nxu This is the number of fragments into which memory can be broken. If this number is too low, the kernel's memory allocator may be forced to throw away a section of memory being freed because there is no room in the map to hold it. In this case, a diagnostic message is printed on the console. Normally scaled automatically according to \fBMAXUSERS\fP. .IP \fBMAXMEM\fP This sets an administrative limit on the amount of memory a process may have. It is specified as (\fInn\fP*16), where the first number is the desired value in kilobytes (the product is in clicks). This number is usually considerably lower than the theoretical maximum (304 Kb for a nonseparate I/D CPU, 464 Kb for a separate I/D CPU, assuming \fBMENLO_OVLY\fP is defined). Normal values are 128 Kb if there is no UNIBUS map (maximum physical memory 248 Kb), otherwise 200 Kb. .IP \fBNBUF\fP This sets the size of the system buffer cache. It can be no greater than 248. If \fBUCB_NKB\fP is defined, these are 1024 byte buffers. Otherwise, they are 512 byte buffers. The buffers are not in kernel data space, but are allocated at boot time. Normally scaled automatically according to \fBMAXUSERS\fP, but should be examined in the light of the disk load and amount of memory. For a small to medium system, around 20 buffers should be sufficient; a large system with many disks might use 40 to 60 or more. .IP \fBNCALL\fP This is the maximum number of simultaneous callouts (kernel event timers). Callouts are used to time events such as tab or carriage return delays. Normally scaled automatically according to \fBMAXUSERS\fP. .IP \fBNCLIST\fP This is the maximum number of clist segments. Clists are small buffer areas, used to hold tty characters while they are being processed. If \fBUCB_CLIST\fP is defined, they are not in kernel data space, and this number must be less than 512 if you are using 14 character clists (the default), or 256 for 30 character clists. (The clist size, \fBCBSIZE\fP, is in param.h.) .IP \fBNDISK\fP This is the maximum number of disks and controllers for which I/O statistics can be gathered. See \fIiostat\fP\|(8). Care must be taken that this is large enough for the parameters for each disk (\fIXX\^\fP_DKN and number of disks; see the section on disk monitoring). .IP \fBNFILE\fP This sets the maximum number of open files. An entry is made in this table each time a file is ``opened'' (see \fIcreat\fP\|(2)), \fIopen\fP\|(2)). Processes share these table entries across forks (see \fIfork\fP\|(2), \fIvfork\fP\|(2)). Normally scaled automatically according to \fBMAXUSERS\fP. .IP \fBNINODE\fP This sets the size of the inode table. There is one entry in the inode table for each open file or device, current working or root directory, saved text segment, active quota node (if \fBUCB_QUOTAS\fP is defined), and mounted file system. Normally scaled automatically according to \fBMAXUSERS\fP. .IP \fBNMOUNT\fP This indicates the maximum number of mountable file systems. It should be large enough that you don't run out at inconvenient times. .IP \fBNPROC\fP This sets the maximum number of active processes. Normally scaled automatically according to \fBMAXUSERS\fP. .IP \fBNTEXT\fP This sets the maximum number of active shared text images (including inactive saved text segments). Normally scaled automatically according to \fBMAXUSERS\fP. .IP \fBSMAPSIZ\fP This is the analogy of \fBCMAPSIZ\fP for secondary memory (swap space). Normally scaled automatically according to \fBMAXUSERS\fP. .NH 4 Parameters that are set by convention .IP \fBCANBSIZ\fP \nxu This sets the maximum size of a terminal line input buffer. If using the old tty line discipline, exceeding this bound causes \fIall\fP characters to be lost. In the new tty line discipline, no more characters are accepted until there is room. Normally 256. .IP \fBMAXSLP\fP This is the maximum time a process can sleep before it is no longer considered a ``short term sleeper.'' It is used only if \fBUCB_METER\fP is defined. Normally 20. .IP \fBMAXUPRC\fP This sets the maximum number of processes each user is allowed. Normally 20, but can be lower on heavily loaded systems. .IP \fBMSGBUFS\fP This is the number of characters saved from system error messages. It is actually the size of circular buffer into which messages are temporarily saved. It is expected that \fIdmesg\fP\|(8) will be run by \fIcron\fP\|(8) frequently enough that no message is overwritten before it can be saved in the system error log. Normally 128. .IP \fBNCARGS\fP This is the maximum size of an \fIexec\fP\|(2) argument list (in bytes). Normally 5120. .IP \fBNOFILE\fP This sets the maximum number of open files each process is allowed. Normally 20. .IP \fBSINCR\fP The increment (in clicks) by which a process's stack is expanded when a stack overflow segmentation fault occurs. Normally 20. .IP \fBSSIZE\fP The initial size (in clicks) of a process's stack. This should be made larger if commonly run processes have large data areas on their stacks. Normally 20. .NH 3 General Options .PP .IP \fBACCT\h'|\nyu'D\fP \nxu Enable code which (optionally) writes an accounting record for each process at exit. See \fIlastcomm\fP\|(1), \fIsa\fP\|(1), \fIacct\fP\|(2), \fIaccton\fP\|(8). .IP \fBCGL_RTP\h'|\nyu'C\fP Support a system call which marks a process as a ``real time'' process, giving it higher priority than all others. See \fIrtp\fP\|(2). .IP \fBDIAGNOSTIC\h'|\nyu'C\fP Turn on more stringent error checking. This enables various kernel consistency checks which are considered extremely unlikely to fail. It is useful when the system is inexplicably crashing. .IP \fBINSECURE\h'|\nyu'C\fP Do not turn off the set-user-id or set-group-id permissions on a file when it is written. .IP \fBMENLO_JCL\h'|\nyu'D\fP Support reliable signal handling and enhanced process control features. See \fIsigsys\fP\|(2j), \fIjobs\fP\|(3j), \fIsigset\fP\|(3j). This option requires \fBUCB_NTTY\fP. .IP \fBMENLO_KOV\h'|\nyu'C\fP Support automatic kernel text overlays. This is required for nonseparate I/D systems and is defined automatically if \fBPDP11\fP is defined to be 23, 24, 34, 40, 60, or GENERIC. .IP \fBMENLO_OVLY\h'|\nyu'D\fP Support automatic user text overlays. This is required in order to run certain programs (e.g. \fIex\fP version 3.7 or, on nonseparate I/D systems, the process control C shell). .IP \fBOLDTTY\h'|\nyu'C\fP Support the standard V7 tty line discipline (see \fItty\fP\|(4)). This must be defined if \fBUCB_NTTY\fP is not defined. .IP \fBUCB_AUTOBOOT\h'|\nyu'D\fP Allows the kernel to automatically reboot itself, either on demand (see \fIreboot\fP\|(2) and \fIreboot\fP\|(8)) or after \fIpanic\fP\^s. This option requires a little planning; see section 5.4.3. .B This option requires UCB_FSFIX. .R .IP \fBUCB_CLIST\h'|\nyu'C\fP Map clists out of kernel virtual data space. If there is sufficient space in kernel data for an adequate number of clists, this option should not used. Mostly used on large systems, or on systems where kernel data space is tight. .IP \fBUCB_GRPMAST\h'|\nyu'C\fP Allow one user to be designated a ``group super-user,'' able to perform various functions previously restricted to root or the file's owner alone. In the kernel, users whose group and user ids are the same are granted the same permissions with respect to files in the same group as is the owner. User level software implements other permissions, allowing the group super-user to change the password of a user in the same group. The most common use for this is in allowing teaching assistants to oversee students. .IP \fBUCB_NET\h'|\nyu'X\fP Enable code implementing a PDP-11 port of Berkeley's version of TCP/IP. The code is experimental and the implementation is incomplete. .IP \fBUCB_NTTY\h'|\nyu'S\fP Support the Berkeley tty line discipline (see \fItty\fP\|(4) and \fInewtty\fP\|(4)). This must be defined if \fBOLDTTY\fP is not defined. .IP \fBUCB_PGRP\h'|\nyu'C\fP Fix a bug in the way standard V7 counts a user's processes. This should be enabled only if \fBMENLO_JCL\fP is undefined, since the notion of process groups is completely different in the two cases. If \fBUCB_PGRP\fP and \fBMENLO_JCL\fP are both defined, the limit on the number of processes allowed per user (\fBMAXUPRC\fP) is effectively eliminated. .IP \fBUCB_SCRIPT\h'|\nyu'X\fP Allow scripts to specify their own interpreters. For example, executing a script beginning with ``#! /bin/sh'' causes /bin/sh to be executed to interpret the script. This is not (yet) the same as the facility on 4.1BSD VMUNIX, and probably needs a little work. The Bourne shell, /bin/sh, would need modification also. .IP \fBUCB_UPRINTF\h'|\nyu'D\fP Write error messages directly on a user's terminal when the user causes a file system to run out of inodes or free blocks, or on certain mag tape errors. .IP \fBUCB_VHANGUP\h'|\nyu'D\fP Support a system call which allows \fIinit\fP\|(8) to revoke access to a user's terminal when the user has logged out. This is used to give new users ``clean'' terminals on login. .IP \fBVIRUS_VFORK\h'|\nyu'D\fP Implement a much more efficient version of fork in which parent and child share resources until the child \fIexec\fP\^s. See \fIvfork\fP\|(2). Note that this changes the way processes appear in memory. It makes swap operations slower, and thus might not be desirable on systems which swap heavily. .NH 3 File system .PP .IP \fBINTRLVE\h'|\nyu'X\fP \nxu Allows interleaving of file systems across devices. See \fIintrlve\fP\|(4). .IP \fBMPX_FILS\h'|\nyu'X\fP Include code for the V7 multiplexer. The code is buggy and unsupported. .IP \fBUCB_FSFIX\h'|\nyu'S\fP Ensure that file system updates are done in the correct order, thus making damaged file systems less likely and more easily repairable. .B This option is required by UCB_AUTOBOOT (actually, by the \-p option of \fIfsck\fP\|(8), which makes certain assumptions about the state of the file systems). .R .IP \fBUCB_SYMLINKS\h'|\nyu'C\fP Add a new inode type to the file system: the symbolic link. Symbolic links cause string substitution during the pathname interpretation process. See \fIln\fP\|(1), \fIreadlink\fP\|(2), and \fIsymlink\fP\|(2). .IP \fBUCB_NKB\h'|\nyu'S\fP Use file system blocks of \fIN\fP KB, normally 1. Changes the fundamental file system unit from 512 byte blocks to 1024 byte blocks (with a corresponding reduction in the size of in-core inodes). This increases file system bandwidth by 100%. Note that \fBUCB_NKB\fP is not boolean, but is defined as 1 for 1KB blocks. Other values are possible, but require additional macro definitions. All file systems would have to be remade with new versions of \fImkfs\fP and \fIrestor\fP. .B All supplied software expects this option to be enabled. .R .IP \fBUCB_QUOTAS\h'|\nyu'C\fP Support a simplistic (and easily defeated) dynamic disk quota scheme. See \fIls\fP\|(1), \fIpq\fP\|(1), \fIquota\fP\|(2), and \fIsetquota\fP\|(8). .NH 3 Performance Monitoring .PP .IP \fBDISKMON\h'|\nyu'C\fP \nxu Keep statistics on the buffer cache. They are printed by the \-\fIb\fP option of \fIiostat\fP\|(8). .IP \fBUCB_LOAD\h'|\nyu'D\fP Enable code that computes a Tenex style load average. See \fIla\fP\|(1), \fIgldav\fP\|(2), \fIloadav\fP\|(3). .IP \fBUCB_METER\h'|\nyu'D\fP Keep statistics on memory, queue sizes, process states, interrupts, traps, and many other (possibly useful) things. See \fIvmstat\fP\|(1) and section 7.5 of this paper. .NH 3 Device Drivers .PP In this section, an \fBXX_\fP prefix refers to the UNIX name of the device for which the option is intended to be enabled. For example, \fBTM_IOCTL\fP refers to mag tape \fIioctl\fP\^s in tm.c. Most of these definitions go in the header file \fIxx.h\fP for the device. The exceptions are \fBBADSECT\fP, \fBMAXBAD\fP, \fBUCB_DEVERR\fP, and \fBUCB_ECC\fP. .IP \fBBADSECT\h'|\nyu'C\fP \nxu Enable bad-sector forwarding. Sectors marked bad by the disk formatter are transparently replaced when read or written. Currently, only the hk driver's code has been thoroughly tested. .IP \fBDDMT\h'|\nyu'C\fP Currently used only by the tm driver. Should be defined if you have a TM-11 emulator which supports 800/1600 bpi dual density drives with software selection. .IP \fBDZ_PDMA\h'|\nyu'C\fP Configure the dz driver to do pseudo-dma. .IP \fBMAXBAD\h'|\nyu'C\fP This sets the maximum number of replacement sectors available on a disk supporting DEC standard bad sector forwarding. It can be no larger than 126 but may be smaller to reduce the size of kernel data space. See the include file /\fIusr\fP/\fIinclude\fP/\fIsys\fP/\fIdkbad.h\fP. .IP \fBTEXAS_AUTOBAUD\h'|\nyu'C\fP Support an \fIioctl\fP which defeats detection of framing or parity errors. This is used by \fIgetty\fP\|(8) to accurately guess a line's speed when a carriage return is typed. .IP \fBUCB_DEVERR\h'|\nyu'D\fP Print device error messages in a human readable (mnemonic) format. .IP \fBUCB_ECC\h'|\nyu'C\fP Recognize and correct soft ecc disk transfer errors. .IP \fBVP_TWOSCOMPL\h'|\nyu'C\fP Used in the Versatec (vp) driver. If defined, the byte count register will be loaded with the twos-complement of the byte count, rather than the byte count itself. Check your controller manual to see whether your controller requires this. .IP \fBXX_IOCTL\h'|\nyu'D\fP Turn on optional \fIioctl\^\fPs for the corresponding device. See section 4 of the Berkeley PDP-11 \s-2UNIX\s0 Programmer's manual for details. .IP \fBXX_SILO\h'|\nyu'D\fP Used in the dh and dz drivers. If defined, the drivers will use silo interrupts to avoid taking an interrupt for each character received. .IP \fBXX_SOFTCAR\h'|\nyu'C\fP Currently used only by the dh and dz drivers. Should be defined if not all of the lines on a DH-11 or DZ-11 use modem control. It allows one to select lines on which modem control will be disabled. See \fIdh\fP\|(4) and \fIdz\fP\|(4). It can also be used with escape-code autodialers to allow modem control to be ignored while talking to the dialer. .IP \fBXX_TIMEOUT\h'|\nyu'D\fP Enable a watchdog timer. This is used to kick devices prone to losing interrupts. It is currently available only for the tm driver. .NH 3 Miscellaneous System Calls .PP .IP \fBUCB_LOGIN\h'|\nyu'C\fP \nxu Support a system call which can mark a process as a ``login process'' and set its recharge number (for accounting purposes). This is usually done by \fIlogin\fP\|(1). See \fIlogin\fP\|(2). .IP \fBUCB_RENICE\h'|\nyu'D\fP Support a system call which allows a user to dynamically change a process's ``nice'' value over the entire range (-127 to 127) of values. See \fIrenice\fP\|(1) and \fIrenice\fP\|(2). .IP \fBUCB_SUBM\h'|\nyu'C\fP Support a system call to mark a process as having been ``submitted,'' permitting it to run after the user has logged out and enabling special accounting for its CPU use. See \fIsubmit\fP\|(1) and \fIsubmit\fP\|(2). If this option is enabled, \fIinit\fP\|(8) sends a SIGKILL signal to a user's unsubmitted processes when that user logs out. It is ineffective if \fBMENLO_JCL\fP is defined. .NH 3 Performance Tuning .PP .IP \fBNOKA5\h'|\nyu'C\fP \nxu Simplify the code for kernel remapping by assuming that KDSA5 will not be used for normal kernel data. Kernel data space must end before 0120000 if this option is enabled. It is unfortunate but unavoidable that one must first make a kernel and size it to determine whether this option may be safely defined. It is usually possible on all but the largest separate I/D kernels, and on the small-to-medium nonseparate, overlaid kernels. The \fIchecksys\fP utility will print a warning message if the data limit is exceeded when a new kernel is loaded. .IP \fBPROFIL\h'|\nyu'C\fP Turn on system profiling. This requires a separate I/D cpu equipped with a KW11-P clock. It cannot be used on machines with ENABLE/34 boards since they have no spare page address registers. If profiling is enabled, you should change the definition of SPLFIX in the corresponding machine Makefile to \fI:splfix.profil\fP. The directory /\fIusr\fP/\fIcontrib\fP/\fIgetsyspr\fP contains a program for extracting the profiling information from the kernel. .IP \fBUCB_BHASH\h'|\nyu'D\fP Compile in code to hash buffer headers (and cut the time required by the \fIgetblk\fP routine by 50% or more on large systems). .IP \fBUCB_FRCSWAP\h'|\nyu'C\fP Force swaps on all forks and expands (but not vforks). This is used to transfer some of the load from a compute-bound CPU to an idle disk controller. This is probably not a good idea with \fBVIRUS_VFORK\fP defined, but then the load is better reduced by using vfork instead of fork. .IP \fBUCB_IHASH\h'|\nyu'D\fP Compile in code to hash in-core inodes (and cut the time required by the \fIiget\fP routine by 50% or more on large systems). .IP \fBUNFAST\h'|\nyu'C\fP Do not use inline macro expansions designed to speed up file system accesses at the cost of a larger text segment. .NH 2 Additional configuration details .PP A few of the parameters and options require a little care to set up; those considerations are discussed here. .NH 3 Alternate disk drivers .PP There are several disk drivers provided for SMD disks. The \fBhp\fP driver supports RP04/05/06 disks; \fBrm\fP supports RM02/03 disks, and \fBdvhp\fP supports 300 Mbyte drives on Diva controllers. In addition, there is an \fBxp\fP driver which handles any of the above, plus RM05 disks, multiple controllers, and disks which are similar to those listed but with different geometry (e.g. Fujitsu 160 Mbyte drives). It can be used with UNIBUS or MASSBUS controllers or both. In general, if you have only one type of disk and one controller, the \fBhp\fP, \fBrm\fP or \fBdvhp\fP drivers are the best choices, since they are smaller and simpler. If you use the \fBxp\fP driver, it can be set up in one of two ways. If \fBXP_PROBE\fP is defined in xp.h, the driver will attempt to determine the type of each disk and controller by probing and using the drive type register. To save the space occupied by this routine, or to specify different drive parameters, the drive and controller structures can be initialized in ioconf.c if \fBXP_PROBE\fP is not defined. The controller addresses will have to be initialized in either case (at least the first, if it is a boot device). The file /usr/include/sys/hpreg.h provides the definitions for the flags and sizes. Ioconf.c has an example of initialized structures. .IR Xp (4) gives more information about drive numbering, etc. .NH 3 Disk monitoring parameters .PP The kernel is capable of maintaining statistics about disk activity for specified disks; this information can be printed by .IR iostat (8). This involves some setup, however, and if parameters are set incorrectly can cause the kernel monitoring routines to overrun their array bounds. To set this up correctly, choose the disks to be monitored. \fIIostat\fP is configured for a maximum of 4 disks, but that could be changed by editing the headers. The drivers that do overlapped seeks (hk, hp, rm and xp) use one field for each drive (N\fIXX\fP) plus one for the controller; the others use only one field, for the controller. When both drives and controllers are monitored, the drives come first, starting at \fIDK\^\fP_DKN, followed by the controller (or controllers, in the case of xp). Then set \fBNDISK\fP in param.c to the desired number. The number of the first slot to use for each driver is defined as \fIDK\fP_DKN in the device's header file, or is undefined if that driver is not using monitoring. \fIIostat\fP currently expects that if overlapped seeks are being metered, those disks are first in the array (i.e., DKN for that driver is 0). As an example, for 3 RP06 disks using the hp driver plus 1 RL02, HP_DKN should be 0, RL_DKN should be 4, and \fBNDISK\fP should be 5 (3 hp disks + 1 hp controller + 1 rl). The complete correspondence for \fIiostat\fP would then be: .DS .TS l l. 0 (HP_DKN + 0) hp0 seeks 1 (HP_DKN + 1) hp1 seeks 2 (HP_DKN + 2) hp2 seeks 3 (HP_DKN + NHP) hp controller transfers 4 (RL_DKN + 0) rl transfers .TE .DE .B It is very important that NDISK be large enough, since the drivers do not check for overflow. .P .PP After the kernel disk monitoring is set up, \fIiostat\fP itself needs to be edited to reflect the numbers and types of the disks. The source is in /usr/src/cmd. .NH 3 Automatic reboot .PP The automatic reboot facility (\fBUCB_AUTOBOOT\fP) includes a number of components, several of which must know details of the boot configuration. The kernel has an integral boot routine, found in boot.s in the configuration directory for the machine, which reads in a block 0 bootstrap from the normal boot device and executes it. The block 0 bootstrap normally loads \fBboot\fP from the first file system on drive 0 of the disk; this can be changed if necessary. The second-stage bootstrap, /boot, needs to know where to find unix. .PP The first step is to determine which kernel boot to use. Currently, there are boot modules supplied for the following disk types: hk, rl, rm, rp, dvhp, sc11 and sc21 (the last two are for Emulex SC11 and SC21 controllers, using the boot command). If one of these will work with your boot disk, place that entry in the \fBbootdev\fP field in the device configuration file before running \fIconfig\fP, or simply copy ../conf/\fIdk\^\fPboot.s to boot.s in the machine configuration directory. If no boot module supplied will work, it is not too difficult to create one for your machine. The easiest way to do this is to copy one of the other boot modules, and modify the last section which actually reads the boot block. If you have a bootstrap ROM, you can simply jump to the correct entry with any necessary addresses placed in registers first. Or, you can write a small routine to read in the first disk block. If you don't have a boot module, \fBbootdev\fP in the configuration file should be specified as \fBnone\fP, and noboot.s will be installed. This is a dummy file that keeps the load rules from changing. The \fBUCB_AUTOBOOT\fP option should not be defined until a boot module is obtained. .PP The other change that is normally required is to specify where /unix will be found. This is done by changing the definition of \fBRB_DEFNAME\fP in /usr/include/sys/reboot.h. The definition is a string in the same format as the manual input to boot, for example "xp(0,0)unix". After making this change, boot will need to be recompiled (in /usr/src/sys/stand/bootstrap) and installed. It can be installed initially as /newboot, and the original boot can be used to load it for testing: .DS .B >boot \fInn\fPBoot .R \fB:\fP \fIdk\|\fP(0,0)newboot .B \fInn\fPBoot .R \fB:\fP \fIdk\|\fP(0,0)unix .DE .PP If you want to have core dumps made after crashes, this must be specified in the configuration file as well. Dumps are normally taken on the end of the swap device before rebooting, and after the system is back up and the file systems are checked, the dump will be copied into /usr/sys by .IR savecore (8). Dump routines are available for the hk, hp, rm and xp drivers. To install, change the \fBdumpdev\fP entry to the same value as the swap device. Then set \fBdumplo\fP to a value that will allow as much as possible of memory to be saved. The dump routine will start the dump at dumplo and continue to the end of memory or the end of the swap device partition, whichever comes first. Dumplo should be larger than swplo so that any early swaps will not overwrite the dump, but if possible, should be low enough that there is room for all of memory. The \fBdumproutine\fP entry in the configuration file is then set to \fIdk\^\fPdump, where \fIdk\fP is the disk type. Finally, after running \fIconfig\fP, edit the header file \fIdk\fP.h in the new configuration directory to define \fIDK\^\fP_DUMP, so that that dump routine will be included when the driver is compiled. .NH 3 Considerations on a PDP-11/23 .PP If setting up a kernel on a PDP-11/23, it is necessary to consider the interrupt structure of the hardware. If there are any single-priority boards on the bus, they must be behind all multiple-priority devices. Otherwise, they may accept interrupts meant for another, higher-priority device farther from the processor, at a time when the system has set the processor priority to block the single-level device. The alternative is to use spl6 uniformly for any high processor priority (spl4, spl5, spl6). This may be accomplished by changing the _spl routines in mch.s, the definitions of br4 and br5 in l.s, and by changing the script :splfix.mtps (in the \fIconf\fP directory). .PP Berkeley \s-2UNIX\s0 does not support more than 256K bytes of memory on the 11/23. If you have extra memory and a way to use it (e.g. a disk driver capable of 22-bit addressing) you will want to change this. .NH 2 Compiling the kernel .PP Once you have made any local changes, you are ready to compile the kernel. If you have made any changes which will affect the dependency rules in the Makefile, run ``make depend'' (the output of this command is best appreciated on a crt). Then, ``make unix.'' Note: although several shortcuts have been built into the makefile, the nonseparate I/D \fImake\fP occasionally runs out of space while recompiling the kernel. If this happens, just restart it and it will generally make it through the second time. The split I/D version of \fImake\fP in /usr/70 should have no problem. Also note, it is imperative that overlaid kernels be compiled with the 2.9BSD versions of \fIcc\fP, \fIas\fP (and \fIas2\fP) and \fIld\fP. Use of older C preprocessors or assemblers will result in compile-time errors or (worse) systems that will almost run, but crash after a short time. .PP After the unix binary is loaded, the makefile runs a small program called \fIchecksys\fP which checks for size overflows. If you are building an overlaid system, check the size of the object file (see \fIsize\fP\|(1)) and overlay layout. The overlay structure may be changed by editing the makefile. For a non-separate I/D system, the base segment size must be between 8194 and 16382 bytes and each overlay must be at most 8192 bytes. The final object file ``unix'' should be copied to the root, and then booted to try it out. It is best to name it /newunix so as not to destroy the working system until you're sure it does work: .DS \fB#\fP cp unix /newunix \fB#\fP sync .DE It is also a good idea to keep the old system around under some other name. In particular, we recommend that you save the generic distribution version of the system permanently as /genericunix for use in emergencies. .PP To boot the new version of the system you should follow the bootstrap procedures outlined in section 2.4 above. A systematic scheme for numbering and saving old versions of the system is best. .PP You can repeat these steps whenever it is necessary to change the system configuration. .NH 2 Making changes to the kernel .PP If you wish to make local mods to the kernel you should bracket them with .DS #ifdef PICKLE \&... #endif .DE perhaps saving old code between .DS #ifndef PICKLE \&... #endif .DE This will allow you to find changed code easily. .PP To add a device not supported by the distribution system you will have to place the driver for the device in the directory /usr/src/sys/dev, edit a line into the block and/or character device table in /usr/src/sys/PICKLE/c.c, add the name of the device to the OPTIONAL line of the file Depend, and to the makefile load rules. Place the device's address and interrupt vector in the files ioconf.c and l.s respectively if it is not going to be configured by .IR autoconfig (8); otherwise, l.s will only need the normal interface to the C interrupt routine. If you use autoconfiguration, you will need an attach routine in the driver, and a probe routine in the driver or in \fIautoconfig\fP. Use the entries for a similar device as an example. If the device driver uses the UNIBUS map or system buffers, it will probably need modifications. Check ``Changes in the Kernel in 2.9BSD'' for more technical information regarding driver interfacing. You can then rebuild the system (be sure to make \fIdepend\fP first). After rebooting the resulting kernel and making appropriate entries in the /dev directory, you can test out the new device and driver. Section 7.1 explains shutdown and reboot procedures. onf.c if \fBXP_PROBE\fP is not defined. The controller addressdoc/2.10/setup.2.9/setup.6 444 3 12 33373 3141356030 10100 .ds RH Recompiling system software .bp .nr H1 6 .nr H2 0 .bp .LG .B .ce 6. RECOMPILING SYSTEM SOFTWARE .sp 2 .R .NL .PP We now describe how to recompile system programs and install them. Some programs must be modified for the local system at this time, and other local changes may be desirable now or later. Before any of these procedures are begun, be certain that the include files , and are correct for the kernel that has been installed. This is important for commands that wish to know the name of the local machine or that size their data areas appropriately for the type of CPU. The general procedures are given first, followed by more detailed information about some of the major systems that require some setup. .NH 2 Recompiling and reinstalling system software .PP It is easy to regenerate the system, and it is a good idea to try rebuilding pieces of the system to build confidence in the procedures. The system consists of three major parts: the kernel itself, along with the bootstrap and standalone utilities (/usr/src/sys), the user programs (/usr/src/cmd, /usr/src/ucb, and subdirectories), and the libraries (/usr/src/lib). The major part of this is /usr/src/cmd. .PP We have already seen how to recompile the system itself. The commands and libraries can be recompiled in their respective source directories using the Makefile (or Ovmakefile if there are both overlaid and non-overlaid versions). However, it is generally easier to use one of the MAKE scripts set up for /usr/src/lib, /usr/src/cmd, and /usr/src/ucb. These are used in a similar fashion, such as .DS \fB#\fP ./MAKE\|\| \-40\|\| [ \-cp ]\|\| [ \-f ]\|\| file ... .DE The first, required flag sets the CPU class for which to compile. Three classes are used to used to set requirements for separate instruction and data and for floating point. ``MAKE\|\| \-40'' makes nonseparate I/D versions that load the floating point interpreter as required. ``MAKE\|\| \-34'' is similar but assumes a hardware floating point unit. ``MAKE\|\| \-70'' is used for separate I/D machines and also assumes floating point hardware. ``MAKE\|\| \-70\|\| \-f'' is used for separate I/D machines without floating point hardware. The use of these MAKE scripts automates the selection of CPU-dependent options and makes the optimal configuration of each program for the target computer. The optional argument \-cp causes each program to be installed as it is made. They are installed in the normal directories, unless the environment variable DESTDIR is set, in which case the normal path is prepended by DESTDIR. This can be used to compile and create a new set of binary directories, e.g. /nbsd/bin, /nbsd/lib, etc. Running the command ``MAKE\|\| \-70\|\| \-cp *'' in /usr/src/lib, /usr/src/cmd and /usr/src/ucb would thus create a whole new tree of system binaries. The six major libraries are the C library in /usr/src/lib/c, the jobs library, /usr/src/lib/jobs, the \s-2FORTRAN\s0 libraries /usr/src/lib/libF77, /usr/src/lib/libI77, and /usr/src/lib/libU77, and the math library /usr/src/lib/m. Most libraries are made in two versions, one each for use with and without process overlays. In each case the library is remade by changing into /usr/src/lib and doing .DS \fB#\fP ./MAKE\|\| \-\fIcpu\fP\|\| \fIlibname\fP .DE or made and installed by .DS \fB#\fP ./MAKE\|\| \-\fIcpu\fP\|\| \-cp\|\| \fIlibname\fP .DE Similar to the system, .DS \fB#\fP make clean .DE cleans up in each subdirectory. .PP To recompile individual commands, change to /usr/src/cmd or /usr/src/ucb, as appropriate, and use the MAKE script in the same way. Thus to compile adb, do .DS \fB#\fP ./MAKE \-\fIcpu\fP adb .DE where cpu is 34, 40, or 70. To recompile everything, use .DS \fB#\fP ./MAKE \-\fIcpu\fP * .DE After installing new binaries, you can use the script in /usr/src to link files together as necessary and to set all the right set-user-id bits. .DS \fB#\fP cd /usr/src \fB#\fP ./MAKE aliases \fB#\fP ./MAKE modes .DE .NH 2 Making local modifications .PP To keep track of changes to system source we migrate changed versions of commands in /usr/src/cmd in through the directory /usr/src/new and out of /usr/src/cmd into /usr/src/old for a time before removing them. Locally written commands that aren't distributed are kept in /usr/src/local and their binaries are kept in /usr/local. This allows /usr/bin, /usr/ucb, and /bin to correspond to the distribution tape (and to the manuals that people can buy). People wishing to use /usr/local commands are made aware that they aren't in the base manual. As manual updates incorporate these commands they are moved to /usr/ucb. .PP A directory /usr/junk to throw garbage into, as well as binary directories /usr/old and /usr/new are useful. The \fIman\fP\|(1) command supports manual directories such as /usr/man/mann for new and /usr/man/manl for local to make this or something similar practical. .NH 2 Setting up the mail system .PP The mail system can be set up in at least two ways. One strategy uses the .IR delivermail (8) program to sort out network addresses according to the local network topology. It is not perfect, especially in the light of changing ARPAnet conventions. However, if you use the Berkeley network or are connected directly or indirectly to the ARPAnet, it is probably the method of choice for the time being. On the other hand, if you use only local mail and UUCP mail, /bin/mail (\c .IR mail (1)) will suffice as a mail deliverer. In that case, you will only need to recompile .IR mail (1) and .IR Mail (1). .PP The entire mail system consists of the following commands: .DS .TS l l. /bin/mail old standard mail program (from V7 or System III) /usr/ucb/Mail UCB mail program, described in Mail(1) /usr/lib/Mail.rc aliases and defaults for Mail(1) /etc/delivermail mail routing program /usr/net/bin/v6mail local mailman for berknet /usr/spool/mail mail spooling directory /usr/spool/secretmail secure mail directory /usr/bin/xsend secure mail sender /usr/bin/xget secure mail receiver /usr/lib/aliases mail forwarding information for delivermail /usr/ucb/newaliases command to rebuild binary forwarding database .TE .DE Mail is normally sent and received using the .IR Mail (1) command, which provides a front-end to edit the messages sent and received, and passes the messages to .IR delivermail (8) or .IR mail (1) for routing and/or delivery. .PP Mail is normally accessible in the directory /usr/spool/mail and is readable by all users.\(dg .FS \u\(dg\d You can make your mail unreadable by others by changing the mode of the file /usr/spool/mail/\fIyourname\fR to 600 and putting the line ``set keep'' in your .mailrc file. The directory /usr/spool/mail must not be writable (mode 755) for this to work. .FE To send mail which is secure against any possible perusal (except by a code-breaker) you should use the secret mail facility, which encrypts the mail so that no one can read it. .NH 3 Setting up mail and Mail .PP Both /bin/mail and /usr/ucb/Mail should be recompiled to make local versions. Remake mail in /usr/src/cmd with the command .DS \fB#\fP ./MAKE \-\fIcpu\fP mail .DE Install the new binary in /bin after testing; it must be setuserid root. Section 6.1 gives more details on the use of the MAKE scripts. To configure \fIMail\fP, change directories to /usr/src/ucb/Mail. Edit the file v7.local.h to assign a letter to your machine with the definition of LOCAL; if you do not have a local area network, the choice is arbitrary as long as you pick an unused letter. If you wish to use \fIdelivermail\fP, the definition of SENDMAIL should be uncommented. Then add your machine to the table in config.c; configdefs.h gives some information on this. The network field should specify which networks (if any) you are connected to (note: the Schmidt net, SN, is Berknet). After the changes are made, move to /usr/src/ucb and .DS \fB#\fP ./MAKE \-40 Mail (on a nonseparate I/D machine) or \fB#\fP ./MAKE \-70 Mail (on a separate I/D machine) .DE Install \fIMail\fP in /usr/ucb; it should \fBnot\fP be setuserid. The Mail.rc file in /usr/lib can be used to set up limited distribution lists or aliases if you are not using \fIdelivermail\fP. .NH 3 Setting up delivermail .PP To set up the \fIdelivermail\fP facility you should read the instructions in the file READ_ME in the directory /usr/src/ucb/delivermail and then adjust and recompile the \fIdelivermail\fP program, installing it as /etc/delivermail. The routing algorithm uses knowledge of network name syntax built into its tables and aliasing and forwarding information built into the file /usr/lib/aliases to process each piece of mail. Local mail is delivered by giving it to the program /usr/net/bin/v6mail which adds it to the mailboxes in the directory /usr/spool/mail/\fIusername\fP, using a locking protocol to avoid problems with simultaneous updates. You should also set up the file /usr/lib/aliases for your installation, creating mail groups as appropriate. .NH 2 Setting up a uucp connection .PP To connect two UNIX machines with a \fIuucp\fP network link using modems, one site must have a automatic call unit and the other must have a dialup port. It is better if both sites have both. .PP You should first read the paper in volume 2B of the UNIX Programmers Manual: ``Uucp Implementation Description.'' It describes in detail the file formats and conventions, and will give you a little context. For any configuration, you must recompile all system dependent programs. .PP Change directory to /usr/src/cmd/uucp and examine uucp.h, making any necessary changes. Recompile uucp with ``make'' and su to ``make install.'' .PP You should ensure that the directories /usr/spool/uucp and /usr/spool/uucppublic exist. The former should be owned by uucp, mode 755 (or 777 is OK) and the latter should be mode 777 (and the home directory for login uucp). .PP Periodically you should clean out /usr/spool/uucp and /usr/spool/uucppublic, as they can accumulate junk, especially if you don't have a dialer. Run ``uulog'' once a day, and ``/usr/lib/uucp/uuclean'' periodically with appropriate options to get rid of old stuff.\(dg .FS \u\(dg\d The \fIcron\fP\|(8) program can arrange to execute these commands periodically. .FE You can also just remove some of the files in /usr/spool/uucp, but if you do this blindly you will cause some error messages to be generated when uucp tries to access a file another file claims is there. (For instance, each mail transaction creates three files.) The /usr/spool/uucppublic directory is a place for people at other sites to send to when sending files to users on your machine. You should clean it out by hand when it gets excessive. .PP If both sites have both a dialer and dialup: follow the directions in the volume 2B paper \- this is the intended mode of operation and the directions fit well. You have to configure the following files in /usr/lib/uucp: .DS .TS l l. L\|.sys setup all fields \- this lists the other sites L-devices your dialer USERFILE permissions \- this can be left alone .TE .DE You must also establish a login ``uucp'' in /etc/passwd with shell /usr/lib/uucp/uucico. Each site must know the other site's phone number, login, and password. .PP If you have only a dialup: you can be a second-class citizen on the uucp net. You must find another site that has a dialer, and have them poll you regularly. (Once a day is about the minimum that is reasonable.) When you send mail to another site, you must wait for them to call you. You must set up /usr/lib/uucp/USERFILE and /usr/lib/uucp/L\|.sys. Only the first 4 fields of L\|.sys are necessary, and in practice only the first field (site name) is looked at. A typical L\|.sys for a passive node might be: .DS .TS l l. ucbvax Any \fIACU\fP 300 research Any \fIACU\fP 300 .TE .DE where the first field on each line is a site that will poll you and \fIACU\fP is either ``ACU'' or ``DIR.'' You need to put a password on the uucp login and let the other site know your phone number, uucp login name (which is usually uucp), and password. It doesn't matter whether they call you at 300 or 1200 baud. .PP If you have a dialer and want to poll another site: normally, uucp will call the other site when it has anything to send it, and while it's at it will check to see if anything should come back. The command .DS /usr/lib/uucp/uucico \-r1 \-sucbvax .DE will force \fIuucp\fP to poll ucbvax, even if there is nothing waiting. This command can be conveniently put in /usr/lib/crontab to run early each morning. If you are having trouble with the connection, invoke uucico by hand: .DS /usr/lib/uucp/uucico \-r1 \-sucbvax \-x7 .DE where the \fB-x\fP option turns on debugging output. The higher the number, the more debugging output you get; 1, 4, and 7 are reasonable choices. .NH 2 Miscellaneous software .PP The directory /usr/contrib contains programs and packages that you may wish to install on your system. Also, some programs or libraries in the \fIucb\fP directory are sufficiently unique to be noteworthy. Here is a brief summary. .NH 3 Ape .PP \fIApe\fP (\fIA\fPrbitrary \fIP\fPrecision \fIE\fPxtended) is a replacement for the multiple precision arithmetic routines (\fImp\fP\|(3)). It is much faster and contains numerous bug fixes. .NH 3 L11, M11 .PP \fIM11\fP is a Macro-11 assembler. It recognizes and emulates almost all of the directives of standard DEC Macro-11 assemblers. \fIL11\fP is its loader. .NH 3 Jove .PP \fIJove\fP (\fIJ\fPonathan's \fIO\fPwn \fIV\fPersion of \fIE\fPMACS) is an EMACS style editor developed at Lincoln Sudbury Regional High School. .NH 3 News .PP The network bulletin board system developed at Duke University and the University of North Carolina and since heavily modified at Berkeley. .NH 3 Notes .PP The network bulletin board system developed at the University of Illinois. This version contains many enhancements and clean \fInews\fP interfaces. .NH 3 Ranm .PP \fIRanm\fP is a fast uniform pseudorandom number generator package developed at Berkeley. original boot can be used to load it for testing: .DS .B >boot \fInn\fPBoot .R \fB:\fP \fIdk\|\fP(0,0)newboot .B \fInn\fPBoot .R \fB:\fP \fIdk\|\fP(0,0)unix .DE .PP If you want to have core dumps made after crashes, this must be specified in the configurationdoc/2.10/setup.2.9/setup.7 444 3 12 27523 3141200217 10074 .nr H1 7 .nr H2 0 .ds RH "System Operation .ds CF \*(DY .bp .LG .B .ce 7. SYSTEM OPERATION .sp 2 .R .NL .PP This section describes procedures used to operate a PDP-11 UNIX system. Procedures described here are used periodically, to reboot the system, analyze error messages from devices, do disk backups, monitor system performance, recompile system software and control local changes. .NH 2 Bootstrap and shutdown procedures .PP The system boot procedure varies with the hardware configuration, but generally uses the console emulator or a ROM routine to boot one of the disks. /boot comes up and prompts (with ``: '') for the name of the system to load. Simply hitting a carriage return will load the default system. The system will come up with a single-user shell on the console. To bring the system up to a multi-user configuration from the single-user status, all you have to do is hit ^D on the console (you should check and, if necessary, set the date before going multiuser; see \fIdate\fP\|(1)). The system will then execute /etc/rc, a multi-user restart script, and come up on the terminals listed as active in the file /etc/ttys. See \fIinit\fP\|(8) and \fIttys\fP\|(5). Note, however, that this does not cause a file system check to be performed. Unless the system was taken down cleanly, you should run ``fsck \-p'' or force a reboot with \fIreboot\fP\|(8) to have the disks checked. .PP In an automatic reboot, the system checks the disks and comes up multi-user without intervention at the console. If the file system check fails, or is interrupted (after it prints the date) from the console when a delete/rubout is hit, it will leave the system in special-session mode, allowing root to log in on one of a limited number of terminals (generally including a dialup) to repair file systems, etc. The system is then brought to normal multiuser operations by signaling init with a SIGINT signal (with ``kill -INT 1''). .PP To take the system down to a single user state you can use .DS \fB#\fP kill 1 .DE or use the \fIshutdown\fP\|(8) command (which is much more polite if there are other users logged in) when you are up multi-user. Either command will kill all processes and give you a shell on the console, almost as if you had just booted. File systems remain mounted after the system is taken single-user. If you wish to come up multi-user again, you should do this by: .DS \fB#\fP cd / \fB#\fP /etc/umount -a \fB#\fP ^D .DE The system can also be halted or rebooted with .IR reboot (8) if automatic reboots are enabled. Otherwise, the system is halted by switching to single-user mode to kill all processes, updating the disks with a ``sync'' command, and then halting. .PP Each system shutdown, crash, processor halt and reboot is recorded in the file /usr/adm/shutdownlog with the cause. .NH 2 Device errors and diagnostics .PP When errors occur on peripherals or in the system, the system prints a warning diagnostic on the console. These messages are collected regularly and written into a system error log file /usr/adm/messages by .IR dmesg (8). .PP Error messages printed by the devices in the system are described with the drivers for the devices in section 4 of the Berkeley \s-2PDP-11\s0 UNIX Programmer's manual. If errors occur indicating hardware problems, you should contact your hardware support group or field service. It is a good idea to examine the error log file regularly (e.g. with ``tail \-r /usr/adm/messages''). .PP If you have \s-2DEC\s0 field service, they should know how to interpret these messages. If they do not, tell them to contact the \s-2DEC\s0 \s-2UNIX\s0 Engineering Group. .NH 2 File system checks, backups and disaster recovery .PP Periodically (say every week or so in the absence of any problems) and always (usually automatically) after a crash, all the file systems should be checked for consistency by \fIfsck\fP\|(8). The procedures of \fIboot\fP\|(8) or \fIreboot\fP\|(8) should be used to get the system to a state where a file system check can be performed manually or automatically. .PP Dumping of the file systems should be done regularly, since once the system is going it is easy to become complacent. Complete and incremental dumps are easily done with \fIdump\fP\|(8). You should arrange to do a towers-of-Hanoi dump sequence; we tune ours so that almost all files are dumped on two tapes and kept for at least a week in almost every case. We take full dumps every month (and keep these indefinitely). .PP Dumping of files by name is best done by \fItar\fP\|(1) but the amount of data that can be moved in this way is limited to a single tape. Finally, if there are enough drives, entire disks can be copied with \fIdd\fP\|(1) using the raw special files and an appropriate block size. .PP It is desirable that full dumps of the root file system are made regularly. This is especially true when only one disk is available. Then, if the root file system is damaged by a hardware or software failure, you can rebuild a workable disk using a standalone restore in the same way that \fIrestor\fP was used to build the initial root file system. .PP Exhaustion of user-file space is certain to occur now and then; the only mechanisms for controlling this phenomenon are occasional use of \fIdf\fP\|(1), \fIdu\fP\|(1), \fIquot\fP\|(8), threatening messages of the day, personal letters, and (probably as a last resort) quotas (see \fIsetquota\fP\|(8)). .NH 2 Moving file system data .PP If you have the equipment, the best way to move a file system is to dump it to magtape using \fIdump\fP\|(8), to use \fImkfs\fP\|(8) to create the new file system, and restore, using \fIrestor\fP\|(8), the tape. If for some reason you don't want to use magtape, dump accepts an argument telling where to put the dump; you might use another disk. Sometimes a file system has to be increased in logical size without copying. The super-block of the device has a word giving the highest address that can be allocated. For small increases, this word can be patched using the debugger \fIadb\fP\|(1) and the free list reconstructed using \fIfsck\fP\|(8). The size should not be increased greatly by this technique, since the file system will then be short of inode slots. Read and understand the description given in \fIfilsys\fP\|(5) before playing around in this way. .PP If you have to merge a file system into another, existing one, the best bet is to use \fItar\fP\|(1). If you must shrink a file system, the best bet is to dump the original and restor it onto the new file system. However, this will not work if the i-list on the smaller file system is smaller than the maximum allocated inode on the larger. If this is the case, reconstruct the file system from scratch on another file system (perhaps using \fItar\fP\|(1)) and then dump it. If you are playing with the root file system and only have one drive the procedure is more complicated. What you do is the following: .IP 1. GET A SECOND PACK!!!! .IP 2. Dump the root file system to tape using \fIdump\fP\|(8). .IP 3. Bring the system down and mount the new pack. .IP 4. Load the standalone versions of \fImkfs\fP\|(8) and \fIrestor\fP\|(8) .\"CHECK as in sections 2.1-2.3 above. .IP 5. Boot normally using the newly created disk file system. .PP Note that if you add new disk drivers they should also be added to the standalone system in /usr/src/sys/stand. .NH 2 Monitoring System Performance .PP The .IR iostat (8) and .IR vmstat (8) programs provided with the system are designed to aid in monitoring systemwide activity. By running them when the system is active you can judge the system activity in several dimensions: job distribution, virtual memory load, swapping activity, disk and CPU utilization. Ideally, there should be few blocked (DW) jobs, there should be little swapping activity, there should be available bandwidth on the disk devices (most single arms peak out at 30-35 tps in practice), and the user CPU utilization (US) should be high (above 60%). .PP If the system is busy, then the count of active jobs may be large, and several of these jobs may often be blocked (DW). .PP If you run .I vmstat when the system is busy (a ``vmstat 5'' gives all the numbers computed by the system), you can find imbalances by noting abnormal job distributions. If many processes are blocked (DW), then the disk subsystem is overloaded or imbalanced. If you have several non-DMA devices or open teletype lines that are ``ringing'', or user programs that are doing high-speed non-buffered input/output, then the system time may go high (60-70% or higher). It is often possible to pin down the cause of high system time by looking to see if there is excessive context switching (CS), interrupt activity (IN) or system call activity (SY). .PP If the system is heavily loaded, or if you have little memory for your load (248K is little in almost any case), then the system will be forced to swap. This is likely to be accompanied by a noticeable reduction in system performance and pregnant pauses when interactive jobs such as editors swap out. If you expect to be in a memory-poor environment for an extended period you might consider administratively limiting system load. .NH 2 Adding users .PP New users can be added to the system by adding a line to the password file /etc/passwd. You should add accounts for the initial user community, giving each a directory and a password, and putting users who will wish to share software in the same group. User id's should be assigned starting with 16 or higher, as lower id's are treated specially by the system. Default startup files should probably provided for new users and can be copied from /usr/public. Initial passwords should be set also. .PP A number of guest accounts have been provided on the distribution system; these accounts are for people at Berkeley and at Bell Laboratories who have done major work on UNIX in the past. You can delete these accounts, or leave them on the system if you expect that these people would have occasion to login as guests on your system. .NH 2 Accounting .PP UNIX currently optionally records two kinds of accounting information: connect time accounting and process resource accounting. The connect time accounting information is normally stored in the file /usr/adm/wtmp, which is summarized by the program .IR ac (8). The process time accounting information is stored in the file /usr/adm/acct, and analyzed and summarized by the program .IR sa (8). .PP If you need to implement recharge for computing time, you can implement procedures based on the information provided by these commands. A convenient way to do this is to give commands to the clock daemon /etc/cron to be executed every day at a specified time. This is done by adding lines to /usr/adm/crontab; see .IR cron (8) for details. .NH 2 Resource control .PP Resource control in the current version of UNIX is rather primitive. Disk space usage can be monitored by .IR du (1) or .IR quot (8) as was previously mentioned. Disk quotas can be set and changed with \fIsetquota\fP\|(8) if the kernel has been configured for quotas. Our quota mechanism is simplistic and easily defeated but does make users more aware of the amount of space they use. .NH 2 Files which need periodic attention .PP We conclude the discussion of system operations by listing the files and directories that continue to grow and thus require periodic truncation, along with references to relevant manual pages. .IR Cron (8) can be used to run scripts to truncate these periodically, possibly summarizing first or saving recent entries. Some of these can be disabled if you don't need to collect the information. .TS center; lb l a. /usr/adm/acct sa(8) raw process account data /usr/adm/messages dmesg(8) system error log /usr/adm/shutdownlog shutdown(8) log of system reboots /usr/adm/wtmp ac(8) login session accounting /usr/spool/uucp/LOGFILE uulog(1) uucp log file /usr/spool/uucp/SYSLOG uulog(1) more uucp logging /usr/dict/spellhist spell(1) spell log /usr/lib/learn/log learn(1) learn lesson logging /usr/sys savecore(8) system core images .TE signaling init with a SIGINT signal (with ``kill -INT 1''). .PP To take the system down to a single user state you can use .DS \fB#\fP kill 1 .DE or use the \fIshutdown\fP\|doc/2.10/setup.2.9/setup.8 444 3 12 3167 3141164415 10064 .nr H1 8 .nr H2 0 .ds CF \*(DY .ds RH "Magic numbers .bp .LG .B .ce 8. KERNEL MAGIC NUMBERS .sp 2 .R .NL .PP This sections contains a collection of magic numbers for use in patching core or an executable unix binary. Some of them have also been mentioned earlier in this paper. With the exception of the \fIxp_type[i]\fP variables (which hold bytes) and \fIswplo\fP (which is a long) all locations given contain short integers. N.B.: in the case of paired interrupt vectors (for DHs and DZs) the address of the second vector of the pair is four more than the address of the first vector. .PP .sp 1i .TS c s s s s c c c c c l l n n n. Interrupt Vectors .sp .5 Vector Handler Contents Block device Character device 0160 rlio 01202 8 18 0210 hkio 01142 4 19 0220 rkio 01172 0 9 0224 tmio 01222 3 12 0224 htio 01152 7 15 0224 tsio 01232 9 20 0254 xpio 01242 6 14 0260 rpio 01212 1 11 \(dg dzin 01132 - 21 \(dg dzdma 02202 - 21 \(dg dhin 01112 - 4 \(dg dhou 01122 - 4 \(dg lpio 01162 - 2 .TE .FS \u\(dg\d Set by \fIautoconfig\fP\|(8). .FE .bp .TS c s s c c c l n n. Other Variables .sp .5 Name Address Contents xp_addr 061464 0176700 xp_type[0] 061472 \(dd xp_type[1] 061506 \(dd xp_type[2] 061522 \(dd xp_type[3] 061536 \(dd HKADDR 061006 0177440 HTADDR 0114236 \(dg RKADDR 061152 0177400 RLADDR 061154 0174400 RPADDR 061236 0176710 TMADDR 0113330 \(dg TSADDR 0113622 \(dg dz_addr 0113324 \(dg dh_addr 0114146 \(dg lp_addr 0113462 \(dg rootdev 060772 * pipedev 060776 * swapdev 060774 * swplo 061000 * nswap 061004 * .TE .FS \(dg Set by \fIautoconfig\fP\|(8). .br \(dd Set by reading the corresponding drive type register. .br \u*\d System dependent. .FE l/uucp/LOGFILE uulog(1) uucp log file /usr/spool/uucp/SYSLOG uulog(1) more uucp logging /usr/dict/spellhist spell(1) spell log /usr/lib/learn/log learn(1) learn lesson logging /usr/sys savecore(8) system core images .TE signaling init with a SIGINT signal (with ``kill -INT 1''). .PP To take the system down to a single user state you can use .DS \fB#\fP kill 1 .DE or use the \fIshutdown\fP\|doc/2.10/setup.2.9/RCS/ 755 3 12 0 4043675315 7200 doc/2.10/setup.2.9/RCS/setup.2,v 444 3 12 41436 4043675314 10777 head 1.2; access ; symbols ; locks ; strict; comment @@; 1.2 date 87.04.24.07.46.30; author bostic; state Exp; branches ; next 1.1; 1.1 date 87.04.24.07.45.47; author bostic; state Exp; branches ; next ; desc @initial checkin @ 1.2 log @bug report 2.9BSD/misc/1 @ text @.ds RH Bootstrapping .bp .nr H1 2 .nr H2 0 .bp .LG .B .ce 2. BOOTSTRAP PROCEDURES .sp 2 .R .NL .PP This section explains the bootstrap procedures that can be used to get one of the kernels supplied with this tape running on your machine. If you are not yet running UNIX or are running a version of UNIX other than 2.8BSD, you will have to do a full bootstrap. .PP If you are running 2.8BSD you can use the update procedure described in section 4.2 instead of a full bootstrap. This will affect modifications to the local system less than a full bootstrap. Note, however, that a full bootstrap will probably require less effort unless you have made major local modifications which you must carry over to the new system. .PP If you are already running UNIX and need to do a full bootstrap you should first save your existing files on magnetic tape. The 2.9BSD file system uses 1K-byte blocks by clustering disk blocks (as did the 2.8BSD system); file systems in other formats cannot be mounted. .B Those upgrading from 2.8 should note that 2.9BSD uses generally different file system partition sizes than 2.8BSD, and that a few of the major device numbers have changed (in particular, that for the hk). .R The easiest way to save the current files on tape is by doing a full dump and then restoring in the new system. This works also in converting V7, System-III, or System-V 512-byte file systems. Although the dump format is different on V7, System-III, and System-V, \fI512restor\fP\|(8) can restore old format V7 \fIdump\fP image tapes into the file system format used by 2.9BSD. .IR Tar (1) can also be used to exchange files from different file system formats, and has the additional advantage that directory trees can be placed on different file systems than on the old configuration. Note that 2.9BSD does not support \fIcpio\fP tape format. .PP The tape bootstrap procedure involves three steps: loading the tape bootstrap monitor, creating and initializing a UNIX ``root'' file system system on the disk, and booting the system. .NH 2 Booting from tape .PP To load the tape bootstrap monitor, first mount the magnetic tape on drive 0 at load point, making sure that the write ring is not inserted. Then use the normal bootstrap ROM, console monitor or other bootstrap to boot from the tape. If no other means are available, the following code can be keyed in and executed at (say) 0100000 to boot from a TM tape drive (the magic number 172526 is the address of the TM-11 current memory address register; an adjustment may be necessary if your controller is at a nonstandard address): .DS .TS l l. 012700 (mov $172526, r0) 172526 010040 (mov r0, -(r0)) 012740 (mov $60003, -(r0)) 060003 000777 (br .) .TE .DE When this is executed, the first block of the tape will be read into memory. Halt the CPU and restart at location 0. .PP The console should type .DS .B \fInn\fPBoot : .R .DE where \fInn\fP is the CPU class on which it believes it is running. The value will be one of 24, 40, 45 or 70, depending on whether separate instruction and data (separate I/D) and/or a UNIBUS map are detected. The CPUs in each class are: .DS .TS c l c c. Class PDP11s Separate I/D UNIBUS map 24 24 - + 40 23, 34, 34A, 40, 60 - - 45 45, 55 + - 70 44, 70 + + .TE .DE The bootstrap can be forced to set up the machine as for a different class of PDP11 by placing an appropriate value in the console switch register (if there is one) while booting it. The value to use is the PDP11 class, interpreted as an \fIoctal\fP number (use, for example, 070 for an 11/70). \fBWarning:\fP some old DEC bootstraps use the switch register to indicate where to boot from. On such machines, if the value in the switch register indicates an incorrect CPU, be sure to reset the switches immediately after initiating the tape bootstrap. .PP You are now talking to the tape bootstrap monitor. At any point in the following procedure you can return to this section, reload the tape bootstrap, and restart. .PP To first check that everything is working properly, you can use the \fIcat\fP program on the tape to print the list of utilities on the tape. Through the rest of this section, substitute the correct disk type for \fIdk\fP and the tape type for \fItp\fP. In response to the prompt of the bootstrap which is now running, type .DS \fItp\|\fP(0,1) (load file 1 from tape 0) .DE \fICat\fP will respond .DS .B Cat File? .R .DE The table of contents is in file 2 on the tape, therefore answer .DS \fItp\|\fP(0,2) .DE The tape will move, then a short list of files will print on the console, followed by: .DS .B exit called \fInn\fPBoot : .R .DE After \fIcat\fP is finished, it returns to the bootstrap for the next operation. .NH 2 Creating an empty UNIX file system .PP Now create the root file system using the following procedures. First determine the size of your root file system from the following table: .DS .TS l l. Disk Root File System Size (1K-byte blocks) hk 2970 rk\(dg 2000 rl01\(dg 4000 rl02\(dg 8500 rp 5200 xp 4807 (RP04/RP05/RP06) 2400 (RM02/RM03) 4560 (RM05) 4702 (DIVA) .TE .DE .FS \u\(dg\dThese sizes are for full disks less some space used for swapping. .FE .PP If the disk on which you are creating a root file system is an \fBxp\fP disk, you should check the drive type register at this time to make sure it holds a value that will be recognized correctly by the driver. There are numbering conflicts; the following numbers are used internally: .DS .TS c l c l. Drive Type Register Drive Assumed Low Byte (standard address: 0776726) 022 RP04/05/06 025 RM02/RM03 027 RM05 076 Emulex SC-21/300 Mb RM05 emulation (815 cylinders) 077 Diva Comp-V/300 Mb SMD .TE .DE Check the drive type number in your controller manual, or halt the CPU and examine this register. If the value does not correspond to the actual drive type, you must place the correct value in the switch register after the tape bootstrap is running and before any attempt is made to access the drive. This will override the drive type register. This value must be present at the time each program (including the bootstrap itself) first tries to access the disk. On machines without a switch register, the \fIxptype\fP variable can be patched in memory. After starting each utility but before accessing the disk, halt the CPU, place the new drive type number at the proper memory location with the console switches or monitor, and then continue. The location of \fIxptype\fP in each utility is .\"CHECK mkfs: 032700, restor: 031570, icheck: 030150 and boot: 0427754 (the location for boot is higher because it relocates itself). Once UNIX itself is booted (see below) you must patch it also. .PP Finally, determine the proper interleaving factors \fIm\fP and \fIn\fP for your disk and CPU combination from the following table. These numbers determine the layout of the free list that will be constructed; the proper interleaving will help increase the speed of the file system. If you have a non-DEC disk that emulates one of the disks listed, you may be able to use these numbers as well, but check that the actual disk geometry is the same as the emulated disk (rather than the controller mapping onto a different physical disk). Also, the rotational speed must be the same as the DEC disk for these numbers to apply. .DS .TS cB s s s s s s s s l l l l l l l l l. Disk Interleaving Factors for Disk/CPU Combinations (\fIm\fP/\fIn\fP) CPU RK05 RK06/7 RL01/2 RM02 RM03 RM05 RP03 RP04/5/6 11/23 X/12 X/33 X/10 X/80 - - X/100 X/209 11/24 X/12 7/33 X/10 10/80 - - X/100 10/209 11/34 X/12 6/33 X/10 8/80 - - 3/100 8/209 11/40 2/12 6/33 X/10 8/80 - - 3/100 8/209 11/44 X/12 4/33 X/10 6/80 - - 2/100 6/209 11/45 2/12 5/33 X/10 7/80 - - 3/100 7/209 11/55 X/12 5/33 X/10 7/80 - - 3/100 7/209 11/60 X/12 5/33 X/10 7/80 - - 3/100 7/209 11/70 X/12 3/33 X/10 5/80 7/80 7/304 X/100 5/209 .TE .DE For example, for an RP06 on an 11/70, \fIm\fP is 5 and \fIn\fP is 209. See \fImkfs\fP\|(8) for more explanation of the values of \fIm\fP and \fIn\fP. An X entry means that we do not know the correct number for this combination of CPU and disk. If you do, please let us know. If \fIm\fP is unspecified or you have a disk which emulates a DEC disk, use the number for the most similar disk/CPU pair. .B If \fIn\fP is unspecified, use the cylinder size divided by 2. .R .PP Then run a standalone version of the \fImkfs\fP (8) program. In the following procedure, substitute the correct types for \fItp\fP and \fIdk\fP and the size determined above for \fIsize\fP: .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,3) \fBMkfs\fP \fBfile system:\fP \fIdk\|\fP(0,0) (root is the first file system on drive 0) \fBfile system size:\fP \fIsize\fP (count of 1024 byte blocks in root) \fBinterleaving factor (m, 5 default):\fP \fIm\fP (interleaving, see above) \fBinterleaving modulus (n, 10 default):\fP \fIn\fP (interleaving, see above) \fBisize = XX\fP (count of inodes in root file system) \fBm/n = \fP\fIm n\fP (interleave parameters) \fBExit called\fP \fInn\fP\fBBoot\fP \fB:\fP (back at tape boot level) .TE .DE You now have an empty UNIX root file system. .NH 2 Restoring the root file system .PP To restore a small root file system onto it, type .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,4) \fBRestor\fP \fBTape?\fP \fItp\|\fP(0,6) (unit 0, seventh tape file) \fBDisk?\fP \fIdk\|\fP(0,0) (into root file system) \fBLast chance before scribbling on disk.\fP (just hit return) (30 second pause then tape should move) (tape moves for a few minutes) .B end of tape Exit called \fInn\fPBoot \fB:\fR (back at tape boot level) .R .TE .DE If you wish, you may use the \fIicheck\fP program on the tape, \fItp\|\fP(0,5), to check the consistency of the file system you have just installed. .NH 2 Booting UNIX .PP You are now ready to boot from disk. It is best to read the rest of this section first, since some systems must be patched while booting. Then type: .DS .TS lw(1.5i) l. \fB:\fP\fIdk\|\fP(0,0)\fIdk\^\fPunix (bring in \fIdk\^\fPunix off root system) .TE .DE The standalone boot program should then read \fIdk\^\fPunix from the root file system you just created, and the system should boot: .DS .B .\"CHECK Berkeley UNIX (Rev. 2.9.5) Mon Aug 2 18:44:30 PDT 1983 mem = xxx CONFIGURE SYSTEM: .R (Information about various devices will print; most of them will probably not be found until the addresses are set below.) .B erase=^?, kill=^U, intr=^C # .R .DE If you are booting from an \fIxp\fP with a drive type that is not recognized, it will be necessary to patch the system before it first accesses the root file system. Halt the processor after it has begun printing the version string but before it has finished printing the ``mem = xxx'' string. Place the drive type number corresponding to your drive .\"CHECK at location 061472; the addresses for drives 1, 2 and 3 are 061506, 061522 and 061536 respectively. If you plan to use any drives other than 0 before you recompile the system, you should patch these locations. Make the patches and continue the CPU. The value before patching must be zero. If it is not, you have halted too late and should try again. .PP UNIX begins by printing out a banner identifying the version of the system that is in use and the date it was compiled. Note that this version is different from the system release number, and applies only to the operating system kernel. .PP Next the .I mem message gives the amount of memory (in bytes) available to user programs. On an 11/23 with no clock control register, a message ``No clock???'' will print next; this is a reminder to turn on the clock switch if it is not already on, since UNIX cannot enable the clock itself. The information about different devices being attached or not being found is produced by the \fIautoconfig\fP\|(8) program. Most of this is not important for the moment, but later the device table can be edited to correspond to your hardware. However, the tape drive of the correct type should have been detected and attached. .PP The ``erase=...'' message is part of /.profile that was executed by the root shell when it started. The file /.profile contained commands to set the UNIX erase, line kill and interrupt characters to be what is standard on DEC systems so that it is consistent with the DEC console interface characters. This is not normal for UNIX, but is convenient when working on a hardcopy console; change it if you like. .PP UNIX is now running, and the Berkeley PDP-11 \s-2UNIX\s0 Programmer's manual applies. The `#' is the prompt from the Shell, and lets you know that you are the super-user, whose login name is ``root.'' .PP There are a number of copies of \fIunix\fP on the root file system, one for each possible type of root file system device. All but one of them (\fIxpunix\fP) has had its symbol table removed (i.e. they have been ``stripped''; see .IR strip (1)). The unstripped copy is linked (see .IR ln (1)) to \fI/unix\fP to provide a system namelist for programs like .IR ps (1) and .IR autoconfig (8). All of the systems were created from \fI/unix\fP by the C shell script \fI/genallsys.sh\fP. If you had to patch the \fIxp\fP type as you booted, you may want to use \fIadb\fP (see .IR adb (1)) to make the same patch in a copy of \fIxpunix\fP. If you are short of space, you can patch a copy of \fI/unix\fP instead (setting the rootdev, etc.) and install it as \fI/unix\fP after verifying that it works. See \fI/genallsys.sh\fP for examples of using \fIadb\fP to patch the system. The system load images for other disk types can be removed. .B Do not remove or replace the copy of \fI/unix\fP, however, unless you have made a working copy of it that is patched for your file system configuration and still has a symbol table. .R Many programs use the symbol table of /\fIunix\fP in order to determine the locations of things in memory, therefore /\fIunix\fP should always be an unstripped file corresponding to the current system. If at all possible, you should save the original UNIX binaries for your disk configuration (\fIdk\fP\^unix and unix) for use in an emergency. .PP There are a few minor details that should be attended to now. The system date is initially set from the root file system, and should be reset. The root password should also be set: .DS .TS lw(1.5i) l. \fB#\fP date \fIyymmddhhmm\fP (set date, see \fIdate\fP\|(1)) \fB#\fP passwd root (set password for super-user) \fBNew password:\fP (password will not echo) \fBRetype new password:\fP .TE .DE .NH 2 Installing the disk bootstrap .PP The disk with the new root file system on it will not be bootable directly until the block 0 bootstrap program for the disk has been installed. There are copies of the bootstraps in /mdec. This is not the usual location for the bootstraps (that is /usr/src/sys/mdec), but it is convenient to be able to install the boot block now. Use \fIdd\fP\|(1) to copy the right boot block onto the disk; the first form of the command is for small disks (\fBrk\fP, \fBrl\fP) and the second form for disks with multiple partitions (\fBhk\fP, \fBrp\fP, \fBxp\fP), substituting as usual for \fIdk\fP: .DS \fB#\fP dd if=\fIdk\^\fPuboot of=/dev/r\fIdk\^\fP0 count=1 or \fB#\fP dd if=\fIdk\^\fPuboot of=/dev/r\fIdk\^\fP0a count=1 .DE will install the bootstrap in block 0. Once this is done, booting from this disk will load and execute the block 0 bootstrap, which will in turn load /boot (actually, the boot program on the first file system, which is root). The console will print .DS .TS lw(1.5i) l. \fB>boot\fP (printed by the block 0 boot) .B \fInn\fPBoot \fR(printed by /boot)\fP : .R .TE .DE The '>' is the prompt from the first bootstrap. It automatically boots /\fIboot\fP for you; if /\fIboot\fP is not found, it will prompt again and allow another name to be tried. It is a very small and simple program, however, and can only boot the second-stage boot from the first file system. Once /boot is running and prints its ``: '' prompt, boot unix as above, using \fIdk\^\fPunix or unix as appropriate. .NH 2 Checking the root file system .PP Before continuing, check the integrity of the root file system by giving the command .DS \fB#\fP fsck /dev/r\fIdk\^\fP0a .DE (omit the \fBa\fP for an RK05 or RL). The output from .I fsck should look something like: .DS .B /dev/r\fIxx\^\fP0a File System: / ** Checking /dev/r\fIxx\^\fP0a ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Free List .\"CHECK 236 files 1881 blocks xxxxx free .R .R .DE .PP If there are inconsistencies in the file system, you may be prompted to apply corrective action; see the document describing .I fsck for information. The number of free blocks will vary depending on the disk you are using for your root file system. @ 1.1 log @Initial revision @ text @d169 1 a169 1 5168 (RM05) @ below) you must patch it also. .PP Finally, determine the proper interleaving factors \fIm\fP and \fIn\fP for your disk and CPU combination from the following table. These numbers determine the layout of the free list that widoc/2.10/kchanges.2.9 444 3 12 152073 3141217067 7244 .if \nv .rm CM .TL Changes in the Kernel in 2.9BSD .AU Michael J. Karels .AI Department of Molecular Biology University of California, Berkeley Berkeley, California 94720 .AU Carl F. Smith .AI Department of Mathematics University of California, Berkeley Berkeley, California 94720 .AU William F. Jolitz .AI Symmetric Computer Systems Los Gatos, California .PP This document summarizes changes in the PDP-11\(dg UNIX\(dd kernel between .FS \u\(dg\d\s-2DEC\s0, \s-2PDP-11\s0, \s-2MASSBUS\s0, and \s-2UNIBUS\s0 are trademarks of Digital Equipment Corporation. .br \u\(dd\d\s-2UNIX\s0 is a trademark of Bell Laboratories. .FE the July 1981 \s-12.8BSD\s0 release and the July 1983 \s-12.9BSD\s0 distribution. The kernel remains highly tunable, and changing \fI#define\fP\^d options may affect the validity of remarks in this paper. .PP The major changes fall into these categories: .IP [1] The new signal mechanism needed for process control has been added to the system, making the job control facilities of \s-14.1BSD\s0 available. .IP [2] \fIVfork\fP, a form of \fIfork\fP which spawns a new process without fully copying the address space of the parent, is available to create a new context for an \fIexec\fP much more efficiently. .IP [3] The system can reboot itself automatically, after crashes or manually. The system is more crash-resistant and is able to take crash dumps before rebooting. .IP [4] A fast and reliable method of accessing mapped buffers and clists without increasing processor priority is now available. .IP [5] The protocols for allocation of the UNIBUS map have been changed, and DMA into system buffers with 18-bit addressing devices is also different. .IP [6] Changes have been made in code organization, so that more than one system configuration may be built from a single set of sources. Each system is described by a single file that includes parameters such as system size, devices, etc. Most of the ``magic numbers'' such as device register addresses and disk partitions are in one file, ioconf.c, and the number of devices of each type are in header files local to that system. .IP [7] Most devices are configured at boot time rather than at compilation time, reducing the work in system configuration and making it possible for one binary to work on several similar systems. References to nonexistent devices are now rejected rather than causing a crash. .IP [8] System diagnostics have been changed to a standard, readable format; file system diagnostics refer to file systems by name rather than device number. Device diagnostics refer to devices by name and print error messages mnemonically as well as in octal. .PP Many other performance enhancements and bug fixes have been made. Some conditional compilation flags have been removed because the feature they control is now considered standard (e.g. UCB_BUFOUT). Other features have been grouped together and are now controlled by the same flag (e.g. code previously conditional on UCB_SMINO now depends on UCB_NKB). .PP Many of the changes in 2.9BSD are based on work by many other people. Several features are modeled on those of the 4.1BSD VMUNIX system, and much of the code comes directly from that source. .SH Converting local software .PP Most local changes should be easily ported to the new system. The actual system configuration is much simpler than with previous kernels. .PP There are many changes that affect the device drivers. The appendices give the details of the conversions necessary. Device drivers that used the kernel's in-address-space buffers must be rewritten to use mapped buffers or their own dedicated buffers. ``Abuffers'' have been removed from the current system. .PP Appendix A contains a description of the new data mapping protocols used to access mapped buffers, clists, and some tables. .PP The UNIBUS map is allocated dynamically. Kernel data space is no longer guaranteed to be mapped by any portion of the UNIBUS map. Any local software making such assumptions must now explicitly allocate a section of the UNIBUS map; \fImapalloc\fP and \fImapfree\fP may be used for objects with buffer headers. See Appendix B for a description of the new UNIBUS map protocols. .PP The line discipline switch has been reorganized slightly to make it cleaner. Some unused fields in the \fIlinesw\fP structure have been removed. There is a default line discipline, DFLT_LDISC, which may not be assumed to be 0. See Appendix C for a description of the new terminal and line discipline protocols. .PP As part of the implementation of \fIvfork\fP, process images are scatter loaded. Standard system monitoring programs (e.g. \fIps\fP and \fIw\fP) have been modified. Local software must be changed accordingly. See Appendix D for a more detailed description of \fIvfork\fP. .PP Sites may wish to convert their device drivers to use the new autoconfiguration features described in Appendix E. .PP Processors are described by capabilities rather than cpu type. Separate I/D spaces and UNIBUS maps are detected and supported independently. Thus it is much easier to describe machines with foreign hardware enhancements. In particular, the Able ENABLE/34\(dg is automatically .FS \u\(dg\d\s-2ENABLE/34\s0 is a trademark of \s-2ABLE\s0 Computer, Inc. .FE detected and supported. .PP A new bootstrap loader that loads all object files except 0405 replaces the old version that loaded only 0407, 0411, and 0430. The kernel assumes that \fIboot\fP has already set the kernel mode segmentation registers and cleared bss. Other bootstraps that do not do so will not work. .SH Organizational changes .PP The system compilation procedure has been changed so that more than one set of binaries may be made with a single set of source code. System sources are kept in the directories \fBsys/sys\fP and \fBsys/dev\fP. No binaries are kept in either of these directories. .PP The directory \fBsys/conf\fP contains several files related to system configuration. For each machine to be configured, a single file should be created in this directory. Each such file describes all the parameters of the machine necessary for building a system. The format of the configuration files is described in \fIconfig\fP\|(8)\(dd. .FS \u\(dd\dReferences of the form \fIX\fP(\fIY\fP) mean the subsection named \fIX\fP in section \fIY\fP of the Berkeley \s-2PDP-11\s0 \s-2UNIX\s0 Programmer's manual. .FE This procedure is more fully described in ``Installing and Operating 2.9BSD.'' .PP Corresponding to each system to be configured, there is a subdirectory of \fBsys\fP. One prototype directory, \fBGENERIC\fP, is already there. This directory is created and the appropriate files are installed by \fIconfig\fP, based on information in the machine description file. The configuration program processes the information in the configuration file and produces: .IP 1) A set of header files (e.g. \fBdh.h\fP) which contain the number of devices available to the target system. These definitions force conditional compilation of drivers, resulting in the inclusion or exclusion of driver code and the sizing of driver tables. This technique, based on compilation, is more powerful than a loader-based technique, since small sections of code may be easily conditionalized. Only drivers that are needed are included in the resulting system. Option flags that are specific to individual drivers are also placed in these header files. .IP 2) The assembly language vector interface, \fBl.s\fP, which turns the hardware generated UNIBUS interrupt sequences into C calls to the driver interrupt routines. .IP 3) A table file, \fBioconf.c\fP, which defines controller addresses for each disk controller in the configured system, and the partition tables for the larger disks. .IP 4) The files \fBlocalopts.h\fP, \fBparam.c\fP, \fBparam.h\fP, and \fBwhoami.h\fP. These can be edited if local taste so dictates. \fBWhoami.h\fP contains the definition of PDP11, which will have one of the following values: 23, 34, 40, 44, 45, 60, 70, or GENERIC. The distributed binary is compiled with PDP11=GENERIC, allowing the system to support most of the hardware on any supported processor. The definitions for the optional features of the system are in \fBlocalopts.h\fP. Finally, the files \fBparam.c\fP and \fBparam.h\fP contain the tunable sizes and parameters. These are mostly dependent on the definitions of PDP11 and MAXUSERS (in the Makefile). \fBParam.c\fP contains most of the commonly-changed parameters, so that only this file need be recompiled to retune the system. Also, because these parameters are now in global variables, system utilities may easily determine the current values by examining the running system. .IP 5) The Makefile contains the default compilation and load rules for the type of kernel being made (overlaid or not overlaid). It also contains the specification of an editor script that implements in-line expansions of calls to spl, depending on the instruction set available. The makefile may need editing to change the overlay structure or to include optional device drivers in the load rules. MAXUSERS is defined here and used in \fBparam.c\fP to gauge the sizes of data structures. .PP In order to add new files or device drivers to the system, it is necessary to explicitly add them to the Makefile load rules, to its extension Depend (used in the ``make depend'' command to rebuild the Makefile dependency rules), to the configuration file \fBc.c\fP and optionally to \fIautoconfig\fP\|(8) and \fIconfig\fP\|(8) or \fBl.s\fP. .SH Header files .PP Many new files have been added for use in device drivers. They contain definitions of the device structure and mnemonics used in referencing registers and printing diagnostics. Most files have been reorganized slightly to improve modularity or readability. .IP \fBacct.h\fP 1.5i The UCB_XACC option has been separated into UCB_LOGIN and UCB_SUBM. .IP \fBbuf.h\fP Unused flags have been deleted and the others compacted. Two flags have been added. B_RH70 indicates that a device is on an RH70 controller. B_UBAREMAP indicates that the buffer's address is being interpreted as UNIBUS virtual, not physical. .IP \fBconf.h\fP A \fId_root\fP field has been added to the \fIbdevsw\fP structure. The unused fields \fIl_rend\fP and \fIl_meta\fP have been deleted from the \fIlinesw\fP structure. \fIL_rint\fP has been renamed \fIl_input\fP. \fIL_start\fP has been deleted and a new field, \fIl_output\fP added for \fIuprintf\fP. See Appendix C. .IP \fBcpu.h\fP New file. Contains mnemonics for fields in the cache and memory control registers of various processors. .IP \fBdkbad.h\fP New file. Contains mnemonics and structures used to implement DEC standard 144 bad sector forwarding. .IP \fBfilsys.h\fP Two fields in the \fIfilsys\fP structure, \fIs_fname\fP and \fIs_fpack\fP, have been replaced by \fIs_fsmnt\fP. The new field is used by the kernel to print diagnostics and by \fIfsck\fP(8). .IP \fBinline.h\fP New file. Definitions of inline expansions and macro replacements designed to speed up file system accesses at the cost of code expansion. .IP \fBlstat.h\fP Renamed \fIqstat.h\fP. The structure previously names \fIlstat\fP is now names \fIqstat\fP and all structure fields previously named \fIls\_*\fP have been renamed \fIqs\_*\fP. .IP \fBkoverlay.h\fP New file. Contains definitions relating to kernel text overlays. Both nonseparate I/D (0430) and separate I/D (0431) kernels can be overlaid. Most of the information in this file cannot be changed easily. It is provided to clarify the way kernel overlays work. .IP \fBmtio.h\fP An \fImt_type\fP field has been added to the \fImtget\fP structure. Tape drivers may be interrogated to determine formatter type. See \fImt\fP\|(4). .IP \fBparam.h\fP Many configuration constants (e.g. NINODE, NPROC) have moved from here to param.c and are referenced by global variables rather than manifest constants. Thus only one file need be recompiled to change them. .IP \fBproc.h\fP Numerous changes have been made to support job control and \fIvfork\fP\|s. The \fIxproc\fP structure is in a union in the \fIproc\fP structure so that it is easily possible to determine which fields are overlaid. .IP \fBqstat.h\fP Used to be called \fIlstat.h\fP. Contains declarations for the \fIqstat\fP and \fIqfstat\fP system calls (for quotas). .IP \fBreboot.h\fP New file. Contains options for the \fIreboot\fP system call. .IP \fBreg.h\fP The (unused) definition of ROV has been deleted. .IP \fBseg.h\fP New macros and definitions have been added to support the remapping of kernel data to access buffers and clists. Changes have been made to allow dynamic support of the ENABLE/34. .IP \fBtrap.h\fP New file. Used in l.s, mch.s, and trap.c to encode trap types mnemonically. .IP \fBtty.h\fP Contains a macro for \fIlookc\fP if UCB_NTTY is defined and UCB_CLIST is not defined. .IP \fBtypes.h\fP More typedefs have been added. .IP \fBuba.h\fP New file. Most UNIBUS map specific structures and macros are collected here. .IP \fBuser.h\fP Numerous changes have been made to support job control and \fIvfork\fP\^s. .IP \fBvcmd.h\fP New file. Contains commands used by the vp driver and user \fIioctl\fP definitions. .SH System files: sys/sys .PP Major changes have taken place to support job control and \fIvfork\fP\^s. The \fIfile\fP, \fIproc\fP, and \fItext\fP tables have been moved to the end of kernel data space (possibly in the region into which buffers and clists are mapped) and thus are not necessarily accessible at interrupt time; those functions that need to access these tables or the \fIu\fP.\& from interrupt level (currently \fIclock\fP, \fIgsignal\fP, and \fIwakeup\fP) must save and restore kernel mapping registers. .PP Inclusion of both the multiplexer and floating point support is conditional, reducing the size of systems that do not require them. Some consistency checks that we consider extremely unlikely to fail, and the accompanying \fIpanic\fP\^s, are uniformly conditional on the definition of DIAGNOSTIC. Calls to \fIsplN\fP (where \fIN\fP is 0, ..., 7) that do not require the previous priority to be returned have been changed to \fI_splN\fP and are expanded in-line by editing the compiler's output. .IP \fBacct.c\fP 1.5i The \fIsysphys\fP routine has been moved from here to machdep.c. .IP \fBalloc.c\fP File system error messages are identified by file system name rather than major/minor device number. They are printed directly on a user's terminal if that user causes a file system to run out of free space. \fIGetfs\fP no longer \fIpanic\fP\^s if it cannot find a device in the mount table. Callers of \fIgetfs\fP have been modified to check for a NULL return value. This, together with a change to pipe.c, avoids a panic if \fIpipedev\fP is a file system that is not currently mounted. .IP \fBclock.c\fP \fIClock\fP has been modified to use the new remapping protocols. Disk monitoring has been simplified and can monitor more (or fewer) than three disks. Free memory averaging is calculated in kilobytes, avoiding overflow. .IP \fBenable34.c\fP New file. Contains support routines for the ENABLE/34. Two routines, \fIfiobyte\fP and \fIfioword\fP are used to help solve the problem of probing the I/O page on machines with ENABLE/34 boards. Wherever \fIfuibyte\fP and \fIfuiword\fP would be used to probe a location \fIpossibly\fP on the I/O page, these routines should be used instead. .IP \fBfakemx.c\fP This file is no longer necessary and has been deleted. .IP \fBfio.c\fP \fIFalloc\fP uses the \fItablefull\fP routine. A bug in the \fIaccess\fP system call with the UCB_GRPMAST option has been fixed. .IP \fBiget.c\fP After reading blocks of inodes, both the error flag and the residual count are checked. This avoids destroying whole blocks of inodes on failure. The residual count is also checked in other places in the kernel (\fIbmap\fP, etc.). If an error occurs in \fIiget\fP, \fIiput\fP is not called for an invalid inode. \fIIget\fP uses the \fItablefull\fP routine. .IP \fBl.s\fP Both l.s and the old l40.s are merged into this file. The code is preprocessed with \fIcpp\fP, allowing consistency with C files for conditional compilation. .IP \fBmachdep.c\fP A \fIboot\fP function has been added to cause the system to reboot itself and (optionally) take a crash dump automatically. The type of reboot is passed to /etc/init as an argument. \fIMapalloc\fP and \fImapfree\fP use a resource map to dynamically allocate sections of the UNIBUS map. \fIMapalloc\fP translates physical addresses in buffer headers for cache buffers to UNIBUS addresses for transfers on UNIBUS devices. \fIMapalloc\fP is thus called for both buffered and raw transfers now. \fIUbinit\fP initializes the UNIBUS map and the resource map describing it. \fIMapin\fP and \fImapout\fP no longer run at elevated priorities to block interrupts. \fIMapout\fP is eliminated if the kernel data segment is sufficiently small. .IP A new function, \fIdorti\fP, which is used by the new signal mechanisms has been added. .IP Buffer space is uniformly \fImalloc\fP\^ed in \fIstartup\fP rather than in \fIstart\fP (mch.s) The same is true for clists if UCB_CLIST is defined. .IP On machines without UNIBUS maps, no attempt is made to detect memory past 0760000, avoiding crashes when device registers are found at this address. .IP \fIClkstart\fP calls \fIfioword\fP to probe for the line clock register. It is not a panic if no clock register is found since 11/23s may not have one; a message is printed in this case. .IP \fBmain.c\fP The name of the root file system (``/'') is copied into its superblock so that the name will be available for error messages (e.g. if the root file system becomes full). .IP \fBmalloc.c\fP All addresses and sizes in \fBmalloc.c\fP have been typedeffed and are unsigned. This makes it possible to use more than two megabytes of memory. A new function, \fImalloc3\fP, efficiently allocates memory for scatter loading, minimizing the cost of failing. \fIMfree\fP contains many more consistency checks. Resource maps have a new structure that includes a limit. \fIMfree\fP prints a console error message when it must discard a piece of a map because of fragmentation instead of overrunning the map or \fIpanic\fP\^ing. When \fImalloc\fP cannot allocate enough swap space, it frees the swap space belonging to saved text segments, possibly avoiding panics caused by running out of swap space. .IP \fBmch.s\fP Both m40.s and the old mch.s have been merged into this file. The C preprocessor is used to produce the right code for different CPUs, including GENERIC. It is able to reboot after power failures if the contents of memory are intact. .IP \fICopyseg\fP and \fIclearseg\fP have been converted to \fIcopy\fP and \fIclear\fP respectively. They take an additional argument, a count of the number of clicks to copy or clear. They remap the kernel to access the source and target more efficiently. If real-time support is enabled, both are preemptible. A new routine, \fIcopyu\fP, is available to copy the \fIu\fP.\& in non-preemptible mode. .IP Most \fIspl\fP calls are now done in-line; the old priorities are saved and restored as bytes (to allow the use of \fImfps\fP/\fImtps\fP instructions where available). Kernel red stack violations are detected, allowing normal \fIpanic\fP\^s. .IP System call traps are handled separately from other processor traps. This results in a 22% decrease in system call overhead. Emulator traps (used in automatic text overlays) are also handled separately from general traps. This decreases overlay switch overhead by 45%. On machines without hardware floating point, a fast illegal instruction trap routine reduces system overhead for interpreted floating point by 90%. .IP The kernel overlay support has been changed to use new, smaller subroutine entries (``thunks'') in the base segment that are compatible with the loader used for user-level overlaid programs. The management of the kernel stack in the trap/interrupt code is simpler and faster. .IP The kernel text relocation that was done in mch.s if UCB_CLIST or UCB_BUFOUT were defined is no longer necessary and has been replaced by calls to \fImalloc\fP in \fIstartup\fP. .IP \fBnami.c\fP File names are not allowed to contain characters with the parity bit (0200) set. File name comparisons stop at the first null. A bug that caused permissions to be checked incorrectly when searching to ``..'' from the root of a mounted filesystem has been fixed. The ``.. / u.u_rdir'' security hole has been fixed. .IP \fBpipe.c\fP Allocates inodes for pipes on the root device if \fIialloc\fP\^s on \fIpipedev\fP fail. Inodes for pipes are marked for special handling. .IP \fBprf.c\fP \fIPanic\fP causes the system to reboot. A function, \fIuprintf\fP, has been added to print error messages on the terminal of the user causing the error rather than the console. \fIPrintf\fP no longer uses recursion. It supports a %c format to print a single character, a %b format used to print register values mnemonically, and a %X format for long hexadecimal. \fIPrdev\fP has been eliminated. \fIDeverror\fP is included only if UCB_DEVERR is undefined. .IP The routines \fIprdev\fP and \fIdeverror\fP, that printed diagnostics that were difficult to interpret, are replaced by \fIharderr\fP, that begins a message about an unrecoverable device error, and the %b format mentioned above. \fITablefull\fP is a new function used to report that a table is full. .IP \fBprim.c\fP Uses new mapping protocols for \fICMAPIN\fP and \fICMAPOUT\fP. \fIGetw\fP has been discarded. \fIPutw\fP is included only if needed for the multiplexer driver. \fICpaddr\fP has been deleted. It is now a macro in dh.c. Other routines that are used only by the dh driver are eliminated if there are no dh's on a system. \fILookc\fP is eliminated (replaced by a macro) if UCB_CLIST is not defined. .IP \fBrdwri.c\fP Inodes allocated for pipes receive special handling: \fIwritei\fP always uses \fIbdwrite\fP and \fIreadi\fP cancels the disk write if it has not yet occurred. This results in a large improvement in pipe throughput, especially if the UCB_FSFIX option is in use (for more robust file systems). .IP \fBsig.c\fP This is now a dummy file that includes either sigjcl.c or signojcl.c depending on whether MENLO_JCL is defined. .IP \fBsigjcl.c\fP A new file that supports the signal mechanisms necessary for job control. The changes listed under \fIsignojcl.c\fP are also included. .IP \fBsignojcl.c\fP Used to be called sig.c. A race condition that occasionally caused ignored signals to generate bus errors has been fixed. \fIPtrace\fP supports overlay changes, allowing breakpointing of overlaid subprocesses. If floating point arithmetic is being simulated by catching illegal instruction traps, traced subprocesses are allowed to process the signal normally without stopping. Stack growth is rounded to 8K boundaries, to allow the maximum theoretical stack size. .IP \fBslp.c\fP There are major changes in the \fIsleep\fP/\fIwakeup\fP mechanism for process control. Swapped processes are no longer kept on the run queue. \fINewproc\fP has been modified to allow \fIvfork\fP\^s. The scheduling algorithm has been modified to avoid deadlocks possible with \fIvfork\fP. Processes are scatter loaded in three pieces (data, stack and \fIu\fP. area; text is handled separately), with changes in \fInewproc\fP, \fIexpand\fP and \fIswapin\fP. .IP The unused routine \fIdequeue\fP has been removed. .IP \fBsubr.c\fP \fIBcopy\fP may now be called with a count of 0. .IP \fBsys1.c\fP \fIFork\fP has been modified to allow \fIvfork\fP\^s and uses the \fItablefull\fP routine. Support has been added for \fIwait2\fP, used in job control. \fIBdwrite\fP is used instead of \fIbawrite\fP when copying out argument lists in \fIexece\fP, in an attempt to avoid disk I/O. A pointer to the last used proc table slot, \fIlastproc\fP, is used to shorten searches for processes. A message is printed if /etc/init cannot be executed. .IP \fBsys3.c\fP \fISmount\fP copies the mounted file system's name (e.g. ``/usr'') into the s_fsmnt field of the superblock. The in-address-space buffers (abuffers) have been removed, and the superblocks of mounted file systems are in the mount table itself. .IP \fBsys4.c\fP The mechanism for sending signals to all processes has been changed so that the process broadcasting the signal does not receive it itself. This allows \fIreboot\fP\|(8) to shut down the system cleanly before rebooting. .IP The \fI#ifdef\fP for UCB_STICKYDIR has been removed. This is now standard. \fISetpgrp\fP is included to support job control. A bug in \fIutime\fP has been fixed. .IP \fBsyslocal.c\fP The old \fIsetpgrp\fP is replaced by the job control version. \fIChfile\fP and \fIiwait\fP have been removed. A new system call, \fIvhangup\fP, is used by \fIinit\fP to revoke access to terminals after logouts. Another new system call, \fIucall\fP, allows \fIautoconfig\fP\|(8) to call internal kernel routines. Support for \fIqstat\fP, and \fIqfstat\fP (formerly \fIlstat\fP and \fIlfstat\fP respectively) is conditional on UCB_QUOTAS. .IP \fBtext.c\fP \fIXswap\fP has been modified for scatter loading. \fIXumount\fP frees all saved text segments if called with argument NODEV. \fIMalloc\fP uses this to attempt to avoid \fIpanic\fP\^s when swap space is exhausted. \fIXalloc\fP uses the \fItablefull\fP routine. .IP \fBtrap.c\fP \fITrap\fP no longer handles system calls. Instead, a new routine, \fIsyscall\fP, is called from mch.s when a system call trap occurs. \fITrap\fP saves the previous kernel mapping on kernel faults. .IP \fBureg.c\fP A new routine, \fIchoverlay\fP, has been added to change overlays for user processes. It is called from mch.s when an overlay switch trap occurs. The units of the variables describing the overlay region (ovbase and dbase) have changed. Segmentation register prototypes are no longer maintained for the overlay region, necessitating a call to \fIchoverlay\fP from \fIsureg\fP. \fIEstabur\fP and \fIsureg\fP support scatter loading. A bug has been fixed that caused overlaid processes to fail when the base segment length was a multiple of 8192. On machines without separate I/D space, \fIestabur\fP is simplified. .SH Device support: sys/dev .PP All of the drivers have been modified to support autoconfiguration. They have attach routines to record the csr addresses after the device has been probed by \fIautoconfig\fP\|(8). Appendix E describes the strategy. Drivers with attach routines properly reject attempts to access nonexistent controllers (instead of causing a crash). Each device driver has a corresponding header file indicating the number of such devices present and other configuration dependent options. .PP Devices that do DMA on machines with UNIBUS maps must ensure that their data areas are accessible through the UNIBUS map; UNIBUS addresses are not necessarily the same as physical addresses. see Appendix B. Only buffers and clists are statically mapped. It is possible to map in out-of-address space data at interrupt level (this was previously risky) provided the previous map is saved and restored; a mechanism is provided for this, as described in Appendix A. The structure of the line switch has been reorganized and the protocol to be used in opening a device and setting up a line discipline is well defined. See Appendix C. .PP Disks that are potentially \s-1RH70\s0 MASSBUS disks have been provided with attach routines that detect \s-1RH70\s0s, as well as root attach routines that force attachment before autoconfiguration occurs. Some disk drivers have been provided with crash dump routines. See \fIrmdump\fP in rm.c or \fIhkdump\fP in hk.c for examples. .PP The format of device option flags is now consistent. Optional device ioctls are enabled by XX_IOCTL (e.g. DH_IOCTL). Optional watchdog timers are enabled by XX_TIMER (e.g. TM_TIMER). The \fIdh\fP (respectively \fIdz\fP) driver, which is capable of managing the input siilo to reduce interrupts, does so if DH_SILO (respectively DZ_SILO) is defined. The disk cache monitoring numbers used by \fIiostat\fP\|(8), formerly called DK_N, have been renamed XX_DKN (e.g. HP_DKN) so that they can be placed in the header files. .PP All drivers use include files to define the device structures and register constants. The drivers themselves uniformly use mnemonics rather than magic numbers in device registers and error messages. Initialized device register addresses and disk driver partition tables reside in ioconf.c. .IP \fBbio.c\fP 1.5i \fIIodone\fP reverses the translation of buffer addresses (done by \fImapalloc\fP) from physical to UNIBUS virtual when doing block I/O on UNIBUS disks. \fIBwrite\fP now correctly supports the B_AGE flag on asynchronous writes. A portion of the disk monitoring code that was of questionable usefulness has been discarded. The \fIphysio\fP subroutine has been divided into separate routines, allowing use of \fIbphysio\fP by drivers that allow byte-oriented rather than word-oriented transfers or don't use buffer headers. .IP \fBbk.c\fP The Berknet line discipline has been changed to use dedicated buffers instead of abuffers. It is still untested. .IP \fBdh.c\fP Changed to use the new UNIBUS map location of clists. Ioctls for setting and clearing \fIbreak\fP and \fIdtr\fP have been added. If DH_SOFTCAR is defined, modem control is ignored for lines whose minor device number is greater than or equal to 0200. Dhdm.c is now part of dh.c; the appropriate dm support is included only if needed. .IP \fBdhdm.c\fP This is now part of dh.c. .IP \fBdhfdm.c\fP This file is no longer necessary and has been deleted. .IP \fBdvhp.c\fP This driver is simplified if there is only one drive, as no seek is needed before a transfer. Error correction code has been added. .IP \fBdz.c\fP Optionally uses the dz silo. Ioctls for setting and clearing \fIbreak\fP and \fIdtr\fP are available. If DZ_SOFTCAR is defined, modem control is ignored for lines whose minor device number is greater than or equal to 0200. Pseudo-dma has been implemented. .IP \fBhk.c\fP New version of the RK06/7 driver. Now performs disk sorts, ECC corrections, and DEC standard 144 bad sector forwarding. A dump routine has been added. .IP \fBhp.c\fP This driver is simplified if there is only one drive, since no search is needed before a transfer. Error correction code works with mapped buffers and 1024 byte blocks. The driver waits for Drive Ready when doing positioning commands. A dump routine has been added. A preliminary, lightly tested version of DEC standard 144 bad sector forwarding has been added. .IP \fBht.c\fP Tape ioctls are supported. Uses \fIbphysio\fP for byte-oriented transfers. \fIClrbuf\fP is no longer called from interrupt level. .IP \fBkl.c\fP \fIPutchar\fP has been modified to support \fIuprintf\fP. .IP \fBmem.c\fP Some unneeded \fIspl\fP\^s have been deleted. Routines used to read and write memory set page protections correctly. .IP \fBml.c\fP New file. A driver for the DEC ML11 solid state disk courtesy of the DEC UNIX Engineering Group. .IP \fBmux.c\fP Dropped from this distribution. .IP \fBrf.c\fP New version of an old driver missing from \s-12.8BSD\s0. .IP \fBrk.c\fP Properly recovers the residual byte count at the end of a transfer. .IP \fBrl.c\fP Properly recovers the residual byte count at the end of a transfer. .IP \fBrm.c\fP This driver is simplified if there is only one drive; the \fIrmustart\fP routine is merged with \fIrmstart\fP, and no search is needed before a transfer. Error correction code works with mapped buffers and 1024 byte blocks. The software simulation of the current cylinder register has been fixed. The driver waits for Drive Ready when doing positioning commands. A dump routine has been added. A preliminary, lightly tested version of DEC standard 144 bad sector forwarding has been added. .IP \fBrp.c\fP Properly recovers the residual byte count at the end of a transfer. .IP \fBrx2.c\fP New file. A driver for the DEC RX211 floppy disk controller courtesy of the DEC UNIX Engineering Group. .IP \fBrx3.c\fP New file. A driver for the DSD480 floppy disk controller courtesy of Tektronix. .IP \fBtm.c\fP Uses \fIbphysio\fP for byte-oriented transfers. \fIClrbuf\fP is no longer called from interrupt level. Contains code for an optional watchdog timer. Checks for density changes in mid-tape. .IP \fBts.c\fP Tape ioctls are supported. Uses \fIbphysio\fP for byte-oriented transfers. \fIClrbuf\fP is no longer called from interrupt level. .IP \fBtty.c\fP The \fIttioctl\fP subroutine calls the line discipline's ioctl before any other processing. \fITtioctl\fP has also been changed to eliminate code for the old line discipline if it is not present, and when changing disciplines it checks that the new discipline is supported. These changes allow the old line discipline to be omitted. It is possible to flush either the input or output queues (or both) using TIOCFLUSH. .IP \fBttynew.c\fP Tandem mode is supported with raw mode in the new tty driver. The t_char field is no longer disturbed by flow control in tandem mode. Backslashes are no longer printed before capital letters on upper-case-only terminals. .IP \fBxp.c\fP This driver (which supports an assortment of RP04/05/06, RM02/03/05, Diva and other disks) now is able to manage more than one controller. The probe routine is optional if the drive and controller structures are initialized. It is simplified if there is only one drive; no search is needed before a transfer. Error correction code works with mapped buffers and 1024 byte blocks. The driver waits for Drive Ready when doing positioning commands. A dump routine has been added. A preliminary, lightly tested version of DEC standard 144 bad sector forwarding has been added. .br .LP .br .bp .ce .I "Appendix A: Kernel Data Mapping Protocols" .sp 5 .NH Introduction .PP These protocols ultimately address the question of how to ``expand'' the kernel's data space beyond the severe limitations imposed by the \s-2PDP-11\s0 hardware. This concern about methods of expanding kernel data space stems from the desirability of retaining large system buffer pools and clist areas despite hardware limitations. We do this by keeping certain data objects resident in core but without guaranteeing that they will be accessible through kernel virtual data space at all times. In this way the same virtual address range can be used for several different objects. .NH 2 History .PP The original Berkeley \s-2PDP-11\s0 kernel distribution (\s-12.8BSD\s0) provided the ability to move buffers and clists out of kernel data space. Buffers were accessed by mapping them in through KDSA5. A side effect was that the data that normally resided there were unavailable until buffers were mapped out again. Clists were mapped in through KDSA1 with the same side effect. .PP Because of this restriction, and the possibility of interrupts at any time, sections in which a kernel data register was repointed generally had to be protected by \fIspl6\fP\|()/\fIsplx\fP\|() pairs. (The exception is that \fIspl\fP\^s were unnecessary for buffer mapping if KDSA5 was used only for that purpose, and this was not done from interrupt level.) This inevitably led to increased interrupt latency and sometimes caused the system clock to lose time perceptibly. .PP It is not at all clear why these registers were special. They were chosen after careful examination of the system namelist. On our 11/70s, the inode table used all virtual addresses referenced through KDSA1 and it was known that no part of the kernel required simultaneous access to clists and inodes. Similarly, it was observed that data referenced through KDSA5 typically consisted of tty structures and the kernel did not require simultaneous access to tty structures and buffers. .PP It should be obvious how vulnerable this method is to even the most trivial changes such as system load order or table sizes. Clearly something better was needed. .NH 2 2.9BSD Methods .PP We chose four goals for our new remapping protocols: .IP [1] They must be fast. Interrupt latency should not be increased by elevating the processor priority. .IP [2] They should be flexible, allowing objects other than buffers and clists to be remapped easily. .IP [3] Interrupt service routines should not be slowed unnecessarily by requiring that the map be changed on all interrupts. .IP [4] There must be a well-defined class of objects that the remapping will make inaccessible. Furthermore, any section of code that requires access to one of these objects during interrupt processing must itself ensure that the object is mapped in. .PP The implementation we chose uses KDSA5 as the primary mapping register. The only normally-resident objects allowed in this region (0120000 to 0140000) are the \fIproc\fP, \fIfile\fP, and \fItext\fP tables. These objects were chosen because they are rarely accessed from interrupt level. If kernel data space is small enough that these tables end before this region, the code can be further simplified by defining the conditional-compilation flag NOKA5. In general, kernel functions are able to map in external data at will, with the caveat that interrupt routines must save the previous map (which may already point at some mapped-in object). .PP To make \fIcopy\fP (previously \fIcopyseg\fP) as fast as possible, yet interruptible, we also allow it to use KDSA6 as a mapping register. This makes the normal kernel stack (which lies in the region addressed by KDSA6) inaccessible, so the kernel uses a temporary stack while in \fIcopy\fP. .PP Most of the segmentation map switching is done by macros for speed; some of the macros test whether any work need be done before calling a subroutine. The data structures and macros used in this scheme are in the include file \fIseg.h\fP, with the subroutines in \fImachdep.c\fP. These macros must be used for all kernel remapping or races will ensue (because the order in which registers are set is critical to the protocol). .NH 3 Top Level Protocol .PP A global prototype page address/descriptor pair is maintained (if necessary) for virtual addresses from 0120000 to 0140000. It is initialized in \fIstartup\fP. KDSA5 may be repointed to access other objects from the top level provided that the normal mapping is restored before the next context switch. The contents of KDSA5/KDSD5 are changed by the macro call .br .nf \fImapseg5(addr, desc);\fP .fi where \fIaddr\fP is the new value for KDSA5 and \fIdesc\fP is the new value for KDSD5. The default mapping for this page is restored by the macro call .br .nf \fInormalseg5();\fP .fi The \fImapin\fP and \fImapout\fP functions use this method to provide access to a mapped buffer. .PP Unless the kernel data map has been explicitly reset by \fImapin\fP or \fImapseg5\fP, the \fIproc\fP, \fIfile\fP, and \fItext\fP tables are guaranteed to be mapped in when the kernel is not at interrupt level. .NH 3 Interrupt Level Protocol .PP Interrupt-level routines may not assume that the range controlled by KDSA5 or KDSA6 contains valid data unless the map is explicitly set to either the normal state (for the \fIproc\fP, \fItext\fP or \fIfile\fP tables, or for the \fIu.\fP) or to map external data. .PP Interrupt routines that wish to repoint KDSA5 must first save the current contents of KDSA5 and KDSD5 in a local variable by .br .nf \fIsegm saveregs; saveseg5(saveregs);\fP .fi before changing their contents with \fImapseg5\fP. Before returning, the old contents must be restored by the call .br .nf \fIrestorseg5(saveregs);\fP .fi This method is used by \fIgetc\fP and \fIputc\fP to access the clist area. .PP Note that \fImapin\fP does not save the current map in this way. To use \fImapin\fP and \fImapout\fP from interrupt level, it is necessary to save the map with \fIsaveseg5\fP before calling \fImapin\fP, and then restore it with \fIrestorseg5\fP after the last \fImapout\fP. .PP If an interrupt routine must access either the \fIu\fP. or any of the tables, it must save the previous PARs and PDRs for pages 5 and 6 in a local variable and set the map to the normal state using .br .nf \fImapinfo map; savemap(map);\fP .fi and restore the old contents with .br .nf \fIrestormap(map);\fP .fi This mechanism is used by \fIgsignal\fP and \fIwakeup\fP, which are frequently called from interrupt level and must access the \fIproc\fP table, and by \fIclock\fP, which needs access to the \fIproc\fP table and the \fIuser\fP structure. It is also used in \fItrap\fP, which saves the map data in the global map \fIkernelmap\fP on kernel-mode traps for potential use in debugging. .bp .ce .I "Appendix B: UNIBUS Map Protocols" .sp 5 .NH Introduction .PP \s-2UNIX\s0 as distributed by Bell Labs and in previous Berkeley releases made some tacit assumptions about the arrangement of kernel data space and the use of the UNIBUS map (or machines with 22-bit addressing): .IP \(bu All kernel data space was statically covered by some portion of the UNIBUS map. This included mapped out objects such as buffers and clists. Kernel virtual data space addresses needed no conversion to UNIBUS or physical addresses. Thus no special action was taken on, for example, DMA transfers from kernel data space to ensure that the source or target area was accessible through the UNIBUS map. .IP \(bu The remaining portion of the UNIBUS map was dedicated to only one I/O request at a time. Thus a fixed portion of the UNIBUS map was used for each physical I/O request. .PP Although these assumptions did result in much simpler code, they had the unfortunate side effect of degrading system performance. Two swaps could not occur simultaneously. When a slow device such as a tape drive was used for physical I/O, all other physical I/O suffered severely. This was most noticeable when file system dumps were occurring. It also made the use of raw I/O for real-time data acquisition impossible. .NH 2 2.9BSD Methods .PP The solution is to manage the UNIBUS map with a resource map, allocating and freeing groups of registers as required by the size of the I/O request. This has already been implemented independently at some sites. Our code is modeled after several of these. .PP In an effort to have as many UNIBUS map registers as possible available for allocation, only the clist area and buffer pool have statically allocated UNIBUS map registers. The clist area is mapped through UNIBUS register 0. It may therefore be at most 8192 bytes long, and begins at UNIBUS virtual address 0. The global variable \fIclstaddr\fP contains the UNIBUS address (in bytes) of clists (even if a UNIBUS map is not present). The appropriate number of registers is dedicated to the buffer pool at boot time and the rest are made available for allocation. When there is a UNIBUS map, the buffers begin at UNIBUS byte address BUF_UBADDR, whereas their physical address (in clicks) is \fIbpaddr\fP. .PP Routines that manipulate the UNIBUS map must be prepared to be called even if no UNIBUS map exists. They should check the boolean variable \fIubmap\fP, which is nonzero if a UNIBUS map is present. For convenience, several useful macros have also been provided. See the include file \fIuba.h\fP. .PP The code for block I/O dynamically supports both MASSBUS and UNIBUS controllers. A buffer header associated with the buffer cache used for block I/O normally contains the physical address of the buffer area. This is translated into a UNIBUS address before beginning the I/O operation if the device does not use 22-bit addressing. This translation is performed by \fImapalloc\fP; thus, UNIBUS disk and tape drivers should call \fImapalloc\fP for both raw operations (B_PHYS set) and those in the buffer cache. While a buffer header contains the UNIBUS virtual address of the buffer area instead of the physical address, the B_UBAREMAP flag is set in its \fIb_flags\fP field. After the transfer is finished, \fIiodone\fP restores the physical address in the buffer header. Drivers for disks that may be either MASSBUS or UNIBUS generally set the B_RH70 flag in the \fIb_flags\fP of their \fIdevtab\fP structures if they are 22-bit MASSBUS devices and test it before calling \fImapalloc\fP. .bp .ce .I "Appendix C: Terminal and Line Discipline Changes" .sp 5 .NH Introduction .PP There have been several changes in the kernel terminal-handling routines. The initial incentive for these changes was to allow the old tty discipline to be removed. This required that line disciplines be symmetric and equivalent. Previously, line discipline 0 (the old tty driver) was treated specially and was assumed to exist. .NH 2 Ttyopen and Ttyclose .PP The first group of changes is in the open and close sections. The routines \fIttyopen\fP and \fIttyclose\fP are no longer part of any discipline, but do the necessary initialization at the first open and the breakdown at the final close. They call the line discipline-specific open or close routine, and all the drivers (dh, dz, kl etc.) need do is call \fIttyopen\fP and \fIttyclose\fP from their open and close routines. .NH 2 Ioctl Protocols .PP The second set of changes is in the ioctl-handling sections. The line disciplines are given the opportunity to reject or modify any \fIioctl\fP call, or to do it themselves, before the common code is reached. Again, all the work is done by the discipline-independent routine, \fIttioctl\fP, which calls the line discipline's ioctl routine. The device drivers thus call only \fIttioctl\fP. There are three possible return conditions from \fIttioctl\fP: .IP \(bu a command is returned that the device driver is expected to execute .IP \(bu 0 is returned with \fIu.u_error\fP clear, meaning that the command completed successfully .IP \(bu 0 is returned with \fIu.u_error\fP set, meaning that the command completed abnormally .KS .PP The typical device driver ioctl routine will thus look like this: .nf .sp \fBswitch\fP (ttioctl(tp, cmd, addr, flag)) \fB{\fP \fBcase\fP TIOCSETP: \fBcase\fP TIOCSETN: setparam(unit); \fBbreak\fP; \fBcase\fP other_known_command: implement the command; \fBbreak\fP; \fBdefault\fP: u.u_error = ENOTTY; \fBcase\fP 0: \fBbreak\fP; \fB}\fP .fi .KE .NH 2 Line Switch Changes .PP There are a few other differences in the terminal handlers from previous systems. The line discipline switch is no longer optional (the defined constant UCB_LDISC is gone). The linesw can have unused discipline entries in it, so that line discipline numbering is independent of the disciplines supported at any time; unused disciplines are marked by using \fInodev\fP as their open routines, thus preventing entrance into them. This necessitates a new defined constant, DFLT_LDISC, which is the line discipline that device drivers should set on initial open. Finally, the line discipline switch itself has been reorganized, with three entries being deleted and one field added. The previously-unused \fIl_rend\fP and \fIl_meta\fP pointers have been removed, and calls to \fIl_start\fP have been replaced with calls to \fIttstart\fP. The \fIl_rint\fP entry has been renamed \fIl_input\fP and an \fIl_output\fP pointer has been added for the use of \fIuprintf\fP. .bp .ce .I "Appendix D: Vfork Implementation Notes" .sp 5 .PP The kernel changes for the \fIvfork\fP system call are major and deserve a few notes. Processes are no longer in one piece, but instead the user structure, data segment, and stack segment are separate. They are located at \fIp\->p_addr\fP, \fIp\->p_daddr\fP, and \fIp\->p_saddr\fP respectively (where \fIp\fP is a pointer to a proc entry) and their sizes are USIZE, \fIp\->p_dsiz\fP and \fIp\->p_ssiz\fP. The latter two are copies of the entries in the user structure. All segments are swapped if any are, and there is a new routine, \fImalloc3\fP, to allocate memory or swap for all three segments at once. When a \fIvfork\fP occurs, the \fIu\fP. is copied, and the data and stack are passed to the child. The parent sleeps until the child calls \fIexec\fP or \fIexit\fP. At that time, the child locks itself in core and waits for the parent to reclaim the data and stack. .PP The major advantages of these changes are the efficiency of avoiding the copy in \fIfork\fP, and more efficient utilization of memory, as processes are in smaller segments. The disadvantage is that swaps require three separate transfers in each direction. Except on heavily loaded systems with small main memory, the result should be a net gain. There is a potential for deadlock since the child must lock itself into core; this can only be a problem with small memories when the parent has been swapped out. To help avoid problems, the swapping algorithm has been changed to swap in the parent process in a vfork before any others. .bp .ce .I "Appendix E: Autoconfiguration .sp 5 .PP The kernel changes to add autoconfiguration are fairly small. The most global change is that device CSR addresses and interrupt vectors must be initialized only for disk drivers which service root devices. Most of the work of autoconfiguration is done in user mode by \fIautoconfig\fP\|(8). It reads the device table \fI/etc/dtab\fP, then verifies the CSR address by reading from it (through /dev/kmem). If the CSR is present, \fIautoconfig\fP then tries to make the device interrupt in order to check that the vector specified is correct. To facilitate this check, l.s has two interrupt catchers, \fICBAD\fP and \fICGOOD\fP, that set the global variable \fI_conf_int\fP to \-1 and 1 respectively when called. \fIAutoconfig\fP sets all unused vectors to \fICBAD\fP, then sets the expected vector to \fICGOOD\fP. After the probe, \fIautoconfig\fP checks the contents of \fI_conf_int\fP to see whether the device interrupted and whether it was through the expected vector. If everything is correct to this point, \fIautoconfig\fP calls the device driver's attach routine with the unit number and address, then sets up the interrupt vector. .PP The kernel support for autoconfiguration consists of two parts. The first includes the interrupt catchers in l.s and a new routine in syslocal.c that allows \fIautoconfig\fP to call the driver attach routines. This new system call, \fIucall\fP (see \fIucall\fP\|(2)), calls a specified kernel routine (by address) at a specified priority with two user-supplied arguments. The other group of changes is in the drivers. Most drivers have new attach routines which simply place the address specified into their address arrays, checking that the unit number is in range. Device open and/or strategy routines have been modified to test that the device address has been set before allowing the open, read, or write to succeed. Drivers that need to probe the hardware to test its type may do that as well in the attach routine. The drivers that handle both MASSBUS and UNIBUS devices check for bus address extension registers at this time. A new routine, \fIfioword\fP, is provided to read a word from the I/O page, returning -1 if the address does not exist. Because the disks must be attached before \fIautoconfig\fP runs if they are to be used for root file systems, their addresses and vectors are still initialized. A new entry in the block device switch, \fId_root\fP, is used at boot time to call driver routines which disk drivers may use to attach all known devices before \fIiinit\fP. This allows them to determine controller and drive types. Drivers currently fall into three classes: UNIBUS only disks, MASSBUS/UNIBUS disks, and others. Prototypes of the attach and \fId_root\fP routines for each class follow. .PP The probe routines that are used to make the devices interrupt may be either in \fIautoconfig\fP or in the kernel. If the kernel has a probe routine, that will be used, otherwise \fIautoconfig\fP will use its own probe. This mechanism is provided because it may be difficult to address some devices properly by reading and writing /dev/kmem. All current probe routines are internal to \fIautoconfig\fP. .PP Device drivers that have no \fIattach\fP routines are ignored by \fIautoconfig\fP. Old drivers that have not been converted to use autoconfiguration will thus work properly. .bp .KS .nf .vS /* * Example 1: autoconfiguration prototype for devices other * than disks. Xxattach will be called by autoconfig(8). */ xxattach(addr, unit) struct xxdevice *addr; { if ((unsigned) unit >= NXX) return(0); xx_addr[unit] = addr; return(1); } /*ARGSUSED*/ xxopen(dev, flag) dev_t dev; int flag; { register int unit = XXUNIT(dev); if (xx_addr[unit] == (struct xxdevice *) NULL) { u.u_error = ENXIO; return; } if (unit >= NXX) { u.u_error = EINVAL; return; } . . . } .vE .fi .KE .sp 10 .KS .nf .vS /* * Example 2: autoconfiguration prototype for UNIBUS disks. * Xxattach will be called by autoconfig(8). */ xxattach(addr, unit) struct xxdevice *addr; { if (unit != 0) return(0); XXADDR = addr; return(1); } xxstrategy(bp) register struct buf *bp; { if (XXADDR == (struct xxdevice *) NULL) { bp->b_error = ENXIO; goto errexit; } if (bp->b_blkno >= NXXBLK) { bp->b_error = EINVAL; errexit: bp->b_flags |= B_ERROR; iodone(bp); return; } . . . } .vE .fi .KE .sp 10 .KS .nf .vS /* * Example 3: autoconfiguration prototype for disks * possibly on the MASSBUS. Xxroot will be called * from binit (main.c). */ void xxroot() { xxattach(XXADDR, 0); } xxattach(addr, unit) register struct xxdevice *addr; { if (unit != 0) return(0); if ((addr != (struct xxdevice *) NULL) && (fioword(addr) != -1)) { XXADDR = addr; #if PDP11 == 70 || PDP11 == GENERIC if (fioword(&(addr->xxbae)) != -1) xxtab.b_flags |= B_RH70; #endif return(1); } XXADDR = (struct xxdevice *) NULL; return(0); } xxstrategy(bp) register struct buf *bp; { register unit; long bn; if (XXADDR == (struct xxdevice *) NULL) { bp->b_error = ENXIO; goto errexit; } unit = minor(bp->b_dev) & 077; if (unit >= (NXX << 3) || bp->b_blkno < 0 || (bn = dkblock(bp)) + ((bp->b_bcount + 511) >> 9) > xx_sizes[unit & 07].nblocks) { bp->b_error = EINVAL; errexit: bp->b_flags |= B_ERROR; iodone(bp); return; } . . . } .vE .fi .KE he physical address in the buffer header. Drivers for disks that may be either MASSBUS or UNIBUS generally set the B_RH70 flag in the \fIb_flags\fP of their \fIdevtab\fP structures if they are 22-bit MASSBUS devices and test it before calling \fImapalloc\fP. .bp .ce .I "Appendix C: Terminal and Line Discipline Changes" .sp 5 .NH Introduction .PP There have been several changes in the kernel terminal-handling routines. The initial incentive for thesdoc/2.10/kchanges.2.10/ 755 3 12 0 4357037066 7247 doc/2.10/kchanges.2.10/Makefile 644 3 12 1075 4357260124 10770 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 1.5 (Berkeley) 4/16/86 # PRINTER=-Plz TROFF= ditroff ${PRINTER} EQN= deqn ${PRINTER} TBL= dtbl ${PRINTER} LPR= lpr -n ${PRINTER} SRC= 0.t 1.t 2.t 3.t all: ${SRC} ${EQN} ${SRC} | ${TBL} | ${TROFF} -ms ${PAGES} clean: rm -f kchanges.out *.t.spell errs Errs spell: ${SRC} @for i in ${SRC}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done ock itself into cor this can only be a problem with small memories when the parent has been swapped out. To help avoid problems, the swapping algorithm has been changed to swap in the parent process in a vfork before any others. .bp .ce .I "Appendix E: Autoconfiguration .sp 5 .PP The kernel changes to add autoconfiguration are fairly small. The most global change is that device CSR addresses and interrupt vectors must be initialized only for didoc/2.10/kchanges.2.10/3.t 644 3 12 24606 4357547033 7713 .NH Changes in application programs. .PP The application directories have also been rearranged in an effort to mimic the 4.3BSD release. The following table indicates the old and new names as well of the functions of these directories. For more information, see the .UX manual page for \fIhier\fP(7). .TS center box; l | l | l l | l | l. new name old name purpose _ bin cmd commands found in /bin etc cmd commands found in /etc games games commands found in /usr/games include include files found in /usr/include lib lib commands found in /lib local local commands found in /local new contrib commands found in /usr/new old N/A commands found in /usr/old ucb ucb commands found in /usr/ucb usr.bin cmd commands found in /usr/bin usr.lib lib commands found in /usr/lib .TE Many new commands have been added, and several have been removed; whenever possible we've dropped the 4.3BSD source directories in place. As in the kernel, 4.3BSD support was usually the deciding factor as to a program's status. In many of the source directories there are either or both of the special directories ``PORT'' and ``OLD''. PORT contains copies of 4.3BSD source that we feel ought to be ported to 2.10BSD. OLD contains copies of 2.9BSD source that, while we have ported the 4.3BSD version of the source code, we're unsure enough of it that we wanted to provide a backup copy. The following paragraphs are a description of several things that have changed outside of the kernel. .IP 1) Since the 2.10BSD C compiler still only recognizes seven significant characters in external names, several standard library names had to be changed to prevent name collisions. However, to prevent portability problems in your programs you should use the standard names. All known collisions in the standard include files or the C library have been handled either in the include file itself or in the include file \fIinclude/short_names.h\fP. This works because we're using the 4.3BSD C preprocessor, which has flexnames. Networking programs almost always need to include \fIshort_names.h\fP. See \fIsrc/bin/mail.c\fP and \fIsrc/bin/passwd.c\fP for examples of long name work arounds. The C library itself is a port of the 4.3BSD C library. .IP 2) Files ported from 4BSD systems that have more than MAXNAMLEN characters will port correctly as long as they are unique in those characters. For example, the kernel will translate an open call of the form: .nf .ft B open("/usr/man/man1/file_with_too_long_a_name",O_RDONLY,0); .ft R as if it were: .ft B open("/usr/man/man1/file_with_too_",O_RDONLY,0); .ft R .fi .IP 2) The new directory reading routines are now part of stdio. We found that it was usually easier to put the directory reading routines into the code than to handle both the old and the new structures. We haven't changed the actual file system. If you \fIhave\fP to have the old directory stuff, i.e. you are reading the actual device, convert your code to use the following structure, also found in \fIh/dir.h\fP. .nf .ft B #define MAXNAMLEN 14 struct v7direct { ino_t d_ino; char d_name[MAXNAMLEN]; }; .ft R .fi .bp This allows access to both the old and new directory structures. Make sure that you change all of the references, e.g. ``struct direct'' should be ``struct v7direct''. \fIFsck\fP(8) and \fIdump\fP(8) are good examples of programs that have to do this. Since the define ``DIRSIZ'' has changed in 4BSD (in V7 it was 14, the length of a file/directory name) we've replaced all occurrences of ``DIRSIZ'' in 2.10BSD with the corresponding 4BSD define, ``MAXNAMLEN''. .IP 3) The 2.10BSD stdio allocates space for file I/O buffering differently than 2.9BSD did. If you have programs that use buffered I/O and are complaining about bad input, or just dying horribly, and the input looks okay, start looking at the way it handles \fIsbrk\fP(2). If it calls \fIsbrk\fP with an argument of 0 and then uses that offset to figure out where the rest of its allocated objects are, you've probably found the problem. A simple work-around is to allocate the necessary stdio buffers as part of the program's data space and then use \fIsetbuf\fP(3) to so inform stdio. See the C compiler for examples. .IP 4) The 4.3BSD manual pages for \fIsigblock\fP(2), \fIsigpause\fP(2), and \fIsigsetmask\fP(2) are deceptive. They indicate that signal masks are integers, but, they must be able to hold 32 bits. Typically you'll see code like: .nf .ft B int omask; omask = sigsetmask(0); ... sigsetmask(omask); .ft R which should be translated to: .ft B long omask; omask = sigsetmask(0L); ... sigsetmask(omask); .ft R .fi In general, the fact that 4.3BSD thinks an ``int'' is 32 bits is the worst porting problem that you'll run into; finding ``ints'' that should be ``longs'' is an art. Routines that we look for as a matter of habit are any one of the \fIseek\fP(2) routines, \fIftell\fP(3), \fItime\fP(2), the various \fIsignal\fP(2) routines and the \fItruncate\fP(2) routines. .IP The functions \fIsigblock\fP and \fIsigsetmask\fP are defined as returning a long result in \fIh/signal.h\fP, which should ease some of the porting problems. The lint libraries have also been updated. In general, though, you'll have to scan any source you plan on porting for calls to \fIsigblock\fP, \fIsigpause\fP, or \fIsigsetmask\fP that take an int as a parameter or store their return value in an int. .IP To give an indication of the subtlety the long/int problem can take on, consider the following code fragment taken from /sys/sys/tty.c: .nf .ft B newflags = (tp->t_flags&0xffff0000) | (sg->sg_flags&0xffff)); .ft R .fi where \fInewflags\fP and the fields \fIt_flags\fP and \fIsg_flags\fP are all longs. The problem occurs with "sg->sg_flags&0xffff". The intent is fairly obvious, but in \fBlong op int\fP the \fBint\fP ("0xffff") is sign-extended to \fBlong\fP ("0xffffffff") before the operation as per K&R. The resulting operation in this case is a no-op! The fix is fairly simple in this instance and yields the following: .nf .ft B newflags = (tp->t_flags&0xffff0000) | (sg->sg_flags&0xffffL)); .ft R .fi This particular type of low word masking bit us no less than 33 times in the kernel. Other possibilities that are even more annoying: .bp .nf .ft B .ta .5i +\w'#define 'u +\w'FLAG32 'u #define FLAG1 0x00000001 ... #define FLAG16 0x00008000 ... #define FLAG32 0x80000000 .ft R .fi Using any of the above definitions to test or set flag values in a long quantity will work, \fBexcept FLAG16\fP. .IP 5) The PDP-11 \fIsetjmp\fP(2) implementation contains a subtle bug that occurs when a routine containing a \fIsetjmp\fP has \fIregister\fP variables. The bug sometimes causes those variables to be given invalid values when a longjmp is made back to the routine. This is probably impossible to fix in a reasonable manner, and it's much simpler to simply avoid register variables in such routines. .IP 6) The optional '#' character is not supported by \fIprintf\fP(3). .IP 7) The DEC MXV11 bootstrap ROM, for the RL's, TU's, RX's, and RD's among others, \fIrequires\fP that deadstart blocks begin with an 0240 and a branch. Noone seems to know why. This has already been implemented in \fIrauboot.s\fP and \fIrluboot.s\fP in \fIsys/mdec\fP. .IP 8) To port the 4.3BSD \fImake\fP(1) program, several of its table sizes had to be reduced. Make is very unforgiving of Makefiles that are too large. If make drops core for no reason that you can think of, try reducing the size of the Makefile. Also, don't run make depend in the system application directories, make can't handle it. .IP 9) Don't set csh history too high; it eventually runs out of space and logs you out. .IP 10) The games directory is largely untested. .IP 11) There's a new (and wonderful) compiler, that actually handles bit fields, identically named global structure elements, and lots of other stuff. It \fIdoesn't\fP handle any of the old assignment operators, and, not only doesn't handle them, but \fBproduces bogus code\fP. It is \fBSTRONGLY\fP recommended that you read the file \fIsrc/lib/ccom/TEST/README\fP. It goes into the problems with this compiler in more depth and contains some other Extremely Important Information. .IP 12) The 4.3BSD loader uses the \fI-L\fP flag to specify a list of library directories that should be searched for libraries specified with the \fI-l\fP option. The old meaning of the \fI-L\fP flag, the termination of overlaid text, is now the function of the \fI-Y\fP flag. .IP 13) \fIreadv\fP(2) and \fIwritev\fP(2) are implemented as compatibility routines in the standard library and are semantically identical to the 4.3BSD \fIreadv\fP and \fIwritev\fP on all current descriptors, with the exception of sockets (SOCK_STREAM does work identically however). In other words, the fact that the compatibility routines implement \fIreadv\fP and \fIwritev\fP non-atomically as multiple \fIread\fP(2) and \fIwrite\fP(2) calls doesn't normally matter; disk files don't care, tape reads and writes via read/writev under 4.3BSD don't work atomically anyway, and the compatibility code for \fIreadv\fP's on a tty seems to work as advertised. .IP 14) Any limit other than RLIMIT_CPU, RLIMIT_CORE, or RLIMIT_FSIZE will be ignored when passed to the kernel by \fIsetrlimit\fP. A subsequent call by \fIgetrlimit\fP will return the correct value, however. The three limits listed above are fully implemented in the kernel. .IP 15) There is a define, ``SEPFLAG'', in many Makefiles, that governs compilation for separate and non-separate I/D machines. If you have a non-separate I/D machine, set it to ``-n''. If you have a separate I/D machine, set it to ``-i''. This define needs to be set in \fIMakefile\fPs in several directories, each of which is found in \fIusr/src\fP. These directories are \fIbin\fP, \fIetc\fP, \fIgames\fP, \fIlib\fP, \fIlocal\fP, \fIold\fP, \fIucb\fP, \fIusr.bin\fP, and \fIusr.lib\fP. Each of these \fIMakefile\fPs has been written to pass this flag down to its subdirectories. The default ``SEPFLAG'' value is ``-i''. You may also enter the definition ``SEPFLAG=-i'' in your shell environment, rather than explicitly within the various makefiles. See \fImake\fP(1) for more information. .IP 17) The directory \fIusr/src/new\fP is a compendium of things that we moved in from the 4.3BSD directory \fIusr/src/new\fP and things we moved in from from the 2.9BSD \fIusr/src/local\fP and \fIusr/src/contrib\fP directories. They come with even less of a guarantee than the rest of the system. If that's possible. a few notes. Processes are no longer in one piece, but instead the user structure, data segment, and stack segment are sepdoc/2.10/kchanges.2.10/1.t 644 3 12 77566 4357532473 7730 .nr i \w'\fBkern_resource.c\0'u/1n .de XP .IP \\fB\\$1\\fP \\ni .. .NH Organizational changes .PP The directory organization and file names are very different from 2.9BSD. The new directory layout breaks machine-specific and network-specific portions of the system out into separate directories. A new file, \fImachine\fP, is a symbolic link to a directory for the target machine, in this case, \fIpdp\fP. This allows a single set of sources to be shared between multiple machine types (by including header files as \fI../machine/file\fP). The directory naming conventions, as they relate to the network support, are intended to allow expansion in supporting multiple ``protocol families''. The following directories comprise the system sources for the PDP: .TS lw(1.0i) l. /sys/OTHERS defunct PDP UNIBUS device drivers /sys/autoconfig PDP dependent autoconfiguration code /sys/bootrom PDP dependent boot rom code /sys/conf site configuration files and basic templates /sys/h machine independent include files /sys/machine symbolic link to /sys/pdp /sys/mdec PDP dependent deadstart (block zero) code /sys/net network independent, but network related code /sys/netimp IMP support code /sys/netinet DARPA Internet code /sys/netns DARPA Internet code /sys/netpup PUP-1 support code /sys/pdp PDP specific mainline code /sys/pdpdist PDP distribution files /sys/pdpif PDP network interface code /sys/pdpstand PDP dependent stand-alone code /sys/pdpuba PDP UNIBUS device drivers and related code /sys/pdpmba PDP MASSBUS device drivers and related code /sys/sys machine independent system source files /sys/vaxdist VAX distribution files /sys/vaxif VAX network interface code /sys/vaxuba VAX UNIBUS device drivers and related code .TE .DE .PP Files indicated as \fImachine independent\fP are shared between all .UX systems. Files indicated as \fImachine dependent\fP are located in directories indicative of the machine on which they are used; the 2.10BSD release from Berkeley only contains support for the PDP. Files marked \fInetwork independent\fP form the ``core'' of the networking subsystem, and are shared among all network software; the 2.10BSD release only contains support for the DARPA Internet protocols IP, TCP, UDP, and ICMP. .NH 2 /sys/h .PP Files residing here are intended to be machine independent. Consequently, the header files for device drivers, which were present in this directory in 2.9BSD, have been moved to other directories; e.g. \fI/sys/pdpuba\fP, \fI/sys/netinet\fP, etc. Many files which had been duplicated in \fI/usr/include\fP are now present only in \fI/sys/h\fP. Further, the 2.9BSD \fI/usr/include/sys\fP directory is now, normally, a symbolic link to this directory. By having only a single copy of these files the ``multiple update'' problem no longer occurs. (It is still possible to have \fI/usr/include/sys\fP be a copy of the \fI/sys/h\fP for sites where it is not feasible to allow the general user community access to the system source code.) For further information, see the Makefile for \fIusr/src/include\fP. .PP In general, the include files for 2.10BSD have been reworked to be as close as possible to 4.3BSD. In many cases, they have even been renamed. This may cause problems when attempting to port local software, although it should facilitate porting software developed under any version of 4BSD. .PP The following files are new to /sys/h in 2.10BSD. .XP clist.h contains the \fIcblock\fP structure definition previously found in tty.h .XP dk.h contains the disk and tty monitoring information previously found in \fIsystm.h\fP. .XP domain.h describes the internal structure of a communications domain; part of the new ipc facilities .XP errno.h had previously been only in \fI/usr/include\fP; the file \fI/usr/include/errno.h\fP is now a symbolic link to this file .XP exec.h the kernel's definition of the exec structure, as well as the overlay structure and the magic number definitions .XP fs.h replaces the old filsys.h description of the file system organization .XP gprof.h describes various data structures used in profiling the kernel; see \fIgprof\fP\|(1) for details; not yet implemented under 2.10BSD .XP kernel.h is an offshoot of systm.h and param.h; contains constants and definitions related to the logical .UX ``kernel'' .XP mbuf.h describes the memory management support used mostly by the networking; see ``4.2BSD Networking Implementation Notes'' for more information .XP msgbuf.h describes the kernel message buffer .XP namei.h defines various structures and manifest constants used in conjunctions with the \fInamei\fP routine .XP protosw.h contains a description of the protocol switch table and related manifest constants and data structures use in communicating with routines located in the table .XP ptrace.h contains definitions for process tracing .XP quota.h contains definitions related to the 4.3BSD disk quota facilities. .XP resource.h contains definitions used in the \fIgetrusage\fP, \fIgetrlimit\fP, and \fIgetpriority\fP system calls (among others) .XP socket.h contains user-visible definitions related to the new socket ipc facilities .XP socketvar.h contains implementation definitions for the new socket ipc facilities .XP syslog.h contains definitions for the system logging facility .XP tablet.h contains structures and definitions concerning the line table discipline .XP trace.h contains definitions and storage for file system buffer tracing points .XP ttychars.h contains definitions related to tty character handling; in particular, manifest constants for the system standard erase, kill, interrupt, quit, etc. characters are stored here (all the appropriate user programs use these manifest definitions) .XP ttydev.h contains definitions related to hardware specific portions of tty handling (such as baud rates); to be expanded in the future .XP uio.h contains definitions for users wishing to use the new scatter-gather i/o facilities; scatter-gather is unimplemented in 2.10BSD, although compatibility routines are available. These compatibility routines will behave exactly as a ``correct'' implementation would except for a few fairly unlikely situations. .XP un.h contains user-visible definitions related to the ``unix'' ipc domain .XP unpcb.h contains the definition of the protocol control block used in the ``unix'' ipc domain .XP vlimit.h contains definitions for kernel limits. .XP vm.h a quick way to include all of the vm header files .XP vmmac.h contains various macros concerning memory .XP vmmeter.h contains structures for monitoring various kernel functions which were in vm.h; several new items are metered: floating point simulation traps, number of calls to swapout and swapin (v_swpout/v_swpin); v_pgout/v_pgin count the number of I/O operations to and from the swap device (these use to be counted in v_swpout/v_swpin); synchronous software traps are no longer counted in v_intr; network soft interrupts are now counted in v_soft. .XP vmparam.h memory definitions .XP vmsystm.h various memory variables and structures .XP vtimes.h memory metering structures .XP wait.h contains definitions used in the \fIwait\fP and \fIwait3\fP\|(2) system calls; previously in \fI/usr/include/wait.h\fP .PP The following files have undergone significant change: .XP buf.h several macros to replace rarely used routines and for dealing with buffer chains have been added. A new structure, \fIbufhd\fP, has been added. The \fIb_link\fP field has been removed from the buffer structure. Of particular interest may be a macro for the translation of a buffer address to a physical address. Many of the buffer flag values have been changed; note that the addition of any more flag values will require changing the flag word, \fIb_flags\fP, to a long. .XP callout.h the callout structure has been changed; kernel callouts are now implemented as a linked list. .XP conf.h reflects changes made for the new \fIselect\fP\|(2) system call; the character device table has a new member, \fId_select\fP, which is passed a \fIdev_t\fP value and an FREAD (FWRITE) flag and returns 1 when data may be read (written), and 0 otherwise. The \fIbdevsw\fP structure has lost the \fId_tab\fP entry and gained a flags field, \fId_flags\fP. A new structure has also been added, \fIlinesw\fP, to support the use of various line protocols. .XP dir.h is completely different since definitions for the user level interface routines described in \fIdirectory\fP\|(3) are included .XP file.h has a very different \fIfile\fP structure definition and definitions for the new \fIopen\fP and \fIflock\fP system calls; the symbolic definitions for many constants commonly supplied to \fIaccess\fP and \fIlseek\fP, have been changed since 2.9BSD to bring them into line with 4.3BSD. A new member has been added, \fIf_type\fP. This member indicates the type of structure pointed to by \fIf_data\fP, and should be either DTYPE_INODE, DTYPE_PIPE, or DTYPE_SOCKET, constants found in \fIh/file.h\fP. .XP inode.h some of the standard macros have been renamed; the in-core inode structure has been rearranged to take advantage of areas of commonality between it and the dinode structure. A complete set of definitions for accessing various sub-fields have been added, and explicit references in the kernel have been removed. The access, modification and status change times have been added to the incore inode structure, as well as new fields for the advisory locking facilities and a back pointer to the file system super block information. A pointer to a text object has also been added. The dinode structure is now defined here. Also, various definitions for the \fIopen\fP(2), \fIseek\fP(2), and \fIaccess\fP(2) calls have been added and/or changed. .XP ioctl.h has all request codes constructed from _IO, _IOR, _IOW, and _IOWR macros which encode whether the request requires data copied in, out, or in and out of the kernel address space; the size of the data parameter (in bytes) is also encoded in the request, allowing the \fIioctl\fP\|() routine to perform all user-kernel address space copies .XP localopts.h is now generated by the script \fIconfig\fP, which is found in the \fIsys/conf\fP directory; it contains far fewer values than it did before, mostly as a result of the removal of most of the user defined options from 2.9BSD, as well as containing a few new ones. .XP param.h has had numerous items deleted from it; in particular, many definitions logically part of the ``kernel'' have been moved to \fIkernel.h\fP, and machine-dependent values and definitions previously found in \fIparam.h\fP have been moved to \fImachine/machparam.h\fP; it now contains a manifest constant, NGROUPS, which defines the maximum size of the group access list. .XP proc.h has changed extensively as a result of the new signals, the different resource usage structure, and the new timers; in addition, new members are present to support the status information required by new system calls as well as to provide the linked lists and hashing required by new access methods. .XP signal.h reflects the new signal facilities; several new signals have been added; structures used in the \fIsigvec\fP\|(2) and \fIsigstack\fP\|(2) system calls, as well as signal handler invocations are defined here .XP stat.h has been updated to reflect the changes to the inode structure; in addition several new fields have been added. One of those fields, \fIst_block\fP, claims to be the number of blocks used by the file. It isn't really, it's the size of the file in bytes rounded up to a kilobyte boundary. This results in some programs, notably \fIdu\fP(1), believing ridiculous file sizes. .XP systm.h has been trimmed back a bit as various items were moved to \fIkernel.h\fP and other include files .XP text.h two pointers have been added to the text structure to support LRU caching of text objects. The reference and loaded reference counters are now unsigned values. .XP time.h contains the definitions for the new time and interval timer facilities .XP tty.h reflects changes made to the internal structure of the terminal handler .XP types.h reflects several new types, and has been restructured .XP user.h has been extensively modified; members have been grouped and categorized to reflect the ``4.2BSD System Manual'' presentation; new members have been added and existing members changed to reflect the new groups facilities, changes to resource accounting and limiting, new timer facilities, and new signal facilities .NH 2 /sys/sys .PP This directory contains the ``mainstream'' kernel code. Files in this directory are intended to be shared between 2.10BSD implementations on all machines. As there is little correspondence between the current files in this directory and those which were present in 2.9BSD, a general overview of each files's contents will be presented rather than a file-by-file comparison. This is also where we will discuss some of the major changes that have been made to various areas of the kernel. .PP Files in the \fIsys\fP directory are named with prefixes which indicate their placement in the internal system layering. The following table summarizes these naming conventions. .TS lw(1.0i) l. init_ system initialization kern_ kernel (authentication, process management, etc.) quota_ disk quotas sys_ system calls and similar tty_ terminal handling ufs_ file system uipc_ interprocess communication vm_ memory .TE .DE .NH 3 Initialization code .XP init_main.c contains system startup code .XP init_sysent.c contains the definition of the \fIsysent\fP table \- the table of system calls supported by 2.10BSD. .NH 3 Kernel-level support .XP kern_acct.c contains code used in per-process accounting .XP kern_clock.c contains code for clock processing; work was done here to minimize time spent in the \fIhardclock\fP routine. .XP kern_descrip.c contains code for management of descriptors; descriptor related system calls such as \fIdup\fP and \fIclose\fP (the upper-most levels) are present here .XP kern_exec.c contains code for the \fIexec\fP system call. Argument and environment copies in exec are now done on a per-string rather than a per-character basis. .XP kern_exit.c contains code for the \fIexit\fP and \fIwait\fP system calls .XP kern_fork.c contains code for the \fIfork\fP and \fIvfork\fP system calls. The system now keeps a range of pids it can directly assign to new processes. .XP kern_mman.c contains code for memory management related calls .XP kern_proc.c contains code related to process management; in particular, support routines for process groups .XP kern_prot.c contains code related to access control and protection; the notions of user ID, group ID, and the group access list are implemented here .XP kern_resrce.c code related to resource accounting and limits; the \fIgetrusage\fP and ``get'' and ``set'' resource limit system calls are found here .XP kern_rtp.c code supporting the ``real-time'' processing features of 2.10BSD; these features are essentially untested since 2.9BSD. .XP kern_sig.c the signal facilities; in particular, kernel level routines for posting and processing signals .XP kern_subr.c support routines for manipulating the kernel I/O structure: \fIuiomove\fP, \fIuiofmove\fP, \fIureadc\fP, and \fIuwritec\fP .XP kern_synch.c code related to process synchronization and scheduling: \fIsleep\fP and \fIwakeup\fP among others. The scheduler no longer scans the process table once per second, it only considers runnable processes when recomputing priorities. Sleeping processes get their priority bump when they get put back on the run queue. .XP kern_time.c code related to processing time, the handling of interval timers and time of day clock. Kernel timeouts are now implemented as a linked list. There are several minor differences in the treatment of the timers in 2.10BSD. All real-time timer calls are to one second resolution, not to a clock tick as offered in 4.3BSD. (Incidentally, while the \fIualarm\fP(3) and \fIusleep\fP(3) calls are available, this one second resolution makes them useless on the 2.10BSD.) We also compute the real-time timer for all processes at the same time, as part of the cpu scheduler, rather than as a timeout, as is done in 4.3BSD. This was done to allow the timeout offset, \fIc_time\fP, to be stored in the kernel as a int, instead of a long, minimizing the number of long operations done at clock interrupt. If the kernel ever requires a timeout of greater than 9 minutes, it should be converted to a long, at which point the real-time timer calls should be done as timeouts. The other timers, which are necessarily processed at clock interrupt, are stored internally as ticks, not as seconds, but only one second resolution is offered by the system call interface to be consistent with the real time timer. The RLIMIT_CPU is also stored internally as clock ticks. The only noticeable effect of this is that very large values supplied with the RLIMIT_CPU option of \fIgetrlimit\fP(2) and \fIsetrlimit\fP(2) will automatically be converted to RLIM_INFINITY since the conversion of seconds to ticks would cause overflow. .XP kern_xxx.c miscellaneous system facilities .XP syscalls.c list of available system calls .NH 3 Disk quotas .XP quota_sys.c disk quota system call routines. .XP quota_kern.c in-core data structures for the in-core data structures. .XP quota_subr.c miscellaneous support routines for quota system. .XP quota_ufs.c file system routines for quota system. .NH 3 General subroutines .XP subr_prf.c \fIprintf\fP and friends; also, code related to handling of the diagnostic message buffer .XP subr_rmap.c subroutines which manage resource maps. The kernel routines \fImalloc\fP(), \fImfree\fP(), and \fImalloc3\fP() have been redone to various degrees for speed. .XP subr_xxx.c miscellaneous routines, including the \fInonet\fP(2) routine. This routine has been supplied as a stub for the routines \fIsocket\fP(2) and \fIsocketpair\fP(2) on non-networking systems so that networking programs can behave rationally. .NH 3 System level support .XP sys_generic.c code for the upper-most levels of the ``generic'' system calls: \fIread\fP, \fIwrite\fP, \fIioctl\fP, and \fIselect\fP; a ``must read'' file for the system guru trying to shake out 2.9BSD bad habits. .XP sys_inode.c code supporting the ``generic'' system calls of sys_generic.c as they apply to inodes; the guts of the byte stream file i/o interface. Inode locking, (the \fIflock\fP(2) call) is also implemented here. .XP sys_kern.c kernel stubs to allow the network kernel to access components of structures that exist in kernel data space. .XP sys_net.c copies of kernel routines required by the networking kernel as well as some network initialization routines. .XP sys_process.c code related to process tracing .XP sys_socket.c code supporting the ``generic'' system calls of sys_generic.c as they apply to sockets .NH 3 Terminal handling .XP tty.c the terminal handler proper; both 2.9BSD and version 7 terminal interfaces have been merged into a single set of routines which are selected as line disciplines .XP tty_conf.c initialized data structures related to terminal handling; .XP tty_pty.c support for pseudo-terminals; actually two device drivers in one .XP tty_subr.c c-list support routines; these have been completely rewritten to be much faster, particularly in moving groups of characters around. The definition \fICBSIZE\fP has also been doubled, to 32, while the number of clists (\fINCLISTS\fP) has been cut by about a third. The number of clists is also relative to the constant \fIMAXUSERS\fP, rather than being the same for all systems. .XP tty_tb.c two line disciplines for supporting RS232 interfaces to Genisco and Hitachi tablets. Untested in 2.10BSD. .XP tty_tty.c trivial support routines for ``/dev/tty'' .NH 3 File system support .XP ufs_alloc.c code which handles allocation and deallocation of file system related resources: disk blocks, on-disk inodes, etc. 2.9BSD had a real problem here in that it did a linear search of the mount table every time it freed or allocated a block. The addition of a back-pointer to the associated file system to the incore inode eliminated this lookup. .XP ufs_bio.c block i/o support, the buffer cache proper. The 2.9BSD block i/o code has been completely ripped out and replaced with 4.3BSD code. The most visible effects of this were the removal of the \fIb_link\fP field from the buffer header structure, the removal of the \fIbunhash\fP() subroutine, and the reorganizing of the free queues into four separate queus. This will have some interesting side effects if you have local drivers that use the \fIb_link\fP field, or if you have drivers that misuse some of the remaining pointers in the buffer header structure. Note, the correct fix is \fBnot\fP to put the \fIb_link\fP field back in, but to rewrite the driver's queueing mechanism. All current drivers have also been rewritten to supply the \fIBYTE\fP or \fIWORD\fP argument directly to \fIphysio\fP(), eliminating the routine \fIphysio1\fP(). .XP ufs_bmap.c code which handles logical file system to logical disk block number mapping; understands structure of indirect blocks and files with holes; handles automatic extension of files on write .XP ufs_dsort.c sort routine implementing a prioritized seek sort algorithm for disk i/o operations .XP ufs_fio.c code handling file system specific issues of access control and protection .XP ufs_inode.c inode management routines; in-core inodes are now hashed and retained in an LRU cache, so that inodes do not have to be continually re-read from disk. The in-core inode also contains the access, modification, and creation times which make \fIstat\fP(2) calls much faster. There is an interesting relationship between texts and inodes, now, in that the number of inodes available for normal system use will be the number of inodes minus the number of text images cached by the system. Also, the inode now has a pointer to its text object, if any, which is used to implement shared text images. .XP ufs_mount.c code related to demountable file systems .XP ufs_nami.c the \fInamei\fP routine (and related support routines) \- the routine that maps pathnames to inode numbers. The 2.9BSD \fInamei\fP() routine has been completely reworked. There are three major advantages to the new one: first, it reads the entire path in from user space at once rather than using multiple subroutine calls per character, second, it caches the current position in the directory so that each subsequent request from a process will continue searching at the place it stopped, and finally, it handles symbolic links correctly. \fINamei\fP, and its associated routines, probably gave us more long-term trouble than any other part of the kernel. Be Very Careful if you modify anything here, especially in terms of side-effects for \fImkdir\fP(2), \fIrmdir\fP(2), and \fIrename\fP(2). .XP ufs_subr.c miscellaneous subroutines .XP ufs_syscalls.c file system related system calls, everything from \fIopen\fP to \fIunlink\fP; many new system calls are found here: \fIrename\fP, \fImkdir\fP, \fIrmdir\fP, \fItruncate\fP, etc. .NH 3 Interprocess communication .XP proto.c protocol configuration table and associated routines .XP sys_pipe.c the pipe open, read, and write routines .XP uipc_domain.c code implementing the ``communication domain'' concept; this file must be augmented to incorporate new domains .XP uipc_mbuf.c memory management routines for the ipc and network facilities; refer to the document ``4.2BSD Networking Implementation Notes'' for a detailed description of the routines in this file .XP mbuf11.c the same as above, only more PDP-11 dependent. .XP uipc_proto.c .UX ipc communication domain configuration definitions; contains .UX domain data structure initialization .XP uipc_socket.c top level socket support routines; these routines handle the interface to the protocol request routines, move data between user address space and socket data queues and understand the majority of the logic in process synchronization as it relates to the ipc facilities .XP uipc_socket2.c lower level socket support routines; provide nitty gritty bit twiddling of socket data structures; manage placement of data on socket data queues .XP uipc_syscalls.c user interface code to ipc system calls: \fIsocket\fP, \fIbind\fP, \fIconnect\fP, \fIaccept\fP, etc.; concerned exclusively with system call argument passing and validation .XP uipc_usrreq.c .UX ipc domain support; user request routine and supporting utility routines .NH 3 Memory support .PP The code in the memory subsystem has changed very little from 2.9BSD; most changes made in these files were either to gain speed or to fix bugs. .XP vm_proc.c mainly code to manage memory allocation during process creation and destruction. .XP vm_sched.c the code for process 0, the scheduler, lives here; other routines which monitor and meter memory activity (used in implementing high level scheduling policies) also are present; the scheduler has been perturbed in minor ways to encourage the swapping of processes that have been in a sleep state for a significant amount of time. .XP vm_swap.c code to swap a process in or out of core .XP vm_swp.c code to handle swap i/o .XP vm_text.c code to handle shared text segments \- the ``text'' table; this code has been completely redone to allow the cacheing of text images. The current system will maintain the core image of a process until the core or swap is required for another process. Neither will a swap image of a process be written until the image is forced out of core. Basically, all programs are now treated as ``sticky''. A new routine, \fIxuncore\fP(), has been added that frees up core space for the map allocation routines. .NH 2 /sys/conf .PP This directory contains files used in configuring systems. The format of configuration files has changed a great deal. .XP :comm-to-bss script to move the \fIproc\fP, \fIinode\fP and \fIfile\fP tables from comm space to bss. .XP :splfix.* scripts to implement the spl functions for various PDP-11 instruction sets. .XP GENERIC the generic configuration file; contains the standard user tuneable system parameters. .XP Make* the system Makefiles; they've been broken up into six parts since a single one cannot handle the dependencies generated for the kernel. .XP VAX.compile a directory containing a C preprocessor and C compiler that allows 2.10BSD to be compiled on another machine. If you're interested, the entire networking kernel compiles from scratch in about 5 minutes on a VAX 8600. .XP checksys.c source for the kernel size checking program .XP config the actual kernel configuration script .XP ioconf.c I/O configuration file .XP param.c various kernel parameters and tables .NH 2 /sys/pdpuba .PP This directory contains UNIBUS device drivers, and their related include and autoconfiguration files. The include files have moved from \fI/sys/h\fP and the autoconfiguration files from \fIsys/autoconfig\fP in an effort to isolate machine-dependent portions of the system. The following device drivers were not present in the 2.9BSD release. .XP ram.c a ram disk driver .XP rx.c a driver for the RX01/02 floppy disk .XP si.c a driver for the SI 9500 controller with CDC 9766 disks .XP ra.c a driver for the UDA controller .PP In addition to the above device drivers, many drivers present in 2.10BSD now sport corresponding include files which contain device register definitions. For example, the DH11 driver is now broken into three files: dh.c, dhreg.h, and dmreg.h. .PP The following device drivers have been significantly modified, or had bugs fixed in them, since the 2.9BSD release: .XP dh.c the 4.3BSD driver has been installed .XP dz.c the 4.3BSD driver has been installed .XP dhu.c the 4.3BSD driver has been installed .XP lpr.c the line printer driver has had some per-character i/o removed .XP xp.c the bad blocking has been fixed .PP Additionally, the \fIrl\fP, \fIra\fP and \fIxp\fP drivers support the 22-bit QBUS. The tty drivers also do intelligent auto siloing, switching between siloing and interrupt per character based on input load. .PP In addition the \fIsys/OTHERS\fP directory has had several ``new'' device drivers added to it that may or may not work. It is extremely probable that they do not handle the new ioctl protocols and it is also likely that they do not correctly map buffers in and out of kernel space correctly. For more information regarding the installation of device drivers, see the file \fIsys/OTHERS/README\fP. This is a rambling, disjointed ``must'' for the driver hacker. You should also see this directory if you are having problems with a driver that's currently in place in 2.10BSD. There are several different versions of drivers, bug fixes etc. that we just didn't have time to install and/or test out. A great deal of work has been done on the \fIra\fP and \fIxp\fP drivers. They are known to work, and work reliably. You should use them, if at all possible. .NH 2 /sys/pdpmba .NH 2 /sys/pdp .PP The following files are new in 2.10BSD: .XP clock.c the clock start and busy-delay routines .XP cons.c the console driver, originally \fIsys/dev/kl.c\fP .XP frame.h the PDP-11 calling frame definition .XP genassym.c a program to generate structure offset definitions for the assembly files, originally \fIsys/conf/genassym.c\fP .XP in_cksum.c checksum routine for the DARPA Internet protocols .XP kern_pdp.c PDP-11 dependent system calls .XP machparam.h machine-dependent portion of \fIsys/h/param.h\fP .XP mem.c the memory device driver .XP mscp.h definitions for the Mass Storage Control Protocol .XP psl.h definitions for the PDP-11 program status register .XP reg.h definitions for locating the users' registers, relative to R0 in the user call frame on the kernel stack .XP scb.s system control block file, containing the low core vector interrupt definitions, originally \fIconf/l.s\fP. .XP vmparam.h machine-dependent memory portion of \fIsys/h/param.h\fP .PP The file \fImch.s\fP has been split up into several different files. The following files all contain code originally part of \fImch.s\fP. The \fIlibc_\fP files all contain code duplicated in the C library. .XP libc_bcmp.s the bcmp routine .XP libc_bcopy.s the bcopy routine .XP libc_bzero.s the bzero routine .XP libc_csv.s the csave and creturn routines .XP libc_ffs.s the find first set routine .XP libc_htonl.s the host to network long routine .XP libc_htons.s the host to network short routine .XP libc_insque.s the insert queue routine .XP libc_ldiv.s the long division routine .XP libc_lmul.s the long multiplication routine .XP libc_lrem.s the long remainder routine .XP libc_remque.s the remove queue routine .XP libc_strlen.s the string length routine .XP mch_backup.s routines to back up the user CPU state after an aborted instruction .XP mch_click.s routines to move click size areas .XP mch_copy.s routines to move various data sizes to and from user space .XP mch_dump.s the automatic tape dump routines .XP mch_dzpdma.s the DZ-11 pseudo-DMA interrupt routines .XP mch_fpsim.s floating point simulation routines .XP mch_profile.s system profiling routines; these are untested since 2.9BSD. .XP mch_start.s checkout, setup and startup routines .XP mch_trap.s interrupt interface code to C. .XP mch_vars.s variable definition code .XP mch_xxx.s various other routines that needed to be in assembly .XP DEFS.h definitions and common macros for all assembly files; emulates the C library DEFS.h file for the benefit of the \fIlibc_\fP files. .PP The supervisory networking support files are as follows: .XP mch_KScall.s kernel to supervisor call support .XP net_SKcall.s supervisor to kernel call support .XP net_copy.s version of mch_copy.s for the supervisor space .XP net_csv.s version of mch_csv.s for the supervisor space .XP net_mac.h \fI#defines\fP to convert standard kernel calls into calls into supervisor space .XP net_mbuf.s routines to copy mbuf's in and out .XP net_scb.s entry points for network interrupt vectors .XP net_trap.s trap routine for supervisor space networking .XP net_xxx.s various other networking routines that needed to be in assembly .NH 2 /sys/autoconfig .PP The autoconfiguration directory is mostly as it was in 2.9BSD with the exception that the probe routines for the various devices have been broken out into either \fIsys/pdpuba\fP or one of the networking directories. To find a probe routine, look for a file named \fBxx\fIauto\fR(), where \fBxx\fP is the standard device abbreviation. one: first, it reads the entire path in from user space at once rather than using multiple subroutine calls per character, second, it cacdoc/2.10/kchanges.2.10/2.t 644 3 12 27542 4357544021 7706 .NH Changes inside the kernel .IP 1) Code which previously used the \fIiomove\fP, \fIpassc\fP, or \fIcpass\fP routines will have to be modified to use the new \fIuiomove\fP, \fIureadc\fP, and \fIuwritec\fP routines. These routines are faster than the 2.9BSD versions as well as having the added facilities of mapping in user space for large transfers and transferring odd lengths of data or data to odd addresses without the serious performance degradation seen in 2.9BSD. .IP 2) The calling convention for the driver \fIioctl\fP routine has changed. Any data copied in or out of the system is now done at the highest level, inside \fIioctl\fP\|(). The third parameter to the driver \fIioctl\fP routine is a data buffer passed by reference. Values to be returned by a driver must be copied into the associated buffer from which the system then copies into the user address space. It should also be noted that \fIioctl\fP's are 32-bit quantities, not 16-bit as in 2.9BSD, although the kernel still stores them in 16 bits internally. These changes are reflected in \fIioctl.h\fP. Also, the \fIread\fP, \fIwrite\fP, and \fIioctl\fP entry points in device drivers must return 0 or an error code from <\fIerrno.h\fP>. This is a reflection of the effort to have kernel routines return errors rather than setting global variables to error values. When porting your local device drivers make sure that they correctly return these errors. .IP 3) Assembly routines which make system calls will not port from 2.9BSD or earlier systems to 2.10BSD, as the system call protocol to the kernel has changed a great deal. Arguments are \fBalways\fP passed into the kernel on the stack, as opposed to registers and/or data space. This change was made for a number of reasons, and triggered by the need for reliable signal delivery. The file \fIusr/include/syscall.h\fP details the new entrance values. The 2.9BSD protocol of using the high bit of the syscall value to indicate that the arguments are on the stack has also been removed. The \fIsyslocal\fP (58) call has disappeared entirely as the \fIsyslocal\fP table has been folded into the \fIsysent\fP table. The \fIindir\fP (0) call has also been deleted. If you have any assembly source which makes system calls directly, it is strongly recommended that you convert them to simply push their parameters onto the stack and call the standard library routines. \fBObviously, there is no binary compatibility with previous versions of PDP .UX. 2.10BSD is, however, binarily compatible with 2.10.1BSD. .IP \fRThere have been many changes in the system calls available to user programs, as approximately thirty new system calls have been added and five or so deleted. Use of a deleted system call is fairly easy to detect since the kernel delivers a SIGSYS signal to any program requesting a non-existent system call. The one exception to this rule is the use of a \fIsocket\fP(2) or \fIsocketpair\fP(2) call on a system without networking. Either of these calls will simply return an error so that networking programs can fail correctly. .IP 4) On the PDP-11 only some of the \fIrusage\fP and \fIitimerval\fP structures are meaningful. In order to minimize the data space required by the user and proc structures in the kernel, the kernel has private copies of these structures. Only programs such as \fIps\fP(1) and \fIvmstat\fP(1), that read through the proc structure, will need to know about the kernel's versions of these structures. Any unused members of these structures are zero'd out before being returned to a user process. .IP 5) Both the kernel and application systems may now have up to NOVL (15) overlays. This feature requires modification of \fIld(1)\fP, \fIadb(1)\fP, the C library, the kernel, \fIstrip\fP(1), and \fInm\fP(1) among other things. If you're not hearing what I'm saying, don't mess with it. Separate libraries are no longer required for overlaid and non-overlaid programs. It turned out that it cost approximately 3.89 micro-seconds per subroutine call on a PDP 11/44 to combine the two. Therefore, all programs should use the standard library (libc.a) for loading. The -V flag is ignored by \fIcc\fP(1) and \fIf77\fP(1); they automagically pass it to the assembler and the various passes of the C compiler. (-V wasn't hardwired into the assembler so that it would still be possible to run \fIas\fP(1) without the -V flag and get an executable without having to use the loader.) If you call the assembler directly, remember to pass it the -V flag. Also, the C library should not be loaded as an overlay, as many of its routines don't use the csv/cret protocol. .IP 6) The process table has grown considerably since its original incarnation. Several parts of the kernel used a linear search of the entire table to locate a process, a group of processes, or group of processes in a certain state. In order to reduce the time spent examining the process table, several changes have been made. The first is to place all process table entries onto one of three linked lists, one each for entries in use by existing processes (\fIallproc\fP), entries for zombie processes (\fIzombproc\fP), and free entries (\fIfreeproc\fP). This allows the scheduler and other facilities that must examine all existing processes to limit their search to those entries actually in use. Searches for unused process id's are avoided by noting a range of usable process ID's when trying to generate a new, unique ID. Searches for individual processes are avoided by using linked lists of hashed pid's. .IP 7) In order to avoid searching through the list of open files when the actual number in use is usually small, the index of the last used open file slot is maintained in the field \fIu.u_lastfile\fP. The routines that implement open and close or implicit close (\fIexit\fP and \fIexec\fP) maintain this field, and it is used whenever the open file array \fIu.u_ofile\fP is scanned. .IP 8) The values for \fInice\fP used in 2.9BSD and previous systems ranged from 0 though 39. Each use of these scheduling parameters was offset by the default, NZERO (20). This has been changed in 2.10BSD to use a range of -20 to 20, with NZERO redefined as zero. .IP 9) There have been an large number of changes in the types defined and used by the system. The system file \fIsys/types.h\fP should be serve as the final description of these new types. Of particular interest are the new typedefs that have been added for user ID's and group ID's in the kernel and common data structures. These typedefs, \fIuid_t\fP and \fIgid_t\fP, are both of type \fIu_short\fP. This change from the previous usage (explicit \fIshort\fP ints) allows user and group ID's greater than 32767 to work reasonably. Other changes include the conversion of the \fIlabel_t\fP type to a structure, the addition of a \fIquad\fP (64-bit) type, and the much more extensive use of such types as \fIdaddr_t\fP, \fImemaddr\fP, \fIoff_t\fP, and \fIcaddr_t\fP. .IP 10) The berknet driver didn't work in 2.9BSD, and we've done nothing to change that. In any case, it's been moved to the \fIsys/OTHERS\fP directory with all of the other defunct drivers. We have provided a version of the 4.3BSD driver since it will understand the other changes to the kernel made for 2.10BSD, although it won't work either. See the README. Enjoy. .IP 11) The routines \fIschar\fP and \fIuchar\fP have gone away and have been replaced by \fIcopyinstr\fP and \fIcopyoutstr\fP, routines that copy a NULL terminated string of characters in or out of kernel space. Also available are \fIvcopyin\fP, \fIvcopyout\fP, and \fIcopystr\fP. The first two routines copy odd numbers of bytes and data to and from odd addresses efficiently. \fICopystr\fP copies a NULL terminated string of characters within kernel space. .IP 12) Directories with more than 10 trailing empty slots will be automagically truncated whenever a new file is created within them. This creates a minor problem: if someone creates an entry in the \fIlost+found\fP directory, that directory will be cheerfully truncated to a very small length. Since we didn't have the time to really fix the problem, we changed \fImklost+found\fP(8) to leave a special file in the very last slot of the \fIlost+found\fP directory. It would probably be a good idea for you to remake your \fIlost+found\fP directories, just in case. Of course, the correct fix is to port the 4.3BSD fsck; I'd really like a copy when you're done. .IP 13) The ``real-time'' features of 2.9BSD have been left in place, and, should work as they always have, with one major exception. The \fIfmove\fP() routine has not been fixed to be interruptible. See the \fIcopy\fP() routine for examples of what needs to be done to make it behave correctly. This, however, will be fairly difficult. We suggest that if you want to use \fBCGL_RTP\fP that you comment out the use of \fIuiofmove\fP() in \fIuiomove\fP(). .IP 14) Most of the conditional compilation defines in the 2.9BSD kernel have been removed because the features they controlled are now either standard or no longer supported in 4.3BSD. Other features have been grouped together and are now controlled by the same define. .PP The following table lists \fI#defines\fP that have been removed from 2.10BSD. .TS center box; l | l | l l | l | l. define name feature comment _ DISKMON keep statistics on the buffer cache absorbed by UCB_METER INTRLVE interleave file systems across devices not supported in 4.3BSD MPX_FILS multiplexed files not supported in 4.3BSD UCB_GRPMAST ``group'' super-users not supported in 4.3BSD UCB_LOGIN ``login'' system call not supported in 4.3BSD UCB_PGRP V7 bug fix supplanted by job-control UCB_SUBM ``submit'' system call not supported in 4.3BSD UNFAST turn off inline macros UCB_QUOTAS dynamic disk quota scheme TEXAS_AUTOBAUD getty feature part of ported 4.3BSD source .TE .bp .PP The following \fI#defines\fP are new or remain largely unchanged since 2.9BSD. Note, no software outside of the kernel needs to be aware of the ``VIRUS_VFORK'' flag. The kernel automatically maps \fIvfork(2)\fP into \fIfork\fP(2) if the \fIvfork\fP call isn't available. .TS center box; l | l | l l | l | l. define name feature comment _ CGL_RTP support one ``real-time'' process untested DIAGNOSTIC more stringent error checking now more expensive to run ENABLE34 Able's MM board untested in quite some time HZ line clock frequency renamed "LINEHZ" MAXMEM limit process memory NOKA5 only buffers and clists use KA5 Q22 22-bit QBUS QUOTA dynamic file system quotas \fBvery\fP expensive SMALL smaller queues and hash tables untested in quite some time UCB_CLIST map out clists UCB_FRCSWAP force swap on forks/expands UCB_METER various system statistics expanded; expensive to run UCB_NET Berkeley's TCP/IP a 4.3BSD interface UCB_RUSAGE resource accounting UNIBUS_MAP 18-bit Unibus mapping VIRUS_VFORK the \fIvfork\fP(2) system call .TE .sp 2 .PP The following table lists \fI#defines\fP that are now a standard part of 2.10BSD. .TS center box; l | l | l l | l | l. define name feature comment _ ACCT keep accounting records DZ_PDMA pseudo DMA for DZ boards INSECURE retain set-id bits now follows 4.3BSD behavior MENLO_OVLY support user text overlays MENLO_JCL support job control MENLO_KOV support kernel overlays OLDTTY V7 tty line discipline part of the 4.3BSD tty driver PARITY handle cache and memory parity traps TM_IOCTL ioctl calls in the TM-11 driver TS_IOCTL ioctl calls in the TS-11 driver UCB_AUTOBOOT allow automatic rebooting UCB_BHASH hash buffer headers UCB_DEVERR translate device error messages UCB_ECC correct soft ecc disk transfer errors UCB_FSFIX update files in correct order UCB_IHASH hash in-core inodes UCB_LOAD compute Tenex style load average UCB_NKB set file system block size always set to ``1'' UCB_NTTY Berkeley line discipline part of the 4.3BSD tty driver UCB_RENICE support \fIrenice\fP(2) system call UCB_SCRIPT scripts may specify interpreters UCB_SYMLINKS support symbolic links UCB_UPRINTF send error messages to users UCB_VHANGUP revoke access to tty after logout .TE to use the loader.) If you call the assembler directly, remember to pass it the -V flag. Also, the C library should not be loaded as an overlay, as many ofdoc/2.10/kchanges.2.10/0.t 644 3 12 15532 4357540000 7671 .EH 'Page %''Changes in 2.10BSD' .OH 'Changes in 2.10BSD''Page %' .ds Ps 2.10BSD .ds 2B 2.10.1BSD .TL Changes in the \*(Ps kernel .sp .de D .ie \\n(.$>1 \\$1 \\$2 \\$3 .el DRAFT of \n(mo/\n(dy/\n(yr .. .D October 1, 1988 .AU Keith Bostic .AI Computer Systems Research Group Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 seismo!keith; bostic@ucbvax.berkeley.edu .AU Casey Leedom .AI Department of Computer Science California State University, Stanislaus Turlock, California 95380 ucbvax!vangogh!casey; casey@vangogh.berkeley.edu .PP This document summarizes changes in PDP-11\(dg UNIX\(dd between .FS \u\(dg\d\s-2DEC\s0, \s-2PDP-11\s0, \s-2QBUS\s0, and \s-2UNIBUS\s0 are trademarks of Digital Equipment Corporation. .br \u\(dd\d\s-2UNIX\s0 is a trademark of Bell Laboratories. .FE the July 1983 2.9BSD release and the April 1987 and October 1988 \*(Ps distributions. .PP It is intended to provide sufficient information that those who maintain the kernel, have local modifications to install, or who have versions of 2.9BSD modified to run on other hardware should be able to determine how to integrate this version of the system into their environment. As always, the source code is the final source of information, and this document is intended primarily to point out those areas that have changed. .PP With the massive changes made to the system, both in organization and in content, it may take some time to understand how to carry over local software. The majority of this document is devoted to describing the contents of each important source file in the system. If you have local software to incorporate in the system you should first read this document completely, then study the source code to more fully understand the changes as they affect you. .LP Most of the changes between 2.9BSD and 2.10BSD fall into one of several categories. These are: .RS .IP \(bu 3 bug fixes, .IP \(bu 3 performance improvements, .IP \(bu 3 addition of 4.3BSD system calls and application programs, .IP \(bu 3 removal of features no longer supported in the 4.3BSD release, .IP \(bu 3 new protocol and hardware support. .RE .LP The major changes to the kernel are: .RS .IP \(bu 3 the addition of supervisor space networking, .IP \(bu 3 a complete rewrite of the user/kernel interface, .IP \(bu 3 the addition of numerous system calls, .IP \(bu 3 replacement of much of the high kernel with portions of the 4.3BSD kernel, .IP \(bu 3 the addition of the 4.3BSD tty and serial line drivers, .IP \(bu 3 the addition of inode, swap and text caching algorithms, .IP \(bu 3 restructuring the kernel into the 4.3BSD structure. .IP \(bu 3 the addition of disk quotas .RE .PP This document also describes changes between the first and second releases of 2.10BSD. The latter has been designated as 2.10.1. Although the changes are fairly simple to describe, they cover large portions of the distribution. Most will not be visible to either users or administrators; specifically, no recompilation is necessary. Administrators should be aware that the 4.3BSD disk quota system is now available. Due to address space considerations, however, it is expensive to run. Also, the source for the on-line manual pages has been rearranged as per the 4.3BSD-tahoe release. See the 2.10.1 setup document for more information. .PP The major change, and the reason for the second release, is an .B extensive reworking of the kernel to move the networking into supervisor space. This move eliminated most, if not all, of the instabilities seen in the original networking provided with 2.10BSD; it also doubled the speed of, for example, file transfer. As encouragement to sites that encountered difficulties in using the networking in the first release, or encounter difficulties in this release, we have beta sites that have been running for months without crashing, as well as sites with fifty nodes. We are, however, still suspicious of the DEQNA driver... .PP In application land, many missing pieces of the 4BSD distribution have been added, most notably the FORTRAN compiler and library and the line printer sub-system. Many other programs have had minor (and not-so-minor) fixes applied. .PP This document is not intended to be an introduction to the kernel, but assumes familiarity with prior versions of the kernel, particularly the 2.9BSD release. Other documents may be consulted for more complete discussions of the kernel and its subsystems. It cannot be too strongly emphasized that 2.10BSD much more closely resembles 4.3BSD than it does 2.9BSD. We have attempted to be, literally, bug-for-bug compatible with 4.3BSD. It is \fBSTRONGLY\fP recommended that 4.3BSD manuals be consulted when using this system. 2.9BSD manuals are no longer correct. Online documentation is as complete and correct as time permitted. .PP This release is not supported, nor should it be considered an official Berkeley release. It was called 2.10BSD because 2.9BSD has clearly become overworked and System V was already taken. The ``bugs'' address supplied with this release (as well as with the 4BSD releases) will work for some unknown period of time; \fBmake sure\fP that the ``Index:'' line of the bug report indicates that the release is ``2.10BSD''. See the \fIsendbug\fP(8) program for more details. All fixes that we make, or that are sent to us, will be posted on \fIUSENET\fP, in the news group ``comp.bugs.2bsd''. .PP The authors gratefully acknowledge the contributions of many other people to the work described here. Major contributors include Steven Schultz, of Contel Federal Systems, who did the original port of the supervisor space networking and much of the debugging; Cyrus Rahman, of Duke University, did much of the applications work for 2.10.1BSD and should hold some kind of record for being able to get the entire kernel rewritten with a single 10-line bug report. Gregory Travis and Jeff Johnson of the Institute for Social Research, and Steven Uitti of Purdue University were also extremely helpful. .PP We also wish to acknowledge that Digital Equipment Corporation donated the ULTRIX-11 Version 3.1 release source code to this effort. Portions of the 2.10.1BSD release, in particular, the floating point simulation code, are directly derived from this contribution. Various networking drivers are also derived from source code Digital has previously contributed to the 4BSD effort. .PP Finally, much credit should go to the authors of 4.2BSD and 4.3BSD from which we stole everything that wasn't nailed down and several things that were. (Just ``diff'' this document against \fIChanges to the Kernel in 4.2BSD\fP if you don't believe that!) We are also grateful for the invaluable guidance provided by Michael Karels, of the Computer Science Research Group, at Berkeley \- although we felt that his suggestion that we ``just buy a VAX'', while perhaps more practical, was not entirely within the spirit of the project. BSD fall into one of several categories. These are: .RS .IP \(bu 3 bug fixes, .IP \(bu 3 performance improvements, .IP \(bu 3 addition of 4.3BSD system calls and appdoc/2.10/kchanges.2.10/spell.ok 644 3 12 5323 4356072574 11013 AUTOBAUD AUTOBOOT BHASH Bostic CBSIZE CGL CLIST Copystr DEFS DEFS.h DEQNA DEVERR DH11 DIRSIZ DISKMON DMA DTYPE DZ ECC ENABLE34 FILS FLAG1 FLAG16 FLAG32 FRCSWAP FSFIX FSIZE GRPMAST Genisco HZ ICMP ID's IHASH INODE INTRLVE IOR IOW IOWR IP Inode JCL K&R KA5 KOV Karels LINEHZ LRU Leedom MASSBUS MAXMEM MAXNAMLEN MM MPX MXV11 Makefile Makefiles NCLISTS NGROUPS NKB NOKA5 NONFP NOVL NTTY NZERO Namei Noone OLDTTY OVLY Online PDMA PGRP QBUS RD's RDONLY,0 README RL's RLIM RLIMIT ROM RS232 RTP RUSAGE RX's RX01 Rahman SEPFLAG SI SIGSYS SUBM Stanislaus TCP TM TS TU's Tenex Turlock UCB UDA UDP UNIBUS UPRINTF USENET Uitti Unibus VAX VAX.compile acct.c alloc.c allproc autoconfig autoconfiguration automagically backup.s bcmp.s bcopy.s bdevsw berknet bio.c bmap.c bootrom bss buf.h bufhd bunhash bzero.s cacheing caddr callout callout.h callouts cblock ccom checksys.c cksum.c click.s clist.h clists clock.c cmd comp.bugs.2bsd conf conf.c conf.h cons.c contrib copy.s copyinstr copyoutstr copystr cpass cret creturn csave csv csv.s daddr deadstart descrip.c dev dh.c dhreg.h dhu.c dinode dir.h dk.h dmreg.h domain.c domain.h dsort.c dump.s dz.c dzpdma.s ecc errno.h exec.c exec.h exit.c ffs.s file.h files's filsys.h fio.c flags&0xffff flags&0xffff0000 flags&0xffffL flexnames fmove fork.c frame.h freeproc fs.h genassym.c generic.c gid gprof.h hardclock hier htonl.s htons.s incore indir inline ino inode inode.c inode.h inodes insque.s int intr ints inuse ioconf.c ioctl.h iomove ipc itimerval kernel.h kl.c l.s lastfile ldiv.s lib libc libc.a linesw lmul.s localopts.h lpr.c lrem.s machparam.h mail.c main.c malloc3 mbuf.c mbuf.h mch mch.s mdec mem.c memaddr mfree mman.c mount.c mscp.h msgbuf.h namei namei.h names.h nami.c netimp netinet netns netpup newflags noop ofile olddelta omask op param.c param.h passc passwd.c pathnames pdp pdp.c pdpif pdpmba pdpstand pdpuba pgin pgout physio physio1 pid's pids pipe.c prf.c prioritized proc proc.c proc.h process.c profile.s prot.c proto.c protosw.h psl.h ptrace.h pty.c quota.h ra ra.c ram.c rauboot.s reg.h remque.s resource.h resrce.c rl rluboot.s rmap.c rom rtp.c rusage rx.c scb.s schar sched.c sg si.c sig.c signal.h socket.c socket.h socket2.c socketvar.h spl splfix src st start.s stat.h strlen.s subr subr.c swap.c swapin swapout swp.c swpin swpout synch.c sys.c syscall.h syscalls.c sysent sysent.c syslocal syslog.h systm.h tablet.h tahoe tb.c text.c text.h time.c time.h trace.h trap.s tty.c tty.h ttychars.h ttydev.h tuneable typedefs types.h u.u ucb uchar ufs uid uio.h uiofmove uiomove uipc un.h unpcb.h ureadc user.h usr.bin usr.lib usrreq.c uwritec v7direct vars.s vaxif vaxuba vcopyin vcopyout vlimit.h vm vm.h vmmac.h vmmeter.h vmparam.h vmsystm.h vtimes.h wait.h xp xp.c xuncore xx xxx.c xxx.s zero'd zombproc etween the first and second releases of 2.10BSD. The latter has been designated as 2.10.1. Although the changes are fairly simple to describe, they cover large portions of the distribution. Most will not be visible to either users or administrators; specifically, no recompilation is necessary. Admidoc/2.10/fsck/ 755 3 12 0 3461242032 6015 doc/2.10/fsck/fsck.mm 444 3 12 133204 3141164177 7434 .ds q U\s-1NIX\s+1 .ds u U\s-1NIX\s+1 .de Hu .br .ss 18 .if n .SP .if t .SP .5v \!.tm \\$1 \fI\fP \\\\nP .S -1 .B "\&\\$1" .S .if n .SP .if t .SP .5v .ss 12 .. .de Hh .tm .y .tm .x "\\$1" .nr Hc 1 .H 1 "\\$1" .nr Hc 0 .. .ds :? FSCK .PH "" .OH "'\s9\f2\*(:?\fP''\\\\nP\s0'" .EH "'\s9\\\\nP''\f2\*(:?\^\fP\s0'" .nr Hu 1 .nr Cl 3 .nr Pt 0 .ND "July 1, 1979" .TL 49579-220 40125-001 F\s-2SCK\s+2\-The U\s-2NIX\s+2 File System Check Program .AU "T. J. Kowalski" TJK MH 3624 2771 7E-318 .TM 79-3624-4 .AS The \*u\(dg\s-1\s+1 .FS \(dg UNIX is a Trademark of Bell Telephone Laboratories. .FE File System Check Program (\c .I fsck ) is an interactive file system check and repair program. .I Fsck\^ uses the redundant structural information in the \*q file system to perform several consistency checks. If an inconsistency is detected, it is reported to the operator, who may elect to fix or ignore each inconsistency. These inconsistencies result from the permanent interruption of the file system updates, which are performed every time a file is modified. .I Fsck\^ is frequently able to repair corrupted file systems using procedures based upon the order in which \*q honors these file system update requests. .P The purpose of this document is to describe the normal updating of the file system, to discuss the possible causes of file system corruption, and to present the corrective actions implemented by .I fsck . Both the program and the interaction between the program and the operator are described. .AE .OK \fIfsck\fP "file system" .MT 4 .H 1 "INTRODUCTION" When a \*q operating system is brought up, a consistency check of the file systems should always be performed. This precautionary measure helps to insure a reliable environment for file storage on disk. If an inconsistency is discovered, corrective action must be taken. No changes are made to any file system by .I fsck\^ without prior operator approval. .P The purpose of this memo is to dispel the mystique surrounding file system inconsistencies. It first describes the updating of the file system (the calm before the storm) and then describes file system corruption (the storm). Finally, the set of heuristically sound corrective actions used by .I fsck\^ (the Coast Guard to the rescue) is presented. .P .H 1 "UPDATE OF THE FILE SYSTEM" Every working day hundreds of files are created, modified, and removed. Every time a file is modified, the \*u operating system performs a series of file system updates. These updates, when written on disk, yield a consistent file system. To understand what happens in the event of a permanent interruption in this sequence, it is important to understand the order in which the update requests were probably being honored. Knowing which pieces of information were probably written to the file system first, heuristic procedures can be developed to repair a corrupted file system. .P There are five types of file system updates. These involve the super-block, inodes, indirect blocks, data blocks (directories and files), and free-list blocks. .H 2 "Super-Block" The super-block contains information about the size of the file system, the size of the inode list, part of the free-block list, the count of free blocks, the count of free inodes, and part of the free-inode list. .P The super-block of a mounted file system (the root file system is always mounted) is written to the file system whenever the file system is unmounted or a .I sync\^ command is issued. .H 2 "Inodes" An inode contains information about the type of inode (directory, data, or special), the number of directory entries linked to the inode, the list of blocks claimed by the inode, and the size of the inode. .P An inode is written to the file system upon closure\*F .FS All in core blocks are also written to the file system upon issue of a .I sync\^ system call. .FE of the file associated with the inode. .H 2 "Indirect Blocks" There are three types of indirect blocks: single-indirect, double-indirect and triple-indirect. A single-indirect block contains a list of some of the block numbers claimed by an inode. Each one of the 128 entries in an indirect block is a data-block number. A double-indirect block contains a list of single-indirect block numbers. A triple-indirect block contains a list of double-indirect block numbers. .P Indirect blocks are written to the file system whenever they have been modified and released\*F .FS More precisely, they are queued for eventual writing. Physical I/O is deferred until the buffer is needed by \*q or a .I sync\^ command is issued. .FE by the operating system. .H 2 "Data Blocks" A data block may contain file information or directory entries. Each directory entry consists of a file name and an inode number. .P Data blocks are written to the file system whenever they have been modified and released by the operating system. .H 2 "First Free-List Block" The super-block contains the first free-list block. The free-list blocks are a list of all blocks that are not allocated to the super-block, inodes, indirect blocks, or data blocks. Each free-list block contains a count of the number of entries in this free-list block, a pointer to the next free-list block, and a partial list of free blocks in the file system. .P Free-list blocks are written to the file system whenever they have been modified and released by the operating system. .H 1 "CORRUPTION OF THE FILE SYSTEM" A file system can become corrupted in a variety of ways. The most common of these ways are improper shutdown procedures and hardware failures. .H 2 "Improper System Shutdown and Startup" File systems may become corrupted when proper shutdown procedures are not observed, e.g., forgetting to .I sync\^ the system prior to halting the CPU, physically write-protecting a mounted file system, or taking a mounted file system off-line. .P File systems may become further corrupted if proper startup procedures are not observed, e.g., not checking a file system for inconsistencies, and not repairing inconsistencies. Allowing a corrupted file system to be used (and, thus, to be modified further) can be disastrous. .H 2 "Hardware Failure" Any piece of hardware can fail at any time. Failures can be as subtle as a bad block on a disk pack, or as blatant as a non-functional disk-controller. .H 1 "DETECTION AND CORRECTION OF CORRUPTION" A quiescent\*F .FS I.e., unmounted and not being written on. .FE file system may be checked for structural integrity by performing consistency checks on the redundant data intrinsic to a file system. The redundant data is either read from the file system or computed from other known values. A quiescent state is important during the checking of a file system because of the multi-pass nature of the .I fsck\^ program. .P When an inconsistency is discovered .I fsck\^ reports the inconsistency for the operator to chose a corrective action. .P Discussed in this section are how to discover inconsistencies and possible corrective actions for the super-block, the inodes, the indirect blocks, the data blocks containing directory entries, and the free-list blocks. These corrective actions can be performed interactively by the .I fsck\^ command under control of the operator. .H 2 "Super-Block" One of the most common corrupted items is the super-block. The super-block is prone to corruption because every change to the file system's blocks or inodes modifies the super-block. .P The super-block and its associated parts are most often corrupted when the computer is halted and the last command involving output to the file system was not a .I sync\^ command. .P The super-block can be checked for inconsistencies involving file-system size, inode-list size, free-block list, free-block count, and the free-inode count. .H 3 "File-System Size and Inode-List Size." The file-system size must be larger than the number of blocks used by the super-block and the number of blocks used by the list of inodes. The number of inodes must be less than 65,535. The file-system size and inode-list size are critical pieces of information to the .I fsck\^ program. While there is no way to actually check these sizes, .I fsck\^ can check for them being within reasonable bounds. All other checks of the file system depend on the correctness of these sizes. .H 3 "Free-Block List." The free-block list starts in the super-block and continues through the free-list blocks of the file system. Each free-list block can be checked for a list count out of range, for block numbers out of range, and for blocks already allocated within the file system. A check is made to see that all the blocks in the file system were found. .P The first free-block list is in the super-block. .I Fsck\^ checks the list count for a value of less than zero or greater than fifty. It also checks each block number for a value of less than the first data block in the file system or greater than the last block in the file system. Then it compares each block number to a list of already allocated blocks. If the free-list block pointer is non-zero, the next free-list block is read in and the process is repeated. .P When all the blocks have been accounted for, a check is made to see if the number of blocks used by the free-block list plus the number of blocks claimed by the inodes equals the total number of blocks in the file system. .P If anything is wrong with the free-block list, then .I fsck\^ may rebuild it, excluding all blocks in the list of allocated blocks. .H 3 "Free-Block Count." The super-block contains a count of the total number of free blocks within the file system. .I Fsck\^ compares this count to the number of blocks it found free within the file system. If they don't agree, then .I fsck\^ may replace the count in the super-block by the actual free-block count. .H 3 "Free-Inode Count." The super-block contains a count of the total number of free inodes within the file system. .I Fsck\^ compares this count to the number of inodes it found free within the file system. If they don't agree, then .I fsck\^ may replace the count in the super-block by the actual free-inode count. .H 2 "Inodes" An individual inode is not as likely to be corrupted as the super-block. However, because of the great number of active inodes, there is almost as likely a chance for corruption in the inode list as in the super-block. .P The list of inodes is checked sequentially starting with inode 1 (there is no inode 0) and going to the last inode in the file system. Each inode can be checked for inconsistencies involving format and type, link count, duplicate blocks, bad blocks, and inode size. .H 3 "Format and Type." Each inode contains a mode word. This mode word describes the type and state of the inode. Inodes may be one of four types: regular inode, directory inode, special block inode, and special character inode. If an inode is not one of these types, then the inode has an illegal type. Inodes may be found in one of three states: unallocated, allocated, and neither unallocated nor allocated. This last state indicates an incorrectly formatted inode. An inode can get in this state if bad data is written into the inode list through, for example, a hardware failure. The only possible corrective action is for .I fsck\^ is to clear the inode. .H 3 "Link Count." Contained in each inode is a count of the total number of directory entries linked to the inode. .P .I Fsck\^ verifies the link count of each inode by traversing down the total directory structure, starting from the root directory, calculating an actual link count for each inode. .P If the stored link count is non-zero and the actual link count is zero, it means that no directory entry appears for the inode. If the stored and actual link counts are non-zero and unequal, a directory entry may have been added or removed without the inode being updated. .P If the stored link count is non-zero and the actual link count is zero, .I fsck\^ may link the disconnected file to the .I lost+found\^ directory. If the stored and actual link counts are non-zero and unequal, .I fsck\^ may replace the stored link count by the actual link count. .H 3 "Duplicate Blocks." Contained in each inode is a list or pointers to lists (indirect blocks) of all the blocks claimed by the inode. .P .I Fsck\^ compares each block number claimed by an inode to a list of already allocated blocks. If a block number is already claimed by another inode, the block number is added to a list of duplicate blocks. Otherwise, the list of allocated blocks is updated to include the block number. If there are any duplicate blocks, .I fsck\^ will make a partial second pass of the inode list to find the inode of the duplicated block, because without examining the files associated with these inodes for correct content, there is not enough information available to decide which inode is corrupted and should be cleared. Most times, the inode with the earliest modify time is incorrect, and should be cleared. .P This condition can occur by using a file system with blocks claimed by both the free-block list and by other parts of the file system. .P If there is a large number of duplicate blocks in an inode, this may be due to an indirect block not being written to the file system. .P .I Fsck\^ will prompt the operator to clear both inodes. .H 3 "Bad Blocks." Contained in each inode is a list or pointer to lists of all the blocks claimed by the inode. .P .I Fsck\^ checks each block number claimed by an inode for a value lower than that of the first data block, or greater than the last block in the file system. If the block number is outside this range, the block number is a bad block number. .P If there is a large number of bad blocks in an inode, this may be due to an indirect block not being written to the file system. .P .I Fsck\^ will prompt the operator to clear both inodes. .H 3 "Size Checks." Each inode contains a thirty-two bit (four-byte) size field. This size indicates the number of characters in the file associated with the inode. This size can be checked for inconsistencies, e.g., directory sizes that are not a multiple of sixteen characters, or the number of blocks actually used not matching that indicated by the inode size. .P A directory inode within the \*u file system has the directory bit on in the inode mode word. The directory size must be a multiple of sixteen because a directory entry contains sixteen bytes of information (two bytes for the inode number and fourteen bytes for the file or directory name). .P .I Fsck\^ will warn of such directory misalignment. This is only a warning because not enough information can be gathered to correct the misalignment. .P A rough check of the consistency of the size field of an inode can be performed by computing from the size field the number of blocks that should be associated with the inode and comparing it to the actual number of blocks claimed by the inode. .P .I Fsck\^ calculates the number of blocks that there should be in an inode by dividing the number of characters in a inode by the number of characters per block (512) and rounding up. .I Fsck\^ adds one block for each indirect block associated with the inode. If the actual number of blocks does not match the computed number of blocks, .I fsck\^ will warn of a possible file-size error. This is only a warning because \*q does not fill in blocks in files created in random order. .H 2 "Indirect Blocks" Indirect blocks are owned by an inode. Therefore, inconsistencies in indirect blocks directly affect the inode that owns it. .P Inconsistencies that can be checked are blocks already claimed by another inode and block numbers outside the range of the file system. .P For a discussion of detection and correction of the inconsistencies associated with indirect blocks, apply iteratively Sections 4.2.3 and 4.2.4 to each level of indirect blocks. .H 2 "Data Blocks" The two types of data blocks are plain data blocks and directory data blocks. Plain data blocks contain the information stored in a file. Directory data blocks contain directory entries. .I Fsck\^ does not attempt to check the validity of the contents of a plain data block. .P Each directory data block can be checked for inconsistencies involving directory inode numbers pointing to unallocated inodes, directory inode numbers greater than the number of inodes in the file system, incorrect directory inode numbers for ``\fB.\fP'' and ``\fB..\fP'', and directories which are disconnected from the file system. .P If a directory entry inode number points to an unallocated inode, then .I fsck\^ may remove that directory entry. This condition probably occurred because the data blocks containing the directory entries were modified and written to the file system while the inode was not yet written out. .P If a directory entry inode number is pointing beyond the end of the inode list, .I fsck\^ may remove that directory entry. This condition occurs if bad data is written into a directory data block. .P The directory inode number entry for ``\fB.\fP'' should be the first entry in the directory data block. Its value should be equal to the inode number for the directory data block. .P The directory inode number entry for ``\fB..\fP'' should be the second entry in the directory data block. Its value should be equal to the inode number for the parent of the directory entry (or the inode number of the directory data block if the directory is the root directory). .P If the directory inode numbers are incorrect, .I fsck\^ may replace them by the correct values. .P .I Fsck\^ checks the general connectivity of the file system. If directories are found not to be linked into the file system, .I fsck\^ will link the directory back into the file system in the .I lost+found\^ directory. This condition can be caused by inodes being written to the file system with the corresponding directory data blocks not being written to the file system. .H 2 "Free-List Blocks" Free-list blocks are owned by the super-block. Therefore, inconsistencies in free-list blocks directly affect the super-block. .P Inconsistencies that can be checked are a list count outside of range, block numbers outside of range, and blocks already associated with the file system. .P For a discussion of detection and correction of the inconsistencies associated with free-list blocks see Section 4.1.2. .HU "ACKNOWLEDGEMENT" .P I would like to thank Larry A. Wehr for advice that lead to the first version of .I fsck\^ and Rick B. Brandt for adapting .I fsck\^ to \*q/TS. .SG .HU "REFERENCES" .RL .LI Ritchie, D. M., and Thompson, K., The \*u Time-Sharing System, .I "The Bell System Technical Journal\^" .B 57 , 6 (July-August 1978, Part 2), pp. 1905-29. .LI Dolotta, T. A., and Olsson, S. B. eds., .I "\*q User's Manual, Edition 1.1\^" (January 1978). .LI Thompson, K., \*u Implementation, .I "The Bell System Technical Journal\^" .B 57 , 6 (July-August 1978, Part 2), pp. 1931-46. .LE .bp .nr Hb 3 .nr Hc 1 .nr Hu 1 .HU "Appendix\*(EMFSCK ERROR CONDITIONS" .nr Hc 0 .nr Hu 2 .nr H1 0 .nr H2 0 .H 1 "CONVENTIONS" .I Fsck\^ is a multi-pass file system check program. Each file system pass invokes a different Phase of the .I fsck\^ program. After the initial setup, .I fsck\^ performs successive Phases over each file system, checking blocks and sizes, path-names, connectivity, reference counts, and the free-block list (possibly rebuilding it), and performs some cleanup. .P When an inconsistency is detected, .I fsck\^ reports the error condition to the operator. If a response is required, .I fsck\^ prints a prompt message and waits for a response. This appendix explains the meaning of each error condition, the possible responses, and the related error conditions. .P The error conditions are organized by the .I Phase\^ of the .I fsck\^ program in which they can occur. The error conditions that may occur in more than one Phase will be discussed in initialization. .tm .x "INITIALIZATION" .nr Hc 1 .H 1 "INITIALIZATION" .nr Hc 0 Before a file system check can be performed, certain tables have to be set up and certain files opened. This section concerns itself with the opening of files and the initialization of tables. This section lists error conditions resulting from command line options, memory requests, opening of files, status of files, file system size checks, and creation of the scratch file. .DS 0 1 .Hu "\fBC\fP option?" \fBC\fP is not a legal option to .I fsck ; legal options are \-y, \-n, \-s, \-S, and \-t. .I Fsck\^ terminates on this error condition. See the .I fsck (1M) manual entry for further detail. .DE .DS 0 1 .Hu "Bad \(emt option" The \-t option is not followed by a file name. .I Fsck\^ terminates on this error condition. See the .I fsck (1M) manual entry for further detail. .DE .DS 0 1 .Hu "Invalid \(ems argument, defaults assumed" The \-s option is not suffixed by 3, 4, or blocks-per-cylinder:blocks-to-skip. .I Fsck\^ assumes a default value of 400 blocks-per-cylinder and 9 blocks-to-skip. See the .I fsck (1M) manual entry for more details. .DE .DS 0 1 .Hu "Incompatible options: \(emn and \(ems" It is not possible to salvage the free-block list without modifying the file system. .I Fsck\^ terminates on this error condition. See the .I fsck (1M) manual entry for further detail. .DE .DS 0 1 .Hu "Can't get memory" .I Fsck 's request for memory for its virtual memory tables failed. This should never happen. .I Fsck\^ terminates on this error condition. See a guru. .DE .DS 0 1 .Hu "Can't open checklist file: \fBF\fP" The default file system checklist file \fBF\fP (usually .I /etc/checklist ) can not be opened for reading. .I Fsck\^ terminates on this error condition. Check access modes of \fBF\fP. .DE .DS 0 1 .Hu "Can't stat root" .I Fsck 's request for statistics about the root directory ``/'' failed. This should never happen. .I Fsck\^ terminates on this error condition. See a guru. .DE .DS 0 1 .Hu "Can't stat \fBF\fP" .I Fsck 's request for statistics about the file system \fBF\fP failed. It ignores this file system and continues checking the next file system given. Check access modes of \fBF\fP. .DE .DS 0 1 .Hu "\fBF\fP is not a block or character device" You have given .I fsck\^ a regular file name by mistake. It ignores this file system and continues checking the next file system given. Check file type of \fBF\fP. .DE .DS 0 1 .Hu "Can't open \fBF\fP" The file system \fBF\fP can not be opened for reading. It ignores this file system and continues checking the next file system given. Check access modes of \fBF\fP. .DE .DS 0 1 .Hu "Size check: fsize \fBX\fP isize \fBY\fP" More blocks are used for the inode list \fBY\fP than there are blocks in the file system \fBX\fP, or there are more than 65,535 inodes in the file system. It ignores this file system and continues checking the next file system given. See Section 4.1.1. .DE .DS 0 1 .Hu "Can't create \fBF\fP" .I Fsck 's request to create a scratch file \fBF\fP failed. It ignores this file system and continues checking the next file system given. Check access modes of \fBF\fP. .DE .DS 0 1 .Hu "CAN NOT SEEK: BLK \fBB\fP (CONTINUE)" .I Fsck 's request for moving to a specified block number \fBB\fP in the file system failed. This should never happen. See a guru. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES attempt to continue to run the file system check. Often, however the problem will persist. This error condition will not allow a complete check of the file system. A second run of .I fsck\^ should be made to re-check this file system. If the block was part of the virtual memory buffer cache, .I fsck\^ will terminate with the message ``Fatal I/O error''. .LI NO terminate the program. .LE .DE .DS 0 1 .Hu "CAN NOT READ: BLK \fBB\fP (CONTINUE)" .I Fsck 's request for reading a specified block number \fBB\fP in the file system failed. This should never happen. See a guru. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES attempt to continue to run the file system check. Often, however, the problem will persist. This error condition will not allow a complete check of the file system. A second run of .I fsck\^ should be made to re-check this file system. If the block was part of the virtual memory buffer cache, .I fsck\^ will terminate with the message ``Fatal I/O error''. .LI NO terminate the program. .LE .DE .DS 0 1 .Hu "CAN NOT WRITE: BLK \fBB\fP (CONTINUE)" .I Fsck 's request for writing a specified block number \fBB\fP in the file system failed. The disk is write-protected. See a guru. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES attempt to continue to run the file system check. Often, however, the problem will persist. This error condition will not allow a complete check of the file system. A second run of .I fsck\^ should be made to re-check this file system. If the block was part of the virtual memory buffer cache, .I fsck\^ will terminate with the message ``Fatal I/O error''. .LI NO terminate the program. .LE .DE .ne 20 .Hh "PHASE 1: CHECK BLOCKS AND SIZES" This phase concerns itself with the inode list. This section lists error conditions resulting from checking inode types, setting up the zero-link-count table, examining inode block numbers for bad or duplicate blocks, checking inode size, and checking inode format. .DS 0 1 .Hu "UNKNOWN FILE TYPE I=\fBI\fP (CLEAR)" The mode word of the inode \fBI\fP indicates that the inode is not a special character inode, special character inode, regular inode, or directory inode. See Section 4.2.1. .P Possible responses to the CLEAR prompt are: .VL 10 2 1 .LI YES de-allocate inode \fBI\fP by zeroing its contents. This will always invoke the UNALLOCATED error condition in Phase 2 for each directory entry pointing to this inode. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "LINK COUNT TABLE OVERFLOW (CONTINUE)" An internal table for .I fsck\^ containing allocated inodes with a link count of zero has no more room. Recompile .I fsck\^ with a larger value of MAXLNCNT. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES continue with the program. This error condition will not allow a complete check of the file system. A second run of .I fsck\^ should be made to re-check this file system. If another allocated inode with a zero link count is found, this error condition is repeated. .LI NO terminate the program. .LE .DE .DS 0 1 .Hu "\fBB\fP BAD I=\fBI\fP" Inode \fBI\fP contains block number \fBB\fP with a number lower than the number of the first data block in the file system or greater than the number of the last block in the file system. This error condition may invoke the EXCESSIVE BAD BLKS error condition in Phase 1 if inode \fBI\fP has too many block numbers outside the file system range. This error condition will always invoke the BAD/DUP error condition in Phase 2 and Phase 4. See Section 4.2.4. .DE .DS 0 1 .Hu "EXCESSIVE BAD BLKS I=\fBI\fP (CONTINUE)" There is more than a tolerable number (usually 10) of blocks with a number lower than the number of the first data block in the file system or greater than the number of last block in the file system associated with inode \fBI\fP. See Section 4.2.4. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES ignore the rest of the blocks in this inode and continue checking with the next inode in the file system. This error condition will not allow a complete check of the file system. A second run of .I fsck\^ should be made to re-check this file system. .LI NO terminate the program. .DE .DS 0 1 .Hu "\fBB\fP DUP I=\fBI\fP" Inode \fBI\fP contains block number \fBB\fP which is already claimed by another inode. This error condition may invoke the EXCESSIVE DUP BLKS error condition in Phase 1 if inode \fBI\fP has too many block numbers claimed by other inodes. This error condition will always invoke Phase 1b and the BAD/DUP error condition in Phase 2 and Phase 4. See Section 4.2.3. .DE .DS 0 1 .Hu "EXCESSIVE DUP BLKS I=\fBI\fP (CONTINUE)" There is more than a tolerable number (usually 10) of blocks claimed by other inodes. See Section 4.2.3. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES ignore the rest of the blocks in this inode and continue checking with the next inode in the file system. This error condition will not allow a complete check of the file system. A second run of .I fsck\^ should be made to re-check this file system. .LI NO terminate the program. .DE .DS 0 1 .Hu "DUP TABLE OVERFLOW (CONTINUE)" An internal table in .I fsck\^ containing duplicate block numbers has no more room. Recompile .I fsck\^ with a larger value of DUPTBLSIZE. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES continue with the program. This error condition will not allow a complete check of the file system. A second run of .I fsck\^ should be made to re-check this file system. If another duplicate block is found, this error condition will repeat. .LI NO terminate the program. .LE .DE .DS 0 1 .Hu "POSSIBLE FILE SIZE ERROR I=\fBI\fP" The inode \fBI\fP size does not match the actual number of blocks used by the inode. This is only a warning. See Section 4.2.5. .DE .DS 0 1 .Hu "DIRECTORY MISALIGNED I=\fBI\fP" The size of a directory inode is not a multiple of the size of a directory entry (usually 16). This is only a warning. See Section 4.2.5. .DE .DS 0 1 .Hu "PARTIALLY ALLOCATED INODE I=\fBI\fP (CLEAR)" Inode \fBI\fP is neither allocated nor unallocated. See Section 4.2.1. .P Possible responses to the CLEAR prompt are: .VL 10 2 1 .LI YES de-allocate inode \fBI\fP by zeroing its contents. .LI NO ignore this error condition. .LE .DE .Hh "PHASE 1B: RESCAN FOR MORE DUPS" When a duplicate block is found in the file system, the file system is rescanned to find the inode which previously claimed that block. This section lists the error condition when the duplicate block is found. .DS 0 1 .Hu "\fBB\fP DUP I=\fBI\fP" Inode \fBI\fP contains block number \fBB\fP which is already claimed by another inode. This error condition will always invoke the BAD/DUP error condition in Phase 2. You can determine which inodes have overlapping blocks by examining this error condition and the DUP error condition in Phase 1. See Section 4.2.3. .DE .ne 20 .Hh "PHASE 2: CHECK PATH-NAMES" This phase concerns itself with removing directory entries pointing to error conditioned inodes from Phase 1 and Phase 1b. This section lists error conditions resulting from root inode mode and status, directory inode pointers in range, and directory entries pointing to bad inodes. .DS 0 1 .Hu "ROOT INODE UNALLOCATED. TERMINATING." The root inode (usually inode number 2) has no allocate mode bits. This should never happen. The program will terminate. See Section 4.2.1. .DE .DS 0 1 .Hu "ROOT INODE NOT DIRECTORY (FIX)" The root inode (usually inode number 2) is not directory inode type. See Section 4.2.1. .P Possible responses to the FIX prompt are: .VL 10 2 1 .LI YES replace the root inode's type to be a directory. If the root inode's data blocks are not directory blocks, a VERY large number of error conditions will be produced. .LI NO terminate the program. .LE .DE .DS 0 1 .Hu "DUPS/BAD IN ROOT INODE (CONTINUE)" Phase 1 or Phase 1b have found duplicate blocks or bad blocks in the root inode (usually inode number 2) for the file system. See Section 4.2.3 and 4.2.4. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES ignore the DUPS/BAD error condition in the root inode and attempt to continue to run the file system check. If the root inode is not correct, then this may result in a large number of other error conditions. .LI NO terminate the program. .LE .DE .DS 0 1 .Hu "I OUT OF RANGE I=\fBI\fP NAME=\fBF\fP (REMOVE)" A directory entry \fBF\fP has an inode number \fBI\fP which is greater than the end of the inode list. See Section 4.4. .P Possible responses to the REMOVE prompt are: .VL 10 2 1 .LI YES the directory entry \fBF\fP is removed. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "UNALLOCATED I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP NAME=\fBF\fP (REMOVE)" A directory entry \fBF\fP has an inode \fBI\fP without allocate mode bits. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, modify time \fBT\fP, and file name \fBF\fP are printed. See Section 4.4. .P Possible responses to the REMOVE prompt are: .VL 10 2 1 .LI YES the directory entry \fBF\fP is removed. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP DIR=\fBF\fP (REMOVE)" Phase 1 or Phase 1b have found duplicate blocks or bad blocks associated with directory entry \fBF\fP, directory inode \fBI\fP. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, modify time \fBT\fP, and directory name \fBF\fP are printed. See Section 4.2.3 and 4.2.4. .P Possible responses to the REMOVE prompt are: .VL 10 2 1 .LI YES the directory entry \fBF\fP is removed. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP FILE=\fBF\fP (REMOVE)" Phase 1 or Phase 1b have found duplicate blocks or bad blocks associated with directory entry \fBF\fP, inode \fBI\fP. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, modify time \fBT\fP, and file name \fBF\fP are printed. See Section 4.2.3 and 4.2.4. .P Possible responses to the REMOVE prompt are: .VL 10 2 1 .LI YES the directory entry \fBF\fP is removed. .LI NO ignore this error condition. .LE .DE .ne 20 .Hh "PHASE 3: CHECK CONNECTIVITY" This phase concerns itself with the directory connectivity seen in Phase 2. This section lists error conditions resulting from unreferenced directories, and missing or full .I lost+found\^ directories. .DS 0 1 .Hu "UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT)" The directory inode \fBI\fP was not connected to a directory entry when the file system was traversed. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP of directory inode \fBI\fP are printed. See Section 4.4 and 4.2.2. .P Possible responses to the RECONNECT prompt are: .VL 10 2 1 .LI YES reconnect directory inode \fBI\fP to the file system in the directory for lost files (usually .I lost+found ). This may invoke the .I lost+found\^ error condition in Phase 3 if there are problems connecting directory inode \fBI\fP to .I lost+found . This may also invoke the CONNECTED error condition in Phase 3 if the link was successful. .LI NO ignore this error condition. This will always invoke the UNREF error condition in Phase 4. .LE .DE .DS 0 1 .Hu "SORRY. NO lost+found DIRECTORY" There is no .I lost+found\^ directory in the root directory of the file system; .I fsck\^ ignores the request to link a directory in .I lost+found . This will always invoke the UNREF error condition in Phase 4. Check access modes of .I lost+found . See .I fsck (1M) manual entry for further detail. .DE .DS 0 1 .Hu "SORRY. NO SPACE IN lost+found DIRECTORY" There is no space to add another entry to the .I lost+found\^ directory in the root directory of the file system; .I fsck\^ ignores the request to link a directory in .I lost+found . This will always invoke the UNREF error condition in Phase 4. Clean out unnecessary entries in .I lost+found\^ or make .I lost+found\^ larger. See .I fsck (1M) manual entry for further detail. .DE .DS 0 1 .Hu "DIR I=\fBI1\fP CONNECTED. PARENT WAS I=\fBI2\fP" This is an advisory message indicating a directory inode \fBI1\fP was successfully connected to the .I lost+found\^ directory. The parent inode \fBI2\fP of the directory inode \fBI1\fP is replaced by the inode number of the .I lost+found\^ directory. See Section 4.4 and 4.2.2. .DE .ne 20 .Hh "PHASE 4: CHECK REFERENCE COUNTS" This phase concerns itself with the link count information seen in Phase 2 and Phase 3. This section lists error conditions resulting from unreferenced files, missing or full .I lost+found\^ directory, incorrect link counts for files, directories, or special files, unreferenced files and directories, bad and duplicate blocks in files and directories, and incorrect total free-inode counts. .DS 0 1 .Hu "UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT)" Inode \fBI\fP was not connected to a directory entry when the file system was traversed. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP of inode \fBI\fP are printed. See Section 4.2.2. .P Possible responses to the RECONNECT prompt are: .VL 10 2 1 .LI YES reconnect inode \fBI\fP to the file system in the directory for lost files (usually .I lost+found ). This may invoke the .I lost+found\^ error condition in Phase 4 if there are problems connecting inode \fBI\fP to .I lost+found . .LI NO ignore this error condition. This will always invoke the CLEAR error condition in Phase 4. .LE .DE .DS 0 1 .Hu "SORRY. NO lost+found DIRECTORY" There is no .I lost+found\^ directory in the root directory of the file system; .I fsck\^ ignores the request to link a file in .I lost+found . This will always invoke the CLEAR error condition in Phase 4. Check access modes of .I lost+found . .DE .DS 0 1 .Hu "SORRY. NO SPACE IN lost+found DIRECTORY" There is no space to add another entry to the .I lost+found\^ directory in the root directory of the file system; .I fsck\^ ignores the request to link a file in .I lost+found . This will always invoke the CLEAR error condition in Phase 4. Check size and contents of .I lost+found . .DE .DS 0 1 .Hu "(CLEAR)" The inode mentioned in the immediately previous error condition can not be reconnected. See Section 4.2.2. .P Possible responses to the CLEAR prompt are: .VL 10 2 1 .LI YES de-allocate the inode mentioned in the immediately previous error condition by zeroing its contents. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "LINK COUNT FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST)" The link count for inode \fBI\fP which is a file, is \fBX\fP but should be \fBY\fP. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP are printed. See Section 4.2.2. .P Possible responses to the ADJUST prompt are: .VL 10 2 1 .LI YES replace the link count of file inode \fBI\fP with \fBY\fP. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "LINK COUNT DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST)" The link count for inode \fBI\fP which is a directory, is \fBX\fP but should be \fBY\fP. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP of directory inode \fBI\fP are printed. See Section 4.2.2. .P Possible responses to the ADJUST prompt are: .VL 10 2 1 .LI YES replace the link count of directory inode \fBI\fP with \fBY\fP. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "LINK COUNT \fBF\fP I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST)" The link count for \fBF\fP inode \fBI\fP is \fBX\fP but should be \fBY\fP. The name \fBF\fP, owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP are printed. See Section 4.2.2. .P Possible responses to the ADJUST prompt are: .VL 10 2 1 .LI YES replace the link count of inode \fBI\fP with \fBY\fP. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR)" Inode \fBI\fP which is a file, was not connected to a directory entry when the file system was traversed. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP of inode \fBI\fP are printed. See Section 4.2.2 and 4.4. .P Possible responses to the CLEAR prompt are: .VL 10 2 1 .LI YES de-allocate inode \fBI\fP by zeroing its contents. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR)" Inode \fBI\fP which is a directory, was not connected to a directory entry when the file system was traversed. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP of inode \fBI\fP are printed. See Section 4.2.2 and 4.4. .P Possible responses to the CLEAR prompt are: .VL 10 2 1 .LI YES de-allocate inode \fBI\fP by zeroing its contents. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "BAD/DUP FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR)" Phase 1 or Phase 1b have found duplicate blocks or bad blocks associated with file inode \fBI\fP. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP of inode \fBI\fP are printed. See Section 4.2.3 and 4.2.4. .P Possible responses to the CLEAR prompt are: .VL 10 2 1 .LI YES de-allocate inode \fBI\fP by zeroing its contents. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "BAD/DUP DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR)" Phase 1 or Phase 1b have found duplicate blocks or bad blocks associated with directory inode \fBI\fP. The owner \fBO\fP, mode \fBM\fP, size \fBS\fP, and modify time \fBT\fP of inode \fBI\fP are printed. See Section 4.2.3 and 4.2.4. .P Possible responses to the CLEAR prompt are: .VL 10 2 1 .LI YES de-allocate inode \fBI\fP by zeroing its contents. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "FREE INODE COUNT WRONG IN SUPERBLK (FIX)" The actual count of the free inodes does not match the count in the super-block of the file system. See Section 4.1.4. .P Possible responses to the FIX prompt are: .VL 10 2 1 .LI YES replace the count in the super-block by the actual count. .LI NO ignore this error condition. .LE .DE .ne 20 .Hh "PHASE 5: CHECK FREE LIST" This phase concerns itself with the free-block list. This section lists error conditions resulting from bad blocks in the free-block list, bad free-blocks count, duplicate blocks in the free-block list, unused blocks from the file system not in the free-block list, and the total free-block count incorrect. .DS 0 1 .Hu "EXCESSIVE BAD BLKS IN FREE LIST (CONTINUE)" The free-block list contains more than a tolerable number (usually 10) of blocks with a value less than the first data block in the file system or greater than the last block in the file system. See Section 4.1.2 and 4.2.4. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES ignore the rest of the free-block list and continue the execution of .I fsck . This error condition will always invoke the BAD BLKS IN FREE LIST error condition in Phase 5. .LI NO terminate the program. .LE .DE .DS 0 1 .Hu "EXCESSIVE DUP BLKS IN FREE LIST (CONTINUE)" The free-block list contains more than a tolerable number (usually 10) of blocks claimed by inodes or earlier parts of the free-block list. See Section 4.1.2 and 4.2.3. .P Possible responses to the CONTINUE prompt are: .VL 10 2 1 .LI YES ignore the rest of the free-block list and continue the execution of .I fsck . This error condition will always invoke the DUP BLKS IN FREE LIST error condition in Phase 5. .LI NO terminate the program. .LE .DE .DS 0 1 .Hu "BAD FREEBLK COUNT" The count of free blocks in a free-list block is greater than 50 or less than zero. This error condition will always invoke the BAD FREE LIST condition in Phase 5. See Section 4.1.2. .DE .DS 0 1 .Hu "\fBX\fP BAD BLKS IN FREE LIST" \fBX\fP blocks in the free-block list have a block number lower than the first data block in the file system or greater than the last block in the file system. This error condition will always invoke the BAD FREE LIST condition in Phase 5. See Section 4.1.2 and 4.2.4. .DE .DS 0 1 .Hu "\fBX\fP DUP BLKS IN FREE LIST" \fBX\fP blocks claimed by inodes or earlier parts of the free-list block were found in the free-block list. This error condition will always invoke the BAD FREE LIST condition in Phase 5. See Section 4.1.2 and 4.2.3. .DE .DS 0 1 .Hu "\fBX\fP BLK(S) MISSING" \fBX\fP blocks unused by the file system were not found in the free-block list. This error condition will always invoke the BAD FREE LIST condition in Phase 5. See Section 4.1.2. .DE .DS 0 1 .Hu "FREE BLK COUNT WRONG IN SUPERBLOCK (FIX)" The actual count of free blocks does not match the count in the super-block of the file system. See Section 4.1.3. .P Possible responses to the FIX prompt are: .VL 10 2 1 .LI YES replace the count in the super-block by the actual count. .LI NO ignore this error condition. .LE .DE .DS 0 1 .Hu "BAD FREE LIST (SALVAGE)" Phase 5 has found bad blocks in the free-block list, duplicate blocks in the free-block list, or blocks missing from the file system. See Section 4.1.2, 4.2.3, and 4.2.4. .P Possible responses to the SALVAGE prompt are: .VL 10 2 1 .LI YES replace the actual free-block list with a new free-block list. The new free-block list will be ordered to reduce time spent by the disk waiting for the disk to rotate into position. .LI NO ignore this error condition. .LE .DE .ne 20 .Hh "PHASE 6: SALVAGE FREE LIST" This phase concerns itself with the free-block list reconstruction. This section lists error conditions resulting from the blocks-to-skip and blocks-per-cylinder values. .DS 0 1 .Hu "Default free-block list spacing assumed" This is an advisory message indicating the blocks-to-skip is greater than the blocks-per-cylinder, the blocks-to-skip is less than one, the blocks-per-cylinder is less than one, or the blocks-per-cylinder is greater than 500. The default values of 9 blocks-to-skip and 400 blocks-per-cylinder are used. See the .I fsck (1M) manual entry for further detail. .DE .Hh "CLEANUP" Once a file system has been checked, a few cleanup functions are performed. This section lists advisory messages about the file system and modify status of the file system. .DS 0 1 .Hu "\fBX\fP files \fBY\fP blocks \fBZ\fP free" This is an advisory message indicating that the file system checked contained \fBX\fP files using \fBY\fP blocks leaving \fBZ\fP blocks free in the file system. .DE .DS 0 1 .Hu "***** BOOT UNIX (NO SYNC!) *****" This is an advisory message indicating that a mounted file system or the root file system has been modified by .I fsck . If \*q is not rebooted immediately, the work done by .I fsck\^ may be undone by the in-core copies of tables \*q keeps. .DE .DS 0 1 .Hu "***** FILE SYSTEM WAS MODIFIED *****" This is an advisory message indicating that the current file system was modified by .I fsck . If this file system is mounted or is the current root file system, .I fsck\^ should be halted and \*q rebooted. If \*q is not rebooted immediately, the work done by .I fsck\^ may be undone by the in-core copies of tables \*q keeps. .DE .tm .y .sp .I "May 1979" are printed. See Section 4.2.2. .P Possible responses to the RECONNECT prompt are: .VL 10 2 1 .LI YES reconnect inode \fBI\fP to the file system in the directory for lost files (usually .I lost+found ). This may invoke the .I lost+found\^ error condition in Phase 4 if there are problems connecting inode \fBI\fP to .I lost+found . .LI NO ignore this error condition. This will adoc/2.10/fsck/fsck.rc 444 3 12 2227 3141164174 7364 eval "/usr/ucb/vtroff -W -mm fsck.mm 2> fsck.toc" : eval "/usr/ucb/nettroff -mm -o-9 fsck.mm 2> fsck.toc" : eval "/usr/ucb/nettroff -mm -o10- fsck.mm 2> fsck.toc" : exit ex - fsck.toc <>fsck.stoc /INITIALIZATION/+1,/PHASE 1:/-2w !sort -d >>fsck.stoc /PHASE 1:/-1,/PHASE 1:/w !cat >>fsck.stoc /PHASE 1:/+1,/PHASE 1B:/-2w !sort -d >>fsck.stoc /PHASE 1B:/-1,/PHASE 1B:/w !cat >>fsck.stoc /PHASE 1B:/+1,/PHASE 2:/-2w !sort -d >>fsck.stoc /PHASE 2:/-1,/PHASE 2:/w !cat >>fsck.stoc /PHASE 2:/+1,/PHASE 3:/-2w !sort -d >>fsck.stoc /PHASE 3:/-1,/PHASE 3:/w !cat >>fsck.stoc /PHASE 3:/+1,/PHASE 4:/-2w !sort -d >>fsck.stoc /PHASE 4:/-1,/PHASE 4:/w !cat >>fsck.stoc /PHASE 4:/+1,/PHASE 5:/-2w !sort -d >>fsck.stoc /PHASE 5:/-1,/PHASE 5:/w !cat >>fsck.stoc /PHASE 5:/+1,/PHASE 6:/-2w !sort -d >>fsck.stoc /PHASE 6:/-1,/PHASE 6:/w !cat >>fsck.stoc /PHASE 6:/+1,/CLEANUP/-2w !sort -d >>fsck.stoc /CLEANUP/-1,/CLEANUP/w !cat >>fsck.stoc /CLEANUP/+1,\$-1w !sort -d >>fsck.stoc \$w !cat >>fsck.stoc e! fsck.stoc g/..<>fsck.stoc /PHASE 4:/-1,/PHASE 4:/w !cat >>fsck.stoc /PHASE 4:/+1,/PHASE 5:/-2w !sort -d >>fsck.stoc /PHASE 5:/-1,/PHASE 5:/w !cat >>fsck.stoc /PHASE 5:/+1,/PHASE 6:/-2w !sort -d >>fsck.stoc /PHASE 6:/-1,/PHASE 6:/w !cat >>fsck.stoc /PHASE 6:/+1,/CLEANUP/-2w !sort -d >>fsck.stoc /CLEANUP/-1,/CLEANUP/w !cat >>fsck.stoc /CLEANUP/+1,\$-1w !sdoc/2.10/fsck/fsck.toc 444 3 12 7153 3141164173 7547 .x "INITIALIZATION" \fBC\fP option? \fI\fP 7 Bad \(emt option \fI\fP 7 Invalid \(ems argument, defaults assumed \fI\fP 7 Incompatible options: \(emn and \(ems \fI\fP 7 Can't get memory \fI\fP 7 Can't open checklist file: \fBF\fP \fI\fP 7 Can't stat root \fI\fP 8 Can't stat \fBF\fP \fI\fP 8 \fBF\fP is not a block or character device \fI\fP 8 Can't open \fBF\fP \fI\fP 8 Size check: fsize \fBX\fP isize \fBY\fP \fI\fP 8 Can't create \fBF\fP \fI\fP 8 CAN NOT SEEK: BLK \fBB\fP (CONTINUE) \fI\fP 8 CAN NOT READ: BLK \fBB\fP (CONTINUE) \fI\fP 8 CAN NOT WRITE: BLK \fBB\fP (CONTINUE) \fI\fP 9 .y .x "PHASE 1: CHECK BLOCKS AND SIZES" UNKNOWN FILE TYPE I=\fBI\fP (CLEAR) \fI\fP 9 LINK COUNT TABLE OVERFLOW (CONTINUE) \fI\fP 9 \fBB\fP BAD I=\fBI\fP \fI\fP 9 EXCESSIVE BAD BLKS I=\fBI\fP (CONTINUE) \fI\fP 10 \fBB\fP DUP I=\fBI\fP \fI\fP 10 EXCESSIVE DUP BLKS I=\fBI\fP (CONTINUE) \fI\fP 10 DUP TABLE OVERFLOW (CONTINUE) \fI\fP 10 POSSIBLE FILE SIZE ERROR I=\fBI\fP \fI\fP 10 DIRECTORY MISALIGNED I=\fBI\fP \fI\fP 10 PARTIALLY ALLOCATED INODE I=\fBI\fP (CLEAR) \fI\fP 11 .y .x "PHASE 1B: RESCAN FOR MORE DUPS" \fBB\fP DUP I=\fBI\fP \fI\fP 11 .y .x "PHASE 2: CHECK PATH-NAMES" ROOT INODE UNALLOCATED. TERMINATING. \fI\fP 11 ROOT INODE NOT DIRECTORY (FIX) \fI\fP 11 DUPS/BAD IN ROOT INODE (CONTINUE) \fI\fP 11 I OUT OF RANGE I=\fBI\fP NAME=\fBF\fP (REMOVE) \fI\fP 12 UNALLOCATED I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP NAME=\fBF\fP (REMOVE) \fI\fP 12 DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP DIR=\fBF\fP (REMOVE) \fI\fP 12 DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP FILE=\fBF\fP (REMOVE) \fI\fP 12 .y .x "PHASE 3: CHECK CONNECTIVITY" UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 13 SORRY. NO lost+found DIRECTORY \fI\fP 13 SORRY. NO SPACE IN lost+found DIRECTORY \fI\fP 13 DIR I=\fBI1\fP CONNECTED. PARENT WAS I=\fBI2\fP \fI\fP 13 .y .x "PHASE 4: CHECK REFERENCE COUNTS" UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 14 SORRY. NO lost+found DIRECTORY \fI\fP 14 SORRY. NO SPACE IN lost+found DIRECTORY \fI\fP 14 (CLEAR) \fI\fP 14 LINK COUNT FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 14 LINK COUNT DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 15 LINK COUNT \fBF\fP I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 15 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 BAD/DUP FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 BAD/DUP DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 16 FREE INODE COUNT WRONG IN SUPERBLK (FIX) \fI\fP 16 .y .x "PHASE 5: CHECK FREE LIST" EXCESSIVE BAD BLKS IN FREE LIST (CONTINUE) \fI\fP 16 EXCESSIVE DUP BLKS IN FREE LIST (CONTINUE) \fI\fP 16 BAD FREEBLK COUNT \fI\fP 16 \fBX\fP BAD BLKS IN FREE LIST \fI\fP 17 \fBX\fP DUP BLKS IN FREE LIST \fI\fP 17 \fBX\fP BLK(S) MISSING \fI\fP 17 FREE BLK COUNT WRONG IN SUPERBLOCK (FIX) \fI\fP 17 BAD FREE LIST (SALVAGE) \fI\fP 17 .y .x "PHASE 6: SALVAGE FREE LIST" Default free-block list spacing assumed \fI\fP 18 .y .x "CLEANUP" \fBX\fP files \fBY\fP blocks \fBZ\fP free \fI\fP 18 ***** BOOT UNIX (NO SYNC!) ***** \fI\fP 18 ***** FILE SYSTEM WAS MODIFIED ***** \fI\fP 18 .y ssumed \fI\fP 7 Incompatible options: \(emn and \(ems \fI\fP 7 Can't get memory \fI\fP 7 Can't open checklist file: \fBF\fP \fI\fP 7 Can't stat root \fI\fP 8 Can't stat \fBF\fP \fI\fP 8 \fBF\fP is not a block or character device \fI\fP 8 Can't open \fBF\fP \fI\fP 8 Size check: fsize \fBX\fP isize \fBY\fP \fI\fP 8 Can't create \fBF\fP \fI\fP 8 CAN NOT SEEK: BLK \fBB\fP (CONTINUE) \fI\fP 8 CANdoc/2.10/fsck/fsck.stoc 444 3 12 25655 3141164173 7761 .x "INITIALIZATION" Bad \(emt option \fI\fP \07 \fBC\fP option? \fI\fP \07 CAN NOT READ: BLK \fBB\fP (CONTINUE) \fI\fP \08 CAN NOT SEEK: BLK \fBB\fP (CONTINUE) \fI\fP \08 CAN NOT WRITE: BLK \fBB\fP (CONTINUE) \fI\fP \09 Can't create \fBF\fP \fI\fP \08 Can't get memory \fI\fP \07 Can't open checklist file: \fBF\fP \fI\fP \07 Can't open \fBF\fP \fI\fP \08 Can't stat \fBF\fP \fI\fP \08 Can't stat root \fI\fP \07 \fBF\fP is not a block or character device \fI\fP \08 Incompatible options: \(emn and \(ems \fI\fP \07 Invalid \(ems argument, defaults assumed \fI\fP \07 Size check: fsize \fBX\fP isize \fBY\fP \fI\fP \08 .y .x "PHASE 1: CHECK BLOCKS AND SIZES" \fBB\fP BAD I=\fBI\fP \fI\fP \09 \fBB\fP DUP I=\fBI\fP \fI\fP 10 DIRECTORY MISALIGNED I=\fBI\fP \fI\fP 10 DUP TABLE OVERFLOW (CONTINUE) \fI\fP 10 EXCESSIVE BAD BLKS I=\fBI\fP (CONTINUE) \fI\fP 10 EXCESSIVE DUP BLKS I=\fBI\fP (CONTINUE) \fI\fP 10 LINK COUNT TABLE OVERFLOW (CONTINUE) \fI\fP \09 PARTIALLY ALLOCATED INODE I=\fBI\fP (CLEAR) \fI\fP 10 POSSIBLE FILE SIZE ERROR I=\fBI\fP \fI\fP 10 UNKNOWN FILE TYPE I=\fBI\fP (CLEAR) \fI\fP \09 .y .x "PHASE 1B: RESCAN FOR MORE DUPS" \fBB\fP DUP I=\fBI\fP \fI\fP 11 .y .x "PHASE 2: CHECK PATH-NAMES" DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP DIR=\fBF\fP (REMOVE) \fI\fP 12 DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP FILE=\fBF\fP (REMOVE) \fI\fP 12 DUPS/BAD IN ROOT INODE (CONTINUE) \fI\fP 11 I OUT OF RANGE I=\fBI\fP NAME=\fBF\fP (REMOVE) \fI\fP 11 ROOT INODE NOT DIRECTORY (FIX) \fI\fP 11 ROOT INODE UNALLOCATED. TERMINATING. \fI\fP 11 UNALLOCATED I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP NAME=\fBF\fP (REMOVE) \fI\fP 12 .y .x "PHASE 3: CHECK CONNECTIVITY" DIR I=\fBI1\fP CONNECTED. PARENT WAS I=\fBI2\fP \fI\fP 13 SORRY. NO SPACE IN lost+found DIRECTORY \fI\fP 13 SORRY. NO lost+found DIRECTORY \fI\fP 12 UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 12 .y .x "PHASE 4: CHECK REFERENCE COUNTS" BAD/DUP DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 BAD/DUP FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 (CLEAR) \fI\fP 13 FREE INODE COUNT WRONG IN SUPERBLK (FIX) \fI\fP 15 LINK COUNT DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 14 LINK COUNT FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 14 LINK COUNT \fBF\fP I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 14 SORRY. NO SPACE IN lost+found DIRECTORY \fI\fP 13 SORRY. NO lost+found DIRECTORY \fI\fP 13 UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 14 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 14 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 13 .y .x "PHASE 5: CHECK FREE LIST" BAD FREE LIST (SALVAGE) \fI\fP 16 BAD FREEBLK COUNT \fI\fP 16 EXCESSIVE BAD BLKS IN FREE LIST (CONTINUE) \fI\fP 15 EXCESSIVE DUP BLKS IN FREE LIST (CONTINUE) \fI\fP 16 FREE BLK COUNT WRONG IN SUPERBLOCK (FIX) \fI\fP 16 \fBX\fP BAD BLKS IN FREE LIST \fI\fP 16 \fBX\fP BLK(S) MISSING \fI\fP 16 \fBX\fP DUP BLKS IN FREE LIST \fI\fP 16 .y .x "PHASE 6: SALVAGE FREE LIST" Default free-block list spacing assumed \fI\fP 17 .y .x "CLEANUP" ***** BOOT UNIX (NO SYNC!) ***** \fI\fP 17 ***** FILE SYSTEM WAS MODIFIED ***** \fI\fP 17 \fBX\fP files \fBY\fP blocks \fBZ\fP free \fI\fP 17 .y .x "INITIALIZATION" Bad \(emt option \fI\fP \07 \fBC\fP option? \fI\fP \07 CAN NOT READ: BLK \fBB\fP (CONTINUE) \fI\fP \08 CAN NOT SEEK: BLK \fBB\fP (CONTINUE) \fI\fP \08 CAN NOT WRITE: BLK \fBB\fP (CONTINUE) \fI\fP \09 Can't create \fBF\fP \fI\fP \08 Can't get memory \fI\fP \07 Can't open checklist file: \fBF\fP \fI\fP \07 Can't open \fBF\fP \fI\fP \08 Can't stat \fBF\fP \fI\fP \08 Can't stat root \fI\fP \08 \fBF\fP is not a block or character device \fI\fP \08 Incompatible options: \(emn and \(ems \fI\fP \07 Invalid \(ems argument, defaults assumed \fI\fP \07 Size check: fsize \fBX\fP isize \fBY\fP \fI\fP \08 .y .x "PHASE 1: CHECK BLOCKS AND SIZES" \fBB\fP BAD I=\fBI\fP \fI\fP \09 \fBB\fP DUP I=\fBI\fP \fI\fP 10 DIRECTORY MISALIGNED I=\fBI\fP \fI\fP 10 DUP TABLE OVERFLOW (CONTINUE) \fI\fP 10 EXCESSIVE BAD BLKS I=\fBI\fP (CONTINUE) \fI\fP 10 EXCESSIVE DUP BLKS I=\fBI\fP (CONTINUE) \fI\fP 10 LINK COUNT TABLE OVERFLOW (CONTINUE) \fI\fP \09 PARTIALLY ALLOCATED INODE I=\fBI\fP (CLEAR) \fI\fP 11 POSSIBLE FILE SIZE ERROR I=\fBI\fP \fI\fP 10 UNKNOWN FILE TYPE I=\fBI\fP (CLEAR) \fI\fP \09 .y .x "PHASE 1B: RESCAN FOR MORE DUPS" \fBB\fP DUP I=\fBI\fP \fI\fP 11 .y .x "PHASE 2: CHECK PATH-NAMES" DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP DIR=\fBF\fP (REMOVE) \fI\fP 12 DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP FILE=\fBF\fP (REMOVE) \fI\fP 12 DUPS/BAD IN ROOT INODE (CONTINUE) \fI\fP 11 I OUT OF RANGE I=\fBI\fP NAME=\fBF\fP (REMOVE) \fI\fP 12 ROOT INODE NOT DIRECTORY (FIX) \fI\fP 11 ROOT INODE UNALLOCATED. TERMINATING. \fI\fP 11 UNALLOCATED I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP NAME=\fBF\fP (REMOVE) \fI\fP 12 .y .x "PHASE 3: CHECK CONNECTIVITY" DIR I=\fBI1\fP CONNECTED. PARENT WAS I=\fBI2\fP \fI\fP 13 SORRY. NO SPACE IN lost+found DIRECTORY \fI\fP 13 SORRY. NO lost+found DIRECTORY \fI\fP 13 UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 13 .y .x "PHASE 4: CHECK REFERENCE COUNTS" BAD/DUP DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 16 BAD/DUP FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 (CLEAR) \fI\fP 14 FREE INODE COUNT WRONG IN SUPERBLK (FIX) \fI\fP 16 LINK COUNT DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 15 LINK COUNT FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 14 LINK COUNT \fBF\fP I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 15 SORRY. NO SPACE IN lost+found DIRECTORY \fI\fP 14 SORRY. NO lost+found DIRECTORY \fI\fP 14 UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 14 .y .x "PHASE 5: CHECK FREE LIST" BAD FREE LIST (SALVAGE) \fI\fP 17 BAD FREEBLK COUNT \fI\fP 16 EXCESSIVE BAD BLKS IN FREE LIST (CONTINUE) \fI\fP 16 EXCESSIVE DUP BLKS IN FREE LIST (CONTINUE) \fI\fP 16 FREE BLK COUNT WRONG IN SUPERBLOCK (FIX) \fI\fP 17 \fBX\fP BAD BLKS IN FREE LIST \fI\fP 17 \fBX\fP BLK(S) MISSING \fI\fP 17 \fBX\fP DUP BLKS IN FREE LIST \fI\fP 17 .y .x "PHASE 6: SALVAGE FREE LIST" Default free-block list spacing assumed \fI\fP 18 .y .x "CLEANUP" ***** BOOT UNIX (NO SYNC!) ***** \fI\fP 18 ***** FILE SYSTEM WAS MODIFIED ***** \fI\fP 18 \fBX\fP files \fBY\fP blocks \fBZ\fP free \fI\fP 18 .y .x "INITIALIZATION" Bad \(emt option \fI\fP \07 \fBC\fP option? \fI\fP \07 CAN NOT READ: BLK \fBB\fP (CONTINUE) \fI\fP \08 CAN NOT SEEK: BLK \fBB\fP (CONTINUE) \fI\fP \08 CAN NOT WRITE: BLK \fBB\fP (CONTINUE) \fI\fP \09 Can't create \fBF\fP \fI\fP \08 Can't get memory \fI\fP \07 Can't open checklist file: \fBF\fP \fI\fP \07 Can't open \fBF\fP \fI\fP \08 Can't stat \fBF\fP \fI\fP \08 Can't stat root \fI\fP \08 \fBF\fP is not a block or character device \fI\fP \08 Incompatible options: \(emn and \(ems \fI\fP \07 Invalid \(ems argument, defaults assumed \fI\fP \07 Size check: fsize \fBX\fP isize \fBY\fP \fI\fP \08 .y .x "PHASE 1: CHECK BLOCKS AND SIZES" \fBB\fP BAD I=\fBI\fP \fI\fP \09 \fBB\fP DUP I=\fBI\fP \fI\fP 10 DIRECTORY MISALIGNED I=\fBI\fP \fI\fP 10 DUP TABLE OVERFLOW (CONTINUE) \fI\fP 10 EXCESSIVE BAD BLKS I=\fBI\fP (CONTINUE) \fI\fP 10 EXCESSIVE DUP BLKS I=\fBI\fP (CONTINUE) \fI\fP 10 LINK COUNT TABLE OVERFLOW (CONTINUE) \fI\fP \09 PARTIALLY ALLOCATED INODE I=\fBI\fP (CLEAR) \fI\fP 11 POSSIBLE FILE SIZE ERROR I=\fBI\fP \fI\fP 10 UNKNOWN FILE TYPE I=\fBI\fP (CLEAR) \fI\fP \09 .y .x "PHASE 1B: RESCAN FOR MORE DUPS" \fBB\fP DUP I=\fBI\fP \fI\fP 11 .y .x "PHASE 2: CHECK PATH-NAMES" DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP DIR=\fBF\fP (REMOVE) \fI\fP 12 DUP/BAD I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP FILE=\fBF\fP (REMOVE) \fI\fP 12 DUPS/BAD IN ROOT INODE (CONTINUE) \fI\fP 11 I OUT OF RANGE I=\fBI\fP NAME=\fBF\fP (REMOVE) \fI\fP 12 ROOT INODE NOT DIRECTORY (FIX) \fI\fP 11 ROOT INODE UNALLOCATED. TERMINATING. \fI\fP 11 UNALLOCATED I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP NAME=\fBF\fP (REMOVE) \fI\fP 12 .y .x "PHASE 3: CHECK CONNECTIVITY" DIR I=\fBI1\fP CONNECTED. PARENT WAS I=\fBI2\fP \fI\fP 13 SORRY. NO SPACE IN lost+found DIRECTORY \fI\fP 13 SORRY. NO lost+found DIRECTORY \fI\fP 13 UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 13 .y .x "PHASE 4: CHECK REFERENCE COUNTS" BAD/DUP DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 16 BAD/DUP FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 (CLEAR) \fI\fP 14 FREE INODE COUNT WRONG IN SUPERBLK (FIX) \fI\fP 16 LINK COUNT DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 15 LINK COUNT FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 14 LINK COUNT \fBF\fP I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP COUNT=\fBX\fP SHOULD BE \fBY\fP (ADJUST) \fI\fP 15 SORRY. NO SPACE IN lost+found DIRECTORY \fI\fP 14 SORRY. NO lost+found DIRECTORY \fI\fP 14 UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 15 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 14 .y .x "PHASE 5: CHECK FREE LIST" BAD FREE LIST (SALVAGE) \fI\fP 17 BAD FREEBLK COUNT \fI\fP 16 EXCESSIVE BAD BLKS IN FREE LIST (CONTINUE) \fI\fP 16 EXCESSIVE DUP BLKS IN FREE LIST (CONTINUE) \fI\fP 16 FREE BLK COUNT WRONG IN SUPERBLOCK (FIX) \fI\fP 17 \fBX\fP BAD BLKS IN FREE LIST \fI\fP 17 \fBX\fP BLK(S) MISSING \fI\fP 17 \fBX\fP DUP BLKS IN FREE LIST \fI\fP 17 .y .x "PHASE 6: SALVAGE FREE LIST" Default free-block list spacing assumed \fI\fP 18 .y .x "CLEANUP" ***** BOOT UNIX (NO SYNC!) ***** \fI\fP 18 ***** FILE SYSTEM WAS MODIFIED ***** \fI\fP 18 \fBX\fP files \fBY\fP blocks \fBZ\fP free \fI\fP 18 .y DE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (RECONNECT) \fI\fP 12 .y .x "PHASE 4: CHECK doc/2.10/v7summary/ 755 3 12 0 3461242043 7043 doc/2.10/v7summary/hel.mac 444 3 12 227 3141164753 10347 .hy 9 .de op .nr PD 0 .IP \h'1i'\(ci 1i+2 .nr PD .5v .. .de sh .IP "\(sq\ \\$1" 1i .. .de OP .op \\$1 \\$2 \\$3 .. .de UC \&\\$3\\s-1\\$1\\s0\\$2\& .. doc/2.10/v7summary/hel0 444 3 12 5263 3141164753 7715 .TL 7th Edition UNIX \(em Summary .AU September 6, 1978 .AI .MH .SH A. What's new: highlights of the 7th edition UNIX\(dg System .FS \(dg .UC UNIX is a Trademark of Bell Laboratories. .FE .LP .B "Aimed at larger systems." Devices are addressable to 2\u\s-231\s+2\d bytes, files to 2\u\s-230\s+2\d bytes. 128K memory (separate instruction and data space) is needed for some utilities. .LP .B "Portability." Code of the operating system and most utilities has been extensively revised to minimize its dependence on particular hardware. .LP .B "Fortran 77." F77 compiler for the new standard language is compatible with C at the object level. A Fortran structurer, STRUCT, converts old, ugly Fortran into RATFOR, a structured dialect usable with F77. .LP .B "Shell." Completely new SH program supports string variables, trap handling, structured programming, user profiles, settable search path, multilevel file name generation, etc. .LP .B "Document preparation." TROFF phototypesetter utility is standard. NROFF (for terminals) is now highly compatible with TROFF. MS macro package provides canned commands for many common formatting and layout situations. TBL provides an easy to learn language for preparing complicated tabular material. REFER fills in bibliographic citations from a data base. .LP .B "UNIX-to-UNIX file copy." UUCP performs spooled file transfers between any two machines. .LP .B "Data processing." SED stream editor does multiple editing functions in parallel on a data stream of indefinite length. AWK report generator does free-field pattern selection and arithmetic operations. .LP .B "Program development." MAKE controls re-creation of complicated software, arranging for minimal recompilation. .LP .B "Debugging." ADB does postmortem and breakpoint debugging, handles separate instruction and data spaces, floating point, etc. .LP .B "C language." The language now supports definable data types, generalized initialization, block structure, long integers, unions, explicit type conversions. The LINT verifier does strong type checking and detection of probable errors and portability problems even across separately compiled functions. .LP .B "Lexical analyzer generator." LEX converts specification of regular expressions and semantic actions into a recognizing subroutine. Analogous to YACC. .LP .B "Graphics." Simple graph-drawing utility, graphic subroutines, and generalized plotting filters adapted to various devices are now standard. .LP .B "Standard input-output package." Highly efficient buffered stream I/O is integrated with formatted input and output. .LP .B "Other." The operating system and utilities have been enhanced and freed of restrictions in many other ways too numerous to relate. .sp 100 CE IN lost+found DIRECTORY \fI\fP 13 SORRY. NO lost+found DIRECTORY \fI\fP 13 UNREF DIR I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 14 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIME=\fBT\fP (CLEAR) \fI\fP 14 UNREF FILE I=\fBI\fP OWNER=\fBO\fP MODE=\fBM\fP SIZE=\fBS\fP MTIMEdoc/2.10/v7summary/hel1 444 3 12 42303 3141164741 7727 .SH B. Hardware .PP The 7th edition .UC UNIX operating system runs on a DEC PDP-11/45 or 11/70* .FS *PDP is a Trademark of Digital Equipment Corporation. .FE with at least the following equipment: .IP 128K to 2M words of managed memory; parity not used. .IP disk: RP03, RP04, RP06, RK05 (more than 1 RK05) or equivalent. .IP console typewriter. .IP clock: KW11-L or KW11-P. .LP The following equipment is strongly recommended: .IP communications controller such as DL11 or DH11. .IP full duplex 96-character ASCII terminals. .IP 9-track tape or extra disk for system backup. .LP The system is normally distributed on 9-track tape. The minimum memory and disk space specified is enough to run and maintain .UC UNIX . More will be needed to keep all source on line, or to handle a large number of users, big data bases, diversified complements of devices, or large programs. The resident code occupies 12-20K words depending on configuration; system data occupies 10-28K words. .PP There is no commitment to provide 7th edition .UC UNIX on PDP-11/34, 11/40 and 11/60 hardware. .SH C. Software .PP Most of the programs available as .UC UNIX commands are listed. Source code and printed manuals are distributed for all of the listed software except games. Almost all of the code is written in C. Commands are self-contained and do not require extra setup information, unless specifically noted as ``interactive.'' Interactive programs can be made to run from a prepared script simply by redirecting input. Most programs intended for interactive use (e.g., the editor) allow for an escape to command level (the Shell). Most file processing commands can also go from standard input to standard output (``filters''). The piping facility of the Shell may be used to connect such filters directly to the input or output of other programs. .NH Basic Software .PP This includes the time-sharing operating system with utilities, a machine language assembler and a compiler for the programming language C\(emenough software to write and run new applications and to maintain or modify .UC UNIX itself. .NH 2 Operating System .sh UNIX The basic resident code on which everything else depends. Supports the system calls, and maintains the file system. A general description of .UC UNIX design philosophy and system facilities appeared in the Communications of the ACM, July, 1974. A more extensive survey is in the Bell System Technical Journal for July-August 1978. Capabilities include: .op Reentrant code for user processes. .op Separate instruction and data spaces. .op ``Group'' access permissions for cooperative projects, with overlapping memberships. .op Alarm-clock timeouts. .op Timer-interrupt sampling and interprocess monitoring for debugging and measurement. .OP Multiplexed I/O for machine-to-machine communication. .sh DEVICES All I/O is logically synchronous. I/O devices are simply files in the file system. Normally, invisible buffering makes all physical record structure and device characteristics transparent and exploits the hardware's ability to do overlapped I/O. Unbuffered physical record I/O is available for unusual applications. Drivers for these devices are available; others can be easily written: .op Asynchronous interfaces: DH11, DL11. Support for most common ASCII terminals. .op Synchronous interface: DP11. .op Automatic calling unit interface: DN11. .op Line printer: LP11. .op Magnetic tape: TU10 and TU16. .op DECtape: TC11. .op Fixed head disk: RS11, RS03 and RS04. .op Pack type disk: RP03, RP04, RP06; minimum-latency seek scheduling. .op Cartridge-type disk: RK05, one or more physical devices per logical device. .op Null device. .op Physical memory of PDP-11, or mapped memory in resident system. .op Phototypesetter: Graphic Systems System/1 through DR11C. .sh BOOT Procedures to get .UC UNIX started. .sh MKCONF Tailor device-dependent system code to hardware configuration. As distributed, .UC UNIX can be brought up directly on any acceptable CPU with any acceptable disk, any sufficient amount of core, and either clock. Other changes, such as optimal assignment of directories to devices, inclusion of floating point simulator, or installation of device names in file system, can then be made at leisure. .NH 2 User Access Control .LP .sh LOGIN Sign on as a new user. .op Verify password and establish user's individual and group (project) identity. .op Adapt to characteristics of terminal. .op Establish working directory. .op Announce presence of mail (from MAIL). .op Publish message of the day. .op Execute user-specified profile. .op Start command interpreter or other initial program. .sh PASSWD Change a password. .op User can change his own password. .op Passwords are kept encrypted for security. .sh NEWGRP Change working group (project). Protects against unauthorized changes to projects. .NH 2 Terminal Handling .LP .sh TABS Set tab stops appropriately for specified terminal type. .sh STTY Set up options for optimal control of a terminal. In so far as they are deducible from the input, these options are set automatically by LOGIN. .op Half vs. full duplex. .op Carriage return+line feed vs. newline. .op Interpretation of tabs. .op Parity. .op Mapping of upper case to lower. .op Raw vs. edited input. .op Delays for tabs, newlines and carriage returns. .NH 2 File Manipulation .LP .sh CAT Concatenate one or more files onto standard output. Particularly used for unadorned printing, for inserting data into a pipeline, and for buffering output that comes in dribs and drabs. Works on any file regardless of contents. .sh CP Copy one file to another, or a set of files to a directory. Works on any file regardless of contents. .sh PR Print files with title, date, and page number on every page. .op Multicolumn output. .op Parallel column merge of several files. .sh LPR Off-line print. Spools arbitrary files to the line printer. .sh CMP Compare two files and report if different. .sh TAIL Print last .I n lines of input .op May print last .I n characters, or from .I n lines or characters to end. .sh SPLIT Split a large file into more manageable pieces. Occasionally necessary for editing (ED). .sh DD Physical file format translator, for exchanging data with foreign systems, especially IBM 370's. .sh SUM Sum the words of a file. .NH 2 Manipulation of Directories and File Names .LP .sh RM Remove a file. Only the name goes away if any other names are linked to the file. .OP Step through a directory deleting files interactively. .OP Delete entire directory hierarchies. .sh LN ``Link'' another name (alias) to an existing file. .sh MV Move a file or files. Used for renaming files. .sh CHMOD Change permissions on one or more files. Executable by files' owner. .sh CHOWN Change owner of one or more files. .sh CHGRP Change group (project) to which a file belongs. .sh MKDIR Make a new directory. .sh RMDIR Remove a directory. .sh CD Change working directory. .sh FIND Prowl the directory hierarchy finding every file that meets specified criteria. .op Criteria include: .in +2 .nf name matches a given pattern, creation date in given range, date of last use in given range, given permissions, given owner, given special file characteristics, boolean combinations of above. .in -2 .fi .op Any directory may be considered to be the root. .op Perform specified command on each file found. .NH 2 Running of Programs .LP .sh SH The Shell, or command language interpreter. .op Supply arguments to and run any executable program. .op Redirect standard input, standard output, and standard error files. .op Pipes: simultaneous execution with output of one process connected to the input of another. .OP Compose compound commands using: .in+2 if ... then ... else, .br case switches, .br while loops, .br for loops over lists, .br break, continue and exit, .br parentheses for grouping. .in -2 .op Initiate background processes. .op Perform Shell programs, i.e., command scripts with substitutable arguments. .op Construct argument lists from all file names satisfying specified patterns. .OP Take special action on traps and interrupts. .OP User-settable search path for finding commands. .OP Executes user-settable profile upon login. .OP Optionally announces presence of mail as it arrives. .op Provides variables and parameters with default setting. .sh TEST Tests for use in Shell conditionals. .op String comparison. .op File nature and accessibility. .op Boolean combinations of the above. .sh EXPR String computations for calculating command arguments. .OP Integer arithmetic .OP Pattern matching .sh WAIT Wait for termination of asynchronously running processes. .sh READ Read a line from terminal, for interactive Shell procedure. .sh ECHO Print remainder of command line. Useful for diagnostics or prompts in Shell programs, or for inserting data into a pipeline. .sh SLEEP Suspend execution for a specified time. .sh NOHUP Run a command immune to hanging up the terminal. .sh NICE Run a command in low (or high) priority. .sh KILL Terminate named processes. .sh CRON Schedule regular actions at specified times. .op Actions are arbitrary programs. .op Times are conjunctions of month, day of month, day of week, hour and minute. Ranges are specifiable for each. .sh AT Schedule a one-shot action for an arbitrary time. .sh TEE Pass data between processes and divert a copy into one or more files. .NH 2 Status Inquiries .LP .sh LS List the names of one, several, or all files in one or more directories. .op Alphabetic or temporal sorting, up or down. .op Optional information: size, owner, group, date last modified, date last accessed, permissions, i-node number. .sh FILE Try to determine what kind of information is in a file by consulting the file system index and by reading the file itself. .sh DATE Print today's date and time. Has considerable knowledge of calendric and horological peculiarities. .op May set .UC UNIX 's idea of date and time. .sh DF Report amount of free space on file system devices. .sh DU Print a summary of total space occupied by all files in a hierarchy. .sh QUOT Print summary of file space usage by user id. .sh WHO Tell who's on the system. .op List of presently logged in users, ports and times on. .op Optional history of all logins and logouts. .sh PS Report on active processes. .op List your own or everybody's processes. .op Tell what commands are being executed. .op Optional status information: state and scheduling info, priority, attached terminal, what it's waiting for, size. .sh IOSTAT Print statistics about system I/O activity. .sh TTY Print name of your terminal. .sh PWD Print name of your working directory. .NH 2 Backup and Maintenance .LP .sh MOUNT Attach a device containing a file system to the tree of directories. Protects against nonsense arrangements. .sh UMOUNT Remove the file system contained on a device from the tree of directories. Protects against removing a busy device. .sh MKFS Make a new file system on a device. .sh MKNOD Make an i-node (file system entry) for a special file. Special files are physical devices, virtual devices, physical memory, etc. .sh TP .sh TAR Manage file archives on magnetic tape or DECtape. TAR is newer. .op Collect files into an archive. .op Update DECtape archive by date. .op Replace or delete DECtape files. .op Print table of contents. .op Retrieve from archive. .sh DUMP Dump the file system stored on a specified device, selectively by date, or indiscriminately. .sh RESTOR Restore a dumped file system, or selectively retrieve parts thereof. .sh SU Temporarily become the super user with all the rights and privileges thereof. Requires a password. .sh DCHECK .sh ICHECK .sh NCHECK Check consistency of file system. .op Print gross statistics: number of files, number of directories, number of special files, space used, space free. .op Report duplicate use of space. .op Retrieve lost space. .op Report inaccessible files. .op Check consistency of directories. .op List names of all files. .sh CLRI Peremptorily expunge a file and its space from a file system. Used to repair damaged file systems. .sh SYNC Force all outstanding I/O on the system to completion. Used to shut down gracefully. .NH 2 Accounting .LP The timing information on which the reports are based can be manually cleared or shut off completely. .sh AC Publish cumulative connect time report. .op Connect time by user or by day. .op For all users or for selected users. .sh SA Publish Shell accounting report. Gives usage information on each command executed. .op Number of times used. .op Total system time, user time and elapsed time. .op Optional averages and percentages. .op Sorting on various fields. .NH 2 Communication .LP .sh MAIL Mail a message to one or more users. Also used to read and dispose of incoming mail. The presence of mail is announced by LOGIN and optionally by SH. .op Each message can be disposed of individually. .op Messages can be saved in files or forwarded. .sh CALENDAR Automatic reminder service for events of today and tomorrow. .sh WRITE Establish direct terminal communication with another user. .sh WALL Write to all users. .sh MESG Inhibit receipt of messages from WRITE and WALL. .sh CU Call up another time-sharing system. .OP Transparent interface to remote machine. .OP File transmission. .OP Take remote input from local file or put remote output into local file. .OP Remote system need not be .UC UNIX . .sh UUCP .UC UNIX to .UC UNIX copy. .OP Automatic queuing until line becomes available and remote machine is up. .OP Copy between two remote machines. .op Differences, mail, etc., between two machines. .NH 2 Basic Program Development Tools .LP Some of these utilities are used as integral parts of the higher level languages described in section 2. .sh AR Maintain archives and libraries. Combines several files into one for housekeeping efficiency. .op Create new archive. .op Update archive by date. .op Replace or delete files. .op Print table of contents. .op Retrieve from archive. .sh AS Assembler. Similar to PAL-11, but different in detail. .op Creates object program consisting of .in+2 .nf code, possibly read-only, initialized data or read-write code, uninitialized data. .in -2 .fi .op Relocatable object code is directly executable without further transformation. .op Object code normally includes a symbol table. .op Multiple source files. .op Local labels. .op Conditional assembly. .op ``Conditional jump'' instructions become branches or branches plus jumps depending on distance. .sh Library The basic run-time library. These routines are used freely by all software. .op Buffered character-by-character I/O. .op Formatted input and output conversion (SCANF and PRINTF) for standard input and output, files, in-memory conversion. .op Storage allocator. .op Time conversions. .op Number conversions. .op Password encryption. .op Quicksort. .op Random number generator. .op Mathematical function library, including trigonometric functions and inverses, exponential, logarithm, square root, bessel functions. .sh ADB Interactive debugger. .op Postmortem dumping. .OP Examination of arbitrary files, with no limit on size. .op Interactive breakpoint debugging with the debugger as a separate process. .OP Symbolic reference to local and global variables. .op Stack trace for C programs. .OP Output formats: .in+2 .nf 1-, 2-, or 4-byte integers in octal, decimal, or hex .br single and double floating point .br character and string .br disassembled machine instructions .br .fi .in-2 .op Patching. .OP Searching for integer, character, or floating patterns. .OP Handles separated instruction and data space. .sh OD Dump any file. Output options include any combination of octal or decimal by words, octal by bytes, ASCII, opcodes, hexadecimal. .op Range of dumping is controllable. .sh LD Link edit. Combine relocatable object files. Insert required routines from specified libraries. .op Resulting code may be sharable. .op Resulting code may have separate instruction and data spaces. .sh LORDER Places object file names in proper order for loading, so that files depending on others come after them. .sh NM Print the namelist (symbol table) of an object program. Provides control over the style and order of names that are printed. .sh SIZE Report the core requirements of one or more object files. .sh STRIP Remove the relocation and symbol table information from an object file to save space. .sh TIME Run a command and report timing information on it. .sh PROF Construct a profile of time spent per routine from statistics gathered by time-sampling the execution of a program. Uses floating point. .op Subroutine call frequency and average times for C programs. .sh MAKE Controls creation of large programs. Uses a control file specifying source file dependencies to make new version; uses time last changed to deduce minimum amount of work necessary. .op Knows about CC, YACC, LEX, etc. .NH 2 UNIX Programmer's Manual .LP .sh Manual Machine-readable version of the .UC UNIX Programmer's Manual. .op System overview. .op All commands. .op All system calls. .op All subroutines in C and assembler libraries. .op All devices and other special files. .op Formats of file system and kinds of files known to system software. .op Boot and maintenance procedures. .sh MAN Print specified manual section on your terminal. .NH 2 Computer-Aided Instruction .LP .sh LEARN A program for interpreting CAI scripts, plus scripts for learning about .UC UNIX by using it. .op Scripts for basic files and commands, editor, advanced files and commands, .UC EQN , .UC MS macros, C programming language. ning of Programs .LP .sh SH The Shell, or command language interpreter. .op Supply arguments to and run any executable program. .op Redirect standard input, standard output, and standard error files. .op Pipes: simultaneous execution with output of one process connected to the input of another. .OP Compose compound doc/2.10/v7summary/hel2 444 3 12 10660 3141164727 7735 .NH Languages .NH 2 The C Language .LP .sh CC Compile and/or link edit programs in the C language. The .UC UNIX operating system, most of the subsystems and C itself are written in C. For a full description of C, read .ul The C Programming Language, Brian W. Kernighan and Dennis M. Ritchie, Prentice-Hall, 1978. .op General purpose language designed for structured programming. .op Data types include character, integer, float, double, pointers to all types, functions returning above types, arrays of all types, structures and unions of all types. .op Operations intended to give machine-independent control of full machine facility, including to-memory operations and pointer arithmetic. .op Macro preprocessor for parameterized code and inclusion of standard files. .op All procedures recursive, with parameters by value. .op Machine-independent pointer manipulation. .op Object code uses full addressing capability of the PDP-11. .op Runtime library gives access to all system facilities. .OP Definable data types. .OP Block structure .sh LINT Verifier for C programs. Reports questionable or nonportable usage such as: .nf .in +2 Mismatched data declarations and procedure interfaces. .br Nonportable type conversions. .br Unused variables, unreachable code, no-effect operations. .br Mistyped pointers. .br Obsolete syntax. .in -2 .OP Full cross-module checking of separately compiled programs. .sh CB A beautifier for C programs. Does proper indentation and placement of braces. .NH 2 Fortran .LP .sh F77 A full compiler for ANSI Standard Fortran 77. .OP Compatible with C and supporting tools at object level. .OP Optional source compatibility with Fortran 66. .OP Free format source. .op Optional subscript-range checking, detection of uninitialized variables. .OP All widths of arithmetic: 2- and 4-byte integer; 4- and 8-byte real; 8- and 16-byte complex. .sh RATFOR Ratfor adds rational control structure \o'a\(ga' la C to Fortran. .op Compound statements. .op If-else, do, for, while, repeat-until, break, next statements. .op Symbolic constants. .op File insertion. .op Free format source .op Translation of relationals like >, >=. .op Produces genuine Fortran to carry away. .op May be used with F77. .sh STRUCT Converts ordinary ugly Fortran into structured Fortran (i.e., Ratfor), using statement grouping, if-else, while, for, repeat-until. .NH 2 Other Algorithmic Languages .LP .sh BAS An interactive interpreter, similar in style to BASIC. Interpret unnumbered statements immediately, numbered statements upon `run'. .op Statements include: .in+2 .nf comment, dump, for...next, goto, if...else...fi, list, print, prompt, return, run, save. .fi .in 0 .op All calculations double precision. .op Recursive function defining and calling. .op Builtin functions include log, exp, sin, cos, atn, int, sqr, abs, rnd. .op Escape to ED for complex program editing. .sh DC Interactive programmable desk calculator. Has named storage locations as well as conventional stack for holding integers or programs. .op Unlimited precision decimal arithmetic. .op Appropriate treatment of decimal fractions. .op Arbitrary input and output radices, in particular binary, octal, decimal and hexadecimal. .op Reverse Polish operators: .in+2 .nf + \- * / remainder, power, square root, load, store, duplicate, clear, print, enter program text, execute. .in-2 .fi .sh BC A C-like interactive interface to the desk calculator DC. .op All the capabilities of DC with a high-level syntax. .op Arrays and recursive functions. .op Immediate evaluation of expressions and evaluation of functions upon call. .op Arbitrary precision elementary functions: exp, sin, cos, atan. .op Go-to-less programming. .NH 2 Macroprocessing .LP .nr c 0 1 .sh M4 A general purpose macroprocessor. .OP Stream-oriented, recognizes macros anywhere in text. .OP Syntax fits with functional syntax of most higher-level languages. .OP Can evaluate integer arithmetic expressions. .NH 2 Compiler-compilers .LP .sh YACC An LR(1)-based compiler writing system. During execution of resulting parsers, arbitrary C functions may be called to do code generation or semantic actions. .op BNF syntax specifications. .op Precedence relations. .op Accepts formally ambiguous grammars with non-BNF resolution rules. .sh LEX Generator of lexical analyzers. Arbitrary C functions may be called upon isolation of each lexical token. .OP Full regular expression, plus left and right context dependence. .OP Resulting lexical analysers interface cleanly with YACC parsers. nal. .NH 2 Computer-Aided Instruction .LP .sh LEARN A program for interpreting Cdoc/2.10/v7summary/hel3 444 3 12 15333 3141164726 7737 .NH Text Processing .NH 2 Document Preparation .LP .sh ED Interactive context editor. Random access to all lines of a file. .op Find lines by number or pattern. Patterns may include: specified characters, don't care characters, choices among characters, repetitions of these constructs, beginning of line, end of line. .op Add, delete, change, copy, move or join lines. .op Permute or split contents of a line. .op Replace one or all instances of a pattern within a line. .op Combine or split files. .op Escape to Shell (command language) during editing. .ne3 .op Do any of above operations on every pattern-selected line in a given range. .OP Optional encryption for extra security. .sh PTX Make a permuted (key word in context) index. .sh SPELL Look for spelling errors by comparing each word in a document against a word list. .OP 25,000-word list includes proper names. .OP Handles common prefixes and suffixes. .OP Collects words to help tailor local spelling lists. .sh LOOK Search for words in dictionary that begin with specified prefix. .sh TYPO Look for spelling errors by a statistical technique; not limited to English. .sh CRYPT Encrypt and decrypt files for security. .NH 2 Document Formatting .LP .sh ROFF A typesetting program for terminals. Easy for nontechnical people to learn, and good for simple documents. Input consists of data lines intermixed with control lines, such as .ta 8n .ti 10 .li .sp 2 insert two lines of space .ti10 .li .ce center the next line .br ROFF is deemed to be obsolete; it is intended only for casual use. .op Justification of either or both margins. .op Automatic hyphenation. .op Generalized running heads and feet, with even-odd page capability, numbering, etc. .op Definable macros for frequently used control sequences (no substitutable arguments). .op All 4 margins and page size dynamically adjustable. .op Hanging indents and one-line indents. .op Absolute and relative parameter settings. .op Optional legal-style numbering of output lines. .op Multiple file capability. .OP Not usable as a filter. .sh TROFF .sh NROFF Advanced typesetting. TROFF drives a Graphic Systems phototypesetter; NROFF drives ascii terminals of all types. This summary was typeset using TROFF. TROFF and NROFF style is similar to ROFF, but they are capable of much more elaborate feats of formatting, when appropriately programmed. TROFF and NROFF accept the same input language. .op All ROFF capabilities available or definable. .op Completely definable page format keyed to dynamically planted ``interrupts'' at specified lines. .op Maintains several separately definable typesetting environments (e.g., one for body text, one for footnotes, and one for unusually elaborate headings). .op Arbitrary number of output pools can be combined at will. .op Macros with substitutable arguments, and macros invocable in mid-line. .op Computation and printing of numerical quantities. .op Conditional execution of macros. .op Tabular layout facility. .op Positions expressible in inches, centimeters, ems, points, machine units or arithmetic combinations thereof. .op Access to character-width computation for unusually difficult layout problems. .op Overstrikes, built-up brackets, horizontal and vertical line drawing. .op Dynamic relative or absolute positioning and size selection, globally or at the character level. .op Can exploit the characteristics of the terminal being used, for approximating special characters, reverse motions, proportional spacing, etc. .LP The Graphic Systems typesetter has a vocabulary of several 102-character fonts (4 simultaneously) in 15 sizes. TROFF provides terminal output for rough sampling of the product. .LP NROFF will produce multicolumn output on terminals capable of reverse line feed, or through the postprocessor COL. .LP High programming skill is required to exploit the formatting capabilities of TROFF and NROFF, although unskilled personnel can easily be trained to enter documents according to canned formats such as those provided by MS, below. TROFF and EQN are essentially identical to NROFF and NEQN so it is usually possible to define interchangeable formats to produce approximate proof copy on terminals before actual typesetting. The preprocessors MS, TBL, and REFER are fully compatible with TROFF and NROFF. .sh MS A standardized manuscript layout package for use with NROFF/TROFF. This document was formatted with MS. .op Page numbers and draft dates. .op Automatically numbered subheads. .op Footnotes. .op Single or double column. .op Paragraphing, display and indentation. .op Numbered equations. .sh EQN A mathematical typesetting preprocessor for TROFF. Translates easily readable formulas, either in-line or displayed, into detailed typesetting instructions. Formulas are written in a style like this: .DS sigma sup 2 ~=~ 1 over N sum from i=1 to N ( x sub i \- x bar ) sup 2 .DE which produces: .EQ sigma sup 2 ~=~ 1 over N sum from i=1 to N ( x sub i - x bar ) sup 2 .EN .op Automatic calculation of size changes for subscripts, sub-subscripts, etc. .op Full vocabulary of Greek letters and special symbols, such as `gamma', `GAMMA', `integral'. .op Automatic calculation of large bracket sizes. .op Vertical ``piling'' of formulae for matrices, conditional alternatives, etc. .op Integrals, sums, etc., with arbitrarily complex limits. .op Diacriticals: dots, double dots, hats, bars, etc. .op Easily learned by nonprogrammers and mathematical typists. .sh NEQN A version of EQN for NROFF; accepts the same input language. Prepares formulas for display on any terminal that NROFF knows about, for example, those based on Diablo printing mechanism. .op Same facilities as EQN within graphical capability of terminal. .sh TBL A preprocessor for NROFF/TROFF that translates simple descriptions of table layouts and contents into detailed typesetting instructions. .op Computes column widths. .op Handles left- and right-justified columns, centered columns and decimal-point alignment. .op Places column titles. .op Table entries can be text, which is adjusted to fit. .op Can box all or parts of table. .sh REFER Fills in bibliographic citations in a document from a data base (not supplied). .op References may be printed in any style, as they occur or collected at the end. .op May be numbered sequentially, by name of author, etc. .sh TC Simulate Graphic Systems typesetter on Tektronix 4014 scope. Useful for checking TROFF page layout before typesetting. .sh GREEK Fancy printing on Diablo-mechanism terminals like DASI-300 and DASI-450, and on Tektronix 4014. .op Gives half-line forward and reverse motions. .op Approximates Greek letters and other special characters by overstriking. .sh COL Canonicalize files with reverse line feeds for one-pass printing. .sh DEROFF Remove all TROFF commands from input. .sh CHECKEQ Check document for possible errors in EQN usage. r all files in one or more directories. .op Alphabetic or temporal sorting, up or down. .op Optional information: size, owner, group, date last modified, date last accessed, permissions, i-node number. .sh FILE Try to determine what kind of information is in a file by consulting the file sysdoc/2.10/v7summary/hel4 444 3 12 4664 3141164726 7725 .NH Information Handling .LP .sh SORT Sort or merge ASCII files line-by-line. No limit on input size. .op Sort up or down. .op Sort lexicographically or on numeric key. .op Multiple keys located by delimiters or by character position. .op May sort upper case together with lower into dictionary order. .OP Optionally suppress duplicate data. .sh TSORT Topological sort \(em converts a partial order into a total order. .sh UNIQ Collapse successive duplicate lines in a file into one line. .op Publish lines that were originally unique, duplicated, or both. .op May give redundancy count for each line. .sh TR Do one-to-one character translation according to an arbitrary code. .op May coalesce selected repeated characters. .op May delete selected characters. .sh DIFF Report line changes, additions and deletions necessary to bring two files into agreement. .op May produce an editor script to convert one file into another. .op A variant compares two new versions against one old one. .sh COMM Identify common lines in two sorted files. Output in up to 3 columns shows lines present in first file only, present in both, and/or present in second only. .sh JOIN Combine two files by joining records that have identical keys. .sh GREP Print all lines in a file that satisfy a pattern as used in the editor ED. .op May print all lines that fail to match. .op May print count of hits. .op May print first hit in each file. .sh LOOK Binary search in sorted file for lines with specified prefix. .sh WC Count the lines, ``words'' (blank-separated strings) and characters in a file. .sh SED Stream-oriented version of ED. Can perform a sequence of editing operations on each line of an input stream of unbounded length. .op Lines may be selected by address or range of addresses. .op Control flow and conditional testing. .op Multiple output streams. .op Multi-line capability. .sh AWK Pattern scanning and processing language. Searches input for patterns, and performs actions on each line of input that satisfies the pattern. .op Patterns include regular expressions, arithmetic and lexicographic conditions, boolean combinations and ranges of these. .op Data treated as string or numeric as appropriate. .op Can break input into fields; fields are variables. .op Variables and arrays (with non-numeric subscripts). .op Full set of arithmetic operators and control flow. .op Multiple output streams to files and pipes. .op Output can be formatted as desired. .op Multi-line capabilities. successive duplicate lines in a file into one line. .op Publish lines that doc/2.10/v7summary/hel5 444 3 12 1140 3141164705 7705 .NH Graphics .LP The programs in this section are predominantly intended for use with Tektronix 4014 storage scopes. .sh GRAPH Prepares a graph of a set of input numbers. .op Input scaled to fit standard plotting area. .op Abscissae may be supplied automatically. .op Graph may be labeled. .op Control over grid style, line style, graph orientation, etc. .sh SPLINE Provides a smooth curve through a set of points intended for GRAPH. .sh PLOT A set of filters for printing graphs produced by GRAPH and other programs on various terminals. Filters provided for 4014, DASI terminals, Versatec printer/plotter. Do one-to-one character translation according to an arbitrary code. .op May coalesce selected repeated characters. .op May delete selected characters. .sh DIFF Report line changes, additions and deletions necessary to bring two files into agreement. .op May produce an editor script to convert one file into another. .op A variant compares two new versions against one old one. .sh COMM Identify common lines in twodoc/2.10/v7summary/hel6 444 3 12 2516 3141164675 7724 .NH Novelties, Games, and Things That Didn't Fit Anywhere Else .LP .sh BACKGAMMON .br A player of modest accomplishment. .sh CHESS Plays good class D chess. .sh CHECKERS Ditto, for checkers. .sh BCD Converts ascii to card-image form. .sh PPT Converts ascii to paper tape form. .sh BJ A blackjack dealer. .sh CUBIC An accomplished player of 4\(mu4\(mu4 tic-tac-toe. .sh MAZE Constructs random mazes for you to solve. .sh MOO A fascinating number-guessing game. .sh CAL Print a calendar of specified month and year. .sh BANNER Print output in huge letters. .sh CHING The .ul I Ching. Place your own interpretation on the output. .sh FORTUNE Presents a random fortune cookie on each invocation. Limited jar of cookies included. .sh UNITS Convert amounts between different scales of measurement. Knows hundreds of units. For example, how many km/sec is a parsec/megayear? .sh TTT A tic-tac-toe program that learns. It never makes the same mistake twice. .sh ARITHMETIC .br Speed and accuracy test for number facts. .sh FACTOR Factor large integers. .sh QUIZ Test your knowledge of Shakespeare, Presidents, capitals, etc. .sh WUMP Hunt the wumpus, thrilling search in a dangerous cave. .sh REVERSI A two person board game, isomorphic to Othello\(rg. .sh HANGMAN Word-guessing game. Uses the dictionary supplied with SPELL. .sh FISH Children's card-guessing game. ay print count of hits. .op May print first hit in each file. .sh LOOK Binary search in sorted file for lines with specified prefix. .sh WC Count the lines, ``words'' (blank-sepadoc/2.10/px/ 755 3 12 0 3461242047 5524 doc/2.10/px/fig1.1.n 444 3 12 547 3141164316 6736 .KF .TS center; c l l l _ l | l | | cw(18) | aw(28) | _ | l | c | | _ | a | c | | l | | _ | l c l. Base of stack frame Block mark Positive offsets .sp \(<- Display entry points here T{ .sp Local variables T} Negative offsets T{ .sp Temporary .br expression .br space T} .sp Top of stack frame .sp .TE .ce Figure 1.1 \- Structure of stack frame .sp .KE doc/2.10/px/fig1.2.n 444 3 12 632 3141164316 6732 .KF .TS center; l l | lw(22n) | aw(20n). _ T{ .ce 1000 .sp Saved lino .sp Saved lc .sp Saved dp .sp .ce 0 T} T{ .if n .sp 2 Created by \s-2CALL\s0 T} _ T{ .ce 1000 .sp Saved dp contents .sp Pointer to current section name and entry line .sp Current file name and buffer .sp Top of stack reference .sp .ce 0 T} T{ .if n .sp 2 Created by \s-2BEG\s0 T} _ .TE .sp .ce Figure 1.2 \- Block mark structure .sp .KE doc/2.10/px/fig1.3.n 444 3 12 331 3141164316 6727 .TS center, allbox; lw(20). T{ .nf .ce 1000 Space for value returned from f .ce 0 .fi T} T{ .ce Value of a T} T{ .sp .ce Block Mark .sp T} .TE .sp .1i .ce Figure 1.3 \- Stack structure on function call `f(a)' .sp .1i xin4.nw-(tmac.pwdoc/2.10/px/fig2.1.n 444 3 12 6051 3141164315 6752 ABORT 2.2 Halt execution immediately for debugging ABS* 2.7 Absolute value ADD* 2.7 Addition AND 2.4 Boolean and ARGC 2.13 Built-in function ARGV 2.13 Built-in procedure AS* 2.5 Assignment operators ASRT 2.12 Assert true to continue ATAN 2.13 Built-in function BEG w,w," 2.2,1.8 Write second part of block mark, enter block BUFF 3.6 Specify buffering for file output CALL l,a 2.2,1.8 Procedure or function call CARD s 2.11 Cardinality of set CASEOP* 2.9 Case statements CHR* 2.13 Built-in function CLCK 2.13 Built-in function clock CON* v 2.5 Load constant operators COUNT s 2.10 Count a statement count point CTTOT s,w,w 2.11 Construct set DATE 2.13 Built-in procedure DEFNAME s 3.6 Attach file name for prgram statement files DISPOSE 2.13 Built-in procedure DIV* 2.7 Division DVD* 2.7 Floating division END 2.2,1.8 End block execution EOF 3.6 Boolean built-in function EOLN 3.6 Boolean built-in function EXP 2.13 Built-in function EXPO 2.13 Built-in function yielding exponent of real FNIL 3.6 Check file initialized, not eof, synced FOR* a 2.12 For statements GET 3.6 File procedure get GOTO l,a 2.2,1.8 Non-local goto statement HALT 2.2 Produce control flow backtrace IF a 2.3 Conditional transfer IN s,w,w 2.11 Set membership INCT 2.11 Membership in a constructed set IND* 2.6 Indirection operators INX* s,w,w 2.6 Subscripting (indexing) operator ITOD 2.12 Convert integer to real ITOS 2.12 Convert integer to short integer LINO s 2.2 Set line number, count statements LLIMIT 2.13 Built-in procedure LN 2.13 Built-in function LV l,w 2.6 Address of operator MESSAGE l 3.6 Write to terminal, built-in procedure MOD* 2.7 Modulus MUL* 2.7 Multiplication NEG* 2.7 Negation NEW s 2.13 Built-in procedure NIL 2.6 Assert non-nil pointer NODUMP w 2.2 \s-2BEG\s0 main program, suppress pm dump NOT 2.4 Boolean not ODD* 2.13 Built-in function OFF s 2.5 Offset address (i.e. for field reference) OR 2.4 Boolean or PAGE 3.6 Built-in procedure POP s 2.2,1.9 Pop (arguments) off stack PRED* 2.13 Built-in function PUSH s 2.2,1.9 Clear space (for function result) PUT 3.6 File procedure put PXPBUF w 2.10 Initialize \fIpxp\fP count buffer RANDOM 2.13 Built-in function RANG* v 2.8 Subrange checking READ* 3.6 Built-in procedure REL* r 2.3 Relational test yielding Boolean result REMOVE s 3.6 Remove a file RESET s,w 3.6 Built-in procedure REWRITE s,w 3.6 Built-in procedure ROUND 2.13 Built-in function RV* l,a 2.5 Rvalue (load) operators SCLCK 2.13 Built-in function sysclock SDUP 2.2 Duplicate top stack word SEED 2.13 Built-in function SIN 2.13 Built-in function SQR* 2.7 Squaring SQRT 2.13 Built-in function STLIM 2.13 Built-in procedure for changing statement limit STOD 2.12 Convert short integer to real STOI 2.12 Convert short to long integer SUB* 2.7 Subtraction SUCC* 2.13 Built-in function TIME 2.13 Built-in procedure TRA a 2.2 Transfer of control (local goto) TRACNT w,a 2.10 Count a procedure entry TRUNC 2.13 Built-in function UNDEF 2.13 Built-in function UNIT* 3.6 Set active file WRHEX* l 3.6 Hexadecimal write WRITE* l 3.5 Built-in procedure WRITELN 3.6 Write a new line character WROCT* l 3.6 Octal write T 3.6 File procedure get GOTO l,a 2.2,1.8 Non-local goto statement HALT 2.2 Produce control flow backtrace IF a 2.3 Conditional transfer IN s,w,w 2.11 Set membership INCT 2.11 Membership in a constructed set IND* 2.6 Indirection operators INX* s,w,w 2.6 Subscripting (indexing) operator ITOD 2.12 Convert integer to real ITOS 2.12 Convert integer to short integer LINO s 2.2 Set line number, count statements LLIMIT 2.13 Built-in procedure LN 2.13 Built-in function LV l,doc/2.10/px/fig2.1.raw 444 3 12 6051 3141164315 7306 ABORT 2.2 Halt execution immediately for debugging HALT 2.2 Produce control flow backtrace BEG w,w," 2.2,1.8 Write second part of block mark, enter block END 2.2,1.8 End block execution CALL l,a 2.2,1.8 Procedure or function call NODUMP w 2.2 \s-2BEG\s0 main program, suppress pm dump PUSH s 2.2,1.9 Clear space (for function result) POP s 2.2,1.9 Pop (arguments) off stack TRA a 2.2 Transfer of control (local goto) LINO s 2.2 Set line number, count statements GOTO l,a 2.2,1.8 Non-local goto statement IF a 2.3 Conditional transfer REL* r 2.3 Relational test yielding Boolean result AND 2.4 Boolean and OR 2.4 Boolean or NOT 2.4 Boolean not RV* l,a 2.5 Rvalue (load) operators CON* v 2.5 Load constant operators AS* 2.5 Assignment operators OFF s 2.5 Offset address (i.e. for field reference) INX* s,w,w 2.6 Subscripting (indexing) operator NIL 2.6 Assert non-nil pointer LV l,w 2.6 Address of operator IND* 2.6 Indirection operators ADD* 2.7 Addition SUB* 2.7 Subtraction MUL* 2.7 Multiplication SQR* 2.7 Squaring DIV* 2.7 Division MOD* 2.7 Modulus ABS* 2.7 Absolute value NEG* 2.7 Negation DVD* 2.7 Floating division RANG* v 2.8 Subrange checking CASEOP* 2.9 Case statements FOR* a 2.12 For statements PXPBUF w 2.10 Initialize \fIpxp\fP count buffer TRACNT w,a 2.10 Count a procedure entry COUNT s 2.10 Count a statement count point CTTOT s,w,w 2.11 Construct set CARD s 2.11 Cardinality of set STOI 2.12 Convert short to long integer STOD 2.12 Convert short integer to real ITOD 2.12 Convert integer to real ITOS 2.12 Convert integer to short integer GET 3.6 File procedure get PUT 3.6 File procedure put MESSAGE l 3.6 Write to terminal, built-in procedure FNIL 3.6 Check file initialized, not eof, synced BUFF 3.6 Specify buffering for file output EOF 3.6 Boolean built-in function EOLN 3.6 Boolean built-in function RESET s,w 3.6 Built-in procedure REWRITE s,w 3.6 Built-in procedure REMOVE s 3.6 Remove a file UNIT* 3.6 Set active file READ* 3.6 Built-in procedure WRITE* l 3.5 Built-in procedure PAGE 3.6 Built-in procedure WROCT* l 3.6 Octal write WRHEX* l 3.6 Hexadecimal write DEFNAME s 3.6 Attach file name for prgram statement files LLIMIT 2.13 Built-in procedure ARGC 2.13 Built-in function ARGV 2.13 Built-in procedure SCLCK 2.13 Built-in function sysclock CLCK 2.13 Built-in function clock DATE 2.13 Built-in procedure TIME 2.13 Built-in procedure SEED 2.13 Built-in function RANDOM 2.13 Built-in function DISPOSE 2.13 Built-in procedure NEW s 2.13 Built-in procedure EXPO 2.13 Built-in function yielding exponent of real ATAN 2.13 Built-in function EXP 2.13 Built-in function LN 2.13 Built-in function SIN 2.13 Built-in function SQRT 2.13 Built-in function CHR* 2.13 Built-in function ODD* 2.13 Built-in function PRED* 2.13 Built-in function STLIM 2.13 Built-in procedure for changing statement limit SUCC* 2.13 Built-in function ROUND 2.13 Built-in function TRUNC 2.13 Built-in function UNDEF 2.13 Built-in function SDUP 2.2 Duplicate top stack word WRITELN 3.6 Write a new line character ASRT 2.12 Assert true to continue IN s,w,w 2.11 Set membership INCT 2.11 Membership in a constructed set width computation for unusually difficult layout problems. .op Overstrikes, built-up brackets, horizontal and vertical line drawing. .op Dynamic relative or absolute positioning and size selection, globally or at the character level. .op Can exploit the characteristics of the terminal being used, for approximating special characters, reverse motions, proportional spacing, etc. .LP The Graphic Systems typesetter has a vocabulary of several 102-character fonts (4 simuldoc/2.10/px/fig2.2.n 444 3 12 244 3141164314 6730 .TS center, allbox; cw(15) c l l. \s-2CASEOP\s0 No. of cases T{ .sp .nf .ce 3 Case transfer table .fi T} T{ .sp .nf .ce 2 Array of case label values .fi .sp T} .TE pxin1.nwhpxin2.nw/pxin3.nw.pxin4.nw-(tmac.pwdoc/2.10/px/makefile 444 3 12 160 3141164314 7257 pxin: fig2.1.n soelim pxin?.n | tbl | /usr/new/vtroff -o-1,22- fig2.1.n: fig2.1.raw sort fig2.1.raw >fig2.1.n lfig2.2.nwkmakefilewjpxin0.nwipxin1.nwhpxin2.nw/pxin3.nw.pxin4.nw-(tmac.pwdoc/2.10/px/pxin0.n 444 3 12 5033 3141164314 7020 .if !\n(xx .so tmac.p .RP .TL Berkeley Pascal PX Implementation Notes .br Version 1.1 \- April, 1979 .AU William N. Joy\*(dg .AI Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 .AB .PP Berkeley Pascal is designed for interactive instructional use and runs on the \s-2PDP\s0 11 computer family. ..A version of \fIpx\fR for the \s-2VAX\s0 11/780 is nearly complete. The interpreter .I px executes the Pascal binaries generated by the Pascal translator .I pi . .PP The .I PX Implementation Notes .R describe the overall organization of .I px , detail the various operations of the interpreter, with a special section describing the file input/output structure. Conclusions are given as to the viability of an interpreter based approach to language implementation for an instructional environment. .AE .if n 'ND .SH Introduction .PP This .I PX Implementation Notes .R consists of four major parts. The first part outlines the overall organization of .I px . Section 2 describes the operations (instructions) of the interpreter while section 3 focuses on input/output related activity. A final section gives conclusions about the viability of an interpreter based approach to language implementation for instruction. .SH Related Berkeley Pascal documents .PP The .I "PXP Implementation Notes" give details of the internals of the execution profiler .I pxp; parts of the interpreter related to .I pxp are discussed in section 2.10. A paper describing the syntactic error recovery mechanism used in .I pi will be presented at the ACM Conference on Compiler Construction in Boulder Colorado in August, 1979. .SH Acknowledgements .PP This version of .I px is heavily based on an earlier .I px which was designed and implemented by Ken Thompson, the author of the first .UP system. Without his work, this .UP system would never have existed. Charles Haley, who collaborated with the author on this project, wrote some of the more difficult input/output routines in this version of .I px, and helped to debug it all. His assistance in teaching this author about .UX and Pascal is gratefully acknowledged and appreciated. The author would also like to thank his faculty advisor Susan L. Graham for her encouragement, her helpful comments and suggestions relating to .UP and her excellent editorial assistance. .FS \*(dg The financial support of the National Science Foundation under grants MCS74-07644-A03 and MCS78-07291 and of an \s-2IBM\s0 Graduate Fellowship are gratefully acknowledged. .FE .bp ranslator .I pi . .PP The .I PX Implementation Notes .R describe the overall organization of .I px , detail the various operations of the interpreter, with a special section describing the file input/output structure. Conclusions are given as to the viability of an interpreter based approach to language implementation for an instructional environment. .AE .if n 'ND .SH Introduction .PP This .I PX Implementation Notes .R consists of four major parts. The first part outlines the ovedoc/2.10/px/pxin1.n 444 3 12 42213 3141164313 7041 .if !\n(xx .so tmac.p .nr H1 0 .NH Organization .PP Most of .I px is written in the \s-2PDP\s0-11 assembly language, using the .UX assembler .I as. Portions of .I px are also written in the .UX systems programming language C. .I Px consists of a main procedure which reads in the interpreter code, a main interpreter loop which transfers successively to various code segments implementing the abstract machine operations and built-in procedures and functions, the code segments themselves, and a number of routines which support the implementation of the Pascal input-output environment. .PP The interpreter runs at a fraction of the speed of equivalent compiled C code, with this fraction varying from 1/5 to 1/15. The fact that the interpreter implements 32 bit integer arithmetic on a 16 bit machine notably degrades its speed. In a code generated Pascal for a \s-2PDP\s0-11, 32 bit integers would be undesirable. .PP The interpreter occupies 14.6K bytes of instruction space, which is shared between all instances of the interpreter, and 5K bytes of data space of which there is a copy for each interpreter execution. .PP The interpreter occupies 14.6K bytes of instruction space, shared among all processes executing Pascal, and has 4.6K bytes of data space (constants, error messages, etc.) a copy of which is allocated to each executing process. .NH 2 Format of the object file .PP .I Px normally interprets the code left in an object file by a run of the Pascal translator .I pi. The file where the translator puts the object originally, and the most commonly interpreted file, is called .I obj. We will first describe the way the object file was prepared in version 1.0 of the interpreter. .PP In version 1.0 of the interpreter, the .I obj file has an extremely simple format. The first word of the file has the octal value 404, a ``magic'' number. This number, like the numbers 407, 410, and 411 which signify executable files to the system, can be recognized by a modified shell (command interpreter) which can then fork instances of .I px to interpret the file. In this way, Pascal objects can be referred to at the shell level by typing their names. The modified shell can open each file which is executable but does not have a magic number recognized by the operating system. If the first word of such a file is 404, then the shell recognizes the file as a Pascal object, and creates an instance of the Pascal interpreter with the specified file as its first argument. This, importantly, allows all processes executing Pascal objects to share the same interpreter, and allows the Pascal object files to be small as they do not contain a copy of the interpreter. .PP With version 1.1 of the Pascal system an option exists to have the translator prepare true executable files. In order that all persons using .I px share a common text image, this executable file is not an interpreter, but rather a small process which coordinates with the iinterpreter to start execution. The way in which this happens is somewhat complicated. When one of these object files is created, the interpreter code is placed at the end of a special ``header'' file and the size of the initialized data area of this header file is expanded to include this code. When the process executes, the interpreter code is thus available at a easily determined address in its data space. When executed, the object process creates an .I pipe , creates another process by doing a .I fork , and arranges that the resulting parent process becomes an instance of .I px . The child process then writes, through the pipe whicch it has to the parent, interpreter process, the interpreter code. When this process is complete, the child exits. .PP The real advantage of this approach is that it does not require modifications to the shell, and that the resultant objects are ``true objects'' not requiring special treatment. A simpler mechanism would be to determine the name of the file which was executed and pass this to the interpreter. However it is not possible to determine this name in all cases.\u\*(dg\d .FS \*(dgFor instance, if the .I pxref program is placed in the directory `/usr/bin' then when the user types ``pxref prog1.p'' the first argument to the program, nominally the programs name, is ``pxref.'' While it would be possible to search in the standard place, i.e. the current directory, and the system directories `/bin' and `/usr/bin' for a corresponding object file, this would be expensive and not guaranteed to succeed. Several shells exist which allow other directories to be searched for commands, and there is, in general, no way to determine what these directories are. .FE .PP After the first word containing the value 404, the remainder of the .I obj file contains the object code. .NH 2 General features of object code .PP Pascal object code is relocatable as all addressing references for control transfers within the code are relative. The code consists of instructions interspersed with inline data. All instructions have a length which is an even number of bytes, that is, an integral number of words. No variables are kept in the object code area. .PP The first byte of a Pascal interpreter instruction contains an operation code. This allows a total of 256 major operation codes, and 219 of these are in use in the current .I px. The second byte of each interpreter instruction is called the ``sub-operation code'', or more commonly the .I subop. It contains a small integer which may, for example, be used as a block-structure level for the associated operation. If the instruction can take a fullword constant, this constant is often packed into the subop if it fits into 8 bits and is not zero. A subop value of 0 indicates that the constant wouldn't fit and therefore follows in the next word. This is a space optimization, the value of 0 for flagging the longer case being convenient because it is easy to test. .PP Other instruction formats are used. The branching instructions take an offset in the following word, operators which load constants onto the stack take arbitrarily long inline constant values, and a large number of operations deal exclusively with data on the interpreter stack, requiring no inline data. .NH 2 Stack structure of the interpreter .PP The interpreter emulates a stack-structured Pascal machine. The ``load'' instructions put values onto the stack, where all arithmetic operations take place. The ``store'' instructions take values off the stack and place them in an address which is also contained on the stack. The only way to move data or to compute in the machine is with the stack. .PP To make the interpreter operations more powerful and to thereby increase the interpreter speed, the arithmetic operations in the interpreter are ``typed''. That is, length conversion of arithmetic values occurs when they are used in an operation. This eliminates the need for interpreter cycles for length conversion and the associated overhead. For example, when adding an integer which fits in one byte to one which requires four bytes to store, no ``conversion'' operators are required. The one byte integer is loaded onto the stack, followed by the four byte integer, and then an adding operator is used which has, implicit in its definition, the sizes of the arguments. .NH 2 Data types in the interpreter .PP The interpreter deals with several different fundamental data types. In the memory of the machine, 1, 2, and 4 byte integers are supported, with only 2 and 4 byte integers being present on the stack. The interpreter always converts to 4 byte integers when there is a possibility of overflowing the shorter formats. This corresponds to the Pascal language definition of overflow in arithmetic operations which requires that the result be correct if all partial values lie within the bounds of the base integer type: 4 byte integer values. .PP Character constants are treated similarly to 1 byte integers for most purposes, as are Boolean values. All enumerated types are, in fact, treated as integer values of an appropriate length, usually 1 byte. The interpreter also has real numbers, occupying 8 bytes of storage, and sets and strings of varying length. The appropriate operations are included for each data type, such as set union and intersection and an operation to write a string which is on top of the stack to a file. .PP No special .B packed data formats are supported by the interpreter. The smallest unit of storage occupied by any variable is one byte. The built-ins .I pack and .I unpack thus degenerate to simple memory to memory transfers with no special processing. .NH 2 Runtime environment .PP The interpreter runtime environment uses a stack data area and a heap data area, which are kept at opposite ends of memory and grow towards each other. All global variables and variables local to procedures and functions are kept in the stack area. Dynamically allocated variables and buffers for input/output are allocated in the heap. .PP The addressing of block structured variables is accomplished through a fixed display which contains, for each statically active block, the address of its stack frame.\*(dg .FS \*(dg Here ``block'' is being used to mean any .I procedure , .I function or the main program. .FE This display is referenced by instructions which load and store variables and maintained by the operations for block entry and exit, and for non-local .B goto statements. .NH 2 Dp, lc, lp .PP Three ``global'' variables in the interpreter, in addition to the ``display'', are the .I dp, .I lc, and the .I lp. The .I dp is a pointer to the display entry for the current block; the .I lc is the abstract machine location counter; and the .I lp is a register which holds the address of the main interpreter loop so that returning to the loop to fetch the next instruction is a fast operation. .NH 2 The stack frame structure .PP Each active block has a stack frame consisting of three parts: a block mark, local variables, and temporary storage for partially evaluated expressions. The stack in the interpreter grows from the high addresses in memory to the low addresses, so that those parts of the stack frame which are ``on the top'' of the stack have the most negative offsets from the display entry for the block. The major parts of the stack frame are represented in Figure 1.1. .so fig1.1.n Note that the local variables of each block have negative offsets from the corresponding display entry, the ``first'' local variable having offset `\-2'. .NH 2 The block mark .PP The block mark contains the saved information necessary to restore the environment when the current block exits. It consists of two parts. The first and top-most part is saved by the .SM CALL instruction in the interpreter. This information is not present for the main program as it is never ``called''. The second part of the block mark is created by the .SM BEG begin block operator which also allocates and clears the local variable storage. The format of these blocks is represented in Figure 1.2. .sp .so fig1.2.n .PP The data saved by the .SM CALL operator includes the line number .I lino of the point of call, which is printed if the program execution terminates abnormally; the location counter .I lc giving the return address; and the current display entry address .I dp at the time of call. .PP The .SM BEG begin operator saves the previous display contents at the level of this block, so that the display can be restored on block exit. A pointer to 10 bytes of information giving the first eight characters of the name of this block and its beginning line number is also saved. This information is stored in the intepretor object code in-line after the .SM BEG operator. It is used in printing a post-mortem backtrace. The saved file name and buffer reference are necessary because of the input/output structure (this is discussed in detail in sections 3.3 and 3.4). The top of stack reference gives the value the stack pointer should have when there are no expression temporaries on the stack. It is used for a consistency check in the .SM LINO line number operators in the interpreter, which occurs before each statement executed. This helps to catch bugs in the interpreter, which often manifest themselves by leaving the stack non-empty between statements. .PP Note that there is no explicit static link here. Thus to set up the display correctly after a non-local .B goto statement one must ``unwind'' through all the block marks on the stack to rebuild the display. .NH 2 Arguments and return values .PP A function returns its value into a space reserved by the calling block. Arguments to a .B function are placed on top of this return area. For both .B procedure and .B function calls, arguments are placed at the end of the expression evaluation area of the caller. When a .B function completes, expression evaluation can continue after popping the arguments to the .B function off the stack, exactly as if the function value had been ``loaded''. The arguments to a .B procedure are also popped off the stack by the caller after its execution terminates. .KS .PP As a simple example consider the following stack structure for a call to a function .I f, of the form ``f(a)''. .so fig1.3.n .KE .PP If we suppose that .I f returns a .I real and that .I a is an integer, the calling sequence for this function would be: .DS .TS lp-2w(8) l. PUSH -8 RV4 \fIa\fR CALL \fIf\fR POP 4 .TE .DE .ZP Here we use the operator .SM PUSH to clear space for the return value, load .I a on the stack with an ``rvalue'' operator, call the function, pop off the argument .I a , and can then complete evaluation of the containing expression. The operations used here will be explained in section 2. .PP If the function .I f were given by .LS 10 \*bfunction\fR f(i: integer): real; 11 \*bbegin\fR 12 f := i 13 \*bend\fR; .LE then .I f would have code sequence: .DS .TS lp-2w(8) l. BEG 0 "f" 11 LV \fIl\fR,20 RV4 \fIl\fR,16 AS48 END .TE .DE .ZP Here the .SM BEG operator takes 12 bytes of inline data. The first word indicates the amount of local variable storage, here none. The succeeding two lines give the name of the block and the line number of the .B begin for error traceback. The .SM BEG operator places a pointer to the name and line number in the block mark. .PP The body of the .B function here involved taking an address of the .B function result variable .I f using the address of operator .SM LV . .I a . The next operation in the interpretation of this function is the loading of the value of .I i . .I I is at the level of the .B function .I f , here symbolically .I l, and the first variable in the local variable area. .PP The .B function completes by assigning the 4 byte integer on the stack to the 8 byte return location, hence the .SM AS48 assignment operator, and then uses the .SM END operator to exit the current block. .NH 2 The main interpreter loop .PP We can now describe the main interpreter loop. It is actually quite short: .DS loop: \fBmovb\fR (lc)+,r0 \fBadd\fR r0,r0 \fBmovb\fR (lc)+,r3 \fBjmp\fR *optab(r0) .DE .ZP First the main operation code is extracted from the first byte of the instruction. The code will be a small integer in the range -128 to 127. It is then doubled to make a word index into the operation table. Note that the sub-operation code is placed in register 3, and is thus available for use by the individual operation sequences. The hardware also leaves the condition codes set based on the value of this subop. The code will be discussed in section 2.1. .PP The label .I optab is in the middle of a branch table which has one operation address per word. The table is generated automatically from an abstract machine instruction list. The address of the instruction at .I loop is always contained in the register variable .I lp so that a return to the main interpreter loop both is quick and occupies little space. The return is thus a ``jmp\ (lp)'' instruction, defined for mnemonic value as the operator ``return'' in the intepreter, i.e. .DS return = 115 .DE so that one can write the mnemonic ``return'' at the end of an interpreter code sequence. .NH 2 Errors .PP Errors during interpretation cause a subroutine call to an error routine in a conventional fashion. An earlier version of the interpreter more compactly represented the raising of these conditions by using emulator traps (\s-2EMT\s0s), a form of system call otherwise unused by \s-2UNIX\s0. Errors were assigned small integer numbers and then referred to symbolically in the interpreter. The \s-2UNIX\s0 assember, .I as , provides a mechanism for defining the opcode ``error'' to be an ``emt,'' i.e.: .DS error = 104000 ^ sys .DE Thus there were many lines like .DS .TS lw(8) lp-2. \fBerror\fR ESTKOVFLO .TE .DE in the interpreter. These cause a process fault, which is trapped by the system and passed to the label .I onemt in the interpreter which fetches the error code byte from the .SM EMT instruction and calls the procedure .I error with this argument. .I Error processes the error condition, printing an appropriate error message and, usually, a backtrace. .PP In order that the interpreter run on a standard \s-2UNIX\s0 without using non-standard system calls to fetch the \s-2EMT\s0 code when running in separated instruction and data spaces, the current version of the interpreter places the error code in a global variable, before doing an .SM EMT . Thus the .SM EMT is used to compactly transfer control, but not for argument transmission. electively by date, or indiscriminately. .sh RESTOR Restore a dumped file system, or selectively retrieve parts thereof. .sh SU Temporarily become the super user with all the rights and privileges thereof. Requires a password. .sh DCHECK .sh ICHECK .sh NCHECK Check consistency of file system. .op Print gross statistics: number of files, number of directories, number of sdoc/2.10/px/pxin2.n 444 3 12 46437 3141164312 7055 .de mD .ta 8n 16n 24n .. .if !\n(xx .so tmac.p .nr H1 1 .if n .ND .NH Operations .NH 2 Naming conventions and operation summary .PP As discussed in section 1.10, the main interpreter loop decodes the first word of the interpreter instruction, using the first byte as an operation code, and places the second byte, the ``subop'', in register 3. The subop may be used to index the display, as a small constant, or to indicate one of several relational operators. In the cases where a constant is needed, but it is not small enough to fit in the byte sub-operator, a zero is placed there and the constant follows in the next word. Zero is easily tested for, as the instruction which places the subop in r3 sets the condition code flags, and this condition code is still available after the transfer to an operation code sequence. A construction like .DS .mD _OPER: \fBbne\fR 1f \fBmov\fR (lc)+,r3 1: ... .DE .IP is all that is needed to effect this packing of data. This technique saves a great deal of space in the Pascal .I obj object code. .PP Table 2.1 gives the codes used in the instruction descriptions to indicate the kind of inline data expected by each instruction. .KF .TS box center; c s l | l ci | aw(3.25i). Table 2.1 \- Inline data type codes _ Code Description = a T{ .fi An address offset is given in the word following the instruction. T} _ l T{ An index into the display, ready as an offset or a guaranteeably small integer, is given in the sub-operation code. T} _ r T{ A relational operator encoded as described in section 2.3 is given in the subop. T} _ s T{ A small integer is placed in the subop, or in the next word if it is zero or too large. T} _ v T{ Variable length inline data. T} _ w T{ A word value in the following word. T} _ " T{ An inline constant string. T} .TE .KE .PP Before giving a list of the machine opcodes, it is useful to note the naming conventions in the interpreter for typed operations. Machine instructions which have numeric operands use a simple and uniform naming convention in which a suffix on the root operation name indicates the type of operands expected. These are given in Table 2.2. Here the expression ``a above b'' means that `a' is on top of the stack with `b' below it. Short integers are 2 byte integers, and long integers are 4 byte integers. .TS box center; c s s c s s l l l c ap-2 a. Table 2.2 \- Operator Suffices .sp Unary operator suffices .sp .1i Suffix Example Argument type 2 NEG2 Short integer 4 SQR4 Long integer 8 ABS8 Real .sp .T& c s s l l l c ap-2 a. Binary operator suffices .sp .1i Suffix Example Argument type 2 ADD2 Two short integers 24 MUL24 Short above long integer 42 REL42 Long above short integer 4 DIV4 Two long integers 28 DVD28 Short integer above real 48 REL48 Long integer above real 82 SUB82 Real above short integer 84 MUL84 Real above long integer .sp .T& c s s l l l c ap-2 a. Other Suffices .sp .1i Suffix Example Argument types T ADDT Sets G RELG Strings .TE .PP We now give the list of machine operations with a reference to the appropriate sections and a short description of each. The character `*' at the end of a name indicates that all operations with the root prefix before the `*' are summarized by the one entry. .br .ne 15 .TS H box center; c s s lw(14) | lw(12) | lw(40) lp-2 | a | l. Table 2.3 \- Machine operations _ Mnemonic Reference Description = .TH .so fig2.1.n .TE .bp .NH 2 Basic control operations .LP .SH ABORT .IP This operator is used to halt execution immediately with an IOT process fault. It is used only for debugging .I px and is never generated by the translator .I pi. .SH HALT .IP Corresponds to the Pascal procedure .I halt ; causes execution to terminate with a post-mortem backtrace as if a run-time error had occurred. .SH BEG w1,w2," .IP Causes the second part of the block mark to be created, and .I w1 bytes of local variable space to be allocated and cleared to zero. Stack overflow is detected here. .I W2 is the first line of the body of this section for error traceback, and he inline string (length 8) the character representation of its name. .SH NODUMP w .IP Equivalent to .SM BEG , and used to begin the main program when the ``p'' option is disabled so that the post-mortem backtrace will be inhibited. .SH END .IP Complementary to the operators .SM CALL and .SM BEG , exits the current block, calling the procedure .I blkexit to flush buffers for and release any local files. Restores the environment of the caller from the block mark. If this is the end for the main program, all files are .I flushed, the profile data file is written if necessary, and the routine .I psexit which prints the statistics if desired (and does not return) is called. .SH CALL l,a .IP Saves the current line number, return address, and active display entry pointer .I dp in the first part of the block mark, then transfers to the entry point given by the relative address .I a , which is the beginning of a .B procedure or .B function at level .I l. .SH PUSH s .IP Clears .I s bytes on the stack for, e.g., the return value of a .B function just before calling the function. .SH POP s .IP Pop .I s bytes off the stack. Used, e.g., after a .B function or .B procedure returns to remove the arguments from the stack. .SH TRA a .IP Transfer control to relative address .I a as a local .B goto or part of a structured statement. .SH LINO s .IP Set current line number to .I s. For consistency, check that the expression stack is empty as it should be (as this is the start of a statement.) This consistency check will fail only if there is a bug in the interpreter or the interpreter code has somehow been damaged. Increment the statement count and if it exceeds the statement limit, generate a fault. .SH GOTO l,a .IP Transfer conrol to address .I a which is in the block at level .I l of the display. This is a non-local .B goto. Causes each block to be exited as if with .SM END , flushing and freeing files with .I blkexit, until the current display entry is at level .I l. .SH SDUP .IP Duplicate the one word integer on the top of the stack. This is used mostly for constructing sets. See section 2.11. .NH 2 If and relational operators .SH IF a .IP The interpreter conditional transfers all take place using this operator which examines the Boolean value on the top of the stack. If the value is .I true , the subsequent code is executed, otherwise control transfers to the specified address. .SH REL* r .IP These take two arguments on the stack, and the sub-operation code indicates which relational operation is to be performed, coded as follows with `a' above `b' on the stack: .DS .mD .TS lb lb c a. Code Operation _ 0 a = b 2 a <> b 4 a < b 6 a > b 8 a <= b 10 a >= b .TE .DE .IP Each operation does a number of tests to set the condition code appropriately and then does an indexed branch based on the sub-operation code to a test of the condition here specified, pushing a Boolean value on the stack. .IP Consider the statement fragment: .DS .mD \*bif\fR a = b \*bthen\fR .DE .IP If .I a and .I b are integers this generates the following code: .DS .TS lp-2w(8) l. RV4 \fIa\fR RV4 \fIb\fR REL4 \&= IF \fIElse part offset\fR .sp .T& c s. \fI\&... Then part code ...\fR .TE .DE .NH 2 Boolean operators .IP The Boolean operators .SM AND , .SM OR , and .SM NOT manipulate values on the top of the stack. All Boolean values are kept in single bytes in memory, or in single words on the stack. Zero represents a Boolean \fIfalse\fP, and one a Boolean \fItrue\fP. .NH 2 Rvalue, constant, and assignment operators .SH RV* l,a .IP The rvalue operators load values on the stack. They take a block number as a subop and load the appropriate number of bytes from that block at the offset specified in the following word onto the stack. As an example, consider .SM RV4 : .DS .mD _RV4: \fBmov\fR _display(r3),r0 \fBadd\fR (lc)+,r0 \fBsub\fR $4,sp \fBmov\fR sp,r2 \fBmov\fR (r0)+,(r2)+ \fBmov\fR (r0)+,(r2)+ \fBreturn\fR .DE .IP Here the interpreter first generates the source address in r0 by adding the display entry to the offset in the next instruction word. It then reserves a long integer space on the stack (4 bytes) and moves the data from the source onto the stack. The pseudo-operation ``return'' takes the interpreter back to the main interpreter loop. Note that the sub-operation code is already in r3 and multiplied by 2 to be immediately usable as a word index into the display. .SH CON* r .IP The constant operators load a value onto the stack from inline code. Small integer values are condensed and loaded by the .SM CON1 operator, which is given by .DS .mD _CON1: \fBmov\fR r3,-(sp) \fBreturn\fR .DE .IP Here note that little work was required as the required constant had already been placed in register 3. For longer constants, more work is required; the operator .SM CON takes a length specification in the subop and can be used to load strings and other variable length data onto the stack. .SH AS* .IP The assignment operators are similar to arithmetic and relational operators in that they take two operands, both in the stack, but the lengths given for them indicate first the length of the value on the stack and then the length of the target in memory. The target address in memory is under the value to be stored. Thus the statement .DS i := 1 .DE .IP where .I i is a full-length, 4 byte, integer, will generate the code sequence .DS .TS lp-2w(8) l. LV \fIi\fP CON1 1 AS24 .TE .DE .IP Here .SM LV will load the address of .I i, which is actually given as a block number in the subop and an offest in the following word, onto the stack, occupying a single word. .SM CON1 , which is a single word instruction, then loads the constant 1, which is in its subop, onto the stack. Since there are not one byte constants on the stack, this becomes a 2 byte, single word integer. The interpreter then assigns a length 2 integer to a length 4 integer using .SM AS24 \&. The code sequence for .SM AS24 is given by: .DS .mD _AS24: \fBmov\fR (sp)+,r1 \fBsxt\fR r0 \fBmov\fR (sp)+,r2 \fBmov\fR r0,(r2)+ \fBmov\fR r1,(r2) \fBreturn\fR .DE .IP Thus the interpreter gets the single word off the stack, extends it to be a 4 byte integer in two registers, gets the target address off the stack, and finally stores the parts of the value in the target. This is a typical use of the constant and assignment operators. .NH 2 Addressing operations .SH LV l,w .IP The most common operation performed by the interpreter is the ``lvalue'' or ``address of'' operation. It is given by: .DS .mD _LV: \fBmov\fR _display(r3),r0 \fBadd\fR (lc)+,r0 \fBmov\fR r0,-(sp) \fBreturn .DE .IP It calculates an address in the block specified in the subop by adding the associated display entry to the offset which appears in the following word. .SH OFF s .IP The offset operator is used in field names. Thus to get the address of .LS p^.f1 .LE .IP .I pi would generate the sequence .DS .mD .TS lp-2w(8) l. RV \fIp\fP OFF \fIf1\fP .TE .DE .IP where the .SM RV loads the value of .I p, given its block in the subop and offset in the following word, and the interpreter then adds the offset of the field .I f1 in its record to get the correct address. .SM OFF takes its argument in the subop if it is small enough. .SH NIL .IP The example above is incomplete, lacking a check for a .B nil pointer. The code generated would, in fact, be .DS .TS lp-2w(8) l. RV \fIp\fP NIL OFF \fIf1\fP .TE .DE .IP where the .SM NIL operation checks for a .I nil pointer and generates the appropriate runtime error if it is. .SH INX* s,w,w .IP The operators .SM INX2 and .SM INX4 perform subscripting. For example, the statement .DS a[i] := 2.0 .DE .IP with .I i a short integer, such as a subrange ``1..1000'', and .I a an ``array [1..1000] of real'' would generate .DS .TS lp-2w(8) l. LV \fIa\fP RV2 \fIi\fP INX2 8,1,999 CON8 2.0 AS8 .TE .DE .IP Here the .SM LV operation takes the address of .I a and places it on the stack. The value of .I i is then placed on top of this on the stack. We then perform an indexing of the array address by the length 2 index (a length 4 index would use .SM INX4 ) where the individual elements have a size of 8 bytes. The code for .SM INX2 is: .DS .mD _INX2: \fBtst\fR r3 \fBbne\fR 1f \fBmov\fR (lc)+,r3 1: \fBmov\fR (sp)+,r1 \fBsub\fR (lc)+,r1 \fBbmi\fR 1f \fBcmp\fR r1,(lc)+ \fBbgt\fR 1f \fBmul\fR r3,r1 \fBadd\fR r1,(sp) \fBreturn 1: \fBerror\fR ESUBSCR .DE .IP Here the index operation subtracts the constant value 1 from the supplied subscript, this being the low bound of the range of permissible subscripts. If the result is negative, or if the normalized subscript then exceeds 999, which is the maximum permissible subscript if the first is numbered 0, the interpreter generates a subscript error. Otherwise, the interpreter multiplies the offset by 8 and adds it to the address which is already on the stack for .I a , to address ``a[i]''. Multi-dimension subscripts are translated as a sequence of single subscriptings. .SH IND* .IP For indirect references through .B var parameters and pointers, the interpreter has a set of indirection operators which convert a pointer on the stack into a value on the stack from that address. different .SM IND operators are necessary because of the possibility of different length operands. .NH 2 Arithmetic operators .IP The interpreter has a large number of arithmetic operators. All operators produce results long enough to prevent overflow unless the bounds of the base type are exceeded. No overflow checking is done on arithmetic, but divide by zero and mod by zero are detected. .NH 2 Range checking .IP The interpreter has a number of range checking operators. The important distinction among these operators is between values whose legal range begins at 0 and those which do not begin at 0, i.e. with a subrange variable whose values range from 45 to 70. For those which begin at 0, a simpler ``logical'' comparison against the upper bound suffices. For others, both the low and upper bounds must be checked independently, requiring two comparisons. .NH 2 Case operators .IP The interpreter includes three operators for .B case statements which are used depending on the width of the .B case label type. For each width, the structure of the case data is the same, and is represented in the following figure. .sp 1 .KF .so fig2.2.n .KE .sp 1 .IP The .SM CASEOP case statement operators do a sequential search through the case label values. If they find the label value, they take the corresponding entry from the transfer table and cause the interpreter to branch to the indicated statement. If the specified label is not found, an error results. .IP The .SM CASE operators take the number of cases as a subop if possible. Three different operators are needed to handle single byte, word, and double word case transfer table values. For example, the .SM CASEOP1 operator has the following code sequence: .DS .mD _CASEOP1: \fBbne\fR 1f \fBmov\fR (lc)+,r3 1: \fBmov\fR lc,r0 \fBadd\fR r3,r0 \fBadd\fR r3,r0 \fBmov\fR r3,r2 \fBtst\fR (sp)+ 1: \fBcmpb\fR (r0)+,-2(sp) \fBbeq\fR 5f \fBsob\fR r3,1b \fBerror\fR ECASE 5: \fBsub\fR r3,r2 \fBadd\fR r2,r2 \fBadd\fR lc,r2 \fBadd\fR (r2),lc \fBreturn .DE .IP Here the interpreter first computes the address of the beginning of the case label value area by adding twice the number of case label values to the address of the transfer table, since the transfer table entries are full word, 2 byte, address offsets. It then searches through the label values, and generates an ECASE error if the label is not found. If the label is found, we calculate the index of the entry in the transfer table which is desired and then add that offset to the interpreter location counter. .NH 2 Operations supporting pxp .IP For the purpose of execution profiling the following operations are defined. .SH PXPBUF w .IP Causes the interpreter to allocate a count buffer with .I w counters, each of which is a 4 byte integer, and to clear the counters to 0. The count buffer is placed within an image of the .I pmon.out file as described in the .I "PXP Implementation Notes." The contents of this buffer will be written to the file .I pmon.out when the program terminates. .SH COUNT s .IP Increments the counter specified by .I s. .SH TRACNT w,a .IP Used at the entry point to procedures and functions, combining a transfer to the entry point of the block with an incrementing of its entry count. .NH 2 Set operations .IP The set operations set union .SM ADDT, intersection .SM MULT, and the set relationals .SM RELT are straightforward. The following operations are more interesting. .SH CARD s .IP Takes the cardinality of a set of size .I s bytes on top of the stack, leaving a 2 byte integer count. .SM CARD uses a table of 4-bit population counts to count set bits in each 4-bit nibble of each byte in the set. .SH CTTOT s,w,w .IP Constructs a set. This operation requires a non-trivial amount of work, checking bounds and setting individual bits or ranges of bits. This operation sequence is very slow, and motivates the presence of the operator .SM INCT below. The arguments to .SM CTTOT include the number of elements .I s in the constructed set, the lower and upper bounds of the set, the two .I w values, and a pair of values on the stack for each range in the set, single elements in constructed sets being duplicated with .SM SDUP to form degenerate ranges. .SH IN s,w,w .IP The operator .B in for sets. The value .I s specifies the size of the set, the two .I w values the lower and upper bounds of the set. The value on the stack is checked to be in the set on the stack, and a Boolean value of .I true or .I false replaces the operands. .SH INCT .IP The operator .B in on a constructed set without constructing it. The left operand of .B in is on top of the stack followed by the number of pairs in the constructed set, and then the pairs themselves, all as single word integers. Pairs designate runs of values and single values are represented by a degenerate pair with both value equal. A typical situation for this operator to be generated is .LS \fBif\fR ch \fBin\fR ['+', '-', '*', '/'] .LE .IP or .LS \fBif\fR ch \fBin\fR ['a'..'z', '$', '_'] .LE .IP These situations are very common in Pascal, and .SM INCT makes them run much faster in the interpreter, as if they were written as an efficient series of .B if statements. .NH 2 Miscellaneous .IP Other miscellaneous operators which are present in the interpreter are .SM ASRT which causes termination if the Boolean value on the stack is not .I true, and .SM STOI , .SM STOD , .SM ITOD , and .SM ITOS which convert between different length arithmetic operands for use in aligning the arguments in .B procedure and .B function calls, and with some untyped built-ins, such as .SM SIN and .SM COS \&. .IP Finally, if the program is run with the run-time testing disabled, there are special operators for .B for statements and special indexing operators for arrays which have individual element size which is a power of 2. The code can run significantly faster using these operators. .NH 2 Functions and procedures .IP .I Px has a large number of built-in procedures and functions. The mathematical functions are taken from the standard system library. The linear congruential random number generator is described in the .I "Berkeley Pascal User Manual" .IP The procedures .I linelimit and .I dispose are included here but currently ignored. One surprise is that the built-ins .I pack and .I unpack are here and quite complex, functioning as a memory to memory move with a number of semantic checks. They do no ``unpacking'' or ``packing'' in the true sense, however, as the interpreter supports no packed data types. actually given as a block number in the subop and an offest in the following word, onto the stack, occupying a single word. .SM CON1 , which is a single word instruction, then loads the constant 1, which is in its subop, ontdoc/2.10/px/pxin3.n 444 3 12 16451 3141164311 7046 .if !\n(xx .so tmac.p .nr H1 2 .if n .ND .NH Input/output .NH 2 The files structure .PP Each file in the Pascal environment is represented by a pointer to a .I files structure in the heap. At the location addressed by the pointer is the element in the file's window variable. Behind this window variable is information about the file, at the following offsets: .TS center; n l l. \-14 FBUF Pointer to i/o buffer \-12 FCHAIN Chain to next file \-10 FLEV Pointer to associated block mark \-8 PFNAME Name of file for error messages \-6 FNAME Name of associated file \-4 FUNIT Unit number packed with flags \-2 FSIZE Size of elements in the file 0 File window element .TE .PP Here .SM FBUF is a pointer to the input or output buffer for the file. The standard system routines .I getc and .I putc are used and provide block buffered input/output, with 512 characters normally transferred at each read or write. .PP The files in the Pascal environment, with the exception of .I input and .I output are all linked together on a single file chain through the .SM FCHAIN links. For each file the .SM FLEV pointer gives its associated block mark. These are used to free files at block exit as described in section 3.3 below. .PP The NAME and PFNAME give the associated file name for the file and the name to be used when printing error diagnostics respectively. Although these names are usually the same, .I input and .I output usually have no associated file name so the distinction is necessary. .PP The FUNIT word contains the unit number on which the file is open as well as a set of flags. These flags and their representations are: .TS center; l l l. EOF 00400 At end-of-file EOLN 01000 At end-of-line SYNC 02000 File window is out of sync TEMP 04000 File is temporary FREAD 02000 File is open for reading FWRITE 04000 File is open for writing FTEXT 08000 File is a text file; process EOLN .TE .PP The EOF and EOLN bits here reflect the associated built-in function values. TEMP indicates that the file has a generated temporary name and that it should therefore be removed when its block exits. FREAD and FWRITE indicate that .I reset and .I rewrite respectively have been performed on the file so that input or output operations should be attempted. FTEXT indicates the file is a text file so that EOLN processing should be done, with newline characters turned into blanks, etc. .PP The SYNC bit, when true, indicates that there is no usable image in the file buffer window. As discussed in the .I "Berkeley Pascal User's Manual," it is necessary, because of the interactive environment, to have ``input^'' essentially undefined at the beginning of execution so that a program may print a prompt before the user is required to type input. The SYNC bit implements this. When it is set, it indicates that before the element in the window can be used the Pascal system must actually put something there. This is never done until necessary. .NH 2 Initialization of files .PP All the variables in the Pascal runtime environment are cleared to zero on block entry. This is necessary for simple processing of files. If a file is unused, its pointer will be .B nil. All references to an inactive file are thus references through a .B nil pointer. If the Pascal system did not clear storage to zero before execution it would not be possible to detect inactive files in this simple way; it would probably be necessary to generate (possibly complicated) code to initialize each file on block entry. .PP When a file is first mentioned in a .I reset or .I rewrite call, a buffer of the form described above is associated with it, and the necessary information about the file is placed in this buffer. The file is also linked into the active file chain. This chain is kept sorted by block mark address, the FLEV entries. .NH 2 Block exit .PP When block exit occurs the interpreter must free the files which are in use in the block and their associated buffers. This is simple and efficient because the files in the active file chain are sorted by increasing block mark address. This means that the files for the current block will be at the front of the chain. For each file which is no longer accessible the interpreter first flushes the files buffer if it is an output file. The interpreter then returns the file buffer and the files structure and window to the free space in the heap and removes the file from the active file chain. .NH 2 Flushing .PP Flushing all the file buffers at abnormal termination, or on a call to the procedure .I flush or .I message is quite easy. The Pascal system simply flushes the file .I output and each file on the file chain which has the FWRITE bit set in its flags word. .NH 2 The active file .PP For the purposes of input-output, .I px maintains a notion of an active file. Each operation which references a file makes the file it will be using the active file and then performs its operation. A subtle point here is that one may do a procedure call to .I write which involves a call to a function which references another file, thereby destroying the active file set up before the .I write. For this reason, the active file is saved at block entry in the block mark and restored at block exit.\*(Dg .FS \*(dgIt would probably be better to dispense with the notion of active file and use another mechanism which did not involve extra overhead on each procedure and function call. .FE .NH 2 File operations .PP Files in Pascal can be used in two distinct ways: as the object of .I read, .I write, .I get, and .I put calls, or indirectly as though they were pointers. It should be noted that the second use as pointers must be careful not to destroy the active file in a reference such as .LS write(output, input\(ua) .LE or the system would end up writing on the input device. .PP The fundamental operator related to the use of a file is FNIL. This takes the file variable, as a pointer, insures that the pointer is not .B nil, and also that a usable image is in the file window, by forcing the SYNC bit to be cleared. .PP The rest of the uses of files and the file operations may be summarized by a simple example: .LS write('*') .LE which generates the code .LS \s-2UNITOUT\s0 \s-2CONC\s0 '*' \s-2WRITC\s0 .LE Here the operator .SM UNITOUT is an abbreviated form of the operator .SM UNIT which sets the active file, when the file to be made active is .I output. Thus to write a character to the file .I output it is only necessary to make .I output the active file, to place the character to be output on the stack, and to do a .SM WRITC write character operation. .PP Files other than .I output differ from this example only in that the operator .op UNIT is used preceded by an evaluation of the file variable expression. Thus .LS writeln(f) .LE produces .LS \s-2RV\s0 \fIf\fP \s-2UNIT\s0 \s-2WRITELN\s0 .LE .PP Write widths are easily handled here by packing information about the presence or absence of width specifications and their types into the sub-operation code and pushing the values of the write widths onto the top of the stack. .PP One other operation worth mentioning is .SM DEFNAME which is used to implement the program statement association of file names. .SM DEFNAME simply allocates the .I files (section 3.1) area for the given file as though it had been the object of a .I reset or .I rewrite call, initializing the FNAME field, but omitting the system interactions associated with and actual .I reset or .I rewrite. ds. .SH INCT .IP The operator .B in on a constructed set without constructing it. The left operand of .B in is on top of the stack followed by the number of pairs in the constructed set, and then the pairs themselvedoc/2.10/px/pxin4.n 444 3 12 5166 3141164311 7030 .if !\n(xx .so tmac.p .nr H1 3 .if n .ND .NH Conclusions .PP It is appropriate to consider, given the amount of time invested in rewriting the interpreter, whether the time was well spent, or whether a code-generator could have been written with an equivalent amount of effort. It is the author's belief that the existing code generator for the .SM PDP-11 .NL series in the .SM UNIX .NL C compiler could have been easily modified to produce good quality code for Pascal with not much more work than was involved in rewriting .I px. ...FS ..\*(dg With the release of Version 7 ...UX ..and the portable C compiler, an effort has begun to have ...I pi ..use this code generator. ..We hope to have such a system working by September, 1979. ..This would allow Pascal, \s-2FORTRAN\s0\-77 and C programs ..to run together on all systems which support the portable C compiler. ...FE .PP The author feels, however, that such an endeavor would not have been a good choice for an instructional environment. The speed of binary preparation would have been degraded, and the necessary loading and assembly processes would have slowed the overall compilation process to a noticeable degree. This effect would be further exaggerated by the fact that student users spend more time in compilation than in execution. Measurements over the course of a quarter at Berkeley with a mixture of students from beginning programming to a upper division compiler construction show that the amount of time in compilation exceeds the amount of time spent in the interpreter, the ratio being approximately 60/40. .PP A more promising approach might have been a throw-away code generator such as was done for the .SM WATFIV .NL system. Here the generated code runs at full machine speed, and compilation speed is still very fast. Any code generation scheme would be hindered, however, if it tried to implement 32 bit integers as implemented by the current Berkeley Pascal interpreter. Given the small number of registers available and the difficulty of some of the long integer operations it is not clear that reasonable code generation is possible using long integers. A 16 bit code generated Pascal would be much simpler, and several other such implementations exist. .PP All things considered, interpretation seems to be a reasonable choice for a student environment. While a code generator for Berkeley Pascal would be a useful addition to the system, the author believes that, for instructional use, a high-quality post-mortem and interactive debugging facility would be a more valuable addition to the system than a code generator. The interpreter would be easy to modify to accomodate such facilities. nvested in rewriting the interpreter, whether the time was well spent, or whether a code-generator could have been written with an equivalent amount of effort. It is the author's belief that the existing code generator for the .SM PDP-11 .NL series in the .SM UNIX .NL C compiler could have been easily modified to produce good quality code for Pascal with not much more work than was involved doc/2.10/px/tmac.p 444 3 12 2041 3141164310 6700 'if \n(FM=0 'so /usr/lib/tmac/tmac.s .if n .nr FM 1.2i .if t .tr *\(**=\(eq/\(sl+\(pl .bd S B 3 .de SM .if "\\$1"" .ps -2 .if !"\\$1"" \s-2\\$1\s0\\$2 .. .de LG .if "\\$1"" .ps +2 .if !"\\$1"" \s+2\\$a\s0\\$2 .. .de HP .nr pd \\n(PD .nr PD 0 .if \\n(.$=0 .IP .if \\n(.$=1 .IP "\\$1" .if \\n(.$>=2 .IP "\\$1" "\\$2" .nr PD \\n(pd .. .de ZP .nr pd \\n(PD .nr PD 0 .PP .nr PD \\n(pd .. .de LS \"LS - Literal display; ASCII DS .if \\n(.$=0 .DS .if \\n(.$=1 \\$1 .if \\n(.$>1 \\$1 "\\$2" .if t .tr '\'`\`^\(ua-\(mi .if t .tr _\(ul .. .de LE \"LE - End literal display .DE .tr ''``__--^^ .. .de UP Berkeley Pascal\\$1 .. .de PD \s-2PDP\s0 .if \\n(.$=0 11/70 .if \\n(.$>0 11/\\$1 .. .de DK Digital Equipment Corporation\\$1 .. .de PI .I pi \\$1 .. .de Xp .I Pxp \\$1 .. .de XP .I pxp \\$1 .. .de IX .I pix \\$1 .. .de X .I px \\$1 .. .de PX .I px \\$1 .. .if n .ds dg + .if t .ds dg \(dg .if n .ds Dg \*(dg .if t .ds Dg \u\s-2\*(dg\s0\d .if n .ds dd * .if n .ds Dd \*(dd .if t .ds Dd \u\s-2\*(dd\s0\d .if t .ds dd \(dd .if t .ds b \\fB .if n .ds b \\fI .nr xx 1 the necessary loading and assembly processes would have slowed the overall compilation process to a noticeable degree. This effect would be further exaggerated by the fact that student users spend more time in compilation than in execution. Measurements over the course of a quarter at Berkeley with a mixture of students from beginning programming to a upper division compiler construction show that the amount of time in compilation exceeds the amount of time spent in the intdoc/2.10/pxp/ 755 3 12 0 3461242074 5704 doc/2.10/pxp/makefile 444 3 12 41 3141164333 7416 pxpin: /usr/ucb/vtroff pxpin?.n makefilew*pcrt0.sw)pxpin0.nw(pxpin1.nw'pxpin2.nw&pxpin3.nw%stat.cnw$|tmac.pnwdoc/2.10/pxp/pcrt0.s 444 3 12 1770 3141164330 7201 .LS .ID .ta 8n 16n 24n .nf / / Modified C runtime startoff for pcx / with floating point interpreter / \&.globl savr5 \&.globl fptrap \&.globl _exit, _pxpbuf, _main start: / / If non shared text the following / three words will be the beginning of the core image / br 1f 0 / 0 = Non-shared text _pxpbuf 1: sys signal; 4; fptrap setd mov sp,r0 mov (r0),-(sp) tst (r0)+ mov r0,2(sp) jsr pc,_main cmp (sp)+,(sp)+ mov r0,(sp) jsr pc,*$_exit sys exit \&.bss savr5: .=.+2 \&.data / / If pcx is loaded with shared text -n / or separate i and d -i, then the / following three words will be the first / in the core image. Note that in this / case the pointer to the buffer will / be deceivingly large. The first word / of offset can be subtracted to correct / it without having to do the involved / calculations to really calculate the / address of the buffer correctly. We / can get away with this because we know the / buffer is not in stack space. / _info: _info 1 / 1 = pure text _pxpbuf .fi .LE f t .ds doc/2.10/pxp/pxpin0.n 444 3 12 5210 3141164330 7353  .so tmac.p 'nr H1 -1 .RP .TL Berkeley Pascal PXP Implementation Notes .br Version 1.1 \- April, 1979 .AU William N. Joy* .AI Computer Science Division .br Department of Electrical Engineering and Computer Science .br University of California, Berkeley .br Berkeley, California 94720 .AB .PP Berkeley Pascal is designed for interactive instructional use and runs on the \s-2PDP\s0 11 family of computers. ..A version of ...I pxp ..for the \s-2VAX\s0 11/780 is nearly complete. The Pascal execution profiler .XP can be used to generate restructured source program listings which are annotated with counts of the number of times each statement in the profiled parts of the program was executed for a particular run of the program. A number of options of .XP provide easy control over the parts of the program to be profiled. .Xp can also be used to produce restructured program listings, i.e. as a pretty-printer. .PP The .I "PXP Implementation Notes" describe the design decisions which lead to the present form of .XP and give details of the internal organization. The notes conclude with thoughts on similar facilities for future systems. .AE .if n 'ND .SH Introduction .PP This .I "PXP Implementation Notes" consists of four major sections. In the first section we outline the design considerations which led to the present .XP . Section 2 describes the implementation, with the comment reformatting process described separately in section 3. Comments on the viability of the current approach and the possible shape of future systems are given in section 4. .SH 2 Related .SM UNIX .NL Pascal documents .PP The Pascal translator .I pi shares with .I pxp a common parser and error recovery routines, which is described in [1]. .PP Pascal programs are currently interpreted by a program .X as described in the .I "PX Implementation Notes" [2]. An understanding of the particular details of the interpreter is not, however, necessary to understand the workings of .XP . .PP The .I "Berkeley Pascal User's Manual" [3] gives examples of using .XP and is the general reference guide for the system. .SH Acknowledgements .PP Ken Thompson wrote the first version of Berkeley Pascal without which none of this would have been. Chuck Haley collaborated with the author on the Pascal system development and his help in teaching the author the ins and outs of .UX was indispensable. The author's faculty advisor, Susan L. Graham, has been a source of much encouragement, support, and many helpful comments and suggestions. .FS * The financial support of an \s-2IBM\s0 Graduate Fellowship and the National Science Foundation under grants MCS74-07644-A03 and MCS78-07291 are gratefully acknowledged. .FE .bp ces through a .B nil pointer. If the Pascal system did not clear storage to zero before execution it would not be possible to detect inactive files in this simple way; it would probably be necessary to generate (possibly complicated) code to initialize each file on block entry. .PP When a file is first mentioned in a .I reset or .I rewrite call, a buffer of the form describdoc/2.10/pxp/pxpin1.n 444 3 12 46261 3141164325 7413 .if !\n(xx .so tmac.p .ND .nr H1 0 .NH Design Considerations .NH 2 Goals .PP As more fully described in [1], the goals of this Berkeley Pascal system are: .IP .RS .HP 1) To provide an easily usable teaching tool. .IP 2) To provide high-quality diagnostics to the user. .IP 3) To provide fast compilation at the expense, if necessary, of execution speed. .IP 4) To faithfully implement Pascal 6000\-3.4 as described in [5], and to be as compatible as possible with the .SM CDC implementation of the language. .RE .PP The Pascal execution profiler, hereafter referred to simply as .XP , results from the second design goal. The system, however, would benefit greatly from a more complete debugging facility. A design for an interactive and post-mortem debugger .I pdb for the system exists [6], but has not been implemented as of this writing. .NH 2 Placement of statement counters .NH 3 Basic considerations .PP Execution profiling is quite simple in concept. One merely places counters at a sufficient number of points in the program to allow the determination of the number of times each statement has been executed. Knuth, in [7], gives an algorithm for determining the minimum number of counters necessary to gather complete information. .PP Berkeley Pascal code is interpreted. Thus the addition of statement counters does not tend to have a significant degrading effect on the speed of execution. Even in heavily travelled loops, a statement counter is of low enough execution cost that techniques for, e.g., moving counters out of .B for loops were determined to be unnecessary. More complicated techniques such as determining the number of calls on a .B procedure or .B function by adding together the call counts for all calling sites would not materially decrease the time in execution and would add significantly to the complexity of the post-processing. It was thus decided not to do any counting optimization of this type. .NH 3 Goto statements .PP A more subtle consideration involved non-local .B goto statements. Without global analysis, which was not available in the one-pass compiler scheme being used, there is always the possibility that an arbitrary .B procedure or .B function call will not return to the calling site. To maintain accurate counts and a simple scheme when non-local .B goto statements are allowed would likely involve the placement of a counter after each such .B procedure or .B function call. The presence of these extra counters could easily multiply the number of counters required for typical programs by a factor of 5 or more. .PP As .B goto statements which cut across levels of control tend to be used only in infrequently occurring error situations, it was decided not to place counters to allow for non-local .B goto statements. Counters are not placed after each .B procedure and .B function call so, if a call fails to return, the counts will be inaccurate to the next sampling point. .PP An option to allow for correct counts in the presence of non-local .B goto statements was considered, but rejected. It was felt that such an option would rarely, or never, be used. It is the author's belief that summary data flow information indicating possible non-local control transfers would be necessary if the placement of counters were to be done appropriately. .NH 3 Counter placement rules .PP Thus, it was decided to place counters at the following program points: .IP .RS .HP 1) At the entry point to each .B function and .B procedure . .IP 2) In the .B then part of each .B if statement. The .B else part of each .B if statement is counted by subtracting the count for the .B then part from the pre-statement count. .IP 3) In the body of each .B repeat , .B while , and .B for loop. .IP 4) On each case of a .B case statement, with one counter for each group of case labels. .IP 5) After each .B goto statement. .IP 6) Before any statement which has a .B label preceding it. .RE .PP The counts are made completely accurate in the presence of local .B goto statements by placing an extra counter after each .B if , .B repeat , .B while and .B for statement which contains a .B goto . If there is no .B goto statement in such a statement, the count after the statement is taken to be the count before the statement. .PP It was later suggested to the author that one could count the frequency of each individual label in a .B case statement, rather than keeping one count for each group. This might provide useful information for some programs, but has not been implemented as an option. .NH 3 Partial program counting .PP A final consideration related to the placement of counters over parts of the program only. This would surely be desirable if gathering profile data were expensive. In this case a user might be able to restrict his cost by specifying which parts of his code were to be counted. After it was decided that the profile listing would be constructed by reparsing the source text of the program and combining it with the profile data, it seemed clear that the savings from such partial counting would not materially affect the overall cost of producing a profile. It was therefore decided to allow selectivity of profile output in .XP rather than selectivity of count gathering at compile or execute time. .NH 2 Producing the profile .PP Given the collected data in the form of an array of statement counts, one then wishes to produce a listing of all or part of the program with the count information appended in an easily understandable form. It seems clear that a system which presents the count information to the user with associated source text from his program will be superior to one which merely produces a table of counts for identified points in the program. .PP Satterthwaite's .SM "ALGOL W" debugging system [8] produced such a listing by .I unparsing a saved internal form of the source program. In his system this internal form was also used to provide symbolic flow-trace information at run time. As we did not propose to do symbolic statement tracing in our debugger design [6], there was no need for an internal form of the source program to be available at run time. Given the fact that our operating system is primarily disk-space limited, it was decided that reparsing the source text of the program to produce the execution profile was a reasonable approach. This allows the profiler to use the existing source text of the program without requiring a potentially large intermediate form. This also allowed the profiler to use the existing parser and to receive as its input a well defined parse tree as described in [1]. .PP Thus the execution of a program normally produces a file named .I pmon.out which contains an array of counters. The code generated need contain only the instructions required to prepare these counts. This solution is very conservative of disk storage resources. .NH 2 Abnormal termination .PP In cases where the execution of a Pascal program terminates abnormally, or has to be terminated due to apparent infinite looping, it is often desirable to obtain a profile to help discern the cause of the error. The Pascal runtime system will create the .I pmon.out file in these cases, and profiling is still possible.\u\s-2\*(dg\s0\d .FS \*(dg If the Pascal runtime system terminates due to a fault, either because of a bug in the runtime system, a severe misuse of pointers, or an untested out-of-range subscript, a core-image file will be produced. It is possible, using a .XP option, to extract the profile information from this core image, allowing profiling in this case also. .FE It should be noted that, in general, the information so gathered is not as usable as that which could be garnered easily by using a debugger such as .I pdb [6], since variable values are not available. .PP A final point to be noted is that the counts are inaccurate near the suspended control points whenever the program terminates abnormally. This is explained more fully in [3]. The complete debugging system design included the marking in the profile of the point of abnormal termination in a fashion similar to that used by Satterthwaite [9], but this has not yet been implemented. .NH 2 Formatting of the program .PP As already noted, easy comprehension by the user of the the profile produced by .I pxp requires that the profile be in a readable form. One possibility would be an annotated source listing, using the form of the original source text. This has the advantage that the listing is in a form familiar to the user. A major disadvantage in this approach is the fact that the format of the source may not leave room for easy placement of all of the profile information. .NH 3 Pretty printers .PP There have been a number of systems designed or constructed which provide automatically restructured listings of programs [10] [11] [12] [13]. Such programs have often been called ``pretty printers.'' It is not hard to see that the production of a readable profile from a well-structured listing would not be difficult given the framework of a pretty printer. It was therefore decided to produce such a restructured listing and to annotate it with the profile information. An option to use the execution profiler as a pretty printer was also provided. .NH 3 Comments and output compression .PP One problem with the evolving approach was the treatment of comments. The interface from the parser to the semantic routines in the compiler, which was the available and highly suitable framework, had no provision for the placement of comment text anywhere in the parse tree. For the purposes of profiling this could be easily tolerated. An effort can be made when profiling to suppress output which is not absolutely necessary in the profile. In particular, comments, declarations, and the bodies of unexecuted procedures and functions could be normally suppressed. In fact, early versions of .XP suppressed all of these. In the current implementation, however, the default is that only the bodies of unexecuted functions and procedures are suppressed. All such suppression is controllable through options as described in [3]. .PP The design of the comment formatting facility for .XP is presented in section 3. The author feels that significantly better approaches to program maintenance and formatting are possible in future systems. Some possibilities are discussed in section 4. .NH 3 Bushy if\-then\-elses .PP Many different formats for presenting Pascal structure are possible. The author's personal programming style largely determined the structure of programs produced by \fIpxp\fR. In particular, the author was bothered by one feature of other ``pretty printers.'' Many other pretty printers present a ``bushy'' .I "if\-then\-else" construct in a fashion similar to the following: .LS \*bif\fR condition1 \*bthen\fR statement1 \*belse\fR \*bif\fR condition2 \*bthen\fR statement2 \*belse\fR ... .LE This could be termed ``wandering across the page.'' .PP In structured programs, especially in a language which contains no .B return or other escape statement, it is easy to get ``buried'' in many levels of conditions. While the merits of escape-less programming are debatable, it seems important to present the structure of the above construct as clearly as possible. The author feels that a more appropriate way to present this statement is often the following: .LS \*bif\fR condition1 \*bthen\fR statement1 \*belse\fR \*bif\fR condition2 \*bthen\fR statement2 \*belse\fR ... .LE .NH 3 Begin\-end pairs and well\-bracketing .PP Another aspect of modern programming languages which are not .I "well-bracketed" is the presence of .I "begin\-end" pairs, which, if mismatched, can cause problems, especially if they escape detection at compile time. With an automatically reformatted listing, the user no longer needs to worry that his listing may textually represent the structure of the program in a way different from the true structure. Given this situation, the author feels that the words .B begin and .B end convey no information to the user that is not already reflected in a more convenient form by the textual indentation. .PP Thus in considering how to represent the ``bushy'' .I "if\-then\-else" when .I statement1 and .I statement2 are .I "begin\-end" blocks and choosing between: .LS \*bif\fR condition1 \*bthen\fR \*bbegin\fR statement list 1 \*bend\fR \*belse\fR \*bif\fR condition2 \*bthen\fR \*bbegin\fR statement list 2 \*bend\fR .LE and .LS \*bif\fR condition1 \*bthen\fR \*bbegin\fR statement list 1 \*bend\fR \*belse\fR \*bif\fR condition2 \*bthen\fR \*bbegin\fR statement list 2 \*bend\fR .LE the author chose the latter, which he prefers. .PP It should be noted that this is essentially the syntax of the language .SM ALGOL 68 .NL [14], and is similar to Wirth's .SM MODULA .NL [15], e.g.: .LS \*bif\fR condition \*bthen\fR statement list 1 \*belsif\fR condition2 \*bthen\fR statement list 2 \*bfi\fR .LE .NH 3 Indenting of structured levels .PP Another issue of style arises in choosing how many spaces to indent each structured statement of the source text. While 8 spaces per level is very convenient since one level then corresponds to one .SM ASCII .NL tab character, 4 spaces seemed to work best with the execution profile when using an adaptation of the format of Satterthwaite [8]. Thus, options were provided to allow a level to be defined as any small number of column positions, with 4 columns the default. .NH 3 Expressions .PP The printing of expressions presented yet another problem. It was felt that a format which reflected the true structure of an expression was best. For this reason, a fully parenthesized expression format was first tried. This turned out to be a very poor choice as it made complicated expressions very hard to read. The author then implemented a minimal-parenthesis format as the default with full parenthesization as an option. .PP It is probably true that many users would prefer to have their parenthesization preserved even when the parentheses deleted are, in fact, unnecessary. This would be even more true in a language which had a large number of precedence levels with a large number of operators. It is not as necessary in Pascal since there are only a small number of levels here, but such an option would have been useful in any case. This option is not, however, included in the current \fIpxp\fR. .NH 3 Procedures and functions .PP It was decided that .B procedure and .B function definitions which are nested within one another would be indented one structured statement level by default to improve readability. An option was included to omit this indenting if desired. .PP The .B end keyword of each .B procedure and .B function is labelled with the name of the .B procedure or \*bfunction\fR. This is done also for the opening .B begin if any nested .B procedure or .B function definitions occur within the .B procedure or \*bfunction\fR. .NH 3 Case statements .PP When first designing the statement formats, the author felt that the statements in a .B case statement should be formatted so that cases with one and cases with more than one statement would line up for easy readability. At the time, 8 spaces per level was the default format and the choice was between: .LS \*bcase\fR ch \*bof\fR \(aa \(aa: col := col + 1; tab: col := (col + 8) \*bmod\fR 8; \(aa*\(aa: \*bbegin\fR tok := star; tokval := line \*bend\fR \*bend\fR .LE and .LS \*bcase\fR ch \*bof\fR \(aa \(aa: col := col + 1; tab: col := (col + 8) \*bmod\fR 8; \(aa*\(aa: \*bbegin\fR tok := star; tokval := line \*bend\fR \*bend\fR .LE .PP With the eventual choice of 4 spaces per structured level as the default indentation, the difference between the corresponding formats is slight. In retrospect, this was not necessarily sufficiently valuable to justify the amount of time spent on the .B case statement format, as different strategies were needed for each indenting option, and the format was optimized to be ``pretty'' in each case subject to the alignment constraint. Thus the current .XP uses only the simpler first strategy. .NH 3 Labels and miscellania .PP Labels are place on a separate line, aligned with the header line of the containing .I program, .I procedure or .I function. Placed this way, they are easy to locate. .PP In general, the text editing facilities on the .SM UNIX .NL system are geared toward line oriented editing. Thus it is extremely convenient to have statements on single lines. For this reason the format of the programs produced by the pretty printer gives section keywords like .B var and .B type alone on a line. In this way deleting the first declaration of such a section is made easier \- there is no need to split the keyword away from the first declaration. .PP Other options, such as an option to underline all of the keywords in the program, are provided by .XP . These are detailed more fully in [3]. .NH 3 Summary .PP In summary, the profiler format reflects the taste of the author in Pascal formatting at the time this program was written. It largely succeeds in producing readable Pascal texts. .PP Treatment of long statements and placement of multiple statements per line are desirable additions and a design for some of these is described in section 2. They were omitted from the original design only because the author was not initially sure of a reasonable way to proceed in these areas, and felt that these were more important in the context of a pretty printer. .Xp was intended primarily as an execution profiler. Even without the features of section 3, earlier versions of .XP were useful in showing students who had trouble formatting their programs one acceptable way of writing Pascal. .NH 2 Profile Data Presentation .PP The basic format for the profile is essentially that of Satterthwaite [8] [9]. Examples are given in [3]. The following pieces of information are included with the profile in addition to the basic count information. .IP .RS .HP 1) The version number and date of the instance of .XP which produced the profile. .RE .IP .RS .HP 2) The version of the program being profiled (taken to be the time at which the file it is contained in was last modified.) .IP 3) The time at which the profile data was gathered. .RE .LP This information serves to identify uniquely the program involved. .NH 3 Count interpretation .PP The algorithm for count interpretation is given in [3] and is essentially the same as that given by Satterthwaite in [9]. .NH 3 Data compression .PP Two options for compressing profile data are available. One gives a table of the procedures and functions with their activation counts. This requires only a very small amount of data even for large programs. .PP More easily readable than a simple table are profiles of parts of a program. These can be obtained without modifying the source text. One can give a list of .B procedure or .B function names on the command line, and profiles will be enabled for these and their contained procedures and functions only. .PP This ability to extract selective information and to be able to do it without modifying the source code is critical. Editing the source code (at least twice!) for each profiling pass would not only be tedious, but could easily be done incorrectly. The command line syntax is simple and relatively foolproof. This feature is fully described in [3]. .bp rom the parser to the semantic routines in the compiler, which was the available and highly suitable framework, had no provision for the placement of comment text anywhere in the parse tree. For the purposes of profiling this could be easily tolerated. An effort can be made when profiling to suppress output which is not absolutely nedoc/2.10/pxp/pxpin2.n 444 3 12 107775 3141164323 7442 .if !\n(xx .so tmac.p .ND .nr H1 1 .NH Implementation .PP .Xp is written in the .UX systems programming language C. The structure of .XP is very similar to that of the Pascal translator .PI . In fact .XP was, until recently, a conditional compilation of .PI . .Xp uses the same parser and scanner as .PI ; these are described in [1]. .PP The major changes to the compiler in writing .XP were the rewriting of the semantic routines of the compiler and the addition of three ``clusters'' of routines; one for profiling, one for the production of the restructured program listing, and one for the processing of comments. These ``clusters'' are written with local data bases, are largely independent of the other parts of the program, and consist of a large number of small, related routines. By structuring the program in this way, functional independence is obtained. Clusters are organized separately from the rest of the program, and accessed through a high-level and abstract interface. The concrete implementation of a cluster is not fixed by these external specifications, and could be changed without the need to rewrite any other part of the program provided that the routines then implemented a suitable interpretation of the same abstraction. This organization provides a powerful and convenient decomposition of the profiling process. .PP The print cluster routines are kept in the file .I pp.c. Their basic function is to provide an interface to a high-level printing automaton, with primitives such as ``print keyword'' and ``print number.'' Information about the macro- and micro-structure of the output is passed to the routines implicitly by calling the appropriate entry points. Thus, after a statement is processed, the routines are informed that an ``item'' is finished so that an intelligent decision can be made about where to place the statement. Similarly, when processing a list of items such as a constant type declaration, the print cluster is given information as to where the ``left bracket,'' i.e. `(' occurs, where each ``separator,'' i.e. `,' occurs, and, when the final `)' occurs, this is noted as a ``right bracket.'' With this information, an implementation of the printing cluster can be provided which sensibly divides long structured constructs even though it has no knowledge of the high-level language structure of its input. .PP The profile cluster, which is kept in the file .I pmon.c, has a number of related functions. Initially, it deals with the problem of extracting the count information from the profile data file. If the execution of the interpreter terminated abnormally, then the data must be extracted from the .I core process image file. There is an image of the profile data file in the .I core image. To extract the data from .I core, .I pxp need only determine the offset of this image in the file. .PP After extracting the data from the file, the profile cluster provides operations to return successive counters from the count buffer. In addition it builds the data structure for storing the information used to print the optional table summarizing .B procedure and .B function invocation counts. Other functions provided include saving and restoring counts before and after structured statements, determining when embedded .B goto statements will have caused extra counts to be generated, generating pseudo-counters for the .B else parts of .B if statements, and controlling when the counts are to be printed in the listing by keeping track of whether each count has been printed. All manipulation of counts and counters is handled by these routines, and focuses on a single counter structure called .PX which contains the current count. .PP In section 2.1 the profile data format and the process of getting the data from the profile data file or the .PX process .I core image are discussed. Section 2.2 gives the data and control structures of the profiling and printing clusters, and section 2.3 describes the tree walk at the function level, and at illustrative parts of the statement and expression levels. The implementation description concludes in section 2.4 with a note on the handling of multi-file programs. .NH 2 External data structures .PP The following sections deal with the recovery of the profile data. The simplest case, that of normal termination, is dealt with in section 2.1.1. The remaining sections deal with the handling of .I core process image files. These are likely to be of interest to system programmers only. .NH 3 Format of the profile data file .PP The .I pmon.out data file, is normally written by the Pascal system at the end of profiling execution. The record structure of the header at the beginning of the file is as follows: .LS .ta 8n 16n 40n \*bstruct\fP { \*bint\fP magic; /* 0426 */ \*bint\fP magic2; /* 0 */ \*blong\fP proftime; /* Time profiled */ \*bint\fP cnt; /* # statement cntrs */ \*bint\fP pfcnt; /* # procedures+functions + 1 */ } header; .LE Each counter is a long integer so the rest of the file is essentially an array: .LS \*blong\fP counts[header\*b.\fPcnt]; .LE .PP As an error check, .XP first insures that the first word is 0426 and the second is a 0. If this is true, and the size of the remainder of the file is the size of the .I counts array as implied by the number .I cnt in the header, then profiling can proceed. If not, then the specified profile data file has a bad format, and .XP reports this fact. .NH 3 Core data files .PP .Xp has the capability to extract the profile information from the .I core data file dumped by an abnormal .PX termination. This is greatly simplified by the fact that there is, in the core image, an exact replica of the .I pmon.out file which would have been written at normal termination. In order to extract the profile data, it is only necessary to locate this buffer. .PP The first 1024 bytes of the core image file is a copy of the system's per-user data for the process, including the registers as they were at the time of the fault. The remainder of the file represents the actual contents of the user's core area when the core image was written. If the text segment of the process was write-protected and shared, it will not be present; otherwise the entire address space will have been dumped. .NH 3 Shared text programs .PP It is possible in .UX for the text image of a program to be shared by all of the persons who invoke it. The instructions will be write protected, and each process which executes this .I pure text will have only a data area, sharing one common text. Thus, when such a process is swapped out, only its data area need be swapped. The text space can always be abandoned and read in from external storage when needed, as it cannot have changed. .PP When a core image is dumped, the text space is not dumped if the process was running as shared text. This is the situation with the installed version of .PX . The disadvantage of shared text is that breakpoint debugging is impossible in this case. For this reason .X is most often debugged as non-shared text. It is desirable, therefore, to have .XP be able to extract data correctly in either case. .PP The important fact here, which allows a number of simplifications to the extraction method, is that the non-stack data space of the process is dumped immediately after the system area. If the text space was not ``shared,'' then the first word dumped will have been location 0 in the process address space, otherwise it will have been the first data word, as the text of the process appears first in the process space. .NH 3 Extraction methods .PP The structure needed to navigate in the .I core image is the .I pcx information structure\u\s-2\*(dg\s0\d, which has the following format: .FS \*(dg .I Px was previously .I pcx hence the name of this structure .FE .LS \*bstruct\fR { \*bchar\fR *buf; \*bint\fR cnt; } pcx; .LE The .I buf pointer here points to the image of .I pmon.out in core, and is a memory address. The .I cnt gives the size of this image, and is not currently used by .XP as the size is determined from information in the image itself. If the .I buf pointer is 0, i.e. a .I NIL pointer, then .PX was not gathering profile data in the execution which abnormally terminated. .PP To locate this structure, the runtime start up routine for the interpreter was modified from the standard C start up to be as given in the following figure. .so pcrt0.s This runtime start up is structured so that it is possible to determine, from the first three words after the system area, whether the process was executed as shared text, and the offset of the .PX structure in the file. If the second word here is a 0, then this can only be a non-pure core image; if it is a 1 then this can only be a pure core image. If it is neither then this is not a .PX core image. .PP If the core image is pure, the first word dumped of the process was not at location 0 in the process data space. In this case, however, the runtime start up is set up so the first word contains its address in memory. Thus it is possible to can convert the third core image word, which is the index into memory, into an index into the core image by subtracting this offset from it. In this way, .XP can find the .I pcx structure in the .I core image. .PP As noted above, if the .I buf pointer is NIL, then .PX was not gathering profile data and an appropriate diagnostic will be printed. Otherwise, the .I buf pointer is offset by subtracting the first word after the system area in the .I core image if the process was pure, .XP seeks to the implied location and a routine common to the .I core and .I pmon.out profile data gathering routines .I pmread is called. The only notable difference is that after calling .I pmread when processing a .I pmon.out file, .XP checks that all the data on the file is exhausted. This is not done when reading a .I core data file. .PP If any of this seeking or reading terminates abnormally a .I "bad format" diagnostic is given. .NH 2 Internal data structures .NH 3 External data copies .PP The following data items are kept internally after being read from the .I pmon.out or .I core data file. They are available only by using the routines in the cluster in the file .I pmon.c . .PP The integer .I zcnt gives the total number of counters, the integer .I zpfcnt the total number of procedures and functions. The pointer .I zbuf is (effectively) a dynamic array of long integers representing the profile counts. In addition, the external variable .I ptvec contains the internal representation of the time the profile was made. .NH 3 Profile cluster data structures .PP There are two major profile cluster structures. The first structure is the primitive unit for storing a piece of count information and is given by: .LS \*bstruct\fP pxcnt { \*blong\fP ntimes; \*bint\fP counter; \*bint\fP gos; \*bint\fP printed; }; .LE Here .I ntimes is the actual count data. The variable .I counter gives a unique identifying tag to this structure, .I gos is the number of gotos which had been encountered when this counter was created, and .I printed is actually a Boolean value indicating whether the counter is considered to have been printed for the purposes of the profile. .I Counter may actually be an index into the array of values read in from .I pmon.out , or it may be a negative number indicating that it is a counter which was generated by calculations, e.g. for an .B else part of an .B if statement. Other uses of this structure will be described below. .PP The other major structure which records information for each .B procedure or .B function for the summary table. Its format is: .LS \*bstruct\fP pftab { \*blong\fP pfcnt; \*bint\fP pfline; \*bchar\fP *pfname; \*bint\fP pflev; } *zpf; .LE The field .I pfcnt gives the invocation count for each routine, .I pfline is the approximate source program line number for the routine, .I pfname points to the character string name of the routine, and .I pflev gives the nesting level of the routine so it is possible to print the table with nesting indicating structure. The variable .I zpf is actually a dynamic array holding these counters. .NH 3 The profile cluster primitives .PP The following are the primitive operations of the profile cluster kept in the source file \fIpmon.c\fP. They deal in particular with one special counter structure .I px which holds the current count information as processing progresses. .IP .RS .HP "\*blong\fP nowcnt()" .br Returns a \*blong\fP integer which is the current count. .RE .IP .RS .HP nowcntr() .br Returns an integer uniquely identifying the current counter. .IP "\*blong\fP cntof(pxc)" .HP "\*bstruct\fP pxcnt *pxc;" .br Returns the \*blong\fP integer .I count associated with the structure addressed by \fIpxc\fP. .IP "setcnt(l)" .HP "\*blong\fP l;" .br Makes the current counter have count \fIl\fP. A new, unique counter is generated for this purpose. This is used, e.g., to assign counts to .B else parts of .B if statements. .IP "savecnt(pxc)" .HP "\*bstruct\fP pxcnt *pxc;" .br Saves the information associated with the current count .I px in the given structure. .IP "rescnt(pxc)" .HP "\*bstruct\fP pxcnt *pxc;" .br The inverse of .I savecnt setting the fields of .I px from the given structure. .I Rescnt also returns non-zero exactly when there were embedded gotos. .IP "getcnt()" .br Takes the next counter from the .I pmon.out or .I core data and places it and associated information into \fIpx\fP. The fact that there are less counters in the file than required by the supplied program is diagnosed as a ``Counter mismatch'' here. .IP "cnttab(s, no)" .HP "\*bchar\fP *s;" .HP "\*bint\fP no;" .br Records the current count as being that of a .B procedure or .B function with number \fIno\fP. The number of procedures and functions are also counted here so they can be checked for consistency at the end of processing. .RE .NH 3 Profile-printing cluster interface .PP The following routines, which are part of the .I pmon.c cluster, interface to the printing cluster, and are used to control the annotation of the program listing with profile data. .IP .RS .HP "unprint()" .br Causes the current counter to become logically ``unprinted'' so that it will be printed again. Used, e.g., after restoring a count saved before a loop to force it to be printed again. .RE .IP .RS .HP "baroff()" .br Turns the printing of the bar `|' in the profile off. .IP "baron()" .br The inverse of \fIbaroff\fP. .IP "shudpcnt()" .br Returns an integer indicating the type of annotation of the current line which is desired. A return value of 0 indicates that only the bar `|' is to be printed, a value of 1 that the current count and the bar `|' are to be printed, and a value of -1 indicates that only white space is to be printed. A flag set by the routines .I baroff and .I baron is inspected here. If the bar `|' to be printed is printed, it is noted that the current counter was printed so the count will not be printed again. .RE .NH 3 The printing cluster .PP The file .I pp.c contains the cluster which performs the nitty-gritty business of preparing the output to be printed. It was the author's intention, when he wrote the program, to pass sufficient information to this cluster to allow it to do the job of breaking up long statements and of placing multiple statements on each line. This has not been implemented yet. The description of how the routines of this cluster work together to produce the profile is deferred to a later, higher level view. .PP This cluster currently has a very minimal set of data structures. These structures would expand greatly if the statement folding and multiple statement placement were implemented. As it stands the input is interpreted only in a very simpleminded way. For this purpose it is only noted whether anything is being printed at all, indicated by the flag \fInopflg\fP, which if non-zero indicates that no printing is to occur, and some information about the way in which the listing is to be indented. This is contained in an array giving the indenting in spaces for each of three levels, i.e.: .LS \*b#define\fP DECL 0 \*b#define\fP STAT 1 \*b#define\fP PRFN 2 \*bint\fP pplev[3]; .LE .PP These levels have rough interpretations as follows. The white space generated at the very left by the indenting of nested .B procedure and .B function declarations is assigned to \fIpplev[PRFN]\fP, the white space generated in declaration parts by structured declarations such as records to DECL, and the white space generated by indenting of structured statements to STAT. .PP The white space is dispersed on the line, separating the left margin, labels, the profile information, and the program text graphically given below. .DS C line# PRFN label: STAT 999.---| DECL text .DE Thus by indenting in the DECL part deeper text nesting can be shown without the bar wandering to the right, and when indenting in the STAT part the bar is moved over. Similarly, the option to indent nested procedures and functions is trivially handled by indenting in PRFN. .NH 3 Printing cluster primitives .PP There are two kinds of routines in the printing cluster. One kind deals with printing the various kinds of tokens in Pascal programs, e.g. keywords, strings, etc. The other set of routines deals with the specifics of printing the profile, i.e. turning printing on and off, indenting, and the nasty details like the placement of labels. .IP .RS .HP "ppkw(s)" .HP "\*bchar\fP *s;" .br Prints the character string representing the keyword. Underlining and overstriking of keywords is also handled. This routine facilitate the suppression of blank lines at the beginning of partial profiles, setting a flag the first time it prints a keyword. Since any solid output always begins with a keyword, .I ppnl refuses to print a newline until a keyword is printed. .IP "ppid(s)" .HP "\*bchar\fP *s;" .br Prints the identifier .I s or `{identifier}' if .I s is null because of a syntax error. .IP "ppop(s)" .HP "\*bchar\fP *s;" .br Prints operators. .IP "ppnumb(s)" .HP "\*bchar\fP *s;" .br Prints numbers. .IP "ppstr(s)" .HP "\*bchar\fP *s;" .br Prints strings, dealing with doubling of the string metacharacter. .IP "pplab(s)" .HP "\*bchar\fP *s;" .br Prints a label. .IP "ppbra(s)" .HP "ppket(s)" .HP "ppsep(s)" .HP "\*bchar\fP *s;" .br These routines are used to indicate the recursive structure of the input at the microscopic level. Thus, when printing out the argument list to a .B procedure or .B function, the opening `(' would be printed with \fIppbra\fP, each separating `,' with \fIppsep\fP, and the closing `)' with \fIppket\fP. This would, conceivably, allow this cluster to break the output sensibly to conform with the nature of the output medium without having to deal with the passed-through data at a more difficult macroscopic level. .IP "ppspac()" .HP "pptab()" .HP "ppitem()" .HP "ppnl()" .br These routines are all used to put separation into the output stream. In the initial design, the difference between the routines .I ppitem and .I ppnl was that .I ppnl would always force a new-line, while .I ppitem separated major units such as statements, but didn't require the following statement to start on a new line, leaving the possibility that it be placed on the same line. In the current implementation, however, both .I ppitem and .I ppnl force the output to be on a new line. Note that forcing the output to a new line does not force the leading white space to be printed! .RE .PP The utility routines which don't deal directly with the printing of the actual program text follow. .IP .RS .HP "setprint()" .br Is called at the beginning of each .B procedure or .B function body and examines the global environment and option flags to decide whether that routine should be printed in the profile. .RE .IP .RS .HP "printon()" .br Turns the printing on. If profiling is notoccuring, a summary table is desired then this actually turns the printing off! If neither profiling or a summary table is being producd, then this call has no effect. .IP "printoff()" .br Turns the printing of the profile off. .IP "indent()" .br If printing, ask .I linopr to print the line number. If producing a profile (rather than just a pretty-print) indent over .I pplev[PRFN] + pplev[STAT] .R spaces, and then, depending on the result of a call to .I shudpcnt print either a count, some dashes and a bar, just a bar, or spaces. Finally, indent .I pplev[DECL] more spaces and return. .IP "dashes(c)" .HP "\*bchar\fP c;" .br Spaces over an amount determined by the indenting level using the character given. .IP "indent1(in)" .HP "\*bint\fP in;" .br Actually advance the indent by .I in spaces. If pretty-printing it is safe to optimize the output by producing tabs, otherwise spaces must be used. .IP "linopr()" .br Prints the line number if required. .IP "indentlab()" .br Indents for a label print, .I pplev[PRFN] spaces using \fIindent1\fP. .IP "ppgoin(lv)" .HP "ppgoout(lv)" .br These routines each take one of PRFN, STAT or DECL and increase or decrease the indentation at that level respectively. .RE .NH 2 Producing the profile .PP It should be obvious from the discussion above, that little difference can be discerned at the top level between producing a profile and prettyprinting. When prettyprinting, a large number of routine calls return without doing any real work. .PP The production of the profile is discussed at each of four levels. The first level is the main routine and option processing. This is discussed only to give an outline of the work done here. .PP The second level is the level of procedures and functions and involves such considerations as the .B z command line option with list of .B procedure and .B function names, forward declarations, and the recording, saving and restoring of count information. .PP The third level is that of individual statements, and the final level is that of expressions. These levels are illustrated with actual code to make the discussion more concrete. .NH 3 Main routine and option processing .PP The main routine sets up the default options such as setting the indenting to 4 spaces and turning on nested .B procedure and .B function indents. It then examines the arguments and, importantly, sets the variable .I profile if profiling and .I table if producing a table of procedure and function counts. .PP If a list of .B procedure and .B function names is given it is saved as referenced by the variables .I pflist and .I pflstc for examination by the routine .I inpflist which is called by routines at .B procedure and .B function entry and exit. .PP After processing all the options, the main routine makes a call to the .I pmon.c cluster to get the profile data if appropriate. It sets up the input and does some special processing for processing of .I include files as described further in section 2.4 below. It finally calls the parser which completes the processing of the profile. .NH 3 Procedure and function level processing .PP The .B procedure and .B function level processing routines are contained in the file \fIfdec.c\fP. The routines here and their functions are: .IP .RS .HP "funchdr(r)" .HP "\*bint\fP *r;" .br Called with a tree node representing the initial declaration of a function or procedure, e.g.: .LS \*bfunction\fP sine(a: angle): \*breal\fP; .LE this routine first determines if the routine is in the list of procedures and functions given on the command line. If it is, then the .B z option value is saved on a stack, and then turned on. It then gets the counter associated with the procedure header and calls a routine in the print cluster to determine whether this routine should be printed or not. .IP It then saves the count information for this routine at its level in a global array of .I pxcnt structures called \fIpfcnts\fP. This counter will be restored later when the body of the routine is encountered. The printing of the header is also processed here, but this is similar to other processing to be described later. This printed header is indented if nested definitions are being indented, to be unindented after completing the printing of the header. .RE .IP .RS .HP "funcfwd(fp)" .HP "\*bchar\fP *fp;" .br This routine prints the keyword .B forward indented an appropriate amount. It returns its argument. .IP "funcbody(fp)" .HP "\*bchar\fP *fp;" .br This routine, called when the actual, resolving declaration of a .B procedure or .B function is encountered, indents if the indent nested procedures option is set, and increments the structured statement level, returning its argument. .IP "funcend(fp, blk)" .HP "\*bchar\fP *fp;" .HP "\*bint\fP *blk;" .br This routine sets up for all of the actual work in printing the body of procedures and functions. It restores the count saved by .I funchdr from the .I pfcnts array, .I unprints the count to force it to come out again if there were any nested procedures or functions, (if the last block number in the variable .I lastbn is not the current block number) and then prints the body of the procedure or function. .IP To print the body, it \fIindents\fP, prints the keyword .B begin, and if there were nested sections prints the name of this routine in a comment. It then goes in a level in DECL (without shifting the bar over!) and prints the statement list given by the parameter \fIblk\fP. .RE .PP This is an appropriate place to note the following important fact: When a routine is called to put out an item at the statement level, the .I "output cursor" is usually at the end of the previous line, and if the routine wants to print on a clean line, then it calls .I ppnl before it begins. If it is willing to print on the same line then it can call \fIppitem\fP. It also turns out that this structure is critical for the processing of comments which is described in section 3. A delay in printing the new line character allows the comment processing to function correctly. .PP Thus, after the routine .I statlist processes the parameter .I blk the rotuines \fIppnl\fP, an \fIindent\fP, are called and the keyword .B end is printed followed by the routine name in a comment and a final .I ; or .I \&. character. Finally unwind from any indenting that may have been done due to the indent nested sections option occurs, and the .B z option stack is popped if this routine was in the command line .B procedure and .B function list. .NH 3 Statement processing .PP The statement level processing is done by the routines in the file .I stat.c and for case statements by the code in the file \fIcase.c\fP. As noted above, the cursor for each statement is generally left on the previous line so that a statement will ask for the cursor to be advanced to the next line if so desired. This is also necessary to make the placement of .B begin and .B end pairs work as desired. The basic loop for processing a group of statements is as follows: .LS statlist(sl) \*bregister\fP \*bint\fP *sl; { \*bif\fP (sl != NIL) \*bfor\fP (;;) { statement(sl[1]); sl = sl[2]; \*bif\fP (sl == NIL) \*bbreak\fP; ppsep(";"); } \*belse\fP statement(NIL); } .LE This is quite simple. A pointer to a tree structure is received, treated as an array of integers. The first word of each such node is a magic number giving the kind of node, the second word points to a statement and the third word links to the next such node, or NIL if this is the last node in the statement list. This is more fully described in [1], the nodes here being of type T_LISTPP. .PP To illustrate the processing for statements in general, a subset of the code from the .I stat.c file comprising that for .B if statements, assignment statements and .B "begin-end" blocks within .B if statements follows. This is illustrative of the work here in general. .so stat.c .PP .I Statement receives as argument a pointer to a tree node. For the purposes of this discussion, assume that this node is either of type T_IF, T_IFEL, or T_ASGN. The node type T_IFEL was added to the parser because of the problematic case of empty .B else clauses. When these empty clauses are present, it is impossible to present the data for both .B if statements without .B else and with .B else parts in the one T_IF structure. An .B if statement without an .B else part looks the same as an .B if statement with an empty .B else part in this case. This is a problem because .I pxp does not realize that the discarding of such empty .B else parts can affect the matching of outer .B else clauses with .B if parts and alter the meaning of the program! .PP Now, if the argument to .I statement is a NIL pointer, \fInull\fR is printed, a call on a built-in procedure that does nothing. The fact that a .I ppitem rather than a .I ppnl is done here indicates that it does not matter if this is on the same line with something else. If the argument pointer is not NIL a switch is done based on which type of statement is involved. .PP For assignments, as for the \fInull\fR above, the statement can appear on the same line with something else. Thus .I ppitem is called. To print an assignment first an .I lvalue (essentially a variable) and then an .I rvalue (an expression) must be printed, separated by a `:='. This is as simple as knowing which fields to pass to procedures .I lvalue and .I rvalue . .PP Note that .I rvalue here takes two arguments. The second argument is a flag indicating whether the expression is to be surrounded by parentheses if it is not-atomic. Since no ambiguity can possibly result, no parenthesis are required here. .NH 3 If\-then\-else's .PP It is required that an .I if statement appear on a separate line by calling .I ppnl . The routine .I ifop begins by printing: .LS \*bif\fP \*bthen\fP_ .LE where the `_' will be used to represent the invisible output cursor. The expression here also need not be parenthesized. .I Ifop then saves the count before the statement by calling \fIsavecnt\fP, and gets the count for the .I then part of the statement by calling \fIgetcnt\fP. The .B then part can now be handled. .PP If the .B then part is a .B begin\-end block, it can be started on this line. Thus, in this case, the routine .I ppstbl1 can be called with the .I then part as argument. It is also passed STAT, indicating that the indent it will do is to be reflected in the position of the bars on the left. (For .B with statements among others, the bars do not move over the text is indented.) Now .I ppstbl1 prints out the keyword .I begin and does the indent discussed above, but does not put out a newline. That is up to the routine .I statement which will be called by \fIstatlist\fP. The .B end is not put out yet because the counter for the .B else part belongs on the line with it if there is an .B else part and that count has not been set up yet. .PP If the statement in the .B then part is not a block then the processing here is much simpler; it is only necessary to indent a level in the STAT part as a block, call .I statement and then unindent the level. Thus a typical position after this part is completed for a .B then part which is a block would be: .LS \*bif\fP \*bthen\fP \*bbegin\fP stat1; stat2_ .LE with the cursor convention as before. .PP If this .B if statement does not have an .B else part the rest of the processing is simple. The count saved before the statement is restored, doing a .I getcnt if there were one or more .B goto statements in the body of the statement to get the count after the statement. If the .B then part was a block, .I ppstbl2 is called to put the keyword .B end indented on a new line with the restored count. This finishes the processing in this case. .PP If the statement has an .B else part then the count for this part must first be calculated. This is done by taking the .I cntof the saved structure from before the .B if statement and subtracting the current count which is that of the .B then part. This becomes the new counter generated for the .B else part. Processing of the .B then part is then finished either by printing a .B end with .I ppstbl2 as above, followed by a space, or by forcing a new line in the output and calling .I indent. The keyword .B else is printed in the output and followed with a space. .I Unprint is called so that the count for an .B else part prints not only with the .B else but also on the statement in the .B else part. This significantly improves the readability of bushy if-then-elses. .PP The special case of an empty statement in the .B else part is caught and a null statement is put out in this case. Otherwise a check is made to see if the .B else part is a block, and if so, handled in a manner identical to the processing for the .B then part. Nested .B if statements are then caught, and are recursive call is made without doing any indentation. This accomplishes the goal of not ``wandering across the page'' in if-then-else statements. .PP Noting that normal statements are treated as before, the .B else part has been successfully completed except for some cleanup. This cleanup involves restoration of the count and printing of the keyword .B end. Note that the pre .B if statement count must be unprinted whenever an .B else occurs. This is because of the way .B else parts are printed, lined up with the .B if parts and obstructing their counts. .NH 3 Expression processing .PP The final part of the profiling process to be discussed is the printing of expressions. This is quite simple, actually, with the only interesting code being that which determines what parenthesization to do. This happens as follows. .PP Whenever a binary operator is encountered each of its operands is processed in turn. The following cases are from the .B switch in the routine .I rvalue and indicates the code for processing binary operators. .LS \*bcase\fP T_AND: \*bcase\fP T_OR: \*bcase\fP T_MULT: \*bcase\fP T_ADD: \*bcase\fP T_SUB: \*bcase\fP T_DIVD: \*bcase\fP T_MOD: \*bcase\fP T_DIV: \*bcase\fP T_EQ: \*bcase\fP T_NE: \*bcase\fP T_GE: \*bcase\fP T_LE: \*bcase\fP T_GT: \*bcase\fP T_LT: \*bcase\fP T_IN: al = r[2]; rvalue(al, prec(al) < prec(r) || opt('f')); ppspac(); \*bif\fP (alph(opname[0])) ppkw(opname); \*belse\fP ppop(opname); ppspac(); al = r[3]; rvalue(al, prec(al) <= prec(r) || opt('f')); \*bbreak\fP; .LE .PP The routine .I prec returns an integer representing the precedence of the operator given. It is defined by: .LS prec(r) \*bregister\fP \*bint\fP *r; { \*bif\fP (r == NIL) \*breturn\fP; \*bswitch\fP (r[0]) { \*bcase\fP T_NOT: \*breturn\fP (3); \*bcase\fP T_MULT: \*bcase\fP T_DIVD: \*bcase\fP T_DIV: \*bcase\fP T_MOD: \*bcase\fP T_AND: \*breturn\fP (2); \*bcase\fP T_ADD: \*bcase\fP T_SUB: \*bcase\fP T_OR: \*breturn\fP (1); \*bdefault\fP: \*breturn\fP (0); } } .LE Thus, with a binary operator, parentheses are needed around the left operand if it is non-atomic and its operator has lower .I prec than the current operator. Parentheses are needed around the right operand if it is non-atomic and its operator has fewer or the same .I prec as the current operator. This equality condition reflects Pascal associativity. .NH 2 Multiple file processing .PP .I Pxp has the capability of handling .I include files. Just as programs to .PI may be split into many pieces, they may be so split and then processed by \fIpxp\fP. In addition a capability for pretty printing of one piece of a program has been included in \fIpxp\fP. If .I pxp is pretty printing and the file being pretty printed has a name ending in .I \&.i then .I pxp will place the line .LS \*bprogram\fP x(output); .LE into the source stream before the first line of the file and the line .LS \*bbegin\fP \*bend\fP. .LE after the last line. In this way, if the contents of the .I include corresponds to a global declaration part and/or a group of procedures and functions, the pretty print can proceed without modifications to the source text. This is the only case in which the pretty printer will take anything other than a complete Pascal program. .I Pxp suppresses printing back out the inserted and appended lines in this case. .PP .Xp does not normally process .I include directives but rather prints them back out as includes. An option to eliminate the includes is also available. .bp atedoc/2.10/pxp/pxpin3.n 444 3 12 30020 3141164320 7372 .if !\n(xx .so tmac.p .ND 'nr H1 2 .NH Automatic program formatting .NH 2 Motivation .PP Just as software packages to automatically format documents aid the construction of readable and accurate documents, packages which aid the construction of programs by helping prepare and maintain the text in a standard and easily readable format can aid the entire programming process. With an automatically structured listing, the reader can trust the textual display of the program to be accurate and can concentrate on understanding the program, rather than deciphering the style in which it is written. Even when .I "programming secretaries" are available, an automated preparation system can improve the programming process by defining a standard format for programs, making them easier to read. After programs are completed, and modifications to provide new features or to correct bugs are required, an automatic formatting system can work with an intelligently designed source code control system to help maintain clean programs with their histories. .PP The first version of .I pxp took a step toward the goal of machine aided program formatting by formatting the code of the program. It did not, however, in any way help with the annotation of the program with comments. The following sections describe a comment processing facility design which was added to .I pxp. .NH 2 Implementation .PP When parsing the program information is saved in the parse tree which tells the source text coordinates (sequence numbers and columns) for the input tokens at the boundaries of chosen productions. The comments from the source program are saved in a separate data structure together with information about their source text locations and a classification of their ``type.'' The comment reformatting process proceeds by printing out the parsed program and periodically flushing out comments. .NH 3 The kinds of comments .PP .I Pxp distinguishes several types of comments in the input thereby varying their placement in the output. The four basic kinds of comments are: .IP .B Left marginal. .R At the left margin on input these comments are retained at the left margin in the output. .IP .B Aligned. .R Comments which are not at the left margin on input but which have no tokens preceding them on the input line are aligned with the program text on output. .IP .B Trailing. .R Comments appearing after tokens in the input line but separated from the last token on the line by only a small amount of white space are placed similarly in the output. .IP .B Right marginal. .R Comments which are more than a small amount of white space past the last token on a line are aligned about 35 spaces to the right of the running program text. .PP In addition to these comments, other formatting features of the input are preserved to the output. These include blank lines, form ejects, and .B include directives. .NH 2 Examples of comment types .PP Consider the following example: .LS { Factorial program - Assigment 1 John Jones, CS 153, Fall 1977 } \fBprogram\fP fact(output); \fBconst\fP maxfact = 20; {last factorial to be computed} \fBfunction\fP rfact(i: integer): integer; \fBbegin\fP \fBif\fP i <= 1 \fBthen\fP {terminate} fact := 1 \fBelse\fP {recurse} fact := i * fact(i - 1) \fBend\fP; \fBbegin\fP i := 1; j := 1; {iterative factorial} \fBrepeat\fP writeln(i, j); j := j * i; i := i + 1; \fBuntil\fP i > maxfact; {recursive factorial} \fBfor\fP i := 1 \fBto\fP maxfact \fBdo\fP writeln(i, rfact(i)) \fBend\fP. .LE .PP This program has all four basic comment types. The first comment is .I marginal (and is followed by a blank line which is also preserved in a reformatted listing.) The comments in the text ``iterative factorial'' and ``recursive factorial'' are .I aligned comments. The comment on the declaration of .I maxfact is a .I trailing comment while the comments in .I rfact are .I "right marginal." .PP Since the objective of the program reformatting is to not require the saving of the raw programs which produced the restructured programs, it is necessary for the reformatting to produce programs which are .I "fixed points" with respect to the comment processing; that is the form of restructured programs must be preserved under repeated reformatting. The above types of comments have been carefully chosen so that this occurs. .NH 3 Data structures (overview) .PP The following sections provide a brief descriptions of the data structures used by the comment formatting cluster and the method used by the cluster itself. The actual reformatting process involves a number of complications not detailed here, necessary to discern as much as possible from the source text in order to reasonably classify comments into one of the four available types, and in order to live with the existing structure of the parser of .I pi . .PP As each comment is encountered in the source text it is chained onto a singly linked list recording the kind of comment involved; the comment delimiter, either `{' or `(*'; the source text coordinates of the comment; and a linked list of lines of comment text. .PP The other data structure used to gather information is a stack parallel to the parse stack. For each element of the parse stack this stack contains the source text coordinates of the leftmost token shifted over in creating the associated state. Thus, when a reduction occurs, it is possible to identify the portion of the input text which was reduced. At numerous points in the parse tree where comment text is to be processed we save the source coordinates of the first and last token in the reduced production as well as the coordinates of the following (lookahead) token. .NH 3 Comment processing (overview) .PP Formatting of the comments back into the program uses the source text coordinates embedded in the parse tree and attached to comments to construct a formatted listing. The ideas involved are quite simple. When we begin to print out a statement level subtree we first print out comments which precede this statement. We then print out the statement itself, possible invoking this process recursively. In recursive declarations provisions are made for embedded comments also. .PP The most important complication is that comments which appear after the last token of a .B procedure or .B function must be associated with this routine rather than being printed before the next. This requires a special ``to end of line'' kind of comment flushing. Other complications arise because of the pre-existing data structures in .I pxp . The code for .I pxp contains a number of comments detailing the resolution of these and other problems. .bp .NH Conclusions .NH 2 Design .PP In retrospect, most of the design decisions were well-made. The counter placement rules resulted in a small number of counters. The reparsing of the program runs at a reasonable rate, approximately twice the speed of compilation. The inaccurate counts which may be generated with non-local .B goto statements have as yet caused no problems. The biggest deficiency in the design is, in fact, the lack of a debugger implementation to complement the profiling facilities. .NH 2 Implementation .PP The implementation proved to be quite simple. The design choices allowing .I pxp to use the framework of .I pi were well taken. The largest weakness of the implementation may be the fact that the print cluster structure may not necessarily be the best one for doing long statement folding across line boundaries, and for processing the placement of multiple statements per line. Whether or not this is true would be seen if such a implementation modification were attempted. .NH 2 Profiling .PP The format of the profile worked out quite well. Basing the format on [9] was an excellent choice. For initialization procedures and some others, multiple statement per line placements is noticeably needed. It is felt that languages which offer initialization facilities for structured statements will likewise need more complex format processing in such declarations. With comment reformatting a profile can substitute for a program listing. In this case the philosophy of suppressing unexecuted .B procedure and .B function bodies as well as declaration parts might be re-examined. .NH 2 Reformatting .PP For program formatting, a comment formatting facility is a must. The author feels that the basic format of programs is well chosen, but most persons would prefer an (at least slightly) different format. Again, long statement folding and the placement of multiple statements per line would be a plus here. Even in its present state, the formatting facilities are judged to be useful, especially for showing students with no perceivable style one plausible way of formatting Pascal programs. .NH 2 Future systems .PP Execution profiling is an important tool because it provides feedback at the source program level. A number of systems including such facilities exist or are proposed [10] [11] [12] [13]. The author expects the following to be components of future systems: .HP .RS .IP 1) Source language editors [16] [17] .IP 2) Symbolic source language debuggers [8] [16] .IP 3) Source code control systems [18] .RE .PP A well-designed programming language system with these components could provide systems programmers with a powerful set of system construction tools, similar to those available in excellent \s-2LISP\s0 systems such as [16]. .bp .SH References .PP .IP [1] Charles B. Haley .br Master's Project Report .br U.C. Berkeley, June, 1977. .IP [2] William N. Joy .br .I "PX 1.1 Implementation Notes" .br October, 1978. .IP [3] William N. Joy, Susan L. Graham, and Charles B. Haley .br .I "Berkeley Pascal User's Manual" .br Version 1.0 \- November, 1977. .IP [4] K. Thompson and D. M. Ritchie .br .I UNIX Programmers Manual .R .br Version 6.7 (revised at University of California) .br June 1977. .IP [5] Kathleen Jensen and Niklaus Wirth .br .I Pascal \- User Manual and Report .R .br Springer-Verlag, New York .br 1975. .IP [6] William N. Joy .br .I "PDB Design notes and draft manual" .br January, 1977. .IP [7] D. E. Knuth and F. R. Stevenson .br .I "Optimal measurement points for program frequency counts" .br BIT 13 (1973) 313-322. .IP [8] Edwin H. Satterthwaite .br .I "Source Language Debugging Tools" .br STAN-CS-75-494, May, 1975. .IP [9] Edwin H. Satterthwaite .br .I "Debugging Tools for High Level Languages" .br Software, Practice and Experience .br Vol. 2, 197-217, 1972. .IP [10] J. D. Ichbiah, J, C. H\*'eliard, J. P. Rissen, P. Cousot .br .I "The Systems Implementation Language LIS - Reference Manual" .br Technical Report 4549 E1/EN. .br Compagnie Internationale pour l\(aaInformatique .br 68, route de Versailles \- 78430 LOUVECIENNES .br December 1974. Revised January 1976. .IP [11] B. W. Lampson, J. J. Horning, R. L. London, J. G. Mitchell, G. L. Popek .br .I "Report on the Programming Language Euclid" .br Sigplan Notices, Volume 12, Number 2. .br February 1977. .br Pp. 64-65. .IP [12] D. T. Barnard .br .I "Automatic generation of syntax-repairing and paragraphing parsers" .br Technical Report CSRG-52. .br Computer Systems Research Group .br University of Toronto, Toronto, Ontario. .br April 1975. .IP [13] R. C. Holt and D. T. Barnard .br .I "Syntax directed error repair and paragraphing" .br Computer Systems Research Group. .br University of Toronto, Toronto, Ontario. .br June, 1976. .IP [14] A. van Wijngaarden, et. al. .br .I "Revised Report on the algorithmic language ALGOL 68" .br Sigplan Notices, Volume 12, Number 5. .br May 1977. .IP [15] Niklaus Wirth .br .I "Modula: A language for modular multiprogramming" .br Institut f\*:ur Informatik .br ETH, CH 8092 Z\*:urich .br March, 1976. .IP [16] Warren Teitleman .br .I "Interlisp Reference Manual" .br Xerox Palo Alto Research Center .br Palo Alto, California .br December 1974. .IP [17] Steve German .br .I ECL in-core editor .R .br Documentation dated 10/20/1973. .IP [18] Rochkind, Marc J. .br The Source Code Control System .br IEEE TOSE Vol SE-1 #4 .br Dec. 1975, 364-370 on the same line with something else. Thus .I ppitem is called. To print an assignment first an .I lvalue (essentially a variable) and then an .I rvalue (an expression) must be printed, separated by a `:='. This is as simple as knowing which fields to pass to procedures .I lvalue and .I rvalue . .PP Note that .I rvalue here takes two arguments. The second argument is a flag indicating whether the expression is to be surrounded by parentheses if it is not-atomic. Since no ambiguity can possibdoc/2.10/pxp/stat.c 444 3 12 5017 3141164317 7107 .LS .ID .nf statement(s) \*bregister\fP \*bint\fR *s; { \*bif\fP (s == NIL) { ppitem(); ppid("null"); \*breturn\fP; } line = s[1]; \*bswitch\fP (s[0]) { \*bdefault\fP: panic("stat"); \*bcase\fP T_IF: \*bcase\fP T_IFEL: ppnl(); indent(); ifop(s); \*breturn\fP; \*bcase\fP T_ASGN: ppitem(); asgnop(s); \*breturn\fP; } } asgnop(r) \*bregister\fP \*bint\fR *r; { lvalue(r[2]); ppsep(" := "); rvalue(r[3], NIL); } ifop(r) \*bregister\fP \*bint\fR *r; { \*bregister\fP \*bint\fR *s; \*bstruct\fP pxcnt scnt; ppkw("if"); ppspac(); rvalue(r[2], NIL); ppspac(); ppkw("then"); ppspac(); s = r[3]; savecnt(&scnt); getcnt(); \*bif\fP (s != NIL && s[0] == T_BLOCK) ppstbl1(s, STAT); \*b\*belse\fP\fR { ppgoin(STAT); statement(s); ppgoout(STAT); } \*bif\fP (r[0] == T_IFEL) { setcnt(cntof(&scnt)-nowcnt()); \*bif\fP (s == NIL || s[0] != T_BLOCK) { ppnl(); indent(); } \*belse\fP { ppstbl2(); ppspac(); } s = r[4]; ppkw("else"); unprint(); ppspac(); \*bif\fP (s == NIL) \*bgoto\fP burp; \*bif\fP (s[0] == T_BLOCK) ppstbl1(s, STAT); \*belse\fP \*bif\fR (s[0] == T_IF || s[0] == T_IFEL) ifop(s); \*belse\fP { burp: ppgoin(STAT); statement(s); ppgoout(STAT); } } \*bif\fP (rescnt(&scnt)) getcnt(); \*bif\fP (r[4] != NIL) unprint(); \*bif\fP (s != NIL && s[0] == T_BLOCK) ppstbl2(); } ppstbl1(r, m) \*bint\fP *r, m; { ppkw("begin"); ppgoin(m); statlist(r[2]); ppgoout(m); } ppstbl2() { ppnl(); indent(); ppkw("end"); } .fi .LE the portion of the input text which was reduced. At numerous points in the parse tree where comment text is to be processed we save the source coordinates of the first and last token in the reduced production as well as the coordinates of the following (lookahead) token. .NH 3 Comment processing (overview) .PP Formatting of the comments back into the program uses the source text coordinates embedded in the parse tree and attached to comments to construct a formatted listing. The ideas involvdoc/2.10/pxp/tmac.p 444 3 12 2034 3141164317 7071 'if \n(FM=0 'so /usr/lib/tmac/tmac.s .if n .nr FM 1.2i .if t .tr *\(**=\(eq/\(sl+\(pl .bd S B 3 .de SM .if "\\$1"" .ps -2 .if !"\\$1"" \s-2\\$1\s0\\$2 .. .de LG .if "\\$1"" .ps +2 .if !"\\$1"" \s+2\\$a\s0\\$2 .. .de HP .nr pd \\n(PD .nr PD 0 .if \\n(.$=0 .IP .if \\n(.$=1 .IP "\\$1" .if \\n(.$>=2 .IP "\\$1" "\\$2" .nr PD \\n(pd .. .de ZP .nr pd \\n(PD .nr PD 0 .PP .nr PD \\n(pd .. .de LS \"LS - Literal display, ASCII, constant spaced DS .if \\n(.$=0 .DS .if \\n(.$=1 \\$1 .if \\n(.$>1 \\$1 "\\$2" .if t .tr '\'`\`^\(ua-\(mi .if t .tr _\(ul .. .de LE \"LE - End literal display .DE .tr ''``__--^^ .. .de UP Berkeley Pascal\\$1 .. .de PD \s-2PDP\s0 .if \\n(.$=0 11/70 .if \\n(.$>0 11/\\$1 .. .de DK Digital Equipment Corporation\\$1 .. .de PI .I pi \\$1 .. .de Xp .I Pxp \\$1 .. .de XP .I pxp \\$1 .. .de IX .I pix \\$1 .. .de X .I px \\$1 .. .de PX .I px \\$1 .. .if n .ds dg + .if t .ds dg \(dg .if n .ds Dg \*(dg .if t .ds Dg \*(dg .if n .ds dd * .if n .ds Dd \*(dd .if t .ds Dd \*(dd .if t .ds dd \(dd .if t .ds b \\fB .if n .ds b \\fI .nr xx 1 statement(s); ppgoout(STAT); } } \*bif\fP (rescnt(&scnt)) getcnt(); \*bif\fP (r[4] != NIL) unprint(); \*bif\fP (s != NIL && s[0] == T_BLOCK) ppstbl2(); } ppstbl1(r, m) \*bint\fP *r, m; { ppkw("begin"); ppgoin(m); statlist(r[2]); ppgoout(m); } ppstbl2() { ppnl(); indent(); ppkw("endoc/2.10/pascal/ 755 3 12 0 3461242102 6330 doc/2.10/pascal/makefile 444 3 12 5040 3141164225 10116 # This makefile assumes that csh is running the figures FIGURES=\ firstout firstobjout firstobjout2\ bigger2.p bigger3.p bigout1 bigger6.p bigout2 bigout3 bigout4\ primeout1 primeout2\ digitsout synerrout synerr2out\ mismout clashout sinout1 sinout2\ exprout typequout primeout3\ katout copydataout kat2out katscript xxxxqqqout xxxxqqqout2\ primes primes-d\ comments1.p commentsout puman: ${FIGURES} soelim puman[45A].n | tbl | /usr/ucb/vtroff -n31 csfix: cc -O csfix.c -o csfix -lS firstout: first.p csfix pix first.p |& expand | csfix >firstout firstobjout: first.p pi first.p >& firstobjout ; px >& firstobjout firstobjout2: first.p pi -p first.p >& firstobjout2 ; px >& firstobjout2 bigger2.p: bigger.p -expand bigger.p >bigger2.p bigger3.p: bigger2.p csfix number bigger2.p | expand | csfix -d >bigger3.p bigout1: bigger.p csfix pix bigger.p |& expand | csfix >bigout1 bigger6.p: bigger5.p csfix number bigger5.p | expand | csfix -d >bigger6.p bigout2: bigger4.p pix bigger4.p |& expand >bigout2 bigout3: bigger7.p pix bigger7.p |& expand >bigout3 bigout4: bigger7.p (pix bigger7.p >/dev/null) |& expand > bigout4 primeout1: primes.p csfix pix -l -z primes.p |& expand | csfix - >primeout1 primeout2: primes.p csfix pxp -z primes.p |& expand | csfix - >primeout2 digitsout: digits.p csfix pi digits.p |& expand | csfix >digitsout synerrout: synerr.p csfix pi -l synerr.p |& expand | csfix >synerrout synerr2out: synerr2.p csfix pix -l synerr2.p |& expand | csfix >synerr2out mismout: mism.p csfix pi -l mism.p |& expand | csfix >mismout clashout: clash.p pi clash.p |& expand >clashout sinout1: sin1.p pi sin1.p |& expand >sinout1 sinout2: sin2.p pi sin2.p |& expand >sinout2 exprout: expr.p pi -l expr.p | expand >exprout typequout: typequ.p -pi typequ.p >typequout primeout3: primes2.p csfix pix primes2.p |& expand | csfix -d >primeout3 katout: kat.p csfix primes pix -l kat.p katout copydataout: copydata.p csfix pix -l copydata.p |& expand | csfix -d >copydataout kat2out: kat2.p -pi kat2.p ; px obj primes |& csfix -d >kat2out xxxxqqqout: kat2.p -pi kat2.p -px obj xxxxqqq >& xxxxqqqout xxxxqqqout2: kat2.p pi -p kat2.p -px obj xxxxqqq >& xxxxqqqout2 primes: primes.p pix -p primes.p > primes primes-d: primes csfix -d primes-d katscript: katin px obj katin >& katscript -ed - katscript < fixkatscript comments1.p: comments.p -expand comments.p >comments1.p commentsout: comments.p pxp comments.p |& expand >commentsout -ed - commentsout < fixcomments clean: -rm csfix pmon.out obj ${FIGURES} ment flushing. Other complications arise because of the pre-existing data structures in .I pxp . The code for .I pxp contains a number of comments detailing the resolution of these and other problems. .bp .NH Conclusions .NH 2 Design .PP In retrospect, most of the design decisions were well-made. The counter placement rules resulted in a small number of counters. The reparsing of the program runs at a reasonable rate, approximately twice the speed of compilation. The inaccuradoc/2.10/pascal/bigger.p 444 3 12 1000 3141164226 10027 (* * Graphic representation of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim begin x := d / i; y := exp(-x9 * sin(i * x); n := Round(s * y) + h; repeat write(' '); n := n - 1 writeln('*') end. doc/2.10/pascal/fixcomments 444 3 12 52 3141164225 10633 1i .ta 3.25i . g/ *{/s// {/ w q lew!bigger.pw  fixcommentskat3.pent bigger4.p bigger5.p bigger7.pclash.pp comments.p contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/kat3.p 444 3 12 737 3141164225 7431 program kat(input, output); var ch: char; i: integer; name: packed array [1..100] of char; begin i := 1; repeat if i < argc then begin argv(i, name); reset(input, name); i := i + 1 end; while not eof do begin while not eoln do begin read(ch); write(ch) end; readln; writeln end until i >= argc end { kat }. puman5.npumanA.ndoc/2.10/pascal/bigger4.p 444 3 12 1032 3141164225 10117 (* * Graphic representation of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] *) h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim do begin x := d / i; y := exp(-x) * sin(c * x); n := round(s * y) + h; repeat write(' '); n := n - 1 until n = 0; writeln('*') end end. nd | csfix >firstout firstobjout: first.p pi first.p firstobjout ; px >& firstobjout firstobjout2: first.p pi -p first.p >& firstobjout2 ; px >& firstobjout2 bigger2.p: bigger.p -expand bigger.p >bigger2.p bigger3.p: bigger2.p csfix number bigger2.p | expand | csfix -d >bigger3.p bigout1: bigger.p csfix pix bigger.p |& expand | csfix >bigout1 bigger6.p: bigger5.p csfix number bigger5.p | expand | csfix -d >bigger6.p bigout2: bigger4.p pix bigger4.p |& expand >bigout2 bigdoc/2.10/pascal/bigger5.p 444 3 12 1032 3141164226 10121 (* * Graphic representation of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] *) h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim do begin x := d / i; y := exp(-x) * sin(c * x); n := round(s * y) + h; repeat write(' '); n := n - 1 until n = 0; writeln('*') end end. nd | csfix >firstout firstobjout: first.p pi first.p firstobjout ; px >& firstobjout firstobjout2: first.p pi -p first.p >& firstobjout2 ; px >& firstobjout2 bigger2.p: bigger.p -expand bigger.p >bigger2.p bigger3.p: bigger2.p csfix number bigger2.p | expand | csfix -d >bigger3.p bigout1: bigger.p csfix pix bigger.p |& expand | csfix >bigout1 bigger6.p: bigger5.p csfix number bigger5.p | expand | csfix -d >bigger6.p bigout2: bigger4.p pix bigger4.p |& expand >bigout2 bigdoc/2.10/pascal/bigger7.p 444 3 12 1032 3141164226 10123 (* * Graphic representation of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] *) h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim do begin x := d * i; y := exp(-x) * sin(c * x); n := round(s * y) + h; repeat write(' '); n := n - 1 until n = 0; writeln('*') end end. nd | csfix >firstout firstobjout: first.p pi first.p firstobjout ; px >& firstobjout firstobjout2: first.p pi -p first.p >& firstobjout2 ; px >& firstobjout2 bigger2.p: bigger.p -expand bigger.p >bigger2.p bigger3.p: bigger2.p csfix number bigger2.p | expand | csfix -d >bigger3.p bigout1: bigger.p csfix pix bigger.p |& expand | csfix >bigout1 bigger6.p: bigger5.p csfix number bigger5.p | expand | csfix -d >bigger6.p bigout2: bigger4.p pix bigger4.p |& expand >bigout2 bigdoc/2.10/pascal/clash.p 444 3 12 134 3141164227 7652 program clash(output); var i: integer; c: char; begin i := 1; c := i; write(c, i) end. .pent bigger4.p bigger5.p bigger7.pclash.pp comments.p contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/comments.p 444 3 12 732 3141164226 10410 { This is a left marginal comment. } program hello(output); var i : integer; {This is a trailing comment} j : integer; {This is a right marginal comment} k : array [ 1..10] of array [1..10] of integer; {Marginal, but past the margin} { An aligned, multi-line comment which explains what this program is all about } begin i := 1; {Trailing i comment} {A left marginal comment} {An aligned comment} j := 1; {Right marginal comment} k[1] := 1; writeln(i, j, k[1]) end. .npuman5.npumanA.ndoc/2.10/pascal/contents.n 444 3 12 3474 3141164275 10450 .if !\n(xx .so /usr/lib/tmac.s .nr LL 6.5i .TL UNIX Pascal User's Manual .br Version 1.0 \- November, 1977 .LP .ds CF "- \\n(PN - .ds CH .af PN i .ce .I .LG .LG Table of Contents .NL .R .sp .5i .KS .ta 5.75i .tc . .nf .KE .KS Introduction \0\01 .KE .sp 2 .KS .B 1. Sources of Information \0\02 .R .sp .1 Where to get documentation \0\02 .2 Computer Center short courses \0\02 .3 Documentation describing UNIX \0\02 .4 Text editing documents \0\03 .5 Pascal documents \- the language \0\04 .6 Pascal documents \- the UNIX implementation \0\04 .7 References \0\05 .KE .sp 2 .KS .B 2. Basic UNIX Pascal \0\07 .R .sp .1 A first program \0\07 .2 A larger program \010 .3 Correcting the first errors \011 .4 Executing the second example \014 .5 Formatting the program listing \016 .6 Execution profiling \016 .KE .sp 2 .KS .B 3. Error diagnostics \020 .R .sp .1 Translator syntax errors \020 .2 Translator semantic errors \023 .3 Translator panics, i/o errors \027 .4 Run-time errors \027 .KE .sp 2 .KS .B 4. Input/output \029 .R .sp .1 Introduction \029 .2 Eof and eoln \030 .3 More about eoln \031 .4 Output buffering \032 .5 Files, reset and rewrite \032 .6 Argc and argv \033 .KE .sp 2 .KS .B 5. Details on components of the system \036 .R .sp .1 Options \036 .2 Pi (and pix) \037 .3 Px \039 .4 Pxp \039 .5 Formatting programs using pxp \040 .6 Pcc and carriage control \042 .7 Pxref \042 .8 Pascals \042 .9 Multi-file programs \042 .KE .sp 2 .KS .B A. Appendix to Wirth's Pascal Report \044 .R .sp .1 Extensions to the language Pascal \045 .2 Resolution of the undefined specifications \045 .3 Restrictions and limitations \048 .4 Added types, operators, procedures and functions \048 .5 Remarks on standard and portable Pascal \050 .KE pand | csfix -d >primeout3 katout: kat.p csfix primes pix -l kat.p katout copydataout: copydata.p csfix pix -l copydata.p |& expand | csfix -d >copydataout kat2out:doc/2.10/pascal/copydata.p 444 3 12 365 3141164275 10375 program copydata(data, output); var ch: char; data: text; begin reset(data); while not eof(data) do begin while not eoln(data) do begin read(data, ch); write(ch) end; readln(data); writeln end end { copydata }. ataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/csfix.c 444 3 12 5452 3141164274 7711 #include /* * csfix - fix constant spacing for error message flags in troff * * Bill Joy UCB September 11, 1977 * * This would be better written in snobol! * * Normally fixes error flags in a pi listing * Optional - causes fixing of '---' and initial blank widthin a pxp profile. */ char flag, dflag; main(argc, argv) int argc; char *argv[]; { argc--, argv++; if (argc > 0 && argv[0][0] == '-' && argv[0][1] == 'd') dflag++, argc--, argv++; if (argc > 0 && argv[0][0] == '-') flag++, argc--, argv++; if (argc != 0) { write(2, "Usage: csfix\n", 13); exit(1); } while (getline()) { if (errline()) { flag ? fixpxp() : reformat(); continue; } if (flag) { fixdigits(); continue; } if (spwarn()) continue; if (nontriv()) save(); if (dflag) fixdigits(); else putline(); } exit(0); } char line[160], flagee[160]; getline() { register char *cp, c; for (cp = line, c = getchar(); c != '\n' && c != EOF; c = getchar()) *cp++ = c; if (c == EOF) return (0); *cp = 0; return (1); } errline() { register int i; register char *cp; for (cp = line; cp[0] && cp[1] && cp[2]; cp++) if (cp[0] == '-' && cp[1] == '-' && cp[2] == '-') return (1); return (0); } reformat() { register char *cp, c, *tail; printf("%2.2s", line); if (line[0] != 'w') printf("\\l'\\w`w `u-\\w`%2.2s`u '", line); for (cp = line; *cp != 0 && *cp != '^'; cp++) continue; tail = cp + 1; if (cp[-1] == '\b' && cp[-2] == '|') cp =- 2; c = flagee[cp - line]; flagee[cp - line] = 0; printf("\\l'\\w`%s`u-\\w`w `u\\&\\(rh'", flagee); flagee[cp - line] = c; printf("\\l'(\\w`%c`u-\\w`^`u)/2 '", c); printf("\\(ua"); printf("\\l'(\\w`%c`u-\\w`^`u)/2 '", c); printf("\\l'\\w`---`u\\&\\(rh'%s\n", tail+3); } nontriv() { switch (line[0]) { case 'E': case 'e': case 'w': case 's': case 0: return (0); } return (1); } save() { strcpy(flagee, line); } putline() { printf("%s\n", flag ? digitty(0) : line); } spwarn() { if (line[0] != ' ' || line[1] != ' ' || line[2] != 'w') return (0); printf(" \\l'(\\w`E`u-\\w`w`u)/2 'w\\l'(\\w`E`u-\\w`w`u)/2 '"); printf(&line[3]); printf("\n"); return (1); } fixpxp() { register char *cp; for (cp = line; *cp != '-'; cp++) continue; *cp = 0; printf("%s\\l'\\w`\\0\\0\\0\\0`u-\\w`.`u\\&\\(rh'%s\n", digitty(1), cp + 3); } digitty(yup) char yup; { register char *cp, *dp, *lp; for (lp = line; *lp && *lp != '|'; lp++) continue; if (yup == 0 && !*lp) return (line); for (cp = line, dp = flagee; cp < lp; cp++) if (*cp == ' ') *dp++ = '\\', *dp++ = '0'; else *dp++ = *cp; strcpy(dp, cp); return (flagee); } fixdigits() { register char *cp, c; for (cp = line; *cp == ' ' || *cp >= '0' && *cp <= '9'; cp++) continue; c = *cp, *cp = 0; digitty(1); *cp = c; printf("%s%s\n", flagee, cp); } esign decisions were well-made. The counter placement rules resulted in a small number of counters. The reparsing of the program runs at a reasonable rate, approximately twice the speed of compilation. The inaccuradoc/2.10/pascal/data 444 3 12 53 3141164274 7215 line one. line two. line three is the end. ew!bigger.pw  fixcommentskat3.pent bigger4.p bigger5.p bigger7.pclash.pp comments.p contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/digits.p 444 3 12 147 3141164274 10051 program digits(output); var r: real; begin r := 0.; r := .0; r := 1.e10; r := .05e-10; writeln(r) end. bigger4.p bigger5.p bigger7.pclash.pp comments.p contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/expr.p 444 3 12 611 3141164273 7537 program x(output); var a: set of char; b: Boolean; c: (red, green, blue); p: ^ integer; A: alfa; B: packed array [1..5] of char; begin b := true; c := red; new(p); a := []; A := 'Hello, yellow'; b := a and b; a := a * 3; if input < 2 then writeln('boo'); if p <= 2 then writeln('sure nuff'); if A = B then writeln('same'); if c = true then writeln('hue''s and color''s') end. s2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/first.p 444 3 12 73 3141164273 7672 program first(output) begin writeln('Hello, world!') end. pw  fixcommentskat3.pent bigger4.p bigger5.p bigger7.pclash.pp comments.p contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/kat.p 444 3 12 263 3141164273 7343 program kat(input, output); var ch: char; begin while not eof do begin while not eoln do begin read(ch); write(ch) end; readln; writeln end end { kat }.  contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/kat2.p 444 3 12 566 3141164267 7436 program kat(input, output); var ch: char; i: integer; name: packed array [1..100] of char; begin i := 1; repeat if i < argc then begin argv(i, name); reset(input, name); i := i + 1 end; while not eof do begin while not eoln do begin read(ch); write(ch) end; readln; writeln end until i >= argc end { kat }. imes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/katin 444 3 12 135 3141164266 7434 This is a line of text. The next line contains only an end-of-file (an invisible control-d!) pent bigger4.p bigger5.p bigger7.pclash.pp comments.p contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/mism.p 444 3 12 151 3141164263 7524 program mismatch(output) begin writeln('***'); { The next line is the last line in the file } writeln igger4.p bigger5.p bigger7.pclash.pp comments.p contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/motd 444 3 12 127 3141164263 7267 Cory Hall 11/70 Type 'msgs' for latest system messages (Megabyte of memory installed) kat3.pent bigger4.p bigger5.p bigger7.pclash.pp comments.p contents.n copydata.pcsfix.c.p dataldigits.ppexpr.pppfirst.pp kat.pkat2.pp katinmism.pp motdl primes.pp  primes2.p puman0.n puman1.n puman2.npuman3.npuman4.npuman5.npumanA.ndoc/2.10/pascal/primes.p 444 3 12 1460 3141164262 10101 program primes(output); const n = 50; n1 = 7; (*n1 = sqrt(n)*) var i,k,x,inc,lim,square,l: integer; prim: boolean; p,v: array[1..n1] of integer; begin write(2:6, 3:6); l := 2; x := 1; inc := 4; lim := 1; square := 9; for i := 3 to n do begin (*find next prime*) repeat x := x + inc; inc := 6-inc; if square <= x then begin lim := lim+1; v[lim] := square; square := sqr(p[lim+1]) end ; k := 2; prim := true; while prim and (k v[k] end until prim; if i <= n1 then p[i] := x; write(x:6); l := l+1; if l = 10 then begin writeln; l := 0 end end ; writeln; end . (); else putline(); } exit(0); } char line[160], flagee[160]; getline() { register char *cp, c; for (cp = line, c = getchar(); c != '\n' && c != EOF; c = getchar()) *cp++ = c; if (c == EOF) rdoc/2.10/pascal/primes2.p 444 3 12 1460 3141164262 10163 program primes(output); const n = 50; n1 = 6; (*n1 = sqrt(n)*) var i,k,x,inc,lim,square,l: integer; prim: boolean; p,v: array[1..n1] of integer; begin write(2:6, 3:6); l := 2; x := 1; inc := 4; lim := 1; square := 9; for i := 3 to n do begin (*find next prime*) repeat x := x + inc; inc := 6-inc; if square <= x then begin lim := lim+1; v[lim] := square; square := sqr(p[lim+1]) end ; k := 2; prim := true; while prim and (k v[k] end until prim; if i <= n1 then p[i] := x; write(x:6); l := l+1; if l = 10 then begin writeln; l := 0 end end ; writeln; end . (); else putline(); } exit(0); } char line[160], flagee[160]; getline() { register char *cp, c; for (cp = line, c = getchar(); c != '\n' && c != EOF; c = getchar()) *cp++ = c; if (c == EOF) rdoc/2.10/pascal/puman0.n 444 3 12 6343 3141164262 10005 .so tmac.p .RP .TL Berkeley Pascal User's Manual .br Version 1.1 \- April, 1979 .AU William N. Joy* .AU Susan L. Graham* .AU Charles B. Haley** .AI Computer Science Division .if n Department of Electrical Engineering .if n and Computer Science .if t Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 ...AI ...MH .AB .FS \s-2(C)\s0 1977, 1979 William N. Joy, Susan L. Graham, Charles B. Haley .FE .FS * Author's current address: Bell Laboratories, Murray Hill NJ 07974 .FE .PP Berkeley Pascal is designed for interactive instructional use and runs on the \s-2PDP\s0 11 family of computers. It produces interpretive code, providing fast translation at the expense of slower execution speed. An execution profiler and Wirth's cross reference program are also available with the system. ..An interpretive implementation for the \s-2VAX\s0 11/780 is nearly complete, ..and a compiled version of the system, utilizing the code generator of ..the portable C compiler, is under construction, and should be completed by ..September, 1979. .PP The system supports full Pascal, with the exception of .B procedure and .B function names as parameters. The language accepted is very close to `standard' Pascal, with only a small number of extensions. .PP The .UM gives a list of sources relating to the .UX system, the Pascal language, and the .UP system. Basic usage examples are provided for the Pascal interpreter components .PI , .X , .IX , and .XP . Errors commonly encountered in these programs are discussed. Details are given of special considerations due to the interactive implementation. A number of examples are provided including many dealing with input/output. An appendix supplements Wirth's .I "Pascal Report" to form the full definition of the Berkeley implementation of the language. .AE .ND .SH 'if n 'ND Introduction .PP .FS * The financial support of the first and second authors' work by the National Science Foundation under grants MCS74-07644-A03 and MCS78-07291, and the first author's work by an .SM IBM Graduate Fellowship are gratefully acknowledged. .FE .FS ** Author's present address: Bell Laboratories, Murray Hill, NJ 07974. .FE The .UP .UM consists of five major sections and an appendix. In section 1 we give sources of information about .UX , about the programming language Pascal, and about the Berkeley implementation of the language. Section 2 introduces the Berkeley implementation and provides a number of basic examples. Section 3 discusses the error diagnostics produced by the translator .PI and the runtime interpreter .X . Section 4 describes input/output with special attention given to features of the interactive implementation and to features unique to .UX . Section 5 gives details on the components of the system and explanation of all relevant options. The .UM concludes with an appendix to Wirth's .I "Pascal Report" with which it forms a precise definition of the implementation. .SH History of the implementation .PP The first Berkeley system was written by Ken Thompson in early 1976. The main features of the present system result from the work of Charles Haley and William Joy during the latter half of 1976. Earlier versions of this system have been in use since January, 1977. Computer Science .if t Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 ...AI ...MH .AB .FS \s-2(C)\s0 1977, 1979 William N. Joy, Susan L. Graham, Charles B. Haley .FE .FS * Author's current address: Bell Laboratodoc/2.10/pascal/puman1.n 444 3 12 24740 3141164261 10026 .if \n(xx .bp .if !\n(xx \{\ .so tmac.p \} .if n 'ND 'nr H1 0 .NH Sources of information .PP This section lists the resources available on the UC Berkeley campus for information about general features of .UX , text editing, the Pascal language, and the .UP implementation, concluding with a list of references. The available documents include both so-called standard documents \- those distributed with all .UX system \- and documents (such as this one) written at Berkeley. .NH 2 Where to get documentation .PP On the UC Berkeley campus, documentation is available at the Computer Center Library, room 218B Evans Hall. The library is open from 8:00 A.M. to 5:00 P.M. Monday through Friday. Current documentation for most of the .UX system is also available ``on line'' at your terminal. Details on getting such documentation interactively are given in section 1.3. .NH 2 Computer Center short courses .PP For those not enrolled in Computer Science Division courses, and who have no prior experience using .UX , the short-courses offered by the staff of the Computer Center are highly recommended. These courses are offered free of charge, and are usually held at the beginning of each quarter. The two most valuable short courses for the Berkeley Pascal user are the ones dealing with basic use of .UX , and with text editing. If you are unable to attend the short courses, documents for these courses are available at the Computer Center Library, and are recommended. The documents are in a tutorial format, so it is possible to use them on your own. .NH 2 Documentation describing UNIX .PP The following documents are those recommended as tutorial and reference material about the .UX system. We give the documents with the introductory and tutorial materials first, the reference materials last. .SH UNIX For Beginners \- Second Edition .PP This document is the basic tutorial for .UX available with the standard system. .SH Communicating with UNIX .PP This is also a basic tutorial on the system and assumes no previous familiarity with computers; it was written at Berkeley and is used in the short courses. .SH An introduction to the C shell .PP This document introduces .I csh, the shell in common use at Berkeley, and provides a good deal of general description about the way in which the system functions. It provides a useful glossary of terms used in discussing the system. .SH UNIX Programmer's Manual .PP This manual is the major source of details on the components of the .UX system. It consists of an Introduction, a permuted index, and eight command sections. Section 1 consists of descriptions of most of the ``commands'' of .UX . Most of the other sections have limited relevance to the user of Berkeley Pascal, being of interest mainly to system programmers. The manual is available from the Computer Center Library. .PP U\s-2NIX\s0 documentation often refers the reader to sections of the manual. Such a reference consists of a command name and a section number or name. An example of such a reference would be: .I ed (1).\(dg .FS \(dg Older systems may refer to the manual sections using roman numerals, e.g. \fIpi\fR (6). .FE Here .I ed is a command name \- the standard .UX text editor, and `(1)' indicates that its documentation is in section 1 of the manual. .PP The pieces of the Berkeley Pascal system are .I pi (6), .X (6), the combined Pascal translator and interpretive executor .IX (6), the Pascal execution profiler .XP (6), the Pascal cross-reference generator .I pxref (6), and the filter which interprets carriage control .I pcc (6). .PP It is possible to obtain a copy of a manual section by using the .I man (1) command. To get the Pascal documentation just described one could issue the command: .LS % \*bman new pi\fP .LE to the shell. The user input here is shown in .B "bold face" ; the `% ', which was printed by the shell as a prompt, is not. Similarly the command: .LS % \*bman man\fP .LE asks the .I man command to describe itself. .NH 2 Text editing documents .PP The following documents introduce the various .UX text editors. Most Berkeley users will use a version of the text editor .I ex; either .I edit, which is a version of .I ex for new and casual users, .I ex itself, or .I vi (visual) which focuses on the display editing portion of .I ex.* .FS * Several other editors are available also. The standard .UX editor .I ed, the \s-2RAND\s0 editor .I re, and an (undocumented) version of .I teco. .FE .SH A Tutorial Introduction to the UNIX Text Editor .PP This document, written by Brian Kernighan of Bell Laboratories, is a tutorial for the standard .UX text editor .I ed. It introduces you to the basics of text editing, and provides enough information to meet day-to-day editing needs, for .I ed users. .SH Edit: A tutorial .PP This introduces the use of .I edit, an editor similar to .I ed which provides a more hospitable environment for beginning users. The short courses on editing taught by the Computer Center use this document. .SH Ex/edit Command Summary .PP This summarizes the features of the editors .I ex and .I edit in a concise form. If you have used a line oriented editor before this summary alone may be enough to get you started. .SH Ex Reference Manual \- Version 2.0 .PP A complete reference on the features of .I ex and .I edit. .SH An Introduction to Display Editing with Vi .PP .I Vi is a display oriented text editor. It can be used on most any \s-2CRT\s0 terminal, and uses the screen as a window into the file you are editing. Changes you make to the file are reflected in what you see. This manual serves both as an introduction to editing with .I vi and a reference manual. .SH Vi Quick Reference .PP This reference card is a handy quick guide to .I vi; you should get one when you get the introduction to .I vi. .NH 2 Pascal documents \- The language .PP This section describes the documents on the Pascal language which are likely to be most useful to the Berkeley Pascal user. Complete references for these documents are given in section 1.7. .SH Pascal User Manual .PP By Kathleen Jensen and Niklaus Wirth, the .I "User Manual" provides a tutorial introduction to the features of the language Pascal, and serves as an excellent quick-reference to the language. The reader with no familiarity with Algol-like languages may prefer one of the Pascal text books listed below, as they provide more examples and explanation. Particularly important here are pages 116-118 which define the syntax of the language. Sections 13 and 14 and Appendix F pertain only to the 6000-3.4 implementation of Pascal. .SH Pascal Report .PP By Niklaus Wirth, this document is bound with the .I "User Manual." It is the guiding reference for implementors and the fundamental definition of the language. Some programmers find this report too concise to be of practical use, preferring the .I "User Manual" as a reference. .SH Books on Pascal .PP Several good books which teach Pascal or use it as a medium are available. The books by Wirth .I "Systematic Programming" and .I "Algorithms + Data Structures = Programs" use Pascal as a vehicle for teaching programming and data structure concepts respectively. They are both recommended. Other books on Pascal are listed in the references below. .NH 2 Pascal documents \- The Berkeley Implementation .PP This section describes the documentation which is available describing the Berkeley implementation of Pascal. .SH User's Manual .PP The document you are reading is the .I "User's Manual" for .UP . We often refer the reader to the Jensen-Wirth .I "User Manual" mentioned above, a different document with a similar name. .SH Manual sections .PP The sections relating to Pascal in the .I "UNIX Programmer's Manual" are .IX (6), .PI (6), .I pcc (6), .X (6), .I pxp (6), and .I pxref (6). These sections give a description of each program, summarize the available options, indicate files used by the program, give basic information on the diagnostics produced and include a list of known bugs. .SH Implementation notes .PP For those interested in the internal organization of the Berkeley Pascal system there are a series of .I "Implementation Notes" describing these details. The .I "Berkeley Pascal PXP Implementation Notes" describe the Pascal interpreter .X \|; and the .I "Berkeley Pascal PX Implementation Notes" describe the structure of the execution profiler .I pxp . .br .ne 8 .NH 2 References .de re .sp .IP 'nf .. .SH UNIX Documents .re .I "Communicating With UNIX" Computer Center University of California, Berkeley January, 1978. .re .I "Edit: a tutorial" Ricki Blau and James Joyce Computing Services Division, Computing Affairs University of California, Berkeley January, 1978. .re .I "Ex/edit Command Summary" Computer Center University of California, Berkeley August, 1978. .re .I "Ex Reference Manual \- Version 2.0" .I "An Introduction to Display Editing with Vi" .I "Vi Quick Reference" William Joy Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley April, 1979. .re .I "An Introduction to the C shell" William Joy Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley January, 1979. .re Brian W. Kernighan .I "UNIX for Beginners \- Second Edition" Bell Laboratories Murray Hill, New Jersey. .re Brian W. Kernighan .I "A Tutorial Introduction to the UNIX Text Editor" Bell Laboratories Murray Hill, New Jersey. .re Dennis M. Ritchie and Ken Thompson .I "The UNIX Time Sharing System" Communications of the ACM July 1974 365-378. .re B. W. Kernighan and M. D. McIlroy .I "UNIX Programmer's Manual \- Seventh Edition" Bell Laboratories Murray Hill, New Jersey December, 1978. .ne 12 .SH Pascal Language Documents .re Conway, Gries and Zimmerman .I "A Primer on PASCAL" Winthrop, Cambridge Mass. 1976, 433 pp. .re Kathleen Jensen and Niklaus Wirth .I "Pascal \- User Manual and Report" Springer-Verlag, New York. 1975, 167 pp. .re C. A. G. Webster .I "Introduction to Pascal" Heyden and Son, New York 1976, 129pp. .re Niklaus Wirth .I "Algorithms + Data structures = Programs" Prentice-Hall, New York. 1976, 366 pp. .re Niklaus Wirth .I "Systematic Programming" Prentice-Hall, New York. 1973, 169 pp. .SH Berkeley Pascal documents .PP The following documents are available from the Computer Center Library at the University of California, Berkeley. .nf .re William N. Joy, Susan L. Graham, and Charles B. Haley .I "Berkeley Pascal User's Manual \- Version 1.1" April, 1979. .re William N. Joy .I "Berkeley Pascal PX Implementation Notes" Version 1.1, April 1979. .re William N. Joy .I "Berkeley Pascal PXP Implemetation Notex" Version 1.1, April 1979. rmat, so it is possible to use tdoc/2.10/pascal/puman2.n 444 3 12 51562 3141164256 10035 .if \n(xx .bp .if !\n(xx \{\ .so tmac.p \} 'if n 'ND .nr H1 1 .NH Basic UNIX Pascal .PP The following sections explain the basics of using .UP . In examples here we use the text editor .I ex (6). Users of the text editor .I ed should have little trouble following these examples, as .I ex is similar to .I ed . We use .I ex because it allows us to make clearer examples.\(dg .FS \(dg Users with \s-2CRT\s0 terminals should find the editor .I vi more pleasant to use; we do not show its use here because its display oriented nature makes it difficult to illustrate. .FE The new .UX user will find it helpful to read one of the text editor documents described in section 1.4 before continuing with this section. .NH 2 A first program .PP To prepare a program for .UP we first need to have an account on .UX and to `login' to the system on this account. These procedures are described in the documents .I "Communicating with UNIX" and .I "UNIX for Beginners". .PP Once we are logged in we need to choose a name for our program; let us call it `first' as this is the first example. We must also choose a name for the file in which the program will be stored. The .UP system requires that programs reside in files which have names ending with the sequence `.p' so we will call our file `first.p'. .PP A sample editing session to create this file would begin: .LS % \*bex first.p\fR "first.p" No such file or directory : .LE We didn't expect the file to exist, so the error diagnostic doesn't bother us. The editor now knows the name of the file we are creating. The `:' prompt indicates that it is ready for command input. We can add the text for our program using the `append' command as follows. .LS :\*bappend\fR .B program first(output) begin writeln('Hello, world!') end. \&. .R : .LE The line containing the single `\*b.\fR' character here indicated the end of the appended text. The `:' prompt indicates that .I ex is ready for another command. As the editor operates in a temporary work space we must now store the contents of this work space in the file `first.p' so we can use the Pascal translator and executor .IX on it. .LS :\*bwrite\fR "first.p" 4 lines, 59 characters :\*bquit\fR % .LE We wrote out the file from the edit buffer here with the `write' command, and .I ex indicated the number of lines and characters written. We then quit the editor, and now have a prompt from the shell.\(dd .FS \(dd Our examples here assume you are using .I csh. .FE .KS .PP We are ready to try to translate and execute our program. .DS .tr '\(aa^\(ua % \*bpix first.p\fR .so firstout .tr ''^^ % .DE .KE .PP The translator first printed a syntax error diagnostic. The number 2 here indicates that the rest of the line is an image of the second line of our program. The translator is saying that it expected to find a `;' before the keyword .B begin on this line. If we look at the Pascal syntax charts in the Jensen-Wirth .I "User Manual" , or at some of the sample programs therein, we will see that we have omitted the terminating `;' of the .B program statement on the first line of our program. .PP One other thing to notice about the error diagnostic is the letter `e' at the beginning. It stands for `error', indicating that our input was not legal Pascal. The fact that it is an `e' rather than an `E' indicates that the translator managed to recover from this error well enough that generation of code and execution could take place. Execution is possible whenever no fatal `E' errors occur during translation. The other classes of diagnostics are `w' warnings, which do not necessarily indicate errors in the program, but point out inconsistencies which are likely to be due to program bugs, and `s' standard-Pascal violations.\*(dg .FS \*(dgThe standard Pascal warnings occur only when the associated .B s translator option is enabled. The .B s option is discussed in sections 5.1 and A.6 below. Warning diagnostics are discussed at the end of section 3.2, the associated .B w option is described in section 5.2. .FE .PP After completing the translation of the program to interpretive code, the Pascal system indicates that execution of the translated program began. The output from the execution of the program then appeared. At program termination, the Pascal runtime system indicated the number of statements executed, and the amount of cpu time used, with the resolution of the latter being 1/60'th of a second. .PP Let us now fix the error in the program and translate it to a permanent object code file .I obj using .PI . The program .PI translates Pascal programs but stores the object code instead of executing it\*(dd. .FS \*(ddThis script indicates some other useful approaches to debugging Pascal programs. As in .I ed we can shorten commands in .I ex to an initial prefix of the command name as we did with the .I substitute command here. We have also used the `!' shell escape command here to execute other commands with a shell without leaving the editor. .FE .LS % \*bex first.p\fR "first.p" 4 lines, 59 characters :\*b1 print\fR program first(output) :\*bs/$/;\fR program first(output); :\*bwrite\fR "first.p" 4 lines, 60 characters :\*b!pi %\fR !pi first.p ! :\*bquit\fR % .LE The first command issued from .I ex with the `!' involved the use of the `%' character which stands in this command for the file we are editing. .I Ex made this substitution, and then echoed back the expanded line before executing the command. When the command finished, the editor echoed the character `!' so that we would know it was done. .PP If we now use the .UX .I ls list files command we can see what files we have: .LS % \*bls\fR first.p obj % .LE The file `obj' here contains the Pascal interpreter code. We can execute this by typing: .LS % \*bpx obj\fR .so firstobjout % .LE Alternatively, the command: .LS % \*bobj\fR .LE will have the same effect. Some examples of different ways to execute the program follow. .LS % \*bpx\fR .so firstobjout % \*bpi -p first.p\fR % \*bpx obj\fR .so firstobjout2 % \*bpix -p first.p\fR .so firstobjout2 % .LE .PP Note that .I px will assume that `obj' is the file we wish to execute if we don't tell it otherwise. The last two translations use the .B \-p no-post-mortem option to eliminate execution statistics and `Execution begins' and `Execution terminated' messages. See section 5.2 for more details. If we now look at the files in our directory we will see: .LS % \*bls\fR first.p obj % .LE We can give our object program a name other than `obj' by using the move command .I mv (1). Thus to name our program `hello': .LS % \*bmv obj hello\fR % \*bhello\fR Hello, world! % \*bls\fR first.p hello % .LE .KS Finally we can get rid of the Pascal object code by using the .I rm (1) remove file command, e.g.: .LS % \*brm hello\fR % \*bls\fR first.p % .LE .KE .PP For small programs which are being developed .IX tends to be more convenient to use than .PI and .X . Except for absence of the .I obj file after a .IX run, a .IX command is equivalent to a .PI command followed by a .X command. For larger programs, where a number of runs testing different parts of the program are to be made, .PI is useful as this .I obj file can be executed any desired number of times. .NH 2 A larger program .PP Suppose that we have used the editor to put a larger program in the file `bigger.p'. We can list this program with line numbers by using the program .I num i.e.: .LS % \*bnum bigger.p\fR .so bigger3.p % .LE This program is similar to program 4.9 on page 30 of the Jensen-Wirth .I "User Manual" . A number of problems have been introduced into this example for pedagogical reasons. .br .ne 8 .PP If we attempt to translate and execute the program using .IX we get the following response: .LS % \*bpix bigger.p\fR .so bigout1 % .LE .PP Since there were fatal `E' errors in our program, no code was generated and execution was necessarily suppressed. One thing which would be useful at this point is a listing of the program with the error messages. We can get this by using the command: .LS % \*bpi -l bigger.p\fR .LE There is no point in using .IX here, since we know there are fatal errors in the program. This command will produce the output at our terminal. If we are at a terminal which does not produce a hard copy we may wish to print this listing off-line on a line printer\*(dg. .FS \*(dgAt Berkeley, the line printer for the Cory Hall system is in Room 199B. The line printers for the Computer Center systems are in the basement of Evans Hall. .FE We can do this with the command: .LS % \*bpi -l bigger.p | lpr\fR .LE .PP In the next few sections we will illustrate various aspects of the Berkeley Pascal system by correcting this program. .NH 2 Correcting the first errors .PP Most of the errors which occurred in this program were .I syntactic errors, those in the format and structure of the program rather than its content. Syntax errors are flagged by printing the offending line, and then a line which flags the location at which an error was detected. The flag line also gives an explanation stating either a possible cause of the error, a simple action which can be taken to recover from the error so as to be able to continue the analysis, a symbol which was expected at the point of error, or an indication that the input was `malformed'. In the last case, the recovery may skip ahead in the input to a point where analysis of the program can continue. .PP In this example, the first error diagnostic indicates that the translator detected a comment within a comment. While this is not considered an error in `standard' Pascal, it usually corresponds to an error in the program which is being translated. In this case, we have accidentally omitted the trailing `*)' of the comment on line 8. We can begin an editor session to correct this problem by doing: .LS % \*bex bigger.p\fR "bigger.p" 24 lines, 512 characters :\*b8s/$/ *)\fR s = 32; (* 32 character width for interval [x, x+1] *) : .LE .PP The second diagnostic, given after line 16, indicates that the keyword .B do was expected before the keyword .B begin in the .B for statement. If we examine the .I statement syntax chart on page 118 of the Jensen-Wirth .I "User Manual" we will discover that .B do is a necessary part of the .B for statement. Similarly, we could have referred to section C.3 of the Jensen-Wirth .I "User Manual" to learn about the .B for statement and gotten the same information there. It is often useful to refer to these syntax charts and to the relevant sections of this book. .PP We can correct this problem by first scanning for the keyword .B for in the file and then substituting the keyword .B do to appear in front of the keyword .B begin there. Thus: .LS :\*b/for\fR for i := 0 to lim begin :\*bs/begin/do &\fR for i := 0 to lim do begin : .LE The next error in the program is easy to pinpoint. On line 18, we didn't hit the shift key and got a `9' instead of a `)'. The translator diagnosed that `x9' was an undefined variable and, later, that a `)' was missing in the statement. It should be stressed that .PI is not suggesting that you should insert a `)' before the `;'. It is only indicating that making this change will help it to be able to continue analyzing the program so as to be able to diagnose further errors. You must then determine the true cause of the error and make the appropriate correction to the source text. .PP This error also illustrates the fact that one error in the input may lead to multiple error diagnostics. .I Pi attempts to give only one diagnostic for each error, but single errors in the input sometimes appear to be more than one error. It is also the case that .PI may not detect an error when it occurs, but may detect it later in the input. This would have happened in this example if we had typed `x' instead of `x9'. .PP The translator next detected, on line 19, that the function .I Round and the variable .I h were undefined. It does not know about .I Round because .UP normally distinguishes between upper- and lower-case. On .UX lower-case is preferred\*(dg, .FS \*(dgOne good reason for using lower-case is that it is easier to type. .FE and all keywords and built-in .B procedure and .B function names are composed of lower-case letters, just as they are in the Jensen-Wirth .I "Pascal Report" . Thus we need to use the function .I round here. As far as .I h is concerned, we can see why it is undefined if we look back to line 9 and note that its definition was lost in the non-terminated comment. This diagnostic need not, therefore, concern us. .PP The next error which occurred in the program caused the translator to insert a `;' before the statement calling .I writeln on line 23. If we examine the program around the point of error we will see that the actual error is that the keyword .B until and an associated expression have been omitted here. Note that the diagnostic from the translator does not indicate the actual error, and is somewhat misleading. The translator made the correction which seemed to be most plausible. As the omission of a `;' character is a common mistake, the translator chose to indicate this as a possible fix here. It later detected that the keyword .B until was missing, but not until it saw the keyword .B end on line 24. The combination of these diagnostics indicate to us the true problem. .PP The final syntactic error message indicates that the translator needed an .B end keyword to match the .B begin at line 15. Since the .B end at line 24 is supposed to match this .B begin , we can infer that another .B begin must have been mismatched, and have matched this .B end . Thus we see that we need an .B end to match the .B begin at line 16, and to appear before the final .B end . We can make these corrections: .LS :\*b/x9/s//x)\fR y := exp(-x) * sin(i * x); :\*b+s/Round/round\fR n := round(s * y) + h; :\*b/write\fR write(' '); :\*b/\fR writeln('*') :\*binsert\fR \*buntil n = 0;\fR \&\*b.\fR :\*b$\fR end. :\*binsert\fR \*bend\fR \&\*b.\fR : .LE .PP At the end of each .B procedure or .B function and the end of the .B program the translator summarizes references to undefined variables and improper usages of variables. It also gives warnings about potential errors. In our program, the summary errors do not indicate any further problems but the warning that .I c is unused is somewhat suspicious. Examining the program we see that the constant was intended to be used in the expression which is an argument to .I sin , so we can correct this expression, and translate the program. We have now made a correction for each diagnosed error in our program. .LS :\*b?i ?s//c /\fR y := exp(-x) * sin(c * x); :\*bwrite\fR "bigger.p" 26 lines, 538 characters :\*b!pi %\fR !pi bigger.p ! :\*bquit\fR % .LE It should be noted that the translator suppresses warning diagnostics for a particular .B procedure , .B function or the main .B program when it finds severe syntax errors in that part of the source text. This is to prevent possibly confusing and incorrect warning diagnostics from being produced. Thus these warning diagnostics may not appear in a program with bad syntax errors until these errors are corrected. .KS .PP We are now ready to execute our program for the first time. We will do so in the next section after giving a listing of the corrected program for reference purposes. .ne 15 .LS % \*bnumber bigger.p\fR .so bigger6.p % .LE .NH 2 Executing the second example .PP We are now ready to execute the second example. The following output was produced by our first run. .LS % \*bpx\fR .so bigout2 % .LE Here the interpreter is presenting us with a runtime error diagnostic. It detected a `division by zero' at line 17. Examining line 17, we see that we have written the statement `x := d / i' instead of `x := d * i'. We can correct this and rerun the program: .ne 10 .LS % \*bex bigger.p\fR "bigger.p" 26 lines, 538 characters :\*b17\fR x := d / i :\*bs'/'*\fR x := d * i :\*bwrite\fR "bigger.p" 26 lines, 538 characters :\*b!pix %\fR !pix bigger.p .so bigout3 ! :\*bq\fR % .LE .KS .PP This appears to be the output we wanted. We could now save the output in a file if we wished by using the shell to redirect the output: .LS % \*bpx > graph\fR .LE .KE We can use .I cat (1) to see the contents of the file graph. We can also make a listing of the graph on the line printer without putting it into a file, e.g. .LS % \*bpx | lpr\fR .so bigout4 % .LE Note here that the statistics lines came out on our terminal. The statistics line comes out on the diagnostic output (unit 2.) There are two ways to get rid of the statistics line. We can redirect the statistics message to the printer using the syntax `|\|&' to the shell rather than `|', i.e.: .LS % \*bpx |\|& lpr\fR % .LE or we can translate the program with the .B p option disabled on the command line as we did above. This will disable all post-mortem dumping including the statistics line, thus: .LS % \*bpi -p bigger.p\fR % \*bpx | lpr\fR % .LE This option also disables the statement limit which normally guards against infinite looping. You should not use it until your program is debugged. Also if .B p is specified and an error occurs, you will not get run time diagnostic information to help you determine what the problem is. .NH 2 Formatting the program listing .PP It is possible to use special lines within the source text of a program to format the program listing. An empty line (one with no characters on it) corresponds to a `space' macro in an assembler, leaving a completely blank line without a line number. A line containing only a control-l (form-feed) character will cause a page eject in the listing with the corresponding line number suppressed. This corresponds to an `eject' pseudo-instruction. See also section 5.2 for details on the .B n and .B i options of .PI . .NH 2 Execution profiling .PP An execution profile consists of a structured listing of (all or part of) a program with information about the number of times each statement in the program was executed for a particular run of the program. These profiles can be used for several purposes. In a program which was abnormally terminated due to excessive looping or recursion or by a program fault, the counts can facilitate location of the error. Zero counts mark portions of the program which were not executed; during the early debugging stages they should prompt new test data or a re-examination of the program logic. The profile is perhaps most valuable, however, in drawing attention to the (typically small) portions of the program that dominate execution time. This information can be used for source level optimization. .SH An example .PP A prime number is a number which is divisible only by itself and the number one. The program .I primes , written by Niklaus Wirth, determines the first few prime numbers. In translating the program we have specified the .B z option to .IX . This option causes the translator to generate counters and count instructions sufficient in number to determine the number of times each statement in the program was executed.\*(dg .FS \*(dgThe counts are completely accurate only in the absence of runtime errors and nonlocal .B goto statements. This is not generally a problem, however, as in structured programs nonlocal .B goto statements occur infrequently, and counts are incorrect after abnormal termination only when the .I "upward look" described below to get a count passes a suspended call point. .FE When execution of the program completes, either normally or abnormally, this count data is written to the file .I pmon.out in the current directory.\*(dd .FS \*(dd\c .I Pmon.out has a name similar to .I mon.out the monitor file produced by the profiling facility of the C compiler .I cc (1). See .I prof (1) for a discussion of the C compiler profiling facilities. .FE It is then possible to prepare an execution profile by giving .XP the name of the file associated with this data, as was done in the following example. .LS % \*bpix -l -z primes.p\fR .so primeout1 % .LE .SH Discussion .PP The header lines of the outputs of .IX and .XP in this example indicate the version of the translator and execution profiler in use at the time this example was prepared. The time given with the file name (also on the header line) indicates the time of last modification of the program source file. This time serves to .I "version stamp" the input program. .I Pxp also indicates the time at which the profile data was gathered. .LS % \*bpxp -z primes.p\fR .so primeout2 % .LE .KE .PP To determine the number of times a statement was executed, one looks to the left of the statement and finds the corresponding vertical bar `|'. If this vertical bar is labelled with a count then that count gives the number of times the statement was executed. If the bar is not labelled, we look up in the listing to find the first `|' which directly above the original one which has a count and that is the answer. Thus, in our example, .I k was incremented 157 times on line 18, while the .I write procedure call on line 24 was executed 48 times as given by the count on the .B repeat . .PP More information on .I pxp can be found in its manual section .XP (6) and in sections 5.4, 5.5 and 5.10. ert a `)' before the `;'. It is only indicating that making this change will help it to be able to continue analyzing the program so as to be doc/2.10/pascal/puman3.n 444 3 12 47406 3141164255 10037 .if \n(xx .bp .if !\n(xx \{\ .so tmac.p \} .if n 'ND .nr H1 2 .NH Error diagnostics .PP This section of the .UM discusses the error diagnostics of the programs .PI and .X . .I Pix is a simple but useful program which invokes .PI and .X to do all the real processing. See its manual section .IX (6) and section 5.2 below for more details. .NH 2 Translator syntax errors .PP A few comments on the general nature of the syntax errors usually made by Pascal programmers and the recovery mechanisms of the current translator may help in using the system. .SH Illegal characters .PP Characters such as `$', `!', and `@' are not part of the language Pascal. If they are found in the source program, and are not part of a constant string, a constant character, or a comment, they are considered to be `illegal characters'. This can happen if you leave off an opening string quote `\(aa'. Note that the character `"', although used in English to quote strings, is not used to quote strings in Pascal. Most non-printing characters in your input are also illegal except in character constants and character strings. Except for the tab and form feed characters, which are used to ease formatting of the program, non-printing characters in the input file print as the character `?' so that they will show in your listing. .SH String errors .PP There is no character string of length 0 in Pascal. Consequently the input `\(aa\(aa' is not acceptable. Similarly, encountering an end-of-line after an opening string quote `\(aa' without encountering the matching closing quote yields the diagnostic ``Unmatched \(aa for string''. It is permissible to use the character `#' instead of `\'' to delimit character and constant strings for portability reasons. For this reason, a spuriously placed `#' sometimes causes the diagnostic about unbalanced quotes. Similarly, a `#' in column one is used when preparing programs which are to be kept in multiple files. See section 5.9 for details. .SH Comments in a comment, non-terminated comments .PP As we saw above, these errors are usually caused by leaving off a comment delimiter. You can convert parts of your program to comments without generating this diagnostic since there are two different kinds of comments \- those delimited by `{' and `}', and those delimited by `(*' and `*)'. Thus consider: .LS { This is a comment enclosing a piece of program a := functioncall; (* comment within comment *) procedurecall; lhs := rhs; (* another comment *) } .LE .PP By using one kind of comment exclusively in your program you can use the other delimiters when you need to ``comment out'' parts of your program\*(dg. .FS \*(dgIf you wish to transport your program, especially to the 6000-3.4 implementation, you should use the character sequence `(*' to delimit comments. For transportation over the .I rcslink to Pascal 6000-3.4, the character `#' should be used to delimit characters and constant strings. .FE In this way you will also allow the translator to help by detecting statements accidentally placed within comments. .PP If a comment does not terminate before the end of the input file, the translator will point to the beginning of the comment, indicating that the comment is not terminated. In this case processing will terminate immediately. See the discussion of ``QUIT'' below. .SH Digits in numbers .PP This part of the language is a minor nuisance. Pascal requires digits in real numbers both before and after the decimal point. Thus the following statements, which look quite reasonable to .SM FORTRAN .NL users, generate diagnostics in Pascal: .LS .so digitsout .LE These same constructs are also illegal as input to the Pascal interpreter .I px . .SH Replacements, insertions, and deletions .PP When a syntax error is encountered in the input text, the parser invokes an error recovery procedure. This procedure examines the input text immediately after the point of error and considers a set of simple corrections to see whether they will allow the analysis to continue. These corrections involve replacing an input token with a different token, inserting a token, or replacing an input token with a different token. Most of these changes will not cause fatal syntax errors. The exception is the insertion of or replacement with a symbol such as an identifier or a number; in this case the recovery makes no attempt to determine .I which identifier or .I what number should be inserted, hence these are considered fatal syntax errors. .PP Consider the following example. .LS % \*bpix -l synerr.p\fR .tr -- .so synerrout % .LE The only surprise here may be that Pascal does not have an exponentiation operator, hence the complaint about `**'. This error illustrates that, if you assume that the language has a feature which it does not, the translator diagnostic may not indicate this, as the translator is unlikely to recognize the construct you supply. .SH Undefined or improper identifiers .PP If an identifier is encountered in the input but is undefined, the error recovery will replace it with an identifier of the appropriate class. Further references to this identifier will be summarized at the end of the containing .B procedure or .B function or at the end of the .B program if the reference occurred in the main program. Similarly, if an identifier is used in an inappropriate way, e.g. if a .B type identifier is used in an assignment statement, or if a simple variable is used where a .B record variable is required, a diagnostic will be produced and an identifier of the appropriate type inserted. Further incorrect references to this identifier will be flagged only if they involve incorrect use in a different way, with all incorrect uses being summarized in the same way as undefined variable uses are. .SH Expected symbols, malformed constructs .PP If none of the above mentioned corrections appear reasonable, the error recovery will examine the input to the left of the point of error to see if there is only one symbol which can follow this input. If this is the case, the recovery will print a diagnostic which indicates that the given symbol was `Expected'. .PP In cases where none of these corrections resolve the problems in the input, the recovery may issue a diagnostic that indicates that the input is ``malformed''. If necessary, the translator may then skip forward in the input to a place where analysis can continue. This process may cause some errors in the text to be missed. .PP Consider the following example: .LS % \*bpix -l synerr2.p\fR .so synerr2out % .LE Here we misspelled .I input and gave a .SM FORTRAN style variable declaration which the translator diagnosed as a `Malformed declaration'. When, on line 6, we used `(' and `)' for subscripting (as in .SM FORTRAN ) rather than the `[' and `]' which are used in Pascal, the translator noted that .I a was not defined as a .B procedure . This occurred because .B procedure and .B function argument lists are delimited by parentheses in Pascal. As it is not permissible to assign to procedure calls the translator diagnosed a malformed statement at the point of assignment. .SH Expected and unexpected end-of-file, ``QUIT'' .PP If the translator finds a complete program, but there is more non-comment text in the input file, then it will indicate that an end-of-file was expected. This situation may occur after a bracketing error, or if too many .B end s are present in the input. The message may appear after the recovery says that it ``Expected \`.\'\|'' since `.' is the symbol that terminates a program. .PP If severe errors in the input prohibit further processing the translator may produce a diagnostic followed by ``QUIT''. One example of this was given above \- a non-terminated comment; another example is a line which is longer than 160 characters. Consider also the following example. .LS % \*bpix -l mism.p\fR .so mismout % .LE .NH 2 Translator semantic errors .PP The extremely large number of semantic diagnostic messages which the translator produces make it unreasonable to discuss each message or group of messages in detail. The messages are, however, very informative. We will here explain the typical formats and the terminology used in the error messages so that you will be able to make sense out of them. In any case in which a diagnostic is not completely comprehensible you can refer to the .I "User Manual" by Jensen and Wirth for examples. .SH Format of the error diagnostics .PP As we saw in the example program above, the error diagnostics from the Pascal translator include the number of a line in the text of the program as well as the text of the error message. While this number is most often the line where the error occurred, it is occasionally the number of a line containing a bracketing keyword like .B end or .B until . In this case, the diagnostic may refer to the previous statement. This occurs because of the method the translator uses for sampling line numbers. The absence of a trailing `;' in the previous statement causes the line number corresponding to the .B end or .B until . to become associated with the statement. As Pascal is a free-format language, the line number associations can only be approximate and may seem arbitrary to some users. This is the only notable exception, however, to reasonable associations. .SH Incompatible types .PP Since Pascal is a strongly typed language, many semantic errors manifest themselves as type errors. These are called `type clashes' by the translator. The types allowed for various operators in the language are summarized on page 108 of the Jensen-Wirth .I "User Manual" . It is important to know that the Pascal translator, in its diagnostics, distinguishes between the following type `classes': .br .ne 8 .TS center; lew(10) le le le le. array Boolean char file integer pointer real record scalar string .TE These words are plugged into a great number of error messages. Thus, if you tried to assign an .I integer value to a .I char variable you would receive a diagnostic like the following: .LS .so clashout .LE In this case, one error produced a two line error message. If the same error occurs more than once, the same explanatory diagnostic will be given each time. .SH Scalar .PP The only class whose meaning is not self-explanatory is `scalar'. Scalar has a precise meaning in the Jensen-Wirth .I "User Manual" where, in fact, it refers to .I char , .I integer , .I real , and .I Boolean types as well as the enumerated types. For the purposes of the Pascal translator, scalar in an error message refers to a user-defined, enumerated type, such as .I ops in the example above or .I color in .LS \*btype\fP color = (red, green, blue) .LE For integers, the more explicit denotation .I integer is used. Although it would be correct, in the context of the .I "User Manual" to refer to an integer variable as a .I scalar variable .PI prefers the more specific identification. .SH Function and procedure type errors .PP For built-in procedures and functions, two kinds of errors occur. If the routines are called with the wrong number of arguments a message similar to: .LS .so sinout1 .LE is given. If the type of the argument is wrong, a message like .LS .so sinout2 .LE is produced. A few functions and procedures implemented in Pascal 6000-3.4 are diagnosed as unimplemented in Berkeley Pascal, notably those related to .B segmented files. .SH Can't read and write scalars, etc. .PP The messages which state that scalar (user-defined) types cannot be written to and from files are often mysterious. It is in fact the case that if you define .LS \*btype\fP color = (red, green, blue) .LE the translator does not associate these constants with the strings `red', `green', and `blue' in any way. If you wish such an association to be made, you will have to write a routine to make it. Note, in particular, that you can only read characters, integers and real numbers from text files. You cannot read strings or Booleans. It is possible to make a .LS \*bfile of\fP color .LE but the representation is binary rather than string. .SH Expression diagnostics .PP The diagnostics for semantically ill-formed expressions are very explicit. Consider this sample translation: .LS % \*bpi -l expr.p\fP .so exprout % .LE This example is admittedly far-fetched, but illustrates that the error messages are sufficiently clear to allow easy determination of the problem in the expressions. .SH Type equivalence .PP Several diagnostics produced by the Pascal translator complain about `non-equivalent types'. In general, Berkeley Pascal considers variables to have the same type only if they were declared with the same constructed type or with the same type identifier. Thus, the variables .I x and .I y declared as .LS \*bvar\fP x: ^ integer; y: ^ integer; .LE do not have the same type. The assignment .LS x := y .LE thus produces the diagnostics: .LS .so typequout .LE Thus it is always necessary to declare a type such as .LS \*btype\fP intptr = ^ integer; .LE and use it to declare .LS \*bvar\fP x: intptr; y: intptr; .LE Note that if we had initially declared .LS \*bvar\fP x, y: ^ integer; .LE then the assignment statement would have worked. The statement .LS x^ := y^ .LE is allowed in either case. Since the parameter to a .B procedure or .B function must be declared with a type identifier rather than a constructed type, it is always necessary, in practice, to declare any type which will be used in this way. .SH Unreachable statements .PP Berkeley Pascal flags unreachable statements. Such statements usually correspond to errors in the program logic. Note that a statement is considered to be reachable if there is a potential path of control, even if it can never be taken. Thus, no diagnostic is produced for the statement: .LS \*bif\fP false \*bthen\fP writeln('impossible!') .LE .SH Goto's into structured statements .PP The translator detects and complains about .B goto statements which transfer control into structured statements (\c .B for , .B while , etc.) It does not allow such jumps, nor does it allow branching from the .B then part of an .B if statement into the .B else part. Such checks are made only within the body of a single procedure or function. .SH Unused variables, never set variables .PP Although Berkeley Pascal always clears variables to 0 at .B procedure and .B function entry, it is .B not good programming practice to rely on this initialization. To discourage this practice, and to help detect errors in program logic, .PI flags as a `w' warning error: .IP .RS .HP 1) Use of a variable which is never assigned a value. .IP 2) A variable which is declared but never used, distinguishing between those variables for which values are computed but which are never used, and those completely unused. .RE .LP In fact, these diagnostics are applied to all declared items. Thus a .B constant or a .B procedure which is declared but never used is flagged. The .B w option of .PI may be used to suppress these warnings; see sections 5.1 and 5.2. .NH 2 Translator panics, i/o errors .SH Panics .PP One class of error which rarely occurs, but which causes termination of all processing when it does is a panic. A panic indicates a translator-detected internal inconsistency. A typical panic message is: .LS snark (rvalue) line=110 yyline=109 Snark in pi .LE If you receive such a message, the translation will be quickly and perhaps ungracefully terminated. You should contact a teaching assistant or a member of the system staff, after saving a copy of your program for later inspection. If you were making changes to an existing program when the problem occurred, you may be able to work around the problem by ascertaining which change caused the .I snark and making a different change or correcting an error in the program. You should report the problem in any case. Pascal system bugs cannot be fixed unless they are reported. .SH Out of memory .PP The only other error which will abort translation when no errors are detected is running out of memory. All tables in the translator, with the exception of the parse stack, are dynamically allocated, and can grow to take up the full available process space of 64000 bytes. Generally, the size of the largest translatable program is directly related to .B procedure and .B function size. A number of non-trivial Pascal programs, including some with more than 2000 lines and 2500 statements have been translated and interpreted using Berkeley Pascal. Notable among these are the Pascal-S interpreter, a large set of programs for automated generation of code generators, and a general context-free parsing program which has been used to parse sentences with a grammar for a superset of English. .PP If you receive an out of space message from the translator during translation of a large .B procedure or .B function or one containing a large number of string constants you may yet be able to translate your program if you break this one .B procedure or .B function into several routines. .SH I/O errors .PP Other errors which you may encounter when running .PI relate to input-output. If .PI cannot open the file you specify, or if the file is empty, you will be so informed. If your disk space quota\*(dg is exceeded while .PI is creating the file .I obj , or if the system runs out of disk space you will be notified; in this case you should remove unneeded files. .FS \*(dgDisk quotas are also a modification at Berkeley and may not exist at your installation. .FE .NH 2 Run-time errors .PP We saw, in our second example, a run-time error. We here give the general description of run-time errors. The more unusual interpreter error messages are explained briefly in the manual section for .I px (6). .SH Start-up errors .PP These errors occur when the object file to be executed is not available or appropriate. Typical errors here are caused by the specified object file not existing, not being a Pascal object, or being inaccessible to the user. .SH Program execution errors .PP These errors occur when the program interacts with the Pascal runtime environment in an inappropriate way. Typical errors are values or subscripts out of range, bad arguments to built-in functions, exceeding the statement limit because of an infinite loop, or running out of memory\*(dd. .FS \*(ddThe checks for running out of memory are not foolproof and there is a chance that the interpreter will fault, producing a core image when it runs out of memory. This situation occurs very rarely. .FE The interpreter will produce a backtrace after the error occurs, showing all the active routine calls, unless the .B p option was disabled when the program was translated. Unfortunately, no variable values are given and no way of extracting them is available. .PP As an example of such an error, assume that we have accidentally declared the constant .I n1 to be 6, instead of 7 on line 2 of the program primes as given in section 2.6 above. If we run this program we get the following response. .LS % \*bpix primes.p\fP .so primeout3 % .LE .PP Here the interpreter indicates that the program terminated abnormally due to a subscript out of range near line 14, which is eight lines into the body of the program primes. .SH Interrupts .PP If the program is interrupted while executing and the .B p option was not specified, then a backtrace will be printed.\*(dg .FS \*(dgOccasionally, the Pascal system will be in an inconsistent state when this occurs, e.g. when an interrupt terminates a .B procedure or .B function entry or exit. In this case, the backtrace will only contain the current line. A reverse call order list of procedures will not be given. .FE The file .I pmon.out of profile information will be written if the program was translated with the .B z option enabled to .PI or .IX . .SH I/O interaction errors .PP The final class of interpreter errors results from inappropriate interactions with files, including the user's terminal. Included here are bad formats for integer and real numbers (such as no digits after the decimal point) when reading. .SH Panics .PP A small number of panics are possible with .I px . These should be reported to a teaching assistant or to the system staff if they occur. uld receive a diagnostic like the following: .LS .so clashout .LE In this case, one error produced a two line error message. If the same error occurs more than once, the same explanatory diagnostic will be given each time. .SH Scalar .PP The only cladoc/2.10/pascal/puman4.n 444 3 12 34561 3141164253 10034 .if \n(xx .bp .if !\n(xx \{\ .so tmac.p \} .nr H1 3 .if n 'ND .NH Input/output .PP This section describes features of the Pascal input/output environment, with special consideration of the features peculiar to an interactive implementation. .NH 2 Introduction .PP Our first sample programs, in section 2, used the file .I output . We gave examples there of redirecting the output to a file and to the line printer using the shell. Similarly, we can read the input from a file or another program. Consider the following Pascal program which is similar to the program .I cat (1). .LS % \*bpix -l kat.p clean.p\fR .LE Note that since the shell creates the output file `clean.p' before .XP executes, so `clean.p' and `dirty.p' must not be the same file. .PP .I Pxp automatically paragraphs the program, performing housekeeping chores such as comment alignment, and treating blank lines, lines containing exactly one blank and lines containing only a form-feed character as though they were comments, preserving their vertical spacing effect in the output. .I Pxp distinguishes between four kinds of comments: .HP .RS .IP 1) Left marginal comments, which begin in the first column of the input line and are placed in the first column of an output line. .IP 2) Aligned comments, which are preceded by no input tokens on the input line. These are aligned in the output with the running program text. .IP 3) Trailing comments, which are preceded in the input line by a token with no more than two spaces separating the token from the comment. .IP 4) Right marginal comments, which are preceded in the input line by a token from which they are separated by at least three spaces or a tab. These are aligned down the right margin of the output, currently to the first tab stop after the 40th column from the current ``left margin''. .RE .LP Consider the following program. .LS % \*bcat comments.p\fR .so comments1.p .LE When formatted by .XP the following output is produced. .LS % \*bpxp comments.p\fR .so commentsout % .LE The following formatting related options are currently available in .XP . The options .B f and .B j described in the previous section may also be of interest. .SH Strip comments \-s .PP The .B s option causes .XP to remove all comments from the input text. .SH Underline keywords \- \_ .PP A command line argument of the form .B \-\_ as in .LS % \*bpxp -_ dirty.p\fR .LE can be used to cause .XP to underline all keywords in the output for enhanced readability. .SH Specify indenting unit \- [23456789] .PP The normal unit which .XP uses to indent a structure statement level is 4 spaces. By giving an argument of the form \fB\-\fId\fR with .I d a digit, 2 \(<= .I d \(<= 9 you can specify that .I d spaces are to be used per level instead. .NH 2 Pcc and carriage control .PP The .UX system printer driver does not implement .SM FORTRAN style carriage control. Thus the function .I page on .UX does not output a character `1' in column 1 of a line, but rather puts out a form-feed character. For those who wish to use carriage control, the filter .I pcc is available which interprets this control. A sample usage is: .LS % \*bpx | pcc\fR .LE or .LS % \*bpix prog.p | pcc | lpr\fR .LE for printer copy. .I Pcc is fully described by its manual documentation .I pcc (6). .NH 2 Pxref .PP The cross-reference program .I pxref may be used to make cross-referenced listings of Pascal programs. To produce a cross-reference of the program in the file `foo.p' one can execute the command: .LS % \*bpxref foo.p\fR .LE The cross-reference is, unfortunately, not block structured. Full details on .I pxref are given in its manual section .I pxref (6). .NH 2 Pascals .PP A version of Wirth's subset Pascal translator .I pascals is available on .UX . It was translated to interpreter code by .PI and is invoked by a command of the form: .LS % \*bpascals prog.p\fR .LE The program in the file given is translated to interpretive code which is then immediately executed. .I Pascals is thus similar to .I pix . Only small programs can be handled. .I Pascals is most interesting to those wishing to study its error recovery techniques, which are described in Wirth's book .I "Algorithms + Data Structures = Programs" . .NH 2 Multi-file programs .PP A text inclusion facility is available with .UP . This facility allows the interpolation of source text from other files into the source stream of the translator. It can be used to divide large programs into more manageable pieces for ease in editing, listing, and maintenance. .PP The .B include facility is based on that of the .SM UNIX .NL C compiler. To trigger it you can place the character `#' in the first portion of a line and then, after an arbitrary number of blanks or tabs, the word `include' followed by a filename enclosed in single `\(aa' or double `"' quotation marks. The file name may be followed by a semicolon `;' if you wish to treat this as a pseudo-Pascal statement. The filenames of included files must end in `.i'. An example of the use of included files in a main program would be: .LS \*bprogram\fR compiler(input, output, obj); #\*binclude\fR "globals.i" #\*binclude\fR "scanner.i" #\*binclude\fR "parser.i" #\*binclude\fR "semantics.i" \*bbegin\fR { main program } \*bend\fR. .LE .PP At the point the .B include pseudo-statement is encountered in the input, the lines from the included file are interpolated into the input stream. For the purposes of translate- and run-time diagnostics and statement numbers in the listings and post-mortem backtraces, the lines in the included file are numbered from 1. Nested includes are possible up to 10 deep. .PP See the descriptions of the .B i and .B n options of .PI in section 5.2 above; these can be used to control listing when .B include files are present. .PP .I Include control lines are never printed in a listing. If the .B n option is not set, they are replaced by a line containing the file name and a `:' character. This is the default setting. If the .B n new page option is enabled then the .B include line is replaced with a banner line similar to the first line of a listing. This line is placed on a new page in the listing. .PP When a non-trivial line is encountered in the source text after an .B include finishes, the `popped' filename is printed, in the same manner as above. .PP For the purposes of error diagnostics when not making a listing, the filename will be printed before each diagnostic if the current filename has changed since the last filename was printed. operations in the interpreter code to count the number of times each statement was executed. An example of using .XP was given in section 2.6; its options are described in section 5.5. .NH 2 Px .PP The first argument to .X is the name of the file containing the program to be interpreted. If no arguments are given, then the file .I obj is executed. If more arguments are given, they are available to the Pascal program by using the built-doc/2.10/pascal/pumanA.n 444 3 12 50717 3141164243 10051 .if \n(xx .bp .if !\n(xx \{\ .so tmac.p \} .ND .nr H1 0 .af H1 A .NH Appendix to Wirth's Pascal Report .PP This section is an appendix to the definition of the Pascal language in Niklaus Wirth's .I "Pascal Report" and, with that Report, precisely defines the Berkeley implementation. This appendix includes a summary of extensions to the language, gives the ways in which the undefined specifications were resolved, gives limitations and restrictions of the current implementation, and lists the added functions and procedures available. It concludes with a list of differences with the commonly available Pascal 6000\-3.4 implementation, and some comments on standard and portable Pascal. .NH 2 Extensions to the language Pascal .PP This section defines non-standard language constructs available in .UP . The .B s standard Pascal option of the translator .PI can be used to detect these extensions in programs which are to be transported. .SH String padding .PP .UP will pad constant strings with blanks in expressions and as value parameters to make them as long as is required. The following is a legal .UP program: .LS \*bprogram\fP x(output); \*bvar\fP z : \*bpacked\fP \*barray\fP [ 1 .. 13 ] \*bof\fP char; \*bbegin\fP z := 'red'; writeln(z) \*bend\fP; .LE The padded blanks are added on the right. Thus the assignment above is equivalent to: .LS z := 'red ' .LE which is standard Pascal. .SH Octal constants, octal and hexadecimal write .PP Octal constants may be given as a sequence of octal digits followed by the character `b' or `B'. The forms .LS write(a:n \*boct\fP) .LE and .LS write(a:n \*bhex\fP) .LE cause the internal representation of expression .I a, which must be Boolean, character, integer, pointer, or a user-defined enumerated type, to be written in octal or hexadecimal respectively. .SH Assert statement .PP An .B assert statement causes a .I Boolean expression to be evaluated each time the statement is executed. A runtime error results if any of the expressions evaluates to be .I false . The .B assert statement is treated as a comment if run-time tests are disabled. The syntax for .B assert is: .LS \*bassert\fP .LE .br .ne 8 .NH 2 Resolution of the undefined specifications .SH File name \- file variable associations .PP Each Pascal file variable is associated with a named .UX file. Except for .I input and .I output, which are exceptions to some of the rules, a name can become associated with a file in any of three ways: .IP "\ \ \ \ \ 1)" 10 If a global Pascal file variable appears in the .B program statement then it is associated with .UX file of the same name. .IP "\ \ \ \ \ 2)" If a file was reset or rewritten using the extended two-argument form of .I reset or .I rewrite then the given name is associated. .IP "\ \ \ \ \ 3)" If a file which has never had .UX name associated is reset or rewritten without specifying a name via the second argument, then a temporary name of the form `tmp.x' is associated with the file. Temporary names start with `tmp.1' and continue by incrementing the last character in the .SM USASCII .NL ordering. Temporary files are removed automatically when their scope is exited. .SH The program statement .PP The syntax of the .B program statement is: .LS \*bprogram\fP ( { , } ) ; .LE The file identifiers (other than .I input and .I output ) must be declared as variables of .B file type in the global declaration part. .SH The files input and output .PP The formal parameters .I input and .I output are associated with the .UX standard input and output and have a somewhat special status. The following rules must be noted: .IP "\ \ \ \ \ 1)" 10 The program heading .B must contains the formal parameter .I output. If .I input is used, explicitly or implicitly, then it must also be declared here. .IP "\ \ \ \ \ 2)" Unlike all other files, the Pascal files .I input and .I output must not be defined in a declaration, as their declaration is automatically: .LS \*bvar\fP input, output: text .LE .IP "\ \ \ \ \ 3)" The procedure .I reset may be used on .I input. If no .UX file name has ever been associated with .I input, and no file name is given, then an attempt will be made to `rewind' .I input. If this fails, a run time error will occur. .I Rewrite calls to output act as for any other file, except that .I output initially has no associated file. This means that a simple .LS rewrite(output) .LE associates a temporary name with .I output. .SH Details for files .PP If a file other than .I input is to be read, then reading must be initiated by a call to the procedure .I reset which causes the Pascal system to attempt to open the associated .UX file for reading. If this fails, then a runtime error occurs. Writing of a file other than .I output must be initiated by a .I rewrite call, which causes the Pascal system to create the associated .UX file and to then open the file for writing only. .SH Buffering .PP The buffering for .I output is determined by the value of the .B b option at the end of the .B program statement. If it has its default value 1, then .I output is buffered in blocks of up to 512 characters, flushed whenever a writeln occurs and at each reference to the file .I input. If it has the value 0, .I output is unbuffered. Any value of 2 or more gives block buffering without line or .I input reference flushing. All other output files are always buffered in blocks of 512 characters. All output buffers are flushed when the files are closed at scope exit, whenever the procedure .I message is called, and can be flushed using the built-in procedure .I flush. .PP An important point for an interactive implementation is the definition of `input\(ua'. If .I input is a teletype, and the Pascal system reads a character at the beginning of execution to define `input\(ua', then no prompt could be printed by the program before the user is required to type some input. For this reason, `input\(ua' is not defined by the system until its definition is needed, reading from a file occurring only when necessary. .SH The character set .PP Seven bit .SM USASCII is the character set used on .UX . The standard Pascal symbols `and', 'or', 'not', '<=', '>=', '<>', and the uparrow `\(ua' (for pointer qualification) are recognized.\*(dg .FS \*(dgOn many terminals and printers, the up arrow is represented as a circumflex `^'. These are not distinct characters, but rather different graphic representations of the same internal codes. .FE Less portable are the synonyms tilde `~' for .B not , `&' for .B and , and `|' for .B or . .PP Upper and lower case are considered distinct. Keywords and built-in .B procedure and .B function names are composed of all lower case letters. Thus the identifiers GOTO and GOto are distinct both from each other and from the keyword \*bgoto\fP. The standard type `boolean' is also available as `Boolean'. .PP Character strings and constants may be delimited by the character `\'' or by the character `#'; the latter is sometimes convenient when programs are to be transported. Note that the `#' character has special meaning .up when it is the first character on a line \- see .I "Multi-file programs" below. .SH The standard types .PP The standard type .I integer is conceptually defined as .LS \*btype\fP integer = minint .. maxint; .LE .I Integer is implemented with 32 bit twos complement arithmetic. Predefined constants of type .I integer are: .LS \*bconst\fP maxint = 2147483647; minint = -2147483648; .LE .PP The standard type .I char is conceptually defined as .LS \*btype\fP char = minchar .. maxchar; .LE Built-in character constants are `minchar' and `maxchar', `bell' and `tab'; ord(minchar) = 0, ord(maxchar) = 127. .PP The type .I real is implemented using 64 bit floating point arithmetic. The floating point arithmetic is done in `rounded' mode, and provides approximately 17 digits of precision with numbers as small as 10 to the negative 38th power and as large as 10 to the 38th power. .SH Comments .PP Comments can be delimited by either `{' and `}' or by `(*' and `*)'. If the character `{' appears in a comment delimited by `{' and `}', a warning diagnostic is printed. A similar warning will be printed if the sequence `(*' appears in a comment delimited by `(*' and `*)'. The restriction implied by this warning is not part of standard Pascal, but detects many otherwise subtle errors. .SH Option control .PP Options of the translator may be controlled in two distinct ways. A number of options may appear on the command line invoking the translator. These options are given as one or more strings of letters preceded by the character `\-' and cause the default setting of each given option to be changed. This method of communication of options is expected to predominate for .UX . Thus the command .LS % \*bpi \-ls foo.p\fR .LE translates the file foo.p with the listing option enabled (as it normally is off), and with only standard Pascal features available. .PP If more control over the portions of the program where options are enabled is required, then option control in comments can and should be used. The format for option control in comments is identical to that used in Pascal 6000\-3.4. One places the character `$' as the first character of the comment and follows it by a comma separated list of directives. Thus an equivalent to the command line example given above would be: .LS {$l+,s+ listing on, standard Pascal} .LE as the first line of the program. The `l' option is more appropriately specified on the command line, since it is extremely unlikely in an interactive environment that one wants a listing of the program each time it is translated. .PP Directives consist of a letter designating the option, followed either by a `+' to turn the option on, or by a `\-' to turn the option off. The .B b option takes a single digit instead of a `+' or `\-'. .SH Notes on the listings .PP The first page of a listing includes a banner line indicating the version and date of generation of .PI . It also includes the .UX path name supplied for the source file and the date of last modification of that file. .PP Within the body of the listing, lines are numbered consecutively and correspond to the line numbers for the editor. Currently, two special kinds of lines may be used to format the listing: a line consisting of a form-feed character, control-l, which causes a page eject in the listing, and a line with no characters which causes the line number to be suppressed in the listing, creating a truly blank line. These lines thus correspond to `eject' and `space' macros found in many assemblers. Non-printing characters are printed as the character `?' in the listing.\*(dg .FS \*(dgThe character generated by a control-i indents to the next `tab stop'. Tab stops are set every 8 columns in .UX . Tabs thus provide a quick way of indenting in the program. .FE .SH Multi-file programs .PP It is also possible to prepare programs whose parts are placed in more than one file. The files other than the main one are called .B include files and have names ending with `.i'. The contents of an \*binclude\fR file are referenced through a pseudo-statement of the form: .LS #\*binclude\fR "file.i" .LE The `#' character must be the first character on the line. The file name may be delimited with `"' or `\'' characters. Nested .B include s are possible up to 10 deep. More details are given in sections 5.9 and 5.10. .SH The standard procedure write .PP If no minimum field length parameter is specified for a .I write, the following default values are assumed: .KS .TS center; l n. integer 10 real 22 Boolean 10 char 1 string length of the string oct 11 hex 8 .TE .KE The end of each line in a text file should be explicitly indicated by `writeln(f)', where `writeln(output)' may be written simply as `writeln'. For .UX , the built-in function `page(f)' puts a single .SM ASCII form-feed character on the output file. For programs which are to be transported the filter .I pcc can be used to interpret carriage control, as .UX does not normally do so. .NH 2 Restrictions and limitations .SH Files .PP Files cannot be members of files or members of dynamically allocated structures. .SH Arrays, sets and strings .PP The calculations involving array subscripts and set elements are done with 16 bit arithmetic. This restricts the types over which arrays and sets may be defined. The lower bound of such a range must be greater than or equal to \-32768, and the upper bound less than 32768. In particular, strings may have any length from 1 to 32767 characters, and sets may contain no more than 32767 elements. .SH Line and symbol length .PP There is no intrinsic limit on the length of identifiers. Identifiers are considered to be distinct if they differ in any single position over their entire length. There is a limit, however, on the maximum input line length. This is quite generous however, currently exceeding 160 characters. .SH Procedure and function nesting and program size .PP At most 20 levels of .B procedure and .B function nesting are allowed. There is no fundamental, translator defined limit on the size of the program which can be translated. The ultimate limit is supplied by the hardware and the fact that the \s-2PDP\s0-11 has a 16 bit address space. If one runs up against the `ran out of memory' diagnostic the program may yet translate if smaller procedures are used, as a lot of space is freed by the translator at the completion of each .B procedure or .B function in the current implementation. .SH Overflow .PP There is currently no checking for overflow on arithmetic operations at run-time. .br .ne 15 .NH 2 Added types, operators, procedures and functions .SH Additional predefined types .PP The type .I alfa is predefined as: .LS \*btype\fP alfa = \*bpacked\fP \*barray\fP [ 1..10 ] \*bof\fP \*bchar\fP .LE .PP The type .I intset is predefined as: .LS \*btype\fP intset = \*bset of\fP 0..127 .LE In most cases the context of an expression involving a constant set allows the translator to determine the type of the set, even though the constant set itself may not uniquely determine this type. In the cases where it is not possible to determine the type of the set from local context, the expression type defaults to a set over the entire base type unless the base type is integer\*(dg. .FS \*(dgThe current translator makes a special case of the construct `if ... in [ ... ]' and enforces only the more lax restriction on 16 bit arithmetic given above in this case. .FE In the latter case the type defaults to the current binding of .I intset, which must be ``type set of (a subrange of) integer'' at that point. .PP Note that if .I intset is redefined via: .LS \*btype\fP intset = \*bset of\fP 0..58; .LE then the default integer set is the implicit .I intset of Pascal 6000\-3.4 .SH Additional predefined operators .PP The relationals `<' and `>' of proper set inclusion are available. With .I a and .I b sets, note that .LS (\*bnot\fR (\fIa\fR < \fIb\fR)) <> (\fIa\fR >= \fIb\fR) .LE As an example consider the sets .I a = [0,2] and .I b = [1]. The only relation true between these sets is `<>'. .SH Non-standard procedures .IP argv(i,a) 25 where .I i is an integer and .I a is a string variable assigns the (possibly truncated or blank padded) .I i \|'th argument of the invocation of the current .UX process to the variable .I a . The range of valid .I i is .I 0 to .I argc\-1 . .IP date(a) assigns the current date to the alfa variable .I a in the format `dd mmm yy ', where `mmm' is the first three characters of the month, i.e. `Apr'. .IP flush(f) writes the output buffered for Pascal file .I f into the associated .UX file. .IP halt terminates the execution of the program with a control flow backtrace. .IP linelimit(f,x)\*(dd .FS \*(ddCurrently ignored by .X . .FE with .I f a textfile and .I x an integer expression causes the program to be abnormally terminated if more than .I x lines are written on file .I f . If .I x is less than 0 then no limit is imposed. .IP message(x,...) causes the parameters, which have the format of those to the built-in .B procedure .I write, to be written unbuffered on the diagnostic unit 2, almost always the user's terminal. .IP null a procedure of no arguments which does absolutely nothing. It is useful as a place holder, and is generated by .XP in place of the invisible empty statement. .IP remove(a) where .I a is a string causes the .UX file whose name is .I a, with trailing blanks eliminated, to be removed. .IP reset(f,a) where .I a is a string causes the file whose name is .I a (with blanks trimmed) to be associated with .I f in addition to the normal function of .I reset. .IP rewrite(f,a) is analogous to `reset' above. .IP stlimit(i) where .I i is an integer sets the statement limit to be .I i statements. Specifying the .B p option to .I pc disables statement limit counting. .IP time(a) causes the current time in the form `\ hh:mm:ss\ ' to be assigned to the alfa variable .I a. .SH Non-standard functions .IP argc 25 returns the count of arguments when the Pascal program was invoked. .I Argc is always at least 1. .IP card(x) returns the cardinality of the set .I x, i.e. the number of elements contained in the set. .IP clock returns an integer which is the number of central processor milliseconds of user time used by this process. .IP expo(x) yields the integer valued exponent of the floating-point representation of .I x ; expo(\fIx\fP) = entier(log2(abs(\fIx\fP))). .IP random(x) where .I x is a real parameter, evaluated but otherwise ignored, invokes a linear congruential random number generator. Successive seeds are generated as (seed*a + c) mod m and the new random number is a normalization of the seed to the range 0.0 to 1.0; a is 62605, c is 113218009, and m is 536870912. The initial seed is 7774755. .IP seed(i) where .I i is an integer sets the random number generator seed to .I i and returns the previous seed. Thus seed(seed(i)) has no effect except to yield value .I i. .IP sysclock an integer function of no arguments returns the number of central processor milliseconds of system time used by this process. .IP undefined(x) a Boolean function. Its argument is a real number and it always returns false. .IP wallclock an integer function of no arguments returns the time in seconds since 00:00:00 GMT January 1, 1970. .NH 2 Remarks on standard and portable Pascal .PP It is occasionally desirable to prepare Pascal programs which will be acceptable at other Pascal installations. While certain system dependencies are bound to creep in, judicious design and programming practice can usually eliminate most of the non-portable usages. Wirth's .I "Pascal Report" concludes with a standard for implementation and program exchange. .PP In particular, the following differences may cause trouble when attempting to transport programs between this implementation and Pascal 6000\-3.4. Using the .B s translator option may serve to indicate many problem areas.\*(dg .FS \*(dgThe .B s option does not, however, check that identifiers differ in the first 8 characters. .I Pi also does not check the semantics of .B packed . .FE .SH Features not available in Berkeley Pascal .IP Formal parameters which are .B procedure or .B function . .IP Segmented files and associated functions and procedures. .IP The function .I trunc with two arguments. .IP Arrays whose indices exceed the capacity of 16 bit arithmetic. .SH Features available in Berkeley Pascal but not in Pascal 6000-3.4 .IP The procedures .I reset and .I rewrite with file names. .IP The functions .I argc, .I seed, .I sysclock, and .I wallclock. .IP The procedures .I argv, .I flush, and .I remove. .IP .I Message with arguments other than character strings. .IP .I Write with keyword .B hex . .IP The .B assert statement. .SH Other problem areas .PP Sets and strings are more general in \* .UP ; see the restrictions given in the Jensen-Wirth .I "User Manual" for details on the 6000\-3.4 restrictions. .PP The character set differences may cause problems, especially the use of the function .I chr, characters as arguments to .I ord, and comparisons of characters, since the character set ordering differs between the two machines. .PP The Pascal 6000\-3.4 compiler uses a less strict notion of type equivalence. In .UP , types are considered identical only if they are represented by the same type identifier. Thus, in particular, unnamed types are unique to the variables/fields declared with them. .PP Pascal 6000\-3.4 doesn't recognize our option flags, so it is wise to put the control of .UP options to the end of option lists or, better yet, restrict the option list length to one. .PP For Pascal 6000\-3.4 the ordering of files in the program statement has significance. It is desirable to place .I input and .I output as the first two files in the .B program statement. ing.\*(dg .FS \*(dgThe character generated by a cdoc/2.10/pascal/sin1.p 444 3 12 75 3141164241 7412 program sinout(output); begin write(sin(1,2)); end. synerr2.ptmac.p.ptypequ.p fixkatscriptdoc/2.10/pascal/sin2.p 444 3 12 75 3141164240 7412 program sinout(output); begin write(sin('*')); end. synerr2.ptmac.p.ptypequ.p fixkatscriptdoc/2.10/pascal/synerr.p 444 3 12 173 3141164240 10100 progran syn(output); var i, j are integer; begin for j :* 1 to 20 begin write(j); i = 2 ** j; writeln(i)) end end. tdoc/2.10/pascal/synerr2.p 444 3 12 147 3141164232 10164 program synerr2(input,outpu); integer a(10) begin read(b); for c := 1 to 10 do a(c) := b * c; end. p fixkatscriptdoc/2.10/pascal/tmac.p 444 3 12 1764 3141164232 7532 'so /usr/lib/tmac/tmac.s .if t .tr \(rh- .if t .tr *\(**=\(eq/\(sl+\(pl .bd S B 3 .de SM .if "\\$1"" .ps -2 .if !"\\$1"" \s-2\\$1\s0\\$2 .. .de LG .if "\\$1"" .ps +2 .if !"\\$1"" \s+2\\$a\s0\\$2 .. .de HP .nr pd \\n(PD .nr PD 0 .if \\n(.$=0 .IP .if \\n(.$=1 .IP "\\$1" .if \\n(.$>=2 .IP "\\$1" "\\$2" .nr PD \\n(pd .rm pd .. .de LS \"LS - Literal display, ASCII, constant spaced DS .XD .ID .nf .if t .tr '\'`\`^\(ua-\(mi .if t .tr _\(ul .. .de LE \"LE - End literal display .DE .tr ''``__--^^ .. .de UP Berkeley Pascal\\$1 .. .de PD \s-2PDP\s0 .if \\n(.$=0 11/70 .if \\n(.$>0 11/\\$1 .. .de DK Digital Equipment Corporation\\$1 .. .de IN .I .if \\n(.$<2 \\$1 1.0 Implementation Notes .if \\n(.$>=2 \\$1 1.0 Implementation Notes\\c .R .if \\n(.$>=2 \\$2 .. .de UM .I User's Manual .R .. .de PI .I pi \\$1 .. .de XP .I pxp \\$1 .. .de IX .I pix \\$1 .. .de X .I px \\$1 .. .if n .ds dg + .if t .ds dg \(dg .if n .ds dd * .if t .ds dd \(dd .if n .nr FM 1.12i .if t .ds b \\fB .if n .ds b \\fI .ds i \\fI .nr xx 1 ss space. Ifdoc/2.10/pascal/typequ.p 444 3 12 145 3141164231 10104 program x(output); var x: ^ integer; y: ^ integer; begin new(y); x := y; x^ := 1; x := x; end. u.p fixkatscriptdoc/2.10/pascal/fixkatscript 444 3 12 56 3141164227 11020 1t1 1s/.*/\\*b&\\fR/ 3t3 3s/.*/\\*b&\\fR/ w q synerr.p synerr2.ptmac.p.ptypequ.p fixkatscriptdoc/2.10/assembler 444 3 12 71622 3141165164 7107 .\"tbl ... ^ [tn]roff -ms .hc % .TL Assembler Reference Manual .AU Dennis M. Ritchie .AI .MH .SH 0. Introduction .PP This document describes the usage and input syntax of the \s8UNIX PDP\s10-11 assembler \fIas\fP. The details of the \s8PDP\s10-11 are not described. .PP The input syntax of the \s8UNIX\s10 assembler is generally similar to that of the \s8DEC\s10 assembler \s8PAL\s10-11\s8R\s10, although its internal workings and output format are unrelated. It may be useful to read the publication \s8DEC\s10-11-\s8ASDB\s10-\s8D\s10, which describes \s8PAL\s10-11\s8R\s10, although naturally one must use care in assuming that its rules apply to \fIas\fP. .PP \fIAs\fP is a rather ordinary assembler without macro capabilities. It produces an output file that contains relocation information and a complete symbol table; thus the output is acceptable to the \s8UNIX\s10 link-editor \fIld\fP, which may be used to combine the outputs of several assembler runs and to obtain object programs from libraries. The output format has been designed so that if a program contains no unresolved ref%er%ences to external symbols, it is executable without further processing. .SH 1. Usage .PP \fIas\fP is used as follows: .DS as \fR[\fB \-u \fR] [ \fB\-o \fIoutput\fR ] \fIfile\s6\d1\u\s10 .\|.\|. .DE If the optional ``\-u'' argument is given, all undefined symbols in the current assembly will be made undefined-external. See the \fB.globl\fR directive below. .PP The other arguments name files which are concatenated and assembled. Thus programs may be written in several pieces and assembled together. .PP The output of the assembler is by default placed on the file \fIa.out\fR in the current directory; the ``\-o'' flag causes the output to be placed on the named file. If there were no unresolved external ref%er%ences, and no errors detected, the output file is marked executable; otherwise, if it is produced at all, it is made non-executable. .SH 2. Lexical conventions .PP Assembler tokens include identifiers (alternatively, ``symbols'' or ``names''), temporary symbols, constants, and operators. .SH 2.1 Identifiers .PP An identifier consists of a sequence of alphanumeric characters (including period ``\|\fB.\fR\|'', underscore ``\(ul'', and tilde ``~'' as alphanumeric) of which the first may not be numeric. Only the first eight characters are significant. When a name begins with a tilde, the tilde is discarded and that occurrence of the identifier generates a unique entry in the symbol table which can match no other occurrence of the identifier. This feature is used by the C compiler to place names of local variables in the output symbol table without having to worry about making them unique. .SH 2.2 Temporary symbols .PP A temporary symbol consists of a digit followed by ``f\|'' or ``b''. Temporary symbols are discussed fully in \(sc5.1. .SH 2.3 Constants .PP An octal constant consists of a sequence of digits; ``8'' and ``9'' are taken to have octal value 10 and 11. The constant is truncated to 16 bits and interpreted in two's complement notation. .PP A decimal constant consists of a sequence of digits terminated by a decimal point ``\fB.\fR''. The magnitude of the constant should be representable in 15 bits; i.e., be less than 32,768. .PP A single-character constant consists of a single quote ``\|\(fm\|'' followed by an \s8ASCII\s10 character not a new-line. Certain dual-character escape sequences are acceptable in place of the \s8ASCII\s10 character to represent new-line and other non-graphics (see \fIString state%ments\fP, \(sc5.5). The constant's value has the code for the given character in the least significant byte of the word and is null-padded on the left. .PP A double-character constant consists of a double quote ``\|"\|'' followed by a pair of \s8ASCII\s10 characters not including new-line. Certain dual-character escape sequences are acceptable in place of either of the \s8ASCII\s10 characters to represent new-line and other non-graphics (see \fIString state%ments\fR, \(sc5.5). The constant's value has the code for the first given character in the least significant byte and that for the second character in the most significant byte. .SH 2.4 Operators .PP There are several single- and double-character operators; see \(sc6. .SH 2.5 Blanks .PP Blank and tab characters may be interspersed freely between tokens, but may not be used within tokens (except character constants). A blank or tab is required to separate adjacent identifiers or constants not otherwise separated. .SH 2.6 Comments .PP The character ``\|/\|'' introduces a comment, which extends through the end of the line on which it appears. Comments are ignored by the assembler. .SH 3. Segments .PP Assembled code and data fall into three segments: the text segment, the data segment, and the bss segment. The text segment is the one in which the assembler begins, and it is the one into which instructions are typically placed. The \s8UNIX\s10 system will, if desired, enforce the purity of the text segment of programs by trapping write operations into it. Object programs produced by the assembler must be processed by the link-editor \fIld\fR (using its ``\-n'' flag) if the text segment is to be write-protected. A single copy of the text segment is shared among all processes executing such a program. .PP The data segment is available for placing data or instructions which will be modified during execution. Anything which may go in the text segment may be put into the data segment. In programs with write-protected, sharable text segments, data segment contains the initialized but variable parts of a program. If the text segment is not pure, the data segment begins immediately after the text segment; if the text segment is pure, the data segment begins at the lowest 8K byte boundary after the text segment. .PP The bss segment may not contain any explicitly initialized code or data. The length of the bss segment (like that of text or data) is determined by the high-water mark of the location counter within it. The bss segment is actually an extension of the data segment and begins immediately after it. At the start of execution of a program, the bss segment is set to 0. Typically the bss segment is set up by state%ments exemplified by .DS lab\fB: .\fR = \fB.\fR+10 .DE The advantage in using the bss segment for storage that starts off empty is that the initialization information need not be stored in the output file. See also \fILocation counter\fP and \fIAssignment state%ments\fP below. .SH 4. The location counter .PP One special symbol, ``\|\fB.\fP\|'', is the location counter. Its value at any time is the offset within the appropriate segment of the start of the state%ment in which it appears. The location counter may be assigned to, with the restriction that the current segment may not change; furthermore, the value of ``\|\fB.\fP\|'' may not decrease. If the effect of the assignment is to increase the value of ``\|\fB.\fP\|'', the required number of null bytes are generated (but see \fISegments\fP above). .SH 5. Statements .PP A source program is composed of a sequence of \fIstate%ments\fP. Statements are separated either by new-lines or by semicolons. There are five kinds of state%ments: null state%ments, expression state%ments, assignment state%ments, string state%ments, and keyword state%ments. .PP Any kind of state%ment may be preceded by one or more labels. .SH 5.1 Labels .PP There are two kinds of label: name labels and numeric labels. A name label consists of a name followed by a colon (\|:\|). The effect of a name label is to assign the current value and type of the location counter ``\|\fB.\fP\|'' to the name. An error is indicated in pass 1 if the name is already defined; an error is indicated in pass 2 if the ``\|\fB.\fP\|'' value assigned changes the definition of the label. .PP A numeric label consists of a digit \fI0\fR to \fI9\fR followed by a colon (\|:\|). Such a label serves to define temporary symbols of the form ``\fIn\fR\|b'' and ``\fIn\fR\|f\|'', where \fIn\fR is the digit of the label. As in the case of name labels, a numeric label assigns the current value and type of ``\|\fB.\fP\|'' to the temporary symbol. However, several numeric labels with the same digit may be used within the same assembly. Ref%er%ences of the form ``\fIn\fR\|f\|'' refer to the first numeric label ``\fIn\|\fR:'' \fIf\fR\|orward from the ref%er%ence; ``\fIn\|\fRb'' symbols refer to the first ``\fIn\|\fR\|:'' label \fIb\|\fRackward from the ref%er%ence. This sort of temporary label was introduced by Knuth [\fIThe Art of Computer Programming, Vol I: Fundamental Algorithms\|\fR]. Such labels tend to conserve both the symbol table space of the assembler and the inventive powers of the programmer. .SH 5.2 Null state%ments .PP A null state%ment is an empty state%ment (which may, however, have labels). A null state%ment is ignored by the assembler. Common examples of null state%ments are empty lines or lines containing only a label. .SH 5.3 Expression state%ments .PP An expression state%ment consists of an arithmetic expression not beginning with a keyword. The assembler computes its (16-bit) value and places it in the output stream, together with the appropriate relocation bits. .SH 5.4 Assignment state%ments .PP An assignment state%ment consists of an identifier, an equals sign (\|=\|), and an expression. The value and type of the expression are assigned to the identifier. It is not required that the type or value be the same in pass 2 as in pass 1, nor is it an error to redefine any symbol by assignment. .PP Any external attribute of the expression is lost across an assignment. This means that it is not possible to declare a global symbol by assigning to it, and that it is impossible to define a symbol to be offset from a non-locally defined global symbol. .PP As mentioned, it is permissible to assign to the location counter ``\|\fB.\fP\|''. It is required, however, that the type of the expression assigned be of the same type as ``\|\fB.\fP\|'', and it is forbidden to decrease the value of ``\fB\|.\|\fR''. In practice, the most common assignment to ``\|\fB.\fP\|'' has the form ``.\|=\|.\|+\|\fIn\fR'' for some number \fIn;\fR this has the effect of generating \fIn\fR null bytes. .SH 5.5 String state%ments .PP A string state%ment generates a sequence of bytes containing \s8ASCII\s10 characters. A string state%ment consists of a left string quote ``<'' followed by a sequence of \s8ASCII\s10 characters not including newline, followed by a right string quote ``>''. Any of the \s8ASCII\s10 characters may be replaced by a two-character escape sequence to represent certain non-graphic characters, as follows: .DS C .TS l l l. \en \s8NL\s10 (012) \es \s8SP\s10 (040) \et \s8HT\s10 (011) \ee \s8EOT\s10 (004) \e0 \s8NUL\s10 (000) \er \s8CR\s10 (015) \ea \s8ACK\s10 (006) \ep \s8PFX\s10 (033) \e\e \e \e> > .TE .DE The last two are included so that the escape character and the right string quote may be represented. The same escape sequences may also be used within single- and double-character constants (see \(sc2.3 above). .SH 5.6 Keyword state%ments .PP Keyword state%ments are numerically the most common type, since most machine instructions are of this sort. A keyword state%ment begins with one of the many predefined keywords of the assembler; the syntax of the remainder depends on the keyword. All the keywords are listed below with the syntax they require. .SH 6. Expressions .PP An expression is a sequence of symbols representing a value. Its constituents are identifiers, constants, temporary symbols, operators, and brackets. Each expression has a type. .PP All operators in expressions are fundamentally binary in nature; if an operand is missing on the left, a 0 of absolute type is assumed. Arithmetic is two's complement and has 16 bits of precision. All operators have equal precedence, and expressions are evaluated strictly left to right except for the effect of brackets. .SH 6.1 Expression operators .PP The operators are: .IP (blank) 8 when there is no operand between operands, the effect is exactly the same as if a ``+'' had appeared. .pg .ti 0 .IP + 8 addition .IP \- 8 subtraction .IP * 8 multiplication .IP \e\(sl 8 division (note that plain ``\|/\|'' starts a comment) .IP 8 & 8 bitwise \fBand\fR .IP \(bv 8 bitwise \fBor\fR .IP \e> 8 logical right shift .IP \\e< 8 logical left shift .hc .IP % 8 modulo .IP ! 8 .hc % \fIa\fR\|!\|\fIb\fR is \fIa \fBor \fR(\|\fBnot \fIb\fR\|); i.e., the \fBor\fR of the first operand and the one's complement of the second; most common use is as a unary. .IP ^ 8 result has the value of first operand and the type of the second; most often used to define new machine instructions with syntax identical to existing instructions. .PP Expressions may be grouped by use of square brackets ``\|[\|\|]\|''. (Round parentheses are reserved for address modes.) .SH 6.2 Types .PP The assembler deals with a number of types of expressions. Most types are attached to keywords and used to select the routine which treats that keyword. The types likely to be met explicitly are: .IP undefined 8 .br Upon first encounter, each symbol is undefined. It may become undefined if it is assigned an undefined expression. It is an error to attempt to assemble an undefined expression in pass 2; in pass 1, it is not (except that certain keywords require operands which are not undefined). .IP "undefined external" 8 .br A symbol which is declared \fB.globl\fR but not defined in the current assembly is an undefined external. If such a symbol is declared, the link editor \fIld\fR must be used to load the assembler's output with another routine that defines the undefined ref%er%ence. .IP absolute 8 An absolute symbol is defined ultimately from a constant. Its value is unaffected by any possible future applications of the link-editor to the output file. .IP text 8 The value of a text symbol is measured with respect to the beginning of the text segment of the program. If the assembler output is link-edited, its text symbols may change in value since the program need not be the first in the link editor's output. Most text symbols are defined by appearing as labels. At the start of an assembly, the value of ``\|\fB.\fP\|'' is text 0. .IP data 8 The value of a data symbol is measured with respect to the origin of the data segment of a program. Like text symbols, the value of a data symbol may change during a subsequent link-editor run since previously loaded programs may have data segments. After the first \fB.data\fR state%ment, the value of ``\|\fB.\fP\|'' is data 0. .IP bss 8 The value of a bss symbol is measured from the beginning of the bss segment of a program. Like text and data symbols, the value of a bss symbol may change during a subsequent link-editor run, since previously loaded programs may have bss segments. After the first \fB.bss\fR state%ment, the value of ``\|\fB.\fP\|'' is bss 0. .IP "external absolute, text, data, or bss" 8 .br symbols declared \fB.globl\fR but defined within an assembly as absolute, text, data, or bss symbols may be used exactly as if they were not declared \fB.globl\fR; however, their value and type are available to the link editor so that the program may be loaded with others that ref%er%ence these symbols. .IP register 8 .br The symbols .DS \fBr0\fR .\|.\|. \fBr5 fr0\fR .\|.\|. \fBfr5 sp pc .DE are predefined as register symbols. Either they or symbols defined from them must be used to refer to the six general-purpose, six floating-point, and the 2 special-purpose machine registers. The behavior of the floating register names is identical to that of the corresponding general register names; the former are provided as a mnemonic aid. .IP "other types" 8 .br Each keyword known to the assembler has a type which is used to select the routine which processes the associated keyword state%ment. The behavior of such symbols when not used as keywords is the same as if they were absolute. .SH 6.3 Type propagation in expressions .PP When operands are combined by expression operators, the result has a type which depends on the types of the operands and on the operator. The rules involved are complex to state but were intended to be sensible and predictable. For purposes of expression evaluation the important types are .DS undefined absolute text data bss undefined external other .DE The combination rules are then: If one of the operands is undefined, the result is undefined. If both operands are absolute, the result is absolute. If an absolute is combined with one of the ``other types'' mentioned above, or with a register expression, the result has the register or other type. As a consequence, one can refer to r3 as ``r0+3''. If two operands of ``other type'' are combined, the result has the numerically larger type An ``other type'' combined with an explicitly discussed type other than absolute acts like an absolute. .PP Further rules applying to particular operators are: .IP + If one operand is text-, data-, or bss-segment relocatable, or is an undefined external, the result has the postulated type and the other operand must be absolute. .IP \- If the first operand is a relocatable text-, data-, or bss-segment symbol, the second operand may be absolute (in which case the result has the type of the first operand); or the second operand may have the same type as the first (in which case the result is absolute). If the first operand is external undefined, the second must be absolute. All other combinations are illegal. .IP ^ This operator follows no other rule than that the result has the value of the first operand and the type of the second. .PP .IP others .br It is illegal to apply these operators to any but absolute symbols. .SH 7. Pseudo-operations .PP The keywords listed below introduce state%ments that generate data in unusual forms or influence the later operations of the assembler. The metanotation .DS [ stuff ] .\|.\|. .DE means that 0 or more instances of the given stuff may appear. Also, boldface tokens are literals, italic words are substitutable. .SH 7.1 \fB.byte \fIexpression \fR[ \fB, \fIexpression \fR] .\|.\|. .PP The \fIexpression\fRs in the comma-separated list are truncated to 8 bits and assembled in successive bytes. The expressions must be absolute. This state%ment and the string state%ment above are the only ones that assemble data one byte at at time. .SH 7.2 \fB.even\fR .PP If the location counter ``\|\fB.\fP\|'' is odd, it is advanced by one so the next state%ment will be assembled at a word boundary. .SH 7.3 \fB.if \fIexpression\fR .PP The \fIexpression\fR must be absolute and defined in pass 1. If its value is nonzero, the \fB.if\fR is ignored; if zero, the state%ments between the \fB.if\fR and the matching \fB.endif\fR (below) are ignored. \&\fB.if\fR may be nested. The effect of \fB.if\fR cannot extend beyond the end of the input file in which it appears. (The state%ments are not totally ignored, in the following sense: \fB.if\fRs and \fB.endif\fRs are scanned for, and moreover all names are entered in the symbol table. Thus names occurring only inside an \fB.if\fR will show up as undefined if the symbol table is listed.) .SH 7.4 \fB.endif\fR .PP This state%ment marks the end of a conditionally-assembled section of code. See \fB.if\fR above. .SH 7.5 \fB.globl \fIname \fR[ \fB,\fI name \fR] .\|.\|. .PP This state%ment makes the \fInames\fR external. If they are otherwise defined (by assignment or appearance as a label) they act within the assembly exactly as if the \fB.globl\fR state%ment were not given; however, the link editor \fIld\fR may be used to combine this routine with other routines that refer these symbols. .PP Conversely, if the given symbols are not defined within the current assembly, the link editor can combine the output of this assembly with that of others which define the symbols. As discussed in \(sc1, it is possible to force the assembler to make all otherwise undefined symbols external. .SH 7.6 \fB.text\fR .SH 7.7 \fB.data\fR .SH 7.8 \fB.bss\fR .PP These three pseudo-operations cause the assembler to begin assembling into the text, data, or bss segment respectively. Assembly starts in the text segment. It is forbidden to assemble any code or data into the bss segment, but symbols may be defined and ``\|\fB.\fP\|'' moved about by assignment. .SH 7.9 \fB.comm\fI name \fB, \fIexpression\fR .PP Provided the \fIname\fR is not defined elsewhere, this state%ment is equivalent to .DS \&.globl name name = expression ^ name .DE That is, the type of \fIname\fR is ``undefined external'', and its value is \fIexpression\fR. In fact the \fIname\fR behaves in the current assembly just like an undefined external. However, the link-editor \fIld\fR has been special-cased so that all external symbols which are not otherwise defined, and which have a non-zero value, are defined to lie in the bss segment, and enough space is left after the symbol to hold \fIexpression\fR bytes. All symbols which become defined in this way are located before all the explicitly defined bss-segment locations. .SH 8. Machine instructions .PP Because of the rather complicated instruction and addressing structure of the \s8PDP\s10-11, the syntax of machine instruction state%ments is varied. Although the following sections give the syntax in detail, the machine handbooks should be consulted on the semantics. .SH 8.1 Sources and Destinations .PP The syntax of general source and destination addresses is the same. Each must have one of the following forms, where \fIreg\fR is a register symbol, and \fIexpr\fR is any sort of expression: .DS C .TS c c c l l l. syntax words mode _ \fIreg\fR 0 00+\fIreg\fB (\|\fIreg\fB\|)\|+ \fR0 20+\fIreg\fB \fB\-\|(\|\fIreg\fB\|) \fR0 40+\fIreg\fR \fIexpr\|\fB(\|\fIreg\fB\|) \fR1 60+\fIreg\fB (\|\fIreg\fB\|) \fR0 10+\fIreg\fB *\|\fIreg\fB \fR0 10+\fIreg\fB \fB*\|(\|\fIreg\fB\|)\|+ \fR0 30+\fIreg\fB \fB*\|\-\|(\|\fIreg\fB\|) \fR0 50+\fIreg\fB *\|(\|\fIreg\fB\|) \fR1 70+\fIreg\fB \fB*\|\fIexpr\fB\|(\|\fIreg\fB\|) \fR1 70+\fIreg\fB \fIexpr \fR1 67 \fB$\|\fIexpr \fR1 27 \fB*\|\fIexpr \fR1 77 \fB*\|$\|\fIexpr \fR1 37 .TE .DE The \fIwords\fR column gives the number of address words generated; the \fImode\fR column gives the octal address-mode number. The syntax of the address forms is identical to that in \s8DEC\s10 assemblers, except that ``*'' has been substituted for ``@'' and ``$'' for ``#''; the \s8UNIX\s10 typing conventions make ``@'' and ``#'' rather inconvenient. .PP Notice that mode ``*reg'' is identical to ``(reg)''; that ``*(reg)'' generates an index word (namely, 0); and that addresses consisting of an unadorned expression are assembled as pc-relative ref%er%ences independent of the type of the expression. To force a non-relative ref%er%ence, the form ``*$expr'' can be used, but notice that further indirection is impossible. .SH 8.3 Simple machine instructions .PP The following instructions are defined as absolute symbols: .KS .DS .ft B clc clv clz cln sec sev sez sen .DE .KE They therefore require no special syntax. The \s8PDP\s10-11 hardware allows more than one of the ``clear'' class, or alternatively more than one of the ``set'' class to be \fBor\fR-ed together; this may be expressed as follows: .DS clc\|\|\|\(bv\|\|clv .DE .SH 8.4 Branch .PP The following instructions take an expression as operand. The expression must lie in the same segment as the ref%er%ence, cannot be undefined-external, and its value cannot differ from the current location of ``\|\fB.\fP\|'' by more than 254 bytes: .KS .DS .ft B .ta 1.5i 2.5i br blos bne bvc beq bvs bge bhis blt bec \fR(=\fB bcc\fR)\fB bgt bcc ble blo bpl bcs bmi bes \fR(=\fB bcs\fR)\fB bhi .DE .KE \fBbes\fR (``branch on error set'') and \fBbec\fR (``branch on error clear'') are intended to test the error bit returned by system calls (which is the c-bit). .SH 8.5 Extended branch instructions .PP The following symbols are followed by an expression representing an address in the same segment as ``\|\fB.\|\fP''. If the target address is close enough, a branch-type instruction is generated; if the address is too far away, a \fBjmp\fR will be used. .pg .KS .DS .ft B .ta 1.5i jbr jlos jne jvc jeq jvs jge jhis jlt jec jgt jcc jle jlo jpl jcs jmi jes jhi .DE .KE \fBjbr\fR turns into a plain \fBjmp\fR if its target is too remote; the others (whose names are contructed by replacing the ``b'' in the branch instruction's name by ``j''\|) turn into the converse branch over a \fBjmp\fR to the target address. .SH 8.6 Single operand instructions .PP The following symbols are names of single-operand machine instructions. The form of address expected is discussed in \(sc8.1 above. .KS .DS .ta 1.5i clr sbcb clrb ror com rorb comb rol inc rolb incb asr dec asrb decb asl neg aslb negb jmp adc swab adcb tst sbc tstb .DE .KE .SH 8.7 Double operand instructions .PP The following instructions take a general source and destination (\(sc8.1), separated by a comma, as operands. .KS .DS .ft B .ta 1.5i mov movb cmp cmpb bit bitb bic bicb bis bisb add sub .DE .KE .SH 8.8 Miscellaneous instructions .PP The following instructions have more specialized syntax. Here \fIreg\fR is a register name, \fIsrc\fR and \fIdst\fR a general source or destination (\(sc8.1), and \fIexpr\fR is an expression: .KS .DS .ta .5i 2i \fBjsr\fI reg,dst \fBrts\fI reg \fBsys\fI expr \fBash \fIsrc\|,\|reg \fR(or, \fBals\fR)\fB \fBashc \fIsrc\|,\|reg \fR(or, \fBalsc\fR)\fB \fBmul \fIsrc\|,\|reg \fR(or, \fBmpy\fR)\fB \fBdiv \fIsrc\|,\|reg \fR(or, \fBdvd\fR)\fR \fBxor \fIreg\|,\|dst\fB \fBsxt \fIdst\fB \fBmark \fIexpr\fB \fBsob \fIreg\|,\|expr\fB .DE .KE \fBsys\fR is another name for the \fBtrap\fR instruction. It is used to code system calls. Its operand is required to be expressible in 6 bits. The expression in \fBmark\fR must be expressible in six bits, and the expression in \fBsob\fR must be in the same segment as ``\fB\|.\|\fR'', must not be external-undefined, must be less than ``\|\fB.\fR\|'', and must be within 510 bytes of ``\|\fB.\fR\|''. .SH 8.9 Floating-point unit instructions .PP The following floating-point operations are defined, with syntax as indicated: .KS .DS .ta .5i 2i \fBcfcc \fBsetf \fBsetd \fBseti \fBsetl \fBclrf \fIfdst \fBnegf \fIfdst \fBabsf \fIfdst \fBtstf \fIfsrc \fBmovf \fIfsrc,\|freg \fR(= ldf\fR\|) \fBmovf \fIfreg,\|fdst \fR(= stf\fR\|) \fBmovif \fIsrc,\|freg \fR(= ldcif\fR\|) \fBmovfi \fIfreg,\|dst \fR(= stcfi\fR\|) \fBmovof \fIfsrc,\|freg \fR(= ldcdf\fR\|) \fBmovfo \fIfreg,\|fdst \fR(= stcfd\fR\|) \fBmovie \fIsrc,\|freg \fR(= ldexp\fR) \fBmovei \fIfreg,\|dst \fR(= stexp\fR) \fBaddf \fIfsrc,\|freg \fBsubf \fIfsrc,\|freg \fBmulf \fIfsrc,\|freg \fBdivf \fIfsrc,\|freg \fBcmpf \fIfsrc,\|freg \fBmodf \fIfsrc,\|freg \fBldfps \fIsrc \fBstfps \fIdst \fBstst \fIdst\fR .DE .KE \fIfsrc\fR, \fIfdst\fR, and \fIfreg\fR mean floating-point source, destination, and register respectively. Their syntax is identical to that for their non-floating counterparts, but note that only floating registers 0-3 can be a \fIfreg\fR. .PP The names of several of the operations have been changed to bring out an analogy with certain fixed-point instructions. The only strange case is \fBmovf\fR, which turns into either \fBstf\fR or \fBldf\fR depending respectively on whether its first operand is or is not a register. Warning: \fBldf\fR sets the floating condition codes, \fBstf\fR does not. .SH 9. Other symbols .SH 9.1 \fB.\|.\fR .PP The symbol ``\fB\|.\|.\|\fR'' is the \fIrelocation counter\fR. Just before each assembled word is placed in the output stream, the current value of this symbol is added to the word if the word refers to a text, data or bss segment location. If the output word is a pc-relative address word that refers to an absolute location, the value of ``\fB\|.\|.\|\fR'' is subtracted. .PP Thus the value of ``\fB\|.\|.\|\fR'' can be taken to mean the starting memory location of the program. The initial value of ``\|\fB.\|.\fR\|'' is 0. .PP The value of ``\|\fB.\|.\fR\|'' may be changed by assignment. Such a course of action is sometimes necessary, but the consequences should be carefully thought out. It is particularly ticklish to change ``\|\fB.\|.\fR\|'' midway in an assembly or to do so in a program which will be treated by the loader, which has its own notions of ``\|\fB.\|.\fR\|''. .SH 9.2 System calls .PP System call names are not predefined. They may be found in the file .I /usr/include/sys.s .SH 10. Diagnostics .PP When an input file cannot be read, its name followed by a question mark is typed and assembly ceases. When syntactic or semantic errors occur, a single-character diagnostic is typed out together with the line number and the file name in which it occurred. Errors in pass 1 cause cancellation of pass 2. The possible errors are: .KS .DS .ta .3i ) parentheses error ] parentheses error > string not terminated properly * indirection (\|*\|) used illegally \&\fB.\fR illegal assignment to ``\|\fB.\fR\|'' \s8A\s10 error in address \s8B\s10 branch address is odd or too remote \s8E\s10 error in expression \s8F\s10 error in local (``f\|'' or ``b'') type symbol \s8G\s10 garbage (unknown) character \s8I\s10 end of file inside an \fB.if\fR \s8M\s10 multiply defined symbol as label \s8O\s10 word quantity assembled at odd address \s8P\s10 phase error\(em ``\|\fB.\fP\|'' different in pass 1 and 2 \s8R\s10 relocation error \s8U\s10 undefined symbol \s8X\s10 syntax error .DE .KE tionally-assembled section of code. See \fB.if\fR above. .SH 7.5 \fB.globl \fIname \fR[ \fB,\fI name \fRdoc/2.10/v7index 444 3 12 15343 3141165165 6515 .nr n 0 +1 .TL UNIX Programmer's Manual .br .sp .5 Volume 2 \(em Supplementary Documents .AU .ft B .ps 11 Seventh Edition .AI January 10, 1979 .PP This volume contains documents which supplement the information contained in Volume 1 of .ul The .ul .UX .ul Programmer's Manual. The documents here are grouped roughly into the areas of basics, editing, language tools, document preparation, and system maintenance. Further general information may be found in the Bell System Technical Journal special issue on .UX , July-August, 1978. .PP Many of the documents cited within this volume as Bell Laboratories internal memoranda or Computing Science Technical Reports (CSTR) are also contained here. .PP These documents contain occasional localisms, typically references to other operating systems like GCOS and IBM. In all cases, such references may be safely ignored by UNIX users. .SH General Works .IP \n+n. 7th Edition UNIX \(em Summary. .RS A concise summary of the facilities available on .UX . .RE .IP \n+n. The UNIX Time-Sharing System. D. M. Ritchie and K. Thompson. .RS The original .UX paper, reprinted from CACM. .RE .SH Getting Started .IP \n+n. UNIX for Beginners \(em Second Edition. B. W. Kernighan. .RS An introduction to the most basic use of the system. .RE .IP \n+n. A Tutorial Introduction to the UNIX Text Editor. B. W. Kernighan. .RS An easy way to get started with the editor. .RE .IP \n+n. Advanced Editing on UNIX. B. W. Kernighan. .RS The next step. .RE .IP \n+n. An Introduction to the UNIX Shell. S. R. Bourne. .RS An introduction to the capabilities of the command interpreter, the shell. .RE .IP \n+n. Learn \(em Computer Aided Instruction on UNIX. M. E. Lesk and B. W. Kernighan. .RS Describes a computer-aided instruction program that walks new users through the basics of files, the editor, and document preparation software. .RE .SH Document Preparation .IP \n+n. Typing Documents on the UNIX System. M. E. Lesk. .RS Describes the basic use of the formatting tools. Also describes ``\-ms'', a standardized package of formatting requests that can be used to lay out most documents (including those in this volume). .RE .IP \n+n. A System for Typesetting Mathematics. B. W. Kernighan and L. L. Cherry. .RS Describes EQN. an easy-to-learn language for doing high-quality mathematical typesetting, .RE .IP \n+n. TBL \(em A Program to Format Tables. M. E. Lesk. .RS A program to permit easy specification of tabular material for typesetting. Again, easy to learn and use. .RE .IP \n+n. Some Applications of Inverted Indexes on the UNIX System. M. E. Lesk. .RS Describes, among other things, the program REFER which fills in bibliographic citations from a data base automatically. .RE .RE .IP \n+n. NROFF/TROFF User's Manual. J. F. Ossanna. .RS The basic formatting program. .RE .IP \n+n. A TROFF Tutorial. B. W. Kernighan. .RS An introduction to TROFF for those who really want to know such things. .RE .SH Programming .IP \n+n. The C Programming Language \(em Reference Manual. D. M. Ritchie. .RS Official statement of the syntax and semantics of C. Should be supplemented by .ul The C Programming Language, B. W. Kernighan and D. M. Ritchie, Prentice-Hall, 1978, which contains a tutorial introduction and many examples. .RE .IP \n+n. Lint, A C Program Checker. S. C. Johnson. .RS Checks C programs for syntax errors, type violations, portability problems, and a variety of probable errors. .RE .IP \n+n. Make \(em A Program for Maintaining Computer Programs. S. I. Feldman. .RS Indispensable tool for making sure that large programs are properly compiled with minimal effort. .RE .IP \n+n. UNIX Programming. B. W. Kernighan and D. M. Ritchie. .RS Describes the programming interface to the operating system and the standard I/O library. .RE .IP \n+n. A Tutorial Introduction to ADB. J. F. Maranzano and S. R. Bourne. .RS How to use the ADB debugger. .RE .SH Supporting Tools and Languages .IP \n+n. YACC: Yet Another Compiler-Compiler. S. C. Johnson. .RS Converts a BNF specification of a language and semantic actions written in C into a compiler for the language. .RE .IP \n+n. LEX \(em A Lexical Analyzer Generator. M. E. Lesk and E. Schmidt. .RS Creates a recognizer for a set of regular expressions; each regular expression can be followed by arbitrary C code which will be executed when the regular expression is found. .RE .IP \n+n. A Portable Fortran 77 Compiler. S. I. Feldman and P. J. Weinberger. .RS The first Fortran 77 compiler, and still one of the best. .RE .IP \n+n. Ratfor \(em A Preprocessor for a Rational Fortran. B. W. Kernighan. .RS Converts a Fortran with C-like control structures and cosmetics into real, ugly Fortran. .RE .IP \n+n. The M4 Macro Processor. B. W. Kernighan and D. M. Ritchie. .RS M4 is a macro processor useful as a front end for C, Ratfor, Cobol, and in its own right. .RE .IP \n+n. SED \(em A Non-interactive Text Editor. L. E. McMahon. .RS A variant of the editor for processing large inputs. .RE .IP \n+n. AWK \(em A Pattern Scanning and Processing Language. A. V. Aho, B. W. Kernighan and .RS P. J. Weinberger. .br Makes it easy to specify many data transformation and selection operations. .RE .IP \n+n. DC \(em An Interactive Desk Calculator. R. H. Morris and L. L. Cherry. .RS A super HP calculator, if you don't need floating point. .RE .IP \n+n. BC \(em An Arbitrary Precision Desk-Calculator Language. L. L. Cherry and R. H. Morris. .RS A front end for DC that provides infix notation, control flow, and built-in functions. .RE .IP \n+n. UNIX Assembler Reference Manual. D. M. Ritchie. .RS The ultimate dead language. .RE .SH Implementation, Maintenance, and Miscellaneous .IP \n+n. Setting Up UNIX \(em Seventh Edition. C. B. Haley and D. M. Ritchie. .RS How to configure and get your system running. .RE .IP \n+n. Regenerating System Software. C. B. Haley and D. M. Ritchie. .RS What do do when you have to change things. .RE .IP \n+n. UNIX Implementation. K. Thompson. .RS How the system actually works inside. .RE .IP \n+n. The UNIX I/O System. D. M. Ritchie. .RS How the I/O system really works. .RE .IP \n+n. A Tour Through the UNIX C Compiler. D. M. Ritchie. .RS How the PDP-11 compiler works inside. .RE .IP \n+n. A Tour Through the Portable C Compiler. S. C. Johnson. .RS How the portable C compiler works inside. .RE .IP \n+n. A Dial-Up Network of UNIX Systems. D. A. Nowitz and M. E. Lesk. .RS Describes UUCP, a program for communicating files between UNIX systems. .RE .IP \n+n. UUCP Implementation Description. D. A. Nowitz. .RS How UUCP works, and how to administer it. .RE .IP \n+n. On the Security of UNIX. D. M. Ritchie. .RS Hints on how to break UNIX, and how to avoid doing so. .RE .IP \n+n. Password Security: A Case History. R. H. Morris and K. Thompson. .RS How the bad guys used to be able to break the password algorithm, and why they can't now, at least not so easily. .RE tting program. .RE .IP \n+n. A TROFF Tutorial. B. W. Kernighan. .RS An introduction to TROFF for those who really want to know such things. .RE .SH Programming .IP \n+n. The C Programming Language \(em Reference Manual. D. M. Ritchie. .RS Official statement of the syntax and semanticsdoc/2.10/f77 444 3 12 146206 3141165277 5563 .de XX .ne 3 .sp .3 .ti -1i .ta 1i \\$1 \c .. .EQ delim $$ .EN .ND "1 August 1978" .RP .TL A Portable Fortran 77 Compiler .AU S. I. Feldman .AU P. J. Weinberger .AI .MH .AB .LP The Fortran language has just been revised. The new language, known as Fortran 77, became an official American National Standard on April 3, 1978. We report here on a compiler and run-time system for the new extended language. This is believed to be the first complete Fortran 77 system to be implemented. This compiler is designed to be portable, to be correct and complete, and to generate code compatible with calling sequences produced by C compilers. In particular, this Fortran is quite usable on .UX systems. In this paper, we describe the language compiled, interfaces between procedures, and file formats assumed by the I/O system. An appendix describes the Fortran 77 language. .AE .CS 9 10 19 0 0 8 .NH 0 INTRODUCTION .PP The Fortran language has just been revised. The new language, known as Fortran 77, became an official American National Standard [1] on April 3, 1978. for the language, known as Fortran 77, is about to be published. Fortran 77 supplants 1966 Standard Fortran [2]. We report here on a compiler and run-time system for the new extended language. The compiler and computation library were written by SIF, the I/O system by PJW. We believe ours to be the first complete Fortran 77 system to be implemented. This compiler is designed to be portable to a number of different machines, to be correct and complete, and to generate code compatible with calling sequences produced by compilers for the C language [3]. In particular, it is in use on .UX systems. Two families of C compilers are in use at Bell Laboratories, those based on D. M. Ritchie's PDP-11 compiler[4] and those based on S. C. Johnson's portable C compiler [5]. This Fortran compiler can drive the second passes of either family. In this paper, we describe the language compiled, interfaces between procedures, and file formats assumed by the I/O system. We will describe implementation details in companion papers. .PP .NH 2 Usage .PP At present, versions of the compiler run on and compile for the PDP-11, the VAX-11/780, and the Interdata 8/32 .UX systems. The command to run the compiler is .DS C f\|77 \fIflags file . . .\fR .DE .B f\|77 is a general-purpose command for compiling and loading Fortran and Fortran-related files. EFL [6] and Ratfor [7] source files will be preprocessed before being presented to the Fortran compiler. C and assembler source files will be compiled by the appropriate programs. Object files will be loaded. (The .B f\|77 and .B cc commands cause slightly different loading sequences to be generated, since Fortran programs need a few extra libraries and a different startup routine than do C programs.) The following file name suffixes are understood: .DS I .f Fortran source file .e EFL source file .r Ratfor source file .c C source file .s Assembler source file .o Object file .DE The following flags are understood: .in +1i .XX \(miS Generate assembler output for each source file, but do not assemble it. Assembler output for a source file .B x.f, .B x.e, .B x.r, or .B x.c is put on file \fBx.s\fR. .XX \(mic Compile but do not load. Output for .B x.f, .B x.e, .B x.r, .B x.c, or .B x.s is put on file .B x.o. .XX \(mim Apply the M4 macro preprocessor to each EFL or Ratfor source file before using the appropriate compiler. .XX \(mif Apply the EFL or Ratfor processor to all relevant files, and leave the output from .B x.e or .B x.r on .B x.f. Do not compile the resulting Fortran program. .XX \(mip Generate code to produce usage profiles. .XX "\(mio \fIf\fR" Put executable module on file .I f. (Default is \fBa.out\fR). .XX \(miw Suppress all warning messages. .XX \(miw66 Suppress warnings about Fortran 66 features used. .XX \(miO Invoke the C object code optimizer. .XX \(miC Compile code the checks that subscripts are within array bounds. .XX \(mionetrip Compile code that performs every .B do loop at least once. (see Section 2.10). .XX \(miU Do not convert upper case letters to lower case. The default is to convert Fortran programs to lower case. .XX \(miu Make the default type of a variable .B undefined. (see Section 2.3). .XX \(miI2 On machines which support short integers, make the default integer constants and variables short. (\fB\(miI4\fR is the standard value of this option). (see Section 2.14). All logical quantities will be short. .XX \(miE The remaining characters in the argument are used as an EFL flag argument. .XX \(miR The remaining characters in the argument are used as a Ratfor flag argument. .XX \(miF Ratfor and and EFL source programs are pre-processed into Fortran files, but those files are not compiled or removed. .in -1i .LP Other flags, all library names (arguments beginning \fB\(mil\fR), and any names not ending with one of the understood suffixes are passed to the loader. .NH 2 Documentation Conventions .PP In running text, we write Fortran keywords and other literal strings in boldface lower case. Examples will be presented in lightface lower case. Names representing a class of values will be printed in italics. .NH 2 Implementation Strategy .PP The compiler and library are written entirely in C. The compiler generates C compiler intermediate code. Since there are C compilers running on a variety of machines, relatively small changes will make this Fortran compiler generate code for any of them. Furthermore, this approach guarantees that the resulting programs are compatible with C usage. The runtime computational library is complete. The mathematical functions are computed to at least 63 bit precision. The runtime I/O library makes use of D. M. Ritchie's Standard C I/O package [8] for transferring data. With the few exceptions described below, only documented calls are used, so it should be relatively easy to modify to run on other operating systems. .NH 1 LANGUAGE EXTENSIONS .PP Fortran 77 includes almost all of Fortran 66 as a subset. We describe the differences briefly in the Appendix. The most important additions are a character string data type, file-oriented input/output statements, and random access I/O. Also, the language has been cleaned up considerably. .PP In addition to implementing the language specified in the new Standard, our compiler implements a few extensions described in this section. Most are useful additions to the language. The remainder are extensions to make it easier to communicate with C procedures or to permit compilation of old (1966 Standard) programs. .NH 2 Double Complex Data Type .IP The new type .B "double complex" is defined. Each datum is represented by a pair of double precision real variables. A double complex version of every .B complex built-in function is provided. The specific function names begin with \fBz\fR instead of \fBc\fR. .NH 2 Internal Files .IP The Fortran 77 standard introduces ``internal files'' (memory arrays), but restricts their use to formatted sequential I/O statements. Our I/O system also permits internal files to be used in direct and unformatted reads and writes. .NH 2 Implicit Undefined statement .IP Fortran 66 has a fixed rule that the type of a variable that does not appear in a type statement is .B integer if its first letter is \fBi, j, k, l, m\fR or \fBn\fR, and .B real otherwise. Fortran 77 has an .B implicit statement for overriding this rule. As an aid to good programming practice, we permit an additional type, .B undefined. The statement .DS implicit undefined(a-z) .DE turns off the automatic data typing mechanism, and the compiler will issue a diagnostic for each variable that is used but does not appear in a type statement. Specifying the .B \(miu compiler flag is equivalent to beginning each procedure with this statement. .NH 2 Recursion .IP Procedures may call themselves, directly or through a chain of other procedures. .NH 2 Automatic Storage .IP Two new keywords are recognized, .B static and .B automatic. These keywords may appear as ``types'' in type statements and in .B implicit statements. Local variables are static by default; there is exactly one copy of the datum, and its value is retained between calls. There is one copy of each variable declared .B automatic for each invocation of the procedure. Automatic variables may not appear in .B equivalence, .B data, or .B save statements. .NH 2 Source Input Format .IP The Standard expects input to the compiler to be in 72 column format: except in comment lines, the first five characters are the statement number, the next is the continuation character, and the next sixty-six are the body of the line. (If there are fewer than seventy-two characters on a line, the compiler pads it with blanks; characters after the seventy-second are ignored). .IP In order to make it easier to type Fortran programs, our compiler also accepts input in variable length lines. An ampersand (``&'') in the first position of a line indicates a continuation line; the remaining characters form the body of the line. A tab character in one of the first six positions of a line signals the end of the statement number and continuation part of the line; the remaining characters form the body of the line. A tab elsewhere on the line is treated as another kind of blank by the compiler. .IP In the Standard, there are only 26 letters \(em Fortran is a one-case language. Consistent with ordinary .UX system usage, our compiler expects lower case input. By default, the compiler converts all upper case characters to lower case except those inside character constants. However, if the .B \(miU compiler flag is specified, upper case letters are not transformed. In this mode, it is possible to specify external names with upper case letters in them, and to have distinct variables differing only in case. Regardless of the setting of the flag, keywords will only be recognized in lower case. .NH 2 Include Statement .IP The statement .DS include \(fmstuff\|\(fm .DE is replaced by the contents of the file .B stuff. \fBinclude\fRs may be nested to a reasonable depth, currently ten. .NH 2 Binary Initialization Constants .IP A .B logical, .B real, or .B integer variable may be initialized in a .B data statement by a binary constant, denoted by a letter followed by a quoted string. If the letter is \fBb\fR, the string is binary, and only zeroes and ones are permitted. If the letter is \fBo\fR, the string is octal, with digits \fB0\(mi7\fR. If the letter is \fBz\fR or \fBx\fR, the string is hexadecimal, with digits \fB0\(mi9\fR, \fBa\(mif\fR. Thus, the statements .DS integer a(3) data a / b\(fm1010\(fm, o\(fm12\(fm, z\(fma\(fm / .DE initialize all three elements of .B a to ten. .NH 2 Character Strings .IP For compatibility with C usage, the following backslash escapes are recognized: .DS \en newline \et tab \eb backspace \ef form feed \e0 null \e\(fm apostrophe (does not terminate a string) \e" quotation mark (does not terminate a string) \e\e \e \e\fIx\fR \fIx\fR, where \fIx\fR is any other character .DE Fortran 77 only has one quoting character, the apostrophe. Our compiler and I/O system recognize both the apostrophe ( \(fm ) and the double-quote ( " ). If a string begins with one variety of quote mark, the other may be embedded within it without using the repeated quote or backslash escapes. .IP Every unequivalenced scalar local character variable and every character string constant is aligned on an .B integer word boundary. Each character string constant appearing outside a .B data statement is followed by a null character to ease communication with C routines. .NH 2 Hollerith .IP Fortran 77 does not have the old Hollerith (\fIn\|\fBh\fR) notation, though the new Standard recommends implementing the old Hollerith feature in order to improve compatibility with old programs. In our compiler, Hollerith data may be used in place of character string constants, and may also be used to initialize non-character variables in .B data statements. .NH 2 Equivalence Statements .IP As a very special and peculiar case, Fortran 66 permits an element of a multiply-dimensioned array to be represented by a singly-subscripted reference in .B equivalence statements. Fortran 77 does not permit this usage, since subscript lower bounds may now be different from 1. Our compiler permits single subscripts in .B equivalence statements, under the interpretation that all missing subscripts are equal to 1. A warning message is printed for each such incomplete subscript. .NH 2 One-Trip DO Loops .IP The Fortran 77 Standard requires that the range of a .B do loop not be performed if the initial value is already past the limit value, as in .DS do 10 i = 2, 1 .DE The 1966 Standard stated that the effect of such a statement was undefined, but it was common practice that the range of a .B do loop would be performed at least once. In order to accommodate old programs, though they were in violation of the 1966 Standard, the .B \(mionetrip compiler flag causes non-standard loops to be generated. .NH 2 Commas in Formatted Input .IP The I/O system attempts to be more lenient than the Standard when it seems worthwhile. When doing a formatted read of non-character variables, commas may be used as value separators in the input record, overriding the field lengths given in the format statement. Thus, the format .DS (i10, f20.10, i4) .DE will read the record .DS \(mi345,.05e\(mi3,12 .DE correctly. .NH 2 Short Integers .IP On machines that support halfword integers, the compiler accepts declarations of type .B integer\(**2. (Ordinary integers follow the Fortran rules about occupying the same space as a REAL variable; they are assumed to be of C type .B "long int" ; halfword integers are of C type .B "short int" .) An expression involving only objects of type .B integer\(**2 is of that type. Generic functions return short or long integers depending on the actual types of their arguments. If a procedure is compiled using the .B \(miI2 flag, all small integer constants will be of type .B integer\(**2. If the precision of an integer-valued intrinsic function is not determined by the generic function rules, one will be chosen that returns the prevailing length (\fBinteger\(**2\fR when the \fB\(miI2\fR command flag is in effect). When the .B \(miI2 option is in effect, all quantities of type .B logical will be short. Note that these short integer and logical quantities do not obey the standard rules for storage association. .NH 2 Additional Intrinsic Functions .IP This compiler supports all of the intrinsic functions specified in the Fortran 77 Standard. In addition, there are functions for performing bitwise Boolean operations ( .B or, .B and, .B xor, and .B not) and for accessing the .UX command arguments ( .B getarg and .B iargc ). .NH 1 VIOLATIONS OF THE STANDARD .PP We know only thre ways in which our Fortran system violates the new standard: .NH 2 Double Precision Alignment .IP The Fortran standards (both 1966 and 1977) permit .B common or .B equivalence statements to force a double precision quantity onto an odd word boundary, as in the following example: .DS I real a(4) double precision b,c .sp .5 equivalence (a(1),b), (a(4),c) .DE Some machines (e.g., Honeywell 6000, IBM 360) require that double precision quantities be on double word boundaries; other machines (e.g., IBM 370), run inefficiently if this alignment rule is not observed. It is possible to tell which equivalenced and common variables suffer from a forced odd alignment, but every double precision argument would have to be assumed on a bad boundary. To load such a quantity on some machines, it would be necessary to use separate operations to move the upper and lower halves into the halves of an aligned temporary, then to load that double precision temporary; the reverse would be needed to store a result. We have chosen to require that all double precision real and complex quantities fall on even word boundaries on machines with corresponding hardware requirements, and to issue a diagnostic if the source code demands a violation of the rule. .NH 2 Dummy Procedure Arguments .IP If any argument of a procedure is of type character, all dummy procedure arguments of that procedure must be declared in an .B external statement. This requirement arises as a subtle corollary of the way we represent character string arguments and of the one-pass nature of the compiler. A warning is printed if a dummy procedure is not declared .B external. Code is correct if there are no .B character arguments. .NH 2 T and TL Formats .IP The implementation of the .B t (absolute tab) and .B tl (leftward tab) format codes is defective. These codes allow rereading or rewriting part of the record which has already been processed. (Section 6.3.2 in the Appendix.) The implementation uses seeks, so if the unit is not one which allows seeks, such as a terminal, the program is in error. (People who can make a case for using .B tl should let us know.) A benefit of the implementation chosen is that there is no upper limit on the length of a record, nor is it necessary to predeclare any record lengths except where specifically required by Fortran or the operating system. .NH 1 INTER-PROCEDURE INTERFACE .PP To be able to write C procedures that call or are called by Fortran procedures, it is necessary to know the conventions for procedure names, data representation, return values, and argument lists that the compiled code obeys. .NH 2 Procedure Names .PP On .UX systems, the name of a common block or a Fortran procedure has an underscore appended to it by the compiler to distinguish it from a C procedure or external variable with the same user-assigned name. Fortran library procedure names have embedded underscores to avoid clashes with user-assigned subroutine names. .NH 2 Data Representations .PP The following is a table of corresponding Fortran and C declarations: .KS .TS center; c c l l. Fortran C .sp .5 integer\(**2 x short int x; integer x long int x; logical x long int x; real x float x; double precision x double x; complex x struct { float r, i; } x; double complex x struct { double dr, di; } x; character\(**6 x char x[6]; .TE .KE (By the rules of Fortran, .B integer, .B logical, and .B real data occupy the same amount of memory). .NH 2 Return Values .PP A function of type .B integer, .B logical, .B real, or .B "double precision" declared as a C function that returns the corresponding type. A .B complex or .B "double complex" function is equivalent to a C routine with an additional initial argument that points to the place where the return value is to be stored. Thus, .DS complex function f( . . . ) .DE is equivalent to .DS f_(temp, . . .) struct { float r, i; } \(**temp; . . . .DE .DE A character-valued function is equivalent to a C routine with two extra initial arguments: a data address and a length. Thus, .DS character\(**15 function g( . . . ) .DE is equivalent to .DS g_(result, length, . . .) char result[ ]; long int length; . . . .DE and could be invoked in C by .DS char chars[15]; . . . g_(chars, 15L, . . . ); .DE Subroutines are invoked as if they were \fBinteger\fR-valued functions whose value specifies which alternate return to use. Alternate return arguments (statement labels) are not passed to the function, but are used to do an indexed branch in the calling procedure. (If the subroutine has no entry points with alternate return arguments, the returned value is undefined.) The statement .DS call nret(\(**1, \(**2, \(**3) .DE is treated exactly as if it were the computed .B goto .DS goto (1, 2, 3), nret( ) .DE .NH 2 Argument Lists .PP All Fortran arguments are passed by address. In addition, for every argument that is of type character or that is a dummy procedure, an argument giving the length of the value is passed. (The string lengths are .B "long int" quantities passed by value). The order of arguments is then: .DS Extra arguments for complex and character functions Address for each datum or function A \fBlong int\fR for each character or procedure argument .DE Thus, the call in .DS external f character\(**7 s integer b(3) . . . call sam(f, b(2), s) .DE is equivalent to that in .DS int f(); char s[7]; long int b[3]; . . . sam_(f, &b[1], s, 0L, 7L); .DE Note that the first element of a C array always has subscript zero, but Fortran arrays begin at 1 by default. Fortran arrays are stored in column-major order, C arrays are stored in row-major order. .NH 1 FILE FORMATS .NH 2 Structure of Fortran Files .PP Fortran requires four kinds of external files: sequential formatted and unformatted, and direct formatted and unformatted. On .UX systems, these are all implemented as ordinary files which are assumed to have the proper internal structure. .PP Fortran I/O is based on ``records''. When a direct file is opened in a Fortran program, the record length of the records must be given, and this is used by the Fortran I/O system to make the file look as if it is made up of records of the given length. In the special case that the record length is given as 1, the files are not considered to be divided into records, but are treated as byte-addressable byte strings; that is, as ordinary .UX file system files. (A read or write request on such a file keeps consuming bytes until satisfied, rather than being restricted to a single record.) .PP The peculiar requirements on sequential unformatted files make it unlikely that they will ever be read or written by any means except Fortran I/O statements. Each record is preceded and followed by an integer containing the record's length in bytes. .PP The Fortran I/O system breaks sequential formatted files into records while reading by using each newline as a record separator. The result of reading off the end of a record is undefined according to the Standard. The I/O system is permissive and treats the record as being extended by blanks. On output, the I/O system will write a newline at the end of each record. It is also possible for programs to write newlines for themselves. This is an error, but the only effect will be that the single record the user thought he wrote will be treated as more than one record when being read or backspaced over. .NH 2 Portability Considerations .PP The Fortran I/O system uses only the facilities of the standard C I/O library, a widely available and fairly portable package, with the following two nonstandard features: The I/O system needs to know whether a file can be used for direct I/O, and whether or not it is possible to backspace. Both of these facilities are implemented using the .B fseek routine, so there is a routine .B canseek which determines if .B fseek will have the desired effect. Also, the .B inquire statement provides the user with the ability to find out if two files are the same, and to get the name of an already opened file in a form which would enable the program to reopen it. (The .UX operating system implementation attempts to determine the full pathname.) Therefore there are two routines which depend on facilities of the operating system to provide these two services. In any case, the I/O system runs on the PDP-11, VAX-11/780, and Interdata 8/32 .UX systems. .NH 2 Pre-Connected Files and File Positions .PP Units 5, 6, and 0 are preconnected when the program starts. Unit 5 is connected to the standard input, unit 6 is connected to the standard output, and unit 0 is connected to the standard error unit. All are connected for sequential formatted I/O. .PP All the other units are also preconnected when execution begins. Unit .I n is connected to a file named \fBfort.\fIn\fR. These files need not exist, nor will they be created unless their units are used without first executing an .B open. The default connection is for sequential formatted I/O. .PP The Standard does not specify where a file which has been explicitly \fBopen\fRed for sequential I/O is initially positioned. In fact, the I/O system attempts to position the file at the end, so a .B write will append to the file and a .B read will result in an end-of-file indication. To position a file to its beginning, use a .B rewind statement. The preconnected units 0, 5, and 6 are positioned as they come from the program's parent process. .SG .SH REFERENCES .LP .IP 1. \fISigplan Notices \fB11\fR, No.3 (1976), as amended in X3J3 internal documents through ``/90.1''. .IP 2. \fIUSA Standard FORTRAN, USAS X3.9-1966\fR, New York: United States of America Standards Institute, March 7, 1966. Clarified in \fIComm. ACM \fB12,\fR 289 (1969) and \fIComm. ACM \fB14, \fR 628 (1971). .IP 3. B. W. Kernighan and D. M. Ritchie, .I The C Programming Language, .R Englewood Cliffs: Prentice-Hall (1978). .IP 4. D. M. Ritchie, private communication. .IP 5. S. C. Johnson, ``A Portable Compiler: Theory and Practice'', Proc. 5th ACM Symp. on Principles of Programming Languages (January 1978). .IP 6. S. I. Feldman, ``An Informal Description of EFL'', internal memorandum. .IP 7. B. W. Kernighan, ``RATFOR \(em A Preprocessor for a Rational Fortran'', .I Bell Laboratories Computing Science Technical Report #55, .R (January 1977). .IP 8. D. M. Ritchie, private communication. .bp .SH APPENDIX. Differences Between Fortran 66 and Fortran 77 .PP The following is a very brief description of the differences between the 1966 [2] and the 1977 [1] Standard languages. We assume that the reader is familiar with Fortran 66. We do not pretend to be complete, precise, or unbiased, but plan to describe what we feel are the most important aspects of the new language. At present the only current information on the 1977 Standard is in publications of the X3J3 Subcommittee of the American National Standards Institute. The following information is from the ``/92'' document. This draft Standard is written in English rather than a meta-language, but it is forbidding and legalistic. No tutorials or textbooks are available yet. .NH 0 Features Deleted from Fortran 66 .NH 2 Hollerith .IP All notions of ``Hollerith'' (\fIn\|\fBh\fR) as data have been officially removed, although our compiler, like almost all in the foreseeable future, will continue to support this archaism. .NH 2 Extended Range .IP In Fortran 66, under a set of very restrictive and rarely-understood conditions, it is permissible to jump out of the range of a .B do loop, then jump back into it. Extended range has been removed in the Fortran 77 language. The restrictions are so special, and the implementation of extended range is so unreliable in many compilers, that this change really counts as no loss. .NH 1 Program Form .NH 2 Blank Lines .IP Completely blank lines are now legal comment lines. .NH 2 Program and Block Data Statements .IP A main program may now begin with a statement that gives that program an external name: .DS program work .DE Block data procedures may also have names. .DS block data stuff .DE There is now a rule that only .I one unnamed block data procedure may appear in a program. (This rule is not enforced by our system.) The Standard does not specify the effect of the program and block data names, but they are clearly intended to aid conventional loaders. .NH 2 ENTRY Statement .IP Multiple entry points are now legal. Subroutine and function subprograms may have additional entry points, declared by an .B entry statement with an optional argument list. .DS entry extra(a, b, c) .DE Execution begins at the first statement following the .B entry line. All variable declarations must precede all executable statements in the procedure. If the procedure begins with a .B subroutine statement, all entry points are subroutine names. If it begins with a .B function statement, each entry is a function entry point, with type determined by the type declared for the entry name. If any entry is a character-valued function, then all entries must be. In a function, an entry name of the same type as that where control entered must be assigned a value. Arguments do not retain their values between calls. (The ancient trick of calling one entry point with a large number of arguments to cause the procedure to ``remember'' the locations of those arguments, then invoking an entry with just a few arguments for later calculation, is still illegal. Furthermore, the trick doesn't work in our implementation, since arguments are not kept in static storage.) .NH 2 DO Loops .IP .B do variables and range parameters may now be of integer, real, or double precision types. (The use of floating point .B do variables is very dangerous because of the possibility of unexpected roundoff, and we strongly recommend against their use). The action of the .B do statement is now defined for all values of the .B do parameters. The statement .DS do 10 i = l, u, d .DE performs $ max (0^,^ left floor ( u - l ) / d^ right floor )$ iterations. The .B do variable has a predictable value when exiting a loop: the value at the time a .B goto or .B return terminates the loop; otherwise the value that failed the limit test. .NH 2 Alternate Returns .IP In a .B subroutine or subroutine .B entry statement, some of the arguments may be noted by an asterisk, as in .DS subroutine s(a, \(**, b, \(**) .DE The meaning of the ``alternate returns'' is described in section 5.2 of the Appendix. .NH 1 Declarations .NH 2 CHARACTER Data Type .IP One of the biggest improvements to the language is the addition of a character-string data type. Local and common character variables must have a length denoted by a constant expression: .DS character\(**17 a, b(3,4) character\(**(6+3) c .DE If the length is omitted entirely, it is assumed equal to 1. A character string argument may have a constant length, or the length may be declared to be the same as that of the corresponding actual argument at run time by a statement like .DS character\(**(\(**) a .DE (There is an intrinsic function .B len that returns the actual length of a character string). Character arrays and common blocks containing character variables must be packed: in an array of character variables, the first character of one element must follow the last character of the preceding element, without holes. .NH 2 IMPLICIT Statement .IP The traditional implied declaration rules still hold: a variable whose name begins with \fBi, j, k, l, m,\fR or \fBn\fR is of type .B integer, other variables are of type .B real, unless otherwise declared. This general rule may be overridden with an .B implicit statement: .DS implicit real(a-c,g), complex(w-z), character\(**(17) (s) .DE declares that variables whose name begins with an \fBa ,b, c,\fR or \fBg\fR are .B real, those beginning with \fBw, x, y,\fR or \fBz\fR are assumed .B complex, and so on. It is still poor practice to depend on implicit typing, but this statement is an industry standard. .NH 2 PARAMETER Statement .IP It is now possible to give a constant a symbolic name, as in .DS parameter (x=17, y=x/3, pi=3.14159d0, s=\(fmhello\(fm) .DE The type of each parameter name is governed by the same implicit and explicit rules as for a variable. The right side of each equal sign must be a constant expression (an expression made up of constants, operators, and already defined parameters). .NH 2 Array Declarations .IP Arrays may now have as many as seven dimensions. (Only three were permitted in 1966). The lower bound of each dimension may be declared to be other than 1 by using a colon. Furthermore, an adjustable array bound may be an integer expression involving constants, arguments, and variables in .B common. .DS real a(\(mi5:3, 7, m:n), b(n+1:2\(**n) .DE The upper bound on the last dimension of an array argument may be denoted by an asterisk to indicate that the upper bound is not specified: .DS integer a(5, \(**), b(\(**), c(0:1, \(mi2:\(**) .DE .NH 2 SAVE Statement .IP A poorly known rule of Fortran 66 is that local variables in a procedure do not necessarily retain their values between invocations of that procedure. At any instant in the execution of a program, if a common block is declared neither in the currently executing procedure nor in any of the procedures in the chain of callers, all of the variables in that common block also become undefined. (The only exceptions are variables that have been defined in a .B data statement and never changed). These rules permit overlay and stack implementations for the affected variables. Fortran 77 permits one to specify that certain variables and common blocks are to retain their values between invocations. The declaration .DS save a, /b/, c .DE leaves the values of the variables .B a and .B c and all of the contents of common block .B b unaffected by a return. The simple declaration .DS save .DE has this effect on all variables and common blocks in the procedure. A common block must be \fBsave\fRd in every procedure in which it is declared if the desired effect is to occur. .NH 2 INTRINSIC Statement .IP All of the functions specified in the Standard are in a single category, ``intrinsic functions'', rather than being divided into ``intrinsic'' and ``basic external'' functions. If an intrinsic function is to be passed to another procedure, it must be declared .B intrinsic. Declaring it .B external (as in Fortran 66) causes a function other than the built-in one to be passed. .NH 1 Expressions .NH 2 Character Constants .IP Character string constants are marked by strings surrounded by apostrophes. If an apostrophe is to be included in a constant, it is repeated: .DS \(fmabc\(fm \(fmain\(fm\(fmt\(fm .DE There are no null (zero-length) character strings in Fortran 77. Our compiler has two different quotation marks, `` \(fm ''' and `` " ''. (See Section 2.9 in the main text.) .NH 2 Concatenation .IP One new operator has been added, character string concatenation, marked by a double slash (``//''). The result of a concatenation is the string containing the characters of the left operand followed by the characters of the right operand. The strings .DS \(fmab\(fm // \(fmcd\(fm \(fmabcd\(fm .DE are equal. The strings being concatenated must be of constant length in all concatenations that are not the right sides of assignments. (The only concatenation expressions in which a character string declared adjustable with a ``\(**(\(**)'' modifier or a substring denotation with nonconstant position values may appear are the right sides of assignments). .NH 2 Character String Assignment .IP The left and right sides of a character assignment may not share storage. (The assumed implementation of character assignment is to copy characters from the right to the left side.) If the left side is longer than the right, it is padded with blanks. If the left side is shorter than the right, trailing characters are discarded. .NH 2 Substrings .IP It is possible to extract a substring of a character variable or character array element, using the colon notation: .DS a(i,\|j) (m:n) .DE is the string of $(n-m+1)$ characters beginning at the $m sup th$ character of the character array element $a sub ij$. Results are undefined unless $m<=n$. Substrings may be used on the left sides of assignments and as procedure actual arguments. .NH 2 Exponentiation .IP It is now permissible to raise real quantities to complex powers, or complex quantities to real or complex powers. (The principal part of the logarithm is used). Also, multiple exponentiation is now defined: .DS a\(**\(**b\(**\(**c = a \(**\(** (b\(**\(**c) .DE .NH 2 Relaxation of Restrictions .IP Mixed mode expressions are now permitted. (For instance, it is permissible to combine integer and complex quantities in an expression.) .IP Constant expressions are permitted where a constant is allowed, except in .B data statements. (A constant expression is made up of explicit constants and \fBparameter\fRs and the Fortran operators, except for exponentiation to a floating-point power). An adjustable dimension may now be an integer expression involving constants, arguments, and variables in B common.. .IP Subscripts may now be general integer expressions; the old $c v +- c'$ rules have been removed. .B do loop bounds may be general integer, real, or double precision expressions. Computed .B goto expressions and I/O unit numbers may be general integer expressions. .NH 1 Executable Statements .NH 2 IF-THEN-ELSE .IP At last, the if-then-else branching structure has been added to Fortran. It is called a ``Block If''. A Block If begins with a statement of the form .DS if ( . . . ) then .DE and ends with an .DS end if .DE statement. Two other new statements may appear in a Block If. There may be several .DS else if(. . .) then .DE statements, followed by at most one .DS else .DE statement. If the logical expression in the Block If statement is true, the statements following it up to the next .B elseif, .B else, or .B endif are executed. Otherwise, the next .B elseif statement in the group is executed. If none of the .B elseif conditions are true, control passes to the statements following the .B else statement, if any. (The .B else must follow all \fBelseif\fRs in a Block If. Of course, there may be Block Ifs embedded inside of other Block If structures). A case construct may be rendered .DS if (s .eq. \(fmab\(fm) then . . . else if (s .eq. \(fmcd\(fm) then . . . else . . . end if .DE .NH 2 Alternate Returns .IP Some of the arguments of a subroutine call may be statement labels preceded by an asterisk, as in .DS call joe(j, \(**10, m, \(**2) .DE A .B return statement may have an integer expression, such as .DS return k .DE If the entry point has $n$ alternate return (asterisk) arguments and if $1<=k<=n$, the return is followed by a branch to the corresponding statement label; otherwise the usual return to the statement following the .B call is executed. .NH 1 Input/Output .NH 2 Format Variables .IP A format may be the value of a character expression (constant or otherwise), or be stored in a character array, as in .DS write(6, \(fm(i5)\(fm) x .DE .NH 2 END=, ERR=, and IOSTAT= Clauses .IP A .B read or .B write statement may contain .B end=, .B err=, and .B iostat= clauses, as in .DS write(6, 101, err=20, iostat=a(4)) read(5, 101, err=20, end=30, iostat=x) .DE Here 5 and 6 are the .I units on which the I/O is done, 101 is the statement number of the associated format, 20 and 30 are statement numbers, and .B a and .B x are integers. If an error occurs during I/O, control returns to the program at statement 20. If the end of the file is reached, control returns to the program at statement 30. In any case, the variable referred to in the .B iostat= clause is given a value when the I/O statement finishes. (Yes, the value is assigned to the name on the right side of the equal sign.) This value is zero if all went well, negative for end of file, and some positive value for errors. .NH 2 Formatted I/O .NH 3 Character Constants .IP Character constants in formats are copied literally to the output. Character constants cannot be read into. .DS write(6,\(fm(i2,\(fm\(fm isn\(fm\(fm\(fm\(fmt \(fm\(fm,i1)\(fm) 7, 4 .DE produces .DS 7 isn\(fmt 4 .DE Here the format is the character constant .DS (i2,\(fm isn\(fm\(fmt \(fm,i1) .DE and the character constant .DS isn\(fmt .DE is copied into the output. .NH 3 Positional Editing Codes .IP .B t, .B tl, .B tr, and .B x codes control where the next character is in the record. \fBtr\fIn\fR or \fIn\fBx\fR specifies that the next character is $n$ to the right of the current position. \fBtl\fIn\fR specifies that the next character is $n$ to the left of the current position, allowing parts of the record to be reconsidered. \fBt\fIn\fR says that the next character is to be character number $n$ in the record. (See section 3.4 in the main text.) .NH 3 Colon .IP A colon in the format terminates the I/O operation if there are no more data items in the I/O list, otherwise it has no effect. In the fragment .DS x=\(fm("hello", :, " there", i4)\(fm write(6, x) 12 write(6, x) .DE the first .B write statement prints \fBhello there 12\fR, while the second only prints \fBhello\fR. .NH 3 Optional Plus Signs .IP According to the Standard, each implementation has the option of putting plus signs in front of non-negative numeric output. The .B sp format code may be used to make the optional plus signs actually appear for all subsequent items while the format is active. The .B ss format code guarantees that the I/O system will not insert the optional plus signs, and the .B s format code restores the default behavior of the I/O system. (Since we never put out optional plus signs, .B ss and .B s codes have the same effect in our implementation.) .NH 3 Blanks on Input .IP Blanks in numeric input fields, other than leading blanks will be ignored following a .B bn code in a format statement, and will be treated as zeros following a .B bz code in a format statement. The default for a unit may be changed by using the .B open statement. (Blanks are ignored by default.) .NH 3 Unrepresentable Values .IP The Standard requires that if a numeric item cannot be represented in the form required by a format code, the output field must be filled with asterisks. (We think this should have been an option.) .NH 3 Iw.m .IP There is a new integer output code, \fBi\fIw.m.\fR It is the same as \fBi\fIw\fR, except that there will be at least $m$ digits in the output field, including, if necessary, leading zeros. The case \fBi\fR$w.0$ is special, in that if the value being printed is 0, the output field is entirely blank. \fBi\fIw\fB.1\fR is the same as \fBi\fIw\fR. .NH 3 Floating Point .IP On input, exponents may start with the letter \fBE, D, e, \fRor \fBd.\fR All have the same meaning. On output we always use \fBe\fR. The .B e and .B d format codes also have identical meanings. A leading zero before the decimal point in .B e output without a scale factor is optional with the implementation. (We do not print it.) There is a \fBg\fIw.d\fR format code which is the same as \fBe\fIw.d\fR and \fBf\fIw.d\fR on input, but which chooses .B f or .B e formats for output depending. on the size of the number and of $d$. .NH 3 ``A'' Format Code .IP A codes are used for character values. \fBa\fIw\fR use a field width of $w$, while a plain .B a uses the length of the character item. .NH 2 Standard Units .IP There are default formatted input and output units. The statement .DS read 10, a, b .DE reads from the standard unit using format statement 10. The default unit may be explicitly specified by an asterisk, as in .DS read(\(**, 10) a,b .DE Similarly, the standard output units is specified by a .B print statement or an asterisk unit: .DS print 10 write(\(**, 10) .DE .NH 2 List-Directed Formatting .IP List-directed I/O is a kind of free form input for sequential I/O. It is invoked by using an asterisk as the format identifier, as in .DS read(6, \(**) a,b,c .DE .IP On input, values are separated by strings of blanks and possibly a comma. Values, except for character strings, cannot contain blanks. End of record counts as a blank, except in character strings, where it is ignored. Complex constants are given as two real constants separated by a comma and enclosed in parentheses. A null input field, such as between two consecutive commas, means the corresponding variable in the I/O list is not changed. Values may be preceded by repetition counts, as in .DS 4\(**(3.,2.) 2\(**, 4\(**\(fmhello\(fm .DE which stands for 4 complex constants, 2 null values, and 4 string constants. .IP For output, suitable formats are chosen for each item. The values of character strings are printed; they are not enclosed in quotes, so they cannot be read back using list-directed input. .NH 2 Direct I/O .IP A file connected for direct access consists of a set of equal-sized records each of which is uniquely identified by a positive integer. The records may be written or read in any order, using direct access I/O statements. .IP Direct access .B read and .B write statements have an extra argument, .B rec=, which gives the record number to be read or written. .DS read(2, rec=13, err=20) (a(i), i=1, 203) .DE reads the thirteenth record into the array .B a. .IP The size of the records must be given by an .B open statement (see below). Direct access files may be connected for either formatted or unformatted I/O. .NH 2 Internal Files .IP Internal files are character string objects, such as variables or substrings, or arrays of type character. In the former cases there is only a single record in the file, in the latter case each array element is a record. The Standard includes only sequential formatted I/O on internal files. (I/O is not a very precise term to use here, but internal files are dealt with using .B read and .B write). There is no list-directed I/O on internal files. Internal files are used by giving the name of the character object in place of the unit number, as in .DS character\(**80 x read(5,"(a)") x read(x,"(i3,i4)") n1,n2 .DE which reads a card image into .B x and then reads two integers from the front of it. A sequential .B read or .B write always starts at the beginning of an internal file. .IP (We also support a compatible extension, direct I/O on internal files. This is like direct I/O on external files, except that the number of records in the file cannot be changed.) .NH 2 OPEN, CLOSE, and INQUIRE Statements .IP These statements are used to connect and disconnect units and files, and to gather information about units and files. .NH 3 OPEN .IP The .B open statement is used to connect a file with a unit, or to alter some properties of the connection. The following is a minimal example. .DS open(1, file=\(fmfort.junk\(fm) .DE .B open takes a variety of arguments with meanings described below. .EQ delim off .EN .RS . \" macros here .de HP .RT .if !\\(IP .nr IP +1 .sp \\n(PDu .ne 3v .in +\\n(PIu .ti -\\n(PIu \fB\\$1\fR\ \c .. .de P1 .KS .nf .in +.3i .ta .3i .6i .9i 1.2i 1.5i 1.8i .sp .. .de P2 .fi .in -.3i .sp .KE .. .de TH .RT .sp \\n(PDu .ne 3v \fB\\$1\\$2\\$3\\$4\\$5\\$6\fR\ \c .. . \" end of macros .HP unit= a small non-negative integer which is the unit to which the file is to be connected. We allow, at the time of this writing, 0 through 9. If this parameter is the first one in the .B open statement, the .B unit= can be omitted. .HP iostat= is the same as in .B read or .B write. .HP err= is the same as in .B read or .B write. .HP file= a character expression, which when stripped of trailing blanks, is the name of the file to be connected to the unit. The filename should not be given if the .B status=scratch. .HP status= one of .B old, .B new, .B scratch, or .B unknown. If this parameter is not given, .B unknown is assumed. If .B scratch is given, a temporary file will be created. Temporary files are destroyed at the end of execution. If .B new is given, the file will be created if it doesn't exist, or truncated if it does. The meaning of .B unknown is processor dependent; our system treats it as synonymous with .B old. .HP access= .B sequential or .B direct, depending on whether the file is to be opened for sequential or direct I/O. .HP form= .B formatted or .B unformatted. .HP recl= a positive integer specifying the record length of the direct access file being opened. We measure all record lengths in bytes. On .UX systems a record length of 1 has the special meaning explained in section 5.1 of the text. .HP blank= .B null or .B zero. This parameter has meaning only for formatted I/O. The default value is .B null. .B zero means that blanks, other than leading blanks, in numeric input fields are to be treated as zeros. .RE .IP Opening a new file on a unit which is already connected has the effect of first closing the old file. .NH 3 CLOSE .IP .B close severs the connection between a unit and a file. The unit number must be given. The optional parameters are .B iostat= and .B err= with their usual meanings, and .B status= either .B keep or .B delete. Scratch files cannot be kept, otherwise .B keep is the default. .B delete means the file will be removed. A simple example is .DS close(3, err=17) .DE .NH 3 INQUIRE .IP The .B inquire statement gives information about a unit (``inquire by unit'') or a file (``inquire by file''). Simple examples are: .DS inquire(unit=3, namexx) inquire(file=\(fmjunk\(fm, number=n, exist=l) .DE .RS .HP file= a character variable specifies the file the .B inquire is about. Trailing blanks in the file name are ignored. .HP unit= an integer variable specifies the unit the .B inquire is about. Exactly one of .B file= or .B unit= must be used. .HP "iostat=, err=" are as before. .HP exist= a logical variable. The logical variable is set to .B ".true." if the file or unit exists and is set to .B ".false." otherwise. .HP opened= a logical variable. The logical variable is set to .B ".true." if the file is connected to a unit or if the unit is connected to a file, and it is set to .B ".false." otherwise. .HP number= an integer variable to which is assigned the number of the unit connected to the file, if any. .HP named= a logical variable to which is assigned .B ".true." if the file has a name, or .B ".false." otherwise. .HP name= a character variable to which is assigned the name of the file (inquire by file) or the name of the file connected to the unit (inquire by unit). The name will be the full name of the file. .HP access= a character variable to which will be assigned the value .B \(fmsequential\(fm if the connection is for sequential I/O, .B \(fmdirect\(fm if the connection is for direct I/O. The value becomes undefined if there is no connection. .HP sequential= a character variable to which is assigned the value .B \(fmyes\(fm if the file could be connected for sequential I/O, .B \(fmno\(fm if the file could not be connected for sequential I/O, and .B \(fmunknown\(fm if we can't tell. .HP direct= a character variable to which is assigned the value .B \(fmyes\(fm if the file could be connected for direct I/O, .B\(fmno\(fm if the file could not be connected for direct I/O, and .B \(fmunknown\(fm if we can't tell. .HP form= a character variable to which is assigned the value .B \(fmformatted\(fm if the file is connected for formatted I/O, or .B \(fmunformatted\(fm if the file is connected for unformatted I/O. .HP formatted= a character variable to which is assigned the value .B \(fmyes\(fm if the file could be connected for formatted I/O, .B \(fmno\(fm if the file could not be connected for formatted I/O, and .B \(fmunknown\(fm if we can't tell. .HP unformatted= a character variable to which is assigned the value .B \(fmyes\(fm if the file could be connected for unformatted I/O, .B \(fmno\(fm if the file could not be connected for unformatted I/O, and .B \(fmunknown\(fm if we can't tell. .HP recl= an integer variable to which is assigned the record length of the records in the file if the file is connected for direct access. .HP nextrec= an integer variable to which is assigned one more than the number of the the last record read from a file connected for direct access. .HP blank= a character variable to which is assigned the value .B \(fmnull\(fm if null blank control is in effect for the file connected for formatted I/O, .B \(fmzero\(fm if blanks are being converted to zeros and the file is connected for formatted I/O. .RE .PP .I "The gentle reader" will remember that the people who wrote the standard probably weren't thinking of his needs. Here is an example. The declarations are omitted. .DS open(1, file="/dev/console") .DE On a .UX system this statement opens the console for formatted sequential I/O. An .B inquire statement for either unit 1 or file "/dev/console" would reveal that the file exists, is connected to unit 1, has a name, namely "/dev/console", is opened for sequential I/O, could be connected for sequential I/O, could not be connected for direct I/O (can't seek), is connected for formatted I/O, could be connected for formatted I/O, could not be connected for unformatted I/O (can't seek), has neither a record length nor a next record number, and is ignoring blanks in numeric fields. .PP In the .UX system environment, the only way to discover what permissions you have for a file is to open it and try to read and write it. The .B err= parameter will return system error numbers. The .B inquire statement does not give a way of determining permissions. rmat Code .IP A codes are used for character values. \fBa\fIw\fR use a field width of $w$, while a plain .B a uses the length of the character item. .NH 2 Standard Units .IP There are default formatted input and output units. The statement .DS read 10, a, b .DE reads from the standard unit using format statement 10. The default unit may be explicitly specified by an asterisk,doc/2.10/ovpap 444 3 12 43333 3141165213 6250 .RP .TL Running Large Text Processes .if n .br on Small .UX Systems .AU Charles Haley .AI .MH .AU William Joy .AI Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley 94720 .AU William F. Jolitz .AI U.S. Geological Survey 345 Middlefield Road Menlo Park, California 94025 .AB .PP We describe a set of simple modifications to the .UX system, which permit larger programs to be run than has previously been possible. In particular, the .I f77 and .I a68 compilers and version 2 of the .I ex editor, which previously would not run on the non-separate I/D machines such as the 11/23, 11/34 and 11/40, may be run, without source code modification, using this scheme. This scheme will also allow processes larger than 65K bytes of instruction space to run on all 11/ cpu's with segmentation hardware. .PP The overlay scheme used has been designed so that it is transparent to the C programmer. Information about which routines are overlayed and in which overlay they reside is not needed until load time, and only the overlay loader .I ovld, need deal with this. The system mechanism for implementing overlays should function for languages other than C (such as .I a68) but the current .I ovld implementation deals specifically with creating load modules for C. Since .I f77 actually generates code via the second pass of the C compiler, it also can be used to generate code for overlaying. .AE .SH Introduction .PP The cheap and wide availability of small PDP-11's makes it desirable to have all of the programs available on the 11/70's and 11/45's of larger .UX installations available on the smaller machines such as 11/34's and 11/40's. To date, this has not been possible, because the smaller machines do not have the separate instruction and data scheme found on 11/45's and 11/70's which allows 16 bits of instruction space separate from the data space. .PP We have designed and implemented a scheme for running large processes on machines without this separate I/D feature. It may also be used to run processes larger than 65K bytes of instruction space on 11/45's and 11/70's. .SH Strategy .PP The basic strategy is quite simple. We resist the complexity of most overlay schemes, and opt for the following points: .IP 1) The overlaying should be (almost) completely invisible to the programmer. .IP 2) No restrictions should be made on the language features available to overlay programs. In particular, function pointers in C must continue to work, with all the same properties (uniqueness, etc.) .IP 3) The basic system interface should not impose the C runtime organization any more than the current system does; in particular, other languages such as .I a68 should be usable in an overlay fashion, perhaps using a different loader. .IP 4) The strategy should be simple to implement. .SH New executable file formats .PP We have added two new ``magic numbers'' for executable files: 0430 and 0431. The 0430 magic number corresponds to an overlayed version of 0410 (shared text) executable files, and the 0431 number corresponds to an overlayed version of separate I/D spaces files (which normally have magic number 0411). .PP The .I a.out file format for these files differs from the normal file format as follows: .IP \(** After the 8 word header and before the text of the program begins is placed an 8 word array of overlay information. The first word of information is the maximum size of any of the overlays, and the rest of the information gives the sizes of each of the (up to 7) overlays. .IP \(** The text space follows the newly added overlay information, which is then followed by the text of each overlay. The overlay text sizes are all multiple of ``core clicks'', i.e. rounded up to a multiple of 64 bytes in size. .LP The rest of the .I a.out file is in the normal format. .SH Segmentation register layout .PP When an 0430 or 0431 process is run, the overlay information and the text for all of the overlays are saved by the system. At any given point during program execution, only one of the (up to) 7 overlays will be mapped into the process address space, but the process can request, using a new system call, that an overlay of its choice be mapped into a portion of its address space shared by the overlays. This call actually implemented using the emulator trap instruction of the PDP11 to reduce the overlay switching overhead. .PP Thus, there are conceptually four possible usages for each segmentation register: .IP 1) It may be part of the text segment (as before). .IP 2) It may be one of the overlay text segment registers, mapping address space after the text segment (1) but before the data segment (3). .IP 3) It may be one of the data segment registers, or .IP 4) It may be one of the stack segment registers. .SH System management of 0430 and 0431 processes .PP There are three major aspects of system handling of the new form of processes: .IP 1) The .I exec and related system calls must know how to establish such processes, and how to detect that they will not fit. .IP 2) The .I estabur and .I sureg mechanisms must know how to set up the segmentation registers for such processes. This interface must be modifiable by a system call to permit the currently chosen overlay to be mapped. .IP 3) The scheduler and swapping mechanisms must understand these processes and allow for enough core space for them (they use more than they would appear to from the first 8 word header, e.g.). To simplify this, we have chosen, in this implementation, to swap the basic text and all overlay text for such processes as one piece. .PP The considerations here are relatively straightforward, and will not be discussed in more detail. .SH Link editor changes .PP We have added two new options to the link editor, and made modifications as necessary to make the overlay loading as transparent as possible. This modified link editor is called .I ovld and is identical to the normal loader with the addition of the following two options: .IP \fB\-Z\fR marks the beginning of an overlay. The routines in the files to the next .B \-Z or .B \-L option are placed in the next overlay (numerically). .IP \fB\-L\fR marks the end of all overlays. The rest of the routines go into the base segment.\(dg .FS \(dg \fBL\fR was chosen because it was unused and can be thought of as ``library''. The \fBZ\fR option has no mnemonic value. .FE .PP Here is a sample loader command to .I ovld which loads the .I ex editor into a base segment and four overlays:\(dd .FS \(dd The \fB\-lovc\fR library differs from \fB\-lc\fR in that it is compiled with .I ovcc instead of .I cc. The difference between the source for .I ovcc and .I cc: is that .I ovcc uses a one word larger stack mark (it stacks overlay numbers of return addresses in the extra word). Unfortunately, this requires that the library routines also allocate and preserve this extra word if they are to live in overlays or call overlaid routines which may cause overlay switching. Thus, for generality, we have them always save and restore this number. .FE .DS ovld \-X /lib/crt0.o \-n\e \-Z ex\_addr.o ex\_cmds.o ex\_cmds2.o ex\_cmdsub.o ex\_re.o ex\_set.o ex.o\e \-Z ex\_vadj.o ex\_vmain.o ex\_voperate.o ex\_vwind.o ex\_vops3.o\e \-Z ex\_v.o ex\_vget.o ex\_vops.o ex\_vops2.o ex\_vput.o\e \-Z ex\_get.o ex\_io.o ex\_temp.o ex\_tty.o\e \-L ex\_put.o ex\_subr.o printf.o strings.o doprnt.o\e ex\_data.o termlib/termlib.a \-lovc .DE and a (modified version of the) .I size command run on the resulting .I a.out file yields: .nf 15104+(15808,14784,13696,9152)+2946+7294 = 25344b = 061400b (68544 total text) .fi .PP We have designed this overlay to use two segmentation registers (each register maps 8192 bytes) for the root segment, and two registers for each overlay. This leaves four segmentation registers, which could map 24K bytes of data and bss and dynamic space, and one register which could map 8K bytes of stack. .PP As normally loaded for an 11/70, this version of the editor uses 64000 bytes of text space. The additional 5K bytes is taken up by interface code to handle the overlays, which we will describe shortly. .PP One other point to be noted is that the namelist (symbol table) format for the .I a.out file has been changed slightly for the overlay loaded .I a.out's. Previously, there was an unused byte in the format (basically, the high byte of the ``type'' field of the namelist), and this field is now used to contain the segment number where overlay routines reside. Consider the following files: .DS ---x0.c--- main() { foo(); foobar(); } base() { } .DE .DS ---x1.c--- foo() { base(); ov2(); } ov1() { } .DE .DS ---x2.c--- foobar() { base(); ov1(); } ov2() { } .DE An appropriately modified .I nm command on a file loaded via: .DS ovld -X -n /lib/crt0.o x0.o -Z x1.o -Z x2.o -L ovcsv.o -lovc .DE produces the following output: .br .ne 5 .ID 000000 f crt0.o 000000 a indir 000000 T start 000001 a exit 000001 a exit 000074 T _main 000074 f x0.o 000074 t ~main 000120 T _base 000120 t ~base 000134 T _exit 000134 f cuexit.o 000152 T __cleanu 000152 f fakcu.o 000154 T ovcsv 000154 f ovcsv.o 000172 T csv 000210 T cret 000210 T ovcret 000256 T _etext 000256 T _foo 1 000276 T _foobar 2 000316 T _ov2 2 000336 T _ov1 1 020000 f x1.o 020000 f x2.o 020000 t ~foo 020000 t ~foobar 020024 t ~ov1 020024 t ~ov2 040002 D __ovno 040004 B _environ 104000 a emt .DE Note that the addresses for .I \_foo and .I \_foobar appear in the base segment. In fact, the true routines appear in the overlaid segment (at .I ~foo and .I ~foobar) but the base segment contains an interface routine, which both insures that they are mapped into the address space before transferring to them and also allows function pointers to exist and work as normal. .SH Thunks .PP To interface each routine which is in an overlay to the outside world, we add some interface which we (somewhat abusing the terminology) call a ``thunk''. This code has the following form: .DS \_foo: mov $foo's\_ovno,r0 cmp r0,*$\_\_ovno beq 1f emt 0 1: jmp *$~foo .DE Thus there is 16 bytes of interface code for each overlaid routine. .PP This code forces register 0 to be the number of the subroutine's overlay, which is then checked against the currently loaded overlays number (found in .I \_\_ovno ). If they are not the same, the system is called (via an emulator trap) to make them so. Notice that .I \_\_ovno is still set to the previous overlay number so that it may be preserved on the stack for our ultimate return. .PP The C save and restore sequences for use with overlayed text register programs are coded as follows: .br .DS / C register save and restore -- version 7/75 / modified by wnj && cbh 6/79 for overlayed text registers / modified by wf jolitz 2/80 to work and use emt syscall / we define ovcsv and ovcret which overlay routines call / even though ovcret is (currently) the same as cret / the loader finagles the .o files so this happens .li .globl csv .li .globl cret .li .globl ovcsv, ovcret .li .globl \_\_ovno .li .globl \_etext .li .data \_\_ovno: 0 .li .text emt= 0104000 / overlays switched by emulator trap. ovno in r0. / csv for routines in overlays / the previous overlay is in \_\_ovno, which is saved on the stack. / after it is saved, \_\_ovno is set to the current overlay number / which has been put in r0 by the thunk. / ovcsv: mov r5,r1 mov sp,r5 .DE .DS mov \_\_ovno,-(sp) mov r0,\_\_ovno jbr 1f / / only root segment routines call csv, and when it is called / no overlays have been changed, so we just save the previous overlay / number on the stack. note that r0 is'nt set to the current overlay / because we were'nt called through a thunk. / csv: mov r5,r1 mov sp,r5 mov \_\_ovno,-(sp) / overlay is extra (first) word in mark / rest is old code common with ovcsv / 1: mov r4,-(sp) mov r3,-(sp) mov r2,-(sp) jsr pc,(r1) / jsr part is sub $2,sp / / at this point, the stack frame looks like this: / .ta 2.5i / __________________ / | return addr | / |_________________ | / r5-> | old r5 | / |_________________ | / | previous ovnumber | / |_________________ | / | old r4 | / |_________________ | / | old r3 | / |_________________ | / sp-> | old r2 | / |_________________ | / ovcret: / same as cret, i think cret: mov r5,r2 / get the overlay out of the mark, and if it is non-zero / make sure it is the currently loaded one mov -(r2),r4 bne 1f / zero is easy 2: mov -(r2),r4 mov -(r2),r3 mov -(r2),r2 mov r5,sp mov (sp)+,r5 rts pc / not returning to root segment, so check that the right / overlay is loaded, and if not ask UNIX for help 1: cmp r4,\_\_ovno beq 2b / lucked out! / if return address is in root segment, then nothing to do cmp 2(r5),$\_etext blt 2b / returning to wrong overlay --- do something! mov r0,r3 mov r4,r0 emt mov r4,\_\_ovno mov r3,r0 / intr. routines may run between these, so should force segment \_\_ovno br 2b .DE .PP One subtle point here is that routines which are in overlays are made to call the routines .I ovcsv and .I ovcret rather than .I csv and .I cret. This allows for slightly faster saving of the previous overlay value in this case. .SH System Implementation .PP We have modified a Version 7 .UX System to support 0430 and 0431 executable files. This version keeps the overlays with the text segement, and uses an emulator trap to switch overlays. Here is a description of some of the changes required: .IP 1. \fIgetxfile\fR, in \fIsys1.c\fR, was modified to recognize 0430 and 0431 as legal magic numbers. When either of them are encountered, the second 8 word header (containing the sizes of the overlays) is read. The base or start of the overlayed area of core, and the base of the data space is set into the per-process data area. Each overlays size is checked against the maximum size. A table of offsets is computed for the starting location of each of the overlays. The overlayed text is skipped over to allow the data segement to be loaded correctly. .IP 2. \fIsbreak\fR, in \fIsys1.c\fR, was modified to notice that the amount of text space in a overlayed process includes the area set aside for (but not necessarly present) an overlay. .IP 3. \fIxalloc\fR, in \fItext.c\fR, was changed to allow the loading of each of the overlays from the executable file. Each overlay is loaded into the user's text space after it has been mapped in by an .I estabur call. .IP 4. \fItrap\fR, in \fItrap.c\fR, was changed to allow the use of an emulator trap as a system call to switch the overlays of a type 0430 or 0431 p process. This `call' only works if used by an overlay process, it defaults to the normal trap sequence if the call is invalid. If valid, the current overlay number is updated, and .I estabur is called to remap the user text space. .IP 5. \fIestabur\fR, in \fIureg.c\fR, contains the changes that are the heart of the text overlays. First, the executable size parameters are checked to see that they are within the limits of the PDP-11 segmentation hardware. The size of the text segment is then coerced to include the overlays prepended to the end of the text segment. Next, the segmentation registers are created, with space in the addressing space being reserved even if an overlay is not active. If an overlay is active, these registers are set to point at its location in core. .I estabur then is used to map in the i'th overlay, and must be called every place in the system when the given overlay must be accessed. .IP 6. The per-process data structure in \fIuser.h\fR has been changed to include the offset table and base locations used by the overlays. They are appended to the data structure to minimize system software conversion problems. .IP 7. The defined constant MAXMEM must be changed to reflect the new memory limit per-process. Since this reflects the use of swap area as well, busy systems might be advised to increase the size of the swap area as well. .RE .PP Some areas of the system have yet to be changed to support overlays. In order to \fIptrace\fR(UA2) them, the current overlay number has to become writeable in this call. Profiling should also be changed to support overlayed processes. .SH Future improvements .PP If interactive debugging of 0430 and 0431 files is to occur, then .I adb must be changed to deal with the new format of the .I a.out files. We have not yet made the needed changes. .PP The mechanism here substantially improves the capability of a large class of small 11's. For machines with small amounts of real memory, it would be nice if the text images of these 0430 and 0431 files would not have to be completely resident to run. Thus the individual overlays could be swapped rather than being made part of the larger text segment. This appears substantially more difficult to implement than the present mechanism, for two reasons: .IP 1) It is a major change to the text mechanism, basically allowing more than one text per process, and making the amount of core required by a process much more dynamic. Care must be taken in changing the text mechanism of the system to allow this. .IP 2) Substantially more changes are needed to the scheduling algorithm in the system to assign appropriate priorities to a new class of objects: overlay text portions which are not currently ``active''. It seems pointless to implement this scheme if they are simply abandoned as soon as they become free. We suggest that they be given ``abandon'' priority which keeps them just longer than slow terminal i/o waits. ld map 24K bytes of data and bss and dynamic space, and one register which could map 8K bytes of stack. .PP As normally loaded for an 11/70, this version of the editor uses 64000 bytes of text space. The additional 5K bytes is taken up by interface code to handle the overlays, which we will doc/2.10/rogue 444 3 12 36101 3141165372 6245 .RP .ds RH A Guide to the Dungeons of Doom .ds CH .ds CF - % - .TL A Guide to the Dungeons of Doom .AU Michael C. Toy .AI Computer Systems Research Group Department of Electrical Engineering and Computer Science University of California Berkeley, California 94720 .AB Rogue is a visual CRT based fantasy game which runs under the UNIX timesharing system. This paper describes how to play rogue and gives a few hints for those who might otherwise get lost in the Dungeons of Doom. .AE .NH Introduction .PP You have just finished your years as a student at the local fighter's guild. After much practice and sweat you have finally completed your training and are ready to embark upon a perilous adventure. As a test of your skills, the local guildmasters have sent you into the Dungeons of Doom. Your task is to return with the Amulet of Yendor. Your reward for the completion of this task will be a full membership in the local guild. In addition, you are allowed to keep all the loot you bring back from the dungeons. .PP In preparation for your journey, you are given an enchanted sword, taken from a dragon's hoard in the far off Dark Mountains. You are also outfitted with elf-crafted armor and given enough food to reach the dungeons. You say goodbye to family and friends for what may be the last time and head up the road. .PP You set out on your way to the dungeons and after several days of uneventful travel, you see the ancient ruins that mark the entrance to the Dungeons of Doom. It is late at night so you make camp at the entrance and spend the night sleeping under the open skies. In the morning you gather your sword, put on your armor, eat what is almost your last food and enter the dungeons. .NH What is going on here? .PP You have just begun a game of rogue. Your goal is to grab as much treasure as you can, find the Amulet of Yendor, and get out of the Dungeons of Doom alive. On the screen, a map of where you have been and what you have seen on the current dungeon level is kept. As you explore more of the level, it appears on the screen in front of you. .PP Rogue differs from most computer fantasy games in that it is screen oriented. Commands are all one or two keystrokes\(dg .FS \(dgAs opposed to pseudo English sentences. .FE and the results of your commands are displayed graphically on the screen rather than being explained in words. .PP Another major difference between rogue and other computer fantasy games is that once you have solved all the puzzles in a standard fantasy game, it has lost most of its excitement and it ceases to be fun. Rogue on the other hand generates a new dungeon every time you play it and even the author finds it an entertaining and exciting game. .NH What do all those things on the screen mean? .PP In order to understand what is going on in rogue you have to first get some grasp of what rogue is doing with the screen. The rogue screen is intended to replace the "You can see ..." descriptions of standard fantasy games. Here is a sample of what a rogue screen might look like. .in +1i .nf .cs R 15 --------------------- |...................+ |...@...........[...| |........B..........| |...................| --------+------------ .cs R Level: 1 Gold: 0 Hp: 12(12) Str: 16 Ac: 6 Exp: 1/0 .fi .in 0 .NH 2 The bottom line .PP At the bottom line of the screen is a few pieces of cryptic information, describing your current status. Here is an explanation of what these things mean: .IP Level 8 This number indicates how deep you have gone in the dungeon. It starts at one and goes up forever\(dg. .FS \(dgOr until you get killed or decide to quit. .FE .IP Gold The number of gold pieces you have managed to find and keep with you so far. .IP Hp Your current and maximum hit points. Hit points indicate how much damage you can take before you die. The more you get hit in a fight, the lower they get. You can regain hit points by resting. The number in parentheses is the maximum number your hit points can reach. .IP Str Your current strength. This can be any integer less than or equal to eighteen. The higher the number, the stronger you are. .IP Ac Your current armor class. This number indicates how effective your armor is in stopping blows from unfriendly creatures. The lower this number is, the more effective the armor. .IP Exp These two numbers give your current experience level and experience points. As you do things, you gain experience points. At certain experience point totals, you gain an experience level. The more experienced you are, the better you are able to fight and to withstand magical attacks. .NH 2 The top line .PP The top line of the screen is reserved for printing messages that describe things that are impossible to represent visually. If you see a "--More--" on the top line, this means that rogue wants to print another message on the screen, but it wants to make certain that you have read the one that is there first. To read the next message, just press a space. .NH 2 The rest of the screen .PP The rest of the screen is the map of the level as you have explored it so far. Each symbol on the screen represents something. Here is a list of what the various symbols mean: .IP @ This symbol represents you, the adventurer. .IP "-|" 6 These symbols represent the walls of rooms. .IP + A door to/from a room. .IP . The floor of a room. .IP # The floor of a passage between rooms. .IP * A pile or pot of gold. .IP ) A weapon of some sort. .IP ] A piece of armor. .IP ! A flask containing a magic potion. .IP ? A piece of paper, usually a magic scroll. .IP ^ A trap, watch out for these. .IP % The passage leading down to the next level. .IP : A piece of food. .IP A-Z The uppercase letters represent the various inhabitants of the Dungeons of Doom. Watch out, they can be mean. .NH Commands .PP Commands are given to rogue by pressing single letters. Most commands can be preceded by a count to repeat them (e.g. typing "10s" will do ten searches) The list of commands is rather long, but it can be read at any time during the game with the ? command. Here it is for reference, with a short explanation of each command. .IP ? 6 The help command. Asks for a character to give help on. If you type a "*", it will list all the commands, otherwise it will explain what the character you typed does. .IP / This is the "What is that on the screen?" command. A "/" followed by any character that you see on the level, will tell you what that character is. For instance, typing "/@" will tell you that the @ symbol represents you, the player. .IP "h , H" Move left. You move one space to the left. If you use upper case h, you will continue to move left until you run into something. This works for all movement commands (e.g. "L" means run in direction "l") .IP j Move down. .IP k Move up. .IP l Move right. .IP y Move diagonally up and left. .IP u Move diagonally up and right. .IP b Move diagonally down and left. .IP n Move diagonally down and right. .IP f Find prefix. When followed by a direction it means to continue moving in the specified direction until you pass something interesting or run into a wall. .IP t Throw an object. This is a prefix command. Follow it with a direction and you throw an object in the specified direction. (e.g. type "th" to throw something left.) .IP > If you are standing over the passage down to the next level, this command means to climb down. .IP s Search for traps and secret doors. Examine each space immediately adjacent to you for the existence of a trap or secret door. There is a large chance that even if there is something there, you won't find it so you might have to search a while before you find something. .IP " " (space) Rest. This is the "do nothing" command. This is good for waiting and healing. .IP i Inventory. List what you are carrying in your pack. .IP I Selective inventory. Tells you what a single item in your pack is. .IP q Quaff. Drink one of the potions you are carrying. .IP r Read. Read one of the scrolls in your pack. .IP e Eat food. Take some food out of your pack and eat it. .IP w Wield a weapon. Take a weapon out of your pack and carry it. You must be wielding weapon to use it (except to throw things). To fire an arrow, you must wield the bow. You can only wield one weapon at a time. .IP W Wear armor. Take a piece of armor out of your pack and put it on. You can only wear one suit of armor at a time. .IP T Take armor off. You can't remove armor that is cursed. This takes extra time. .IP d Drop an object. Take something out of your pack and leave it lying on the floor. Only one object can occupy each space. .IP o Examine and set options. This command is further explained in the section on options. .IP ^L REdraws the screen. Useful if spurious messages or transmission errors have messed up the display. .IP v Prints the program version number. .IP Q Quit. Leave the game. .IP R Repeat last message. Useful when a message disappears before you can read it. .IP S Save the current game in a file. Caveat: Rogue won't let you start up a copy of a saved game, and it removes the save file as soon as you start up a restored game. This is to prevent people from saving a game just before a dangerous position and then restarting it if they die. To restore a saved game, give the file name as an argument to rogue. As in .ti +1i .nf % rogue save_file .NH Dealing with objects .PP When you find something in the dungeon, it is common to want to pick the object up. This is accomplished in rogue by walking over the object. If you are carrying too many things, the program will tell you and it won't pick up the object, otherwise it will add it to your pack and if the notify option is set, tell you what you just picked up. .PP Many of the commands that operate on objects must prompt you to find out which object you want to use. If you change your mind and don't want to do that command after all, just press an escape and the command will be aborted. .NH Light .PP Rooms in the dungeons are either lit or dark. If you walk into a lit room, the entire room will be drawn on the screen as soon as you enter. If you walk into a dark room, it will only be displayed as you explore it. Upon leaving a dark room, all objects inside the room which might move are removed from the screen. In the darkness you can only see one space in all directions around you. .NH Fighting .PP If you see a monster and you wish to fight it, just attempt to run into it. Many times a monster you find will mind its own business unless you attack it. It is often the case that discretion is the better part of valor. .NH Armor .PP There are various sorts of armor lying around in the dungeon. Some of it is enchanted, some is cursed and some is just normal. Different armor types have different armor classes. The lower the armor class, the more protection the armor affords against the blows of monsters. If a piece of armor is enchanted or cursed, its armor class will be higher or lower than normal. Here is a list of the various armor types and their normal armor class. .TS center box; c c l | c. Type Class = Leather armor 8 Studded leather / Ring mail 7 Scale mail 6 Chain mail 5 Banded mail / Splint mail 4 Plate mail 3 .TE .NH Options .PP Due to variations in personal tastes and conceptions of the way rogue should do things, there are a set of options you can set that cause rogue to behave in various different ways. .NH 2 Setting the options .PP There are basically two ways to set the options. The first is with the "o" command of rogue, the second is with the ROGUEOPTS environment variable. On Version 6 systems, there is no equivalent of the ROGUEOPTS feature. .NH 3 Using the "o" command .PP When you press "o" in rogue, it clears the screen and displays the current settings for all the options. It then places the cursor by the value of the first option and waits for you to type. You can type a RETURN which means to go to the next option, a "\-" which means to go to the previous option, an escape which means to return to the game, or you can give the option a value. For boolean options this merely involves pressing "t" for true or "f" for false. For string options, type the new value followed by a return. .NH 3 Using the ROGUEOPTS variable .PP The ROGUEOPTS variable is a string containing a comma separated list of initial values for the various options. Boolean variables can be turned on by listing their name and turned off by putting a "no" in front of the name. Thus to set up an environment variable so that jump is on, terse is off, the name is set to "Conan the Barbarian" and the fruit is "mango", use the command .nf .nf .ti +3 % setenv ROGUEOPTS "jump,noterse,name=Conan the Barbarian,fruit=mango" \(dg .fi .ti +3 % setenv ROGUEOPTS "jump,noterse,name=Conan the Barbarian,fruit=mango" \(dg .fi .FS \(dgFor those of you who use the bourne shell, the commands would be .in +3 .nf $ ROGUEOPTS="jump,noterse,name=Conan the Barbarian,fruit=mango" $ export ROGUEOPTS .fi .in +0 .FE .NH 2 Option list .PP Here is a list of the options and an explanation of what each one is for. The default value for each is enclosed in square brackets. .IP "terse [noterse]" 25 Useful for those who are tired of the sometimes lengthy messages of rogue. This is a useful option for those on slow terminals. This option defaults to on if your are on a slow (under 1200 baud) terminal. .IP "jump [nojump]" If this option is set, running moves will not be displayed until you reach the end of the move. This saves considerable cpu time and display time. This option defaults to on if you are using a slow terminal. .IP "step [nostep] When step is set, lists of things, like inventories or "*" responses to "Which item do you wish to xxxx? " questions, are displayed one item at a time on the top of the screen, rather than clearing the screen, displaying the list, then re-displaying the dungeon level. .IP "flush [noflush]" If flush is set, all typeahead is thrown away after each round of battle. This is useful for those who type way ahead and watch to their dismay as a Kobold kills them. .IP "askme [noaskme]" Upon reading a scroll or quaffing a potion which does not automatically identify it upon use, rogue will ask you what to name it so you can recognize it in the future. .IP "name [account name]" This is the name of your character. It is used if you get on the top ten scorer's list. It should be less than eighty characters long. .IP "fruit [slime-mold]" This should hold the name of a fruit that you enjoy eating. It is basically a whimsy that the program uses in a couple of places. .IP "file [rogue.save]" The default file name for saving the game. If your phone is hung up by accident, rogue will automatically save the game in this file. The file name may contain the special character "~" which expands to be your home directory. .NH Acknowledgements .PP Rogue was originally conceived of by Glenn Wichman and Michael Toy. The help of Ken Arnold in making the program easier to use and putting the finishing touches on is greatly appreciated. I would also like to thank Marty McNary, Scott Nelson, Daniel Jensen, Kipp Hickman, Joe Kalash, Steve Maurer, Bill Joy, Mark Horton and Jan Miller for their ideas and assistance. ble files. This version keeps the overlays with the text segement, and uses an emulator trap to switch overlays. Here is a description of some of the changes required: .IP 1. \fIgetxfile\fR, in \fIsys1.c\fR, was modified to recognize 0430 and 0431 as legal magic numbers. When either of them are encountered, the second 8 word header (containing the sizes of the overlays) is read. The base or start of the overlayed area of core, and the base of doc/2.10/ovtutorial 444 3 12 21414 3141165214 7330 .if \nv .rm CM .TL How to use the UNIX\(dg Automatic Text Overlays: A Tutorial .AU Barbara Bekins .AI U.S. Geological Survey Menlo Park, California .AU Bill Jolitz .AI Symmetric Computer Systems Los Gatos, California .AB .PP The automatic text overlay feature allows a program to run with up to 400 Kbytes of text. The feature is said to be automatic because it generally requires no special program rewriting or intervention. It attempts to be wholly invisible to the program. The feature is also orders of magnitude faster than standard replacement text overlays, because changing overlay segments only requires that the 8 segmentation registers be remapped. An overlay switch takes as little as 50-250 \(*msec. To use the feature each module of the program must be compiled to allow an extra word in the call frame so each subroutine call can record the overlay segment from which it was called. .AE .ds LH UNIX Text Overlays Tutorial .ds RH Revision 1.0 .ds LF DRAFT .ds RF 10/20/81 .FS \u\(dg\d \s-2UNIX\s0 is a trademark of Bell Laboratories. .FE .PP .SH Introduction .PP This feature was originally devised by C. Haley and W. Joy to allow very large programs that were developed on machines like the VAX\(dd 11/780 to function on .FS \u\(dd\d \s-2PDP\s0 and \s-2VAX\s0 are trademarks of Digital Equipment Corporation. .FE the relatively tiny (65536 byte) addressing space of the PDP-11. It does this by timesharing a part of the process's text area in invisible manner; the process appears to be running in an eightfold larger addressing space. It can only be used to extend the program or text bounds of a given process; it cannot increase the the variable or data bounds of a process. .SH Requirements to Use .PP This overlaying technique has a few rules that apply to its use. They relate to the mechanism of the current PDP-11 implementation. First, all object modules must be compiled with a special option to the particular compiler. For \fIas\fP\|(1), C, and F77 source respectively, the commands are: .IP \fBas -V\fP prog.s .br \fBcc -V\fP prog.c .br \fBf77 -V\fP prog.f .br (note that Ratfor and Efl modules are treated similarly) .sp .pp Second, assembly code modules must be treated with care. Only those which obey the \fIcsv\fP/\fIcret\fP call doctrine, or those which confine their activities to a given overlay, can be allowed in an overlay. All others must be confined to the base segment by being mentioned before the first .B \-Z or after the .B \-L in an .B ld(1) command. For 90 % of all uses, this merely means that the .B \-lovc flag must appear after the .B \-L . .PP .SH Planning .PP The next step in overlaying a given program is to plan the layout of modules within the final overlaid process. This is the careful part of the job, where it pays to be size conscious. After the target program is working the first time one will probably understand better how to craft the layout; this is an iterative process. As a first pass one is only concerned with the sizes of the given modules and fitting them into overlays. When arranging modules into overlays, the following formula validates a legal load. The magic numbers are due to the granularity of PDP-11 segmentation registers: .sp in the case of separate auto-overlays: .ce .EQ left ceiling "size of base segment" over "8192" right ceiling ~+~left ceiling "size of largest overlay segment" over "8192" right ceiling ~<=~8 .EN .sp in the case of pure auto overlays: .ce .EQ left ceiling "size of base segment" over "8192" right ceiling ~+~left ceiling "size of largest overlay segment" over "8192" right ceiling ~+~left ceiling "size of data + bss" over "8192" right ceiling ~<=~7 .EN .sp Where the \(lc \| \(rc indicates the least integer function (round any non-integer up to the next integer). .PP It can be noticed from the above that modules larger than 8 or 16,000 bytes can be difficult to load; so the preference is to break up large modules into smaller ones (decomposing files into separate subroutines) when the large ones fail to fit into overlays by themselves. The above rules therefore put bounds on the largest subroutine or module usable with this technique: .sp for separate auto-overlays: .nf 8(segmentation registers) - 1(at least one for the base segment) = 7(number of available segmentation registers for a given overlay) 7* 8192(bytes per segmentation register) = 56Kbytes .fi .sp for pure auto-overlays: .nf 7(from above) - 1(at least one seg. register for data) - 1(at least one stack seg. register) = 5 (number of available seg. registers for a given overlay) 5* 8192 = 40Kbytes. .fi .PP In practice these bounds will be smaller. .PP A useful strategy is to examine the text sizes of each of the modules, ranking them in order of size. The largest of these may determine the maximum size of all overlays. If the modules are all 8192 bytes or less, the packing may be easy to achieve. Note that pure auto-overlays must also take into account the size of the data, stack, and bss areas. .PP Only in the extreme cases will the initial packing be a difficult problem. More frequently the case will be grouping modules into 30,000 byte overlays. There are a maximum of eight segments; one base segment and 7 overlays. The base segment is never mapped out. This segment is the place to put frequently called subroutines and library routines, space permitting. The reason for this is that there are 8 address registers used for mapping each segment of the text. Since the base segment is always present, it must be allocated some of the registers leaving the rest to map a given overlay. Each register maps 8 Kbytes, so the size of the overlay is divided by 8 Kbytes and the answer is rounded up to figure the number of registers each segment requires to be addressed. .PP After arriving at a successful (no undefined externals) load, the size of the resulting executable module should be checked (see \fIcheckobj\fP\|(1) and \fIsize\fP\|(1)). The above formulas should be used to examine the resulting executable files and \fInm\fP\|(1) can be used in desperate situations to discern the deployment of space within an overlay. .SH Example .PP For example, a program with 100 Kbytes of text of which 20 Kbytes was used in the base segment could have no other segment greater than 40 Kbytes because .EQ left ceiling "20k" over "8k" right ceiling~=~3 .EN Thus the base segment needs 3 segmentation registers, leaving 5 for the overlay segments. Once the configuration is decided upon, the program is loaded using: .IP .nf \fBld\fP \fB\-X\fP -[in] /lib/crt0.o [ .o files to go in base segment] \\ \fB\-Z\fP [ .o files to go in first overlay segment] \\ \fB\-Z\fP [ .o files to go in second overlay segment] \\ ... \fB\-Z\fP [.o files to go in seventh overlay segment] \\ \fB\-L\fP [libraries to go in base segment] .fi .PP Note that overlaid versions of all standard libraries must be requested. These were made by compiling the library routines with the proper options. In general, the overlaid version of a library named libx.a will be called libovx.a. All the usual loader flags work also. .SH Debugging .PP For debugging, \fIadb\fP will work on overlaid programs to give stack backtraces and show the value of variables. See \fIadb\fP\|(1) for details. .SH Performance tricks .PP After you have a working program you can tailor the \fBld\fP command to fit the program much better. You might even take advantage of some programming tricks to either reduce the program's size or speed up its operation. .PP The simplest trick to increasing program speed is to group modules which intensively call each other, placing them in the same overlay. Also, modules which are called frequently by all overlays should be placed in the base segment if there is space. These tricks will reduce overlay switch calls, which are about 5 times slower than normal procedure calls. (note: it's surprising that this is as fast as it is: the overlaid f77 as it exists must do at least two switches per object or token that it accepts, yet in toto it runs at half the speed of the nonoverlaid f77). .PP Finally, if you have a pure overlaid program you can reduce the amount of space used by data by targeting data structures that are read-only and locally used in an overlay. These can be turned into text and merged into the overlay itself by editing the raw assembly code. Although the targeting must usually be done by hand, the assembly language editing can be automated as a part of the makefile. This usually is a very successful technique when it can be used, since you have more overlay space than data space in pure overlays. .SH Bugs .PP Some things definitely do not work. Profiling has yet to be taught about overlays. Only strictly defined overlaid UNIX kernels can be built. Some C library subroutines must be loaded in the base segment. These include the startup routines, csv.o, setjmp.o, signal.o, and fpsim.o. el Toy. The help of Ken Arnold in making the program easier to use and putting the finishing touches on is greatly appreciated. I would also like to thank Marty McNary, Scott Nelson, Daniel Jensen, Kipp Hickman, Joe Kalash, Steve Maurer, Billdoc/2.10/setup.V7 444 3 12 57504 3141165344 6570 .TL Setting Up Unix \- Seventh Edition .AU Charles B. Haley Dennis M. Ritchie .AI .MH .PP The distribution tape can be used only on a DEC PDP11/45 or PDP11/70 with RP03, RP04, RP05, RP06 disks and with a TU10, TU16, or TE16 tape drive. It consists of some preliminary bootstrapping programs followed by two file system images; if needed, after the initial construction of the file systems individual files can be extracted. (See restor(1)) .PP If you are set up to do it, it might be a good idea immediately to make a copy of the tape to guard against disaster. The tape is 9-track 800 BPI and contains some 512-byte records followed by many 10240-byte records. There are interspersed tapemarks. .PP The system as distributed contains binary images of the system and all the user level programs, along with source and manual sections for them\(emabout 2100 files altogether. The binary images, along with other things needed to flesh out the file system enough so UNIX will run, are to be put on one file system called the `root file system'. The file system size required is about 5000 blocks. The file second system has all of the source and documentation. Altogether it amounts to more than 18,000 512-byte blocks. .SH Making a Disk From Tape .PP Perform the following bootstrap procedure to obtain a disk with a root file system on it. .IP 1. Mount the magtape on drive 0 at load point. .IP 2. Mount a formatted disk pack on drive 0. .IP 3. Key in and execute at 100000 .RT .DS TU10 TU16/TE16 012700 Use the DEC ROM or other 172526 means to load block 1 010040 (i.e. second block) at 800 BPI 012740 into location 0 and transfer 060003 to 0. 000777 .DE .IP The tape should move and the CPU loop. (The TU10 code is .I not .R the DEC bulk ROM for tape; it reads block 0, not block 1.) .IP 4. If you used the above TU10 code, halt and restart the CPU at 0, otherwise continue to the next step. .IP 5. The console should type .DS .I Boot : .R .DE Copy the magtape to disk by the following procedure. The machine's printouts are shown in italic, explanatory comments are within ( ). Terminate each line you type by carriage return or line-feed. There are two classes of tape drives: the name `tm' is used for the TU10, and `ht' is used for the TU16 or TE16. There are also two classes of disks: `rp' is used for the RP03, and `hp' is used for the RP04/5/6. .PP If you should make a mistake while typing, the character '#' erases the last character typed up to the beginning of the line, and the character '@' erases the entire line typed. Some consoles cannot print lower case letters, adjust the instructions accordingly. .DS (bring in the program mkfs) \fI:\|\fRtm(0,3) (use `ht(0,3)' for the TU16/TE16) \fIfile system size:\fR 5000 \fIfile system:\fR rp(0,0) (use `hp(0,0)' for RP04/5/6) .I isize = XX m/n = XX .R (after a while) .I exit called Boot : .R .DE This step makes an empty file system. .IP 6. The next thing to do is to restore the data onto the new empty file system. To do this you respond to the `\fI:\fR' printed in the last step with .DS (bring in the program restor) \fI:\|\fRtm(0,4) (`ht(0,4)' for TU16/TE16) \fItape?\fR tm(0,5) (use `ht(0,5)' for TU16/TE16) \fIdisk?\fR rp(0,0) (use `hp(0,0)' for RP04/5/6) \fILast chance before scribbling on disk.\fR (you type return) (the tape moves, perhaps 5-10 minutes pass) \fIend of tape\fR .I Boot : .R .DE You now have a UNIX root file system. .SH Booting UNIX .PP You probably have the bootstrap running, left over from the last step above; if not, repeat the boot process (step 3) again. Then use one of the following: .DS \fI:\|\fRrp(0,0)rptmunix (for RP03 and TU10) \fI:\|\fRrp(0,0)rphtunix (for RP03 and TU16/TE16) \fI:\|\fRhp(0,0)hptmunix (for RP04/5/6 and TU10) \fI:\|\fRhp(0,0)hphtunix (for RP04/5/6 and TU16/TE16) .DE The machine should type the following: .DS .I mem = xxx # .R .DE The .I mem .R message gives the memory available to user programs in bytes. .PP UNIX is now running, and the `UNIX Programmer's manual' applies; references below of the form X(Y) mean the subsection named X in section Y of the manual. The `#' is the prompt from the Shell, and indicates you are the super-user. The user name of the super-user is `root' if you should find yourself in multi-user mode and need to log in; the password is also `root'. .PP To simplify your life later, rename the appropriate version of the system as specified above plain `unix.' For example, use mv (1) as follows if you have an RP04/5/6 and a TU16 tape: .DS mv hphtunix unix .DE In the future, when you reboot, you can type just .DS hp(0,0)unix .DE to the `:' prompt. (Choose appropriately among `hp', `rp', `ht', `tm' according to your configuration). .PP You now need to make some special file entries in the dev directory. These specify what sort of disk you are running on, what sort of tape drive you have, and where the file systems are. For simplicity, this recipe creates fixed device names. These names will be used below, and some of them are built into various programs, so they are most convenient. However, the names do not always represent the actual major and minor device in the manner suggested in section 4 of the Programmer's Manual. For example, `rp3' will be used for the name of the file system on which the user file system is put, even though it might be on an RP06 and is not logical device 3. Also, this sequence will put the user file system on the same disk drive as the root, which is not the best place if you have more than one drive. Thus the prescription below should be taken only as one example of where to put things. See also the section on `Disk layout' below. .PP In any event, change to the dev directory (cd(1)) and, if you like, examine and perhaps change the makefile there (make (1)). .DS cd /dev cat makefile .DE Then, use one of .DS make rp03 make rp04 make rp05 make rp06 .DE depending on which disk you have. Then, use one of .DS make tm make ht .DE depending on which tape you have. The file `rp0' refers to the root file system; `swap' to the swap-space file system; `rp3' to the user file system. The devices `rrp0' and `rrp3' are the `raw' versions of the disks. Also, `mt0' is tape drive 0, at 800 BPI; `rmt0' is the raw tape, on which large records can be read and written; `nrmt0' is raw tape with the quirk that it does not rewind on close, which is a subterfuge that permits multifile tapes to be handled. .PP The next thing to do is to extract the rest of the data from the tape. Comments are enclosed in ( ); don't type these. The number in the first command is the size of the file system; it differs between RP03, RP04/5, and RP06. .DS /etc/mkfs /dev/rp3 74000 (153406 if on RP04/5, 322278 on RP06) (The above command takes about 2-3 minutes on an RP03) dd if=/dev/nrmt0 of=/dev/null bs=20b files=6 (skip 6 files on the tape) restor rf /dev/rmt0 /dev/rp3 (restore the file system) (Reply with a `return' (CR) to the `Last chance' message) (The restor takes about 20-30 minutes) .DE All of the data on the tape has been extracted. .PP You may at this point mount the source file system (mount(1)). To do this type the following: .DS /etc/mount /dev/rp3 /usr .DE The source and manual pages are now available in subdirectories of /usr. .PP The above mount command is only needed if you intend to play around with source on a single user system, which you are going to do next. The file system is mounted automatically when multi-user mode is entered, by a command in the file /etc/rc. (See `Disk Layout' below). .PP Before anything further is done the bootstrap block on the disk (block 0) should be filled in. This is done using the command .DS dd if=/usr/mdec/rpuboot of=/dev/rp0 count=1 .DE if you have the RP03, or .DS dd if=/usr/mdec/hpuboot of=/dev/rp0 count=1 .DE if you have an RP04/5/6. Now the DEC disk bootstraps are usable. See Boot Procedures(8) for further information. .PP Before UNIX is turned up completely, a few configuration dependent exercises must be performed. At this point, it would be wise to read all of the manuals (especially `Regenerating System Software') and to augment this reading with hand to hand combat. .SH Reconfiguration .PP The UNIX system running is configured to run with the given disk and tape, a console, and no other device. This is certainly not the correct configuration. You will have to correct the configuration table to reflect the true state of your machine. .PP It is wise at this point to know how to recompile the system. Print (cat(1)) the file /usr/sys/conf/makefile. This file is input to the program `make(1)' which if invoked with `make all' will recompile all of the system source and install it in the correct libraries. .PP The program mkconf(1) prepares files that describe a given configuration (See mkconf(1)). In the /usr/sys/conf directory, the four files \fIxy\fRconf were input to mkconf to produce the four versions of the system \fIxy\fRunix. Pick the appropriate one, and edit it to add lines describing your own configuration. (Remember the console typewriter is automatically included; don't count it in the kl specification.) Then run mkconf; it will generate the files l.s (trap vectors) c.c (configuration table), and mch0.s. Take a careful look at l.s to make sure that all the devices that you have are assembled in the correct interrupt vectors. If your configuration is non-standard, you will have to modify l.s to fit your configuration. .PP There are certain magic numbers and configuration parameters imbedded in various device drivers that you may want to change. The device addresses of each device are defined in each driver. In case you have any non-standard device addresses, just change the address and recompile. (The device drivers are in the directory /usr/sys/dev.) .PP The DC11 driver is set to run 4 lines. This can be changed in dc.c. .PP The DH11 driver is set to handle 3 DH11's with a full complement of 48 lines. If you have less, or more, you may want to edit dh.c. .PP The DN11 driver will handle 4 DN's. Edit dn.c. .PP The DU11 driver can only handle a single DU. This cannot be easily changed. .PP The KL/DL driver is set up to run a single DL11-A, -B, or -C (the console) and no DL11-E's. To change this, edit kl.c to have NKL11 reflect the total number of DL11-ABC's and NDL11 to reflect the number of DL11-E's. So far as the driver is concerned, the difference between the devices is their address. .PP All of the disk and tape drivers (rf.c, rk.c, rp.c, tm.c, tc.c, hp.c, ht.c) are set up to run 8 drives and should not need to be changed. The big disk drivers (rp.c and hp.c) have partition tables in them which you may want to experiment with. .PP After all the corrections have been made, use `make(1)' to recompile the system (or recompile individually if you wish: use the makefile as a guide). If you compiled individually, say `make unix' in the directory /usr/sys/conf. The final object file (unix) should be moved to the root, and then booted to try it out. It is best to name it /nunix so as not to destroy the working system until you're sure it does work. See Boot Procedures(8) for a discussion of booting. Note: before taking the system down, always (!!) perform a sync(1) to force delayed output to the disk. .SH Special Files .PP Next you must put in special files for the new devices in the directory /dev using mknod(1). Print the configuration file c.c created above. This is the major device switch of each device class (block and character). There is one line for each device configured in your system and a null line for place holding for those devices not configured. The essential block special files were installed above; for any new devices, the major device number is selected by counting the line number (from zero) of the device's entry in the block configuration table. Thus the first entry in the table bdevsw would be major device zero. This number is also printed in the table along the right margin. .PP The minor device is the drive number, unit number or partition as described under each device in section 4 of the manual. For tapes where the unit is dial selectable, a special file may be made for each possible selection. You can also add entries for other disk drives. .PP In reality, device names are arbitrary. It is usually convenient to have a system for deriving names, but it doesn't have to be the one presented above. .PP Some further notes on minor device numbers. The hp driver uses the 0100 bit of the minor device number to indicate whether or not to interleave a file system across more than one physical device. See hp(4) for more detail. The tm and ht drivers use the 0200 bit to indicate whether or not to rewind the tape when it is closed. The 0100 bit indicates the density of the tape on TU16 drives. By convention, tape special files with the 0200 bit on have an `n' prepended to their name, as in /dev/nmt0 or /dev/nrmt1. Again, see tm(4) or ht(4). .PP The naming of character devices is similar to block devices. Here the names are even more arbitrary except that devices meant to be used for teletype access should (to avoid confusion, no other reason) be named /dev/ttyX, where X is some string (as in `00' or `library'). The files console, mem, kmem, and null are already correctly configured. .PP The disk and magtape drivers provide a `raw' interface to the device which provides direct transmission between the user's core and the device and allows reading or writing large records. The raw device counts as a character device, and should have the name of the corresponding standard block special file with `r' prepended. (The `n' for no rewind tapes violates this rule.) Thus the raw magtape files would be called /dev/rmtX. These special files should be made. .PP When all the special files have been created, care should be taken to change the access modes (chmod(1)) on these files to appropriate values (probably 600 or 644). .SH Floating Point .PP UNIX only supports (and really expects to have) the FP11-B/C floating point unit. For machines without this hardware, there is a user subroutine available that will catch illegal instruction traps and interpret floating point operations. (See fptrap(3).) To install this subroutine in the library, change to /usr/src/libfpsim and execute the shell files .DS compall mklib .DE The system as delivered does not have this code included in any command, although the operating system adapts automatically to the presence or absence of the FP11. .PP Next, a floating-point version of the C compiler in /usr/src/cmd/c should be compiled using the commands: .DS cd /usr/src/cmd/c make fc1 mv fc1 /lib/fc1 .DE This allows programs with floating point constants to be compiled. To compile floating point programs use the `\-f' flag to cc(1). This flag ensures that the floating point interpreter is loaded with the program and that the floating point version of `cc' is used. .SH Time Conversion .PP If your machine is not in the Eastern time zone, you must edit (ed(1)) the file /usr/sys/h/param.h to reflect your local time. The manifest `TIMEZONE' should be changed to reflect the time difference between local time and GMT in minutes. For EST, this is 5*60; for PST it would be 8*60. Finally, there is a `DSTFLAG' manifest; when it is 1 it causes the time to shift to Daylight Savings automatically between the last Sundays in April and October (or other algorithms in 1974 and 1975). Normally this will not have to be reset. When the needed changes are done, recompile and load the system using make(1) and install it. (As a general rule, when a system header file is changed, the entire system should be recompiled. As it happens, the only uses of these flags are in /usr/sys/sys/sys4.c, so if this is all that was changed it alone needs to be recompiled.) .PP You may also want to look at timezone(3) (/usr/src/libc/gen/timezone.c) to see if the name of your timezone is in its internal table. If needed, edit the changes in. After timezone.c has been edited it should be compiled and installed in its library. (See /usr/src/libc/(mklib and compall)) Then you should (at your leisure) recompile and reinstall all programs that use it (such as date(1)). .SH Disk Layout .PP If there are to be more file systems mounted than just the root and /usr, use mkfs(1) to create any new file system and put its mounting in the file /etc/rc (see init(8) and mount(1)). (You might look at /etc/rc anyway to see what has been provided for you.) .PP There are two considerations in deciding how to adjust the arrangement of things on your disks: the most important is making sure there is adequate space for what is required; secondarily, throughput should be maximized. Swap space is a critical parameter. The system as distributed has 8778 (hpunix) or 2000 (rpunix) blocks for swap space. This should be large enough so running out of swap space never occurs. You may want to change these if local wisdom indicates otherwise. .PP The system as distributed has all of the binaries in /bin. Most of them should be moved to /usr/bin, leaving only the ones required for system maintenance (such as icheck, dcheck, cc, ed, restor, etc.) and the most heavily used in /bin. This will speed things up a bit if you have only one disk, and also free up space on the root file system for temporary files. (See below). .PP Many common system programs (C, the editor, the assembler etc.) create intermediate files in the /tmp directory, so the file system where this is stored also should be made large enough to accommodate most high-water marks. If you leave the root file system as distributed (except as discussed above) there should be no problem. All the programs that create files in /tmp take care to delete them, but most are not immune to events like being hung up upon, and can leave dregs. The directory should be examined every so often and the old files deleted. .PP Exhaustion of user-file space is certain to occur now and then; the only mechanisms for controlling this phenomenon are occasional use of du(1), df(1), quot(1), threatening messages of the day, and personal letters. .PP The efficiency with which UNIX is able to use the CPU is largely dictated by the configuration of disk controllers. For general time-sharing applications, the best strategy is to try to split user files, the root directory (including the /tmp directory) and the swap area among three controllers. .PP Once you have decided how to make best use of your hardware, the question is how to initialize it. If you have the equipment, the best way to move a file system is to dump it (dump(1)) to magtape, use mkfs(1) to create the new file system, and restore (restor(1)) the tape. If for some reason you don't want to use magtape, dump accepts an argument telling where to put the dump; you might use another disk. Sometimes a file system has to be increased in logical size without copying. The super-block of the device has a word giving the highest address which can be allocated. For relatively small increases, this word can be patched using the debugger (adb(1)) and the free list reconstructed using icheck(1). The size should not be increased very greatly by this technique, however, since although the allocatable space will increase the maximum number of files will not (that is, the i-list size can't be changed). Read and understand the description given in file system(5) before playing around in this way. You may want to see section rp(4) for some suggestions on how to lay out the information on RP disks. .PP If you have to merge a file system into another, existing one, the best bet is to use tar(1). If you must shrink a file system, the best bet is to dump the original and restor it onto the new filesystem. However, this might not work if the i-list on the smaller filesystem is smaller than the maximum allocated inode on the larger. If this is the case, reconstruct the filesystem from scratch on another filesystem (perhaps using tar(1)) and then dump it. If you are playing with the root file system and only have one drive the procedure is more complicated. What you do is the following: .IP 1. GET A SECOND PACK!!!! .IP 2. Dump the current root filesystem (or the reconstructed one) using dump(1). .IP 3. Bring the system down and mount the new pack. .IP 4. Retrieve the WECo distribution tape and perform steps 1 through 5 at the beginning of this document, substituting the desired file system size instead of 5000 when asked for `file system size'. .IP 5. Perform step 6 above up to the point where the `tape' question is asked. At this point mount the tape you made just a few minutes ago. Continue with step 6 above substituting a 0 (zero) for the 5. .SH New Users .PP Install new users by editing the password file /etc/passwd (passwd(5)). This procedure should be done once multi-user mode is entered (see init(8)). You'll have to make a current directory for each new user and change its owner to the newly installed name. Login as each user to make sure the password file is correctly edited. For example: .DS ed /etc/passwd $a joe::10:1::/usr/joe: .li . w q mkdir /usr/joe chown joe /usr/joe login joe ls \-la login root .DE This will make a new login entry for joe, who should be encouraged to use passwd(1) to give himself a password. His default current directory is /usr/joe which has been created. The delivered password file has the user .I bin .R in it to be used as a prototype. .SH Multiple Users .PP If UNIX is to support simultaneous access from more than just the console terminal, the file /etc/ttys (ttys(5)) has to be edited. To add a new terminal be sure the device is configured and the special file exists, then set the first character of the appropriate line of /etc/ttys to 1 (or add a new line). Note that init.c will have to be recompiled if there are to be more than 100 terminals. Also note that if the special file is inaccessible when init tries to create a process for it, the system will thrash trying and retrying to open it. .SH File System Health .PP Periodically (say every day or so) and always after a crash, you should check all the file systems for consistency (icheck, dcheck(1)). It is quite important to execute sync (8) before rebooting or taking the machine down. This is done automatically every 30 seconds by the update program (8) when a multiple-user system is running, but you should do it anyway to make sure. .PP Dumping of the file system should be done regularly, since once the system is going it is very easy to become complacent. Complete and incremental dumps are easily done with dump(1). Dumping of files by name is best done by tar(1) but the number of files is somewhat limited. Finally if there are enough drives entire disks can be copied using cp(1), or preferably with dd(1) using the raw special files and an appropriate block size. .SH Converting Sixth Edition Filesystems .PP The best way to convert file systems from 6th edition (V6) to 7th edition (V7) format is to use tar(1). However, a special version of tar must be prepared to run on V6. The following steps will do this: .IP 1. change directories to /usr/src/cmd/tar .IP 2. At the shell prompt respond .DS make v6tar .DE This will leave an executable binary named `v6tar'. .IP 3. Mount a scratch tape. .IP 4. Use tp(1) to put `v6tar' on the scratch tape. .IP 5. Bring down V7 and bring up V6. .IP 6. Use tp (on V6) to read in `v6tar'. Put it in /bin or /usr/bin (or perhaps some other preferred location). .IP 7. Use v6tar to make tapes of all that you wish to convert. You may want to read the manual section on tar(1) to see whether you want to use blocking or not. Try to avoid using full pathnames when making the tapes. This will simplify moving the hierarchy to some other place on V7 if desired. For example .DS chdir /usr/ken v6tar c . .DE is preferable to .DS v6tar c /usr/ken .DE .IP 8. After all of the desired tapes are made, bring down V6 and reboot V7. Use tar(1) to read in the tapes just made. .SH Odds and Ends .PP The programs dump, icheck, quot, dcheck, ncheck, and df (source in /usr/source/cmd) should be changed to reflect your default mounted file system devices. Print the first few lines of these programs and the changes will be obvious. Tar should be changed to reflect your desired default tape drive. .sp 3 .in 4i Good Luck .sp 1 Charles B. Haley .br Dennis M. Ritchie traps and interpret floating point operations. (See fptrap(3).) To install this subroutine in the library, change to /usr/src/libfpsim and execute the shell files .DS compall mklib .DE Tdoc/2.10/setup.2.10/ 755 3 12 0 4357277637 6636 doc/2.10/setup.2.10/5.t 644 3 12 63170 4357277633 7277 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)5.t 6.2 (Berkeley) 10/1/88 .\" .ds lq `` .ds rq '' .ds LH "Installing/Operating \*(2B .ds RH Network setup .ds CF \*(DY .LP .nr H1 5 .nr H2 0 .bp .LG .B .ce 5. NETWORK SETUP .sp 2 .R .NL .PP The following section has been lightly edited to correspond to the current \*(2B networking. Several parts of it do not really apply to \*(2B, for example, it is unlikely that anyone will connect a PDP to an IMP, or that anyone will need to run the nameserver. The ``correct'' use of the networking in \*(2B is probably with a list of the local net addresses in the \fI/etc/hosts\fP file and with one default gateway for all network traffic. In particular, do not run .IR routed (8) unless you're extremely sure that you know what you're doing. This is doubly true if SLIP is being used as the primary connection to the outside world. Much of the \*(2B networking is ported but untested. This means that sites that wish to hook \*(2B into more than a simple local ethernet may have to do some kernel work. .PP The networking in \*(2B, runs in supervisor mode, separate from the mainstream kernel. This is a major win, as it allows the networking to maintain its mbufs in normal data space, among other things. The networking portion of the kernel resides in ``/netnix'', and is loaded after the kernel is running. As the kernel looks for this file only, and will not run if it's unable to load it, sites should build and keep a non-networking kernel in ``/'' at all times, as a backup. .PP \*(2B provides support for the DARPA standard Internet protocols IP, ICMP, TCP, and UDP. These protocols may be used on top of a variety of hardware devices ranging from the IMP's (PSN's) used in the ARPANET to local area network controllers for the Ethernet. Network services are split between the kernel (communication protocols) and user programs (user services such as TELNET and FTP). This section describes how to configure your system to use the Internet networking support. \*(2B also includes code to support the Xerox Network Systems (NS) protocols; the basic porting work has been done, but it is completely untested. IDP and SPP are implemented in the kernel, and other protocols such as Courier run at the user level. .NH 2 System configuration .PP To configure the kernel to include the Internet communication protocols, define the UCB_NET option. This automatically defines the INET, TCP_COMPAT_42, and NLOOP options. Xerox NS support is enabled with the NS option. In either case, include the pseudo-device ``pty'' in your machine's configuration file, using the NPTY options. The ``pty'' pseudo-device forces the pseudo terminal device driver to be configured into the system, see \fIpty\fP\|(4). The NLOOP option forces inclusion of the software loopback interface driver. The loop driver is used in network testing. .PP If you are planning to use the Internet network facilities on a 10Mb/s Ethernet, the pseudo-device ``ether'' should also be included in the configuration using the NETHER option; this forces inclusion of the Address Resolution Protocol module used in mapping between 48-bit Ethernet and 32-bit Internet addresses. Also, if you have an IMP connection, you will need to include the pseudo-device ``imp'', using the option NIMP. The IMP software is ported, but untested. .PP Before configuring the appropriate networking hardware, you should consult the manual pages in section 4 of the Programmer's Manual. The following table lists the devices for which software support exists. Again, much of this software is unported and untested; only the basic networking has been stressed at all. Many other devices are available, but unported. Porting should simply be a matter of making the hardware device work. The directories ``/sys/pdpif'' and ``/sys/vaxif'' contain many drivers. The ones in ``pdpif'' are either the current, working drivers, or drivers that, at some time, worked on pdp-11's. The ones in ``vaxif'' are the current VAX drivers, and, as such, will have to have their memory usage changed, but serve as an excellent example of how the hardware works.~ .DS .TS l l. Device name Manufacturer and product _ de DEC DEUNA/DELUA 10Mb/s Ethernet qe DEC DEQNA 10Mb/s Ethernet ec 3Com 10Mb/s Ethernet il Interlan 1010 and 10101A 10Mb/s Ethernet interfaces .TE .DE .PP SLIP is also available. It is currently fairly slow, as the interface between the supervisor and kernel mode sections of the kernel for SLIP are quite painful, in that it passes single characters to the networking portion of the kernel. A few days work in fixing this interface could be quite rewarding in terms of real throughput. .PP All network interface drivers including the loopback interface, require that their host address(es) be defined at boot time. This is done with .IR ifconfig (8C) commands included in the \fI/etc/rc.local\fP file. Interfaces that are able to dynamically deduce the host part of an address may check that the host part of the address is correct. The manual page for each network interface describes the method used to establish a host's address. .IR Ifconfig (8) can also be used to set options for the interface at boot time. Options are set independently for each interface, and apply to all packets sent using that interface. These options include disabling the use of the Address Resolution Protocol; this may be useful if a network is shared with hosts running software that does not yet provide this function. Alternatively, translations for such hosts may be set in advance or ``published'' by a \*(2B host by use of the .IR arp (8c) command. Note that the use of trailer link-level is now negotiated between \*(2B hosts using ARP, and it is thus no longer necessary to disable the use of trailers with \fIifconfig\fP. It is \fBSTRONGLY\fP recommended, however, that \*(2B networking be run without trailers, as the trailer code in most of the drivers has either been commented out as untested or is \fBknown\fP not to work. This is a problem with certain releases of \fIUltrix\fP, which has to be explicitly configured not to send trailers if it and \*(2B are to coexist. .PP To use the pseudo terminals just configured, device entries must be created in the ``/dev'' directory. To create 32 pseudo terminals (plenty, you can probably get by with many less) execute the following commands. .DS \fB#\fP cd /dev \fB#\fP MAKEDEV pty0 pty1 .DE More pseudo terminals may be made by specifying \fIpty2\fP, \fIpty3\fP, etc. The kernel normally includes support for 16 pseudo terminals unless the configuration file specifies a different number. Each pseudo terminal really consists of two files in /dev: a master and a slave. The master pseudo terminal file is named /dev/ptyp?, while the slave side is /dev/ttyp?. Pseudo terminals are also used by several programs not related to the network. In addition to creating the pseudo terminals, be sure to install them in the .I /etc/ttys file (with a `none' in the second column so no .I getty is started). .NH 2 Local subnetworks .PP In \*(2B the DARPA Internet support includes the notion of ``subnetworks''. This is a mechanism by which multiple local networks may appears as a single Internet network to off-site hosts. Subnetworks are useful because they allow a site to hide their local topology, requiring only a single route in external gateways; it also means that local network numbers may be locally administered. The standard describing this change in Internet addressing is RFC-950. .PP To set up local subnetworks one must first decide how the available address space (the Internet ``host part'' of the 32-bit address) is to be partitioned. Sites with a class A network number have a 24-bit address space with which to work, sites with a class B network number have a 16-bit address space, while sites with a class C network number have an 8-bit address space*. .FS * If you are unfamiliar with the Internet addressing structure, consult ``Address Mappings'', Internet RFC-796, J. Postel; available from the Internet Network Information Center at SRI. .FE To define local subnets you must steal some bits from the local host address space for use in extending the network portion of the Internet address. This reinterpretation of Internet addresses is done only for local networks; i.e. it is not visible to hosts off-site. For example, if your site has a class B network number, hosts on this network have an Internet address that contains the network number, 16 bits, and the host number, another 16 bits. To define 254 local subnets, each possessing at most 255 hosts, 8 bits may be taken from the local part. (The use of subnets 0 and all-1's, 255 in this example, is discouraged to avoid confusion about broadcast addresses.) These new network numbers are then constructed by concatenating the original 16-bit network number with the extra 8 bits containing the local subnetwork number. .PP The existence of local subnetworks is communicated to the system at the time a network interface is configured with the .I netmask option to the .I ifconfig program. A ``network mask'' is specified to define the portion of the Internet address that is to be considered the network part for that network. This mask normally contains the bits corresponding to the standard network part as well as the portion of the local part that has been assigned to subnets. If no mask is specified when the address is set, it will be set according to the class of the network. For example, at Berkeley (class B network 128.32) 8 bits of the local part have been reserved for defining subnetworks; consequently the /etc/rc.local file contains lines of the form .DS /etc/ifconfig en0 netmask 0xffffff00 128.32.1.7 .DE This specifies that for interface ``en0'', the upper 24 bits of the Internet address should be used in calculating network numbers (netmask 0xffffff00), and the interface's Internet address is ``128.32.1.7'' (host 7 on network 128.32.1). Hosts \fIm\fP on sub-network \fIn\fP of this network would then have addresses of the form ``128.32.\fIn\fP.\fIm\fP''; for example, host 99 on network 129 would have an address ``128.32.129.99''. For hosts with multiple interfaces, the network mask should be set for each interface, although in practice only the mask of the first interface on each network is actually used. .NH 2 Internet broadcast addresses .PP The address defined as the broadcast address for Internet networks according to RFC-919 is the address with a host part of all 1's. The address used by 4.2BSD was the address with a host part of 0. \*(2B uses the standard broadcast address (all 1's) by default, but allows the broadcast address to be set (with \fIifconfig\fP) for each interface. This allows networks consisting of both 4.2BSD and \*(2B hosts to coexist. In the presence of subnets, the broadcast address uses the subnet field as for normal host addresses, with the remaining host part set to 1's (or 0's, on a network that has not yet been converted). \*(2B hosts recognize and accept packets sent to the logical-network broadcast address as well as those sent to the subnet broadcast address, and when using an all-1's broadcast, also recognize and receive packets sent to host 0 as a broadcast. .NH 2 Routing .PP If your environment allows access to networks not directly attached to your host you will need to set up routing information to allow packets to be properly routed. Two schemes are supported by the system. The first scheme employs the routing table management daemon \fI/etc/routed\fP to maintain the system routing tables. The routing daemon uses a variant of the Xerox Routing Information Protocol to maintain up to date routing tables in a cluster of local area networks. By using the \fI/etc/gateways\fP file created by .IR htable (8), the routing daemon can also be used to initialize static routes to distant networks (see the next section for further discussion). When the routing daemon is started up (usually from \fI/etc/rc.local\fP) it reads \fI/etc/gateways\fP if it exists and installs those routes defined there, then broadcasts on each local network to which the host is attached to find other instances of the routing daemon. If any responses are received, the routing daemons cooperate in maintaining a globally consistent view of routing in the local environment. This view can be extended to include remote sites also running the routing daemon by setting up suitable entries in \fI/etc/gateways\fP; consult .IR routed (8C) for a more thorough discussion. .PP The second approach is to define a default or wildcard route to a smart gateway and depend on the gateway to provide ICMP routing redirect information to dynamically create a routing data base. This is done by adding an entry of the form .DS /etc/route add default \fIsmart-gateway\fP 1 .DE to \fI/etc/rc.local\fP; see .IR route (8C) for more information. The default route will be used by the system as a ``last resort'' in routing packets to their destination. Assuming the gateway to which packets are directed is able to generate the proper routing redirect messages, the system will then add routing table entries based on the information supplied. This approach has certain advantages over the routing daemon, but is unsuitable in an environment where there are only bridges (i.e. pseudo gateways that, for instance, do not generate routing redirect messages). Further, if the smart gateway goes down there is no alternative, save manual alteration of the routing table entry, to maintaining service. .PP The system always listens, and processes, routing redirect information, so it is possible to combine both of the above facilities. For example, the routing table management process might be used to maintain up to date information about routes to geographically local networks, while employing the wildcard routing techniques for ``distant'' networks. The .IR netstat (1) program may be used to display routing table contents as well as various routing oriented statistics. For example, .DS \fB#\fP\|netstat \-r .DE will display the contents of the routing tables, while .DS \fB#\fP\|netstat \-r \-s .DE will show the number of routing table entries dynamically created as a result of routing redirect messages, etc. .NH 2 Use of \*(2B machines as gateways .PP Only sheer insanity could prompt the use of \*(2B machines as gateways. However, if you have no choice, several changes have been made in \*(2B in the area of gateway support (or packet forwarding, if one prefers). A new configuration option, GATEWAY, is used when configuring a machine to be used as a gateway. This option increases the size of the routing hash tables in the kernel. Unless configured with that option, hosts with only a single non-loopback interface never attempt to forward packets or to respond with ICMP error messages to misdirected packets. This change reduces the problems that may occur when different hosts on a network disagree as to the network number or broadcast address. Another change is that \*(2B machines that forward packets back through the same interface on which they arrived will send ICMP redirects to the source host if it is on the same network. This improves the interaction of \*(2B gateways with hosts that configure their routes via default gateways and redirects. The generation of redirects may be disabled with the configuration option IPSENDREDIRECTS=0 in environments where it may cause difficulties. .PP Local area routing within a group of interconnected Ethernets and other such networks may be handled by .IR routed (8c). Gateways between the Arpanet or Milnet and one or more local networks require an additional routing protocol, the Exterior Gateway Protocol (EGP), to inform the core gateways of their presence and to acquire routing information from the core. An EGP implementation for 4.2BSD was done by Paul Kirton while visiting ISI, and any sites requiring such support that have not already obtained a copy should contact Joyce Reynolds (JKReynolds@usc-isif.arpa) for information. That implementation works with \*(2B without kernel modifications. It must be modified, as packets from the ICMP raw socket include the IP header like other raw sockets in \*(2B. If necessary, contact the Berkeley Computer Systems Research Group for assistance. .NH 2 Network servers .PP In \*(2B most of the server programs are started up by a ``super server'', the Internet daemon. The Internet daemon, \fI/etc/inetd\fP, acts as a master server for programs specified in its configuration file, \fI/etc/inetd.conf\fP, listening for service requests for these servers, and starting up the appropriate program whenever a request is received. The configuration file contains lines containing a service name (as found in \fI/etc/services\fP), the type of socket the server expects (e.g. stream or dgram), the protocol to be used with the socket (as found in \fI/etc/protocols\fP), whether to wait for each server to complete before starting up another, the user name as which the server should run, the server program's name, and at most five arguments to pass to the server program. Some trivial services are implemented internally in \fIinetd\fP, and their servers are listed as ``internal.'' For example, an entry for the file transfer protocol server would appear as .DS ftp stream tcp nowait root /etc/ftpd ftpd .DE Consult .IR inetd (8c) for more detail on the format of the configuration file and the operation of the Internet daemon. .NH 2 Network data bases .PP Several data files are used by the network library routines and server programs. Most of these files are host independent and updated only rarely. .DS .TS l l l. File Manual reference Use _ /etc/hosts \fIhosts\fP\|(5) host names /etc/networks \fInetworks\fP\|(5) network names /etc/services \fIservices\fP\|(5) list of known services /etc/protocols \fIprotocols\fP\|(5) protocol names /etc/hosts.equiv \fIrshd\fP\|(8C) list of ``trusted'' hosts /etc/rc.local \fIrc\fP\|(8) command script for starting servers /etc/ftpusers \fIftpd\fP\|(8C) list of ``unwelcome'' ftp users /etc/hosts.lpd \fIlpd\fP\|(8C) list of hosts allowed to access printers /etc/inetd.conf \fIinetd\fP\|(8) list of servers started by \fIinetd\fP .TE .DE The files distributed are set up for ARPANET or other Internet hosts. Local networks and hosts should be added to describe the local configuration; the Berkeley entries may serve as examples (see also the next section). Network numbers will have to be chosen for each Ethernet. For sites not connected to the Internet, these can be chosen more or less arbitrarily, otherwise the normal channels should be used for allocation of network numbers. .NH 3 Regenerating /etc/hosts and /etc/networks .PP When using the host address routines that use the Internet name server, the file \fI/etc/hosts\fP is only used for setting interface addresses and at other times that the server is not running, and therefore it need only contain addresses for local hosts. There is no equivalent service for network names yet. The full host and network name data bases are normally derived from a file retrieved from the Internet Network Information Center at SRI. To do this you should use the program /etc/gettable to retrieve the NIC host data base, and the program .IR htable (8) to convert it to the format used by the libraries. You should change to the directory where you maintain your local additions to the host table and execute the following commands. .DS \fB#\fP /etc/gettable sri-nic.arpa \fBConnection to sri-nic.arpa opened.\fP \fBHost table received.\fP \fBConnection to sri-nic.arpa closed.\fP \fB#\fP /etc/htable hosts.txt \fBWarning, no localgateways file.\fP \fB#\fP .DE The \fIhtable\fP program generates three files in the local directory: \fIhosts\fP, \fInetworks\fP and \fIgateways\fP. If a file ``localhosts'' is present in the working directory its contents are first copied to the output file. Similarly, a ``localnetworks'' file may be prepended to the output created by \fIhtable\fP, and `localgateways'' will be prepended to \fIgateways\fP. It is usually wise to run \fIdiff\fP\|(1) on the new host and network data bases before installing them in /etc. If you are using the host table for host name and address mapping, you should run \fImkhosts\fP\|(8) after installing \fI/etc/hosts\fP. If you are using the name server for the host name and address mapping, you only need to install \fInetworks\fP and a small copy of \fIhosts\fP describing your local machines. The full host table in this case might be placed somewhere else for reference by users. The gateways file may be installed in \fI/etc/gateways\fP if you use .IR routed (8c) for local routing and wish to have static external routes installed when \fIrouted\fP is started. This procedure is essentially obsolete, however, except for individual hosts that are on the Arpanet or Milnet and do not forward packets from a local network. Other situations require the use of an EGP server. .PP If you are connected to the DARPA Internet, it is highly recommended that you use the name server for your host name and address mapping, as this provides access to a much larger set of hosts than are provided in the host table. Many large organization on the network, currently have only a small percentage of their hosts listed in the host table retrieved from NIC. .NH 3 /etc/hosts.equiv .PP The remote login and shell servers use an authentication scheme based on trusted hosts. The \fIhosts.equiv\fP file contains a list of hosts that are considered trusted and, under a single administrative control. When a user contacts a remote login or shell server requesting service, the client process passes the user's name and the official name of the host on which the client is located. In the simple case, if the host's name is located in \fIhosts.equiv\fP and the user has an account on the server's machine, then service is rendered (i.e. the user is allowed to log in, or the command is executed). Users may expand this ``equivalence'' of machines by installing a \fI.rhosts\fP file in their login directory. The root login is handled specially, bypassing the \fIhosts.equiv\fP file, and using only the \fI/.rhosts\fP file. .PP Thus, to create a class of equivalent machines, the \fIhosts.equiv\fP file should contain the \fIofficial\fP names for those machines. If you are running the name server, you may omit the domain part of the host name for machines in your local domain. For example, several machines on our local network are considered trusted, so the \fIhosts.equiv\fP file is of the form: .DS ucbarpa calder dali ernie kim degas .DE .NH 3 /etc/rc.local .PP Most network servers are automatically started up at boot time by the command file /etc/rc (if they are installed in their presumed locations) or by the Internet daemon (see above). These include the following: .DS .TS l l l. Program Server Started by _ /etc/rshd shell server inetd /etc/rexecd exec server inetd /etc/rlogind login server inetd /etc/telnetd TELNET server inetd /etc/ftpd FTP server inetd /etc/fingerd Finger server inetd /etc/tftpd TFTP server inetd /etc/rwhod system status daemon /etc/rc /etc/syslogd error logging server /etc/rc /usr/lib/sendmail SMTP server /etc/rc /etc/routed routing table management daemon /etc/rc .TE .DE Consult the manual pages and accompanying documentation (particularly for sendmail) for details about their operation. .PP To have other network servers started up as well, the appropriate line should be added to the Internet daemon's configuration file \fI/etc/inetd.conf\fP, or commands of the following sort should be placed in the site dependent file \fI/etc/rc.local\fP. .DS if [ -f /etc/routed ]; then /etc/routed & echo -n ' routed' >/dev/console f\&i .DE .NH 3 /etc/ftpusers .PP The FTP server included in the system provides support for an anonymous FTP account. Because of the inherent security problems with such a facility you should read this section carefully if you consider providing such a service. .PP An anonymous account is enabled by creating a user \fIftp\fP. When a client uses the anonymous account a \fIchroot\fP\|(2) system call is performed by the server to restrict the client from moving outside that part of the file system where the user ftp home directory is located. Because a \fIchroot\fP call is used, certain programs and files used by the server process must be placed in the ftp home directory. Further, one must be sure that all directories and executable images are unwritable. The following directory setup is recommended. .DS \fB#\fP cd ~ftp \fB#\fP chmod 555 .; chown ftp .; chgrp ftp . \fB#\fP mkdir bin etc pub \fB#\fP chown root bin etc \fB#\fP chmod 555 bin etc \fB#\fP chown ftp pub \fB#\fP chmod 777 pub \fB#\fP cd bin \fB#\fP cp /bin/sh /bin/ls . \fB#\fP chmod 111 sh ls \fB#\fP cd ../etc \fB#\fP cp /etc/passwd /etc/group . \fB#\fP chmod 444 passwd group .DE When local users wish to place files in the anonymous area, they must be placed in a subdirectory. In the setup here, the directory \fI~ftp/pub\fP is used. .PP Another issue to consider is the copy of \fI/etc/passwd\fP placed here. It may be copied by users who use the anonymous account. They may then try to break the passwords of users on your machine for further access. A good choice of users to include in this copy might be root, daemon, uucp, and the ftp user. All passwords here should probably be ``*''. .PP Aside from the problems of directory modes and such, the ftp server may provide a loophole for interlopers if certain user accounts are allowed. The file \fI/etc/ftpusers\fP is checked on each connection. If the requested user name is located in the file, the request for service is denied. This file normally has the following names on our systems. .DS uucp root .DE Accounts with nonstandard shells should be listed in this file. Accounts without passwords need not be listed in this file, the ftp server will not service these users. and to acquire routing information from the core. An EGP implementation for 4.2BSD was done by Paul Kirton while visiting ISI, and any sites requiring such support that have not already obtained a copy should contact Joyce Reynolds (JKReynolds@usc-isif.arpa) for information. That implementation works with \*(2B without kernel modifications. It must be modified, as packets from the ICMP rawdoc/2.10/setup.2.10/0.t 644 3 12 5231 4356654154 7240 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)0.t 6.2 (Berkeley) 10/1/88 .\" .EH 'setup.2.10 - %''Installing and Operating 2.10.1BSD on the PDP' .OH 'Installing and Operating 2.10.1BSD on the PDP''Setup.2.10 - %' .ds Ps 2.10BSD .ds 2B 2.10.1BSD .bd S B 3 .TL Installing and Operating \*(2B on the PDP .br October 1, 1988 .AU Keith Bostic .AI Computer Systems Research Group Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 seismo!keith; bostic@ucbvax.berkeley.edu .AU Casey Leedom .AI Department of Computer Science California State University, Stanislaus Turlock, California 95380 ucbvax!vangogh!casey; casey@vangogh.berkeley.edu .de IR \\fI\\$1\|\\fP\\$2 .. .de UX UNIX\\$1 .. .AB .PP .FS * DEC, PDP, VAX, IDC, SBI, UNIBUS and MASSBUS are trademarks of Digital Equipment Corporation. .FE .FS ** UNIX is a Trademark of Bell Laboratories. .FE This document contains instructions for the installation and operation of the \*(2B PDP* .UX ** system. It is adapted from the papers \fIInstalling and Operating 4.3BSD on the VAX\fP by Michael J. Karels, James M. Bloom, Marshall Kirk McKusick, Samuel J. Leffler, and William N. Joy, and \fIInstalling and Operating 2.9BSD\fP by Michael J. Karels and Carl F. Smith. .PP It discusses procedures for installing \*(2B UNIX on a PDP-11, including explanations of how to lay out file systems on available disks, how to set up terminal lines and user accounts, how to do system-specific tailoring, and how to install and configure the networking facilities. Finally, the document details system operation procedures: shutdown and startup, hardware error reporting and diagnosis, file system backup procedures, resource control, performance monitoring, and procedures for recompiling and reinstalling system software. .PP This release is not supported, nor should it be considered an official Berkeley release. It was called \*(2B because 2.9BSD has clearly become overworked, System V was already taken, and referring to it simply as \*(Ps would engender too much confusion as to whether the first or second release was being talked about. .PP The ``bugs'' address supplied with this release (as well as with the 4BSD releases) will work for some unknown period of time; \fBmake sure\fP that the ``Index:'' line of the bug report indicates that the release is ``\*(Ps''. See the \fIsendbug\fP(8) program for more details. All fixes that we make, or that are sent to us, will be posted on \fIUSENET\fP, in the news group ``comp.bugs.2bsd''. .AE the local configuration; the Berkeley entries may serve as examples (see also the next section). Network numbers will have to be chosen for each Ethernet. For sites not connected to the Internet, these can be chosen more or less arbitrarily, otherwise the normal channels should be used for allocation of network numbers. .NH 3 Regenerating /etc/hosts and /edoc/2.10/setup.2.10/1.t 644 3 12 33116 4357276451 7265 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.t 6.2 (Berkeley) 10/1/88 .\" .ds lq `` .ds rq '' .ds LH "Installing/Operating \*(2B .ds RH Introduction .ds CF \*(DY .LP .nr H1 1 .bp .LG .B .ce 1. INTRODUCTION .sp 2 .R .NL .PP This document explains how to install \*(2B UNIX for the PDP on your system. Because the system call interface has changed dramatically between \*(Ps and all previous versions of UNIX on the PDP, if you are not currently running \*(Ps (dated April 20, 1987) you will have to do a full bootstrap from the distribution tape. .PP The procedure for performing a full bootstrap is outlined in chapter 2. The process includes copying a root file system from the distribution tape into a new file system, booting that root filesystem, and then reading the remainder of the system binaries and sources from the archives on the tapes. .PP The technique for upgrading a \*(Ps system is described in chapter 3 of this document. As \*(Ps and \*(2B are compatible, the upgrade procedure involves extracting a new set of system binaries onto new root and /usr filesystems. The sources are then extracted, and local configuration files are merged into the new system. User filesystems may up upgraded in place, and binaries may be used in the course of the conversion. It is desirable to recompile most local software after the conversion, as there are many changes and performance improvements in the standard libraries. .NH 2 Hardware supported .PP This distribution can be booted on most PDP-11 cpus with 1Mb of memory or more*, .FS * \*(2B would probably only require a moderate amount of squeezing to fit on machines with less memory, but it would also probably be a little unhappy about the prospect. .FE separate I&D, and with any of the following disks: .DS .TS lw(1.5i) l. RL01, RL02 RK06, RK07 RD51, RD52, RD53 RA60, RA80, RA81 RC25 RM02, RM03, RM05 RP04, RP05, RP06 Ampex 9300, CDC 9766, Diva Comp V, Fuji 160, Fuji Eagle, Eaton BR .TE .DE .PP The tape drives supported by this distribution are: .DS .TS lw(1.5i) l. TS11, TU80 TM11, AVIV 6250/1600 TE16, TU45, TU77 .TE .DE Although \*(2B contains a kernel level floating point simulator, it has never been tested. At the release of \*(Ps some thought was given to the possibility of lifting the separate I&D restriction, but that thought seems to have languished. In all likelihood, the work will probably never be done (certainly not by us). .NH 2 Distribution format .PP The basic distribution contains the following items: .DS (2)\0\0 1600bpi 2400' magnetic tapes, (1)\0\0 Hardcopy of this document, (1)\0\0 Hardcopy of the \fIChanges in \*(2B\fP document, and (1)\0\0 Hardcopy of the \*(2B /README file. .DE Installation on any machine requires a tape unit. Since certain standard PDP packages do not include a tape drive, this means one must either borrow one from another PDP system or one must be purchased separately. .PP \fBThe distribution does not fit on several standard PDP configurations that contain only small disks\fP. If your hardware configuration does not provide at least \fB75\fP Megabytes of disk space you can still install the distribution, but you will probably have to operate without source for the user level commands and, possibly, the source for the operating system. .PP \fBThe root file system now occupies 4Mb and hence will not fit on the old `a' partitions of some disks\fP. In particular, a new partition \fIe\fP has been created for the RK06 and RK07 which overlaps partitions \fIa\fP and \fIb\fP, and a new partition \fIf\fP has been set up for the RM02 and RM03 which overlaps their \fIa\fP and \fIb\fP partitions. The distribution RK06/RK07 kernel (\fI/hkunix\fP) assumes that its root device is drive zero, partition \fIe\fP (/dev/hk0e) and that its swap device is drive \fBone\fP, partition \fIa\fP (/dev/hk\fB1\fPa). The distribution RM02/RM03 kernel (\fI/rmunix\fP) assumes that its root device is drive zero, partition \fIf\fP (/dev/xp0f) and that its swap device is drive \fBone\fP, partition \fIa\fP (/dev/xp\fB1\fPa). The RL01/RL02 driver doesn't support partitioning of drives, so the RL01/RL02 kernel (\fI/rlunix\fP) assumes that its root device is drive zero (/dev/rl0h) and its swap device is drive \fBone\fP (/dev/rl\fB1\fPh). All other distribution kernels assume that their root device is drive zero partition \fIa\fP (/dev/\fIxx\fP0a) and their swap device is on partition \fIb\fP of the same drive (/dev/\fIxx\fP0b). .PP If you have the facilities, it is a good idea to copy the magnetic tape(s) in the distribution kit to guard against disaster. The tapes are 9-track 1600 BPI and contain some 512-byte records, followed by some 1024-byte records, followed by many 10240-byte records. There are interspersed tape marks; end-of-tape is signaled by a double end-of-file. .PP The basic bootstrap material is present in five short files at the beginning of the first tape. The first file on the tape contains preliminary bootstrapping programs. This is followed by stand alone versions of several file system utilities (\fImkfs\fP\|(8), \fIrestor\fP\|(8), and \fIicheck\fP\|(8)*) .FS * References of the form X(Y) mean the subsection named X in section Y of the .UX programmer's manual. .FE followed by a full dump of a root file system (see \fIdump\fP\|(8)). Following the root file system dump is a tape archive image of \fB/usr\fP excepting \fB/usr/src\fP (see \fItar\fP\|(1)). Finally, a tape archive of source for include files and kernel source ends the first tape. The second tape contains a tape archive image, also in \fItar\fP format, of all the remaining source that comes with the system. .PP .DS L TAPE 1: .\"CHECK - XXX .TS n n n l. Tape file Record size Records** Contents _ 0 512 1 primary tape boot block 512 1 boot block (some tape boot ROMs go for this copy) 512 14 stand alone \fBboot\fP program 1 1024 28 stand alone \fBmkfs\fP(8) 2 1024 27 stand alone \fBrestor\fP(8) 3 1024 26 stand alone \fBicheck\fP(8) 4 10240 300 \fIdump\fP of ``root'' file system 5 10240 2300 \fItar\fP dump of /usr, excepting /usr/src 6 10240 500 \fItar\fP dump of /usr/src/include and /usr/src/sys .TE .PP .\"CHECK - XXX TAPE 2: .TS n n n l. Tape file Record size Records** Contents _ 0 10240 4500 \fItar\fP dump of /usr/src, excepting include and sys .TE .FS ** The number of records in each tape file are approximate and do not correspond to the actual tape. .FE .DE .NH 2 UNIX device naming .PP UNIX has a set of names for devices which are different from the DEC names for the devices, viz.: The disk and tape names used by the bootstrap and the system are: .DS .TS l l. RK06, RK07 disks hk RL01, RL02 disks rl UDA disks ra RC25 disks ra RD51/52/53 disks ra MSCP disks ra RM02/03/05 xp RP04/05/06 xp SMD disks xp TM02/03, TE16, TU45, TU77 tapes ht TE10/TM11 tapes tm TS11 tapes ts .TE .DE .DS Additionally, the following non-DEC devices are also supported: .TS l l. Eaton BR1538/BR1711 br SI 9500, CDC 9766 si Ampex Capricorn xp SI, CDC 9775 xp SI 6100, Fujitsu Eagle 2351A xp Emulex SC01B or SI 9400, Fujitsu 160 xp Emulex SC-21, Ampex xp Diva Comp V, Ampex 9300 xp .TE .DE The generic SMD disk driver, \fIxp\fP, will handle most types of SMD disks on one or more controllers (even different types on the same controller). The \fBxp\fP driver handles RM02, RM03, RM05, RP04, RP05 and RP06 disks on DEC, Emulex, Diva, and SI UNIBUS or MASSBUS controllers. .PP The standalone system used to bootstrap the full UNIX system uses device names of the form: .DS \fIxx\|\fP(\fIy\fP,\fIz\fP) .DE where \fIxx\fP is one of \fBhk\fP, \fBht\fP, \fBrk\fP, \fBrl\fP, \fBrp\fP, \fBtm\fP, \fBts\fP, or \fBxp\fP. The value \fIy\fP specifies the device or drive unit to use. The \fIz\fP value is interpreted differently for tapes and disks: for disks it is a block offset for a file system and for tapes it is a file number on the tape.* ** .FS * Note that while a tape file consists of a single data stream, the distribution tape(s) have data structures in these files. Although the tapes contain only 8 tape files, they comprise several thousand UNIX files. .FE .FS ** The standalone tape drive unit number is specially encoded to specify both unit number and tape density (BPI). Most tape subsystems either automatically adjust to tape density or have switches on the drives to force the density to a particular setting, but for those which don't the following density select mechanisms may be necessary. The \fBts\fP only operates at 1600BPI, so there is no special unit density encoding. The \fBht\fP will operate at either 800BPI or 1600BPI. Units 0 through 3 correspond to 800BPI, and 4 through 7 to 1600BPI on drives 0 through 3 respectively. The standard DEC \fBtm\fP only supports 800BPI (and hence can't be used with the \*(2B distribution tape), but several widely used \fBtm\fP emulators support 1600BPI and even 6250BPI. Units 0 through 3 correspond to 800BPI, 4 through 7 to 1600BPI, and 8 through 11 to 6250BPI on drives 0 through 3 respectively. .FE .PP For example, partition 1 of drive 0 on an RK07 would be ``hk(0,5940)'' (``5940'' is the \fI512-byte sector\fP offset to partition 1, as determined from the manual page .IR hk (4)). When not running standalone, this partition would normally be available as ``/dev/hk0b''. Here the prefix ``/dev'' is the name of the directory where all ``special files'' normally live, the ``hk'' serves an obvious purpose, the ``0'' identifies this as a partition of hk drive number ``0'' and the ``b'' identifies this as partition 1 (where we number from 0, the 0th partition being ``hk0a''). .PP In all simple cases, a drive with unit number 0 (in its unit plug on the front of the drive) will be called unit 0 in its UNIX file name. This is not, however, strictly necessary, since the system has a level of indirection in this naming. If there are multiple controllers, the disk unit numbers will normally be counted sequentially across controllers. This can be taken advantage of to make the system less dependent on the interconnect topology, and to make reconfiguration after hardware failure extremely easy. We will not discuss that now. ** Returning to the discussion of the standalone system, we recall that tapes also took two integer parameters. In the case of a TE16/TU tape formatter on drive 0, the files on the tape have names ``ht(0,0)'', ``ht(0,1)'', etc. Here ``file'' means a tape file containing a single data stream separated by a single tape mark. The distribution tapes have data structures in the tape files and though the first tape contains only 7 tape files, it contains several thousand UNIX files. .PP Each UNIX physical disk is divided into 8 logical disk partitions, each of which may occupy any consecutive cylinder range on the physical device. The cylinders occupied by the 8 partitions for each drive type are specified in section 4 of the programmers manual and in the disk description file /etc/disktab (c.f. \fIdisktab\fP(5)).** .FS ** It is possible to change the partitions by changing the code for the table in the disk driver. Since it's desirable to do this, these tables really should be read off each pack. Unfortunately lack of time, too many other commitments, and a feeling that enough \fIis\fP enough after all prevented the implementation of this feature ... .FE Each partition may be used for either a raw data area such as a swapping area or to store a UNIX file system. It is conventional for the first partition on a disk to be used to store a root file system, from which UNIX may be bootstrapped, but as already mentioned above, the RK06/07 and RM02/03 generic distribution kernels use other partitions because of the small size of the \fIa\fP partitions on those disks. The second partition is traditionally used as a swapping area, and the rest of the disk is divided into spaces for additional ``mounted file systems'' by use of one or more additional partitions. .PP The eighth logical partition of each physical disk also has a conventional usage: it allows access to the entire physical device, including the bad sector forwarding information recorded at the end of the disk (one track plus 126 sectors). It is occasionally used to store a single large file system or to access the entire pack when making a copy of it on another. Care must be taken when using this partition not to overwrite the last few tracks and thereby clobber the bad sector information. .NH 2 UNIX devices: block and raw .PP UNIX makes a distinction between ``block'' and ``raw'' (character) devices. Each disk has a block device interface where the system makes the device byte addressable and you can write a single byte in the middle of the disk. The system will read out the data from the disk sector, insert the byte you gave it and put the modified data back. The disks with the names ``/dev/xx0a'', etc are block devices. There are also raw devices available. These have names like ``/dev/rxx0a'', the ``r'' here standing for ``raw''. Raw devices bypass the buffer cache and use DMA directly to/from the program's I/O buffers; they are normally restricted to full-sector transfers. In the bootstrap procedures we will often suggest using the raw devices, because these tend to work faster. Raw devices are used when making new filesystems, when checking unmounted filesystems, or for copying quiescent filesystems. The block devices are used to mount file systems, or when operating on a mounted filesystem such as the root. .PP You should be aware that it is sometimes important whether to use the character device (for efficiency) or not (because it wouldn't work, e.g. to write a single byte in the middle of a sector). Don't change the instructions by using the wrong type of device indiscriminately. e inherent security problems with such a facility you should read this section carefully if you consider providing such a service. .PP An anonymous account is enabled by creating a user \fIftp\fP. When a client uses the anonymous account a \fIchroot\fP\|(2) system call is performed by the server to restrict the client from moving outside that part of the file system where the user ftp home directory is located. Because a \fIchroodoc/2.10/setup.2.10/2.t 644 3 12 56146 4357275017 7273 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.t 6.2 (Berkeley) 10/1/88 .\" .ds lq `` .ds rq '' .ds LH "Installing/Operating \*(2B .ds RH Bootstrapping .ds CF \*(DY .bp .nr H1 2 .nr H2 0 .bp .LG .B .ce 2. BOOTSTRAP PROCEDURE .sp 2 .R .NL .PP This section explains the bootstrap procedure that can be used to get the kernel supplied with this distribution running on your machine. If you are not currently running \*(Ps it's easiest to do a full bootstrap since \*(Ps has changed so much from all previous versions of UNIX on the PDP but for the really dedicated chapter 3 attempts to describe how to upgrade an existing 2.8BSD or 2.9BSD UNIX system running the \fI1K file system\fP. Chapter 3 also describes how to upgrade an existing \*(Ps system. An understanding of the operations used in a full bootstrap is very helpful in performing an upgrade as well. In either case, it is highly desirable to read and understand the remainder of this document before proceeding. .NH 2 Converting pre-\*(Ps Systems .PP The file system format was changed with 2.8BSD and 2.9BSD (as a kernel option UCB_NKB), where the fundamental \fIlogical\fP block size of the file system was changed from 512 bytes to 1024 bytes. \*(2B uses the same 1Kb file system of 2.[89]BSD. Because of this it is absolutely impossible to do anything except a full bootstrap of \*(2B on any system other than 2.[89]BSD running the 1K file system. It \fIis\fP possible to upgrade a 2.[89]BSD system running the 1K file system, but you will probably want to do a full bootstrap in any case as 2.[89]BSD and \*(2B \fBcannot\fP execute each others binaries and device numbering has changed. .PP The safest route is to use \fItar\fP\|(1) to dump all of your current file systems, do a full bootstrap of \*(2B and then restore user files from the dumps. Sites running 2.9BSD with the 1K file system may use \fIdump\fP\|(8) since 2.9BSD and \*(2B dump formats are identical. There is also an untested version of \fI512restor\fP\|(8) available for V7 sites that need to read old dump tapes. .PP It is also desirable to make a convenient copy of system configuration files for use as guides when setting up the new system; the list of files to save from earlier PDP UNIX systems, found in chapter 3, may be used as a guideline. .NH 2 Booting from tape .PP The tape bootstrap procedure used to create a working system involves the following major steps: .IP 1) Loading the tape bootstrap monitor. .IP 2) Creating a UNIX ``root'' file system system on disk using \fImkfs\fP\|(8).. .IP 3) Restore the full root file system using \fIrestor\fP\|(8). .IP 4) Boot the UNIX system on the new root file system and copy it and an appropriate \fIdead start boot block\fP to your boot device. .IP 5) Build and restore the /usr file system from tape with \fItar\fP\|(1). .IP 6) Restore the include and kernel source from tape. .IP 7) Extract the remaining source from the second tape. .IP 8) Build a \fI/boot\fP configured to locate your root file system for auto-rebooting (see section 4.1). Tailor a version of UNIX to your specific hardware (see section 4.2). .PP Certain of these steps are dependent on your hardware configuration. If your disks require formatting, standard DEC diagnostic utilities will have to be used that are not supplied on the distribution tape. .NH 3 Step 1: loading the tape bootstrap monitor .PP To load the tape bootstrap monitor, first mount the magnetic tape on drive 0 at load point, making sure that the write ring is not inserted. Then use the normal bootstrap ROM, console monitor or other bootstrap to boot from the tape. If no other means are available, the following code can be keyed in and executed at (say) 0100000 to boot from a TM tape drive (the magic number 172526 is the address of the TM-11 current memory address register; an adjustment may be necessary if your controller is at a nonstandard address): .DS .TS l l. 012700 (mov $172526, r0) 172526 010040 (mov r0, -(r0)) 012740 (mov $60003, -(r0)) 060003 000777 (br .) .TE .DE When this is executed, the first block of the tape will be read into memory. Halt the CPU and restart at location 0. .PP The console should type .DS .B \fInn\fPBoot : .R .DE where \fInn\fP is the CPU class on which it believes it is running. The value will be one of 24, 40, 44, 45, 70 or 73, depending on whether separate instruction and data (separate I/D) and/or a UNIBUS map are detected. The CPUs in each class are: .DS .TS c l c c. Class PDP11s Separate I/D UNIBUS map 24 24 - + 40 23, 34, 34A, 40, 60 - - 45 45, 55 + - 44 44 + + 70 70 + + 73 73 + - .TE .DE The bootstrap can be forced to set up the machine for a different class of PDP11 by placing an appropriate value in the console switch register (if there is one) while booting it. The value to use is the PDP11 class, interpreted as an \fIoctal\fP number (use, for example, 070 for an 11/70). \fBWarning:\fP some old DEC bootstraps use the switch register to indicate where to boot from. On such machines, if the value in the switch register indicates an incorrect CPU, be sure to reset the switches immediately after initiating the tape bootstrap. .PP You are now talking to the tape bootstrap monitor. At any point in the following procedure you can return to this section, reload the tape bootstrap, and restart. Through the rest of this section, substitute the correct disk type for \fIdk\fP and the tape type for \fItp\fP. .NH 3 Step 2: creating a UNIX ``root'' file system system .PP Now create the root file system using the following procedures. First determine the size of your root file system from the following table: .DS .TS l l. Disk Root File System Size (1K-byte blocks) br 9120 (T300) 9196 (T200) 9200 (T80) 9130 (T50) hk 4158\(dg ra 7942 (RA60/80/81, RC25) 4850 (RD51/52/53) rl01 5120\(dd rl02 10240\(dd xp 4800 (RM02/RM03)\(dg 4560 (RM05) 5120 (CDC 9775) 4807 (RP04/RP05/RP06) 4800 (Fujitsu Eagle) 4702 (DIVA, Ampex 9300) 8192 (Ampex Capricorn) 5760 (SI Eagle) .TE .sp \(dg These partitions cover what used to be partitions \fIa\fP and \fIb\fP in 2.9BSD. \(dd These partitions cover the entire pack. .DE .PP If the disk on which you are creating a root file system is an \fBxp\fP disk, you should check the drive type register at this time to make sure it holds a value that will be recognized correctly by the driver. There are numbering conflicts; the following numbers are used internally: .DS .TS c l c l. Drive Type Register Drive Assumed Low Byte (standard address: 0776726) 020 RP04 021 RP05 022 RP06 024 RM03 025 RM02 027 RM05 072 Ampex Capricorn 073 SI, CDC 9775 (direct) 074 SI 6100, Fuji Eagle 2351A 075 Emulex SC01B or SI 9400, Fuji 160 076 Emulex SC-21, Ampex 815 cylinder RM05 077 Diva Comp V, Ampex 9300 .TE .DE Check the drive type number in your controller manual, or halt the CPU and examine this register. If the value does not correspond to the actual drive type, you must place the correct value in the switch register after the tape bootstrap is running and before any attempt is made to access the drive. This will override the drive type register. This value must be present at the time each program (including the bootstrap itself) first tries to access the disk. On machines without a switch register, the \fIxptype\fP variable can be patched in memory. After starting each utility but before accessing the disk, halt the CPU, place the new drive type number at the proper memory location with the console switches or monitor, and then continue. The location of \fIxptype\fP in each utility is .\"CHECK - XXX mkfs: 035264, restor: 034140, icheck: 032476 and boot: 0632402 (the location for boot is higher because it relocates itself). Once UNIX itself is booted (see below) you must patch it also. .PP Finally, determine the proper interleaving factors \fIm\fP and \fIn\fP for your disk and CPU combination from the following table. These numbers determine the layout of the free list that will be constructed; the proper interleaving will help increase the speed of the file system. If you have a non-DEC disk that emulates one of the disks listed, you may be able to use these numbers as well, but check that the actual disk geometry is the same as the emulated disk (rather than the controller mapping onto a different physical disk). Also, the rotational speed must be the same as the DEC disk for these numbers to apply. .DS .TS cB s s s s s s s s l l l l l l l l l. Disk Interleaving Factors for Disk/CPU Combinations (\fIm\fP/\fIn\fP) CPU 23 24 34 40 44 45 53 55 DISK RL01/2 7/10 6/10 6/10 6/10 4/10 5/10 4/10 5/10 RK06/7 8/33 7/33 6/33 6/33 4/33 5/33 4/33 5/33 RM02 11/80 10/80 8/80 8/80 6/80 7/80 6/80 7/80 RM03 16/80 15/80 12/80 12/80 8/80 11/80 8/80 11/80 RM05 16/304 15/304 12/304 12/304 8/304 11/304 8/304 11/304 RP04/5/6 11/209 10/209 8/209 8/209 6/209 7/209 6/209 7/209 RA60 21/84 21/84 17/84 17/84 12/84 15/84 12/84 15/84 RA80 16/217 16/217 13/217 13/217 9/217 11/217 9/217 11/217 RA81 26/357 26/357 21/357 21/357 14/357 18/357 14/357 17/357 RD51 1/36 1/36 1/36 1/36 1/36 1/36 1/36 1/36 RQDX2* 2/36 2/36 2/36 2/36 2/36 2/36 2/36 2/36 RQDX3* 7/36 7/36 7/36 7/36 7/36 7/36 7/36 7/36 RC25 15/31 15/31 13/31 13/31 9/31 11/31 9/31 11/31 .TE .TS cB s s s s s l l l l l l. Disk Interleaving Factors for Disk/CPU Combinations (\fIm\fP/\fIn\fP) CPU 60 70 73 83 84 DISK RL01/2 5/10 3/10 4/10 4/10 3/10 RK06/7 5/33 3/33 4/33 4/33 3/33 RM02 7/80 5/80 6/80 6/80 5/80 RM03 11/80 7/80 9/80 9/80 7/80 RM05 11/304 7/304 8/304 8/304 7/304 RP04/5/6 7/209 5/209 6/209 6/209 5/209 RA60 15/84 10/84 12/84 12/84 10/84 RA80 11/217 7/217 9/217 9/217 7/217 RA81 18/357 12/357 14/357 14/357 12/357 RD51 1/36 1/36 1/36 1/36 1/36 RQDX2* 2/36 2/36 2/36 2/36 2/36 RQDX3* 7/36 7/36 7/36 7/36 7/36 RC25 11/31 7/31 9/31 9/31 7/31 .TE .sp * \fIm\fP/\fIn\fP numbers for RD52/53's are based on controller type (RQDX2 or RQDX3) rather than drive type. .DE For example, for an RP06 on an 11/70, \fIm\fP is 7 and \fIn\fP is 209. See \fImkfs\fP\|(8) for more explanation of the values of \fIm\fP and \fIn\fP. For \fIm\fP/\fIn\fP numbers for other drive types see \fI/etc/disktab\fP. .PP Then run the standalone version of the \fImkfs\fP (8) program. In the following procedure, substitute the correct types for \fItp\fP and \fIdk\fP and the size determined above for \fIsize\fP: .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,1) (\fImkfs\fP is tape file 1) \fBMkfs\fP \fBfile system:\fP \fIdk\|\fP(0,0) (root is the first file system on drive 0) \fBfile system size:\fP \fIsize\fP (count of 1024 byte blocks in root) \fBinterleaving factor (m, 5 default):\fP \fIm\fP (interleaving, see above) \fBinterleaving modulus (n, 10 default):\fP \fIn\fP (interleaving, see above) \fBisize = XX\fP (count of inodes in root file system) \fBm/n = \fP\fIm n\fP (interleave parameters) \fBExit called\fP \fInn\fP\fBBoot\fP \fB:\fP (back at tape boot level) .TE .DE You now have an empty UNIX root file system. .NH 3 Step 3: restoring the root file system .PP To restore the root file system onto it, type .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,2) (\fIrestor\fP is tape file 2) \fBRestor\fP \fBTape?\fP \fItp\|\fP(0,4) (root \fIdump\fP is tape file 4) \fBDisk?\fP \fIdk\|\fP(0,0) (into root file system) \fBLast chance before scribbling on disk.\fP .B end of tape Exit called \fInn\fPBoot \fB:\fR (back at tape boot level) .R .TE .DE If you wish, you may use the \fIicheck\fP program on the tape, \fItp\|\fP(0,3), to check the consistency of the file system you have just installed. .NH 3 Step 4: booting UNIX .PP You are now ready to boot from disk. It is best to read the rest of this section first, since some systems must be patched while booting. Then type: .DS .TS lw(1.5i) l. \fB:\fP\fIdk\|\fP(0,0)\fIdk\^\fPunix (bring in \fIdk\^\fPunix off root system) .TE .DE The standalone boot program should then read \fIdk\^\fPunix from the root file system you just created, and the system should boot: .DS .B .\"CHECK \*(2B BSD UNIX #1: Sun Sep 6 01:33:03 PDT 1987 root@kazoo.Berkeley.EDU:/usr/src/sys/GENERIC phys mem = \fI???\fP avail mem = \fI???\fP user mem = \fI???\fP configure system \fI\&... information about available devices ...\fP .R (Information about various devices will print; most of them will probably not be found until the addresses are set below.) .B erase=^?, kill=^U, intr=^C # .R .DE If you are booting from an \fIxp\fP with a drive type that is not recognized, it will be necessary to patch the system before it first accesses the root file system. Halt the processor after it has begun printing the version string but before it has finished printing the ``mem = ...'' strings. Place the drive type number corresponding to your drive .\"CHECK - XXX at location 052624; the addresses for drive 1 is 052640. If you plan to use any drives other than 0 before you recompile the system, you should patch these locations. Make the patches and continue the CPU. The value before patching must be zero. If it is not, you have halted too late and should try again. .PP UNIX itself then runs for the first time and begins by printing out a banner identifying the release and version of the system that is in use and the date that it was compiled. .PP Next the .I mem messages give the amount of real (physical) memory, the amount of memory left over after the system has allocated various data structures, and the amount of memory available to user programs in bytes. On an 11/23 with no clock control register, a message ``no clock!!'' will print next; this is a reminder to turn on the clock switch if it is not already on, since UNIX cannot enable the clock itself. .PP The information about different devices being attached or not being found is produced by the \fIautoconfig\fP\|(8) program. Most of this is not important for the moment, but later the device table, \fI/etc/dtab\fP, can be edited to correspond to your hardware. However, the tape drive of the correct type should have been detected and attached. .PP The \*(lqerase ...\*(rq message is part of /.profile that was executed by the root shell when it started. This message is present to remind you that the line character erase, line erase, and interrupt characters are set to be what is standard on DEC systems; this insures that things are consistent with the DEC console interface characters. .PP UNIX is now running single user on the installed root file system, and the `UNIX Programmer's Manual' applies. The next section tells how to complete the installation of distributed software on the /usr file system. The `#' is the prompt from the shell, and lets you know that you are the super-user, whose login name is \*(lqroot\*(rq. .PP There are a number of copies of \fIunix\fP on the root file system, one for each possible type of root file system device. All of the systems were created from \fI/genunix\fP by the shell script \fI/GENALLSYS\fP. If you had to patch the \fIxp\fP type as you booted, you may want to use \fIadb\fP (see .IR adb (1)) to make the same patch in a copy of \fIxpunix\fP. See \fI/GENALLSYS\fP for examples of using \fIadb\fP to patch the system. See appendix A for a description of the generic kernels. The system load images for disk types other than your own can be removed. .PP The disk with the new root file system on it will not be bootable directly until the block 0 bootstrap program for the disk has been installed. There are copies of the bootstraps in /mdec. Use \fIdd\fP\|(1) to copy the right boot block onto block 0 of the disk; the first form of the command is for small disks (\fBrk\fP, \fBrl\fP) and the second form for disks with multiple partitions (\fBhk\fP, \fBrp\fP, \fBxp\fP), substituting as usual for \fIdk\fP: .DS \fB#\fP dd if=/mdec/\fIboot\fP of=/dev/r\fIdk\^\fP0h count=1 or \fB#\fP dd if=/mdec/\fIboot\fP of=/dev/r\fIdk\^\fP0a count=1 .DE Block zero bootstraps and the devices they support are: .DS .TS l l l. boot driver devices _ bruboot br Eaton BR1538/BR1711 hkuboot hk RK06/07 rauboot ra RA60/80/81, RC25, RD51/52/53, RX50 rkuboot rk RK05 rluboot rl RL01/02 si95uboot si SI 9500, CDC 9766 dvhpuboot xp Diva Comp V, Ampex 9300 hpuboot xp RP04/05/06 rm03uboot xp RM02/03 rm05uboot xp RM05 or SI 9500, CDC 9766 si51uboot xp SI 6100, Fujitsu Eagle 2351A si94uboot xp Emulex SC01B or SI 9400, Fujitsu 160 .TE .DE Once this is done, booting from this disk will load and execute the block 0 bootstrap, which will in turn load /boot (actually, the boot program on the file system starting at block zero of the disk, which is normally root). The console will print .DS .TS lw(1.5i) l. \fB>boot\fP (printed by some block 0 boots) .B \fInn\fPBoot \fR(printed by /boot)\fP : .R .TE .DE The '>' is the prompt from the first bootstrap. It automatically boots /\fIboot\fP for you; if /\fIboot\fP is not found, it will prompt again and allow another name to be tried. It is a very small and simple program, however, and can only boot the second-stage boot from the first file system. Once /boot is running and prints its ``: '' prompt, boot unix as above, using \fIdk\^\fPunix or unix as appropriate. .PP N.B. some primary bootstraps have no prompt because of space considerations (and some, like the RA boot, can't even ask for alternate program names.) No diagnostic message results if the file cannot be found, and no provision is made for correcting typographical errors when entering alternate names. Hitting a return will cause an error and allow restarting. .NH 3 Step 5: setting up the /usr file system .PP First set a shell variable to the name of your disk, so the commands we give will work regardless of the disk you have; do one of the following: .DS .TS l l. \fB#\fP disk=hk (if you have RK06's or RK07's) \fB#\fP disk=rl (if you have RL01's or RL02's) \fB#\fP disk=ra (if you have UDA50 or other MSCP storage module drives) \fB#\fP disk=xp (if you have an RP06, RM03, RM05, or other SMD drive) .TE .DE .PP The next thing to do is to extract the rest of the data from the tape. You might wish to review the disk configuration information in section 4.3 before continuing; you will have to select a partition to restore the /usr file system into which is at least \fB25\fP Megabytes in size (this is just barely enough for the system binaries and such and leaves no room for the system source.) The partitions used below are those most appropriate in size. Find the disk you have in the following table and execute the commands in the right hand portion of the table: .DS .TS l l. DEC RM02/03 \fB#\fP name=xp0c; type=rm03 DEC RM05 \fB#\fP name=xp0e; type=rm05 DEC RP04/05 \fB#\fP name=xp0c; type=rp04 DEC RP06 \fB#\fP name=xp0c; type=rp06 DEC RK07 \fB#\fP name=hk0c; type=rk07 DEC RA60 \fB#\fP name=ra0c; type=ra60 DEC RA80 \fB#\fP name=ra0c; type=ra80 DEC RA81 \fB#\fP name=ra0c; type=ra81 DEC RC25 \fB#\fP name=ra0c; type=rc25 DEC RD52 \fB#\fP name=ra0g; type=rd52-rqdx\fIn\fP* DEC RD53 \fB#\fP name=ra0d; type=rd53-rqdx\fIn\fP* - CDC 9766 \fB#\fP name=xp0e** CDC 9775 \fB#\fP name=xp0e** AMPEX 300M \fB#\fP name=xp0e** FUJITSU 160M \fB#\fP name=xp0d** FUJITSU 2351A \fB#\fP name=xp0d** AMPEX 330M \fB#\fP name=xp0c** .TE .FS * The type of controller the RD52 and RD53 are on (RQDX2 or RQDX3) must be specified for proper file system free list spacing to be computed. If you don't know what controller your RD is on, it is all right to guess, though the created file system may not perform as well. .FE .FS ** Unfortunately the \fInewfs\fP(8) program is relatively primitive and doesn't know the free list spacing for these non-DEC drives. An appropriate \fImkfs\fP(8) command will have to be substituted for the \fInewfs\fP command specified below. See \fI/etc/disktab\fP for [hopefully] appropriate free list \fIm/n\fP numbers for some non-DEC disks. .FE .DE Find the tape you have in the following table and execute the commands in the right hand portion of the table: .DS .TS l l. DEC TM02/03, TE16/TU45/TU77 \fB#\fP cd /dev; MAKEDEV ht0; sync DEC TS11, TU80/TS05 \fB#\fP cd /dev; MAKEDEV ts0; sync DEC TM11, TU10/TE10/TS03 \fB#\fP cd /dev; MAKEDEV tm0; sync EMULEX TC11 \fB#\fP cd /dev; MAKEDEV tm0; sync .TE .DE Then execute the following commands: .br .ne 5 .sp .DS .TS lw(2i) l. \fB#\fP date \fIyymmddhhmm\fP (set date, see \fIdate\fP\|(1)) \&.... \fB#\fP passwd root (set password for super-user) \fBNew password:\fP (password will not echo) \fBRetype new password:\fP \fB#\fP hostname \fImysitename\fP (set your hostname) \fB#\fP newfs ${name} ${type} (create empty user file system) (this takes a few minutes) \fB#\fP mount /dev/${name} /usr (mount the usr file system) \fB#\fP cd /usr (make /usr the current directory) \fB#\fP mt rew \fB#\fP mt fsf 5 \fB#\fP tar xpbf 20 /dev/rmt12 (extract all of usr except usr/src) (this takes about 15-20 minutes) .TE .DE The data on the sixth tape file has now been extracted. All that remains on the first tape is a small archive containing source for the kernel and include files. .DS .TS lw(2i) l. \fB#\fP mt fsf (position tape at beginning of next tape file) \fB#\fP mkdir src (make directory for source) \fB#\fP cd src (make /usr/src the current directory) \fB#\fP tar xpbf 20 /dev/rmt12 (extract the system and include source) (this takes about 5-10 minutes) \fB#\fP cd / (back to root) \fB#\fP chmod 755 / /usr /usr/src /usr/src/sys \fB#\fP rm \-f sys \fB#\fP ln \-s usr/src/sys sys (make a symbolic link to the system source) \fB#\fP umount /dev/${name} (unmount /usr) .TE .DE .PP The first tape has been been completely loaded. You can check the consistency of the /usr file system by doing .DS \fB#\fP fsck /dev/r${name} .DE The output from .I fsck should look something like: .DS .B ** /dev/r\fIxx\fP0h ** Last Mounted on /usr ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 671 files, 3497 used, 137067 free .R .DE .PP If there are inconsistencies in the file system, you may be prompted to apply corrective action; see the document describing .I fsck for information. .PP To use the /usr file system, you should now remount it by saying .DS \fB#\fP /etc/mount /dev/${name} /usr .DE .NH 3 Step 7: extracting remaining source from the second tape .PP You can then extract the source code for the commands from the second distribution tape (except on RK07's, RM03's, and RD52's this will fit in the /usr file system): .DS \fB#\fP cd /usr/src \fB#\fP tar xpb 20 .DE If you get an error at this point, most likely it was a problem with tape positioning. You can reposition the tape by rewinding it. .NH 2 Additional conversion information .PP After setting up the new \*(2B filesystems, you may restore the user files that were saved on tape before beginning the conversion. Note that the \*(2B \fIrestor\fP program does its work by accessing the raw file system device and depositing inodes in the appropriate locations on disk. This means that file system dumps might not restore correctly if the characteristics of the file system have changed (eg. if you're restoring a dump of a file system into a file system smaller than the original.) To restore a dump tape for, say, the /a file system something like the following would be used: .DS \fB#\fP restor r /dev/xp1e .DE .PP If \fItar\fP images were written instead of doing a dump, you should be sure to use the `p' option when reading the files back. No matter how you restore a file system, be sure and check its integrity with \fIfsck\fP when the job is complete. ry, the amount of memory left over after the system has allocated various data structures, and the amount of memory available to user programs in bytes. On an 11/23 with no clock control register, a message ``no clock!!'' will print next; this is a reminder to turn on the clock switch if it is not already on, since UNIX cannot enable the clock itself. .PP The information about different devices being attachdoc/2.10/setup.2.10/3.t 644 3 12 52533 4357542316 7267 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)3.t 6.2 (Berkeley) 10/1/88 .\" .ds lq `` .ds rq '' .ds LH "Installing/Operating \*(2B .ds RH "Upgrading a PDP UNIX System .ds CF \*(DY .LP .nr H1 3 .nr H2 0 .bp .LG .B .ce 3. UPGRADING A 2.8BSD, 2.9BSD, OR \*(Ps SYSTEM .sp 2 .R .NL .PP Begin by reading the document ``Changes to the Kernel in \*(2B'' to get an idea of how the system changes will affect your local modifications. If you have local device drivers, see the file \fI/sys/OTHERS/README\fP for hints on how to integrate your drivers into \*(2B. .PP Section 3.1 provides an overview of upgrading from \*(Ps. Section 3.2 offers discouraging words about trying to upgrade from either 2.8BSD or 2.9BSD. Section 3.3 lists the files to be saved as part of the conversion process. Section 3.4 describes the bootstrap process. Section 3.5 discusses the merger of the saved files back into the new system. Section 3.6 provides general hints on possible problems to be aware of when converting from \*(Ps to \*(2B. .NH 2 Upgrading from \*(Ps .PP If you are running \*(Ps, upgrading your system involves replacing your kernel and system utilities. Binaries compiled under \*(Ps will work without recompilation under \*(2B, though they may run faster and use less memory if they are relinked. .PP The easiest way to convert to \*(2B (depending on your file system configuration) is to create new root and /usr file systems from the distribution tape on unused disk partitions, boot the new system, and then copy any local utilities from your old root and /usr file systems into the new ones. All user file systems and binaries can be retained unmodified. .NH 2 Upgrading from 2.8BSD or 2.9BSD .PP If you are running 2.[89]BSD running the \fI1K file system\fP, upgrading your system involves replacing your kernel and system utilities. Binaries compiled under 2.[89]BSD will \fBnot\fP work without recompilation under \*(2B. This means that you will not be able to upgrade gradually, but will have to create a new root containing the new kernel and system binaries. Note that the 2.[89]BSD compiler will \fBnot\fP be able to compile the \*(2B kernel and will probably fail on a large number of the applications. If you haven't caught on yet: you better have a \fBGOOD\fP reason for trying this \(em it's going to be a \fBLOT\fP of work. .PP The easiest upgrade path to \*(2B is to do a full bootstrap as described in Chapter 2. If it is absolutely necessary to upgrade in place, \fBmake dumps of all your file systems\fP, create new root and /usr file systems from the distribution tape on unused disk partitions, boot the new system. All user file systems can be retained unmodified. The astute reader will detect that this differs little from a full bootstrap. .NH 2 Files to save .PP The following list enumerates the standard set of files you will want to save and suggests directories in which site specific files should be present. Note that because \*(Ps has changed so radically from previous versions of UNIX on the PDP, many of these files may not exist on your system, and will almost certainly require extensive changes for \*(2B, but it's still handy to have them around as you're configuring \*(2B. This list will likely be augmented with non-standard files you have added to your system. .PP If you do not have enough space to create parallel file systems, you should create a \fItar\fP image of the following files before the new file systems are created. In addition, you should do a full dump before rebuilding the file system to guard against missing something the first time around. .DS .TS l c l. /.cshrc \(dg root csh startup script /.login \(dg root csh login script /.profile \(dg root sh startup script /.rhosts \(dg for trusted machines and users /dev/MAKEDEV \(dd in case you added anything here /dev/MAKEDEV.local * for making local devices /etc/disktab \(dd in case you changed disk partition sizes /etc/dtab \(dd table of devices to attach at boot time /etc/fstab \(dg disk configuration data /etc/ftpusers \(dg for local additions /etc/gateways \(dg routing daemon database /etc/gettytab \(dg getty database /etc/group \(dg group data base /etc/hosts \(dg for local host information /etc/hosts.dir * must be rebuilt with /etc/mkhosts /etc/hosts.pag * must be rebuilt with /etc/mkhosts /etc/hosts.equiv \(dg for local host equivalence information /etc/networks \(dg for local network information /etc/netstart * site dependent network startup script /etc/passwd \(dg user data base /etc/passwd.dir * must be rebuilt with /etc/mkpasswd /etc/passwd.pag * must be rebuilt with /etc/mkpasswd /etc/printcap \(dg line printer database /etc/protocols \(dd in case you added any local protocols /etc/rc * for any local additions /etc/rc.local * site specific system startup commands /etc/remote \(dg auto-dialer configuration /etc/services \(dd for local additions /etc/syslog.conf \(dg system logger configuration /etc/securettys * for restricted list of ttys where root can log in /etc/ttys \(dg terminal line configuration data /etc/ttytype * terminal line to terminal type mapping data /etc/termcap \(dd for any local entries that may have been added /lib \(dd for any locally developed language processors /usr/dict/* \(dd for local additions to words and papers /usr/hosts/MAKEHOSTS \(dg for local changes /usr/include/* \(dd for local additions /usr/lib/aliases \(dg mail forwarding data base /usr/lib/crontab \(dg cron daemon data base /usr/lib/font/* \(dd for locally developed font libraries /usr/lib/lib*.a \(dg for locally libraries /usr/lib/lint/* \(dd for locally developed lint libraries /usr/lib/sendmail.cf \(dg sendmail configuration /usr/lib/tabset/* \(dd for locally developed tab setting files /usr/lib/term/* \(dd for locally developed nroff drive tables /usr/lib/tmac/* \(dd for locally developed troff/nroff macros /usr/lib/uucp/* \(dg for local uucp configuration files /usr/man/manl * for manual pages for locally developed programs /usr/msgs \(dg for current msgs /usr/spool/* \(dg for current mail, news, uucp files, etc. /usr/src/local \(dg for source for locally developed programs /sys/conf/HOST \(dg configuration file for your machine /sys/conf/files.HOST \(dg list of special files in your kernel /*/quotas * file system quota files .TE .sp \(dg\|Files that can be used from \*(Ps without change. \(dd\|Files that need local modifications merged into \*(2B files. *\|Files that require special work to merge and are discussed below. .TE .DE .NH 3 Installing \*(2B .PP The next step is to build a working \*(2B system. This can be done by following the steps in section 2 of this document for extracting the root and /usr file systems from the distribution tape onto unused disk partitions. .PP Once you have extracted the \*(2B system and booted from it, you will have to build a kernel customized for your configuration. If you have any local device drivers, they will have to be incorporated into the new kernel. See section 4.2.3 and ``Building \*(2B UNIX Systems.'' .PP The disk partitions in \*(2B are the same as those in 2.[89]BSD, except for those additions to the \fIRK06/07\fP and \fIRM02/03\fP already mentioned earlier. There are no changes between \*(2B and \*(Ps. If you have changed the disk partition sizes, be sure to make the necessary table changes and boot your custom kernel BEFORE trying to access any of your old file systems! .PP In any case, the manual pages in section 4 of the manual \fIare\fP correct and describe the standard release partition arrangements accurately. Note that this is not an endorsement of those partition layouts. As always, the BUGS section lists disk labeling as a good thing. .NH 2 Merging your files from earlier PDP UNIX systems into \*(2B .PP When your system is booting reliably and you have the \*(2B root and /usr file systems fully installed you will be ready to continue with the next step in the conversion process, merging your old files into the new system. .PP If you saved the files on a \fItar\fP tape, extract them into a scratch directory, say /usr/convert: .DS \fB#\fP mkdir /usr/convert \fB#\fP cd /usr/convert \fB#\fP tar x .DE .PP For sites running \*(Ps, converting local configuration files should be very simple. In general very little has changed between \*(Ps and \*(2B with regard to these files. .PP For sites running a pre-\*(Ps UNIX, there is very little that can be said here as the variety of previous versions of PDP UNIX systems and how they were administered is large. As an example, most previous versions of PDP UNIX systems used the files \fI/etc/ttys\fP and \fI/etc/ttytype\fP to administer which terminals should have login processes attached to them and what the types of terminals those were. Under \*(2B /etc/ttytype has disappeared entirely, its functions subsumed by /etc/ttys along with several new functions. In general you will simply have to use your previous configuration files as references as you configure \*(2B to your site needs. Familiarity with 4.3BSD configuration is very helpful at this point since \*(2B is nearly identical in most of the files listed in the previous section. .PP If you have any homegrown device drivers that use major device numbers reserved by the system you will have to modify the commands used to create the devices or alter the system device configuration tables in /sys/pdp/conf.c. Note that almost all \*(2B major device numbers are different from those in previous PDP UNIX systems. .PP System security changes require adding several new ``well-known'' groups to /etc/group. The groups that are needed by the system as distributed are: .DS .TS l c. name number _ wheel 0 daemon 1 kmem 2 sys 3 tty 4 operator 5 bin 10 staff 20 .TE .DE Only users in the ``wheel'' group are permitted to \fIsu\fP to ``root''. Most programs that manage directories in /usr/spool now run set-group-id to ``daemon'' so that users cannot directly access the files in the spool directories. The special files that access kernel memory, \fI/dev/kmem\fP and \fI/dev/mem\fP, are made readable only by group ``kmem''. Standard system programs that require this access are made set-group-id to that group. The group ``sys'' is intended to control access to system sources, and other sources belong to group ``staff.'' Rather than make user's terminals writable by all users, they are now placed in group ``tty'' and made only group writable. Programs that should legitimately have access to write on user's terminals such as \fItalk\fP and \fIwrite\fP now run set-group-id to ``tty''. The ``operator'' group controls access to disks. By default, disks are readable by group ``operator'', so that programs such as \fIdf\fP can access the file system information without being set-user-id to ``root''. .PP Several new users have also been added to the group of ``well-known'' users in /etc/passwd. The current list is: .DS .TS l c. name number _ root 0 daemon 1 operator 2 nobody 10 uucp 66 .TE .DE The ``daemon'' user is used for daemon processes that do not need root privileges. The ``operator'' user-id is used as an account for dumpers so that they can log in without having the root password. By placing them in the ``operator'' group, they can get read access to the disks. The ``uucp'' login has existed long before \*(2B, and is noted here just to provide a common user-id. The password entry ``nobody'' has been added to specify the user with least privilege. .PP After installing your updated password file, you must run \fImkpasswd\fP\|(8) to create the \fIndbm\fP password database. Note that \fImkpasswd\fP is run whenever \fIvipw\fP\|(8) is run. .PP The format of the cron table, /usr/lib/crontab, has been changed to specify the user-id that should be used to run a process. The userid ``nobody'' is frequently useful for non-privileged programs. .PP Some of the commands previously in /etc/rc.local have been moved to /etc/rc; several new functions are now handled by /etc/rc.local. You should look closely at the prototype version of /etc/rc.local and read the manual pages for the commands contained in it before trying to merge your local copy. Note in particular that \fIifconfig\fP has had many changes, and that host names are now fully specified as domain-style names (e.g, monet.Berkeley.EDU). .PP The C library and system binaries on the distribution tape are compiled with versions of \fIgethostbyname\fP and \fIgethostbyaddr\fP which use ndbm host table lookup routines instead of the name server. You must run \fImkhosts\fP\|(8) to create the \fIndbm\fP host table database from \fI/etc/hosts\fP. It's not clear that the name server could ever be made to run on a PDP. A copy of the 4.3BSD name server is provided in /usr/src/etc/PORT/named.tar.Z for those brave souls with a masochistic bent. .PP If you want to compile your system to use the name server lookup routines instead of the ndbm host table, you will need to modify /usr/src/lib/libc/Makefile according to the instructions there and then recompile all of the system and local programs (see section 6.5). .PP The format of /etc/ttys has changed, see \fIttys\fP\|(5) for details. It now includes the terminal type and security options that were previously placed in /etc/ttytype and /etc/securettys. .PP There is a new version of \fIsyslog\fP that uses a more generalized facility/priority scheme. This has changed the format of the syslog.conf file. See \fIsyslogd\fP\|(8) for details. It is used by many of the system daemons to monitor system problems more closely, for example network routing changes. .PP If you are using the name server, your \fIsendmail\fP configuration file will need some minor updates to accommodate it. See the ``Sendmail Installation and Operation Guide'' and the sample \fIsendmail\fP configuration files in /usr/src/usr.lib/sendmail/nscf. Be sure to regenerate your sendmail frozen configuration file after installation of your updated configuration file. Again, it must be emphasized that it is probably an impossible task to port the 4.3BSD name server to the PDP. At the very least a more recent distribution than the standard 4.3BSD distribution should be obtained since several ``memory leaks'' have been sealed in recently distributed patches. .PP The spooling directories saved on tape may be restored in their eventual resting places without too much concern. Be sure to use the `p' option to \fItar\fP so that files are recreated with the same file modes: .DS \fB#\fP cd /usr \fB#\fP tar xp msgs spool/mail spool/uucp spool/uucppublic spool/news .DE .PP The ownership and modes of two of these directories \fIat\fP now runs set-user-id ``daemon'' instead of root. Also, the uucp directory no longer needs to be publicly writable, as \fItip\fP reverts to privileged status to remove its lock files. After copying your version of /usr/spool, you should do: .DS \fB#\fP chown \-R daemon /usr/spool/at \fB#\fP chown \-R root /usr/spool/uucp \fB#\fP chgrp \-R daemon /usr/spool/uucp \fB#\fP chmod \-R o\-w /usr/spool/uucp .DE .PP Whatever else is left is likely to be site specific or require careful scrutiny before placing in its eventual resting place. Refer to the documentation and source code before arbitrarily overwriting a file. .NH 2 Hints on converting from previous PDP UNIX systems to \*(2B .PP This section summarizes some of the significant changes in \*(2B from previous PDP UNIX systems. It does not include changes in the network; see chapter 5 for information on setting up the network. .PP The mailbox locking protocol has changed; it now uses the advisory locking facility to avoid concurrent update of users' mail boxes. If you have your own mail interface, be sure to update its locking protocol. .PP The kernel's limit on the number of open files has been increased from 20 to 30. It is now possible to change this limit almost arbitrarily (there used to be a hard limit of 20). The standard I/O library autoconfigures to the kernel limit. Note that file (``_iob'') entries may be allocated by \fImalloc\fP from \fIfopen\fP; this allocation has been known to cause problems with programs that use their own memory allocators. This does not occur until after 20 files have been opened by the standard I/O library. .PP \fISelect\fP can be used with at most 32 descriptors although this limit probably wouldn't require an amazing amount of effort to change since select uses arrays of \fBlong\fPs for the bit fields rather than single \fBlong\fPs. Programs that used \fIgetdtablesize\fP as their first argument to \fIselect\fP will no longer work correctly. Usually the program can be modified to correctly specify the number of bits in a \fBlong\fP. See .IR select (2). .PP Old core files will not be intelligible by the current debuggers because of numerous changes to the user structure and because the kernel stack has been enlarged. The \fIa.out\fP header that was in the user structure is no longer present. Locally-written debuggers that try to check the magic number will need modification. .PP \fIFind\fP now has a database of file names, constructed once a week from \fIcron\fP. To find a file by name only, the command \fIfind name\fP will look in the database for files that match the name. This is much faster than \fIfind / \-name name \-print\fP. .PP Files may not be deleted from directories having the ``sticky'' (ISVTX) bit set in their modes except by the owner of the file or of the directory, or by the superuser. This is primarily to protect users' files in publicly-writable directories such as \fI/tmp\fP and \fI/usr/tmp\fP. All publicly-writable directories should have their ``sticky'' bits set with ``chmod +t.'' .PP The include file \fI\fP has returned to \fI/usr/include\fP, and again contains the definitions for the C library time routines of \fIctime\fP\|(3). Note, once your system is installed and running, you should make sure that you recompile and reinstall the directory \fIusr/src/etc/tzone\fP. Read through the Makefile first, if you're not located on the West Coast you will have to change it. This directory is an addition since 4.3BSD, and is intended to solve the Daylight Savings Time problems once and for all. .PP The \fIcompact\fP and \fIuncompact\fP programs have been supplanted by the faster \fIcompress\fP. If your user population has \fIcompact\fPed files, you will want to install \fIuncompact\fP found in /usr/src/old/compact. .PP And again, \fB\*(Ps and \*(2B are not binary compatible with any previous PDP UNIX system\fP. .PP If you want to use \fIps\fP after booting a new kernel, and before going multiuser, you must initialize its name list database by running \fIps \-U\fP. .NH 2 Hints on possible problems upgrading from the first release of \*(2B .NH 3 New ndbm DBLKSIZ. .PP .B DBLKSIZ in .RI < ndbm.h > was changed from 4096 to 512. This won't affect any program at the source level but does cause a change in the database format. This means that old binaries won't be able to cope with new databases and vice versa. .PP The simplest way to deal with this incompatibility is simply to rebuild all your databases from the source data. In particular, you should be sure you rebuild .IR /etc/passwd , .IR /etc/hosts , and .I /usr/lib/aliases databases via the commands: .IR "/etc/mkpasswd /etc/passwd" , .IR "/etc/mkhosts /etc/hosts" , and .IR /usr/ucb/newaliases . .NH 3 New man system .PP The manual system has been completely rearranged to track the changes going on in 4BSD. The setup is essentially the same as that in the .B 4.3BSD-TAHOE distribution with the manual source in /usr/src/man. .PP The eventual goal of the manual system reorganization in 4BSD is to put the individual manual source pages with the program source and install the nroff preprocessed copies in /usr/man/cat* just as the binaries themselves are installed in the various binary directories. (Manual pages for /usr/new and /usr/local are expected to be installed in /usr/new/man and /usr/local/man respectively.) .PP This has two advantages: 1. manual source is unified with program source, and 2. this saves something like 5Mb in /usr. The disadvantages are that 1. you'll have to edit every Makefile for source you receive from various places to install only preprocessed copies, and 2. if you ever want to laser-print a manual page you'll have to dig through the sources to find the manual source. .NH 3 NMOUNT lowered .PP The value of .B NMOUNT in .I /sys/h/param.h has been lowered from 10 to 5 in the distribution system. This will be too small for many sites. See Appendix A for an explanation of how to reconfigure .BR NMOUNT . .NH New /etc/rc startup scripts .PP .I /etc/rc and .I /etc/rc.local have changed fairly significantly, and .PP .I /etc/netstart has been added to configure site specific network features (much of this was pulled from the old rc.local). .I /etc/netstart looks though the file /usr/include/sys/localopts.h for the site configuration constant .B UCB_NET to determine whether to try to turn on networking or not. (/usr/include/sys/localopts.h is created by /sys/conf/config when a new kernel is configured.) This really isn't a very good method since localopts.h may not correspond to the running kernel. A much better way would be to use a tiny program which attempts to create a socket and returns an error if EPROTONOSUPPORT is returned by the kernel. .NH New user and group ``bin'' .PP The new user and group ``bin'' have been created for installing most system binaries. Unfortunately there wasn't enough time to change all the Makefiles to use the new uid and gid, but at least new 4BSD programs that you port won't have to have their Makefiles changed ... er installing your updated password file, you must run \fImkpasswd\fP\|(8) to create the \fIndbm\fP password database. Note that \fImkpasswd\fP is run whenever \fIvidoc/2.10/setup.2.10/4.t 644 3 12 71440 4321716724 7263 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)4.t 6.2 (Berkeley) 10/1/88 .\" .de IR \fI\\$1\fP\|\\$2 .. .ds LH "Installing/Operating \*(2B .nr H1 4 .nr H2 0 .ds CF \*(DY .ds RH "System setup .bp .LG .B .ce 4. SYSTEM SETUP .sp 2 .R .NL .PP This section describes procedures used to set up a PDP UNIX system. These procedures are used when a system is first installed or when the system configuration changes. Procedures for normal system operation are described in the next section. .NH 2 Creating a UNIX boot .PP The version of \fI/boot\fP distributed with the system is set up to boot \fIxp(0,0)unix\fP. If you want to boot from a different file system easily and have auto-reboot supported, you will have to recompile the boot. This is done very simply as follows: .DS \fB#\fP cd /sys/pdpstand \fB#\fP make clean \fB#\fP make RB_DEFNAME="\fIdk\fP(\fIunit\fP,\fPoffset\fP)unix" boot \fB#\fP make install .DE Where \fIdk\fP is the two letter code for the device you want to auto-boot from, \fIunit\fP is the slave unit of said device, and \fIoffset\fP is the offset in \fI512-byte blocks\fP from the beginning of the selected disk, or the file number of the selected tape (note that we can't recommend auto-booting from tape, but it is possible.) .NH 2 Kernel configuration .PP This section briefly describes the layout of the kernel code and how files for devices are made. .NH 3 Kernel organization .PP As distributed, the kernel source is in a separate tar image. The source may be physically located anywhere within any file system so long as a symbolic link to the location is created for the file /sys (many files in /usr/include are normally symbolic links relative to /sys). In further discussions of the system source all path names will be given relative to /sys. .PP The directory /sys/sys contains the mainline machine independent operating system code. Files within this directory are conventionally named with the following prefixes: .DS .TS lw(1.0i) l. init_ system initialization kern_ kernel (authentication, process management, etc.) sys_ system calls and similar tty_ terminal handling ufs_ file system uipc_ interprocess communication vm_ memory management .TE .DE .PP The remaining directories are organized as follows: .DS .TS lw(1.0i) l. /sys/h machine independent include files /sys/conf site configuration files and basic templates /sys/net network independent, but network related code /sys/netinet DARPA Internet code /sys/netimp IMP support code /sys/netns Xerox NS support code /sys/pdp PDP specific mainline code /sys/pdpif PDP network interface code /sys/pdpmba PDP MASSBUS device drivers and related code /sys/pdpuba PDP UNIBUS device drivers and related code .TE .DE .PP Many of these directories are referenced through /usr/include with symbolic links. For example, /usr/include/sys is a symbolic link to /sys/h. The system code, as distributed, is mostly independent of the include files in /usr/include. Unfortunately not all references to /usr/include have been eradicated, so compiling the system requires the /usr file system to be mounted. .NH 3 Devices and device drivers .PP Devices supported by UNIX are implemented in the kernel by drivers whose source is kept in /sys/pdp, /sys/pdpuba, or /sys/pdpmba. These drivers are loaded into the system when included in a cpu specific configuration file kept in the conf directory. Devices are accessed through special files in the file system, made by the .IR mknod (8) program and normally kept in the /dev directory. For all the devices supported by the distribution system, the files in /dev are created by the /dev/MAKEDEV shell script. .PP Determine the set of devices that you have and create a new /dev directory by running the MAKEDEV script. First create a new directory /newdev, copy MAKEDEV into it, edit the file MAKEDEV.local to provide an entry for local needs, and run it to generate a /newdev directory. For instance, if your machine has a single DZ11, a single DH11, an RM03 disk, an EMULEX UNIBUS SMD disk controller, an AMPEX 9300 disk, and a TE16 tape drive you would do: .DS \fB#\fP cd / \fB#\fP mkdir newdev \fB#\fP cp dev/MAKEDEV newdev/MAKEDEV \fB#\fP cd newdev \fB#\fP MAKEDEV dz0 dh0 xp0 xp0 ht0 std LOCAL .DE Note the ``std'' argument causes standard devices such as \fI/dev/console\fP, the machine console, \fI/dev/null\fP, \fI/dev/tty\fP, etc. to be created. .PP You can then do .DS \fB#\fP cd / \fB#\fP mv dev olddev ; mv newdev dev \fB#\fP sync .DE to install the new device directory. .NH 3 Building new system images .PP The kernel configuration of each UNIX system is described by a single configuration file, stored in the \fI/sys/conf\fP directory. The format of this file is very simple consisting of lines starting with an \fIidentifier\fP followed by a \fIvalue\fP. Blank lines and anything past a ``#'' (including the #) are comments. This file is processed by the shell script \fIconfig\fP in the same directory. The manual pages in section 4 of the UNIX manual specify the configuration lines necessary for various devices. A comprehensive list of system options with descriptions of their meanings and effects can be found in appendix A. .PP The configuration file \fIGENERIC\fP in the conf directory was used to build the generic distribution kernel. To build a local configuration file, copy GENERIC to a new file \fISYSTEM\fP, edit \fISYSTEM\fP for your local system configuration, and then type "./config \fISYSTEM\fP". This will create the directory \fI../SYSTEM\fP and copy specially edited files into based on the definitions in \fISYSTEM\fP. Change directory into the new system directory and type "make unix"*, .FS * note that non-separate systems are not currently supported .FE "make sunix" or "make nsunix", to make a non-separate I&D, a separate I&D, or a networking separate I&D system. .DS \fB#\fP cp GENERIC \fISYSTEM\fP \fB#\fP TERM=\fIterminal_type\fP; export TERM \fB#\fP vi \fISYSTEM\fP \fB#\fP ./config \fISYSTEM\fP \fB#\fP cd ../\fISYSTEM\fP \fB#\fP make \fIunix_type\fP .DE .PP Note that the overlay scheme in the Makefile copied into the new system directory may fail because either the \fIbase segment\fP is too small, too large or one or more \fIoverlay segments\fP are too large. If this happens the system objects will have to be re-arranged in the \fIbase\fP and \fIoverlay\fP segments. The comments in the Makefile should make it fairly clear what the restrictions on object placement are in the system. .PP The configured system image ``unix'' should be copied to the root, and then booted to try it out. It is best to name it /newunix so as not to destroy the working system until you're sure it does work: .DS \fB#\fP cp unix /newunix \fB#\fP sync .DE It is also a good idea to keep the previous system around under some other name. To boot the new version of the system you should follow the bootstrap procedures outlined in section 6.1. After having booted and tested the new system, it should be installed as \fI/unix\fP before going into multiuser operation. A systematic scheme for numbering and saving old versions of the system may be useful. .NH 2 Disk configuration .PP This section describes how to layout file systems to make use of the available space and to balance disk load for better system performance. .NH 3 Disk naming and divisions .PP Each physical disk drive can be divided into up to 8 partitions; UNIX typically uses only 3 or 4 partitions. For instance, on an RM03 the first partition, xp0a, is used for a root file system, a backup thereof, or a small file system like, /tmp; the second partition, xp0b, is used for swapping or a small file system; and the third partition xp0c holds a user file system. Many disks can be divided in different ways; for example, the third section (\fIc\fP) of the RM03 could instead be divided into two file systems, using the xp0d and xp0e partitions instead, perhaps holding /usr and the user's files. The last partition (\fIh\fP) almost always describes the entire disk, and can be used for disk-to-disk copies. .sp 2 .RS .PP \fBWarning:\fP for disks on which DEC standard 144 bad sector forwarding is supported, the last track and up to 126 preceding sectors contain replacement sectors and bad sector lists. Disk-to-disk copies should be careful to avoid overwriting this information. See \fIbad144\fP\|(8). Bad sector forwarding is optional in the \fBhk\fP and \fBxp\fP drivers. The partition sizes listed in \fI/etc/disktab\fP that \fInewfs\fP\|(8) uses automatically reserve the maximum amount of room that may be used by bad block forwarding on a disk. .PP Note also that bad144 style bad block forwarding \fIcan not\fP be used with SI controllers on the xp driver as the controllers use their own internal scheme for bad block forwarding, and you can in fact make your disks unusable on the SI controllers if you write anything in the last five cylinders. The partition sizes in \fI/etc/disktab\fP also handle this constraint automatically. .PP The generic distribution kernel does not do bad block forwarding. There is unfortunately no way to run bad144 style bad block forwarding on some of your disks, but not others. As a final bug, the hk and xp drivers do not reread the bad sector forwarding information when disk packs are changed and so will erroneously use bad block forwarding information from the wrong packs! .RE .PP .sp 2 The space available on a disk varies per device. The amount of space available on the common disk partitions is listed in the following table. Not shown in the table are the partitions of each drive devoted to the root file system and the swapping area. .DS .TS center; l l n l n. Type Name Size Name Size _ rm02/03 xp?c 59.5 Mb xp?d 30.6 Mb rm05 xp?c 114.2 Mb xp?e 80.1 Mb rp04/05 xp?c 74.8 Mb rp06 xp?c 74.8 Mb xp?e 157.2 Mb rk06 hk?d 9.1 Mb rk07 hk?c 22.1 Mb ra60 ra?c 94.3 Mb ra?g 76.4 Mb ra80 ra?c 91.2 Mb ra81 ra?c 94.3 Mb ra?g 316.1 Mb .TE .DE .LP Consult the manual pages for the specific drivers for other supported disks or other partitions. .PP Each disk also has a swapping area and a root file system. The distributed system binaries occupy about 34 Megabytes while the major sources occupy another 32 Megabytes. This overflows dual RK07, dual RL02 and single RM03 systems, but fits easily on most other hardware configurations. .PP Be aware that the disks have their sizes measured in disk sectors (512 bytes), while the UNIX file system blocks are 1024 bytes each. Thus if a disk partition has 10000 sectors (disk blocks), it will have only 5000 UNIX file system blocks, and you \fImust\fP divide by 2 to use 5000 when specifying the size to the \fImkfs\fP command for instance. All user programs report disk space in kilobytes and, where needed, disk sizes are always specified in units of sectors. The /etc/disktab file used in making file systems specifies disk partition sizes in sectors; the default sector size may be overridden with the ``se'' attribute. Note that the only sector size currently supported is NBPG as defined in \fI/sys/pdp/machparam.h\fP. .NH 3 Layout considerations .PP There are several considerations in deciding how to adjust the arrangement of things on your disks. The most important is making sure that there is adequate space for what is required; secondarily, throughput should be maximized. Swap space is an important parameter since it defines the maximum process image load that may be run. If, for instance, your swap area were smaller than the amount of main memory available after the kernel took its share, some of you memory would never be used. .PP Many common system programs (C, the editor, the assembler etc.) create intermediate files in the /tmp directory, so the file system where this is stored also should be made large enough to accommodate most high-water marks; if you have several disks, it makes sense to mount this in a ``root'' (i.e. first partition) file system on another disk. All the programs that create files in /tmp take care to delete them, but are not immune to rare events and can leave dregs. The directory should be examined every so often and the old files deleted. .PP The efficiency with which UNIX is able to use the CPU is often strongly affected by the configuration of disk controllers. For general time-sharing applications, the best strategy is to try to split the most actively-used sections among several disk arms. .PP It is critical for good performance to balance disk load. There are at least five components of the disk load that you can divide between the available disks: .DS 1. The root file system. 2. The /tmp file system. 3. The /usr file system. 4. The user files. 5. The paging activity. .DE The following possibilities are ones we have used at times when we had 2, 3 and 4 disks: .TS center doublebox; l | c s s l | lw(5) | lw(5) | lw(5). disks what 2 3 4 _ / 0 0 0 tmp 1 2 3 usr 1 1 1 paging 0+1 0+2 0+2+3 users 0 0+2 0+2 archive x x 3 .TE .PP The most important things to consider are to even out the disk load as much as possible, and to do this by decoupling file systems (on separate arms) between which heavy copying occurs. Note that a long term average balanced load is not important; it is much more important to have an instantaneously balanced load when the system is busy. When placing several busy file systems on the same disk, it is helpful to group them together to minimize arm movement, with less active file systems off to the side. .PP Intelligent experimentation with a few file system arrangements can pay off in much improved performance. It is particularly easy to move the root, the /tmp file system and the swapping area. Note, though, that the disks containing the root and swapping area can never be removed while UNIX is running. Place the user files and the /usr directory as space needs dictate and experiment with the other, more easily moved file systems. .NH 3 Implementing a layout .PP To put a chosen disk layout into effect, you should use the .IR newfs (8) command to create each new file system. Each file system must also be added to the file /etc/fstab so that it will be checked and mounted when the system is bootstrapped. .PP As an example, consider a system with RA80's. On the first RA80, ra0, we will put the root file system in ra0a, and the /usr file system in ra0c, which has enough space to hold it and then some. The /tmp directory will be part of the root file system, as no file system will be mounted on /tmp. If we had only one RA80, we would put user files in the ra0c partition with the system source and binaries. .PP If we had a second RA80, we would place \fI/usr\fP in ra1c. We would put user files in ra0c, calling the file system /mnt. We would put swap on \fIra0b\fP. We would keep a backup copy of the root file system in the \fBra1a\fP disk partition and put /tmp on \fIra1b\fP. \fI/etc/fstab\fP would then contain .DS /dev/ra0a:/:rw:1:1 /dev/ra0b::sw:: /dev/ra0c:/mnt:rw:1:2 /dev/ra1b:/tmp:rw:: /dev/ra1c:/usr:rw:1:2 .DE .PP To make the /mnt file system we would do: .DS \fB#\fP cd /dev \fB#\fP MAKEDEV ra1 \fB#\fP newfs ra1c ra80 \fIcpu_type\fP (information about file system prints out) \fB#\fP mkdir /mnt \fB#\fP mount /dev/ra1c /mnt .DE .NH 2 Configuring terminals .PP If UNIX is to support simultaneous access from directly-connected terminals other than the console, the file \fI/etc/ttys\fP (\fIttys\fP\|(5)) must be edited. .PP Terminals connected via DZ11 interfaces are conventionally named \fBttyDD\fP where DD is a decimal number, the ``minor device'' number. The lines on dz0 are named /dev/tty00, /dev/tty01, ... /dev/tty07. By convention, all other terminal names are of the form \fBtty\fPCX, where C is an alphabetic character according to the type of terminal multiplexor and its unit number, and X is a digit for the first ten lines on the interface and an increasing lower case letter for the rest of the lines. C is defined for the number of interfaces of each type listed below. .DS .TS center box; c c c c c c c c l c n n. Interface Number of lines Number of Type Characters per board Interfaces _ DZ11 see above 8 10 DH11 h-o 16 8 DHU11 S-Z 16 8 pty p-u 16 6 .TE .DE .PP To add a new terminal device, be sure the device is configured into the system and that the special files for the device have been made by /dev/MAKEDEV. Then, enable the appropriate lines of /etc/ttys by setting the ``status'' field to \fBon\fP (or add new lines). Note that lines in \fI/etc/ttys\fP are one-for-one with entries in the file of current users (\fI/etc/utmp\fP), and therefore it is best to make changes while running in single-user mode and to add all of the entries for a new device at once. .PP The format of the /etc/ttys file is completely new in \*(Ps and \*(2B. Each line in the file is broken into four tab separated fields (comments are shown by a `#' character and extend to the end of the line). For each terminal line the four fields are: the device (without a leading /dev), the program /etc/init should startup to service the line (or \fBnone\fP if the line is to be left alone), the terminal type (found in /etc/termcap), and optional status information describing if the terminal is enabled or not and if it is ``secure'' (i.e. the super user should be allowed to login on the line). All fields are character strings with entries requiring embedded white space enclosed in double quotes. Thus a newly added terminal /dev/tty00 could be added as .DS tty00 "/etc/getty std.9600" vt100 on secure # mike's office .DE The std.9600 parameter provided to /etc/getty is used in searching the file /etc/gettytab; it specifies a terminal's characteristics (such as baud rate). To make custom terminal types, consult .IR gettytab (5) before modifying /etc/gettytab. .PP Dialup terminals should be wired so that carrier is asserted only when the phone line is dialed up. For non-dialup terminals from which modem control is not available, you must either wire back the signals so that the carrier appears to always be present, or show in the system configuration that carrier is to be assumed to be present with \fIflags\fP for each terminal device. See .IR dh (4), .IR dhu (4), and .IR dz (4), for details. .PP For network terminals (i.e. pseudo terminals), no program should be started up on the lines. Thus, the normal entry in /etc/ttys would look like .DS ttyp0 none network .DE (Note the fourth field is not needed here.) .PP When the system is running multi-user, all terminals that are listed in /etc/ttys as \fBon\fP have their line are enabled. If, during normal operations, it is desired to disable a terminal line, you can edit the file /etc/ttys to change the terminal's status to \fBoff\fP and then send a hangup signal to the \fIinit\fP process, by doing .DS \fB#\fP kill \-1 1 .DE Terminals can similarly be enabled by changing the status field from \fBoff\fP to \fBon\fP and sending a hangup signal to \fIinit\fP. .PP Note that if a special file is inaccessible when \fIinit\fP tries to create a process for it, init will log a message to the system error logging process (/etc/syslogd) and try to reopen the terminal every minute, reprinting the warning message every 10 minutes. Messages of this sort are normally printed on the console, though other actions may occur depending on the configuration information found in /etc/syslog.conf. .PP Finally note that you should change the names of any dialup terminals to ttyd? where ? is in [0-9a-zA-Z], as some programs use this property of the names to determine if a terminal is a dialup. Shell commands to do this should be put in the /dev/MAKEDEV.local script. .PP While it is possible to use truly arbitrary strings for terminal names, the accounting and noticeably the \fIps\fP\|(1) command make good use of the convention that tty names (by default, and also after dialups are named as suggested above) are distinct in the last 2 characters. Change this and you may be sorry later, as the heuristic \fIps\fP\|(1) uses based on these conventions will then break down and ps will run MUCH slower. .NH 2 Adding users .PP New users can be added to the system by adding a line to the password file /etc/passwd. The procedure for adding a new user is described in .IR adduser (8). .PP You should add accounts for the initial user community, giving each a directory and a password, and putting users who will wish to share software in the same groups. .PP Several guest accounts have been provided on the distribution system; these accounts are for people at Berkeley, Bell Laboratories, and others who have done major work on UNIX in the past. You can delete these accounts, or leave them on the system if you expect that these people would have occasion to login as guests on your system. .NH 2 Site tailoring .PP All programs that require the site's name, or some similar characteristic, obtain the information through system calls or from files located in /etc. Aside from parts of the system related to the network, to tailor the system to your site you must simply select a site name, then edit the file .DS /etc/rc.local .DE The first line in /etc/rc.local, .DS /bin/hostname \fImyname.my.domain\fP .DE defines the value returned by the .IR gethostname (2) system call. If you are running the name server, your site name should be your fully qualified domain name. Programs such as .IR getty (8), .IR mail (1), .IR wall (1), .IR uucp (1), and .IR who (1) use this system call so that the binary images are site independent. .NH 2 Setting up the mail system .PP The mail system consists of the following commands: .DS .TS l l. /bin/mail old standard mail program, \fIbinmail\fP\|(1) /usr/ucb/mail UCB mail program, described in \fImail\fP\|(1) /usr/lib/sendmail mail routing program /usr/spool/mail mail spooling directory /usr/spool/secretmail secure mail directory /usr/bin/xsend secure mail sender /usr/bin/xget secure mail receiver /usr/lib/aliases mail forwarding information /usr/ucb/newaliases command to rebuild binary forwarding database /usr/ucb/biff mail notification enabler /etc/comsat mail notification daemon .TE .DE Mail is normally sent and received using the .IR mail (1) command, which provides a front-end to edit the messages sent and received, and passes the messages to .IR sendmail (8) for routing. The routing algorithm uses knowledge of the network name syntax, aliasing and forwarding information, and network topology, as defined in the configuration file /usr/lib/sendmail.cf, to process each piece of mail. Local mail is delivered by giving it to the program /bin/mail that adds it to the mailboxes in the directory /usr/spool/mail/\fIusername\fP, using a locking protocol to avoid problems with simultaneous updates. After the mail is delivered, the local mail delivery daemon /etc/comsat is notified, which in turn notifies users who have issued a ``\fIbiff\fP y'' command that mail has arrived*. .FS * comsat and biff are only available under systems configured for networking support. .FE .PP Mail queued in the directory /usr/spool/mail is normally readable only by the recipient. To send mail that is secure against any possible perusal (except by a code-breaker) you should use the secret mail facility, which encrypts the mail so that no one can read it. .PP To set up the mail facility you should read the instructions in the file READ_ME in the directory /usr/src/usr.lib/sendmail and then adjust the necessary configuration files. You should also set up the file /usr/lib/aliases for your installation, creating mail groups as appropriate. Documents describing .IR sendmail 's operation and installation are also included in the distribution. .NH 3 Setting up a UUCP connection .PP The version of \fIuucp\fP included in \*(2B is an enhanced version of the one originally distributed with 32/V*. .FS * The \fIuucp\fP included in this distribution is the result of work by many people; we gratefully acknowledge their contributions, but refrain from mentioning names in the interest of keeping this document current. .FE The enhancements include: .IP \(bu 3 support for many auto call units and dialers in addition to the DEC DN11, .IP \(bu 3 breakup of the spooling area into multiple subdirectories, .IP \(bu 3 addition of an \fIL.cmds\fP file to control the set of commands that may be executed by a remote site, .IP \(bu 3 enhanced ``expect-send'' sequence capabilities when logging in to a remote site, .IP \(bu 3 new commands to be used in polling sites and obtaining snap shots of \fIuucp\fP activity, .IP \(bu 3 additional protocols for different communication media. .LP This section gives a brief overview of \fIuucp\fP and points out the most important steps in its installation. .PP To connect two UNIX machines with a \fIuucp\fP network link using modems, one site must have an automatic call unit and the other must have a dialup port. It is better if both sites have both. .PP You should first read the paper in the UNIX System Manager's Manual: ``Uucp Implementation Description''. It describes in detail the file formats and conventions, and will give you a little context. In addition, the document ``setup.tblms'', located in the directory /usr/src/usr.bin/uucp/UUAIDS, may be of use in tailoring the software to your needs. .PP The \fIuucp\fP support is located in three major directories: /usr/bin, /usr/lib/uucp, and /usr/spool/uucp. User commands are kept in /usr/bin, operational commands in /usr/lib/uucp, and /usr/spool/uucp is used as a spooling area. The commands in /usr/bin are: .DS .TS l l. /usr/bin/uucp file-copy command /usr/bin/uux remote execution command /usr/bin/uusend binary file transfer using mail /usr/bin/uuencode binary file encoder (for \fIuusend\fP) /usr/bin/uudecode binary file decoder (for \fIuusend\fP) /usr/bin/uulog scans session log files /usr/bin/uusnap gives a snap-shot of \fIuucp\fP activity /usr/bin/uupoll polls remote system until an answer is received /usr/bin/uuname prints a list of known uucp hosts /usr/bin/uuq gives information about the queue .TE .DE The important files and commands in /usr/lib/uucp are: .DS .TS l l. /usr/lib/uucp/L-devices list of dialers and hard-wired lines /usr/lib/uucp/L-dialcodes dialcode abbreviations /usr/lib/uucp/L.aliases hostname aliases /usr/lib/uucp/L.cmds commands remote sites may execute /usr/lib/uucp/L.sys systems to communicate with, how to connect, and when /usr/lib/uucp/SEQF sequence numbering control file /usr/lib/uucp/USERFILE remote site pathname access specifications /usr/lib/uucp/uucico \fIuucp\fP protocol daemon /usr/lib/uucp/uuclean cleans up garbage files in spool area /usr/lib/uucp/uuxqt \fIuucp\fP remote execution server .TE .DE while the spooling area contains the following important files and directories: .DS .TS l l. /usr/spool/uucp/C. directory for command, ``C.'' files /usr/spool/uucp/D. directory for data, ``D.'', files /usr/spool/uucp/X. directory for command execution, ``X.'', files /usr/spool/uucp/D.\fImachine\fP directory for local ``D.'' files /usr/spool/uucp/D.\fImachine\fPX directory for local ``X.'' files /usr/spool/uucp/TM. directory for temporary, ``TM.'', files /usr/spool/uucp/LOGFILE log file of \fIuucp\fP activity /usr/spool/uucp/SYSLOG log file of \fIuucp\fP file transfers .TE .DE .PP To install \fIuucp\fP on your system, start by selecting a site name (shorter than 14 characters). A \fIuucp\fP account must be created in the password file and a password set up. Then, create the appropriate spooling directories with mode 755 and owned by user \fIuucp\fP, group \fIdaemon\fP. .PP If you have an auto-call unit, the L.sys, L-dialcodes, and L-devices files should be created. The L.sys file should contain the phone numbers and login sequences required to establish a connection with a \fIuucp\fP daemon on another machine. For example, our L.sys file looks something like: .DS adiron Any ACU 1200 out0123456789- ogin-EOT-ogin uucp cbosg Never Slave 300 cbosgd Never Slave 300 chico Never Slave 1200 out2010123456 .DE The first field is the name of a site, the second shows when the machine may be called, the third field specifies how the host is connected (through an ACU, a hard-wired line, etc.), then comes the phone number to use in connecting through an auto-call unit, and finally a login sequence. The phone number may contain common abbreviations that are defined in the L-dialcodes file. The device specification should refer to devices specified in the L-devices file. Listing only ACU causes the \fIuucp\fP daemon, \fIuucico\fP, to search for any available auto-call unit in L-devices. Our L-dialcodes file is of the form: .DS ucb 2 out 9% .DE while our L-devices file is: .DS ACU cul0 unused 1200 ventel .DE Refer to the README file in the \fIuucp\fP source directory for more information about installation. .PP As \fIuucp\fP operates it creates (and removes) many small files in the directories underneath /usr/spool/uucp. Sometimes files are left undeleted; these are most easily purged with the \fIuuclean\fP program. The log files can grow without bound unless trimmed back; \fIuulog\fP maintains these files. Many useful aids in maintaining your \fIuucp\fP installation are included in a subdirectory UUAIDS beneath /usr/src/usr.bin/uucp. Peruse this directory and read the ``setup'' instructions also located there. g process (/etc/syslogd) and try to reopen the terminal every minute, reprinting the warning message every 10 minutes. Messages of this sort are normally printed on the console, though other actions may occur depending on tdoc/2.10/setup.2.10/a.t 644 3 12 47025 4357277377 7361 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)a.t 6.2 (Berkeley) 10/1/88 .\" .de IR \fI\\$1\fP\|\\$2 .. .ds LH "Installing/Operating \*(2B .nr H1 6 .nr H2 0 .ds RH "Appendix A \- bootstrap details .ds CF \*(DY .bp .LG .B .ce APPENDIX A \- KERNEL CONFIGURATION OPTIONS .sp 2 .R .NL .NH 2 Kernel configuration options .PP The \*(2B kernel has a number of parameters and options that can be used to tailor the kernel to site specific needs. This appendix lists the parameters and options used in the kernel. The parameters have numeric values, usually table sizes. The options flags are either defined or undefined (via the values YES or NO respectively.) .PP Prototypes for all the following options can be found in the generic kernel configuration file \fI/sys/conf/GENERIC\fP. The process of configuring a new kernel consists simply of copying the generic configuration file to a new file, \fISYSTEM\fP and then editing the options in \fISYSTEM\fP to reflect your needs. You can treat the items copied from GENERIC as a ``grocery list'', checking off those options you want, crossing out those you don't and setting numeric parameters to reasonable values. .NH 2 Configuring the number of mountable file systems (NMOUNT) .PP Because of time constraints we were unable to move the .B NMOUNT constant into the kernel configuration file where it belongs. .B NMOUNT is used to configure the number of mountable file systems in \*(2B. Since each slot in the kernel mount table takes up close to a half Kb of valuable kernel data space, the distribution kernel comes configured with .B NMOUNT set to 5. This is almost certainly too small for most sites and should be increased to the number of file systems you expect to mount. .PP .B NMOUNT is defined in .IR /sys/h/param.h . If you change its value, you must recompile the kernel (obviously) and the following applications: .IR mount , .IR quotaon , .IR edquota , .IR umount , and .IR df . .NH 2 GENERIC kernel configuration .PP All of the generic kernels support the following devices: .TS l n. Device Number - RK06/07 2 MSCP (RA) Controllers 1 MSCP (RA) Disks 2 RL01/02 2 SMD (XP) Controllers 1 SMD (XP) Disks 2 TE16, TU45, TU77 (HT) Tape drives 1 TM11 (TM) Tape drives 1 TS11 (TS) Tape drives 1 .TE .PP The generic kernels are set up with the following disk drive configurations: .TS l l l n l. Kernel root/pipe swap nswap comments - hkunix /dev/hk0e /dev/hk1a 5940 two drive, 0e covers 0a and 0b raunix /dev/ra0a /dev/ra0b 10032 rlunix /dev/rl0h /dev/rl1h 10240 two drive, no partitions on RLs xpunix /dev/xp0a /dev/xp0b 8878 .TE .PP If these values aren't usable at all, you'll have to patch the kernel before it first accesses any of the disks. Don't do this unless you absolutely have to. It's far better to use the defaults, rebuild a kernel for your specific setup, and then rearrange your file systems. .\"CHECK - XXX .TS l l l. Variable location comments - rootdev 02336 Root device - a file system pipedev 02342 Pipe device - a file system swapdev 02340 Swap device - raw chunk of disk nswap 02350 Size of swap partition .TE .PP .TS l l. Device major*256 - HK 02000 RA 02400 RL 03400 XP 05000 .TE .IR Rootdev , .IR pipedev , and .I swapdev are 256 * device major number + device minor number. Device minor numbers are 8 * drive + partition. .NH 3 GENERIC kernel configuration file .PP .ta 8n 16n 24n 32n 40n 48n 56n 72n 80n .nf # Machine configuration file for 2.10BSD distributed kernel. # # Format: # name value comments # An item's value may be either numerical, boolean or a string; if it's # boolean, use "YES" or "NO" to set it or unset it, respectively. Use # the default value and the comments field as indicators of the type of # field it is. ######################################### # MACHINE DEPENDENT PARAMETERS # ######################################### # Machine type # 2.10 runs on: # 11/24/34/44/53/60/70/73/83/84 # 11/23/35/40/45/50/55 with 18 or 22 bit addressing # 2.10 WILL NOT run on: # T11, 11/03/04/05/10/15/20/21 # 11/23/35/40/45/50/55 with 16 bit addressing # 2.10 networking will run on: # 11/44/53/70/73/83/84 # 11/45/50/55 with 18 bit addressing # # Any QBUS machine using an ABLE Microverter should be treated as # if it were an 11/70. # # You should also make a point of having both floating point hardware and # at least a megabyte of memory, if possible. They aren't that expensive, # and they make a big difference. # # Including UNIBUS map support for machines without a UNIBUS will not cause # a kernel to die. It simply includes code to support UNIBUS mapping if # present. # The define UNIBUS_MAP implements kernel support for UNIBUS mapped # machines. However, a kernel compiled with UNIBUS_MAP does *not* have to # be run on a UNIBUS machine. The define simply includes support for UNIBUS # mapping if the kernel finds itself on a machine with UNIBUS mapping. UNIBUS_MAP YES # include support for UNIBUS mapping # always: 11/44/70/84 # sometimes: 11/24 # never: 11/23/34/35/40/45/50/53/ # 55/60/73/83 # The define Q22 states that the configured system is a 22-bit Q-BUS machine # (if UNIBUS mapping isn't found) and no 18-bit DMA disk or tape devices # exist. If Q22 is defined and an 18-bit DMA disk or tape does exist, reads # and writes to the raw devices will cause DMA transfers to and from user # space which might be above 18-bits (256K) which would cause random # sections of memory (probably the kernel) to be overwritten (for reads). # An 18-bit DH isn't a problem since it never does DMA to user space and # clists (even with UCB_CLIST defined) are never above 18-bits. # # Note, the Q22 define is only effective if the kernel finds itself on a # machine without UNIBUS mapping. Note also that the presence of UNIBUS # mapping is only tested for if UNIBUS_MAP is defined. Q22 NO # 22-bit Qbus with no 18-bit devices # always 11/53/73/83 # sometimes: 11/23 # never: 11/24/34/35/40/44/50/ # 55/60/70/84 # Defining NONFP to NO compiles in support for hardware floating point. # However, this doesn't require that floating point hardware be present. # Defining NONFP to YES will save you a few hundred bytes of text. NONFP NO # if no floating point hardware # Defining FPSIM to YES compiles a floating point simulator into the kernel # which will catch floating point instruction traps from user space. Note # that defining FPSIM to YES will only cost you text space. If you actually # have floating point hardware, the simulator just won't be used. The floating # point simulator is automatically compiled in if PDP11 (below) is GENERIC. FPSIM NO # floating point simulator #LINEHZ 50 # clock frequency European LINEHZ 60 # clock frequency USA # To enable profiling, the :splfix script must be changed to use spl6 instead # of spl7 (see conf/:splfix.profile), also, you have to have a machine with a # supervisor PAR/PDR pair, i.e. an 11/44/45/50/53/55/70/73/83/84, as well # as both a KW11-L and a KW11-P. # # Note that profiling is not currently working. We don't have any plans on # fixing it, so this is essentially a non-supported feature. PROFILE NO # system profiling with KW11P clock # PDP-11 machine type; allowable values are GENERIC, 23, 24, 34, 35, 40, # 44, 45, 50, 53, 55, 60, 70, 73, 83, 84. GENERIC should only be used to # build a distribution kernel. PDP11 GENERIC # distribution kernel #PDP11 44 # PDP-11/44 #PDP11 70 # PDP-11/70 #PDP11 73 # PDP-11/73 ######################################### # GENERAL SYSTEM PARAMETERS # ######################################### IDENT GENERIC # machine name MAXUSERS 4 # maxusers on machine # BOOTDEV is the letter combination denoting the autoboot device, # or NONE if not using the autoboot feature. BOOTDEV NONE # don't autoboot #BOOTDEV dvhp # DIVA Comp/V boot device #BOOTDEV hk6 # rk06 boot device #BOOTDEV hk7 # rk07 boot device #BOOTDEV ra # MSCP boot device #BOOTDEV rl # rl01/02 boot device #BOOTDEV rm # rm02/03/05 boot device #BOOTDEV br # Eaton BR1537/BR1711 boot device #BOOTDEV sc11 # Emulex SC11/B boot device #BOOTDEV sc21 # Emulex SC21 boot device #BOOTDEV si # si 9500 boot device # Timezone, in minutes west of GMT #TIMEZONE 300 # EST #TIMEZONE 360 # CST #TIMEZONE 420 # WST TIMEZONE 480 # PST DST 1 # Daylight Savings Time (1 or 0) # Filesystem configuration # Rootdev, swapdev etc. should be in terms of makedev. For example, # if you have an SMD drive using the xp driver, rootdev would be xp0a, # or "makedev(10,0)". Swapdev would be the b partition, xp0b, or # "makedev(10,1)". The 10 is the major number of the device (the offset # in the bdevsw table in conf.c) and the 0 and 1 are the minor numbers # which correspond to the partitions as described in the section 4 manual # pages. You can also get the major numbers from the MAKEDEV script in # /dev. PIPEDEV makedev(10,0) # makedev(10,0) xp0a ROOTDEV makedev(10,0) # makedev(10,0) xp0a SWAPDEV makedev(10,1) # makedev(10,1) xp0b SWAPLO 0 # swap start address, normally 0 # DUMPROUTINE indicates which dump routine should be used. DUMPDEV # should be in terms of makedev. If DUMPDEV is NODEV no automatic # dumps will be taken, and DUMPROUTINE needs to be set to "nulldev" to # resolve the reference. See param.h and ioconf.c for more information. # DUMPLO should leave room for the kernel to start swapping without # overwriting the dump. DUMPLO 512 # dump start address DUMPDEV NODEV # makedev(10,1) xp0b DUMPROUTINE nulldev # no dump routine. #DUMPROUTINE hkdump # hk driver dump routine #DUMPROUTINE hpdump # hp driver dump routine #DUMPROUTINE radump # ra driver dump routine #DUMPROUTINE rldump # rl driver dump routine #DUMPROUTINE rmdump # rm driver dump routine #DUMPROUTINE brdump # br driver dump routine #DUMPROUTINE sidump # si driver dump routine #DUMPROUTINE xpdump # xp driver dump routine # NSWAP should be set to the 512-byte block length of the swap device, e.g. # 9120 for an RM05 B partition. #NSWAP 9405 # dvhp?b or xp?b, DIVA COMP V #NSWAP 5940 # hk?a, RK611, RK06/07 NSWAP 2376 # hk?b, RK611, RK06/07 #NSWAP 12122 # br?b, Eaton BR1538 or BR1711 #NSWAP 8779 # hp?b or xp?b, RP04/05/06 #NSWAP 4800 # rm?b or xp?b, RM02/03 #NSWAP 9120 # xp?b, RM05 #NSWAP 17300 # rd?b, RD51/52/53 #NSWAP 3100 # rd?c, RD51/52/53 #NSWAP 10032 # ra?b, RC25 #NSWAP 33440 # ra?b, RA60/80 #NSWAP 10240 # rl?, RL01 #NSWAP 20480 # rl?, RL02 ######################################### # KERNEL CONFIGURATION # ######################################### BADSECT NO # bad-sector forwarding CGL_RTP NO # allow one real time process EXTERNALITIMES NO # map out inode time values SMALL NO # smaller inode, buf, sched queues UCB_CLIST NO # clists moved from kernel data space UCB_FRCSWAP NO # force swap on expand/fork NOKA5 NO # KA5 not used except for buffers # and clists (_end < 0120000); QUOTA NO # dynamic file system quotas # NOTE -- *very* expensive # UCB_METER is fairly expensive. Unless you really look at the statistics # that it produces, don't bother running with it on. Suggested usage is # when you want to tune your system or you're curious about how effective # some algorithm, for example, the text coremap cacheing, is. UCB_RUSAGE # isn't nearly as bad, and should probably be included, although it's not # necessary for anything. UCB_METER NO # vmstat performance metering UCB_RUSAGE YES # enable more rusage fields # If your system is *seriously* short of memory, and you're doing a lot of # thrashing, 2.10's implementation of vfork can hurt you. Otherwise, run # with it on. You do not have to recompile any applications when you change # it. You should also get rid of any local code that uses VIRUS_VFORK to # decide whether to call fork or vfork, they should just call vfork. VIRUS_VFORK YES # include vfork system call # NBUF is the size of the buffer cache, and is directly related to the UNIBUS # mapping registers. There are 32 total mapping registers, of which 30 are # available. The 0'th is used for CLISTS, and the 31st is used for the I/O # page on some PDP's. It's suggested that you allow 7 mapping registers # per UNIBUS character device so that you can move 56K of data on each device # simultaneously. The rest should be assigned to the block buffer pool. So, # if you have a DR-11 and a TM-11, you would leave 14 unassigned for them and # allocate 16 to the buffer pool. Since each mapping register addresses 8 # buffers for a 1K file system, NBUF would be 128. A possible exception would # be to reduce the buffers to save on data space, as they were 24 bytes per # header, last time I looked. # should be 20 for GENERIC, so room for kernel + large program to run. NBUF 20 # buffer cache, *must* be <= 240 # MAXMEM is the maximum core per process is allowed. First number # is Kb. MAXMEM (300*16) # 300K max per process ... # DIAGNOSTIC does various run-time checks, some of which are pretty # expensive and at a high priority. Suggested use is when the kernel # is crashing and you don't know why, otherwise run with it off. DIAGNOSTIC NO # misc. diagnostic loops and checks # The following entries used to be part of the kernel configuration, and, # for various reasons, are no longer modifiable. They are included here # for historical information ONLY. If "YES", they are always included in # the kernel, if "NO", they are never included. # ACCT YES # process accounting # DISPLAY NO # PDP-11/45/70 display routine # INSECURE NO # don't clear setuid/gid bits on write # INTRLVE NO # file system/disk interleaving # MENLO_JCL YES # job control # MENLO_KOV YES # kernel uses overlaid call sequence # MENLO_OVLY YES # support user process text overlays # MPX_FILS NO # hooks for multiplexed files # OLDTTY YES # old line discipline # RAND_XO YES # rand file exclusive open (flock(2)) # TEXAS_AUTOBAUD YES # tty image mode to support autobauding # UCB_AUTOBOOT YES # system is able to reboot itself # UCB_BHASH YES # hashed buffer accessing # UCB_DBUF YES # use one buffer per disk # UCB_DEVERR YES # print device errors in mnemonics # UCB_ECC YES # disk drivers should do ECC # UCB_FSFIX YES # crash resistant filesystems # UCB_GRPMAST NO # group master accounts # UCB_IHASH YES # hashed inode table # UCB_LOAD YES # load average and uptime # UCB_LOGIN NO # login sys call # UCB_NTTY YES # new tty driver # UCB_PGRP NO # count process limit by process group # UCB_RENICE YES # renice system call (setpriority(2)) # UCB_SCRIPT YES # shell scripts can specify interpreter # UCB_SUBM YES # "submit" processing (stty(1)) # UCB_SYMLINKS YES # symbolic links # UCB_UPRINTF YES # send error messages to user # UCB_VHANGUP YES # revoke control tty access # UNFAST NO # don't use inline.h macro speedups # DISKMON has been absorbed into UCB_METER. # DISKMON UCB_METER # iostat disk monitoring # BSLOP was a #define in param.c for the TIU/Spider. It seems that # particular printer would DMA a few extra characters for you for free. # V7 came with a BSLOP of 2, but it was normally set to 0. Add the # following #defines to param.c, then change all occurrences of BSIZE # to bsize. # # /* BSLOP can be 0 unless you have a TIU/Spider*/ # #define BSLOP 0 # int bsize = BSIZE + BSLOP; /* size of buffers */ # The UCB_NKB flag requires changes to UNIX boot pgms as well as changes to # dump, restore, icheck, dcheck, ncheck, mkfs. It includes the options # previously known as UCB_SMINO (smaller inodes, NADDR = 7) and UCB_MOUNT # (multiple superblocks per internal buffer). It's measured in KB byte # system buffers, it's not just a boolean. If you're not hearing what # I'm saying, don't even *think* of changing it. # UCB_NKB 1 # "n" KB byte system buffers ######################################### # PERIPHERALS: DISK DRIVES # ######################################### NBR 0 # EATON BR1537/BR1711, BR1538A, B, C, D NHK 2 # RK611, RK06/07 NRAC 1 # NRAD controllers NRAD 2 # RX50, RC25, RD51/52/53, RA60/80/81 NRK 0 # RK05 NRL 2 # RL01/02 NRX 0 # RX02 NSI 0 # SI 9500 driver for CDC 9766 disks # Because the disk drive type registers conflict with other DEC # controllers, you cannot use XP_PROBE for the Ampex 9300 and # Diva drives. Read through /sys/pdpuba/hpreg.h and /sys/pdpuba/xp.c # for information on how to initialize for these drives. NXPC 1 # NXPD controllers (RH70/RH11 style) NXPD 2 # RM02/03/05, RP04/05/06, CDC 9766, # Ampex 9300, Diva, Fuji 160, SI Eagle. XP_PROBE YES # check drive types at boot NRAM 0 # RAM disk size (512-byte blocks) ######################################### # PERIPHERALS: TAPE DRIVES # ######################################### NHT 1 # TE16, TU45, TU77 # Setting AVIVTM configures the TM driver for the AVIV 800/1600/6250 # controller (the standard DEC TM only supports 800BPI). For more details, # see /sys/pdpuba/tm.c. NTM 1 # TM11 AVIVTM YES # AVIV 800/1600/6250 controller NTS 1 # TS11 ######################################### # PERIPHERALS: TERMINALS # ######################################### # NKL includes both KL11's and DL11's. # It should always be at least 1, for the console. NKL 1 # KL11, DL11 NDH 0 # DH11; NDH is in units of boards (16 each) NDM 0 # DM11; NDM is in units of boards (16 each) NDHU 0 # DHU11, DHV11 NDZ 0 # DZ11; NDZ is in units of boards (8 each) ######################################### # PERIPHERALS: OTHER # ######################################### NDN 0 # DN11 dialer NLP 0 # Line Printer LP_MAXCOL 132 # Maximum number of columns on line printers NDR 0 # DR11-W ######################################### # PSEUDO DEVICES, PROTOCOLS, NETWORKING # ######################################### # Networking only works with split I/D and SUPERVISOR space, i.e. with the # 11/44/45/50/53/55/70/73/83/84. NETHER should be non-zero for networking # systems using any ethernet. CHECKSTACK makes sure the networking stack # pointer and the kernel stack pointer don't collide; it's fairly expensive # at 4 extra instructions for EVERY function call AND return, always left # NO unless doing serious debugging. UCB_NET NO # TCP/IP CHECKSTACK NO # Kernel & Supervisor stack pointer checking NETHER 0 # ether pseudo-device # Note, PTY's and the select(2) system call do not require the kernel to # be configured for networking (UCB_NET). Note that you can allocate PTY's # in any number (multiples of 8, of 16, even, odd, prime, whatever). Nothing # in the kernel cares. PTY's cost 78 bytes apiece in kernel data space. You # should probably have at least 16 since so many applications use them: # script, jove, window, rlogin, ... NPTY 16 # pseudo-terminals # To make the 3Com Ethernet board work correctly, splimp has to be promoted # to spl6; splfix files that do this are in conf/3Com; the config script # hopefully does the right thing. NEC 0 # 3Com Ethernet NDE 0 # DEUNA NIL 0 # Interlan Ethernet NSL 0 # Serial Line IP NQE 0 # DEQNA # The following devices are untested in 2.10BSD; some are untested since # before 2.9BSD. Some won't even compile. Most will require modification # of various Makefiles to include the correct source. Good luck. ENABLE34 NO # if have the ENABLE34 board NACC 0 # ACC LH/DH ARPAnet IMP interface PLI YES # LH/DH is connected to a PLI NCSS 0 # DEC/CSS IMP11-A ARPAnet IMP interface NDMC 0 # DMC11 NEN 0 # Xerox prototype (3 Mb) Ethernet NHY 0 # Hyperchannel NIMP 0 # ARPAnet IMP 1822 interface NPUP 0 # Xerox PUP-I protocol family NS 0 # Xerox NS (XNS) NSRI 0 # SRI DR11c ARPAnet IMP NTB 0 # RS232 interface for Genisco/Hitachi tablets NVV 0 # V2LNI (Pronet) .fi dump routine #DUMPROUTINE hpdump # hp driver dump routine #DUMPROUTINE radump # ra driver dump routine #DUMPROUTINE rldump # rl driver dump routine #DUMPROUTINE rmdump # rm driver dump routine #DUMPROUTINE brdump # br driver dump routine #DUMPROUTINE sidump # si driver dump routine #DUMPROUTINE xpdump # xp driver dump routine # NSWAP should be set to the 512-byte block length of the swap device, e.g. # 9120 for an RM05 B partition. #NSWAP 9405 # dvhp?b or xp?b, DIVA Cdoc/2.10/setup.2.10/6.t 644 3 12 33620 4321632277 7263 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)6.t 6.2 (Berkeley) 10/1/88 .\" .de IR \fI\\$1\fP\|\\$2 .. .ds LH "Installing/Operating \*(2B .nr H1 6 .nr H2 0 .ds RH "System Operation .ds CF \*(DY .bp .LG .B .ce 6. SYSTEM OPERATION .sp 2 .R .NL .PP This section describes procedures used to operate a PDP UNIX system. Procedures described here are used periodically, to reboot the system, analyze error messages from devices, do disk backups, monitor system performance, recompile system software and control local changes. .NH 2 Bootstrap and shutdown procedures .PP In a normal reboot, the system checks the disks and comes up multi-user without intervention at the console. Such a reboot can be stopped (after it prints the date) with a ^C (interrupt). This will leave the system in single-user mode, with only the console terminal active. It is also possible to allow the filesystem checks to complete and then to return to single-user mode by signaling \fIfsck\fP with a QUIT signal (^\). .PP If booting from the console command level is needed, then the command .DS \fB>>>\fP B .DE will boot from the default device and ask for the name of the system to be booted. Typing a carriage return will cause the default system (as compiled in in section 4.1), to be booted. In any case, the system selected will come up in single-user mode. .PP To bring the system up to a multi-user configuration from the single-user all you have to do is hit ^D on the console. The system will then execute /etc/rc, a multi-user restart script (and /etc/rc.local), and come up on the terminals listed as active in the file /etc/ttys. See \fIinit\fP\|(8) and \fIttys\fP\|(5). Note, however, that this does not cause a file system check to be performed. Unless the system was taken down cleanly, you should run ``fsck \-p'' or force a reboot with \fIreboot\fP\|(8) to have the disks checked. .PP To take the system down to a single user state you can use .DS \fB#\fP kill 1 .DE or use the \fIshutdown\fP\|(8) command (which is much more polite, if there are other users logged in.) when you are up multi-user. Either command will kill all processes and give you a shell on the console, as if you had just booted. File systems remain mounted after the system is taken single-user. If you wish to come up multi-user again, you should do this by: .DS \fB#\fP cd / \fB#\fP /etc/umount -a \fB#\fP ^D .DE .PP Each system shutdown, crash, processor halt and reboot is recorded in the file /usr/adm/shutdownlog with the cause. .NH 2 Device errors and diagnostics .PP When serious errors occur on peripherals or in the system, the system prints a warning diagnostic on the console. These messages are collected by the system error logging process .IR dmesg (8) and written into a system error log file \fI/usr/adm/messages\fP (\fIdmesg\fP is executed periodically by cron to collect system messages from a message buffer within the kernel.) .PP Error messages printed by the devices in the system are described with the drivers for the devices in section 4 of the programmer's manual. If errors occur suggesting hardware problems, you should contact your hardware support group or field service. It is a good idea to examine the error log file regularly (e.g. with ``tail \-r \fI/usr/adm/messages\fP''). .NH 2 File system checks, backups and disaster recovery .PP Periodically (say every week or so in the absence of any problems) and always (usually automatically) after a crash, all the file systems should be checked for consistency by \fIfsck\fP\|(1). The procedures of \fIreboot\fP\|(8) should be used to get the system to a state where a file system check can be performed manually or automatically. .PP Dumping of the file systems should be done regularly, since once the system is going it is easy to become complacent. Complete and incremental dumps are easily done with \fIdump\fP\|(8). You should arrange to do a towers-of-hanoi dump sequence; we tune ours so that almost all files are dumped on two tapes and kept for at least a week in most every case. We take full dumps every month (and keep these indefinitely). .PP More precisely, we have three sets of dump tapes: 10 daily tapes, 5 weekly sets of 2 tapes, and fresh sets of three tapes monthly. We do daily dumps circularly on the daily tapes with sequence `3 2 5 4 7 6 9 8 9 9 9 ...'. Each weekly is a level 1 and the daily dump sequence level restarts after each weekly dump. Full dumps are level 0 and the daily sequence restarts after each full dump also. .PP Thus a typical dump sequence would be: .br .ne 6 .KS .TS center; c c c c c n n n l l. tape name level number date opr size _ FULL 0 Nov 24, 1979 jkf 137K D1 3 Nov 28, 1979 jkf 29K D2 2 Nov 29, 1979 rrh 34K D3 5 Nov 30, 1979 rrh 19K D4 4 Dec 1, 1979 rrh 22K W1 1 Dec 2, 1979 etc 40K D5 3 Dec 4, 1979 rrh 15K D6 2 Dec 5, 1979 jkf 25K D7 5 Dec 6, 1979 jkf 15K D8 4 Dec 7, 1979 rrh 19K W2 1 Dec 9, 1979 etc 118K D9 3 Dec 11, 1979 rrh 15K D10 2 Dec 12, 1979 rrh 26K D1 5 Dec 15, 1979 rrh 14K W3 1 Dec 17, 1979 etc 71K D2 3 Dec 18, 1979 etc 13K FULL 0 Dec 22, 1979 etc 135K .TE .KE We do weekly dumps often enough that daily dumps always fit on one tape. .PP Dumping of files by name is best done by \fItar\fP\|(1) but the amount of data that can be moved in this way is limited to a single tape. Finally if there are enough drives entire disks can be copied with \fIdd\fP\|(1) using the raw special files and an appropriate blocking factor; the number of sectors per track is usually a good value to use, consult \fI/etc/disktab\fP. .PP It is desirable that full dumps of the root file system be made regularly. This is especially true when only one disk is available. Then, if the root file system is damaged by a hardware or software failure, you can rebuild a workable disk doing a restore in the same way that the initial root file system was created. .PP Exhaustion of user-file space is certain to occur now and then; since quotas aren't available on \*(2B try using the programs \fIdu\fP\|(1), \fIdf\fP\|(1), \fIquot\fP\|(8), combined with threatening messages of the day, and personal letters. .NH 2 Moving file system data .PP If you have the equipment, the best way to move a file system is to dump it to magtape using \fIdump\fP\|(8), use \fInewfs\fP\|(8) to create the new file system, and restore the tape, using \fIrestor\fP\|(8). If for some reason you don't want to use magtape, dump accepts an argument telling where to put the dump; you might use another disk. Filesystems may also be moved by piping the output of a \fItar\fP\|(1) to another \fItar\fP. The \fIrestor\fP program accesses the raw device, laying down inodes and blocks in the same place they came from as recorded by dump. Care must therefore be taken when restoring a dump into a file system smaller than the original file system. .PP If you have to shrink a file system or merge a file system into another, existing one, the best bet is to use \fItar\fP\|(1). If you are playing with the root file system and only have one drive, the procedure is more complicated. If the only drive is a Winchester disk, this procedure may not be used without overwriting the existing root or another partition. What you do is the following: .IP 1. GET A SECOND PACK!!!! .IP 2. Dump the root file system to tape using \fIdump\fP\|(8). .IP 3. Bring the system down and mount the new pack. .IP 4. Load the distribution tape and install the new root file system as you did when first installing the system. .IP 5. Boot normally using the newly created disk file system. .PP Note that if you add new disk drivers they should also be added to the standalone system in \fI/sys/pdpstand\fP. If you change the disk partition tables the default disk partition tables in \fI/etc/disktab\fP should be modified. .NH 2 Recompiling and reinstalling system software .PP It is easy to regenerate the system, and it is a good idea to try rebuilding pieces of the system to build confidence in the procedures. The system consists of two major parts: the kernel itself (/sys) and the user programs (/usr/src and subdirectories). The major part of this is /usr/src. .PP The three major libraries are the C library in /usr/src/lib/libc and the \s-2FORTRAN\s0 libraries /usr/src/usr.lib/libI77 and /usr/src/usr.lib/libF77. In each case the library is remade by changing into the corresponding directory and doing .DS \fB#\fP make .DE and then installed by .DS \fB#\fP make install .DE Similar to the system, .DS \fB#\fP make clean .DE cleans up. .PP The source for all other libraries is kept in subdirectories of /usr/src/usr.lib; each has a makefile and can be recompiled by the above recipe. .PP If you look at /usr/src/Makefile, you will see that you can recompile the entire system source with one command. To recompile a specific program, find out where the source resides with the \fIwhereis\fP\|(1) command, then change to that directory and remake it with the makefile present in the directory. For instance, to recompile ``date'', all one has to do is .DS \fB#\fP whereis date \fBdate: /usr/src/bin/date.c /bin/date /usr/man/man1/date.1\fP \fB#\fP cd /usr/src/bin \fB#\fP make date .DE this will create an unstripped version of the binary of ``date'' in the current directory. To install the binary image, use the install command as in .DS \fB#\fP install \-s date /bin/date .DE The \-s option will insure the installed version of date has its symbol table stripped. The install command should be used instead of mv or cp as it understands how to install programs even when the program is currently in use. .PP If you wish to recompile and install all programs in a particular target area you can override the default target by doing: .DS \fB#\fP make \fB#\fP make DESTDIR=\fIpathname\fP install .DE .PP To regenerate all the system source you can do .DS \fB#\fP cd /usr/src \fB#\fP make .DE .PP If you modify the C library, say to change a system call, and want to rebuild and install everything from scratch you have to be a little careful. You must insure that the libraries are installed before the remainder of the source, otherwise the loaded images will not contain the new routine from the library. The following sequence will accomplish this. .DS \fB#\fP cd /usr/src \fB#\fP make clean \fB#\fP make build \fB#\fP make installsrc .DE The first \fImake\fP removes any existing binaries in the source trees to insure that everything is reloaded. The next \fImake\fP compiles and installs the libraries and compilers, then compiles the remainder of the sources. The final line installs all of the commands not installed in the first phase. This will take about 12 hours on a reasonably configured 11/44. .NH 2 Making local modifications .PP To keep track of changes to system source we migrate changed versions of commands in /usr/src/bin, /usr/src/usr.bin, and /usr/src/ucb in through the directory /usr/src/new and out of the original directory into /usr/src/old for a time before removing them. (/usr/new is also used by default for the programs that constitute the contributed software portion of the distribution.) Locally written commands that aren't distributed are kept in /usr/src/local and their binaries are kept in /usr/local. This allows /usr/bin, /usr/ucb, and /bin to correspond to the distribution tape (and to the manuals that people can buy). People wishing to use /usr/local commands are made aware that they aren't in the base manual. As manual updates incorporate these commands they are moved to /usr/ucb. .PP A directory, /usr/junk, to throw garbage into, as well as binary directories, /usr/old and /usr/new, are useful. The man command supports manual directories such as /usr/man/mano for old and /usr/man/manl for local to make this or something similar practical. .NH 2 Accounting .PP UNIX optionally records two kinds of accounting information: connect time accounting and process resource accounting. The connect time accounting information is stored in the file \fI/usr/adm/wtmp\fP, which is summarized by the program .IR ac (8). The process time accounting information is stored in the file \fI/usr/adm/acct\fP after it is enabled by .IR accton (8), and is analyzed and summarized by the program .IR sa (8). .PP If you need to recharge for computing time, you can develop procedures based on the information provided by these commands. A convenient way to do this is to give commands to the clock daemon .I /etc/cron to be executed every day at a specified time. This is done by adding lines to \fI/usr/adm/crontab\fP; see .IR cron (8) for details. .NH 2 Resource control .PP Resource control in \*(2B is more elaborate than in previous PDP UNIX systems. The resources consumed by any single process can be limited by the mechanisms of \fIsetrlimit\fP\|(2). As distributed, the mechanism is voluntary, though sites may choose to modify the login mechanism to impose limits. .NH 2 Files that need periodic attention .PP We conclude the discussion of system operations by listing the files that require periodic attention or are system specific .de BP .IP \fB\\$1\fP .br .. .TS center; lb a. /etc/fstab how disk partitions are used /etc/disktab disk partition sizes /etc/printcap printer data base /etc/gettytab terminal type definitions /etc/remote names and phone numbers of remote machines for \fItip\fP(1) /etc/group group memberships /etc/motd message of the day /etc/passwd password file; each account has a line /etc/rc.local local system restart script; runs reboot; starts daemons /etc/inetd.conf local internet servers /etc/hosts host name data base /etc/networks network name data base /etc/services network services data base /etc/hosts.equiv hosts under same administrative control /etc/syslog.conf error log configuration for \fIsyslogd\fP\|(8) /etc/ttys enables/disables ports /usr/lib/crontab commands that are run periodically /usr/lib/aliases mail forwarding and distribution groups /usr/adm/acct raw process account data /usr/adm/messages system error log /usr/adm/shutdownlog log of system reboots /usr/adm/wtmp login session accounting .TE CB_RENICE YES # renice system call (setpriority(2)) # UCB_SCRIPT YES # shell scripts can specify interpreterdoc/2.10/setup.2.10/Makefile 644 3 12 1121 4357536334 10346 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.2 (Berkeley) 9/8/88 # PRINTER=-Plz TROFF= ditroff ${PRINTER} EQN= deqn ${PRINTER} TBL= dtbl ${PRINTER} LPR= lpr -n ${PRINTER} SRC= 0.t 1.t 2.t 3.t 4.t 5.t 6.t a.t all: ${SRC} ${EQN} ${SRC} | ${TBL} | ${TROFF} ${PAGES} -ms clean: rm -f setup.out ?.t.spell errs Errs MAKELOG spell: ${SRC} @for i in ${SRC}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done rved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.2 (Berkeley) 9/8/88 # PRINTER=-Plz TROFF= ditroff ${PRINTER} EQN= deqn ${PRINTER} TBL= dtbl ${PRINTER} LPR= lpr -n ${PRINTER} SRC= 0.t 1.t 2.t 3.t 4.t 5.t 6.t a.t all: ${SRC} ${EQN} ${SRC} | ${TBL} | ${TROFF} ${PAGES} -ms clean: rm -f setup.out ?.t.spell errs Errs MAKELOG spell: ${SRC} @for i in ${SRdoc/2.10/setup.2.10/spell.ok 644 3 12 11403 4357277372 10410 2.10BSD ACC ACU ARP ARPANET ARPAnet AUTOBAUD AUTOBOOT AVIVTM Arpanet BADSECT BHASH BOOTDEV BPI BR BR1537 BR1538 BR1538A BR1711 BSD BSIZE BSLOP Bostic CF CGL CHECKSTACK CLIST CLISTS COMP COMPAT CPU CPUs CSS CST CX Comp Cyl DARPA DBLKSIZ DBUF DEFNAME DELUA DEQNA DESTDIR DEUNA DEVERR DH DH's DH11 DHU11 DHV11 DHs DISKMON DL11 DL11's DM11 DMA DMC DMC11 DMR DN11 DR11 DR11C DR11c DST DUMPDEV DUMPLO DUMPROUTINE DZ's DZ11 DZs Dialup ECC EGP EMULEX ENABLE34 EOT EPROTONOSUPPORT EXTERNALITIMES Emulex Ethernet Ethernets FILS FPSIM FRCSWAP FSFIX FTP Filesystem Filesystems GENALLSYS GRPMAST Genisco HK HKADDR HT HTADDR Hardcopy I&D ICMP IDC IDENT IDP IHASH IMP's IMP11 INET INTRLVE IP IPSENDREDIRECTS ISI ISVTX Ifconfig JCL JKReynolds KA5 KB KL11 KL11's KOV KW11 KW11P Karels Kb Kirton L.aliases L.cmds L.sys LH LINEHZ LOGFILE LP Leedom Leffler MAKEDEV MAKEDEV.local MAKEHOSTS MASSBUS MAXCOL MAXMEM MPX MSCP Makefile Makefiles Mb McKusick Microverter Milnet N.B NACC NADDR NBPG NBR NBUF NCSS NDE NDH NDHU NDM NDMC NDN NDR NDZ NEC NEN NHK NHT NHY NIC NIMP NKB NKL NLOOP NLP NMOUNT NODEV NOKA5 NONFP NP100 NPTY NPUP NQE NRAC NRAD NRAM NRK NRL NRX NSC NSI NSL NSRI NSWAP NTB NTM NTS NTTY NVV NXPC NXPD OLDTTY OVLY PCL PDP PDP''Setup.2.10 PDP's PDP11 PDP11s PDR PDT PGRP PIPEDEV PLI PSN's PST PTY's Pathnames Postel Pronet Proteon QBUS Qbus RA RA60 RA80 RA80's RA81 RB RC25 RD51 RD52 RD52's RD53 README RFC RH RH11 RH70 RK05 RK06 RK06's RK07 RK07's RK611 RKADDR RL RL01 RL01's RL02 RL02's RLADDR RLs RM02 RM03 RM03's RM05 ROM ROMs ROOTDEV RP03 RP04 RP05 RP06 RPADDR RQDX2 RQDX3 RS232 RTP RUSAGE RX02 RX50 Restor Rootdev SBI SC01B SC11 SC21 SEQF SI SMD SMINO SMTP SPP SUBM SWAPDEV SWAPLO SYMLINKS SYSLOG Sendmail Sep Stanislaus Swapdev TC11 TCP TE10 TE16 TELNET TFTP TIMEZONE TIU TM TM02 TM11 TMADDR TS TS03 TS05 TS11 TSADDR TU TU10 TU45 TU77 TU78 TU80 Timezone Turlock UCB UDA UDA50 UDP UNIBUS UPRINTF USENET USERFILE UUAIDS Ultrix V2LNI VAX WST XNS XO XP XX a.out acc adiron adm arp autobauding autoboot autoconfig autoconfigures bad144 bdevsw biff bootstrapped bostic br br?b brdump bruboot bsize buf c.f cacheing calder capricorn casey cbosg cbosgd chico chroot clists comp.bugs.2bsd comsat conf conf.c config coremap cpu cpus crontab cshrc css cul0 daemon daemon's daemons dali date.1 date.c dev dgram dh dh0 dhrint dhu dhurint dhuxint dhxint dialcode dialcodes dialup dialups dict disktab dk dmc dtab dvhp dvhp?b dvhpuboot dz dz0 dzdma dzrint ec eg en0 ernie es ethernet files.HOST filesystem filesystems fingerd formatter fsf fstab ftp ftpd ftpusers fuji160 genunix getdtablesize gethostbyaddr gethostbyname gethostname getty gettytab gid hangup hanoi hk hk0a hk0b hk0c hk0e hk1a hk6 hk7 hk?a hk?b hk?c hk?d hkdump hkintr hkuboot hkunix homegrown hostname hosts.dir hosts.equiv hosts.lpd hosts.pag hosts.txt hp hp0c hp?b hpdump hpreg.h hpuboot ht ht0 htable htintr hy ifconfig ifdef il inetd inetd.conf init inline.h inode inodes installsrc int intr iob ioconf.c isif.arpa isize jkf jove kazoo.Berkeley.EDU keith kim kmem lib libF77 libI77 libc localgateways localhosts localnetworks localopts.h loopback lp lpd lpintr lq machparam.h magtape makedev makefile man1 manl mano matisse max maxusers mbufs mdec mem miro misc mkhosts mkpasswd mnt mnt:rw:1:2 monet monet.Berkeley.EDU motd mov mt0 myname.my.domain mysitename named.tar.Z nameserver ndbm ndbm.h netimp netinet netmask netnix netns netstart netstat newaliases newdev newfs newunix nic.arpa nn nowait nscf nsunix nswap nulldev ogin olddev opr out0123456789 out2010123456 param.c param.h passwd.dir passwd.pag pathname pcl pdp pdpif pdpmba pdpstand pdpuba pgms phys pipedev pre printcap proNET pty pty0 pty1 pty2 pty3 ptyp qe ra ra0 ra0a ra0b ra0b::sw ra0c ra0d ra0g ra1 ra1a ra1b ra1c ra60 ra80 ra81 ra?b ra?c ra?g radump rauboot raunix rc.local rc25 rd51 rd52 rd53 rd?b rd?c restor rew rexecd rhosts rk rk06 rk07 rkuboot rl rl01 rl02 rl0h rl1h rldump rlintr rlogin rlogind rluboot rlunix rm02 rm03 rm03uboot rm05 rm05uboot rm?b rmdump rmt12 rmunix rootdev rp rp03 rp04 rp06 rp?b rq rqdx rrh rshd rusage rw:1:1 rwhod rxx0a sc11 sc21 sched se secretmail securettys seismo sendbug sendmail sendmail.cf setpriority setrlimit setup.2.10 setup.tblms shutdownlog si si51uboot si94uboot si95uboot sidump spl6 spl7 splfix splfix.profile splimp src sri standalone std std.9600 sunix swapdev swplo syslog syslog.conf syslogd tabset tcp telnetd tftpd time.h tm tm.c tm0 tmac tmintr tmp tmp:rw ts ts0 tsintr tty00 tty01 tty07 ttyDD ttyd ttyp ttyp0 ttytype tzone uboot ucb ucbarpa ucbvax ucbvax.berkeley.edu ufs uid uipc umount usc userid username usr.bin usr.lib usr:rw:1:2 utmp uucico uucppublic uudecode uupoll uuq uusnap uuxqt vangogh vangogh.berkeley.edu vaxif ventel vipw vm vt100 vv wildcard wtmp xp xp.c xp0 xp0a xp0b xp0c xp0d xp0e xp0f xp1e xp?b xp?c xp?d xp?e xpb xpbf xpdump xpintr xptype xpunix xx xx0a yymmddhhmm zA usr/src \fB#\fP make .DE .PP If you modify the C library, say to change a system call, and want to rebuild and install everything from scratch you have to be a little careful. You must insure that the libraries are installed before the remainder of the doc/2.10/announce.ms 444 3 12 17314 4126045717 7361 .\" troff -ms .if n .nr LL 7i .if t .nr LL 6.5i .DS C .LG Second Distribution of Berkeley PDP-11\(dg Software for UNIX\(dd .NL .FS \(dg DEC, PDP, and VAX are tradmarks of Digital Equipment Corporation .FE .FS \(dd UNIX is a tradmark of Bell Loboratories .FE .LG Release 2.10 (Revised April 1987) .NL .DE .PP The USENIX association and the Computer Systems Research Group (CSRG) of the University of California, Berkeley, are pleased to announce the distribution of a new release of the "Second Berkeley Software Distribution" (2.10BSD). .PP This release will be handled by the USENIX association, and is available to all V7, System III, System V, and 2.9BSD licensees. The Association will continue to maintain the non-profit price of $200, as was charged by the CSRG. The release will consist of two 2400 ft., 1600 bpi tapes (approximately 80M) and approximately 100 pages of documentation. If you require 800 bpi tapes, please contact USENIX for more information. .PP If you have questions about the distribution of the release, please contact USENIX. USENIX's address and phone number is as follows: .RS .LP USENIX Association .br P.O. Box 2299 .br Berkeley, CA 94710 .br +1 415 528-8649 .RE .LP USENIX may also be contacted by electronic mail at: .RS {ucbvax,decvax}!usenix!office .RE .LP If you have technical questions about the release, please contact Keith Bostic at: .RS seismo!keith, ucbvax!bostic .br bostic@okeeffe.berkeley.edu .br +1 415 642-4948 .RE .LP .B "Q: What machines will 2.10BSD run on?" .RS .LP 2.10BSD will run on: .RS 11/24/34/44/53/60/70/73/83/84 .br 11/23/35/40/45/50/55 with 18 or 22 bit addressing .RE .LP 2.10 WILL NOT run on: .RS T11, 11/03/04/05/10/15/20/21 .br 11/23/35/40/45/50/55 with 16 bit addressing .RE .RE .B "Q: What's new in this release?" .RS .PP Lots of stuff. This release is 4.3BSD. We don't expect to distribute manuals this time, we expect people to simply use the 4.3BSD ones. A list of some of the larger things that have been added: .RS .sp 1 22-bit Qbus support .br 4.3BSD networking, (TCP/IP, SLIP) .br 4.3BSD serial line drivers .br 4.3BSD C library .br most of the 4.3BSD application programs .br complete set of 4.3BSD system calls .br MSCP device driver for (RQDX? UDA50, KLESI) .br RAM disk .br inode, core, and swap caching .br conversion of the entire system to a 4.3BSD structure .RE .RE .LP .B "Q: Why get this release?" .RS .PP You want to get this release for one of two reasons. Either you have a number of 4.3BSD programs or machines in your environment and you'd like consistency across the environment, or you want a faster, cleaner version of 2.9BSD, with or without networking. .PP This release is, without question, considerably faster than any other PDP-11 system out there. There have been several major changes to the 2.10BSD kernel to speed it up. .RS .IP \(bu The kernel namei routine has been modified to read the entire path name in at once rather than as a single character at a time, as well as maintaining a cache of its position in the current directory. .IP \(bu The exec routine now copies its arguments a string at a time, rather than a character at a time. .IP \(bu All inodes are placed in an LRU cache, eliminating going to disk for often used inodes; kernel inodes also contain more of the disk inode information to eliminate require disk access for stat(2) calls. .IP \(bu Both core and swap are LRU cached; the former is particularly interesting on PDP-11's with large amounts (for PDP's, anyway) of memory. Our experience with an 11/44 with 4M of memory, in a student environment, is that it never swaps, and only rarely do programs leave core. .IP This change is largely responsible for My Favorite Timing: Ultrix 11, V3.0, on my 11/73, with a single RD52, takes 1.1 system seconds to run vi. 2.9BSD takes approximately .9 system seconds, a difference probably attributable to the fact that 2.9BSD has vfork. Once 2.10BSD has the vi image in its core cache, it executes vi in .2 system seconds. .IP \(bu Finally, many other speedups, such as rewriting several of C library routines in assembler, replacing the kernel clist routines with the faster 4.3BSD ones, caching and hashing process id's, and splitting the process list into multiple lists have been added. .RE .RE .LP .B "Q: How good is the networking?" .RS .PP The networking is 4.3BSD's. It runs, it runs correctly. It eats space like there's some kind of reward. We are considering fixing the latter by moving the networking into supervisor space. .RE .LP .B "Q: Will this release be supported?" .RS .PP This release is not supported, nor should it be considered an official Berkeley release. It was called 2.10BSD because 2.9BSD has clearly become overworked and System V was already taken. .PP The ``bugs'' address supplied with this release (as well as with the 4BSD releases) will work for some unknown period of time; make sure that the ``Index:'' line of the bug report indicates that the release is ``2BSD''. See the sendbug(8) program for more details. All fixes that we make, or that are sent to us, will be posted on USENET, in the news group ``comp.bugs.2bsd''. USENIX is aware of this problem and is willing to make hard-copy bug reports available to those of you not connected to the net. .PP To summarize, all that I can say is that any .I major problems will be fixed, i.e. if you've got a program that's crashing the kernel, we'll be inclined to fix it. If ``ls'' is misformatting its output, you're probably on your own. .RE .LP .B "Q: Is this the last release?" .RS .PP Yes, at least by us; quite frankly, we'd rather sacrifice our chance at heaven than look at a 16-bit machine again. .RE .LP .B "Q: Who did all this wonderful, exciting, neat stuff?" .RS .PP Mostly Casey Leedom, of California State University, Stanislaus, and Keith Bostic, of the CSRG. From the ``Changes to the Kernel in 2.10BSD'' paper: .RS .PP The authors gratefully acknowledge the contributions of many other people to the work described here. Major contributors include Gregory Travis of the Institute for Social Research, and Steven Uitti of Purdue University. Jeff Johnson, also of the Institute for Social Research, was largely responsible for the port of 4.3BSD's networking to 2.10BSD. Cyrus Rahman of Duke University should hold some kind of record for being able to get the entire kernel rewritten with a single 10-line bug report. Much credit should also go to the authors of 4.2BSD and 4.3BSD from which we stole everything that wasn't nailed down and several things that were. (Just ``diff'' this document against \fIChanges to the Kernel in 4.2BSD\fP if you don't believe that!) We are also grateful for the invaluable guidance provided by Michael Karels, of the Computer Science Research Group, at Berkeley \- although we felt that his suggestion that we ``just buy a VAX'', while perhaps more practical, was not entirely within the spirit of the project. .RE .RE .sp 1 Keith Bostic .br Casey Leedom .bp .PP The tape that USENIX will be distributing for the first few weeks will .UL only support machines with split I/D and floating point hardware. This is not because any work remains to be done, but because we just haven't had the time to build and test a system. .PP Sites wishing to run 2.10BSD should also be aware that the networking is only lightly tested, and that certain hardware has yet to be ported. Contact Keith Bostic at the above address for current information as to the status of the networking. As of August 6, 1987, the complete 4.3BSD networking is in place and running, albeit with minor problems. The holdup is that only the Interlan Ethernet driver has been ported, as well as some major space constraints. Note, if we decide to go to a supervisor space networking, 2.10 networking will only run on: .RS 11/44/53/70/73/83/84 .br 11/45/50/55 with 18 bit addressing .RE lone std std.9600 sunix swapdev swplo syslog syslog.conf syslogd tabset tcp telnetd tftpd time.h tm tm.c tm0 tmac tmintr tmp tmp:rw ts ts0 tsintr tty00 tty01 tty07 ttyDD ttyd ttyp ttyp0 ttytype tzone uboot ucb ucbarpa ucbvax ucbvax.berkeley.edu ufs uid uipc umount usc userid username usr.bin usr.lib usr:rw:doc/2.10/css_announce 444 3 12 14616 4120074200 7574 Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site seismo.UUCP Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site seismo.UUCP Path: seismo!keith From: keith@seismo.UUCP (Keith Bostic) Newsgroups: net.sources,net.bugs.2bsd Subject: 2.9BSD Message-ID: <2793@seismo.UUCP> Date: 17 Jul 85 07:46:29 GMT Date-Received: 17 Jul 85 07:46:29 GMT Distribution: net Organization: Center for Seismic Studies, Arlington, VA Lines: 129 Keywords: 2.9BSD networking release Xref: seismo net.sources:3180 net.bugs.2bsd:226 A new copy of the 2.9BSD release of UNIX for the PDP family will be available starting around the 29th of July. This release was developed from the original 2.9 release by Berkeley. Several people have been working on this release over the past nine months, in three major areas: to make the system run reliably, to make the networking code work and to bring the system closer to 4.2 standards. While we are going to continue to further develop the system, we think that we are at a point where other people can benefit from the work done up to now. The 2.9 that we're offering has working networking code, many of the 4.2 system calls, and is much more stable than the original release. The release is available from two sites, Harvard University and The Center for Seismic Studies. As noted above, we hope to start cutting tapes around the 29th of July. The release will be in "tar" format, 1600 bpi and will consist of a replacement /usr/src. To get your copy please send a 2400 ft. mag tape, a copy of your 2.9 BSD Berkeley license, and a self-addressed, stamped package. Nobody is making any money from this, so *please* make it as easy for us as possible -- don't forget the return postage and the self-addressed package. You can send your tape to either of the following addresses: Keith Bostic Scott Bradner Center for Seismic Studies Harvard University Suite 1450 William James Hall 1300 N. 17th St. Rm 1232 Arlington VA 22209 33 Kirkland St. Cambridge MA 02138 Note: Because of certain legal requirements, if you request a tape from Harvard, please enclose $100.00 to cover costs, checks payable to Harvard University. ================ For everyone's information, the 5 most asked questions from this week's mail. Q: Is this the last release you'll make? A: This release is definitely temporary. We are continuing to work on the system, and hope to have another release available sometime this fall. Most of the basic groundwork has been done; what we're trying to do now is to clean up the kernel and make sure that all of the stuff floating around actually works. We also hope to move closer to the 4BSD release. Q: What's the difference between your stuff and 2.9BSD from Berkeley? A: This release is much more stable, has a great many bug fixes, is much faster and has networking. Q: Where else can I get UNIX for the PDP's? And whose is best? A: Basically, there are 2 other places you can get it, not counting the standard Berkeley 2.9 release. The first is DEC -- they're releasing Ultrix for the 11's fairly soon. The last I heard they were looking for sites for beta-testing. Advantages: Supported by DEC. Wider selection of peripherals. True 4.2 networking. Disadvantages: It costs bucks. No source code is available. Based on V7 kernel. Some of the 2.9 features such as vfork are missing. NOTE: I do not know the DEC system well, and I don't want to get into a flame war about how good it is. Please call your local DEC rep and make your own decision. The second is from Greg Travis. I'm sure that most of you saw Greg's posting to net.bugs.2bsd a few days ago; you might want to refer back to that notice for more information on exactly what his system consists of. For more information, you can contact Greg at: Greg Travis 1022 E. 3rd St. Institute for Social Research Bloomington IN 47405 ...!ihnp4!inuxc!isrnix!greg Greg has contributed heavily to our release and I would estimate that about 70% of the items he mentioned in his posting have been included in our system; the major differences in the two systems are that our release is more similar to the 4BSD release and has networking. Other than that I don't anticipate major differences in the capabilities of the two systems. Q: Where can I get networking for my PDP? And will it talk to my VAX? A: There are only two networking PDP UNIXes around, to my knowledge. The first is the DEC one, mentioned above and ours. The DEC one (as far as I know) is a true 4.2 networking, while ours is around a 4.1b/c networking interface. We do hope to have a 4.2 interface in sometime, but not quite yet. Either networking will talk to your VAX, obviously the DEC one will do it a little more easily. To port a 4.2 networking program to our system requires a few hours work. Q: Are you guys going to support this puppy? A: No. Well, not much. Well, just a little, okay? We will not officially support it, e.g. we all have other work and our bosses somewhat unreasonably expect us to do it. We *are* interested in making it work, we are continuing to develop the system and we will definitely try to help you out. If nothing else, we'll put you in contact with someone who has solved the problem you're working on. Finally, a little recognition -- a few people have contributed a lot of time and effort to getting this stuff working. Credit goes to: Scooter Morris -- University of California Terry Slattery -- U.S. Naval Academy Michael Petry -- University of Maryland Louis Mamakos -- University of Maryland Stephen Uitti -- Purdue Daniel Lanciani -- Harvard Greg Travis -- Institute for Social Research Well, that's about it, folks. If you have any questions about 2.9 feel free to contact me. Keith Bostic ARPA: keith@seismo UUCP: seismo!keith (703) 276-7900 00 bpi and will consist of a replacement /usr/src. To get your copy please send a 2400 ft. mag tape, a copy of yodoc/2.10/kchanges.2.11/ 755 0 12 0 4744463011 7236 doc/2.10/kchanges.2.11/0.t 644 0 0 12017 4744142741 7651 .EH 'Page %''Changes in 2.11BSD' .OH 'Changes in 2.11BSD''Page %' .ds Ps 2.10.1BSD .ds 2B 2.11BSD .TL Changes in the \*(2B kernel .sp .de D .ie \\n(.$>1 \\$1 \\$2 \\$3 .el DRAFT of \n(mo/\n(dy/\n(yr .. .D November 1, 1990 .AU Steven M. Schultz .AI Contel Federal Systems Westlake Village, California 91359-5027 wlbr!wlv!sms; sms@wlv.imsd.contel.com .PP This document summarizes changes in PDP-11\(ua UNIX\(dd between .FS \u\(ua\d\s-2DEC\s0, \s-2PDP-11\s0, \s-2QBUS\s0, and \s-2UNIBUS\s0 are trademarks of Digital Equipment Corporation. .br \u\(dd\d\s-2UNIX\s0 is a trademark of Bell Laboratories. .FE this release and the January 1989 \*(Ps distribution. .PP It is intended to provide sufficient information that those who maintain the kernel, have local modifications to install, or who have versions of \*(Ps modified to run on other hardware should be able to determine how to integrate this version of the system into their environment. As always, the source code is the final source of information, and this document is intended primarily to point out those areas that have changed. .LP Most of the changes between \*(Ps and \*(2B fall into one of several categories. These are: .RS .IP \(bu 3 bug fixes, .IP \(bu 3 performance improvements, .IP \(bu 3 addition of 4.3BSD system calls and application programs, .IP \(bu 3 removal of features no longer supported in the 4.3BSD release, .IP \(bu 3 new protocol and hardware support. .RE .LP The major changes to the kernel are: .RS .IP \(bu 3 the implementation of the 4.3BSD on disk directory structure, .IP \(bu 3 a rewrite of the kernel I/O interface using the 4.3BSD UIO/IOVEC mechanism, .IP \(bu 3 the addition of system calls, .IP \(bu 3 replacement of even more of the high kernel with portions of the 4.3BSD kernel, .IP \(bu 3 the addition of the 4.3BSD namei cache, .IP \(bu 3 additional restructuring of the kernel into the 4.3BSD structure. .RE .PP The major purpose of this document is to summarize the changes between this and the January 1989 release of 2.10BSD. The latter was designated as \*(Ps. Although the changes are fairly simple to describe, they cover large portions of the distribution. Most will not be visible to either users or administrators; in some cases no recompilation is necessary. However, since the on disk directory structure and password file format have changed, programs which deal with directories or the password file will need to be recompiled. Administrators should be aware that the 4.3BSD disk quota system is available and works quite well. .PP The major change, and the reason for the release, is an .B extensive reworking of the kernel to implement the \fIreadv\fP and \fIwritev\fP system calls and the 4.3BSD on disk directory structure. Filenames are no longer limited to 14 characters in length. At present, MAXNAMELEN is set at 63 (one fourth of the maximum path name length specified by MAXPATHLEN). .PP In application land, many of the 4BSD changes/enchancements released over the Internet have been ported to \*(2B, most notably the shadow password file (with password aging), FTP with the \fIrestart\fP capability, rshd and rlogind with security fixes. .B Many other programs have had fixes applied, in particular, the line printer spooling sub-system. .PP This document is not intended to be an introduction to the kernel, but assumes familiarity with prior versions of the kernel, particularly the \*(Ps release. Other documents may be consulted for more complete discussions of the kernel and its subsystems. It cannot be too strongly emphasized that \*(2B resembles 4.3BSD even more than \*(Ps did. The tradition of remaining bug-for-bug compatible with 4.3BSD has been continued. It is \fBSTRONGLY\fP recommended that 4.3BSD manuals be consulted when using this system. 2.9BSD manuals are not even close to being correct. Online documentation is as complete and correct as time permitted. .PP This release is not supported, and it is definitely .B NOT an official Berkeley release. It was called \*(2B because of the number of changes (including the file system) and because a coldstart from tape is required. The ``bugs'' address supplied with this release (as well as with the 4BSD releases) will work for some unknown period of time; \fBmake sure\fP that the ``Index:'' line of the bug report indicates that the release is ``2.11BSD''. See the \fIsendbug\fP(8) program for more details. All fixes that I make, or that are sent to me, will be posted on \fIUSENET\fP, in the news group ``comp.bugs.2bsd''. .PP The author would like to thank the following people for their contributions to the development of this release. His employer for providing the environment and equipment used in the creation of this release. To Paul Taylor (taylor@oswego.oswego.edu) for doing the 11/73 testing in spite of Q22 being undefined. To Terry Kennedy (terry@spcvxa.spc.edu) for being eclectic enough to beta-test a \*(2B system alongside the VMS and RSTS systems. .PP Finally, much credit should go to the authors of 4.2BSD and 4.3BSD from which even more was stolen than had previously been the case for \*(Ps. se the loaded images will not contain the new routine from the library. The following sequence will accomplish this. .DS \fB#\fP cd /usr/src \fB#\fP make clean \fB#\fP make build \fB#\fP make installsrc .DE The first \fImake\fP removes any existing binaries in the source trees to insure that everything is reloaded. The next \fImake\fP compiles and installs the libraries and compilers, then compiles the remainder of the sources. The final line installs all of the commands not installed in thedoc/2.10/kchanges.2.11/1.t 644 0 12 31416 4731010703 7665 .nr i \w'\fBkern_resource.c\0'u/1n .de XP .IP \\fB\\$1\\fP \\ni .. .NH Organizational changes .PP The directory organization and file names are almost identical to that of \*(Ps. This document summarizes the changes between \*(Ps and \*(2B. For a description of the differences between 2.9BSD and \*(Ps refer to the documentation in /usr/doc/2.10/kchanges.2.10. .PP The following files in /sys/h have changed in \*(2B. .XP uio.h The 4.3BSD \fIuio\fP and \fIiovec\fP structures were ported. scatter/gather i/o is implemented in \*(2B. The compatibility routines have been replaced with system calls. .XP buf.h The device number was included in the buffer hashing function. The .B SMALL conditional was removed. .XP file.h The \fIfileops\fP structure from 4.3BSD was added. .XP dir.h The 4.3BSD version was ported, the old V7 directory structure is gone. .XP mbuf.h Change made to the mbuf allocation macro to call the drain routines if out of mbufs. This is useful when a large number of connections are in TIME_WAIT states. .XP namei.h The 4.3BSD \fInamei\fP argument encapsulation and inode cache structures were ported. .XP proc.h The .B SMALL conditional was removed because it is now standard. .XP user.h Many changes made to the \fIuser\fP structure. The members \fIu_offset\fP, \fIu_count\fP, \fIu_segflg\fP, and \fIu_base\fP do not exist now. The \fIu_nd\fP and \fIu_ncache\fP are either new or changed. .XP msgbuf.h The 4.3BSD kernel error logger (\fI/dev/klog\fP) is now present in \*(2B, the message buffer is now external to the kernel. .XP inode.h Both the on disk and incore inode structures have changed. The incore inode has had \fIi_id\fP added as part of the \fInamei\fP cache support. The on disk structure defines block numbers as \fBdaddr_t\fP now, the old 3 byte packing scheme is obsolete at last. .NH 2 /sys/sys .PP The following files were changed for \*(2B. .XP tty.c Changes to use \fBuio/iovec\fP instead of fixed offsets in user structure. .XP vm_text.c Use new \fIrdwri\fP kernel I/O routine. .XP init_sysent.c Added \fIreadv\fP and \fIwritev\fP. .XP init_main.c Use \fIrdwri\fP and \fInamei\fP argument encapsulation. .XP ufs_namei.c Totally rewritten from the 4.3BSD source. Implements the argument encapsulation and maintains the name translation cache. .XP kern_exec.c Use \fIrdwri\fP instead of \fIreadi\fP. .XP sys_pipe.c Use \fIrdwri\fP. Defines a \fIfileops pipeops\fP table for use by sys_generic.c in dispatching i/o requests. .XP kern_acct.c \fInamei\fP encapsulation when looking up accounting file name. .XP sys_inode.c Defines \fIfileops inodeops\fP, use \fIrdwri/rwip\fP, \fBQUOTA\fP check ignores \fBPIPES\fP now. Remove a couple extraneous \fIsaveseg5\fP calls. .XP kern_clock.c Autonice long running processes like 4.3BSD does. Programs in an endless loop impact the system less if this is done. .XP kern_descrip.c Uses the externally \fIfileops\fP tables to dispatch file requests. \fIclosef\fP had the extra argument \fInouser\fP removed because it was no longer used and the 4.3BSD sources did not refer to it any longer. .XP ufs_fio.c Use the \fInamei\fP argument encapsulation. .XP ufs_inode.c Extra \fIsaveseg5\fP call removed. \fIigrab\fP ported from 4.3BSD. \fBSMALL\fP conditional definition of HASHSIZE removed, the smaller value made the default. .XP sys_generic.c \fIreadv\fP and \fIwritev\fP implemented. \fIfileops\fP and \fIuio/iovec\fP changes. .XP kern_sig.c \fInamei\fP argument encapsulation changes in \fIcore\fP. The core file written using \fIrdwri\fP instead of \fIwritei\fP. .XP kern_subr.c \fIuiomove\fP rewritten to use \fIuio/iovec\fP mechanism. .XP kern_synch.c \fBSMALL\fP conditional definition of \fBSQSIZE\fP removed, the smaller value made the default. .XP subr_prf.c \fIlog\fP defined to provide the kernel interface to \fBsyslogd\fP. The message buffer is now 4kb and resides external to the kernel. .XP ufs_alloc.c Extra include files needed due to changes in some of the \fI/sys/h\fP files. .XP tty_pty.c Changes to use \fIuio/iovec\fP mechanism. .XP vm_swp.c \fIphysio\fP and \fIphysstrat\fP ported from 4.3BSD and now use the \fIuio/iovec\fP mechanism. .XP tty_tb.c \fIuio/iovec\fP changes. .XP ufs_mount.c \fInamei\fP argument encapsulation changes. Prevent \fImount\fP on a directory which is already itself a \fImount\fP point. .XP ufs_bmap.c Additional include files needed due to changes in \fI/sys/h\fP. .XP tty_tty.c \fIuio/iovec\fP changes. .XP ufs_syscalls.c \fIrename\fP ported fresh from 4.3BSD, \fInamei\fP argument encapsulation changes, directory syscalls changed to handle the new directory structures. Many changes in this file. .XP uipc_socket.c \fIuio/iovec\fP changes. .XP uipc_mbuf.c Changes to call the drain routines on a mbuf shortage. This is useful if many sockets are in the TIME_WAIT state at once due to something like a \fIftp mget/mput\fP transferring many files in a short period of time. The storage for the starting addresses (both physical click and UNIBUS) of the DMA I/O region are declared here, see \fIsys_net.c\fP for their use. .XP uipc_usrreq.c \fIuio/iovec\fP changes. .XP quota_kern.c \fIrdwri\fP used instead of \fIreadi\fP. .XP sys_net.c The ACC LH/DH-11 (if_acc.c) and Proteon proNET (if_vv.c) network interfaces added. \fIuiomove\fP rewritten to use \fIuio/iovec\fP mechanism. \fIputchar\fP redefined as \fI_pchar\fP and a macro written to call the kernel \fIputchar\fP routine. This causes networking error messages to be passed thru the kernel logger to \fIsyslogd\fP. A missing third argument added in the \fISKcall\fP to \fIputchar\fP. To greatly reduce the number of UMRs consumed by network interface drivers the DMA I/O region is mapped once using the minimal number of UMRs required. The starting click address and UNIBUS virtual address are saved for use in \fIpdpif/if_uba.c\fP. .XP sys_kern.c \fInamei\fP argument encapsulation changes. .XP subr_log.c The kernel logger ported from 4.3BSD. .XP uipc_syscalls.c \fIuio/iovec\fP changes, \fIsendmsg\fP, etc ported fresh from 4.3BSD to handle scatter/gather i/o correctly. .NH 2 /sys/conf .PP The following files were changed for \*(2B. .XP GENERIC \fBSMALL\fP was moved to the always defined category to save kernel D space. .XP Make files The Make.* files were modified to add the kernel logger and to reflect the changes in some of the kernel file names. With file names greater than 14 characters supported, kern_resrce.c becomes kern_resource.c, etc. .XP checksys.c There were several bugs fixed in the program's calculation of how much memory the system would occupy. .NH 2 /sys/pdpuba .PP Almost \fBALL\fP of the files in this directory were modified. The modifications were small, usually nothing more than passing an extra \fIuio\fP argument in the \fIxxread\fP and \fIxxwrite\fP functions on thru to \fIphysio\fP. .XP tmscp.c This driver is new to \*(2B. At present it has only been tested on an 11/73 with a TK50. .PP In addition the \fIsys/OTHERS\fP directory has had several ``new'' device drivers added to it that may or may not work. A cursory pass was made thru this directory to add the \fIuio/iovec\fP changes - no guarantee is made that all necessary changes were made, or that the changes made will work. It is extremely probable that they do not handle the new ioctl protocols and it is also likely that they do not correctly map buffers in and out of kernel space correctly. For more information regarding the installation of device drivers, see the file \fIsys/OTHERS/README\fP. This is a rambling, disjointed ``must'' for the driver hacker. You should also see this directory if you are having problems with a driver that's currently in place in 2.10BSD. There are several different versions of drivers, bug fixes etc. that we just didn't have time to install and/or test out. A great deal of work has been done on the \fIra\fP and \fIxp\fP drivers. They are known to work, and work reliably. You should use them, if at all possible. .NH 2 /sys/pdpmba .NH 2 /sys/pdp .PP The following files were changed in \*(2B: .XP conf.c Entries added in the \fIcdevsw\fP and \fIbdevsw\fP tables for \fI/dev/klog\fP and \fItmscp\fP tapes. .XP seg.h Changed the \fBnormalseg5\fP macro to not depend on \fBQUOTA\fP. This is safe since quota manipulation only occurs in the high kernel. .XP scb.s Define vectors for ACC LH/DH-11 and Proteon proNET network interfaces. .XP machparam.h Definitions from files in /usr/include/OLD were moved into this file. Almost all of /usr/include/OLD has been removed. .XP trap.c Changes made to save more information if the network crashes and to prevent further corruption from happening. .XP machdep2.c Allocate memory for the external kernel error message buffer and the \fInamei\fP cache. .XP mch_click.s Extra \fBmov\fP instructions removed (to save I space) and the loop count doubled. Never did know why memory was copied in 4 loops of 8 \fBmov\fP instructions instead of 8 loops of 4 \fBmov\fP instructions. .XP mem.c Ported fresh from 4.3BSD. Uses the \fIuio/iovec\fP mechanism now. .XP cons.c Changes to use the \fIuio/iovec\fP mechanism. .XP mch_dump.s Save area for extra information on network crash allocated. .XP mch_xxx.s Same changes as made to mch_click.s and the \fIdelay\fP routine is no longer conditional on a networking system being defined. .XP mch_var.s The flag \fIubmap\fP was made an \fIint\fP instead of a \fIchar\fP to force even alignment. Even alignment is required for use by the \fImfkd\fP function from the networking code. The networking no longer has its own private/wired copy of \fIubmap\fP, instead the kernel version is examined in exactly one place:\fIpdpif/if_uba.c\fP. .XP net_mac.h \fIputchar\fP macro defined for the supervisor mode networking to use when calling the kernel \fIputchar\fP routine. The \fINETUBAA\fP macro was modified to be a 0 if not on a UNIBUS system, this allows code to be written which checks \fIubmap\fP and references NETUBAA for the UNIBUS case but returns earlier for the Qbus case. .XP net_trap.s Network device interrupts now included in system interrupt counts. .XP tmscp.h This file is new and contains the definitions for the TMSCP driver. .NH 2 /sys/mdec .PP \fBALL\fP of the bootstraps have been modified to read the new on disk directory structure. The changes to read the more complicated directory format necessitated the removal of prompting from all bootstraps. If \fB/boot\fP can not be found you are in deep trouble. .NH 2 /sys/netinet .PP The following were changed in \*(2B: .XP raw_ip.c Changes to support the \fItraceroute\fP utility. .XP tcp_subr.c Changes to support the \fItraceroute\fP utility. .NH 2 /sys/pdpstand .PP The following were changed in \*(2B: .XP maketape.c Changes made to use \fImtio\fP(4) functions to write tapemarks instead of doing a open/close/open sequence on the non-rewind tape. This change was necessitated by TU81s at 1600BPI. .XP sys.c New directory reading routine written. .XP ra.c Error checking corrected. .XP tmscp.c This is a newly ported standalone TMSCP driver (TK50/TU81). .NH 2 /sys/netimp .PP The following were changed in \*(2B: .XP if_imphost.h .XP if_imp.c .XP if_imphost.c Porting to the supervisor mode networking, some changes to fix compiler errors, other changes to fix bugs. .NH 2 /sys/pdpif .PP The following were changed in \*(2B: .XP if_vv.h .XP if_vv.c Under \*(Ps these files were accidentally placed in the supported directory when they would not even successfully compile. For \*(2B these were ported from 4.3BSD and the changes necessary to operate in the supervisor mode networking were made. .XP if_acc.c Changes to run in supervisor mode were made as well as several bugs (missing arguments, etc) being fixed. .XP if_uba.c The routine \fIubmalloc\fP() was rewritten to compute addresses using the pre-allocated UMRs which map the DMA I/O region. \fIubmalloc\fP() does not allocate UMRs now. Also, the calling convention of \fIuballoc\fP and \fIubmalloc\fP has changed. .XP if_de.c .XP if_de.h The calls to \fIuballoc\fP and \fIubmalloc\fP had to be changed. The \fIdereset\fP routine was removed for two reasons: 1) The concept of a UNIBUS being reset without a system reboot is meaningless on a PDP-11, 2) \fIdereset\fP wouldn't work even if it was called due to resource exhaustion. .XP if_il.c The second call to \fIuballoc\fP() in \fIilinit\fP() was removed. The UNIBUS resources are allocated at attach time, the second call was allocating (and wasting) UMRs which were not needed. .XP if_dmc.c The reset routine was removed for the same reasons it was removed in \fIif_de.c\fP. .XP if_qe.c The previous version of the driver was flaky and would hang at unpredictable time. The current version is marginally slower, but is a fresh port of the 4.3BSD driver which no longer hangs or grabs and holds 20 mbufs. This driver will statically allocate a fixed number of buffers from main memory after first using the the memory dedicated to the network DMA arena. .NH 2 /sys/net .PP The skeletal support for PUP has been removed. tem less if this is done. .XP kern_descrip.c Uses the externally \fIfileops\fP tables to dispatch file requests. \fIclosef\fP had the extra argument \fInouser\fP removed because it was no longer used and the 4.3BSD sources did not refer to itdoc/2.10/kchanges.2.11/2.t 644 0 12 15057 4731010705 7673 .de UX UNIX\\$1 .. .FS .IP \(ua UNIX is a Trademark of Bell Laboratories. .FE .NH Changes inside the kernel .IP 1) The user structure \fIu\fP has undergone several changes. The members \fIu_offset\fP, \fIu_count\fP, \fIu_segflg\fP and \fIu_base\fP have been removed. Drivers and programs which refer to them will no longer compile. The kernel now allocates a \fIstruct uio\fP dynamically on the stack and refers to the \fIuio_offset\fP, \fIuio_iovec\fP, \fIuio_segflg\fP members, exactly as 4.3BSD does. .IP The \fIu_ncache\fP structure was modified to remove the timestamp member to save space - there were no references anywhere to it. .IP The changes to the \fIu\fP structure make old core images unusable by the debugger \fIadb\fP. .IP 2) The \fInamei\fP function has a new calling convention with its arguments, associated context, and side effects encapsulated in a single structure. \fInamei\fP has been extensively modified to implement the name cache and to cache directory offsets for each process. It may now return ENAMETOOLONG when appropriate, and returns EINVAL if the 8th bit is set on one of the path name characters. .IP The automatic and silent truncation of file names to 14 characters is not performed - a name longer than MAXNAMELEN (currently 63) will produce the error ENAMETOOLONG. .IP A table of recent name-to-inode translations is maintained by \fInamei\fP, and used as a look-aside cache when translating each component of each file path name. Each \fInamecache\fP entry contains the parent directory's device and inode, the length of the name, and the name itself, and is hashed on the name. It also contains a pointer to the inode for the file whose name it contains. Unlike most inode pointers, which hold a ``hard'' reference by incrementing the reference count, the name cache holds a ``soft'' reference, a pointer to an inode that may be reused. In order to validate the inode from a name cache reference, each inode is assigned a unique ``capability'' when it is brought into memory. When the inode entry is reused for another file, or when the name of the file is changed, this capability is changed. This allows the inode cache to be handled normally, releasing inodes at the head of the LRU list without regard for name cache references, and allows multiple names for the same inode to be in the cache simultaneously without complicating the invalidation procedure. An additional feature of this scheme is that when opening a file, it is possible to determine whether the file was previously open. This is useful when beginning execution of a file, to check whether the file might be open for writing, and for similar situations. .IP 3) Compatibility with previous versions of PDP-11 .UX \(ua is limited to partial binary compatibility with \*(Ps. \*(Ps programs which do not read directories or the password file should run without change. It is \fBstrongly\fP recommended that applications be recompiled to obtain the benefit of the changes to the system libraries. .IP Because the file system has changed with \*(2B old file systems can not be mounted. There is a version of \fIdump\fP available in /usr/src/old/dump which understands the old directory structure of 2.10.1BSD filesystems. .IP Old \fIdump\fP tapes from 2.10BSD or \*(Ps are automatically converted by \*(2B's \fIrestor\fP on input. .IP 4) As mentioned earlier, the \fIuio/iovec\fP method of kernel I/O has been implemented. If you have local drivers, they will require some work. There are many working examples in \fI/sys/pdpuba\fP. The routines \fIreadi\fP and \fIwritei\fP do not exist any longer, having been replaced with the general 4.3BSD \fIrdwri\fP routine. .IP 5) The ``real-time'' features of 2.9BSD should probably go away, but for now they have been left in place, and, should work as they always have, with one major exception. The \fIfmove\fP() routine has not been fixed to be interruptible. See the \fIcopy\fP() routine for examples of what needs to be done to make it behave correctly. This, however, will be fairly difficult. I suggest that if you want to use \fBCGL_RTP\fP that you comment out the use of \fIuiofmove\fP() in \fIuiomove\fP(). .IP 6) The 4.3BSD kernel logger \fI/dev/klog\fP has been implemented. Kernel messages are placed in the message buffer and are read from there through the log device \fI/dev/klog\fP. The \fIlog\fP routine is similar to \fIprintf\fP but does not print on the console, thereby suspending system operation. \fILog\fP takes a priority as well as a format, both of which are read from the log device by the system error logger \fIsyslogd\fP. \fIUprintf\fP was modified to check its terminal output queue and to block rather than to use all of the system clists; it is now even less appropriate for use from interrupt level. \fITprintf\fP is similar to \fIuprintf\fP but prints to the tty specified as an argument rather than to that of the current user. \fITprintf\fP does not block if the output queue is overfull, but logs only to the error log; it may thus be used from interrupt level. Because of these changes, \fIputchar\fP and \fIprintn\fP require an additional argument specifying the destination(s) of the character. The \fItablefull\fP error routine was changed to use \fIlog\fP rather than \fIprintf\fP. Some of the other drivers \fIdh\fP and \fIbr\fP also have been modified to use \fIlog\fP. .IP The message buffer is now 4kb in size and is external to the kernel. The message buffer is mapped when data is written or read from the buffer. This obsoletes \fIdmesg\fP(8) which has been modified to find the external message buffer on the off chance anyone still wants to run it. .IP 7) Most of the conditional compilation defines in the 2.9BSD kernel have been removed because the features they controlled are now either standard The following table lists \fI#defines\fP that are now a standard part of \*(2B. .TS center box; l | l | l l | l | l. define name feature comment _ SMALL use smaller hash table and queues to save D space .TE .IP 8) Directory truncation now is performed the same way as 4.3BSD does it, and directories are always a multiple of 512 bytes. The old method of truncating directories with 10 or more trailing empty slots has disappeared. There is a new version of \fIfsck\fP which can automatically create and extend (up to the number of direct blocks allowed, currently 4) the \fIlost+found\fP directory. .IP 9) Again, it must be mentioned that this document summarizes the changes from \*(Ps to \*(2B. If you are upgrading from a earlier version than \*(Ps or 2.10BSD you will want to format and read the documentation in /usr/doc/2.10/kchanges.2.10 and /usr/doc/2.10/setup.2.10. on \fBQUOTA\fP. This is safe since quota manipulation only occurs in the high kernel. .XP scb.s Define vectors for ACC LH/DH-11 and Proteon proNET network interfaces. .XP machparam.h Definitions from files in /usr/include/OLD were moved into this file. Almost all of /usr/include/OLD has been removed. .XP trap.c Changes made to save more information if the network crashes and to prevent further corruption from happening. .XP machdep2.c Allocate memory for the edoc/2.10/kchanges.2.11/3.t 644 0 12 44435 4733175704 7713 .NH Changes in application programs and libraries. .PP The application directories have been rearranged slightly in an effort to follow the 4.3Tahoe based updates released over the Internet. Many programs which used to be single .c source files are now subdirectories with their own make files (\fIlogin\fP(1) for example). As in the kernel, the goal was to remain as true to the 4.3BSD sources as possible. In some of the source directories there are either or both of the special directories ``PORT'' and ``OLD''. PORT contains copies of 4.3BSD source which ought to be ported to \*(2B, but due to time constraints had to be left undone. The number of PORT directories included with \*(2B is smaller than with \*(Ps for two reasons: 1) to keep the distribution from being more than two reels of tape and 2) the amount of new/ported software has increased greatly. Copies of the missing PORT directories are available from either a cooperating 4.3BSD system or the network archives around the world. OLD contains copies of 2.9BSD source that, while we have ported the 4.3BSD version of the source code, we're unsure enough of it that we wanted to provide a backup copy. The only OLD directory of significance included in \*(2B is /usr/src/new/OLD which contains miscellaneous bits of trivia such as \fIlisp11\fP and so on. The portable/ASCII \fIar\fP(1) file format from 4.3BSD has been implemented, this is described in the paragraphs below. The following paragraphs are a description of several things that have changed outside of the kernel. .IP 1) Since the C compiler still only recognizes seven significant characters in external names, several standard library names had to be changed to prevent name collisions. However, to prevent portability problems in your programs you should use the standard names. All known collisions in the standard include files or the C library have been handled either in the include file itself or in the include file \fIinclude/short_names.h\fP. This works because we're using the 4.3BSD C preprocessor, which has flexnames. Networking programs almost always need to include \fIshort_names.h\fP. See \fIsrc/bin/mail.c\fP and \fIsrc/bin/login/login.c\fP for examples of long name work arounds. The C library itself with only a couple exceptions is a port of the 4.3BSD C library. .IP 2) Files ported from 4BSD systems that have more than MAXNAMLEN characters will no longer port correctly. Since MAXNAMLEN has been raised to 63 this should not be a problem. .IP 3) The directory reading routines are a fresh port from 4.3BSD and are part of stdio. The old V7 directory structure does \fBNOT\fP exist any longer in \fIdir.h\fP. There are only two programs in \*(2B which know what the old directory structure looked like: src/old/\fIdump\fP and \fIrestor\fP(8). The define ``DIRSIZ'' has been ported (and fixed, there was a rounding error) from 4.3BSD. MAXNAMLEN is now 63. It would be possible (and certainly easier) to raise this now than it was to implement the new filesystem initially, but once raised the limit can not be lowered. .IP 4) The 4.3BSD manual pages for \fIsigblock\fP(2), \fIsigpause\fP(2), and \fIsigsetmask\fP(2) are deceptive. They indicate that signal masks are integers, but, they must be able to hold 32 bits. Typically you'll see code like: .nf .ft B int omask; omask = sigsetmask(0); ... sigsetmask(omask); .ft R which should be translated to: .ft B long omask; omask = sigsetmask(0L); ... sigsetmask(omask); .ft R .fi In general, the fact that 4.3BSD thinks an ``int'' is 32 bits is the worst porting problem that you'll run into; finding ``ints'' that should be ``longs'' is an arcane art. Routines that I look for as a matter of habit are any one of the \fIseek\fP(2) routines, \fIftell\fP(3), \fItime\fP(2), the various \fIsignal\fP(2) routines, \fIselect\fP(2) and the \fItruncate\fP(2) routines. .IP The functions \fIsigblock\fP and \fIsigsetmask\fP are defined as returning a long result in \fIh/signal.h\fP, which should ease some of the porting problems. The lint libraries have also been updated. In general, though, you'll have to scan any source you plan on porting for calls to \fIsigblock\fP, \fIsigpause\fP, or \fIsigsetmask\fP that take an int as a parameter or store their return value in an int. .IP To give an indication of the subtlety the long/int problem can take on, consider the following code fragment taken from /sys/sys/tty.c: .nf .ft B newflags = (tp->t_flags&0xffff0000) | (sg->sg_flags&0xffff)); .ft R .fi where \fInewflags\fP and the fields \fIt_flags\fP and \fIsg_flags\fP are all longs. The problem occurs with "sg->sg_flags&0xffff". The intent is fairly obvious, but in \fBlong op int\fP the \fBint\fP ("0xffff") is sign-extended to \fBlong\fP ("0xffffffff") before the operation as per K&R. The resulting operation in this case is a no-op! The fix is fairly simple in this instance and yields the following: .nf .ft B newflags = (tp->t_flags&0xffff0000) | (sg->sg_flags&0xffffL)); .ft R .IP 5) The PDP-11 \fIsetjmp\fP(2) implementation contains a subtle bug that occurs when a routine containing a \fIsetjmp\fP has \fIregister\fP variables. The bug sometimes causes those variables to be given invalid values when a longjmp is made back to the routine. This is probably impossible to fix in a reasonable manner, and it's much simpler to simply avoid register variables in such routines. .IP 6) The optional '#' character is still not supported by \fIprintf\fP(3). .IP 7) The DEC MXV11 bootstrap ROM, for the RL's, TU's, RX's, TK's and RD's among others, \fIrequires\fP that deadstart blocks begin with an 0240 and a branch. This has already been implemented in \fIrauboot.s\fP and \fIrluboot.s\fP in \fIsys/mdec\fP as well as \fIsys/pdpstand/tmscpboot.s\fP. .IP 8) To port the 4.3BSD \fImake\fP(1) program, several of its table sizes had to be reduced. Make is very unforgiving of Makefiles that are too large. If make drops core for no reason that you can think of, try reducing the size of the Makefile. Also, don't run make depend in the system application directories, make can't handle it. .IP 9) Don't set \fIcsh\fP history too high; it eventually runs out of space and logs you out. \fIcsh\fP now is overlaid. The additional code added by the shadow password file routines pushed \fIcsh\fP over the edge - no surprise there, \fIcsh\fP was within a couple hundred bytes to begin with. Since \fIcsh\fP had to be overlaid, \fIlimits\fP were enabled. .IP 10) The games directory under \*(Ps was largely untested and nothing has been done to change this. .IP 11) The C compiler actually handles bit fields (but generates atrocious code), identically named global structure elements, and lots of other stuff. The generated code is not terrible overall but not exactly great either, and the optimizer does very little to correct the situation. It \fIdoesn't\fP handle any of the old assignment operators, and, not only doesn't handle them, but \fBproduces bogus code\fP. It is \fBSTRONGLY\fP recommended that you read the file \fIsrc/lib/ccom/TEST/README\fP. It goes into the problems with this compiler in more depth and contains some other Extremely Important Information. .IP 12) \fIreadv\fP(2) and \fIwritev\fP(2) under \*(2B are implemented as actual system calls rather than compatibility routines. At present very little in the system aside from \fIperror\fP(3) and \fIsyslog\fP(3) use scatter read or write. .IP 13) There is a define, ``SEPFLAG'', in many Makefiles, that governs compilation for separate and non-separate I/D machines. If you have a non-separate I/D machine, set it to ``-n''. If you have a separate I/D machine, set it to ``-i''. This should really go away since the chances of \*(2B ever running on a non-split machine are not distinguishable from zero at this time. Too many capabilities have been added, programs such as \fIcsh\fP and sendmail have to be overlaid even on split I/D machines! .IP 14) The directory \fI/usr/src/new\fP is a compendium of programs moved in from the 4.3BSD directory \fIusr/src/new\fP, assorted programs ported to \*(2B from various places around the Internet, and remnants from the 2.9BSD \fIusr/src/local\fP and \fIusr/src/contrib\fP directories. Most of the programs in \fI/usr/src/new\fP have been in production use for many months, while others are less well tested. .IP 15) New versions of \fIftp\fP and \fIftpd\fP are present. The stream restart capability is present allowing an aborted transfer to be restarted if the remote server also provides the \fIrestart\fP command. Also a number of bugs were fixed, some were simple long vs. int problems, in other cases both \fIftp\fP and \fIftpd\fP insisted on freeing memory which had never been allocated (in a couple cases part of the stack would be free'd!). .IP 16) \fImkpasswd\fP, \fIchpass\fP, \fIpasswd\fP, \fIvipw\fP, \fIlock\fP were ported from the 4.3BSD shadow password implementation. The password file format has changed, and unlike the Vax version, the new password files are not binary compatible with old programs. Any program which uses the password routines will have to be relinked with the new libraries. .IP The maximum length of a login name has been increased from 8 to 15 under \*(2B. This was dictated by having to share development facilities with production systems where the length had been increased. If this change is not acceptable, then the \fIutmp.h\fP file will have to be edited and the system libraries and applications recompiled. .IP 17) \fIrlogind\fP, \fIrshd\fP, \fIrcp\fP, \fIfingerd\fP, \fIsyslogd\fP, \fIfinger\fP are all ported from Internet distributed 4BSD bugfix releases. These programs include many security enhancements, and in the process of porting them to \*(2B the long vs. int bugs were fixed as well. .IP 18) \fIsendmail\fP had a fatal memory leak in alias processing. A string extraction method is used (thank you Cyrus) to reduce sendmail's D space requirements by about 5kb - there is now the file \fI/usr/lib/sendmail.sr\fP used to hold much of sendmail's string data. .IP \fIctimed\fP is a program which moves the time zone/daylight savings time tables to a separate process, this saves approximately 2kb of D space in sendmail. The \fIctime\fP(3) entry points are replaced in \fIsendmail/src/ctime.c\fP with calls to \fIctimed\fP. At present only \fIsendmail\fP uses \fIctimed\fP, but the method may be used by any process which needs to save about 2kb of D space. .IP 19) \fIvmstat\fP was modified to print out the namei cache statistics. A typo was corrected which caused \fIvmstat\fP to omit print the DZ pseudo dma count. .IP 20) The assembler \fIas\fP underwent \fBMAJOR\fP changes to permit it to run split I/D (the text being sharable speeds loading). The buffer sizes \fIas\fP uses to read and write files was doubled from 512 to 1024 bytes. .IP 21) \fIcsh\fP was overlaid because the password file library routines grew in size. The overlay scheme is optimal, the only time an overlay switch is incurred is when doing a ~ expansion. \fIlimits\fP are now enabled. .IP 22) \fIfsck\fP, \fIicheck\fP, \fIdcheck\fP, \fIncheck\fP, \fImkfs\fP, \fImkproto\fP were all ported from 4.3BSD to handle the new on disk directory structure. The 30000 inode/file limit in \fIdcheck\fP has been removed. \fImkfs\fP no longer has the ability to populate a filesystem with files, this capability has been moved to \fImkproto\fP. Note: \fImkproto\fP can only handle files up to single indirect (about 256kb) in length. .IP \fIfsck\fP can now recover from a disconnected root inode! also, \fIfsck\fP can create and dynamically expand \fIlost+found\fP up to the number of direct blocks allowed to an inode. This limit is comparable to the number of empty slots created by the obsolete \fImklost\fP(8). \fImklost\fP(8) has been renamed \fImklost+found\fP(8) and uses 63 character file names to create the empty slots. .IP 23) \fImake\fP has been fixed to correctly handle library archive members The man page was correct, \fImake\fP just had a bug. .IP 24) \fIld\fP had a bug in computing the size of the symbol table. This resulted in debuggers not being able to find symbols. Other bugs in the loadmap and trace options were fixed. Modifications were also made to accommodate the new \fIar\fP archive file format. .IP 25) \fIranlib\fP has the -t option from 4.3BSD now. This allows the internal time on an object archive to be updated (typically used after a copy which changed the timestamp on the file but not that within the archive). \fIranlib\fP was modified to handle the new \fIar\fP archive file format. .IP 26) \fIlogin\fP is a new version ported from the 4.3BSD shadow password file release. This version of \fIlogin\fP performs the password and account aging checks. .IP 27) \fIchroot\fP is a utility ported from 4.3Tahoe, used to execute a command after issuing a \fIchroot\fP(2) system call. .IP 28) Both \fIwrite\fP and \fIwall\fP had long vs. int bugs. .IP 29) \fIdump\fP and \fIrestor\fP were modified to handle the new directory structure. \fIrestor\fP can read old \*(Ps \fIdump\fP tapes. .IP 30) \fImkhosts\fP now correctly handles a host having multiple addresses. Although host table usage is discouraged in this era of domain name service, if you want to use host tables they should at least work. .IP 31) The \fBhayes\fP dialer in the \fItip\fP program was totally broken. The correct solution would have been to rewrite it to behave like the \fIuucp\fP \fBhayes\fP dialer, but time did not permit this. The fixed version will work, but it's not pretty. .IP 32) The spooling system (\fIlpd\fP) was rife with long vs. int bugs, in particular the free space check could cause the connection to be dropped. Another problem, that of removing print jobs has been fixed by implementing long file names - the concatenation of the hostname to a queue id previously would result in mismatches of file names when trying to remove remote requests. A small change was made to permit printing of the new ASCII \fIar\fP archive files. .IP 33) The pascal subsystem had a flaw in the \fIclock\fP() function, the floating point conversions of the timeofday were wrong. .IP 34) \fIf77\fP had a bug in the \fBequivalence\fP handling caused by a long vs. int problem. .IP 35) \fIrn\fP, \fIzmodem\fP, \fInotes\fP, \fIkermit\fP have been ported. The overlay schemes for \fIrn\fP and \fInotes\fP are definitely not optimal, but the programs will run. There were numerous long vs. int problems corrected, hopefully all were found, but there might be some lurking about. .IP \fIkermit\fP is a fairly modern version (4F(89)), the DEBUG option had to be left disabled to fit the D space available. The comment about one of the modules crashing optimizers is correct - it has to be compiled manually so that the remaining modules can use the -O flag. .IP 36) A version of the Network Time Protocol has been ported. Typical usage is to use \fIntp\fP to synchronize the PDP-11 with a master system. The daemon \fIntpd\fP does run and will use \fIadjtime\fP(2) to adjust the system clock. .IP 37) The \fItraceroute\fP program has been ported, the kernel modifications are included in \*(2B as well. .IP 38) \fIgetpwent\fP(3) could fail to recognize when a rewind of the password file was necessary. .IP 39) \fIqsort\fP(3) could fail when sorting large arrays, a missing 'unsigned' was the cause. .IP 40) \fIsignal(3)\fP misdeclared the saved signal masks as \fBint\fP rather than \fBlong\fP. .IP 41) \fIstrdup\fP(3), \fIstrsep\fP(3), \fIreadv\fP(2), \fIwritev\fP(2), \fIstrtok\fP(3) are new to \*(2B. .IP 42) \fIputs\fP(3) is implemented in C rather than assembly. The assembly version is still present on the system, but has a fatal flaw in programs which run out of D space. The port of \fBputs.s\fP from the Vax assembly is correct, but the PDP-11 can fail to \fImalloc\fP(3) a buffer where the Vax would succeed, the failure to allocate the buffer causes file corruption when \fIputs\fP is called. .IP 43) \fIperror\fP, \fIgetusershell\fP, \fIrcmd\fP are new versions ported from 4.3BSD Internet releases. .IP 44) \fIgethostent\fP, \fIgethnamadr\fP have been rewritten to support multiple addresses per host. .IP 45) \fIsyslog\fP had a long vs. int bug corrected in a \fIsignal\fP mask. .IP 46) \fIreaddir\fP was ported from 4.3BSD to handle the new directory structure. .IP 47) \fIreadv\fP and \fIwritev\fP are system calls rather than compatibility routines. .IP 48) \fIMail\fP incorrectly handled the editing of multiple messages, only the first one was processed. .IP 49) \fIgcore\fP,\fIpstat\fP and \fIfstat\fP were modified to deal with the new \fIu\fP structure. .IP 50) \fIrdist\fP ported from a 4.3BSD Internet release and the \fIlong\fP vs. \fIint\fP bugs corrected. .IP 51) \fIlastcomm\fP could not handle large (>2048) uids. also, a large amount of memory was wasted with static tables for the uid to name mapping. The uid to name mapping logic from \fIls\fP was adopted. .IP 52) \fImkstr\fP had a error in an ascii-octal to binary conversion. This could result in erroneous \fIstring\fP file being constructed. .IP 53) \fItcopy\fP incorrectly checked the number of arguments passed. .IP 54) \fIgetty\fP failed to handle adjacent colons in the \fIgettytab\fP file which would cause skipping of a field. .IP 55) \fIsa\fP incorrectly handled uids which are signed. The fix was to use \fIuid_t\fP instead of int. .IP 56) \fIrwhod\fP created files unreadable by \fIrwho\fP. Changed \fIrwhod\fP to create publicly readable files. .IP 57) \fItestnet\fP is a new program used by \fI/etc/rc\fP to test for a networking kernel. .IP 58) \fItelnet\fP has had several bugs in the open and close handling fixed. .IP 59) \fIar\fP was ported from 4.3BSD. Archive files now use a portable ASCII format rather than embedding binary information in the archive headers. If printable files ar \fIar\fP'd together, the resulting archive is printable. .IP 60) \fIfile\fP was ported from 4.3BSD. .IP 61) \fInm\fP was heavily modified to deal with the new \fIar\fP file format. At the same time changes were made which permit \fInm\fP to list the symbol table of \fI/unix\fP without running out of memory. .IP 62) The \fIman\fP pages for \fIranlib\fP, \fIar\fP, \fIfile\fP have been updated or copied from 4.3BSD. .IP 63) \fIarcv\fP was ported from 4.3BSD, it is used to convert (in place) old format \fIar\fP archives to the new portable format. ALL system libraries have been converted, \fIarcv\fP will only be needed to convert local archives. See \fI/usr/src/old/arcv\fP for the source and man page. The executable is already installed in \fI/usr/old\fP. ility is present allowing an aborted transfer to be restarted if the remote server also provides the \fIrestart\fP command. Also a number of bugs were fixed, some were simple long vs. int problems, in other cases both \fIftp\fdoc/2.10/kchanges.2.11/Makefile 644 0 0 1113 4730012756 10735 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 1.5 (Berkeley) 4/16/86 # PRINTER=-Plz001 # TROFF= xroff -tkchanges.LN03 TROFF= ditroff EQN= dieqn TBL= ditbl LPR= lpr -n ${PRINTER} SRC= 0.t 1.t 2.t 3.t all: ${SRC} ${EQN} ${SRC} | ${TBL} | ${TROFF} -ms ${PAGES} | ${LPR} clean: rm -f kchanges.out *.t.spell errs Errs spell: ${SRC} @for i in ${SRC}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done moved \fImkfs\fP no longer has the ability to populate a filesystem with files, this capability has been moved to \fImkproto\fP. Note: \fImkproto\fP can only handle files up to single indirect (about 256kb) in length. .IP \fIfsck\fP can now recover from a disconnected root inode! also, \fIfsck\fP can create and dynamically expand \fIlost+found\fP up to the number of direct blocks allowed to an inode. This limit is comparable to doc/2.10/kchanges.2.11/spell.ok 644 0 0 5323 4710623044 10752 AUTOBAUD AUTOBOOT BHASH Bostic CBSIZE CGL CLIST Copystr DEFS DEFS.h DEQNA DEVERR DH11 DIRSIZ DISKMON DMA DTYPE DZ ECC ENABLE34 FILS FLAG1 FLAG16 FLAG32 FRCSWAP FSFIX FSIZE GRPMAST Genisco HZ ICMP ID's IHASH INODE INTRLVE IOR IOW IOWR IP Inode JCL K&R KA5 KOV Karels LINEHZ LRU Leedom MASSBUS MAXMEM MAXNAMLEN MM MPX MXV11 Makefile Makefiles NCLISTS NGROUPS NKB NOKA5 NONFP NOVL NTTY NZERO Namei Noone OLDTTY OVLY Online PDMA PGRP QBUS RD's RDONLY,0 README RL's RLIM RLIMIT ROM RS232 RTP RUSAGE RX's RX01 Rahman SEPFLAG SI SIGSYS SUBM Stanislaus TCP TM TS TU's Tenex Turlock UCB UDA UDP UNIBUS UPRINTF USENET Uitti Unibus VAX VAX.compile acct.c alloc.c allproc autoconfig autoconfiguration automagically backup.s bcmp.s bcopy.s bdevsw berknet bio.c bmap.c bootrom bss buf.h bufhd bunhash bzero.s cacheing caddr callout callout.h callouts cblock ccom checksys.c cksum.c click.s clist.h clists clock.c cmd comp.bugs.2bsd conf conf.c conf.h cons.c contrib copy.s copyinstr copyoutstr copystr cpass cret creturn csave csv csv.s daddr deadstart descrip.c dev dh.c dhreg.h dhu.c dinode dir.h dk.h dmreg.h domain.c domain.h dsort.c dump.s dz.c dzpdma.s ecc errno.h exec.c exec.h exit.c ffs.s file.h files's filsys.h fio.c flags&0xffff flags&0xffff0000 flags&0xffffL flexnames fmove fork.c frame.h freeproc fs.h genassym.c generic.c gid gprof.h hardclock hier htonl.s htons.s incore indir inline ino inode inode.c inode.h inodes insque.s int intr ints inuse ioconf.c ioctl.h iomove ipc itimerval kernel.h kl.c l.s lastfile ldiv.s lib libc libc.a linesw lmul.s localopts.h lpr.c lrem.s machparam.h mail.c main.c malloc3 mbuf.c mbuf.h mch mch.s mdec mem.c memaddr mfree mman.c mount.c mscp.h msgbuf.h namei namei.h names.h nami.c netimp netinet netns netpup newflags noop ofile olddelta omask op param.c param.h passc passwd.c pathnames pdp pdp.c pdpif pdpmba pdpstand pdpuba pgin pgout physio physio1 pid's pids pipe.c prf.c prioritized proc proc.c proc.h process.c profile.s prot.c proto.c protosw.h psl.h ptrace.h pty.c quota.h ra ra.c ram.c rauboot.s reg.h remque.s resource.h resrce.c rl rluboot.s rmap.c rom rtp.c rusage rx.c scb.s schar sched.c sg si.c sig.c signal.h socket.c socket.h socket2.c socketvar.h spl splfix src st start.s stat.h strlen.s subr subr.c swap.c swapin swapout swp.c swpin swpout synch.c sys.c syscall.h syscalls.c sysent sysent.c syslocal syslog.h systm.h tablet.h tahoe tb.c text.c text.h time.c time.h trace.h trap.s tty.c tty.h ttychars.h ttydev.h tuneable typedefs types.h u.u ucb uchar ufs uid uio.h uiofmove uiomove uipc un.h unpcb.h ureadc user.h usr.bin usr.lib usrreq.c uwritec v7direct vars.s vaxif vaxuba vcopyin vcopyout vlimit.h vm vm.h vmmac.h vmmeter.h vmparam.h vmsystm.h vtimes.h wait.h xp xp.c xuncore xx xxx.c xxx.s zero'd zombproc p\fP \fBhayes\fP dialer, but time did not permit this. The fixed version will work, but it's not pretty. .IP 32) The spooling system (\fIlpd\fP) was rife with long vs. int bugs, in particular the free space check could cause the connection to be dropped. Another problem, that of removing print jobdoc/2.10/setup.2.11/ 755 0 12 0 6001105334 6600 doc/2.10/setup.2.11/5.t 644 0 0 61741 5771172240 7241 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)5.t 2.2 (2.11BSD GTE) 1995/06/16 .\" .ds lq `` .ds rq '' .ds LH "Installing/Operating \*(2B .ds RH Network setup .ds CF \*(DY .LP .nr H1 5 .nr H2 0 .bp .LG .B .ce 5. NETWORK SETUP .sp 2 .R .NL .PP The following section has been lightly edited to correspond to the current \*(2B networking. Several parts of it do not really apply to \*(2B, for example, it is unlikely that anyone will connect a PDP-11 to an IMP but it is possible as the LH/DH-11 networking interface and the IMP modules have been ported and lightly tested, or that anyone will run the nameserver. The ``correct'' use of the networking in \*(2B is probably with a list of the local net addresses in the \fI/etc/hosts\fP file and with one default gateway for all network traffic. In particular, do not run .IR routed (8) unless you're extremely sure that you know what you're doing. This is doubly true if SL/IP is being used as the primary connection to the outside world. The IMP and PRONET drivers are known to work, but long term robustness is unknown. Sites that wish to hook \*(2B into more than a simple local ethernet may have some work ahead of them. If any additional drivers are ported, I would really like a copy. .PP The networking in \*(2B, runs in supervisor mode, separate from the mainstream kernel. There is room without overlaying to hold both a SL/IP and ethernet driver. This is a major win, as it allows the networking to maintain its mbufs in normal data space, among other things. The networking portion of the kernel resides in ``/netnix'', and is loaded after the kernel is running. Since the kernel only looks for the file ``/netnix'', it will not run if it is unable to load ``/netnix'' , sites should build and keep a non-networking kernel in ``/'' at all times, as a backup. \fBNOTE\fP: The ``/unix'' and ``/netnix'' imagines must have been created at the same time, do not attempt to use mismatched images. The ability to have \fBboot\fP tell the kernel which network image to load is on the wish list (had to have something take the place of wishing for disklabels ;-)). .PP \*(2B provides support for the DARPA standard Internet protocols IP, ICMP, TCP, and UDP. These protocols may be used on top of a variety of hardware devices ranging from the IMP's (PSN's) used in the Internet to local area network controllers for the Ethernet. Network services are split between the kernel (communication protocols) and user programs (user services such as TELNET and FTP). This section describes how to configure your system to use the Internet networking support. \*(2B also includes code to support the Xerox Network Systems (NS) protocols; the basic porting work has been done, but it is completely untested. .NH 2 System configuration .PP To configure the kernel to include the Internet communication protocols, define the INET option. This automatically defines the NLOOP option. TCP_COMPAT_42 is always defined. Xerox NS support is enabled with the NS option. In either case, include the pseudo-device ``pty'' in your machine's configuration file, using the NPTY options. The ``pty'' pseudo-device forces the pseudo terminal device driver to be configured into the system, see \fIpty\fP\|(4). The NLOOP option forces inclusion of the software loopback interface driver. The loop driver is used in network testing as well as for the system talking to itself rather than transmitting the data over the wire. .PP If you are planning to use the Internet network facilities on a 10Mb/s Ethernet, the pseudo-device ``ether'' should also be included in the configuration using the NETHER option; this forces inclusion of the Address Resolution Protocol module used in mapping between 48-bit Ethernet and 32-bit Internet addresses. Also, if you have an IMP connection, you will need to include the pseudo-device ``imp'', using the option NIMP. The IMP software is ported and is in use at at least one site. .PP Before configuring the appropriate networking hardware, you should consult the manual pages in section 4 of the Programmer's Manual. The following table lists the devices for which software support exists. Again, much of this software is unported and untested; only the basic networking has been stressed at all. Many other devices are available, but unported. Porting should simply be a matter of making the hardware device work. The directories ``/sys/pdpif'' and ``/sys/vaxif'' contain many drivers. The ones in ``pdpif'' are either the current, working drivers, or drivers that, at some time, worked on PDP-11's. The ones in ``vaxif'' are the current VAX drivers, and, as such, will have to have their memory usage changed, but serve as an excellent example of how the hardware works. .DS .TS l l. Device name Manufacturer and product _ de DEC DEUNA/DELUA 10Mb/s Ethernet qe DEC DEQNA 10Mb/s Ethernet qt DEC DELQA-YM 10Mb/s Ethernet ec 3Com 10Mb/s Ethernet il Interlan 1010 and 10101A 10Mb/s Ethernet interfaces vv Proteon ProNET - Token Ring Interface acc LH/DH-11 1822 IMP/PSN Interface .TE .DE .PP SL/IP is also available. It is surprisingly efficient. Over a 9600 baud line it is not unusual to see \fBftp\fP rates in the 800 bytes per second range (depending how busy the system is). .PP All network interface drivers including the loopback interface, require that their host address(es) be defined at boot time. This is done with .IR ifconfig (8) commands included in the \fI/etc/rc.local\fP file. Interfaces that are able to dynamically deduce the host part of an address may check that the host part of the address is correct. The manual page for each network interface describes the method used to establish a host's address. .IR Ifconfig (8) can also be used to set options for the interface at boot time. Options are set independently for each interface, and apply to all packets sent using that interface. These options include disabling the use of the Address Resolution Protocol; this may be useful if a network is shared with hosts running software that does not yet provide this function. Alternatively, translations for such hosts may be set in advance or ``published'' by a \*(2B host by use of the .IR arp (8) command. Note that the use of trailer link-level is now negotiated between \*(2B hosts using ARP, and it is thus no longer necessary to disable the use of trailers with \fIifconfig\fP. It is \fBSTRONGLY\fP recommended, however, that \*(2B networking be run without trailers, as the trailer code in most of the drivers has either been removed, commented out, is untested or is \fBknown\fP not to work. This is a problem with certain releases of \fIUltrix\fP, which has to be explicitly configured not to send trailers if it and \*(2B are to coexist. .PP To use the pseudo terminals just configured, device entries must be created in the ``/dev'' directory. To create 32 pseudo terminals (plenty, you can probably get by with many less) execute the following commands. .DS \fB#\fP cd /dev \fB#\fP MAKEDEV pty0 pty1 .DE More pseudo terminals may be made by specifying \fIpty2\fP, \fIpty3\fP, etc. The kernel normally includes support for 16 pseudo terminals unless the configuration file specifies a different number. Each pseudo terminal really consists of two files in /dev: a master and a slave. The master pseudo terminal file is named /dev/ptyp?, while the slave side is /dev/ttyp?. Pseudo terminals are also used by several programs not related to the network. \fBNOTE\fP: the terminal structures are 78 bytes each, declaring more than 16 pseudo terminals is potentially wasteful of kernel D space. See the comment in the kernel config files. In addition to creating the pseudo terminals, be sure to install them in the .I /etc/ttys file (with a `none' in the second column so no .I getty is started). .NH 2 Local subnetworks .PP In \*(2B the DARPA Internet support includes the notion of ``subnetworks''. This is a mechanism by which multiple local networks may appears as a single Internet network to off-site hosts. Subnetworks are useful because they allow a site to hide their local topology, requiring only a single route in external gateways; it also means that local network numbers may be locally administered. The standard describing this change in Internet addressing is RFC-950. .PP To set up local subnetworks one must first decide how the available address space (the Internet ``host part'' of the 32-bit address) is to be partitioned. Sites with a class A network number have a 24-bit address space with which to work, sites with a class B network number have a 16-bit address space, while sites with a class C network number have an 8-bit address space\(ua. .FS .IP \(ua If you are unfamiliar with the Internet addressing structure, consult ``Address Mappings'', Internet RFC-796, J. Postel; available from the Internet Network Information Center at SRI. .FE To define local subnets you must steal some bits from the local host address space for use in extending the network portion of the Internet address. This reinterpretation of Internet addresses is done only for local networks; i.e. it is not visible to hosts off-site. For example, if your site has a class B network number, hosts on this network have an Internet address that contains the network number, 16 bits, and the host number, another 16 bits. To define 254 local subnets, each possessing at most 255 hosts, 8 bits may be taken from the local part. (The use of subnets 0 and all-1's, 255 in this example, is discouraged to avoid confusion about broadcast addresses.) These new network numbers are then constructed by concatenating the original 16-bit network number with the extra 8 bits containing the local subnetwork number. .PP The existence of local subnetworks is communicated to the system at the time a network interface is configured with the .I netmask option to the .I ifconfig program. A ``network mask'' is specified to define the portion of the Internet address that is to be considered the network part for that network. This mask normally contains the bits corresponding to the standard network part as well as the portion of the local part that has been assigned to subnets. If no mask is specified when the address is set, it will be set according to the class of the network. For example, at Berkeley (class B network 128.32) 8 bits of the local part have been reserved for defining subnetworks; consequently the /etc/rc.local file contains lines of the form .DS /etc/ifconfig en0 netmask 0xffffff00 128.32.1.7 .DE This specifies that for interface ``en0'', the upper 24 bits of the Internet address should be used in calculating network numbers (netmask 0xffffff00), and the interface's Internet address is ``128.32.1.7'' (host 7 on network 128.32.1). Hosts \fIm\fP on sub-network \fIn\fP of this network would then have addresses of the form ``128.32.\fIn\fP.\fIm\fP''; for example, host 99 on network 129 would have an address ``128.32.129.99''. For hosts with multiple interfaces, the network mask should be set for each interface, although in practice only the mask of the first interface on each network is actually used. .NH 2 Internet broadcast addresses .PP The address defined as the broadcast address for Internet networks according to RFC-919 is the address with a host part of all 1's. The address used by 4.2BSD was the address with a host part of 0. \*(2B uses the standard broadcast address (all 1's) by default, but allows the broadcast address to be set (with \fIifconfig\fP) for each interface. This allows networks consisting of both 4.2BSD and \*(2B hosts to coexist. In the presence of subnets, the broadcast address uses the subnet field as for normal host addresses, with the remaining host part set to 1's (or 0's, on a network that has not yet been converted). \*(2B hosts recognize and accept packets sent to the logical-network broadcast address as well as those sent to the subnet broadcast address, and when using an all-1's broadcast, also recognize and receive packets sent to host 0 as a broadcast. .NH 2 Routing .PP If your environment allows access to networks not directly attached to your host you will need to set up routing information to allow packets to be properly routed. Two schemes are supported by the system. The first scheme employs the routing table management daemon \fI/etc/routed\fP to maintain the system routing tables. The routing daemon uses a variant of the Xerox Routing Information Protocol to maintain up to date routing tables in a cluster of local area networks. By using the \fI/etc/gateways\fP file created by .IR htable (8), the routing daemon can also be used to initialize static routes to distant networks (see the next section for further discussion). When the routing daemon is started up (usually from \fI/etc/rc.local\fP) it reads \fI/etc/gateways\fP if it exists and installs those routes defined there, then broadcasts on each local network to which the host is attached to find other instances of the routing daemon. If any responses are received, the routing daemons cooperate in maintaining a globally consistent view of routing in the local environment. This view can be extended to include remote sites also running the routing daemon by setting up suitable entries in \fI/etc/gateways\fP; consult .IR routed (8) for a more thorough discussion. .PP The second approach is to define a default or wildcard route to a smart gateway and depend on the gateway to provide ICMP routing redirect information to dynamically create a routing data base. This is done by adding an entry of the form .DS /etc/route add default \fIsmart-gateway\fP 1 .DE to \fI/etc/rc.local\fP; see .IR route (8) for more information. The default route will be used by the system as a ``last resort'' in routing packets to their destination. Assuming the gateway to which packets are directed is able to generate the proper routing redirect messages, the system will then add routing table entries based on the information supplied. This approach has certain advantages over the routing daemon, but is unsuitable in an environment where there are only bridges (i.e. pseudo gateways that, for instance, do not generate routing redirect messages). Further, if the smart gateway goes down there is no alternative, save manual alteration of the routing table entry, to maintaining service. .PP The system always listens, and processes, routing redirect information, so it is possible to combine both of the above facilities. For example, the routing table management process might be used to maintain up to date information about routes to geographically local networks, while employing the wildcard routing techniques for ``distant'' networks. The .IR netstat (1) program may be used to display routing table contents as well as various routing oriented statistics. For example, .DS \fB#\fP\|netstat \-r .DE will display the contents of the routing tables, while .DS \fB#\fP\|netstat \-r \-s .DE will show the number of routing table entries dynamically created as a result of routing redirect messages, etc. .NH 2 Use of \*(2B machines as gateways .PP Only sheer insanity could prompt the use of \*(2B machines as gateways. If you \fBreally\fP want to do this then the best recourse is to prowl the sources and see what has to be done. The code is all there, and the "ipforwarding" variable is present. .PP Local area routing within a group of interconnected Ethernets and other such networks may be handled by .IR routed (8). Gateways between the Internet and one or more local networks require an additional routing protocol, the Exterior Gateway Protocol (EGP), to inform the core gateways of their presence and to acquire routing information from the core. .NH 2 Network servers .PP In \*(2B most of the server programs are started up by a ``super server'', the Internet daemon. The Internet daemon, \fI/etc/inetd\fP, acts as a master server for programs specified in its configuration file, \fI/etc/inetd.conf\fP, listening for service requests for these servers, and starting up the appropriate program whenever a request is received. The configuration file contains lines containing a service name (as found in \fI/etc/services\fP), the type of socket the server expects (e.g. stream or dgram), the protocol to be used with the socket (as found in \fI/etc/protocols\fP), whether to wait for each server to complete before starting up another, the user name as which the server should run, the server program's name, and at most five arguments to pass to the server program. Some trivial services are implemented internally in \fIinetd\fP, and their servers are listed as ``internal.'' For example, an entry for the file transfer protocol server would appear as .DS ftp stream tcp nowait root /etc/ftpd ftpd -l .DE or if you are using the \fItcp_wrapper\fP program as .DS ftp stream tcp nowait root /etc/tcpd ftpd -l .DE Consult .IR inetd (8) for more detail on the format of the configuration file and the operation of the Internet daemon. .NH 2 Network data bases .PP Several data files are used by the network library routines and server programs. Most of these files are host independent and updated only rarely. .DS .TS l l l. File Manual reference Use _ /etc/hosts \fIhosts\fP\|(5) host names /etc/networks \fInetworks\fP\|(5) network names /etc/services \fIservices\fP\|(5) list of known services /etc/protocols \fIprotocols\fP\|(5) protocol names /etc/hosts.equiv \fIrshd\fP\|(8) list of ``trusted'' hosts /etc/rc.local \fIrc\fP\|(8) command script for starting servers /etc/ftpusers \fIftpd\fP\|(8) list of ``unwelcome'' ftp users /etc/hosts.lpd \fIlpd\fP\|(8) list of hosts allowed to access printers /etc/inetd.conf \fIinetd\fP\|(8) list of servers started by \fIinetd\fP .TE .DE The files distributed are set up for Internet hosts. Local networks and hosts should be added to describe the local configuration. Network numbers will have to be chosen for each Ethernet. For sites not connected to the Internet, these can be chosen more or less arbitrarily, otherwise the normal channels should be used for allocation of network numbers. .NH 3 Regenerating /etc/hosts and /etc/networks .PP When using the host address routines that use the Internet name server, the file \fI/etc/hosts\fP is only used for setting interface addresses and at other times that the server is not running, and therefore it need only contain addresses for local hosts. There is no equivalent service for network names yet. The days of retrieving a host file containing all systems on the Internet are over. Besides, you would grow very old and run out of disk space while waiting for \fImkhosts\fP\|(8) to process a hosts file containing the several million entries. Therefore the details of retrieving a master hosts file using .IR htable (8) and .IR gettable (8) have been removed from this document. However if you do use local hosts files you will still need to run .IR mkhosts (8) and this is described below. .PP If you are using the host table for host name and address mapping, you should run \fImkhosts\fP\|(8) after installing \fI/etc/hosts\fP. The \fImkhosts\fP\|(8) program has been enhanced for \*(2B to allow multiple addresses per host. The order in which the addresses are given in \fI/etc/hosts\fP is preserved, so the entries for a given host should be in order of importance. If you are using the name server for the host name and address mapping, you only need to install \fInetworks\fP and a small copy of \fIhosts\fP describing your local machines. The full host table in this case might be placed somewhere else for reference by users. The gateways file may be installed in \fI/etc/gateways\fP if you use .IR routed (8) for local routing and wish to have static external routes installed when \fIrouted\fP is started. This procedure is essentially obsolete, however, except for individual hosts that are on the Milnet and do not forward packets from a local network. Other situations require the use of \fBgated\fP. That program can never be made to run on a PDP-11 due to address space considerations. Also, the networking code could not even begin to handle the number of routes which would be received. .PP If you are connected to the Internet, it is highly recommended that you use the name server resolver routines for your host name and address mapping, as this provides access to a much larger set of hosts than are provided in the host table. Many large organization on the network, currently have only a small percentage of their hosts listed in the host table retrieved from NIC. .NH 3 /etc/hosts.equiv .PP The remote login and shell servers use an authentication scheme based on trusted hosts. The \fIhosts.equiv\fP file contains a list of hosts that are considered trusted and, under a single administrative control. When a user contacts a remote login or shell server requesting service, the client process passes the user's name and the official name of the host on which the client is located. In the simple case, if the host's name is located in \fIhosts.equiv\fP and the user has an account on the server's machine, then service is rendered (i.e. the user is allowed to log in, or the command is executed). Users may expand this ``equivalence'' of machines by installing a \fI.rhosts\fP file in their login directory. The root login is handled specially, bypassing the \fIhosts.equiv\fP file, and using only the \fI/.rhosts\fP file. .PP Thus, to create a class of equivalent machines, the \fIhosts.equiv\fP file should contain the \fIofficial\fP names for those machines. If you are running the name server, you may omit the domain part of the host name for machines in your local domain. For example, several machines on my local network are considered trusted, so the \fIhosts.equiv\fP file is of the form: .DS wlv wlonex wlonex0 wlbr .DE .NH 3 /etc/rc.local .PP Most network servers are automatically started up at boot time by the command file /etc/rc (if they are installed in their presumed locations) or by the Internet daemon (see above). These include the following: .DS .TS l l l. Program Server Started by _ /etc/rshd shell server inetd /etc/rexecd exec server inetd /etc/rlogind login server inetd /etc/telnetd TELNET server inetd /etc/ftpd FTP server inetd /etc/fingerd Finger server inetd /etc/tftpd TFTP server inetd /etc/rwhod system status daemon /etc/rc /etc/syslogd error logging server /etc/rc /usr/lib/sendmail SMTP server /etc/rc /etc/routed routing table management daemon /etc/rc .TE .DE Consult the manual pages and accompanying documentation (particularly for sendmail) for details about their operation. .PP To have other network servers started up as well, the appropriate line should be added to the Internet daemon's configuration file \fI/etc/inetd.conf\fP, or commands similar to the following should be placed in the site dependent file \fI/etc/rc.local\fP. .DS if [ -f /etc/rwhod ]; then /etc/rwhod & echo -n ' rwhod' >/dev/console f\&i .DE .NH 3 /etc/ftpusers .PP The FTP server included in the system provides support for an anonymous FTP account. Because of the inherent security problems with such a facility you should read this section carefully if you consider providing such a service. .PP An anonymous account is enabled by creating a user \fIftp\fP. When a client uses the anonymous account a \fIchroot\fP\|(2) system call is performed by the server to restrict the client from moving outside that part of the file system where the user ftp home directory is located. Because a \fIchroot\fP call is used, certain programs and files used by the server process must be placed in the ftp home directory. Further, one must be sure that all directories and executable images are unwritable. The following directory setup is recommended. .DS \fB#\fP cd ~ftp \fB#\fP chmod 555 .; chown ftp .; chgrp ftp . \fB#\fP mkdir bin etc pub \fB#\fP chown root bin etc \fB#\fP chmod 555 bin etc \fB#\fP chown ftp pub \fB#\fP chmod 777 pub \fB#\fP cd bin \fB#\fP cp /bin/sh /bin/ls . \fB#\fP chmod 111 sh ls \fB#\fP cd ../etc \fB#\fP cp /etc/passwd /etc/group . \fB#\fP chmod 444 passwd group .DE When local users wish to place files in the anonymous area, they must be placed in a subdirectory. In the setup here, the directory \fI~ftp/pub\fP is used. .PP NOTE: Mode 777 on the 'pub' directory can and has been abused! Changing the mode to 555 is a good choice but would require administrative assistance for placing files in the 'pub' directory. Probably not a bad idea though. .PP Another issue to consider is the copy of \fI/etc/passwd\fP placed here. It may be copied by users who use the anonymous account. They may then try to break the passwords of users on your machine for further access. A good choice of users to include in this copy might be root, daemon, uucp, and the ftp user. .PP Aside from the problems of directory modes and such, the ftp server may provide a loophole for interlopers if certain user accounts are allowed. The file \fI/etc/ftpusers\fP is checked on each connection. If the requested user name is located in the file, the request for service is denied. This file normally has the following names on our systems. .DS uucp root .DE Accounts with nonstandard shells should be listed in this file. Accounts without passwords need not be listed in this file, the ftp server will not service these users. mpt the use of \*(2B machines adoc/2.10/setup.2.11/0.t 644 0 12 3471 5771171502 7233 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)0.t 2.3 (GTE) 1995/06/13 .\" .EH 'setup.2.11 - %''Installing and Operating 2.11BSD on the PDP-11' .OH 'Installing and Operating 2.11BSD on the PDP-11''Setup.2.11 - %' .ds Ps 2.10BSD .ds 1B 2.10.1BSD .ds 2B 2.11BSD .bd S B 3 .TL Installing and Operating \*(2B on the PDP-11 .br June 13, 1995 .AU Steven Schultz .AI GTE Government Systems 112 Lakeview Canyon Thousand Oaks CA 91362 sms@wlv.iipo.gtegsc.com .de IR \\fI\\$1\|\\fP\\$2 .. .de UX UNIX\\$1 .. .AB .PP .FS .IP \(ua DEC, PDP-11, VAX, IDC, SBI, UNIBUS and MASSBUS are trademarks of Digital Equipment Corporation. .FE .FS .IP \(dd UNIX is a Trademark of Bell Laboratories. .FE This document contains instructions for the installation and operation of the \*(2B PDP-11\(ua .UX \(dd system. .PP It discusses procedures for installing \*(2B UNIX on a PDP-11, including explanations of how to lay out file systems on available disks, how to set up terminal lines and user accounts, how to do system-specific tailoring, and how to install and configure the networking facilities. Finally, the document details system operation procedures: shutdown and startup, hardware error reporting and diagnosis, file system backup procedures, resource control, performance monitoring, and procedures for recompiling and reinstalling system software. .PP The ``bugs'' address supplied with this release will work for some unknown period of time; make sure the ``Index:'' line of the bug report indicates that the release is ``\*(2B''. See the \fIsendbug\fP(8) program for more details. All fixes that I make, or that are sent to me, will be posted on \fIUSENET\fP, in the news group ``comp.bugs.2bsd''. .AE rting servers /etc/ftpusers \fIftpd\fP\|(8) list of ``unwelcome'' ftp users /etc/hosts.lpd \fIlpd\fP\|(8) list of hosts allowed to access printers /etc/inetd.conf \fIinetd\fP\|(8) list of servers stadoc/2.10/setup.2.11/1.t 644 0 0 40446 6000407717 7230 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.t 2.3 (GTE) 1995/06/13 .\" .ds lq `` .ds rq '' .ds LH "Installing/Operating \*(2B .ds RH Introduction .ds CF \*(DY .LP .nr H1 1 .bp .LG .B .ce 1. INTRODUCTION .sp 2 .R .NL .PP This document explains how to install \*(2B UNIX for the PDP-11 on your system. This document has been revised several times since the first release of \*(2B, most recently in July 1995 to reflect the addition of disk labels to the system. The format of the bootable tape has changed. There is now a standalone .B disklabel program present. While the system call interface is the same as that of \*(1B, a full bootstrap from the distribution tape is required because the filesystem has changed to allow file names longer than 14 characters. Also, the 3 byte block number packing scheme used by earlier versions of UNIX for the PDP-11 has been eliminated. Block numbers are always 4 byte \fBlongs\fP now. .PP The procedure for performing a full bootstrap is outlined in chapter 2. The process includes copying a root file system from the distribution tape into a new file system, booting that root filesystem, and then reading the remainder of the system binaries and sources from the archives on the tapes. .PP As \*(2B is not compatible at the filesystem level with previous versions of UNIX on the PDP-11, any upgrade procedure is essentially a full bootstrap. There is a limited ability to access old filesystems which may be used after the system partitions have been loaded from a full bootstrap. It is desirable to recompile most local software after the conversion, as there are changes and performance improvements in the standard libraries. .PP Binaries from \*(1B which do not read directories or inode structures may be used but should be recompiled to pick up changes in the standard libraries. Note too, that the portable ASCII format of \fIar\fP(1) archives is now in place - any local archive files will have to be converted using \fI/usr/old/arcv\fP. .NH 1 Hardware supported .PP This distribution can be booted on a PDP-11 with 1Mb of memory or more\(ua, .FS .IP \(ua \*(2B would probably only require a moderate amount of squeezing to fit on machines with less memory, but it would also be very unhappy about the prospect. .FE separate I&D, and with any of the following disks: .DS .TS lw(1.5i) l. RK06, RK07 Any MSCP disk, including but not limited to: RD53, RD54, RA81, RZ2x RM03, RM05 RP04, RP05, RP06 Many other SMD disks, for example: CDC 9766, Fuji 160, Fuji Eagle .TE .DE .PP Other disks are supported (RX23, RX33, RX50, RD51) but are not large enough to hold a root filesystem plus a swap partition. The old restriction of using RL02 drives in pairs has been lifted. It is now possible to define a root ('a') partition and a swap partition ('b') and load at least the root filesystem to a single RL02. Discs which are too small to hold even a root filesystem (floppies for example) may be used as data disks or as standalone boot media, but are not useable for loading the distribution. Others, while listed above, are not very well suited to loading the distribution. The RK06/07 drives are hard pressed to even hold the system binaries, much less the sources. .PP The tape drives supported by this distribution are: .DS .TS lw(1.5i) l. TS11, TU80, TK25 TM11, AVIV 6250/1600 TE16, TU45, TU77 TK50, TU81, TU81+, TZ30 .TE .DE Although \*(2B contains a kernel level floating point simulator, it has never been tested. In fact it would not even compile/assemble without errors! That problem has been fixed but it is still not know if the simulator works, KDJ-11 based systems have builtin floating point so the simulator can not be tested. At the release of \*(Ps some thought was given to the possibility of lifting the separate I&D restriction, but that thought has languished. The work will never be done. As time passes more and more programs have become almost too large even with separate I&D. .NH 1 Distribution format .PP The basic distribution contains the following items: .DS (2)\0\0 1600bpi 2400' magnetic tapes, or (2)\0\0 TK25 tape cartridges, or (1)\0\0 TK50 tape cartridge, and (1)\0\0 Hardcopy of this document, (1)\0\0 Hardcopy of the \fIChanges in \*(2B\fP document, (1)\0\0 Hardcopy of the \*(2B /README and /VERSION files, and (1)\0\0 Hardcopy of manual pages from sections 4, and 8. .DE Installation on any machine requires a tape unit. Since certain standard PDP-11 packages do not include a tape drive, this means one must either borrow one from another PDP-11 system or one must be purchased separately. .PP \fBThe distribution does not fit on several standard PDP-11 configurations that contain only small disks\fP. If your hardware configuration does not provide at \fBleast 75\fP Megabytes of disk space you can still install the distribution, but you will probably have to operate without source for the user level commands and, possibly, the source for the operating system. .PP The root file system now occupies \fBa minimum of 4Mb\fP. If at all possible a larger, 6 or 7Mb, root partition should be defined when using the standalone .B disklabel program. .PP If you have the facilities, it is a good idea to copy the magnetic tape(s) in the distribution kit to guard against disaster. The tapes are 9-track 1600 BPI, TK50 or TK25 cartridges and contain some 512-byte records, followed by some 1024-byte records, followed by many 10240-byte records. There are interspersed tape marks; end-of-tape is signaled by a double end-of-file. .PP The basic bootstrap material is present in six short files at the beginning of the first tape. The first file on the tape contains preliminary bootstrapping programs. This is followed by several standalone utilities (\fIdisklabel\fP, \fImkfs\fP\|(8), \fIrestor\fP\|(8), and \fIicheck\fP\|(8)\(ua) .FS .IP \(ua References of the form X(Y) mean the subsection named X in section Y of the UNIX programmer's manual. .FE followed by a full dump of a root file system (see \fIdump\fP\|(8)). Following the root file system dump is a tape archive image of \fB/usr\fP except for \fB/usr/src\fP (see \fItar\fP\|(1)). Finally, a tape archive of source for include files and kernel source ends the first tape. The second tape contains a tape archive image, also in \fItar\fP format, of all the remaining source that comes with the system. .PP The entire distribution (barely) fits on a single TK50 cartridge, references to the second tape should be treated as being the 9th file on the TK50. Many of the programs in /usr/src/new have been tar+compress'd in order to keep the distribution to a single tape. .PP .KS .DS L TAPE 1: .TS n n n l. Tape file Record size Records\(ua Contents _ 0 512 1 primary tape boot block 512 1 boot block (some tape boot ROMs go for this copy) 512 14 standalone \fBboot\fP program 1 512 23 standalone \fBdisklabel\fP 2 1024 28 standalone \fBmkfs\fP(8) 3 1024 27 standalone \fBrestor\fP(8) 4 1024 26 standalone \fBicheck\fP(8) 5 10240 300 \fIdump\fP of ``root'' file system 6 10240 2300 \fItar\fP dump of /usr, excepting /usr/src 7 10240 500 \fItar\fP dump of /usr/src/include and /usr/src/sys .TE TAPE 2: .TS n n n l. Tape file Record size Records\(ua Contents _ 0 10240 4500 \fItar\fP dump of /usr/src, excepting include and sys .TE .DE .KE .FS .IP \(ua The number of records in each tape file are approximate and do not necessarily correspond to the actual number on the tape. .FE .NH 1 UNIX device naming .PP UNIX has a set of names for devices which are different from the DEC names for the devices. The disk and tape names used by the bootstrap and the system are: .DS .TS l l. RK06, RK07 disks hk RL01, RL02 disks rl MSCP disks ra RM02/03/05 xp RP04/05/06 xp SMD disks xp TM02/03, TE16, TU45, TU77 tapes ht TE10/TM11 tapes tm TS11 tapes ts TMSCP tapes tms .TE .DE Additionally, the following non-DEC devices are also supported: .DS .TS l l. SI 9500, CDC 9766 si SI, CDC 9775 xp SI6100, Fujitsu Eagle 2351A xp Emulex SC01B or SI9400, Fujitsu 160 xp Emulex SC-21, xp .TE .DE The generic SMD disk driver, \fIxp\fP, will handle most types of SMD disks on one or more controllers (even different types on the same controller). The \fBxp\fP driver handles RM03, RM05, RP04, RP05 and RP06 disks on DEC, Emulex, Dilog, and SI UNIBUS or MASSBUS controllers. .PP MSCP disks and TMSCP tapes include SCSI drives attached to the RQZX1 controller on the PDP-11/93. MSCP disks and TMSCP tapes also include SCSI drives attached to the Emulex UC07 or UC08 Q-BUS controllers on Q-bus systems as well as the UC17 and UC18 controllers on UNIBUS systems. .PP The standalone system used to bootstrap the full UNIX system uses device names of the form: .DS \fIxx\|\fP(\fIc\fP,\fIy\fP,\fIz\fP) .DE where \fIxx\fP is one of \fBhk\fP, \fBht\fP, \fBrk\fP, \fBrl\fP, \fBtm\fP, \fBts\fP, \fBtms\fP, or \fBxp\fP. The value \fIc\fP specifies the controller number (0-3). This value is usually not explicitly given. The default is 0 if booting from the standard (first) CSR of a device. .PP Example: if there are two MSCP controllers in the system addressed as 0172150 and 0172154 respectively booting from the controller at 172154 requires that \fIc\fP be given as 1. Booting from the standard CSR of 0172150 would be done by specifying \fIc\fP as 0 or omitting the \fIc\fP parameter. \fBboot\fP automatically detects if the first (standard) CSR is being used. All future references will ignore the \fIc\fP parameter by assuming the default value. .PP The value \fIy\fP specifies the device or drive unit to use. The \fIz\fP value is interpreted differently for tapes and disks: for disks it is a partition number (0 thru 7) corresponding to partitions \'a\' thru \'h\' respectively. This should always be zero unless you \fBreally\fP know what you are doing. The ability to load a kernel from the swap area is planned for the future but does not presently exist. For tapes \fIz\fP is a file number on the tape.\(ua .KS .FS .IP \(ua \fBNote:\fP that while a tape file consists of a single data stream, the distribution tape(s) have data structures in these files. Although the first tape contains only 8 tape files, they comprise several thousand UNIX files. .IP \fBNote:\fP The standalone tape drive unit number is specially encoded to specify both unit number and tape density (BPI). Most tape subsystems either automatically adjust to tape density or have switches on the drives to force the density to a particular setting, but for those which don't the following density select mechanisms may be necessary. The \fBts\fP only operates at 1600BPI, so there is no special unit density encoding. The \fBht\fP will operate at either 800BPI or 1600BPI. Units 0 through 3 corresponding to 800BPI, and Units 4 through 7 corresponding to 1600BPI on drives 0 through 3 respectively. The standard DEC \fBtm\fP only supports 800BPI (and hence can't be used with the \*(2B distribution tape), but several widely used \fBtm\fP emulators support 1600BPI and even 6250BPI. Units 0 through 3 corresponding to 800BPI, Units 4 through 7 corresponding to 1600BPI, and Units 8 through 11 corresponding to 6250BPI on drives 0 through 3 respectively. .FE .KE .PP In all simple cases, a drive with unit number 0 (determined either by a unit plug on the front of the drive, or jumper settings on the drive or controller) will be called unit 0 in its UNIX file name. file name. If there are multiple controllers, the drive unit numbers will normally be counted within each controller. Thus drives on the the first controller are numbered 0 thru 7 and drives on the second controller are numbered 0 thru 7 on controller 1. Returning to the discussion of the standalone system, recall that tapes also took two integer parameters. In the case of a TE16/TU tape formatter on drive 0, the files on the tape have names ``ht(0,0)'', ``ht(0,1)'', etc. Here ``file'' means a tape file containing a single data stream separated by a single tape mark. The distribution tapes have data structures in the tape files and though the first tape contains only 7 tape files, it contains several thousand UNIX files. .PP Each UNIX physical disk is divided into 8 logical disk partitions, each of which may occupy any consecutive cylinder range on the physical device. While overlapping partitions are allowed they are not a good idea, being an accident waiting to happen (making one filesystem will destroy the other overlapping filesystems). The cylinders occupied by the 8 partitions for each drive type are specified by the disk label read from the disk. .PP If no label exists the disk will not be bootable and while the kernel attempts not to damage unlabeled disks (by swapping to or doing a crash dump on a live filesystem) there is a chance that filesystem damage will result if a kernel is loaded from an unlabeled disk. .PP The standalone \fBdisklabel\fP program is used to define the partition tables. Each partition may be used either as a raw data area (such as a swapping area) or to store a UNIX file system. It is mandatory for the first partition on a disk to start at sector offset 0 because the 'a' partition is used to read and write the label (which is at the beginning of the disk). If the drive is to be used to bootstrap a UNIX system then the 'a' partition must be of type \fB2.11BSD\fP (FS_V71K in \fIdisklabel.h\fP) and at least 4Mb is size. A 'b' partition of at least 2-3Mb (4Mb is a good choice if space is available) for swapping is also needed. If a drive is being used solely for data then that drive need not have a 'b' (swap) partition but partition 'a' must still span the first part of the disk. The second partition is used as a swapping area, and the rest of the disk is divided into spaces for additional ``mounted file systems'' by use of one or more additional partitions. .PP The third ('c') logical partition of each physical disk also has a conventional usage: it allows access to the entire physical device, including the bad sector forwarding information recorded at the end of the disk (one track plus 126 sectors). It is occasionally used to store a single large file system or to access the entire pack when making a copy of it on another. Care must be taken when using this partition not to overwrite the last few tracks and thereby destroying the bad sector information. .PP Unfortunately while the drivers can follow the rules above the entries in \fI/etc/disktab\fP (\fIdisktab\fP\|(5)) do not. The entries in \fI/etc/disktab\fP are translations of the old partition tables which used to be embedded in the device drivers and are thus probably not suitable for use without editing. In some cases it may be that the 8th ('h') partition is used for access to the entire disk rather than the third ('c') partition. Caution should be observed when using the \fInewfs\fP\|(8) and \fIdisklabel\fP\|(8) commands. .NH 1 UNIX devices: block and raw .PP UNIX makes a distinction between ``block'' and ``raw'' (character) devices. Each disk has a block device interface where the system makes the device byte addressable and you can write a single byte in the middle of the disk. The system will read out the data from the disk sector, insert the byte you gave it and put the modified data back. The disks with the names ``/dev/xx0a'', etc are block devices. There are also raw devices available. These have names like ``/dev/rxx0a'', the ``r'' here standing for ``raw''. Raw devices bypass the buffer cache and use DMA directly to/from the program's I/O buffers; they are normally restricted to full-sector transfers. In the bootstrap procedures we will often suggest using the raw devices, because these tend to work faster. Raw devices are used when making new filesystems, when checking unmounted filesystems, or for copying quiescent filesystems. The block devices are used to mount file systems, or when operating on a mounted filesystem such as the root. .PP You should be aware that it is sometimes important whether to use the character device (for efficiency) or not (because it wouldn't work, e.g. to write a single byte in the middle of a sector). Don't change the instructions by using the wrong type of device indiscriminately. .PP The standalone \fBdisklabel\fP program must be used to alter the 'a' and 'b' partitions of a drive being used for a bootable system. This is because the kernel will not permit an open partition to change size or offset. The root and and swap partitions are \fBalways\fP open when the kernel is running. k the passwords of users on your machine for further access. A good choice of users to include in this copy might be root, daemon, uucp, and the ftp user. .PP Aside from the problems of directory modes and such, the fdoc/2.10/setup.2.11/2.t 644 0 0 53005 6000407717 7224 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.t 1.7 (GTE) 1995/06/13 .\" .ds lq `` .ds rq '' .ds LH "Installing/Operating \*(2B .ds RH Bootstrapping .ds CF \*(DY .bp .nr H1 2 .nr H2 0 .bp .LG .B .ce 2. BOOTSTRAP PROCEDURE .sp 2 .R .NL .PP This section explains the bootstrap procedure that can be used to get the kernel supplied with this distribution running on your machine. It is mandatory to do a full bootstrap since the filesystem has changed from \*(1B to \*(2B. .PP The safest route is to use \fItar\fP\|(1) to dump all of your current file systems, do a full bootstrap of \*(2B and then restore user files from the backups. There is also an untested version of \fI512restor\fP\|(8) available for V7 sites that need to read old dump tapes. .PP It is also desirable to make a convenient copy of system configuration files for use as guides when setting up the new system; the list of files to save from earlier PDP-11 UNIX systems, found in chapter 3, may be used as a guideline. .PP \*(2B \fIrestor\fP\|(8) is able to read and automatically convert to the new on disk directory format \fIdump\fP\|(8) tapes made under 2.9BSD, \*(Ps and \*(1B. .NH 2 Booting from tape .PP The tape bootstrap procedure used to create a working system involves the following major steps: .IP 1) Load the tape bootstrap monitor. .IP 2) Create the partition tables on the disk using \fIdisklabel\fP. .IP 3) Create a UNIX ``root'' file system system on disk using \fImkfs\fP\|(8). .IP 4) Restore the full root file system using \fIrestor\fP\|(8). .IP 5) Boot the UNIX system on the new root file system and copy the appropriate \fIsector 0 boot block\fP to your boot device. .IP 6) Build and restore the /usr file system from tape with \fItar\fP\|(1). .IP 7) Restore the include and kernel sources from tape. .IP 8) Extract the remaining source from the second tape. .IP 9) Tailor a version of UNIX to your specific hardware (see section 4.2). .PP Certain of these steps are dependent on your hardware configuration. If your disks require formatting, standard DEC diagnostic utilities will have to be used, they are not supplied on the \*(2B distribution tape. .NH 3 Step 1: loading the tape bootstrap monitor .PP To load the tape bootstrap monitor, first mount the magnetic tape on drive 0 at load point, making sure that the write ring is not inserted. Then use the normal bootstrap ROM, console monitor or other bootstrap to boot from the tape. .PP NOTE: The boot blocks expect the CSR of the booting controller in r0 and the unit number in r1. \fBboot\fP may be booted from any controller or unit, the earlier restrictions of controller 0 and unit 0 have been lifted. .PP If no other means are available, the following code can be keyed in and executed at (say) 0100000 to boot from a TM tape drive (the magic number 172526 is the address of the TM-11 current memory address register; an adjustment may be necessary if your controller is at a nonstandard address): .DS .TS l l. 012701 (mov $unit, r1) 000000 (normally unit 0) 012700 (mov $172526, r0) 172526 010040 (mov r0, -(r0)) 012740 (mov $60003, -(r0)) 060003 (if unit 1 use 060403, etc) 000777 (br .) .TE .DE A toggle-in routine which has been used with a TS tape drive (this should be entered at 01000): .DS .TS l l. 012700 mov $unit,r0 000000 012701 mov $172522,r1 172522 005011 clr (r1) 105711 1b:tstb (r1) 100376 bpl 1b 012761 mov $setchr,-2(r1) 001040 177776 105711 2b:tstb (r1) 100376 bpl 2b 012761 mov $read,-2(r1) 001060 177776 000000 halt 140004 setchr: TS_ACK|TS_CVC|TS_SETCHR 001050 char 000000 high order address 000010 number of bytes 001070 char: status 000000 000016 000000 140001 read: TS_ACK|TS_CVC|TS_READ 000000 low order of address 000000 high order of address 001000 number of bytes to read 000000 status: .TE .DE When this is executed, the first block of the tape will be read into memory. Halt the CPU and restart at location 0. .PP The console should type .DS .B \fInn\fPBoot from \fIxx\fP(\fIctlr\fP,\fIdrive\fP,\fIpart\fP) at \fIcsr\fP : .R .DE where \fInn\fP is the CPU type on which it believes it is running. The value will be one of 23, 24, 40, 44, 45, 53, 60, 70, 73, 83, 84, 93 or 94 depending whether separate instruction and data (separate I/D) and/or a UNIBUS map are detected. For KDJ-11 systems the System Maintenance Register is examined to determine the cpu type. At present \*(2B runs on the 44, 53, 70, 73, 83, 84, 93 and 94 \fBonly\fP. It must be emphasized that \*(2B requires separate I/D. .sp \fIctlr\fP is the controller number that \fBBoot\fP was loaded from. It is 0 unless booting from a non-standard CSR. .sp \fIdrive\fP is the drive unit number. .sp The \fIpart\fP number is disk partition or tapefile number booted from. This will always be 0 for the tape \fBBoot\fP program. .sp \fIcsr\fP is an octal number telling the CSR of the controller from which \fBBoot\fP was loaded. .sp .PP You are now talking to the tape bootstrap monitor. At any point in the following procedure you can return to this section, reload the tape bootstrap, and restart. Through the rest of this section, substitute the correct disk type for \fIdk\fP and the tape type for \fItp\fP. .NH 3 Step 2: creating the disk label .PP The standalone \fIdisklabel\fP program is then run: .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,1) (\fIdisklabel\fP is tape file 1) \fBBoot: bootdev=0nnnn bootcsr=0mmmmmm\fP \fBdisklabel\fP \fBDisk?\fP \fIdk\|\fP(0,0) (drive 0, partition 0) d(isplay) D(efault) m(odify) w(rite) q(uit)? ... \fB:\fP (back at tape boot level) .TE .DE The \fIdisklabel\fP program is meant to be fairly intuitive. When prompted with a line of choices entering the key just before the left parenthesis selects the entry. .PP If there is an existing label present on \fIdk\fP\|(0,0) it will be used as the default. To have \fIdisklabel\fP create a new default based on its idea of what the drive is select \fBD\fP. Then enter \fBm\fP to modify/edit the label. .PP The MSCP driver is quite good at identifying drives because it can query the controller. Other drivers (notably the SMD (\fBxp\fP) driver) have to deal with a much wider range of controllers which do not all have the same capabilities for drive identification. When dealing with SMD drives you must know the geometry of the drive so you can verify and correct \fIdisklabel\fP's choices. .PP You can however, if using non-DEC SMD controllers, make things easy for \fIdisklabel\fP to determine what type of drive is being used. If your controller offers the choice of RM02 emulation you should select that choice. The standalone \fBxp\fP driver uses RM02 as the indication that drive identification capabilities not offered by DEC controllers are present. The driver will be able to determine the geometry of the drive in this case. This is \fBoptional\fP because you can explicitly specify all of the parameters to the standalone \fIdisklabel\fP program. .PP A full description of the standalone \fIdisklabel\fP program is in Appendix B of this document. .NH 3 Step 3: creating a UNIX ``root'' file system .PP Now create the root file system using the following procedure.\(ua .FS .IP \(ua \fBNote:\fP These instructions have changed quite a bit during the evolution of the system from \*(1B. Previously, if the disk on which you are creating a root file system was an \fBxp\fP disk you would have been asked to check the drive type register and possibly halt the processor to patch a location (hopefully before the driver accessed the drive). \fBThis is no longer needed\fP. All geometry and partition information is obtained from the disklabel created in step 2. We also used to give tables of \fBm\fP and \fBn\fP values for various disks, which are now purposely omitted. .FE .PP The size of the root ('a') filesystem was assigned in step 2 (creating the disk label). \fImkfs\fP will not allow a filesystem to be created if there is not a label present or if the partition size is 0. \fImkfs\fP looks at partition 0 ('a') in the disklabel for the root file system size. .PP Finally, determine the proper interleaving factors \fIm\fP and \fIn\fP for your disk. Extensive testing has demonstrated that the choice of \fIm\fP is non critical (performance of a file system varying only by 3 to 4% for a wide range of \fIm\fP values). Values for \fIm\fP within the range from 2 to 5 give almost identical performance. Increasing \fIm\fP too much actually causes degraded performance because the free blocks are too far apart. Slower processors (such as the 73 and 44) may want to start with a \fIm\fP of 3 or 4, faster processors (such as the 70 and 84) may start with a \fIm\fP of 2 or 3. On the other hand, the \fIn\fP value is moderately important. It should be the number of filesystem blocks contained by one cylinder of the disk, calculated by dividing the number of sectors per cylinder by 2, rounding down if needed. (This is what \fImkfs\fP does by default, based on the geometry information in the disk label.) These numbers determine the layout of the free list that will be constructed; the proper interleaving will help increase the speed of the file system. .PP Then run the standalone version of the \fImkfs\fP (8) program. The values in square brackets at the size prompt is the default from the disklabel. Simply hit a return to accept the default. \fImkfs\fP will allow you to create a smaller filesystem but you can not enter a larger number than the one in brackets. In the following procedure, substitute the correct types for \fItp\fP and \fIdk\fP and the size determined above for \fIsize\fP: .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,2) (\fImkfs\fP is tape file 2) \fBBoot: bootdev=0nnnn bootcsr=0mmmmmm\fP \fBMkfs\fP \fBfile system:\fP \fIdk\|\fP(0,0) (root is the first file system on drive 0) \fBfile system size:\fP [NNNN] \fIsize\fP (count of 1024 byte blocks in root) \fBinterleaving factor (m, 2 default):\fP \fIm\fP (interleaving, see above) \fBinterleaving modulus (n, 127 default):\fP \fIn\fP (interleaving, see above) \fBisize = XX\fP (count of inodes in root file system) \fBm/n = \fP\fIm n\fP (interleave parameters) \fBExit called\fP \fInn\fP\fBBoot\fP \fB:\fP (back at tape boot level) .TE .DE .sp The number \fBnnnn\fP is the device number of the device (high byte is the major device number and the low byte is the unit number). The \fBmmmmmm\fP number is the CSR of the device. This information is mainly used as a reminder and diagnostic/testing purposes. .sp You now have an empty UNIX root file system. .NH 3 Step 4: restoring the root file system .PP To restore the root file system onto it, type .DS .TS lw(1.5i) l. \fB:\|\fP\fItp\|\fP(0,3) (\fIrestor\fP is tape file 3) \fBBoot: bootdev=0nnnn bootcsr=0mmmmmm\fP \fBRestor\fP \fBTape?\fP \fItp\|\fP(0,5) (root \fIdump\fP is tape file 5) \fBDisk?\fP \fIdk\|\fP(0,0) (into root file system) \fBLast chance before scribbling on disk.\fP (type a carriage return to start) .B "End of tape" \fR(appears on same line as message above)\fP Exit called \fInn\fPBoot \fB:\fR (back at tape boot level) .R .TE .sp This takes about 8 minutes with a TZ30 on a 11/93 and about 15 minutes using a TK50 on a 11/73. .DE If you wish, you may use the \fIicheck\fP program on the tape, \fItp\|\fP(0,4), to check the consistency of the file system you have just installed. This has rarely been useful and is mostly for the voyeuristic. .NH 3 Step 5: booting UNIX .PP You are now ready to boot from disk. Type: .DS .TS lw(1.5i) l. \fB:\fP\fIdk\|\fP(0,0)unix (bring in unix from the root system) \fBBoot: bootdev=0nnnn bootcsr=0mmmmmm\fP .TE .DE The standalone boot program will then load unix from the root file system you just created, and the system should boot: .DS .B .\"CHECK \*(2B BSD UNIX #1: Sat Jul 4 01:33:03 PDT 1992 root@wlonex.iipo.gtegsc.com:/usr/src/sys/GENERIC phys mem = \fI???\fP avail mem = \fI???\fP user mem = \fI???\fP configure system \fI\&... information about available devices ...\fP .R (Information about various devices will print; most of them will probably not be found until the addresses are set below.) .B erase=^?, kill=^U, intr=^C # .R .DE .PP UNIX itself then runs for the first time and begins by printing out a banner identifying the release and version of the system that is in use and the date that it was compiled. .PP Next the .I mem messages give the amount of real (physical) memory, the amount of memory left over after the system has allocated various data structures, and the amount of memory available to user programs in bytes. .PP The information about different devices being attached or not being found is produced by the \fIautoconfig\fP\|(8) program. Most of this is not important for the moment, but later the device table, \fI/etc/dtab\fP, can be edited to correspond to your hardware. However, the tape drive of the correct type should have been detected and attached. .PP The \*(lqerase ...\*(rq message is part of /.profile that was executed by the root shell when it started. This message is present to remind you that the character erase, line erase, and interrupt characters are set to what is standard for DEC systems; this insures that things are consistent with the DEC console interface characters. .PP UNIX is now running single user on the installed root file system, and the `UNIX Programmer's Manual' applies. The next section tells how to complete the installation of distributed software on the /usr file system. The `#' is the prompt from the shell, and lets you know that you are the super-user, whose login name is \*(lqroot\*(rq. .PP The disk with the new root file system on it will not be bootable directly until the block 0 bootstrap program for your disk has been installed. There are copies of the bootstraps in /mdec. Use \fIdd\fP\|(1) to copy the right boot block onto block 0 of the disk. .DS \fB#\fP dd if=/mdec/\fIboot\fP of=/dev/r\fIdk\^\fP0a count=1 .DE Block zero bootstraps and the devices they support are: .DS .TS l l l. boot driver devices _ hkuboot hk RK06/07 rauboot ra All RA, RD, RZ, RX (except RX01,02) and RC25 drives rkuboot rk RK05 rluboot rl RL01/02 si95uboot si SI 9500, CDC 9766 dvhpuboot xp Diva Comp V, Ampex 9300 hpuboot xp RP04/05/06 rm03uboot xp RM03 rm05uboot xp RM05 or SI 9500, CDC 9766 si51uboot xp SI 6100, Fujitsu Eagle 2351A si94uboot xp Emulex SC01B/SC03B or SI 9400, Fujitsu 160 .TE .DE .B NOTE: If none of the above are correct (most likely with a SMD drive with differing geometry) then you will have to use a tape/floppy boot proceedure rather than a sector 0 bootblock. This can be fixed by creating a customized sector 0 boot program once the system sources have been loaded. .PP Once this is done, booting from this disk will load and execute the block 0 bootstrap, which will in turn load /boot. \fB/boot\fP will print on the console: .DS .TS lw(1.5i) l. .B \fInn\fPBoot from \fIdk\fP(\fIctlr\fP,\fIunit\fP,\fIpart\fP) at \fIcsr\fP\fR : .R .TE .DE The bootblock automatically loads and runs /\fIboot\fP for you; if /\fIboot\fP is not found, the system will hang/loop forever. The block 0 program is very small (has to fit in 512 bytes) and simple program, however, and can only boot the second-stage boot from the first file system. Once /boot is running and prints its ``: '' prompt, boot unix as above. .PP As distributed /\fIboot\fP will load \fIdk\fP(0,0)unix by default if a carriage return is typed at the \fB:\fP prompt. .PP \fBNOTE:\fP NONE the primary bootstraps have a prompt or alternate program name capability because of space considerations. No diagnostic message results if the file cannot be found. .NH 3 Step 6: setting up the /usr file system .PP First set a shell variable to the name of your disk, so the commands used later will work regardless of the disk you have; do one of the following: .DS .TS l l. \fB#\fP disk=hk (if you have RK06's or RK07's) \fB#\fP disk=rl (if you have RL01's or RL02's) \fB#\fP disk=ra (if you have an MSCP drive) \fB#\fP disk=xp (if you have an RP06, RM03, RM05, or other SMD drive) .TE .DE .PP The next thing to do is to extract the rest of the data from the tape. You might wish to review the disk configuration information in section 4.3 before continuing; you will have to select a partition to restore the /usr file system into which is at least \fB25\fP Megabytes in size (this is just barely enough for the system binaries and such and leaves no room for the system source.)\(ua .FS .IP \(ua \fBNote:\fP Previously a lengthy table of partition names organized by specific disk type was given. With the introduction of disklabels this is no longer necessary (or possible since each site can select whatever partitioning scheme they desire). In step 2 (creating the disklabel) a partition should have been created for \fI/usr\fP. If this was not done then it may be easier to perform step 2 now than to use the more complex \fIdisklabel\fP\|(8) program and \fIed\fP\|(1). .FE .PP In the command below \fIpart\fP is the partition name (a-h) for the partition which will hold /usr. .DS .TS l l. \fBname=${disk}0${part} .TE .DE Next, find the tape you have in the following table and execute the commands in the right hand portion of the table: .DS .TS l l. DEC TM02/03, TE16/TU45/TU77 \fB#\fP cd /dev; rm *mt*; ./MAKEDEV ht0; sync DEC TS11, TK25/TU80/TS05 \fB#\fP cd /dev; rm *mt*; ./MAKEDEV ts0; sync DEC TM11, TU10/TE10/TS03 \fB#\fP cd /dev; rm *mt*; ./MAKEDEV tm0; sync DEC TMSCP, TK50/TZ30/TU81 \fB#\fP cd /dev; rm *mt*; ./MAKEDEV tu0; sync EMULEX TC11 \fB#\fP cd /dev; rm *mt*; ./MAKEDEV tm0; sync .TE .DE Then execute the following commands: .br .ne 5 .sp .DS .TS lw(2i) l. \fB#\fP date \fIyymmddhhmm\fP (set date, see \fIdate\fP\|(1)) \&.... \fB#\fP passwd root (set password for super-user) \fBNew password:\fP (password will not echo) \fBRetype new password:\fP \fB#\fP hostname \fImysitename\fP (set your hostname) \fB#\fP newfs ${name} (create empty user file system) (this takes a minute) \fB#\fP mount /dev/${name} /usr (mount the usr file system) \fB#\fP cd /usr (make /usr the current directory) \fB#\fP mt rew \fB#\fP mt fsf 6 \fB#\fP tar xpbf 20 /dev/rmt12 (extract all of usr except usr/src) (this takes about 15-20 minutes except for the TK50 and TZ30 which are \fBmuch\fP slower) .TE .DE The data on the seventh tape file has now been extracted. All that remains on the first tape is a small archive containing source for the kernel and include files. .PP If you have an existing/old password file to be merged back into \*(2B, special steps are necessary to convert the old password file to the shadow password file format (shadow password file and password aging were ported from 4.3BSD and are standard in \*(2B ). .DS .TS lw(2i) l. \fB#\fP mt -f /dev/rmt12 fsf (position tape at beginning of next tape file) \fB#\fP mkdir src (make directory for source) \fB#\fP cd src (make /usr/src the current directory) \fB#\fP tar xpbf 20 /dev/rmt12 (extract the system and include source) (this takes about 5-10 minutes) \fB#\fP cd / (back to root) \fB#\fP chmod 755 / /usr /usr/src /usr/src/sys \fB#\fP rm \-f sys \fB#\fP ln \-s usr/src/sys sys (make a symbolic link to the system source) \fB#\fP umount /dev/${name} (unmount /usr) .TE .DE .PP The first tape has been been completely loaded. You can check the consistency of the /usr file system by doing .DS \fB#\fP fsck /dev/r${name} .DE The output from .I fsck should look something like: .DS .B ** /dev/r\fIxx\fP0g File System: /usr NEED SCRATCH FILE (179 BLKS) ENTER FILENAME: /tmp/xxx ** Last Mounted on /usr ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Free List 671 files, 3497 used, 137067 free .R .DE .PP If there are inconsistencies in the file system, you may be prompted to apply corrective action; see the document describing .I fsck for information. .PP To use the /usr file system, you should now remount it by saying .DS \fB#\fP /etc/mount /dev/${name} /usr .DE .NH 3 Step 7: extracting remaining source from the second tape .PP You can then extract the source code for the commands from the second distribution tape\(ua .FS .IP \(ua On the TK50 the remaining source is the 9th file on the cartridge. .FE (with the exception of RK07's, RM03's, and RD52's and other small disks this will fit in the /usr file system): .DS \fB#\fP cd /usr/src \fB#\fP tar xpb 20 .DE If you get an error at this point, most likely it was a problem with tape positioning. Rewind the tape and use the \fBmt\fP command to skip files, then retry the \fBtar\fP command. .NH 2 Additional conversion information .PP After setting up the new \*(2B filesystems, you may restore the user files that were saved on tape before beginning the conversion. Note that the \*(2B \fIrestor\fP program does its work by accessing the raw file system device and depositing inodes in the appropriate locations on disk. This means that file system dumps might not restore correctly if the characteristics of the file system have changed (eg. if you're restoring a dump of a file system into a file system smaller than the original.) To restore a dump tape for, say, the /u file system something like the following would be used: .DS \fB#\fP restor r /dev/rxp1e .DE .PP If \fItar\fP images were written instead of doing a dump, you should be sure to use the `p' option when reading the files back. No matter how you restore a file system, be sure and check its integrity with \fIfsck\fP when the job is complete. .PP \fItar\fP tapes are preferred (when possible) because the inode allocation is performed by the kernel rather than the \fIrestor\fP\|(8) program. This has the benefit of allocating inodes sequentially starting from the beginning of the inode portion of the filesystem rather than preserving the fragmented/randomized order of the old filesystem. l then load unix from the root file system you just created, and the system should boot: .DS .B .\"CHECK \*(2B BSD UNIX #1: Sat Jul 4 01:33:03 PDT 1992 root@wlonex.iipo.gtegsc.com:/usr/src/sys/GENERIC phys mem = \fI???\fP avail mem = \fI???\fP user mem = \fI???\fP configure system \fI\&... information about available devices ...\fP .R (Information about various devices will print; most of them will probably not be found until the addresses are set below.) .B erase=^?, kill=^U, intr=^C # .R .DE .doc/2.10/setup.2.11/3.t 644 0 0 52716 5771171573 7251 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)3.t 1.4 (2.11BSD GTE) 1995/06/13 .\" .ds lq `` .ds rq '' .ds LH "Installing/Operating \*(2B .ds RH "Upgrading a PDP-11 UNIX System .ds CF \*(DY .LP .nr H1 3 .nr H2 0 .bp .LG .B .ce 3. UPGRADING AN EXISTING SYSTEM .sp 2 .R .NL .PP Begin by reading the document ``Changes to the System in \*(2B'' to get an idea of how the system changes will affect your local modifications. If you have local device drivers, see the file \fI/sys/OTHERS/README\fP for hints on how to integrate your drivers into \*(2B. .PP The only upgrade path to \*(2B is to do a full bootstrap as described in Chapter 2. As always, full backups of the existing system should be made to guard against errors or failures. \fBNOTE:\fP The old filesystems can not be mounted by the new kernel. If you must access old discs or filesystems, there is a version of \fIdump\fP\|(8) in /usr/src/old/dump which can be used with the \fBraw\fP disc to dump old filesystems. .PP The archive file format has changed, the 4.3BSD \fIar\fP(5) format is now used. Local archives will have to be converted by the \fI/usr/old/arcv\fP program. .NH 2 Files to save .PP The following list enumerates the standard set of files you will want to save and suggests directories in which site specific files should be present. Note that because \*(Ps changed so radically from previous versions of UNIX on the PDP-11, many of these files may not exist on your system, and will almost certainly require extensive changes for \*(2B, but it's still handy to have them around as you're configuring \*(2B. This list will likely be augmented with non-standard files you have added to your system. .PP You should create a \fItar\fP image of (at a minimum) the following files before the new file systems are created. In addition, you should do a full dump before rebuilding the file system to guard against missing something the first time around. The \*(2B \fIrestor\fP\|(8) program can read and convert old \fIdump\fP\|(8) tapes. .DS .TS l c l. /.cshrc \(ua root csh startup script /.login \(ua root csh login script /.profile \(ua root sh startup script /.rhosts \(ua for trusted machines and users /dev/MAKEDEV \(dd in case you added anything here /dev/MAKEDEV.local * for making local devices /etc/disktab * in case you changed disk partition sizes /etc/dtab \(dd table of devices to attach at boot time /etc/fstab \(ua disk configuration data /etc/ftpusers \(ua for local additions /etc/gateways \(ua routing daemon database /etc/gettytab \(ua getty database /etc/group \(ua group data base /etc/hosts \(ua for local host information /etc/hosts.dir * must be rebuilt with /etc/mkhosts /etc/hosts.pag * must be rebuilt with /etc/mkhosts /etc/hosts.equiv \(ua for local host equivalence information /etc/networks \(ua for local network information /etc/netstart * site dependent network startup script /etc/passwd * must be converted to shadow password file format /etc/passwd.dir * must be rebuilt with /etc/mkpasswd /etc/passwd.pag * must be rebuilt with /etc/mkpasswd /etc/printcap \(ua line printer database /etc/protocols \(dd in case you added any local protocols /etc/rc * for any local additions /etc/rc.local * site specific system startup commands /etc/remote \(ua auto-dialer configuration /etc/services \(dd for local additions /etc/syslog.conf \(ua system logger configuration /etc/securettys * for restricted list of ttys where root can log in /etc/ttys \(ua terminal line configuration data /etc/ttytype * terminal line to terminal type mapping data /etc/termcap \(dd for any local entries that may have been added /lib \(dd for any locally developed language processors /usr/dict/* \(dd for local additions to words and papers /usr/hosts/MAKEHOSTS \(ua for local changes /usr/include/* \(dd for local additions /usr/lib/aliases \(ua mail forwarding data base /usr/lib/crontab \(ua cron daemon data base /usr/lib/font/* \(dd for locally developed font libraries /usr/lib/lib*.a \(ua for locally libraries /usr/lib/lint/* \(dd for locally developed lint libraries /usr/lib/sendmail.cf \(ua sendmail configuration /usr/lib/tabset/* \(dd for locally developed tab setting files /usr/lib/term/* \(dd for locally developed nroff drive tables /usr/lib/tmac/* \(dd for locally developed troff/nroff macros /usr/lib/uucp/* \(ua for local uucp configuration files /usr/man/manl * for manual pages for locally developed programs /usr/msgs \(ua for current msgs /usr/spool/* \(ua for current mail, news, uucp files, etc. /usr/src/local \(ua for source for locally developed programs /sys/conf/HOST \(ua configuration file for your machine /sys/conf/files.HOST \(ua list of special files in your kernel /*/quotas * file system quota files .TE .sp \(ua\|Files that can be used from \*(Ps without change. \(dd\|Files that need local modifications merged into \*(2B files. *\|Files that require special work to merge and are discussed below. .TE .DE .NH 3 Installing \*(2B .PP The next step is to build a working \*(2B system. This can be done by following the steps in section 2 of this document for extracting the root and /usr file systems from the distribution tape onto unused disk partitions. .PP Once you have extracted the \*(2B system and booted from it, you will have to build a kernel customized for your configuration. If you have any local device drivers, they will have to be incorporated into the new kernel. See section 4.2.3 and ``Building \*(2B UNIX Systems.'' .PP With the introduction of disklabels the disk partitions in \*(2B the /etc/disktab file has changed dramatically. There is a detailed description later in this chapter about the changes. If you have modified the partition tables in previous versions of \*(2B you will need to create a new disktab entry or modify an existing one. .NH 2 Merging your files from earlier PDP-11 UNIX systems into \*(2B .PP When your system is booting reliably and you have the \*(2B root and /usr file systems fully installed you will be ready to continue with the next step in the conversion process, merging your old files into the new system. .PP If you saved the files on a \fItar\fP tape, extract them into a scratch directory, say /usr/convert: .DS \fB#\fP mkdir /usr/convert \fB#\fP cd /usr/convert \fB#\fP tar x .DE .PP For sites running \*(1B, converting local configuration files should be very simple. In general very little has changed between \*(1B and \*(2B with regard to these files. .PP For sites running a pre-\*(Ps UNIX, there is very little that can be said here as the variety of previous versions of PDP-11 UNIX systems and how they were administered is large. As an example, most previous versions of PDP-11 UNIX systems used the files \fI/etc/ttys\fP and \fI/etc/ttytype\fP to administer which terminals should have login processes attached to them and what the types of terminals those were. Under \*(2B /etc/ttytype has disappeared entirely, its functions subsumed by /etc/ttys along with several new functions. In general you will simply have to use your previous configuration files as references as you configure \*(2B to your site needs. Familiarity with 4.3BSD configuration is very helpful at this point since \*(2B is nearly identical in most of the files listed in the previous section. .PP If you have any home grown device drivers that use major device numbers reserved by the system you will have to modify the commands used to create the devices or alter the system device configuration tables in /sys/pdp/conf.c. Note that almost all \*(2B major device numbers are different from those in previous PDP-11 UNIX systems except \*(1B. A couple more device numbers were added since the release of \*(1B for the kernel logging facility (/dev/klog) and a (new) TK50/TU81 driver. .PP System security changes require adding several new ``well-known'' groups to /etc/group. The groups that are needed by the system as distributed are: .DS .TS l c. name number _ wheel 0 daemon 1 kmem 2 sys 3 tty 4 operator 5 staff 10 bin 20 .TE .DE Only users in the ``wheel'' group are permitted to \fIsu\fP to ``root''. Most programs that manage directories in /usr/spool now run set-group-id to ``daemon'' so that users cannot directly access the files in the spool directories. The special files that access kernel memory, \fI/dev/kmem\fP and \fI/dev/mem\fP, are made readable only by group ``kmem''. Standard system programs that require this access are made set-group-id to that group. The group ``sys'' is intended to control access to system sources, and other sources belong to group ``staff.'' Rather than make user's terminals writable by all users, they are now placed in group ``tty'' and made only group writable. Programs that should legitimately have access to write on user's terminals such as \fItalk\fP and \fIwrite\fP now run set-group-id to ``tty''. The ``operator'' group controls access to disks. By default, disks are readable by group ``operator'', so that programs such as \fIdf\fP can access the file system information without being set-user-id to ``root''. .PP Several new users have also been added to the group of ``well-known'' users in /etc/passwd. The current list is: .DS .TS l c. name number _ root 0 daemon 1 operator 2 uucp 66 nobody 32767 .TE .DE The ``daemon'' user is used for daemon processes that do not need root privileges. The ``operator'' user-id is used as an account for dumpers so that they can log in without having the root password. By placing them in the ``operator'' group, they can get read access to the disks. The ``uucp'' login has existed long before \*(2B, and is noted here just to provide a common user-id. The password entry ``nobody'' has been added to specify the user with least privilege. .PP After restoring your old password file from tape/backups, a conversion is required to create the shadow password file. Only the steps to convert /etc/passwd are given here, see the various man pages for \fIchpass\fP\|(1), \fIvipw\fP\|(8), \fImkpasswd\fP\|(8), etc. .DS \fB#\fP awk -f /etc/awk.script < /etc/passwd >/etc/junk \fB#\fP mkpasswd -p /etc/junk \fB#\fP mv /etc/junk.orig /etc/passwd \fB#\fP mv /etc/junk.pag /etc/passwd.pag \fB#\fP mv /etc/junk.dir /etc/passwd.dir \fB#\fP mv /etc/junk /etc/master.passwd \fB#\fP chown root /etc/passwd* /etc/master.passwd \fB#\fP chmod 0600 /etc/master.passwd .DE .PP The format of the cron table, /usr/lib/crontab, is the same as that of \*(1B. .PP Some of the commands previously in /etc/rc.local have been moved to /etc/rc; several new functions are now handled by /etc/rc.local. You should look closely at the prototype version of /etc/rc.local and read the manual pages for the commands contained in it before trying to merge your local copy. Note in particular that \fIifconfig\fP has had many changes, and that host names are now fully specified as domain-style names (e.g, boris.Oswego.EDU). .PP The C library and system binaries on the distribution tape are compiled with versions of \fIgethostbyname\fP and \fIgethostbyaddr\fP which use ndbm host table lookup routines instead of the name server. You must run \fImkhosts\fP\|(8) to create the \fIndbm\fP host table database from \fI/etc/hosts\fP. For \*(2B the \fImkhosts\fP program has been enhanced to support multiple addresses per host with order being preserved (the order in which the multiple addresses appear in \fI/etc/hosts\fP for the same host is the same order the addresses will be returned to the caller of \fIgethostbyname\fP). .PP There is a version of the nameserver which runs under \*(2B. However in addition to having a voracious appetite for memory there are memory leaks which cause \fInamed\fP\|(8) to crash after running for an extended period. Restarting \fInamed\fP\|(8) nightly from \fIcron\fP is the only work around solution at present. .PP If you want to compile your system to use the name server resolver routines instead of the ndbm host table, you will need to modify /usr/src/lib/libc/Makefile according to the instructions there and then recompile all of the system and local programs (see section 6.5).\(ua .FS .IP \(ua Note: The resolver routines add about 5kb of text and 1kb of data to each program. Also, the resolver routines use more stack space which may cause large programs to crash due to failure to extend the stack area. .FE .PP The format of /etc/ttys is the same as it was under \*(Ps. It includes the terminal type and security options that were previously in /etc/ttytype and /etc/securettys. .PP \fIsyslog\fP is the 4.4BSD-Lite version now. See \fIsyslog\fP\|(3) and \fIsyslogd\fP\|(8) for details. They are used by many of the system daemons to monitor system problems more closely, for example network routing changes. .PP Again, it must be emphasized that the nameserver is not robust under \*(2B, and if the \fIhosts\fP files are not desired then the best alternative is to use the \fIresolver\fP\|(5) routines and use the nameserver on a remote larger machine. The \fIresolver\fP\|(5) routines are known to work. .PP The spooling directories saved on tape may be restored in their eventual resting places without too much concern. Be sure to use the ``p'' option to \fItar\fP so that files are recreated with the same file modes: .DS \fB#\fP cd /usr \fB#\fP tar xp msgs spool/mail spool/uucp spool/uucppublic spool/news .DE .PP The ownership and modes of two of these directories needs to be changed, because \fIat\fP now runs set-user-id ``daemon'' instead of root. Also, the uucp directory no longer needs to be publicly writable, as \fItip\fP reverts to privileged status to remove its lock files. After copying your version of /usr/spool, you should do the following: .DS \fB#\fP chown \-R daemon /usr/spool/at \fB#\fP chown \-R root /usr/spool/uucp \fB#\fP chgrp \-R daemon /usr/spool/uucp \fB#\fP chmod \-R o\-w /usr/spool/uucp .DE .PP Whatever else is left is likely to be site specific or require careful scrutiny before placing in its eventual resting place. Refer to the documentation and source code before arbitrarily overwriting a file. .NH 2 Hints on converting from previous PDP-11 UNIX systems to \*(2B .PP This section summarizes some of the significant changes in \*(2B from \*(1B. The installation guide for \*(1B is included in the distribution as /usr/doc/2.10/setup.2.10 and should be read if you are not presently running \*(Ps or \*(1B. It does not include changes in the network; see chapter 5 for information on setting up the network. .PP Old core files will not be intelligible by the current debuggers because of numerous changes to the user structure. Also removed from the user structure are the members u_offset, u_count, u_base, u_segflg, the 4.3BSD uio/iovec/rdwri kernel i/o model having been put in place. The 4.3BSD \fInamei\fP argument encapsulation technique has been ported, which adds the u_nd member to the user structure. .PP Note, once your system is installed and running, you should make sure that you recompile and reinstall the directory \fIusr/src/etc/tzone\fP. Read through the Makefile first, if you're not located on the West Coast you will have to change it. This directory is an addition since 4.3BSD, and is intended to solve the Daylight Savings Time problems once and for all. .PP The incore inode structure has had the i_id member added as part of implementing the 4.3BSD namei cache. The di_addr member of the on disk inode structure is now an array of type \fBdaddr_t\fP instead of \fBchar\fP. The old 3 byte packed block number is obsolete at last. .PP The on disk directory structure is that of 4.3BSD with the difference that the inode number is an unsigned short instead of a long. This was done to reduce the amount of long arithmetic in the kernel and to maintain compatibility with earlier versions with regard to the maximum number of inodes per filesystem. Given the typical size of discs used with \*(2B the limit on the number of inodes per filesystem will not be a problem. .PP And again, \*(2B is not filesystem compatible with any previous PDP-11 UNIX system\fP. .PP If you want to use \fIps\fP after booting a new kernel, and before going multiuser, you must initialize its name list database by running \fIps \-U\fP. .NH 2 Hints on possible problems upgrading from the \*(1B .NH 3 New utmp UT_NAMESIZE. .PP .B UT_NAMESIZE in .I < utmp.h > was changed from 8 to 15. This won't affect correctly written programs (those which do not hard code the constant 8) at the source level but does cause changes in various databases. This means that old binaries won't be able to cope with new databases (passwd, aliases, etc) and vice versa. .PP This change was necessary since the systems available for \*(2B development had to be shared with systems in which UT_NAMESIZE was set at 15. If this change/incompatibility is not desired, then utmp.h and wtmp.h will have to be modified and the system libraries and applications rebuilt before proceeding to load local software. .PP The simplest way to deal with this incompatibility is simply to rebuild all your databases from the source data. In particular, you should be sure you rebuild .IR /etc/passwd , .IR /etc/hosts , and .I /usr/lib/aliases databases via the commands: .IR "/etc/mkpasswd /etc/passwd" , .IR "/etc/mkhosts /etc/hosts" , and .IR /usr/ucb/newaliases. .NH 3 man system .PP The manual system continues to track the changes going on in 4BSD. I'm not convinced the new setup is better, but it does seem to be the method of the moment. The setup is essentially the same as that in the .B 4.3BSD-TAHOE distribution with the manual source in /usr/src/man. .NH 3 NMOUNT lowered .PP The value of .B NMOUNT in .I /sys/h/param.h is set to 5 in the distribution system. This will be too small for many sites. Since each mount table entry costs about 440 bytes of valuable kernel dataspace this number should be chosen with care. See Appendix A for an explanation of how to reconfigure .B NMOUNT. .NH 3 Shadow passwords .PP The May 1989 release of the 4.3BSD shadow password file has been ported to \*(2B. Password aging is also implemented. .NH 3 New /etc/rc startup scripts .PP .I /etc/rc and .I /etc/rc.local have changed fairly significantly, and .PP .I /etc/netstart has been added to configure site specific network features (much of this was pulled from the old rc.local). .I /etc/netstart uses the tiny program \fItestnet\fP which attempts to create a socket and prints NO on stdout if an error is returned by the kernel, YES if no error was returned. .NH 3 mkfs, mkproto, mklost+found .PP \fImkfs\fP\|(8) no longer can populate a filesystem with files. The 4.3BSD versions of \fImkfs\fP\|(8) and \fImkproto\fP\|(8) were ported to \*(2B. There is a limit on the size of the file which \fImkproto\fP\|(8) can place on a newly created filesystem. Only files up to single indirect (about 260kb) may be copied at this time. .PP \fImklost+found\fP\|(8) is a ported version from 4.3BSD, the only change being to use 63 character file names (MAXNAMLEN is 63 at this time in \*(2B) instead of 255. \fImklost+found\fP\|(8) is really not needed, \fIfsck\fP\|(8) is now capable of automatically extending lost+found by up to the number of direct blocks in an inode. .NH 3 /etc/disktab .PP The format of /etc/disktab is now the same as 4.3BSD-Reno and 4.4BSD. Previously to describe a drive (an RM03 for example) the /etc/disktab file had entries of the form: .sp .nf :ty=removable:ns#32:nt#5:nc#823:sf: :b0=/mdec/rm03uboot: :pa#9600:ba#1024:fa#1024: :pb#9600:bb#1024:fb#1024: :pc#131520:bc#1024:fc#1024: :pf#121920:bf#1024:ff#1024: :pg#112320:bg#1024:fg#1024: :ph#131520:bh#1024:fh#1024: .fi .sp Note that there is no information at all about which cylinder a partition starts at or which partitions overlap and may not be used simultaneously. That information was kept in tables in the driver. If you modified /etc/disktab it would have no effect without also changing the driver and recompiling the kernel. .LP The new /etc/disktab file looks like this: .sp .nf :ty=removable:ns#32:nt#5:nc#823:sf: :b0=/mdec/rm03uboot: :pa#9600:oa#0:ba#1024:fa#1024:ta=2.11BSD: :pb#9600:ob#9600:bb#1024:fb#1024:tb=swap: :pc#131520:oc#0:bc#1024:fc#1024: :pf#121920:of#9600:bf#1024:ff#1024:tf=2.11BSD: :pg#112320:og#19200:bg#1024:fg#1024:tg=2.11BSD: :ph#131520:oh#0:bh#1024:fh#1024:th=2.11BSD .fi .sp .PP There are two new fields per partition, the 'o' (oa, ob, usw.) field specifies the offset in sectors that the partition begins at. The 't' field specifies the partition type. Only those partitions which are \fB2.11BSD\fP will be recognized by \fInewfs\fP\|(8) and the kernel as filesystems. The kernel also will not swap or place a crash dump on a partition that is not of type \fBswap\fP. .PP The two examples above are equivalent and provide an example of a translating an old style disktab entry into a new style entry. To translate a customized disktab entries you will need: 1) a copy of your current partition tables from the device driver, 2) a copy of the old disktab entry, 3) your current /etc/fstab file. In new disktab entries you should only place those partitions you actually use. There is no need to declare (as was done in the examples above) all of the possible partitions. .PP If you have changed the disk partition sizes, be sure to make the necessary /etc/disktab changes and label your disks BEFORE trying to access any of your old file systems! There are two ways to label your disks. The standalone disklabel program is one way. It is also possible to label disks using \fIdisklabel\fP\|(8) with the \-r option \- this works even when running on a kernel which does not support labels (\-r reads and writes the raw disk, thus it is possible to label disks on an older kernel as long as the \fIdisklabel\fP\|(8) program is present). to having a voracious appetite for memory there adoc/2.10/setup.2.11/4.t 644 0 12 73374 5771171610 7270 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)4.t 2.2 (2.11BSD GTE) 1995/06/16 .\" .de IR \fI\\$1\fP\|\\$2 .. .ds LH "Installing/Operating \*(2B .nr H1 4 .nr H2 0 .ds CF \*(DY .ds RH "System setup .bp .LG .B .ce 4. SYSTEM SETUP .sp 2 .R .NL .PP This section describes procedures used to set up a PDP-11 UNIX system. These procedures are used when a system is first installed or when the system configuration changes. Procedures for normal system operation are described in the next section. .NH 2 Creating a UNIX boot .PP \fI/boot\fP uses the device information passed to it from the bootstrap in determining the device, unit and file to load. If an autoreboot is being done the kernel will have passed the device information to the bootstrap as well as setting the autoreboot flag. .PP \fI/boot\fP does not require recompilation to adapt to a new autoreboot device. .NH 2 Kernel configuration .PP This section briefly describes the layout of the kernel code and how files for devices are made. .NH 3 Kernel organization .PP As distributed, the kernel source is in a separate tar image. The source may be physically located anywhere within any file system so long as a symbolic link to the location is created for the file /sys (many files in /usr/include are normally symbolic links relative to /sys). In further discussions of the system source all path names will be given relative to /sys. .PP The directory /sys/sys contains the mainline machine independent operating system code. Files within this directory are conventionally named with the following prefixes: .DS .TS lw(1.0i) l. init_ system initialization kern_ kernel (authentication, process management, etc.) quota_ kernel portion of disk quota system subr_ misc. subroutines used throughout the kernel sys_ system calls and the like tty_ terminal handling ufs_ file system uipc_ interprocess communication vm_ memory management .TE .DE .PP The remaining directories are organized as follows: .DS .TS lw(1.0i) l. /sys/h machine independent include files /sys/conf site configuration files and basic templates /sys/net network independent, but network related code /sys/netinet DARPA Internet code /sys/netimp IMP support code /sys/netns Xerox NS support code /sys/pdp PDP-11 specific mainline code /sys/pdpif PDP-11 network interface code /sys/pdpmba PDP-11 MASSBUS device drivers and related code /sys/pdpuba PDP-11 UNIBUS device drivers and related code .TE .DE .PP Many of these directories are referenced through /usr/include with symbolic links. For example, /usr/include/sys is a symbolic link to /sys/h. The system code, as distributed, is mostly independent of the include files in /usr/include. Unfortunately not all references to /usr/include have been eradicated, so compiling the system requires the /usr file system to be mounted. .NH 3 Devices and device drivers .PP Devices supported by UNIX are implemented in the kernel by drivers whose source is kept in /sys/pdp, /sys/pdpuba, or /sys/pdpmba. These drivers are loaded into the system when included in a cpu specific configuration file kept in the conf directory. Devices are accessed through special files in the file system, made by the .IR mknod (8) program and normally kept in the /dev directory. For all the devices supported by the distribution system, the files in /dev are created by the /dev/MAKEDEV shell script. .PP Determine the set of devices that you have and create a new /dev directory by running the MAKEDEV script. First create a new directory /newdev, copy MAKEDEV into it, edit the file MAKEDEV.local to provide an entry for local needs, and run it to generate a /newdev directory. For instance, if your machine has a single DZ11, a single DH11, an RM03 disk, an EMULEX UNIBUS SMD disk controller, an AMPEX 9300 disk, and a TE16 tape drive you would do: .DS \fB#\fP cd / \fB#\fP mkdir newdev \fB#\fP cp dev/MAKEDEV newdev/MAKEDEV \fB#\fP cd newdev \fB#\fP MAKEDEV dz0 dh0 xp0 xp1 ht0 std LOCAL .DE Note the ``std'' argument causes standard devices such as \fI/dev/console\fP, the machine console, \fI/dev/null\fP, \fI/dev/tty\fP, \fI/dev/klog\fP, etc. to be created. .PP You can then do .DS \fB#\fP cd / \fB#\fP mv dev olddev ; mv newdev dev \fB#\fP sync .DE to install the new device directory.\(ua .FS .IP \(ua You must reboot your system before you can remove the /olddev directory. .FE As distributed almost all of the device nodes are already present and you may wish to remove unused entries from /dev to speed up scanning of the directory. The terminal nodes are almost certainly incorrect for your site and will need to be deleted and recreated. Directly connected terminals should have the softcarrier bit on in their minor device numbers. Since MAKEDEV by default creates terminal (dh, dz, etc) nodes with the softcarrier bit off you will have to delete those nodes and recreate those terminal nodes which are directly connected: .DS \fB#\fP cd /dev \fB#\fP rm ttyh0 \fB#\fP mknod ttyh0 c 3 128 .DE .NH 3 Building new system images .PP The kernel configuration of each UNIX system is described by a single configuration file, stored in the \fI/sys/conf\fP directory. The format of this file is very simple consisting of lines starting with an \fIidentifier\fP followed by a \fIvalue\fP. Blank lines and anything past a ``#'' (including the #) are comments. This file is processed by the shell script \fIconfig\fP in the same directory. The manual pages in section 4 of the UNIX manual specify the configuration lines necessary for various devices. A comprehensive list of system options with descriptions of their meanings and effects can be found in appendix A. .PP The configuration file \fIGENERIC\fP in the conf directory was used to build the generic distribution kernel. To build a local configuration file, copy GENERIC to a new file \fISYSTEM\fP, edit \fISYSTEM\fP for your local system configuration, and then type "./config \fISYSTEM\fP". This will create the directory \fI../SYSTEM\fP and copy specially edited files into based on the definitions in \fISYSTEM\fP. Change directory into the new system directory and type "make all".\(ua, .FS .IP \(ua note that non-separate systems are not currently supported .FE .DS \fB#\fP cp GENERIC \fISYSTEM\fP \fB#\fP TERM=\fIterminal_type\fP; export TERM \fB#\fP vi \fISYSTEM\fP \fB#\fP ./config \fISYSTEM\fP \fB#\fP cd ../\fISYSTEM\fP \fB#\fP make .DE .PP Note that the overlay scheme in the Makefile copied into the new system directory may fail because either the \fIbase segment\fP is too small, too large or one or more \fIoverlay segments\fP are too large. If this happens the system objects will have to be re-arranged in the \fIbase\fP and \fIoverlay\fP segments. The comments in the Makefile should make it fairly clear what the restrictions on object placement are in the system. .PP The configured system image ``unix''\(dd .FS .IP \(dd on networked systems there are two images \fIunix\fP, and \fInetnix\fP. .FE should be copied to the root, and then booted to try it out. It is best to save the old kernel to a known name so as not to destroy the working system until you're sure the new one does work. It is an \fBbetter\fP idea to have a non network kernel (/emergencyunix) always kept on the system: .DS \fB#\fP cp /unix /oldunix \fB#\fP make install \fB#\fP sync .DE To boot the new version of the system you should follow the bootstrap procedures outlined in section titled ``\fBBootstrap and shutdown procedures\fP'' A systematic scheme for numbering and saving old versions of the system may be useful. .NH 2 Disk configuration .PP This section describes how to layout file systems to make use of the available space and to balance disk load for better system performance. .NH 3 Disk naming and divisions .PP Each physical disk drive can be divided into up to 8 partitions; UNIX typically uses only 3 or 4 partitions. For instance, on an RP06 the first partition, xp0a, is used for a root file system, a backup thereof, or a small file system like, /tmp; the second partition, xp0b, is used for swapping or a small file system; and a combination of the remaining partitions (xp0d, xp0e, xp0f, xp0g, xp0h) would hold user file systems. .sp .RS .PP \fBWarning:\fP for disks on which DEC standard 144 bad sector forwarding is supported, the last track and up to 126 preceding sectors contain replacement sectors and bad sector lists. Disk-to-disk copies should be careful to avoid overwriting this information. See \fIbad144\fP\|(8). Bad sector forwarding is optional in the \fBhk\fP and \fBxp\fP drivers. The partition sizes listed in \fI/etc/disktab\fP that \fInewfs\fP\|(8) uses automatically reserve the maximum amount of room that may be used by bad block forwarding on a disk. .PP Note also that bad144 style bad block forwarding \fIcan not\fP be used with SI controllers on the xp driver as the controllers use their own internal scheme for bad block forwarding, and you can in fact make your disks unusable on the SI controllers if you write anything in the last five cylinders. The partition sizes in \fI/etc/disktab\fP also handle this constraint automatically. .PP The generic distribution kernel does not do bad block forwarding. There is unfortunately no way to run bad144 style bad block forwarding on some of your disks, but not others. As a final bug, the hk and xp drivers do not reread the bad sector forwarding information when disk packs are changed and so will erroneously use bad block forwarding information from the wrong packs! .RE .sp .PP The space available on a disk varies, not surprisingly, per device. Disklabels make a table giving sizes meaningless since there are no predefined partition sizes embedded in the kernel any longer. The root filesystem (\fBa\fP) must be at least 4Mb, preferably 6 to 7Mb if possible. The swap area (almost always the \fBb\fP partition) should be about 3Mb or so. If your system has a small amount (less than 2Mb) of memory you will need more swap space, perhaps 4 or 5Mb. It is a rare case where more than 5 or 6Mb of swap space is required. The system will run out of other resources by the time enough activity is generated to need that much swap space. .PP The system (boot) disk has a swapping area and a root file system. Other drives may use those partitions for data. \fBRemember:\fP the \fBa\fP partition must start at sector 0 or \fIdisklabel\fP\|(8) or else the kernel will not be able to read/write the label. .PP The distributed system binaries occupy about 34 Megabytes while the major sources occupy another 36 Megabytes. Adding in the miscellaneous sources, a few locate works of art bring the total for a complete system to about 90 Megabytes. This overflows RK07, RL02 and RM03 systems, but fits easily on most other hardware configurations. \*(2B is quite happy on RD54 or larger. Simply fitting the distribution isn't enough, there must still be space left for user files, objects when compiling programs, spooling directories, usw. .PP Be aware that the disks have their sizes measured in disk sectors (512 bytes), while the UNIX file system blocks are 1024 bytes each. Thus if a disk partition has 10000 sectors (disk blocks), it will have only 5000 UNIX file system blocks, and you \fImust\fP divide by 2 to use 5000 when specifying the size to the \fImkfs\fP command for instance. The \fInewfs\fP\|(8) program performs this calculation automatically. You should \fBnever\fP need to run \fImkfs\fP manually. All user programs report disk space in kilobytes and, where needed, disk sizes are always specified in units of sectors. The /etc/disktab file used in making file systems specifies disk partition sizes in sectors; the default sector size may be overridden with the ``se'' attribute. \fBNote\fP that the only sector size currently supported is NBPG as defined in \fI/sys/pdp/machparam.h\fP. This restriction is enforced in several places in the disklabeling process as a safeguard against specifying a sector size other than NBPG (512). Any other sector size would produce strange results and almost certainly curdled filesystems. .NH 3 Layout considerations .PP There are several considerations in deciding how to adjust the arrangement of things on your disks. The most important is making sure that there is adequate space for what is required; secondarily, throughput should be maximized. Swap space is an important parameter since it defines the maximum process image load that may be run. If, for instance, your swap area were smaller than the amount of main memory available after the kernel took its share, some of your memory would never be used. .PP Many common system programs (C, the editor, the assembler etc.) create intermediate files in the /tmp directory, so the file system where this is stored also should be made large enough to accommodate most high-water marks; if you have several disks, it makes sense to mount this in a ``root'' (i.e. first partition) file system on another disk. All the programs that create files in /tmp take care to delete them, but are not immune to rare events and can leave dregs. The directory should be examined every so often and the old files deleted. .PP The efficiency with which UNIX is able to use the CPU is often strongly affected by the configuration of disk controllers. For general time-sharing applications, the best strategy is to try to split the most actively-used sections among several disk arms. .PP It is critical for good performance to balance disk load. There are at least five components of the disk load that you can divide between the available disks: .DS 1. The root file system. 2. The /tmp file system. 3. The /usr file system. 4. The user files. 5. The swapping activity. .DE The following possibilities are ones that have been used at times when 2, 3 and 4 disks were available: .TS center doublebox; l | c s s l | lw(5) | lw(5) | lw(5). disks what 2 3 4 _ / 0 0 0 tmp 1 2 3 usr 1 1 1 swapping\(ua 0 2 2 users 0 0+2 0+2 archive x x 3 .TE .FS .IP \(ua Note also, that only a single swapping area is supported. The \fIswapon\fP\|(2) system call and multiple swapping areas have \fBnot\fP been implemented under \*(2B (yet. no real need since enough other resources are exhausted by the time a 4mb 11/73 needs additional swap space). .FE .PP The most important things to consider are to even out the disk load as much as possible, and to do this by decoupling file systems (on separate arms) between which heavy copying occurs. Note that a long term average balanced load is not important; it is much more important to have an instantaneously balanced load when the system is busy. When placing several busy file systems on the same disk, it is helpful to group them together to minimize arm movement, with less active file systems off to the side. .PP Intelligent experimentation with a few file system arrangements can pay off in much improved performance. It is particularly easy to move the root, the /tmp file system and the swapping area. Note, though, that the disks containing the root and swapping area can never be removed while UNIX is running. Place the user files and the /usr directory as space needs dictate and experiment with the other, more easily moved file systems. .NH 3 Implementing a layout .PP To put a chosen disk layout into effect, you should use the .IR newfs (8) command to create each new file system. Each file system must also be added to the file /etc/fstab so that it will be checked and mounted when the system is bootstrapped. .PP As an example, consider a system with RA80's. On the first RA80, ra0, we will put the root file system in ra0a, and the /usr file system in ra0c, which has enough space to hold it and then some. The /tmp directory will be part of the root file system, as no file system will be mounted on /tmp. If we had only one RA80, we would put user files in the ra0c partition with the system source and binaries. .PP If we had a second RA80, we would place \fI/usr\fP in ra1c. We would put user files in ra0c, calling the file system /mnt. We would put swap on \fIra0b\fP. We would keep a backup copy of the root file system in the \fBra1a\fP disk partition and put /tmp on \fIra1b\fP. \fI/etc/fstab\fP would then contain .DS /dev/ra0a:/:rw:1:1 /dev/ra0b::sw:: /dev/ra0c:/mnt:rw:1:2 /dev/ra1b:/tmp:rw:: /dev/ra1c:/usr:rw:1:2 .DE .PP To make the /mnt file system we would do: .DS \fB#\fP cd /dev \fB#\fP MAKEDEV ra1 \fB#\fP newfs ra1c ra80 (information about file system prints out) (to specify an alternate \fIm\fP value: newfs -m # ra1c ra80) (where # is between 1 and 31) \fB#\fP mkdir /mnt \fB#\fP mount /dev/ra1c /mnt .DE .NH 2 Configuring terminals .PP If UNIX is to support simultaneous access from directly-connected terminals other than the console, the file \fI/etc/ttys\fP (\fIttys\fP\|(5)) must be edited. .PP Terminals connected via DZ11 interfaces are conventionally named \fBttyDD\fP where DD is a decimal number, the ``minor device'' number. The lines on dz0 are named /dev/tty00, /dev/tty01, ... /dev/tty07. By convention, all other terminal names are of the form \fBtty\fPCX, where C is an alphabetic character according to the type of terminal multiplexor and its unit number, and X is a digit for the first ten lines on the interface and an increasing lower case letter for the rest of the lines. C is defined for the number of interfaces of each type listed below. Since tty structures are approximately 78 bytes each, it is highly doubtful that more than 3 or 4 terminal interface boards will ever be attached to a PDP-11 (especially in a BA23 cabinet). .DS .TS center box; c c c c c c c c l c n n. Interface Number of lines Number of Type Characters per board Interfaces _ DZ11 see above 8 10 DH11 h-o 16 8 DHU11 S-Z 16 8 pty p-u 16 6 .TE .DE .PP To add a new terminal device, be sure the device is configured into the system and that the special files for the device have been made by /dev/MAKEDEV. Then, enable the appropriate lines of /etc/ttys by setting the ``status'' field to \fBon\fP (or add new lines). Note that lines in \fI/etc/ttys\fP are one-for-one with entries in the file of current users (\fI/etc/utmp\fP), and therefore it is best to make changes while running in single-user mode and to add all of the entries for a new device at once. .PP The format of the /etc/ttys file is the same in \*(2B as in \*(Ps and 4.3BSD. Each line in the file is broken into four tab separated fields (comments are shown by a `#' character and extend to the end of the line). For each terminal line the four fields are: the device (without a leading /dev), the program /etc/init should startup to service the line (or \fBnone\fP if the line is to be left alone), the terminal type (found in /etc/termcap), and optional status information describing if the terminal is enabled or not and if it is ``secure'' (i.e. the super user should be allowed to login on the line). All fields are character strings with entries requiring embedded white space enclosed in double quotes. Thus a newly added terminal /dev/tty00 could be added as .DS tty00 "/etc/getty std.9600" vt100 on secure # Steve's office .DE The std.9600 parameter provided to /etc/getty is used in searching the file /etc/gettytab; it specifies a terminal's characteristics (such as baud rate). To make custom terminal types, consult .IR gettytab (5) before modifying /etc/gettytab. .PP Dialup terminals should be wired so that carrier is asserted only when the phone line is dialed up. For non-dialup terminals from which modem control is not available, you must either wire back the signals so that the carrier appears to always be present, or show in the minor device number that carrier is to be assumed to be present by adding 128 decimal to the minor device number when creating the device node. This differs from 4.3BSD where the softcarrier state is specified at kernel configuration time. .PP For network terminals (i.e. pseudo terminals), no program should be started up on the lines. Thus, the normal entry in /etc/ttys would look like .DS ttyp0 none network .DE (Note the fourth field is not needed here.) .PP When the system is running multi-user, all terminals that are listed in /etc/ttys as \fBon\fP have their line are enabled. If, during normal operations, it is desired to disable a terminal line, you can edit the file /etc/ttys to change the terminal's status to \fBoff\fP and then send a hangup signal to the \fIinit\fP process, by doing .DS \fB#\fP kill \-1 1 .DE Terminals can similarly be enabled by changing the status field from \fBoff\fP to \fBon\fP and sending a hangup signal to \fIinit\fP. .PP Note that if a special file is inaccessible when \fIinit\fP tries to create a process for it, init will log a message to the system error logging process (/etc/syslogd) and try to reopen the terminal every minute, reprinting the warning message every 10 minutes. Messages of this sort are normally printed on the console, though other actions may occur depending on the configuration information found in /etc/syslog.conf. .PP Finally note that you should change the names of any dialup terminals to ttyd? where ? is in [0-9a-zA-Z], as some programs use this property of the names to determine if a terminal is a dialup. Shell commands to do this should be put in the /dev/MAKEDEV.local script. .NH 2 Adding users .PP New users can be added to the system by adding a line to the password file /etc/passwd. The procedure for adding a new user is described in .IR adduser (8). .PP You should add accounts for the initial user community, giving each a directory and a password, and putting users who will wish to share software in the same groups. .PP Several guest accounts have been provided on the distribution system; these accounts are for people at Berkeley, Bell Laboratories, and others who have done major work on UNIX in the past. You can delete these accounts, or leave them on the system if you expect that these people would have occasion to login as guests on your system. .NH 2 Site tailoring .PP All programs that require the site's name, or some similar characteristic, obtain the information through system calls or from files located in /etc. Aside from parts of the system related to the network, to tailor the system to your site you must simply select a site name, then edit the file .DS /etc/netstart .DE At or about line 25 in /etc/netstart you should find a line similar to: .DS /bin/hostname \fImyname.my.domain\fP .DE defines the value returned by the .IR gethostname (2) system call. Your hostname should be your fully qualified domain name. Programs such as .IR getty (8), .IR mail (1), .IR wall (1), .IR uucp (1), and .IR who (1) use this system call so that the binary images are site independent. .NH 2 Setting up the mail system .PP The mail system consists of the following commands: .DS .TS l l. /bin/mail old standard mail program, \fIbinmail\fP\|(1) /usr/ucb/mail UCB mail program, described in \fImail\fP\|(1) /usr/lib/sendmail mail routing program /usr/spool/mail mail spooling directory /usr/lib/aliases mail forwarding information /usr/ucb/newaliases command to rebuild binary forwarding database /usr/ucb/biff mail notification enabler\(ua /etc/comsat mail notification daemon\(ua .TE .DE Mail is normally sent and received using the .IR mail (1) command, which provides a front-end to edit the messages sent and received, and passes the messages to .IR sendmail (8) for routing. The routing algorithm uses knowledge of the network name syntax, aliasing and forwarding information, and network topology, as defined in the configuration file /usr/lib/sendmail.cf, to process each piece of mail. Local mail is delivered by giving it to the program /bin/mail that adds it to the mailboxes in the directory /usr/spool/mail/\fIusername\fP, using a locking protocol to avoid problems with simultaneous updates. After the mail is delivered, the local mail delivery daemon /etc/comsat is notified, which in turn notifies users who have issued a ``\fIbiff\fP y'' command that mail has arrived\(ua. .FS .IP \(ua comsat and biff are only available under systems configured for networking support. .FE .PP To set up the mail facility you should read the instructions in the file READ_ME in the directory /usr/src/usr.lib/sendmail and then adjust the necessary configuration files. You should also set up the file /usr/lib/aliases for your installation, creating mail groups as appropriate. Documents describing .IR sendmail 's operation and installation are also included on the distribution tape. .NH 3 Setting up a UUCP connection .PP The version of \fIuucp\fP included in \*(2B is an enhanced version of the one originally distributed with 32/V\(ua. .FS .IP \(ua The \fIuucp\fP included in this distribution is the result of work by many people; we gratefully acknowledge their contributions, but refrain from mentioning names in the interest of keeping this document current. .FE The enhancements include: .IP \(bu 3 support for many auto call units and dialers in addition to the DEC DN11, .IP \(bu 3 breakup of the spooling area into multiple subdirectories, .IP \(bu 3 addition of an \fIL.cmds\fP file to control the set of commands that may be executed by a remote site, .IP \(bu 3 enhanced ``expect-send'' sequence capabilities when logging in to a remote site, .IP \(bu 3 new commands to be used in polling sites and obtaining snap shots of \fIuucp\fP activity, .IP \(bu 3 additional protocols for different communication media. .LP This section gives a brief overview of \fIuucp\fP and points out the most important steps in its installation. .PP To connect two UNIX machines with a \fIuucp\fP network link using modems, one site must have an automatic call unit and the other must have a dialup port. It is better if both sites have both. .PP You should first read the paper in the UNIX System Manager's Manual: ``Uucp Implementation Description''. It describes in detail the file formats and conventions, and will give you a little context. In addition, the document ``setup.tblms'', located in the directory /usr/src/usr.bin/uucp/UUAIDS, may be of use in tailoring the software to your needs. .PP The \fIuucp\fP support is located in three major directories: /usr/bin, /usr/lib/uucp, and /usr/spool/uucp. User commands are kept in /usr/bin, operational commands in /usr/lib/uucp, and /usr/spool/uucp is used as a spooling area. The commands in /usr/bin are: .DS .TS l l. /usr/bin/uucp file-copy command /usr/bin/uux remote execution command /usr/bin/uusend binary file transfer using mail /usr/bin/uuencode binary file encoder (for \fIuusend\fP) /usr/bin/uudecode binary file decoder (for \fIuusend\fP) /usr/bin/uulog scans session log files /usr/bin/uusnap gives a snap-shot of \fIuucp\fP activity /usr/bin/uupoll polls remote system until an answer is received /usr/bin/uuname prints a list of known uucp hosts /usr/bin/uuq gives information about the queue .TE .DE The important files and commands in /usr/lib/uucp are: .DS .TS l l. /usr/lib/uucp/L-devices list of dialers and hard-wired lines /usr/lib/uucp/L-dialcodes dialcode abbreviations /usr/lib/uucp/L.aliases hostname aliases /usr/lib/uucp/L.cmds commands remote sites may execute /usr/lib/uucp/L.sys systems to communicate with, how to connect, and when /usr/lib/uucp/SEQF sequence numbering control file /usr/lib/uucp/USERFILE remote site pathname access specifications /usr/lib/uucp/uucico \fIuucp\fP protocol daemon /usr/lib/uucp/uuclean cleans up garbage files in spool area /usr/lib/uucp/uuxqt \fIuucp\fP remote execution server .TE .DE while the spooling area contains the following important files and directories: .DS .TS l l. /usr/spool/uucp/C. directory for command, ``C.'' files /usr/spool/uucp/D. directory for data, ``D.'', files /usr/spool/uucp/X. directory for command execution, ``X.'', files /usr/spool/uucp/D.\fImachine\fP directory for local ``D.'' files /usr/spool/uucp/D.\fImachine\fPX directory for local ``X.'' files /usr/spool/uucp/TM. directory for temporary, ``TM.'', files /usr/spool/uucp/LOGFILE log file of \fIuucp\fP activity /usr/spool/uucp/SYSLOG log file of \fIuucp\fP file transfers .TE .DE .PP To install \fIuucp\fP on your system, start by selecting a site name. A \fIuucp\fP account must be created in the password file and a password set up. Then, create the appropriate spooling directories with mode 755 and owned by user \fIuucp\fP, group \fIdaemon\fP. .PP If you have an auto-call unit, the L.sys, L-dialcodes, and L-devices files should be created. The L.sys file should contain the phone numbers and login sequences required to establish a connection with a \fIuucp\fP daemon on another machine. For example, my L.sys file looks something like: .sp .DS elisa Any ACU 1200 7064297 "" \\\\r\\\\c ogin-EOT-ogin-\\\\r\\\\c-ogin xelisa assword: XXX etn-ra Any ACU 1200 8891237 "" \\\\r\\\\c ogin nuucp assword XXX anagld Never ACU 2400 8894517 name:-EOT-name: uucp assword: XXX .DE .sp The first field is the name of a site, the second shows when the machine may be called, the third field specifies how the host is connected (through an ACU, a hard-wired line, etc.), then comes the phone number to use in connecting through an auto-call unit, and finally a login sequence. The phone number may contain common abbreviations that are defined in the L-dialcodes file. The device specification should refer to devices specified in the L-devices file. Listing only ACU causes the \fIuucp\fP daemon, \fIuucico\fP, to search for any available auto-call unit in L-devices. Our L-dialcodes file is of the form: .DS ny 1-315- nj 1-201- bostn 1-617- .DE while our L-devices file is: .DS ACU cul0 unused 1200 ventel .DE Refer to the README file in the \fIuucp\fP source directory for more information about installation. .PP As \fIuucp\fP operates it creates (and removes) many small files in the directories underneath /usr/spool/uucp. Sometimes files are left undeleted; these are most easily purged with the \fIuuclean\fP program. The log files can grow without bound unless trimmed back; \fIuulog\fP maintains these files. Many useful aids in maintaining your \fIuucp\fP installation are included in a subdirectory UUAIDS beneath /usr/src/usr.bin/uucp. Peruse this directory and read the ``setup'' instructions also located there. work .DE (Note the fourth field is not needed here.) .PP When the system is running multi-user, all terminals that are listed in /etc/ttys as \fBon\fP have their line are enabled. If, during normal operations, it is desired to disable a terminal line, you can doc/2.10/setup.2.11/a.t 644 0 12 32664 6000643170 7331 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)a.t 2.1 (GTE) 1995/06/16 .\" .de IR \fI\\$1\fP\|\\$2 .. .ds LH "Installing/Operating \*(2B .nr H1 7 .nr H2 0 .ds RH "Appendix A \- bootstrap details .ds CF \*(DY .bp .LG .B .ce APPENDIX A \- KERNEL CONFIGURATION OPTIONS .sp 2 .R .NL .NH 2 Kernel configuration options .PP The \*(2B kernel has a number of parameters and options that can be used to tailor the kernel to site specific needs. This appendix lists the parameters and options used in the kernel. The parameters have numeric values, usually table sizes. The options flags are either defined or undefined (via the values YES or NO respectively.) .PP Prototypes for all the following options can be found in the generic kernel configuration file \fI/sys/conf/GENERIC\fP. The process of configuring a new kernel consists simply of copying the generic configuration file to a new file, \fISYSTEM\fP and then editing the options in \fISYSTEM\fP to reflect your needs. You can treat the items copied from GENERIC as a ``grocery list'', checking off those options you want, crossing out those you don't and setting numeric parameters to reasonable values. .NH 2 Configuring the number of mountable file systems (NMOUNT) .PP Because of time constraints the .B NMOUNT constant was not moved into the kernel configuration file where it belongs. .B NMOUNT is used to configure the number of mountable file systems in \*(2B. Since each slot in the kernel mount table takes up close to a half Kb of valuable kernel data space, the distribution kernel comes configured with .B NMOUNT set to 5. This is almost certainly too small for most sites and should be increased to the number of file systems you expect to mount. .PP .B NMOUNT is defined in .IR /sys/h/param.h . If you change its value, you must recompile the kernel (obviously) and the following applications: .IR mount , .IR quotaon , .IR edquota , .IR umount , and .IR df . .NH 2 GENERIC kernel configuration .PP All of the generic kernels support the following devices: .TS l n. Device Number - RK06/07 2 MSCP (RA) Controllers 2 MSCP (RA) Disks 3 RL01/02 Drives 2 SMD (XP) Controllers 1 SMD (XP) Disks 2 TE16, TU45, TU77 (HT) Tape drives 2 TM11 (TM) Tape drives 2 TS11 (TS) Tape drives 2 TK50 (TMSCP) Tape drives 2 .TE .PP The generic kernel adapts automatically to the booted device. The 'a' partition on the booted device is automatically made the root filesystem and the 'b' partition the swap area (except for the RL02 which uses the second drive). The size of the swap partition is determined at run time, the kernel queries the driver for the number of block in the 'b' partition. \fBNOTE:\fP If the swap partition is not labeled as being of type \fIswap\fP the kernel will panic. .NH 3 GENERIC kernel configuration file .PP .ta 8n 16n 24n 32n 40n 48n 56n 72n 80n .cs R 24 .nf # Machine configuration file for 2.11BSD distributed kernel. # # Format: # name value comments # An item's value may be either numerical, boolean or a string; if it's # boolean, use "YES" or "NO" to set it or unset it, respectively. Use # the default value and the comments field as indicators of the type of # field it is. ######################################### # MACHINE DEPENDENT PARAMETERS # ######################################### # Machine type # Split I/D and hardware floating point are required. # # Including UNIBUS map support for machines without a UNIBUS will not cause # a kernel to die. It simply includes code to support UNIBUS mapping if # present. # # The define UNIBUS_MAP implements kernel support for UNIBUS mapped # machines. However, a kernel compiled with UNIBUS_MAP does *not* have to # be run on a UNIBUS machine. The define simply includes support for UNIBUS # mapping if the kernel finds itself on a machine with UNIBUS mapping. UNIBUS_MAP YES # include support for UNIBUS mapping # The define Q22 has been removed. The references to it were incorrect # (i.e. using it to distinguish between an Emulex CS02 and a DH11) or # inappropriate (the if_il.c driver should have been checking if a Unibus # Map was present at runtime). #LINEHZ 50 # clock frequency European LINEHZ 60 # clock frequency USA # PDP-11 machine type; allowable values are GENERIC, 44, 70, 73. GENERIC # should only be used to build a distribution kernel. The only use of this # option is to select the proper in-line PS instructions (references to the # PSW use 'spl', 'mfps/mtps' or 'movb' instructions depending on the cpu type). PDP11 GENERIC # distribution kernel #PDP11 44 # PDP-11/44 #PDP11 70 # PDP-11/70,45,50,55 #PDP11 73 # PDP-11/73,53,83,93,84,94 ######################################### # GENERAL SYSTEM PARAMETERS # ######################################### IDENT GENERIC # machine name MAXUSERS 4 # maxusers on machine # BOOTDEV is the letter combination denoting the autoboot device, # or NONE if not using the autoboot feature. BOOTDEV NONE # don't autoboot #BOOTDEV dvhp # DIVA Comp/V boot device #BOOTDEV hk6 # rk06 boot device #BOOTDEV hk7 # rk07 boot device #BOOTDEV ra # MSCP boot device #BOOTDEV rl # rl01/02 boot device #BOOTDEV rm # rm02/03/05 boot device #BOOTDEV br # Eaton BR1537/BR1711 boot device #BOOTDEV sc11 # Emulex SC11/B boot device #BOOTDEV sc21 # Emulex SC21 boot device #BOOTDEV si # si 9500 boot device # Timezone, in minutes west of GMT #TIMEZONE 300 # EST #TIMEZONE 360 # CST #TIMEZONE 420 # WST TIMEZONE 480 # PST DST 1 # Daylight Savings Time (1 or 0) # Filesystem configuration # Rootdev, swapdev etc. should be in terms of makedev. For example, # if you have an SMD drive using the xp driver, rootdev would be xp0a, # or "makedev(10,0)". Swapdev would be the b partition, xp0b, or # "makedev(10,1)". The 10 is the major number of the device (the offset # in the bdevsw table in conf.c) and the 0 and 1 are the minor numbers # which correspond to the partitions as described in the section 4 manual # pages. You can also get the major numbers from the MAKEDEV script in # /dev. PIPEDEV makedev(10,0) # makedev(10,0) xp0a ROOTDEV makedev(10,0) # makedev(10,0) xp0a SWAPDEV makedev(10,1) # makedev(10,1) xp0b # DUMPROUTINE indicates which dump routine should be used. DUMPDEV # should be in terms of makedev. If DUMPDEV is NODEV no automatic # dumps will be taken, and DUMPROUTINE needs to be set to "nulldev" to # resolve the reference. See param.h and ioconf.c for more information. # DUMPLO should leave room for the kernel to start swapping without # overwriting the dump. DUMPLO 512 # dump start address DUMPDEV NODEV # makedev(10,1) xp0b DUMPROUTINE nulldev # no dump routine. #DUMPROUTINE hkdump # hk driver dump routine #DUMPROUTINE hpdump # hp driver dump routine #DUMPROUTINE radump # ra driver dump routine #DUMPROUTINE rldump # rl driver dump routine #DUMPROUTINE rmdump # rm driver dump routine #DUMPROUTINE brdump # br driver dump routine #DUMPROUTINE sidump # si driver dump routine #DUMPROUTINE xpdump # xp driver dump routine #DUMPROUTINE tmsdump # tms driver dump routine ######################################### # KERNEL CONFIGURATION # ######################################### BADSECT NO # bad-sector forwarding EXTERNALITIMES YES # map out inode time values UCB_CLIST NO # clists moved from kernel data space NOKA5 NO # KA5 not used except for buffers # and clists (_end < 0120000); QUOTA NO # dynamic file system quotas # NOTE -- *very* expensive # UCB_METER is fairly expensive, but various programs (iostat, vmstat, etc) # use it. UCB_METER NO # vmstat performance metering # NBUF is the size of the buffer cache, and is directly related to the UNIBUS # mapping registers. There are 32 total mapping registers, of which 30 are # available. The 0'th is used for CLISTS, and the 31st is used for the I/O # page on some PDP's. It's suggested that you allow 7 mapping registers # per UNIBUS character device so that you can move 56K of data on each device # simultaneously. The rest should be assigned to the block buffer pool. So, # if you have a DR-11 and a TM-11, you would leave 14 unassigned for them and # allocate 16 to the buffer pool. Since each mapping register addresses 8 # buffers for a 1K file system, NBUF would be 128. A possible exception would # be to reduce the buffers to save on data space, as they were 24 bytes each # Should be 'small' for GENERIC, so room for kernel + large program to run. NBUF 32 # buffer cache, *must* be <= 240 # DIAGNOSTIC does various run-time checks, some of which are pretty # expensive and at a high priority. Suggested use is when the kernel # is crashing and you don't know why, otherwise run with it off. DIAGNOSTIC NO # misc. diagnostic loops and checks ######################################### # PERIPHERALS: DISK DRIVES # ######################################### NBR 0 # EATON BR1537/BR1711, BR1538A, B, C, D NHK 2 # RK611, RK06/07 NRAC 1 # NRAD controllers NRAD 2 # RX50, RC25, RD51/52/53, RA60/80/81 NRK 0 # RK05 NRL 2 # RL01/02 NRX 0 # RX02 NSI 0 # SI 9500 driver for CDC 9766 disks # Because the disk drive type registers conflict with other DEC # controllers, you cannot use XP_PROBE for the Ampex 9300 and # Diva drives. Read through /sys/pdpuba/hpreg.h and /sys/pdpuba/xp.c # for information on how to initialize for these drives. NXPC 1 # NXPD controllers (RH70/RH11 style) NXPD 2 # RM02/03/05, RP04/05/06, CDC 9766, # Ampex 9300, Diva, Fuji 160, SI Eagle. XP_PROBE YES # check drive types at boot NRAM 0 # RAM disk size (512-byte blocks) ######################################### # PERIPHERALS: TAPE DRIVES # ######################################### NHT 2 # TE16, TU45, TU77 # Setting AVIVTM configures the TM driver for the AVIV 800/1600/6250 # controller (the standard DEC TM only supports 800BPI). For more details, # see /sys/pdpuba/tm.c. NTM 2 # TM11 AVIVTM YES # AVIV 800/1600/6250 controller NTS 2 # TS11 NTMSCP 2 # TMSCP controllers NTMS 2 # TMSCP drives TMSCP_DEBUG NO # debugging code in TMSCP drive (EXPENSIVE) ######################################### # PERIPHERALS: TERMINALS # ######################################### # NKL includes both KL11's and DL11's. # It should always be at least 1, for the console. NKL 1 # KL11, DL11 NDH 0 # DH11; NDH is in units of boards (16 each) CS02 NO # DH units above are really Emulex CS02 # boards on a 22bit Qbus. NDM 0 # DM11; NDM is in units of boards (16 each) NDHU 0 # DHU11 NDHV 0 # DHV11 NDZ 0 # DZ11; NDZ is in units of boards (8 each) ######################################### # PERIPHERALS: OTHER # ######################################### NDN 0 # DN11 dialer NLP 0 # Line Printer LP_MAXCOL 132 # Maximum number of columns on line printers NDR 0 # DR11-W ######################################### # PSEUDO DEVICES, PROTOCOLS, NETWORKING # ######################################### # Networking only works with split I/D and SUPERVISOR space, i.e. with the # 11/44/45/50/53/55/70/73/83/84. NETHER should be non-zero for networking # systems using any ethernet. CHECKSTACK makes sure the networking stack # pointer and the kernel stack pointer don't collide; it's fairly expensive # at 4 extra instructions for EVERY function call AND return, always left # NO unless doing serious debugging. INET NO # TCP/IP CHECKSTACK NO # Kernel & Supervisor stack pointer checking NETHER 0 # ether pseudo-device # Note, PTY's and the select(2) system call do not require the kernel to # be configured for networking (INET). Note that you can allocate PTY's # in any number (multiples of 8, of 16, even, odd, prime, whatever). Nothing # in the kernel cares. PTY's cost 78 bytes apiece in kernel data space. You # should probably have at least 8-10 since several applications use them: # script, jove, window, rlogin, ... NPTY 0 # pseudo-terminals - GENERIC sys needs NONE # To make the 3Com Ethernet board work correctly, splimp has to be promoted # to spl6; splfix files that do this are in conf/3Com; the config script # does the right thing. NEC 0 # 3Com Ethernet NDE 0 # DEUNA/DELUA NIL 0 # Interlan Ethernet NSL 0 # Serial Line IP NQE 0 # DEQNA NQT 0 # DEQTA (DELQA-YM, DELQA-PLUS) NVV 0 # V2LNI (Pronet) NACC 0 # ACC LH/DH ARPAnet IMP interface PLI NO # LH/DH is connected to a PLI NIMP 0 # ARPAnet IMP 1822 interface # The following are untested in 2.11BSD; some are untested since before 2.9BSD # Some won't even compile. Most will require modification. Good luck. ENABLE34 NO # if have the ENABLE34 board NCSS 0 # DEC/CSS IMP11-A ARPAnet IMP interface NDMC 0 # DMC11 NEN 0 # Xerox prototype (3 Mb) Ethernet NHY 0 # Hyperchannel NS 0 # Xerox NS (XNS) NSRI 0 # SRI DR11c ARPAnet IMP NTB 0 # RS232 interface for Genisco/Hitachi tablets # Defining FPSIM to YES compiles a floating point simulator into the kernel # which will catch floating point instruction traps from user space. This # doesn't work at present. FPSIM NO # floating point simulator # To enable profiling, the :splfix script must be changed to use spl6 instead # of spl7 (see conf/:splfix.profile), also, you have to have a machine with a # supervisor PAR/PDR pair, i.e. an 11/44/45/50/53/55/70/73/83/84, as well # as both a KW11-L and a KW11-P. # # Note that profiling is not currently working. We don't have any plans on # fixing it, so this is essentially a non-supported feature. PROFILE NO # system profiling with KW11P clock INGRES NO # include the Ingres lock driver .cs R should also set up the file /usr/lib/aliases for your installation, creatingdoc/2.10/setup.2.11/6.t 644 0 12 34114 5771172274 7266 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)6.t 2.2 (2.11BSD GTE) 1995/06/16 .\" .de IR \fI\\$1\fP\|\\$2 .. .ds LH "Installing/Operating \*(2B .nr H1 6 .nr H2 0 .ds RH "System Operation .ds CF \*(DY .bp .LG .B .ce 6. SYSTEM OPERATION .sp 2 .R .NL .PP This section describes procedures used to operate a PDP-11 UNIX system. Procedures described here are used periodically, to reboot the system, analyze error messages from devices, do disk backups, monitor system performance, recompile system software and control local changes. .NH 2 Bootstrap and shutdown procedures .PP In a normal reboot, the system checks the disks and comes up multi-user without intervention at the console. Such a reboot can be stopped (after it prints the date) with a ^C (interrupt). This will leave the system in single-user mode, with only the console terminal active. It is also possible to allow the filesystem checks to complete and then to return to single-user mode by signaling \fIfsck\fP with a QUIT signal (^\\). .PP If booting from the console command level is needed, then the command .DS \fB>>>\fP B .DE will boot from the default device and ask for the name of the system to be booted. Other systems such as the 11/44 require a device name to be given: .DS \fB>>>\fP B DU .DE to boot from a MSCP/UDA device. Typing a carriage return will cause the default system (as compiled in in section 4.1), to be booted. In any case, the system selected will come up in single-user mode. .PP To bring the system up to a multi-user configuration from the single-user all you have to do is hit ^D on the console. The system will then execute /etc/rc, a multi-user restart script (and /etc/rc.local), and come up on the terminals listed as active in the file /etc/ttys. See \fIinit\fP\|(8) and \fIttys\fP\|(5). Note, however, that this does not cause a file system check to be performed. Unless the system was taken down cleanly, you should run ``fsck'' or force a reboot with \fIreboot\fP\|(8) to have the disks checked. .PP To take the system down to a single user state you can use .DS \fB#\fP kill 1 .DE or use the \fIshutdown\fP\|(8) command (which is much more polite, if there are other users logged in.) when you are up multi-user. Either command will kill all processes and give you a shell on the console, as if you had just booted. File systems remain mounted after the system is taken single-user. If you wish to come up multi-user again, you should do this by: .DS \fB#\fP cd / \fB#\fP /etc/umount -a \fB#\fP ^D .DE .PP Each system shutdown, crash, processor halt and reboot is recorded in the file /usr/adm/shutdownlog with the cause. .NH 2 Device errors and diagnostics .PP When serious errors occur on peripherals or in the system, the system prints a warning diagnostic on the console. These messages are written to the kernel logger where they are retrieved by \fIsyslogd\fP\|(8) via \fI/dev/klog\fP - \fIdmesg\fP\|(8) is now obsolete. \fIdmesg\fP\|(8) is present in the distribution but no longer used. The message buffer is now 4kb in size and external to the kernel. .PP Error messages printed by the devices in the system are described with the drivers for the devices in section 4 of the programmer's manual. Some drivers have been modified to use the kernel logger, others still simply do printf statements. If errors occur suggesting hardware problems, you should contact your hardware support group or field service. It is a good idea to examine the error log files regularly (e.g. with ``tail \-r \fI/usr/adm/messages\fP''). .NH 2 File system checks, backups and disaster recovery .PP Periodically (say every week or so in the absence of any problems) and always (usually automatically) after a crash, all the file systems should be checked for consistency by \fIfsck\fP\|(8). The procedures of \fIreboot\fP\|(8) should be used to get the system to a state where a file system check can be performed manually or automatically. .PP Dumping of the file systems should be done on a regular schedule, since once the system is going it is easy to become complacent. Complete and incremental dumps are easily done with \fIdump\fP\|(8). You should arrange to do a towers-of-hanoi dump sequence; we tune ours so that almost all files are dumped on two tapes and kept for at least a week in most every case. We take full dumps every month (and keep these indefinitely). .PP More precisely, we have three sets of dump tapes: 10 daily tapes, 5 weekly sets of 2 tapes, and fresh sets of three tapes monthly. We do daily dumps circularly on the daily tapes with sequence `3 2 5 4 7 6 9 8 9 9 9 ...'. Each weekly is a level 1 and the daily dump sequence level restarts after each weekly dump. Full dumps are level 0 and the daily sequence restarts after each full dump also. .PP Thus a typical dump sequence would be: .br .ne 6 .KS .TS center; c c c c c n n n l l. tape name level number date opr size _ FULL 0 Nov 24, 1979 jkf 137MB D1 3 Nov 28, 1979 jkf 29MB D2 2 Nov 29, 1979 rrh 34MB D3 5 Nov 30, 1979 rrh 19MB D4 4 Dec 1, 1979 rrh 22MB W1 1 Dec 2, 1979 etc 40MB D5 3 Dec 4, 1979 rrh 15MB D6 2 Dec 5, 1979 jkf 25MB D7 5 Dec 6, 1979 jkf 15MB D8 4 Dec 7, 1979 rrh 19MB W2 1 Dec 9, 1979 etc 118MB D9 3 Dec 11, 1979 rrh 15MB D10 2 Dec 12, 1979 rrh 26MB D1 5 Dec 15, 1979 rrh 14MB W3 1 Dec 17, 1979 etc 71MB D2 3 Dec 18, 1979 etc 13MB FULL 0 Dec 22, 1979 etc 135MB .TE .KE Weekly dumps are done often enough that daily dumps always fit on one tape. .PP Dumping of files by name is best done by \fItar\fP\|(1) but the amount of data that can be moved in this way is limited to a single tape. Finally if there are enough drives entire disks can be copied with \fIdd\fP\|(1) using the raw special files and an appropriate blocking factor; the number of sectors per track is usually a good value to use, consult \fI/etc/disktab\fP. .PP It is desirable that full dumps of the root file system be made regularly. These dumps should be made in ``bootable`` format, including the standalone programs mentioned back in chapter 2 (boot, mkfs, restor and icheck). This can easily be done by going to /sys/pdpstand and doing: .DS make all ./maketape /dev/nrmtXX maketape.data dump 0u / .DE This is especially true when only one disk is available. Then, if the root file system is damaged by a hardware or software failure, you can rebuild a workable disk doing a restore in the same way that the initial root file system was created. .PP Exhaustion of user-file space is certain to occur now and then and may be managed with a combination of disc quotas (the 4.3BSD disc quota system is available as a kernel configuration option), threatening messages of the day, and personal letters. .NH 2 Moving file system data .PP If you have the equipment, the best way to move a file system is to dump it to magtape using \fIdump\fP\|(8), use \fInewfs\fP\|(8) to create the new file system, and restore the tape, using \fIrestor\fP\|(8). If for some reason you don't want to use magtape, dump accepts an argument telling where to put the dump; you might use another disk. Filesystems may also be moved by piping the output of a \fItar\fP\|(1) to another \fItar\fP. The \fIrestor\fP program accesses the raw device, laying down inodes and blocks in the same place they came from as recorded by dump. Care must therefore be taken when restoring a dump into a file system smaller than the original file system. .PP If you have to shrink a file system or merge a file system into another, existing one, the best bet is to use \fItar\fP\|(1). If you are playing with the root file system and only have one drive, the procedure is more complicated. If the only drive is a Winchester disk, this procedure may not be used without overwriting the existing root or another partition. What you do is the following: .IP 1. GET A SECOND PACK!!!! .IP 2. Dump the root file system to tape using \fIdump\fP\|(8). .IP 3. Bring the system down and mount the new pack. .IP 4. Load the distribution tape and install the new root file system as you did when first installing the system. .IP 5. Boot normally using the newly created disk file system. .PP Note that if you add new disk drivers they should also be added to the standalone system in \fI/sys/pdpstand\fP. If you change the disk partition tables the default disk partition tables in \fI/etc/disktab\fP should be modified. .NH 2 Recompiling and reinstalling system software .PP It is easy to regenerate the system, and it is a good idea to try rebuilding pieces of the system to build confidence in the procedures. The system consists of two major parts: the kernel itself (/sys) and the user programs (/usr/src and subdirectories). The major part of this is /usr/src. .PP The three major libraries are the C library in /usr/src/lib/libc and the \s-2FORTRAN\s0 libraries /usr/src/usr.lib/libI77 and /usr/src/usr.lib/libF77. In each case the library is remade by changing into the corresponding directory and doing .DS \fB#\fP make .DE and then installed by .DS \fB#\fP make install .DE Similar to the system, .DS \fB#\fP make clean .DE cleans up. .PP The source for all other libraries is kept in subdirectories of /usr/src/usr.lib; each has a makefile and can be recompiled by the above recipe. .PP If you look at /usr/src/Makefile, you will see that you can recompile the entire system source with one command. To recompile a specific program, find out where the source resides with the \fIwhereis\fP\|(1) command, then change to that directory and remake it with the makefile present in the directory. For instance, to recompile ``date'', all one has to do is .DS \fB#\fP whereis date \fBdate: /usr/src/bin/date.c /bin/date /usr/man/man1/date.1\fP \fB#\fP cd /usr/src/bin \fB#\fP make date .DE this will create an unstriped version of the binary of ``date'' in the current directory. To install the binary image, use the install command as in .DS \fB#\fP install \-s date /bin/date .DE The \-s option will insure the installed version of date has its symbol table stripped. The install command should be used instead of mv or cp as it understands how to install programs even when the program is currently in use. .PP If you wish to recompile and install all programs in a particular target area you can override the default target by doing: .DS \fB#\fP make \fB#\fP make DESTDIR=\fIpathname\fP install .DE .PP To regenerate all the system source you can do .DS \fB#\fP cd /usr/src \fB#\fP make .DE .PP If you modify the C library, say to change a system call, and want to rebuild and install everything from scratch you have to be a little careful. You must insure that the libraries are installed before the remainder of the source, otherwise the loaded images will not contain the new routine from the library. The following sequence will accomplish this. .DS \fB#\fP cd /usr/src \fB#\fP make clean \fB#\fP make build \fB#\fP make installsrc .DE The first \fImake\fP removes any existing binaries in the source trees to insure that everything is reloaded. The next \fImake\fP compiles and installs the libraries and compilers, then compiles the remainder of the sources. The final line installs all of the commands not installed in the first phase. This will take about 12 hours on a reasonably configured 11/44. .NH 2 Making local modifications .PP /usr/new is used by default for the programs that constitute the contributed software portion of the distribution but which may not have man pages installed. Locally written commands that aren't distributed (or whose man pages are not up to date) are kept in /usr/src/local and their binaries are kept in /usr/local. This allows /usr/bin, /usr/ucb, and /bin to correspond to the distribution tape People using /usr/local commands are made aware that the programs may not be in the base system yet. .NH 2 Accounting .PP UNIX optionally records two kinds of accounting information: connect time accounting and process resource accounting. The connect time accounting information is stored in the file \fI/usr/adm/wtmp\fP, which is summarized by the program .IR ac (8). The process time accounting information is stored in the file \fI/usr/adm/acct\fP after it is enabled by .IR accton (8), and is analyzed and summarized by the program .IR sa (8). .PP If you need to recharge for computing time, you can develop procedures based on the information provided by these commands. A convenient way to do this is to give commands to the clock daemon .I /etc/cron to be executed every day at a specified time. This is done by adding lines to \fI/usr/adm/crontab\fP; see .IR cron (8) for details. .NH 2 Resource control .PP Resource control in \*(2B is more elaborate than in previous PDP-11 UNIX systems. The resources consumed by any single process can be limited by the mechanisms of \fIsetrlimit\fP\|(2). As distributed, the mechanism is voluntary, though sites may choose to modify the login mechanism to impose limits. Csh now has the \fIlimits\fP builtin command enabled. Another available option is the 4.3BSD disc quota system. .NH 2 Files that need periodic attention .PP The discussion of system operations is concluded by listing the files that require periodic attention or are system specific .de BP .IP \fB\\$1\fP .br .. .TS center; lb a. /etc/fstab how disk partitions are used /etc/disktab disk partition sizes /etc/printcap printer data base /etc/gettytab terminal type definitions /etc/remote names and phone numbers of remote machines for \fItip\fP(1) /etc/group group memberships /etc/motd message of the day /etc/master.passwd password file; each account has a line /etc/rc.local local system restart script; runs reboot; starts daemons /etc/inetd.conf local internet servers /etc/hosts host name data base /etc/networks network name data base /etc/netstart Startup file to configure network /etc/services network services data base /etc/hosts.equiv hosts under same administrative control /etc/syslog.conf error log configuration for \fIsyslogd\fP\|(8) /etc/ttys enables/disables ports /usr/lib/crontab commands that are run periodically /usr/lib/aliases mail forwarding and distribution groups /usr/adm/acct raw process account data /usr/adm/messages system error log /usr/adm/shutdownlog log of system reboots /usr/adm/wtmp login session accounting .TE ce the system is going it is easy to become complacent. Complete and incremental dumps are easily done with \fIdump\fP\|(8). You should arrange to do a towers-of-hanoi dump sequence; we tune ours so that almost all files are dumped on two tapes and kept for at least a week in most every case. We take full dumps every month (and keep these indefinitely). .PP More precisely, we have three sets of dump tapes: 10 daily tapes, 5 weekly doc/2.10/setup.2.11/Makefile 644 0 0 1410 5767446555 10335 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.2.1 (2.11BSD) 1995/06/12 # PRINTER=-Plz001 LPR= lpr -h -n -Plz001 SRC= 0.t 1.t 2.t 3.t 4.t 5.t 6.t a.t b.t all: @echo pick one of troff, nroff, groff or ditroff troff: ${SRC} eqn ${SRC} | tbl | troff ${PAGES} -ms > setup.out nroff: ${SRC} eqn ${SRC} | tbl | nroff ${PAGES} -ms > setup.out groff: ${SRC} groff -e -t -ms -Tps ${SRC} > setup.out ditroff: ${SRC} dieqn ${SRC} | ditbl | ditroff ${PAGES} -ms > setup.out clean: rm -f setup.out ?.t.spell spell: ${SRC} @for i in ${SRC}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done w has the \fIlimits\fP builtin command enabled. Another available option is the 4.3BSD disc quota system. .NH 2 Files that need periodic attention .PP The discussion of system operations is concluded by listing the files that require periodic attedoc/2.10/setup.2.11/spell.ok 644 0 0 12100 5771172765 10357 2.10.1BSD 2.10.2SMS 2.10BSD 4.3BSD ACC ACU ARP ARPANET ARPAnet AUTOBAUD AUTOBOOT AVIVTM Arpanet BADSECT BHASH BOOTDEV BPI BR BR1537 BR1538 BR1538A BR1711 BSD BSIZE BSLOP Bostic CF CGL CHECKSTACK CLIST CLISTS COMP COMPAT CPU CPUs CSR CSS CST CX Comp Contel Cyl DARPA DBLKSIZ DBUF DEFNAME DELUA DEQNA DESTDIR DEUNA DEVERR DH DH's DH11 DHU11 DHV11 DHs DISKMON DL11 DL11's DM11 DMA DMC DMC11 DMR DN11 DR11 DR11C DR11c DST DUMPDEV DUMPLO DUMPROUTINE DZ's DZ11 DZs Dialup ECC EGP EMULEX ENABLE34 EOT EPROTONOSUPPORT EXTERNALITIMES Emulex Ethernet Ethernets FILS FPSIM FRCSWAP FSFIX FTP Filesystem Filesystems GENALLSYS GRPMAST Genisco HK HKADDR HT HTADDR Hardcopy I&D ICMP IDC IDENT IDP IHASH IMP's IMP11 INET INTRLVE IP IPSENDREDIRECTS ISI ISVTX Ifconfig JCL JKReynolds KA5 KB KDJ KL11 KL11's KOV KW11 KW11P Karels Kb Kirton L.aliases L.cmds L.sys LH LINEHZ LOGFILE LP Leedom Leffler MAKEDEV MAKEDEV.local MAKEHOSTS MASSBUS MAXCOL MAXMEM MAXNAMLEN MPX MSCP Makefile Makefiles Mb McKusick Microverter Milnet N.B NACC NADDR NAMESIZE NBPG NBR NBUF NCSS NDE NDH NDHU NDM NDMC NDN NDR NDZ NEC NEN NHK NHT NHY NIC NIMP NKB NKL NLOOP NLP NMOUNT NODEV NOKA5 NONFP NP100 NPTY NPUP NQE NRAC NRAD NRAM NRK NRL NRX NSC NSI NSL NSRI NSWAP NTB NTM NTS NTTY NVV NXPC NXPD OLDTTY OVLY PCL PDP PDP''Setup.2.10 PDP's PDP11 PDP11s PDR PDT PGRP PIPEDEV PLI PSN's PST PTY's Pathnames Postel Pronet Proteon QBUS Qbus RA RA60 RA80 RA80's RA81 RB RC25 RD51 RD52 RD52's RD53 README RFC RH RH11 RH70 RK RK05 RK06 RK06's RK07 RK07's RK611 RKADDR RL RL01 RL01's RL02 RL02's RLADDR RLs RM RM02 RM03 RM03's RM05 ROM ROMs ROOTDEV RP RP03 RP04 RP05 RP06 RPADDR RQDX2 RQDX3 RQZX RS232 RTP RUSAGE RX RX02 RX50 RZ Restor Rootdev SBI SC01B SC11 SC21 SEQF SI SMD SMINO SMS SMTP SPP SUBM SWAPDEV SWAPLO SYMLINKS SYSLOG Sendmail Sep Stanislaus Swapdev TC11 TCP TE TE10 TE16 TELNET TFTP TIMEZONE TIU TK TM TM02 TM11 TMADDR TMSCP TQK50 TS TS03 TS05 TS11 TSADDR TU TU10 TU45 TU77 TU78 TU80 TZ Timezone Turlock UCB UDA UDA50 UDP UNIBUS UPRINTF USENET USERFILE UUAIDS Ultrix V2LNI VAX WST Westlake XNS XO XP XX a.out acc adiron adm arp autobauding autoboot autoconfig autoconfigures bad144 bdevsw biff bootstrapped bostic br br?b brdump bruboot bsize buf c.f cacheing calder capricorn casey cbosg cbosgd chico chpass chroot clists comp.bugs.2bsd comsat conf conf.c config coremap cpu cpus crontab cshrc css cul0 daemon daemon's daemons dali date.1 date.c dev dgram dh dh0 dhrint dhu dhurint dhuxint dhxint dialcode dialcodes dialup dialups dict disklabel disklabels disktab dk dmc dtab dvhp dvhp?b dvhpuboot dz dz0 dzdma dzrint ec eg en0 ernie es ethernet files.HOST filesystem filesystems fingerd formatter fsf fstab ftp ftpd ftpusers fuji160 genunix getdtablesize gethostbyaddr gethostbyname gethostname getty gettytab gid hangup hanoi hk hk0a hk0b hk0c hk0e hk1a hk6 hk7 hk?a hk?b hk?c hk?d hkdump hkintr hkuboot hkunix homegrown hostname hosts.dir hosts.equiv hosts.lpd hosts.pag hosts.txt hp hp0c hp?b hpdump hpreg.h hpuboot ht ht0 htable htintr hy ifconfig ifdef il inetd inetd.conf init inline.h inode inodes installsrc int intr iob ioconf.c isif.arpa isize jkf jove junk.dir junk.orig junk.pag kazoo.Berkeley.EDU keith kim klog kmem lib libF77 libI77 libc localgateways localhosts localnetworks localopts.h loopback lp lpd lpintr lq machparam.h magtape makedev makefile man1 manl mano master.passwd matisse max maxusers mbufs mdec mem miro misc mkhosts mklost mkpasswd mkproto mnt mnt:rw:1:2 monet monet.Berkeley.EDU motd mov mt0 myname.my.domain mysitename named.tar.Z namei nameserver ndbm ndbm.h netimp netinet netmask netnix netns netstart netstat newaliases newdev newfs newunix nic.arpa nn nowait nscf nsunix nswap nulldev ogin olddev oldunix opr out0123456789 out2010123456 param.c param.h passwd.dir passwd.pag pathname pcl pdp pdpif pdpmba pdpstand pdpuba pgms phys pipedev pre printcap proNET pty pty0 pty1 pty2 pty3 ptyp qe ra ra0 ra0a ra0b ra0b::sw ra0c ra0d ra0g ra1 ra1a ra1b ra1c ra60 ra80 ra81 ra?b ra?c ra?g radump rauboot raunix rc.local rc25 rd51 rd52 rd53 rd?b rd?c rdwri restor rew rexecd rhosts rk rk06 rk07 rkuboot rl rl01 rl02 rl0h rl1h rldump rlintr rlogin rlogind rluboot rlunix rm02 rm03 rm03uboot rm05 rm05uboot rm?b rmdump rmt12 rmunix rootdev rp rp03 rp04 rp06 rp?b rq rqdx rqdx3 rrh rshd rusage rw:1:1 rwhod rxx0a sc11 sc21 sched se secretmail securettys seismo sendbug sendmail sendmail.cf setpriority setrlimit setup.2.10 setup.tblms shutdownlog si si51uboot si94uboot si95uboot sidump sms spl6 spl7 splfix splfix.profile splimp src sri standalone std std.9600 stdout sunix swapdev swplo syslog syslog.conf syslogd tabset tcp telnetd testnet tftpd time.h tm tm.c tm0 tmac tmintr tmp tmp:rw ts ts0 tsintr tty00 tty01 tty07 ttyDD ttyd ttyh0 ttyp ttyp0 ttytype tzone uboot ucb ucbarpa ucbvax ucbvax.berkeley.edu ufs uid uio uipc umount usc userid username usr.bin usr.lib usr:rw:1:2 utmp utmp.h uucico uucppublic uudecode uupoll uuq uusnap uuxqt vangogh vangogh.berkeley.edu vaxif ventel vipw vm vt100 vv wildcard wlonex.imsd.contel.com wlv.imsd.contel.com wtmp wtmp.h xp xp.c xp0 xp0a xp0b xp0c xp0d xp0e xp0f xp1e xp?b xp?c xp?d xp?e xpb xpbf xpdump xpintr xptype xpunix xx xx0a yymmddhhmm zA moved by piping the output of a \fItar\fP\|(1) to another \fItar\fP. The \fIrestor\fP program accesses the raw device, laying down inodes and blocks in the same place they came from as recorded by dump. Care must therefore be taken when restoring a dump into a file system smaller than the original file system. .PP If you have to shrink a file system or merge a file system into another, existing one, the best bet is to use \fItar\fP\|(1). If yodoc/2.10/setup.2.11/b.t 644 0 12 37077 6000641433 7335 .\" Placed in the public domain June 17, 1995. .\" .\" @(#)b.t 1.1 (2.11BSD) 1995/07/10 .\" .de IR \fI\\$1\fP\|\\$2 .. .ds LH "Installing/Operating \*(2B .nr H1 8 .nr H2 0 .ds RH "Appendix B \- standalone disklabel program .ds CF \*(DY .bp .LG .B .ce APPENDIX B \- STANDALONE DISKLABEL PROGRAM .sp 2 .R .NL .NH 2 Standalone disklabel example .PP This is a real example of using the disklabel program to place a label on a disk. User input is in \fBbold\fP type. The disklabel program was loaded from a bootable TK50. The disk being labeled in a RD54. The BOOT> prompt is from the 11/73 console ODT, if you are using an 11/44 the prompt will be >>>. .PP The first thing that is done is request disklabel to create a default partition ('a') which spans the entire disk. Some disk types have fixed sizes and geometries, for example RK05 (rk), RK06/7 (hk) and RL02 (rl) drives. With this type of disk the standalone disklabel program will generate a label with the correct geometry and 'a' partition size. With MSCP ('ra') disks disklabel will query the controller for the information it needs. The last type of disk, SMD (xp), presents many problems, disklabel will attempt to determine the drive type and geometry but you will have to verify the information. .sp .in +0.6i Indented paragraphs like this one are explanatory comments and are not part of the output from the disklabel program. In the case of MSCP drives the number of cylinders may be 1 too low. This is discussed in the example below. .br .in -0.6i .nf BOOT> \fBMU 0\fP 73Boot from tms(0,0,0) at 0174500 : \fBtms(0,1)\fP Boot: bootdev=06001 bootcsr=0174500 disklabel Disk? \fBra(0,0)\fP d(isplay) D(efault) m(odify) w(rite) q(uit)? \fBD\fP d(isplay) D(efault) m(odify) w(rite) q(uit)? \fBd\fP type: MSCP disk: RD54 flags: bytes/sector: 512 sectors/track: 17 tracks/cylinder: 15 sectors/cylinder: 255 cylinders: 1220 rpm: 3600 drivedata: 0 0 0 0 0 1 partitions: # size offset fstype [fsize bsize] a: 311200 0 2.11BSD 1024 1024 # (Cyl. 0 - 1220*) .fi .in +0.6i The columns do not line up nicely under the headings due to limitations of the sprintf() routine in the standalone I/O package. There is no capability to justify the output. It should be obvious which column belongs under which heading. The '*' says that the partition does not end on a cylinder boundary. This is due to the peculiar way in which MSCP returns the geometry information: sectors/track * tracks/cylinder * cylinders != sectors per volume. .sp .in -0.6i .nf d(isplay) D(efault) m(odify) w(rite) q(uit)? \fBm\fP modify d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBm\fP .fi .in +0.6i It is normally not necessary to change the geometry of an MSCP disk. On the other hand it will almost always be necessary to specify the geometry of an SMD drive (one which uses the XP driver). Since the drive being labeled is an MSCP drive the next step is to set the pack label to something other than DEFAULT. .br .in -0.6i .nf modify misc d(isplay) t(ype) n(ame) l(able) f(lags) r(pm) D(rivedata) q(uit)? \fBl\fP label [DEFAULT]: \fBTESTING\fP modify misc d(isplay) t(ype) n(ame) l(able) f(lags) r(pm) D(rivedata) q(uit)? \fBq\fP modify d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBp\fP modify partitions d(isplay) n(umber) s(elect) q(uit)? \fBd\fP type: MSCP disk: RD54 flags: bytes/sector: 512 sectors/track: 17 tracks/cylinder: 15 sectors/cylinder: 255 cylinders: 1220 rpm: 3600 drivedata: 0 0 0 0 0 1 partitions: # size offset fstype [fsize bsize] a: 311200 0 2.11BSD 1024 1024 # (Cyl. 0 - 1220*) modify partitions d(isplay) n(umber) s(elect) q(uit)? \fBs\fP a b c d e f g h q(uit)? \fBa\fP sizes and offsets may be given as sectors, cylinders or cylinders plus sectors: 6200, 32c, 19c10s respectively modify partition 'a' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBs\fP \'a' size [311200]: \fB15884\fP d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBq\fP modify partitions d(isplay) n(umber) s(elect) q(uit)? \fBs\fP a b c d e f g h q(uit)? \fBb\fP sizes and offsets may be given as sectors, cylinders or cylinders plus sectors: 6200, 32c, 19c10s respectively modify partition 'b' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBo\fP \'b' offset [0]: \fB15884\fP modify partition 'b' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBs\fP \'b' size [0]: \fB16720\fP modify partition 'b' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBt\fP \'b' fstype [unused]: \fBswap\fP modify partition 'b' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBq\fP modify partitions d(isplay) n(umber) s(elect) q(uit)? \fBs\fP a b c d e f g h q(uit)? \fBc\fP sizes and offsets may be given as sectors, cylinders or cylinders plus sectors: 6200, 32c, 19c10s respectively modify partition 'c' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBo\fP \'c' offset [0]: \fB0\fP modify partitions 'c' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBs\fP \'c' size [0]: \fB311200\fP modify partitions 'c' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBt\fP \'c' fstype [unused]: \fBunused\fP modify partitions 'c' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBq\fP modify partitions d(isplay) n(umber) s(elect) q(uit)? \fBs\fP a b c d e f g h q(uit)? \fBg\fP sizes and offsets may be given as sectors, cylinders or cylinders plus sectors: 6200, 32c, 19c10s respectively modify partition 'g' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBo\fP \'g' offset [0]: \fB32604\fP modify partition 'g' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBs\fP \'g' size [0]: \fB278596\fP modify partition 'g' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBt\fP \'g' fstype [unused]: \fB2.11BSD\fP modify partition 'g' d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBq\fP modify partitions d(isplay) n(umber) s(elect) q(uit)? \fBn\fP Number of partitions (8 max) [7]? \fB7\fP modify partitions d(isplay) n(umber) s(elect) q(uit)? \fBq\fP modify d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBd\fP type: MSCP disk: RD54 label: TESTING flags: bytes/sector: 512 sectors/track: 17 tracks/cylinder: 15 sectors/cylinder: 255 cylinders: 1220 rpm: 3600 drivedata: 0 0 0 0 0 7 partitions: # size offset fstype [fsize bsize] a: 15884 0 2.11BSD 1024 1024 # (Cyl. 0 - 62*) b: 16720 15884 swap # (Cyl. 62*- 127*) c: 311200 0 unused 1024 1024 # (Cyl. 0 - 1220*) g: 278596 32604 2.11BSD 1024 1024 # (Cyl. 127- 1220*) modify d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBq\fP .fi .in +0.6i On MSCP disks it is possible you will see a warning error like this: .sp partition c: extends past end of unit 0 311200 311100 .br partition g: extends past end of unit 32604 278596 311100 .sp This is not cause for panic. What this is saying is that the number of cylinders is one too low. MSCP devices do not necessarily use all of the last cylinder. The total number of blocks is precisely known for MSCP devices (it is returned in the act of bringing the drive online). However the number of sectors on the volume is not necessarily evenly divisible by the number of sectors per track (311200 divided by 17*15 gives 1220.392). Basically the last cylinder is not fully used. What must be done is raise the number of cylinders by 1. .sp \fBNOTE:\fP For any other disk type it is cause for concern if the warning above is issued \- it means that incorrect partition or geometry information was entered by the user and needs to be corrected. .sp .in -0.6i .nf d(isplay) D(efault) m(odify) w(rite) q(uit)? \fBm\fP modify d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBg\fP modify geometry d(isplay) s(ector/trk) t(rk/cyl) c(yl) S(ector/cyl) q(uit)? \fBc\fP cylinders [1220]: \fB1221\fP modify geometry d(isplay) s(ector/trk) t(rk/cyl) c(yl) S(ector/cyl) q(uit)? \fBq\fP modify d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBq\fP d(isplay) D(efault) m(odify) w(rite) q(uit)? \fBw\fP d(isplay) D(efault) m(odify) w(rite) q(uit)? \fBq\fP 73Boot from tms(0,0,1) at 0174500 : \fBra(1,0,0)unix\fP ra1 csr[00]: \fB0172154\fP .fi .in +0.6i The last string entered shows how I boot from an alternate controller. In normal use, i.e. with a single MSCP controller, the string would simply be \fBra(0,0)unix\fP. .NH 2 Standalone disklabel program .PP The standalone disklabel program is the second file on a boot tape (after the bootblocks and boot program). It is used to place an initial label on a disk describing the disk and its partitions. The program is also used when the root ('a') or swap ('b') partitions of a previously labeled system disk must be modified. The second use is mandated because the root and swap partitions can not be modified while the kernel has them open. .PP \fIdisklabel\fP effectively runs in CBREAK mode \- you do not need to hit the RETURN key except when prompted for a multicharacter response such as a string (the pack label) or a number (partition size). Defaults are placed inside square brackets ([default]). Entering RETURN accepts the default. .PP The program is organized into several levels. \fIdisklabel\fP prints the current level out before prompting. At each level there is always the choice of d(isplaying) the current label and q(uit)ing the current level and returning to the previous level. If you are at the top level and enter \fBq\fP the program will exit back to \fBBoot\fP unless you have made changes to the disklabel. In that case you will be asked if you wish to discard the changes, if you answer \fBy\fP the changes will be discarded. If the answer is \fBn\fP the \fBq\fP is ignored and \fIdisklabel\fP does not exit. .PP In the following paragraphs the convention is to \fBbold\fP the user input while leaving the output from \fIdisklabel\fP in normal type. The devices used were a TK50 and an RD54, thus the tape device is \fBtms\fP and the disk device is \fBra\fP. .PP The TK50 was booted resulting in the usual message from \fBBoot\fP: .LP 73Boot from tms(0,0,0) at 0174500 .br : \fBtms(0,1)\fP .NH 2 Disklabel \- tour of the levels. .LP Boot: bootdev=06001 bootcsr=0174500 .br disklabel .br Disk? \fBra(0,0)\fP .br d(isplay) D(efault) m(odify) w(write) q(uit)? \fBm\fP .sp .in +0.6i The 'D' option will request \fIdisklabel\fP to create a default label based on what the program can determine about the drive. For some devices, such as RL01/02, RK06/07, MSCP (RD54, RA81, usw.), \fIdisklabel\fP can determine what the drive type is and how many sectors it has. For other devices, such as SMD drives supported by the \fBxp\fP driver, the task is complicated by the number of different controllers and emulations supported. Some 3rd party controllers have capabilities that DEC controllers do not and the \fBxp\fP has no way of knowing exactly which type of controller is present. In this case \fIdisklabel\fP will \fBguess\fP and then depend on you to enter the correct data. .br .in -0.6i .sp modify .br d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBg\fP .br modify geometry .br d(isplay) s(ector/trk) t(rk/cyl) c(yl) S(ector/cyl) q(uit)? \fBq\fP .sp .in +0.6i The Sector/cyl entry is rarely used. \fIdisklabel\fP will calculate this quantity for you from the sector/trk and trk/cyl quantities. .br .in -0.6i .sp modify .br d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBm\fP .br d(isplay) t(ype) n(ame) l(abel) f(lags) r(pm) D(rivedata) q(quit)? \fBf\fP .sp .in +0.6i Type is one of: SMD, MSCP, old DEC, SCSI, ESDI, ST506, floppy. .sp Name is a string up to 16 characters in length. It is typically something like \fBrd54\fP or \fBrm03\fP but may be any meaningful string. .sp Label is an arbitrary string up to 16 characters in length \- nothing in the system checks for or depends on the contents of the pack label string. .sp Rpm is the rotational speed of the drive. Nothing in the system uses or depends on this at the present time. Default is 3600. .sp Drivedata consists of 5 longwords of arbitrary data. Reserved for future use. .br .in -0.6i .sp modify misc flags .br d(isplay) c(lear) e(cc) b(adsect) r(emovable) q(uit)? \fBq\fP .sp .in +0.6i Ecc says that the controller/driver can correct errors. .sp Badsect indicates that the controller/driver supports bad sector replacement. .sp Removable indicates that the drive uses removable media (floppy, RL02, RA60 for example). .br .in -0.6i .sp modify misc .br d(isplay) t(type) n(ame) l(abel) f(lags) r(pm) D(rivedata) q(uit)? \fBq\fP .br modify .br d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBp\fP .br modify partitions .br d(isplay) n(umber) s(elect) q(uit)? \fBn\fP .br Number of partitions (8 max) [7]? \fB7\fP .sp .in +0.6i This is the highest partition number considered to be valid. \fIdisklabel\fP will adjust this parameter semi-automatically at the \fBp\fP level but it may be necessary to use \fBn\fP in cases where some partitions are not to be used or contain invalid information. .br .in -0.6i .sp modify partitions .br d(isplay) n(umber) s(elect) q(uit)? \fBs\fP .br a b c d e f g h q(uit)? \fBa\fP .br sizes and offsets may be given as sectors, cylinders .br or cylinders plus sectors: 6200, 32c, 19c10 respectively .br modify partition 'a' .br d(isplay) z(ero) t(ype) o(ffset) s(ize) f(rag) F(size) q(uit)? \fBq\fP .sp .in +0.6i Zero clears the size and offset fields of a partition entry and sets the filesystem type to \fBunused\fP. .sp Type is the filesystem type and of the possible choices only \fB2.11BSD\fP, \fBswap\fP and \fBunused\fP make any sense to specify. .sp Offset is the number of sectors from the beginning of the disk at which the partition starts. .sp Size is the number of sectors which the partition occupies. .sp Frag is the number of fragments a filesystem block can be broken into. It is not presently used and should be left at the default of 1. .sp Fsize is the filesystem blocksize and should be left at the default of 1024. .sp modify partitions .br d(isplay) n(umber) s(elect) q(uit)? \fBq\fP .br modify .br d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBq\fP .br d(isplay) D(efault) m(odify) w(write) q(uit)? \fBq\fP .br Label changed. Discard changes [y/n]? \fBy\fP .br .sp 2 73Boot from tms(0,0,1) at 0174500 .NH 2 Disklabel \- helpful hints and tips. .PP Define only those partitions you actually will use. There is no need to set up all 8 partitions. Drives less than 200Mb probably will only have 3 partitions defined, 'a', 'b' and 'd' for /, swap and /usr respectively. Remember to set the number of partitions. Disklabel will attempt to do this for you by keeping track of the highest partition you modify but this is not foolproof. .PP Do not define overlapping partitions unless you are sure what you are doing. \fIdisklabel\fP will warn you of overlapping partitions but will not prohibit you from writing such a label to disk. .PP Remember that the prompt levels nest in \fIdisklabel\fP. It will be necessary in several cases to enter multiple \fBq\fP commands to get back to the top level. .PP .B IMPORTANT: Keep at least 1, preferably more, bootable tape or floppy with \fIdisklabel\fP on it present at all times. If the label on a disk ever becomes corrupted the kernel will be very unhappy and probably won't boot. If this happens you will need to boot the standalone \fIdisklabel\fP program and relabel the disk. At least \*(2B provides a standalone \fIdisklabel\fP \- previous 4BSD systems which implemented disklabels did not and the cold-start of those systems was painful indeed. .PP .B IMPORTANT: Write down in at least one place, and keep with the tape/floppy mentioned above, the geometry and partition layout you assign to the disk. The \fIdisklabel\fI\|(8) program should be used to produce a hardcopy of the disklabel. ? \fBd\fP type: MSCP disk: RD54 label: TESTING flags: bytes/sector: 512 sectors/track: 17 tracks/cylinder: 15 sectors/cylinder: 255 cylinders: 1220 rpm: 3600 drivedata: 0 0 0 0 0 7 partitions: # size offset fstype [fsize bsize] a: 15884 0 2.11BSD 1024 1024 # (Cyl. 0 - 62*) b: 16720 15884 swap # (Cyl. 62*- 127*) c: 311200 0 unused 1024 1024 # (Cyl. 0 - 1220*) g: 278596 32604 2.11BSD 1024 1024 # (Cyl. 127-doc/misc/ 755 3 12 0 4017005717 5447 doc/misc/px/ 755 3 12 0 3650322362 6076 doc/misc/px/tmac.p 444 3 12 2124 2352352040 7257 'if \n(FM=0 'so /usr/lib/tmac/tmac.s .if n .nr FM 1.2i .if t .tr *\(**=\(eq/\(sl+\(pl .bd S B 3 .de mD .ta 8n 17n 42n .. .de SM .if "\\$1"" .ps -2 .if !"\\$1"" \s-2\\$1\s0\\$2 .. .de LG .if "\\$1"" .ps +2 .if !"\\$1"" \s+2\\$a\s0\\$2 .. .de HP .nr pd \\n(PD .nr PD 0 .if \\n(.$=0 .IP .if \\n(.$=1 .IP "\\$1" .if \\n(.$>=2 .IP "\\$1" "\\$2" .nr PD \\n(pd .. .de ZP .nr pd \\n(PD .nr PD 0 .PP .nr PD \\n(pd .. .de LS \"LS - Literal display; ASCII DS .if \\n(.$=0 .DS .if \\n(.$=1 \\$1 .if \\n(.$>1 \\$1 "\\$2" .if t .tr '\'`\`^\(ua-\(mi .if t .tr _\(ul .. .de LE \"LE - End literal display .DE .tr ''``__--^^ .. .de UP Berkeley Pascal\\$1 .. .de PD \s-2PDP\s0 .if \\n(.$=0 11/70 .if \\n(.$>0 11/\\$1 .. .de DK Digital Equipment Corporation\\$1 .. .de PI .I pi \\$1 .. .de Xp .I Pxp \\$1 .. .de XP .I pxp \\$1 .. .de IX .I pix \\$1 .. .de X .I px \\$1 .. .de PX .I px \\$1 .. .if n .ds dg + .if t .ds dg \(dg .if n .ds Dg \*(dg .if t .ds Dg \v'-0.3m'\s-2\*(dg\s0\v'0.3m' .if n .ds dd * .if t .ds dd \(dd .if n .ds Dd \*(dd .if t .ds Dd \v'-0.3m'\s-2\*(dd\s0\v'0.3m' .if n .ds b \\fI .if t .ds b \\fB .nr xx 1 emulations supported. Some 3rd party controllers have capabilities that DEC controllers do not and the \fBxp\fP has no way of knowing exactly which type of controller is present. In this case \fIdisklabel\fP will \fBguess\fP and then depend on you to enter the correct data. .br .in -0.6i .sp modify .br d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBg\fP .br modify geometry .br d(isplay) s(ector/trk) t(rk/cyl) c(yl) S(edoc/misc/px/table3.1.n 444 3 12 627 2352352040 7630 .TS center; n l l. \-108 FNAME Text name of associated UNIX file \-30 LCOUNT Current count of lines output \-26 LLIMIT Maximum number of lines permitted \-22 FBUF UNIX FILE pointer \-18 FCHAIN Chain to next file \-14 FLEV Pointer to associated file variable \-10 PFNAME Pointer to name of file for error messages \-6 FUNIT File status flags \-4 FSIZE Size of elements in the file 0 File window element .TE doc/misc/px/table2.3.n 444 3 12 227 2352352040 7625 .TS H box center; c s s lw(14) | lw(12) | lw(40) lp-2 | a | l. Table 2.3 \- Machine operations _ Mnemonic Reference Description = .TH .so fig2.3.n .TE n3.n.npxin2.n.npxin1.n.npxin0.n.nmakefilenfig3.3.nnfig3.2.nnfig2.4.nn fig2.3.raw11fig2.3.nwfig1.3.nwfig1.2.nwfig1.1.nwdoc/misc/px/table2.2.n 444 3 12 1266 2352352040 7650 .DS L .TS box center; c s c | c ci | aw(3.25i). Table 2.2 \- Inline data type codes _ Code Description = a T{ .fi An address offset is given in the word following the instruction. T} _ A T{ An address offset is given in the four bytes following the instruction. T} _ l T{ An index into the display is given in the sub-opcode. T} _ r T{ A relational operator is encoded in the sub-opcode. (see section 2.3) T} _ s T{ A small integer is placed in the sub-opcode, or in the next word if it is zero or too large. T} _ v T{ Variable length inline data. T} _ w T{ A word value in the following word. T} _ W T{ A long value in the following four bytes. T} _ " T{ An inline constant string. T} .TE .DE /\\$1 .. .de DK Digital Equipment Corporation\\$1 .. .de PI .I pi \\$1 .. .de Xp .I Pxp \\$1 .. .de XP .I pxp \\$1 .. .de IX .I pix \\$1 .. .de X .I px \\$1 .. .de PX .I px \\$1 .. .if n .ds dg + .if t .ds dg \(dg .if n .ds Dg \*(dg .if t .ds Dg \v'-0.3m'\s-2\*(dg\s0\v'0.3m' .if n .ds dd * .if t .ds dd \(dd .if n .ds Dd \*(dd .idoc/misc/px/table2.1.n 444 3 12 1327 2352352040 7645 .DS L .TS box center; c s s c s s c c c n ap-2 a. Table 2.1 \- Operator Suffixes = .sp Unary operator suffixes .sp .1i Suffix Example Argument type 2 NEG2 Short integer (2 bytes) 4 SQR4 Long integer (4 bytes) 8 ABS8 Real (8 bytes) .sp _ .sp .T& c s s c c c n ap-2 a. Binary operator suffixes .sp .1i Suffix Example Argument type 2 ADD2 Two short integers 24 MUL24 Short above long integer 42 REL42 Long above short integer 4 DIV4 Two long integers 28 DVD28 Short integer above real 48 REL48 Long integer above real 82 SUB82 Real above short integer 84 MUL84 Real above long integer 8 ADD8 Two reals .sp _ .sp .T& c s s c c c n ap-2 a. Other Suffixes .sp .1i Suffix Example Argument types T ADDT Sets G RELG Strings .sp .TE .DE Corporation\\$1 .. .de PI .I pi \\$1 .. .de Xp .I Pxp \\$1 .. .de XP .I pxp \\$1 .. .de IX .I pix \\$1 .. .de X .I px \\$1 .. .de PX .I px \\$1 .. .if n .ds dg + .if t .ds dg \(dg .if n .ds Dg \*(dg .if t .ds Dg \v'-0.3m'\s-2\*(dg\s0\v'0.3m' .if n .ds dd * .if t .ds dd \(dd .if n .ds Dd \*(dd .idoc/misc/px/pxin4.n 444 3 12 2462 2352352040 7400 .if !\n(xx .so tmac.p .nr H1 3 .if n .ND .NH Conclusions .PP It is appropriate to consider, given the amount of time invested in rewriting the interpreter, whether the time was well spent, or whether a code-generator could have been written with an equivalent amount of effort. The Berkeley Pascal system is being modified to interface to the code generator of the portable C compiler with not much more work than was involved in rewritting .I px . However this compiler will probably not supercede the interpreter in an instructional environment as the necessary loading and assembly processes will slow the compilation process to a noticeable degree. This effect will be further exaggerated because student users spend more time in compilation than in execution. Measurements over the course of a quarter at Berkeley with a mixture of students from beginning programming to upper division compiler construction show that the amount of time in compilation exceeds the amount of time spent in the interpreter, the ratio being approximately 60/40. .PP A more promising approach might have been a throw-away code generator such as was done for the .SM WATFIV .NL system. However the addition of high-quality post-mortem and interactive debugging facilities become much more difficult to provide than in the interpreter environment. \fP and then depend on you to enter the correct data. .br .in -0.6i .sp modify .br d(isplay) g(eometry) m(isc) p(artitions) q(uit)? \fBg\fP .br modify geometry .br d(isplay) s(ector/trk) t(rk/cyl) c(yl) S(edoc/misc/px/pxin3.n 444 3 12 31355 2352352037 7430 .if !\n(xx .so tmac.p .ta 8n 16n 24n .nr H1 2 .if n .ND .NH Input/output .NH 2 The files structure .PP Each file in the Pascal environment is represented by a pointer to a .I files structure in the heap. At the location addressed by the pointer is the element in the file's window variable. Behind this window variable is information about the file, at the following offsets: .so table3.1.n .PP Here .SM FBUF is a pointer to the system FILE block for the file. The standard system I/O library is used that provides block buffered input/output, with 1024 characters normally transferred at each read or write. .PP The files in the Pascal environment, are all linked together on a single file chain through the .SM FCHAIN links. For each file the .SM FLEV pointer gives its associated file variable. These are used to free files at block exit as described in section 3.3 below. .PP The FNAME and PFNAME give the associated file name for the file and the name to be used when printing error diagnostics respectively. Although these names are usually the same, .I input and .I output usually have no associated file name so the distinction is necessary. .PP The FUNIT word contains a set of flags. whose representations are: .TS center; l l l. EOF 0x0100 At end-of-file EOLN 0x0200 At end-of-line (text files only) SYNC 0x0400 File window is out of sync TEMP 0x0800 File is temporary FREAD 0x1000 File is open for reading FWRITE 0x2000 File is open for writing FTEXT 0x4000 File is a text file; process EOLN FDEF 0x8000 File structure created, but file not opened .TE .PP The EOF and EOLN bits here reflect the associated built-in function values. TEMP specifies that the file has a generated temporary name and that it should therefore be removed when its block exits. FREAD and FWRITE specify that .I reset and .I rewrite respectively have been done on the file so that input or output operations can be done. FTEXT specifies the file is a text file so that EOLN processing should be done, with newline characters turned into blanks, etc. .PP The SYNC bit, when true, specifies that there is no usable image in the file buffer window. As discussed in the .I "Berkeley Pascal User's Manual," the interactive environment necessitates having ``input^'' undefined at the beginning of execution so that a program may print a prompt before the user is required to type input. The SYNC bit implements this. When it is set, it specifies that the element in the window must be updated before it can be used. This is never done until necessary. .NH 2 Initialization of files .PP All the variables in the Pascal runtime environment are cleared to zero on block entry. This is necessary for simple processing of files. If a file is unused, its pointer will be .B nil. All references to an inactive file are thus references through a .B nil pointer. If the Pascal system did not clear storage to zero before execution it would not be possible to detect inactive files in this simple way; it would probably be necessary to generate (possibly complicated) code to initialize each file on block entry. .PP When a file is first mentioned in a .I reset or .I rewrite call, a buffer of the form described above is associated with it, and the necessary information about the file is placed in this buffer. The file is also linked into the active file chain. This chain is kept sorted by block mark address, the FLEV entries. .NH 2 Block exit .PP When block exit occurs the interpreter must free the files that are in use in the block and their associated buffers. This is simple and efficient because the files in the active file chain are sorted by increasing block mark address. This means that the files for the current block will be at the front of the chain. For each file that is no longer accessible the interpreter first flushes the files buffer if it is an output file. The interpreter then returns the file buffer and the files structure and window to the free space in the heap and removes the file from the active file chain. .NH 2 Flushing .PP Flushing all the file buffers at abnormal termination, or on a call to the procedure .I flush or .I message is done by flushing each file on the file chain that has the FWRITE bit set in its flags word. .NH 2 The active file .PP For input-output, .I px maintains a notion of an active file. Each operation that references a file makes the file it will be using the active file and then does its operation. A subtle point here is that one may do a procedure call to .I write that involves a call to a function that references another file, thereby destroying the active file set up before the .I write. Thus the active file is saved at block entry in the block mark and restored at block exit.\*(Dg .FS \*(dg\ It would probably be better to dispense with the notion of active file and use another mechanism that did not involve extra overhead on each procedure and function call. .FE .NH 2 File operations .PP Files in Pascal can be used in two distinct ways: as the object of .I read, .I write, .I get, and .I put calls, or indirectly as though they were pointers. The second use as pointers must be careful not to destroy the active file in a reference such as .LS write(output, input\(ua) .LE or the system would incorrectly write on the input device. .PP The fundamental operator related to the use of a file is .SM FNIL. This takes the file variable, as a pointer, insures that the pointer is not .B nil, and also that a usable image is in the file window, by forcing the .SM SYNC bit to be cleared. .PP A simple example that demonstrates the use of the file operators is given by .LS writeln(f) .LE that produces .DS .mD .TS lp-2w(8) l. RV:\fIl f\fP UNIT WRITLN .TE .DE .NH 2 Read operations .SH GET .IP Advance the active file to the next input element. .SH FNIL .IP A file pointer is on the stack. Insure that the associated file is active and that the file is synced so that there is input available in the window. .SH READ* .IP If the file is a text file, read a block of text and convert it to the internal type of the specified operand. If the file is not a text file then do an unformatted read of the next record. The procedure .SM READLN reads upto and including the next end of line character. .SH READE A .IP The operator .SM READE reads a string name of an enumerated type and converts it to its internal value. .SM READE takes a pointer to a data structure as shown in figure 3.2. .so fig3.2.n See the description of .SM NAM in the next section for an example. .NH 2 Write operations .SH PUT .IP Output the element in the active file window. .SH WRITEF s .IP The argument(s) on the stack are output by the .I fprintf standard .SM I/O library routine. The sub-opcode .I s specifies the number of longword arguments on the stack. .SH WRITEC .IP The character on the top of the stack is output without formatting. Formatted characters must be output with .SM WRITEF . .SH WRITES .IP The string specified by the pointer on the top of the stack is output by the .I fwrite standard .SM I/O library routine. All characters including nulls are printed. .SH WRITLN .IP A linefeed is output to the active file. The line-count for the file is incremented and checked against the line limit. .SH PAGE .IP A formfeed is output to the active file. .SH NAM A .IP The value on the top of the stack is converted to a pointer to an enumerated type string name. The address .SM A points to an enumerated type structure identical to that used by .SM READE . An error is raised if the value is out of range. The form of this structure for the predefined type .B boolean is shown in figure 3.3. .so fig3.3.n The code for .SM NAM is .DS .mD _NAM: \fBincl\fR lc \fBaddl3\fR (lc)+,ap,r6 #r6 points to scalar name list \fBmovl\fR (sp)+,r3 #r3 has data value \fBcmpw\fR r3,(r6)+ #check value out of bounds \fBbgequ\fR enamrng \fBmovzwl\fR (r6)[r3],r4 #r4 has string index \fBpushab\fR (r6)[r4] #push string pointer \fBjmp\fR (loop) enamrng: \fBmovw\fR $ENAMRNG,_perrno \fBjbr\fR error .DE The address of the table is calculated by adding the base address of the interpreter code, .I ap to the offset pointed to by .I lc . The first word of the table gives the number of records and provides a range check of the data to be output. The pointer is then calculated as .DS .mD tblbase = ap + A; size = *tblbase++; return(tblbase + tblbase[value]); .DE .SH MAX s,w .IP The sub-opcode .I s is subtracted from the integer on the top of the stack. The maximum of the result and the second argument, .I w , replaces the value on the top of the stack. This function verifies that variable specified width arguments are non-negative, and meet certain minimum width requirements. .SH MIN s .IP The minimum of the value on the top of the stack and the sub-opcode replaces the value on the top of the stack. .sp 1 .LP The uses of files and the file operations are summarized in an example which outputs a real variable (r) with a variable width field (i). .LS writeln('r =',r:i,' ',true); .LE that generates the code .DS .mD .TS lp-2w(8) l. UNITOUT FILE CON14:1 CON14:3 LVCON:4 "r =" WRITES RV8\fI:l r\fP RV4\fI:l i\fP MAX:8 1 RV4\fI:l i\fP MAX:1 1 LVCON:8 " %*.*E" FILE WRITEF:6 CONC4 \' \' WRITEC CON14:1 NAM \fIbool\fP LVCON:4 "%s" FILE WRITEF:3 WRITLN .TE .DE .PP Here the operator .SM UNITOUT is an abbreviated form of the operator .SM UNIT that is used when the file to be made active is .I output . A file descriptor, record count, string size, and a pointer to the constant string ``r ='' are pushed and then output by .SM WRITES . Next the value of .I r is pushed on the stack and the precision size is calculated by taking seven less than the width, but not less than one. This is followed by the width that is reduced by one to leave space for the required leading blank. If the width is too narrow, it is expanded by .I fprintf . A pointer to the format string is pushed followed by a file descriptor and the operator .SM WRITEF that prints out .I r . The value of six on .SM WRITEF comes from two longs for .I r and a long each for the precision, width, format string pointer, and file descriptor. The operator .SM CONC4 pushes the .I blank character onto a long on the stack that is then printed out by .SM WRITEC . The internal representation for .I true is pushed as a long onto the stack and is then replaced by a pointer to the string ``true'' by the operator .SM NAM using the table .I bool for conversion. This string is output by the operator .SM WRITEF using the format string ``%s''. Finally the operator .SM WRITLN appends a newline to the file. .NH 2 File activation and status operations .SH UNIT* .IP The file pointed to by the file pointer on the top of the stack is converted to be the active file. The opcodes .SM UNITINP and .SM UNITOUT imply standard input and output respectively instead of explicitly pushing their file pointers. .SH FILE .IP The standard .SM I/O library file descriptor associated with the active file is pushed onto the stack. .SH EOF .IP The file pointed to by the file pointer on the top of the stack is checked for end of file. A boolean is returned with .I true indicating the end of file condition. .SH EOLN .IP The file pointed to by the file pointer on the top of the stack is checked for end of line. A boolean is returned with .I true indicating the end of line condition. Note that only text files can check for end of line. .NH 2 File housekeeping operations .SH DEFNAME .IP Four data items are passed on the stack; the size of the data type associated with the file, the maximum size of the file name, a pointer to the file name, and a pointer to the file variable. A file record is created with the specified window size and the file variable set to point to it. The file is marked as defined but not opened. This allows .B program statement association of file names with file variables before their use by a .SM RESET or a .SM REWRITE . .SH BUFF s .IP The sub-opcode is placed in the external variable .I _bufopt to specify the amount of I/O buffering that is desired. The current options are: .DS 0 \- character at a time buffering 1 \- line at a time buffering 2 \- block buffering .DE The default value is 1. .SH RESET .br REWRITE .IP Four data items are passed on the stack; the size of the data type associated with the file, the maximum size of the name (possibly zero), a pointer to the file name (possibly null), and a pointer to the file variable. If the file has never existed it is created as in .SM DEFNAME . If no file name is specified and no previous name exists (for example one created by .SM DEFNAME ) then a system temporary name is created. .SM RESET then opens the file for input, while .SM REWRITE opens the file for output. .sp 1 .PP The three remaining file operations are .SM FLUSH that flushes the active file, .SM REMOVE that takes the pointer to a file name and removes the specified file, and .SM MESSAGE that flushes all the output files and sets the standard error file to be the active file. tion: connect time accounting and process resource accounting. The connect time accounting information is stored in the file \fI/usr/adm/wtmp\fP, which is summarized by the program .IR ac (8). The process time accounting information is stored in the file \fI/usr/adm/acct\fPdoc/misc/px/pxin2.n 444 3 12 46027 2352352036 7430 .if !\n(xx .so tmac.p .nr H1 1 .if n .ND .NH Operations .NH 2 Naming conventions and operation summary .PP Table 2.1 outlines the opcode typing convention. The expression ``a above b'' means that `a' is on top of the stack with `b' below it. Table 2.3 describes each of the opcodes. The character `*' at the end of a name specifies that all operations with the root prefix before the `*' are summarized by one entry. Table 2.2 gives the codes used to describe the type inline data expected by each instruction. .sp 2 .so table2.1.n .sp 2 .so table2.2.n .bp .so table2.3.n .bp .NH 2 Basic control operations .LP .SH HALT .IP Corresponds to the Pascal procedure .I halt ; causes execution to end with a post-mortem backtrace as if a run-time error had occurred. .SH BEG s,W,w," .IP Causes the second part of the block mark to be created, and .I W bytes of local variable space to be allocated and cleared to zero. Stack overflow is detected here. .I w is the first line of the body of this section for error traceback, and the inline string (length s) the character representation of its name. .SH NODUMP s,W,w," .IP Equivalent to .SM BEG , and used to begin the main program when the ``p'' option is disabled so that the post-mortem backtrace will be inhibited. .SH END .IP Complementary to the operators .SM CALL and .SM BEG , exits the current block, calling the procedure .I pclose to flush buffers for and release any local files. Restores the environment of the caller from the block mark. If this is the end for the main program, all files are .I flushed, and the interpreter is exited. .SH CALL l,A .IP Saves the current line number, return address, and active display entry pointer .I dp in the first part of the block mark, then transfers to the entry point given by the relative address .I A , that is the beginning of a .B procedure or .B function at level .I l. .SH PUSH s .IP Clears .I s bytes on the stack. Used to make space for the return value of a .B function just before calling it. .SH POP s .IP Pop .I s bytes off the stack. Used after a .B function or .B procedure returns to remove the arguments from the stack. .SH TRA a .IP Transfer control to relative address .I a as a local .B goto or part of a structured statement. .SH TRA4 A .IP Transfer control to an absolute address as part of a non-local .B goto or to branch over procedure bodies. .SH LINO s .IP Set current line number to .I s. For consistency, check that the expression stack is empty as it should be (as this is the start of a statement.) This consistency check will fail only if there is a bug in the interpreter or the interpreter code has somehow been damaged. Increment the statement count and if it exceeds the statement limit, generate a fault. .SH GOTO l,A .IP Transfer control to address .I A that is in the block at level .I l of the display. This is a non-local .B goto. Causes each block to be exited as if with .SM END , flushing and freeing files with .I pclose, until the current display entry is at level .I l. .SH SDUP* .IP Duplicate the word or long on the top of the stack. This is used mostly for constructing sets. See section 2.11. .NH 2 If and relational operators .SH IF a .IP The interpreter conditional transfers all take place using this operator that examines the Boolean value on the top of the stack. If the value is .I true , the next code is executed, otherwise control transfers to the specified address. .SH REL* r .IP These take two arguments on the stack, and the sub-operation code specifies the relational operation to be done, coded as follows with `a' above `b' on the stack: .DS .mD .TS lb lb c a. Code Operation _ 0 a = b 2 a <> b 4 a < b 6 a > b 8 a <= b 10 a >= b .TE .DE .IP Each operation does a test to set the condition code appropriately and then does an indexed branch based on the sub-operation code to a test of the condition here specified, pushing a Boolean value on the stack. .IP Consider the statement fragment: .DS .mD \*bif\fR a = b \*bthen\fR .DE .IP If .I a and .I b are integers this generates the following code: .DS .TS lp-2w(8) l. RV4:\fIl a\fR RV4:\fIl b\fR REL4 \&= IF \fIElse part offset\fR .sp .T& c s. \fI\&... Then part code ...\fR .TE .DE .NH 2 Boolean operators .PP The Boolean operators .SM AND , .SM OR , and .SM NOT manipulate values on the top of the stack. All Boolean values are kept in single bytes in memory, or in single words on the stack. Zero represents a Boolean \fIfalse\fP, and one a Boolean \fItrue\fP. .NH 2 Right value, constant, and assignment operators .SH LRV* l,A .br RV* l,a .IP The right value operators load values on the stack. They take a block number as a sub-opcode and load the appropriate number of bytes from that block at the offset specified in the following word onto the stack. As an example, consider .SM LRV4 : .DS .mD _LRV4: \fBcvtbl\fR (lc)+,r0 #r0 has display index \fBaddl3\fR _display(r0),(lc)+,r1 #r1 has variable address \fBpushl\fR (r1) #put value on the stack \fBjmp\fR (loop) .DE .IP Here the interpreter places the display level in r0. It then adds the appropriate display value to the inline offset and pushes the value at this location onto the stack. Control then returns to the main interpreter loop. The .SM RV* operators have short inline data that reduces the space required to address the first 32K of stack space in each stack frame. The operators .SM RV14 and .SM RV24 provide explicit conversion to long as the data is pushed. This saves the generation of .SM STOI to align arguments to .SM C subroutines. .SH CON* r .IP The constant operators load a value onto the stack from inline code. Small integer values are condensed and loaded by the .SM CON1 operator, that is given by .DS .mD _CON1: \fBcvtbw\fR (lc)+,\-(sp) \fBjmp\fR (loop) .DE .IP Here note that little work was required as the required constant was available at (lc)+. For longer constants, .I lc must be incremented before moving the constant. The operator .SM CON takes a length specification in the sub-opcode and can be used to load strings and other variable length data onto the stack. The operators .SM CON14 and .SM CON24 provide explicit conversion to long as the constant is pushed. .SH AS* .IP The assignment operators are similar to arithmetic and relational operators in that they take two operands, both in the stack, but the lengths given for them specify first the length of the value on the stack and then the length of the target in memory. The target address in memory is under the value to be stored. Thus the statement .DS i := 1 .DE .IP where .I i is a full-length, 4 byte, integer, will generate the code sequence .DS .TS lp-2w(8) l. LV:\fIl i\fP CON1:1 AS24 .TE .DE .IP Here .SM LV will load the address of .I i, that is really given as a block number in the sub-opcode and an offset in the following word, onto the stack, occupying a single word. .SM CON1 , that is a single word instruction, then loads the constant 1, that is in its sub-opcode, onto the stack. Since there are not one byte constants on the stack, this becomes a 2 byte, single word integer. The interpreter then assigns a length 2 integer to a length 4 integer using .SM AS24 \&. The code sequence for .SM AS24 is given by: .DS .mD _AS24: \fBincl\fR lc \fBcvtwl\fR (sp)+,*(sp)+ \fBjmp\fR (loop) .DE .IP Thus the interpreter gets the single word off the stack, extends it to be a 4 byte integer gets the target address off the stack, and finally stores the value in the target. This is a typical use of the constant and assignment operators. .NH 2 Addressing operations .SH LLV l,W .br LV l,w .IP The most common operation done by the interpreter is the ``left value'' or ``address of'' operation. It is given by: .DS .mD _LLV: \fBcvtbl\fR (lc)+,r0 #r0 has display index \fBaddl3\fR _display(r0),(lc)+,\-(sp) #push address onto the stack \fBjmp\fR (loop) .DE .IP It calculates an address in the block specified in the sub-opcode by adding the associated display entry to the offset that appears in the following word. The .SM LV operator has a short inline data that reduces the space required to address the first 32K of stack space in each call frame. .SH OFF s .IP The offset operator is used in field names. Thus to get the address of .LS p^.f1 .LE .IP .I pi would generate the sequence .DS .mD .TS lp-2w(8) l. RV:\fIl p\fP OFF \fIf1\fP .TE .DE .IP where the .SM RV loads the value of .I p, given its block in the sub-opcode and offset in the following word, and the interpreter then adds the offset of the field .I f1 in its record to get the correct address. .SM OFF takes its argument in the sub-opcode if it is small enough. .SH NIL .IP The example above is incomplete, lacking a check for a .B nil pointer. The code generated would be .DS .TS lp-2w(8) l. RV:\fIl p\fP NIL OFF \fIf1\fP .TE .DE .IP where the .SM NIL operation checks for a .I nil pointer and generates the appropriate runtime error if it is. .SH LVCON s," .IP A pointer to the specified length inline data is pushed onto the stack. This is primarily used for .I printf type strings used by .SM WRITEF . (see sections 3.6 and 3.8) .SH INX* s,w,w .IP The operators .SM INX2 and .SM INX4 are used for subscripting. For example, the statement .DS a[i] := 2.0 .DE .IP with .I i an integer and .I a an ``array [1..1000] of real'' would generate .DS .TS lp-2w(8) l. LV:\fIl a\fP RV4:\fIl i\fP INX4:8 1,999 CON8 2.0 AS8 .TE .DE .IP Here the .SM LV operation takes the address of .I a and places it on the stack. The value of .I i is then placed on top of this on the stack. The array address is indexed by the length 4 index (a length 2 index would use .SM INX2 ) where the individual elements have a size of 8 bytes. The code for .SM INX4 is: .DS .mD _INX4: \fBcvtbl\fR (lc)+,r0 \fBbneq\fR L1 \fBcvtwl\fR (lc)+,r0 #r0 has size of records L1: \fBcvtwl\fR (lc)+,r1 #r1 has lower bound \fBmovzwl\fR (lc)+,r2 #r2 has upper-lower bound \fBsubl3\fR r1,(sp)+,r3 #r3 has base subscript \fBcmpl\fR r3,r2 #check for out of bounds \fBbgtru\fR esubscr \fBmull2\fR r0,r3 #calculate byte offset \fBaddl2\fR r3,(sp) #calculate actual address \fBjmp\fR (loop) esubscr: \fBmovw\fR $ESUBSCR,_perrno \fBjbr\fR error .DE .IP Here the lower bound is subtracted, and range checked against the upper minus lower bound. The offset is then scaled to a byte offset into the array and added to the base address on the stack. Multi-dimension subscripts are translated as a sequence of single subscriptings. .SH IND* .IP For indirect references through .B var parameters and pointers, the interpreter has a set of indirection operators that convert a pointer on the stack into a value on the stack from that address. different .SM IND operators are necessary because of the possibility of different length operands. The .SM IND14 and .SM IND24 operators do conversions to long as they push their data. .NH 2 Arithmetic operators .PP The interpreter has many arithmetic operators. All operators produce results long enough to prevent overflow unless the bounds of the base type are exceeded. The basic operators available are .DS Addition: ADD*, SUCC* Subtraction: SUB*, PRED* Multiplication: MUL*, SQR* Division: DIV*, DVD*, MOD* Unary: NEG*, ABS* .DE .NH 2 Range checking .PP The interpreter has several range checking operators. The important distinction among these operators is between values whose legal range begins at zero and those that do not begin at zero, for example a subrange variable whose values range from 45 to 70. For those that begin at zero, a simpler ``logical'' comparison against the upper bound suffices. For others, both the low and upper bounds must be checked independently, requiring two comparisons. On the .SM "VAX 11/780" both checks are done using a single index instruction so the only gain is in reducing the inline data. .NH 2 Case operators .PP The interpreter includes three operators for .B case statements that are used depending on the width of the .B case label type. For each width, the structure of the case data is the same, and is represented in figure 2.4. .sp 1 .so fig2.4.n .PP The .SM CASEOP case statement operators do a sequential search through the case label values. If they find the label value, they take the corresponding entry from the transfer table and cause the interpreter to branch to the specified statement. If the specified label is not found, an error results. .PP The .SM CASE operators take the number of cases as a sub-opcode if possible. Three different operators are needed to handle single byte, word, and long case transfer table values. For example, the .SM CASEOP1 operator has the following code sequence: .DS .mD _CASEOP1: \fBcvtbl\fR (lc)+,r0 \fBbneq\fR L1 \fBcvtwl\fR (lc)+,r0 #r0 has length of case table L1: \fBmovaw\fR (lc)[r0],r2 #r2 has pointer to case labels \fBmovzwl\fR (sp)+,r3 #r3 has the element to find \fBlocc\fR r3,r0,(r2) #r0 has index of located element \fBbeql\fR caserr #element not found \fBmnegl\fR r0,r0 #calculate new lc \fBcvtwl\fR (r2)[r0],r1 #r1 has lc offset \fBaddl2\fR r1,lc \fBjmp\fR (loop) caserr: \fBmovw\fR $ECASE,_perrno \fBjbr\fR error .DE .PP Here the interpreter first computes the address of the beginning of the case label value area by adding twice the number of case label values to the address of the transfer table, since the transfer table entries are 2 byte address offsets. It then searches through the label values, and generates an ECASE error if the label is not found. If the label is found, the index of the corresponding entry in the transfer table is extracted and that offset is added to the interpreter location counter. .NH 2 Operations supporting pxp .PP The following operations are defined to do execution profiling. .SH PXPBUF w .IP Causes the interpreter to allocate a count buffer with .I w four byte counters and to clear them to zero. The count buffer is placed within an image of the .I pmon.out file as described in the .I "PXP Implementation Notes." The contents of this buffer are written to the file .I pmon.out when the program ends. .SH COUNT w .IP Increments the counter specified by .I w . .SH TRACNT w,A .IP Used at the entry point to procedures and functions, combining a transfer to the entry point of the block with an incrementing of its entry count. .NH 2 Set operations .PP The set operations: union .SM ADDT, intersection .SM MULT, element removal .SM SUBT, and the set relationals .SM RELT are straightforward. The following operations are more interesting. .SH CARD s .IP Takes the cardinality of a set of size .I s bytes on top of the stack, leaving a 2 byte integer count. .SM CARD uses the .B ffs opcode to successively count the number of set bits in the set. .SH CTTOT s,w,w .IP Constructs a set. This operation requires a non-trivial amount of work, checking bounds and setting individual bits or ranges of bits. This operation sequence is slow, and motivates the presence of the operator .SM INCT below. The arguments to .SM CTTOT include the number of elements .I s in the constructed set, the lower and upper bounds of the set, the two .I w values, and a pair of values on the stack for each range in the set, single elements in constructed sets being duplicated with .SM SDUP to form degenerate ranges. .SH IN s,w,w .IP The operator .B in for sets. The value .I s specifies the size of the set, the two .I w values the lower and upper bounds of the set. The value on the stack is checked to be in the set on the stack, and a Boolean value of .I true or .I false replaces the operands. .SH INCT .IP The operator .B in on a constructed set without constructing it. The left operand of .B in is on top of the stack followed by the number of pairs in the constructed set, and then the pairs themselves, all as single word integers. Pairs designate runs of values and single values are represented by a degenerate pair with both value equal. This operator is generated in grammatical constructs such as .LS \fBif\fR character \fBin\fR [`+', '\-', `*', `/'] .LE .IP or .LS \fBif\fR character \fBin\fR [`a'..`z', `$', `_'] .LE .IP These constructs are common in Pascal, and .SM INCT makes them run much faster in the interpreter, as if they were written as an efficient series of .B if statements. .NH 2 Miscellaneous .PP Other miscellaneous operators that are present in the interpreter are .SM ASRT that causes the program to end if the Boolean value on the stack is not .I true, and .SM STOI , .SM STOD , .SM ITOD , and .SM ITOS that convert between different length arithmetic operands for use in aligning the arguments in .B procedure and .B function calls, and with some untyped built-ins, such as .SM SIN and .SM COS \&. .PP Finally, if the program is run with the run-time testing disabled, there are special operators for .B for statements and special indexing operators for arrays that have individual element size that is a power of 2. The code can run significantly faster using these operators. .NH 2 Mathematical Functions .PP The transcendental functions .SM SIN , .SM COS , .SM ATAN , .SM EXP , .SM LN , .SM SQRT , .SM SEED , and .SM RANDOM are taken from the standard UNIX mathematical package. These functions take double precision floating point values and return the same. .PP The functions .SM EXPO , .SM TRUNC , and .SM ROUND take a double precision floating point number. .SM EXPO returns an integer representing the machine representation of its argument's exponent, .SM TRUNC returns the integer part of its argument, and .SM ROUND returns the rounded integer part of its argument. .NH 2 System functions and procedures .SH LLIMIT .IP A line limit and a file pointer are passed on the stack. If the limit is non-negative the line limit is set to the specified value, otherwise it is set to unlimited. The default is unlimited. .SH STLIM .IP A statement limit is passed on the stack. The statement limit is set as specified. The default is 500,000. No limit is enforced when the ``p'' option is disabled. .SH CLCK .br SCLCK .IP .SM CLCK returns the number of milliseconds of user time used by the program; .SM SCLCK returns the number of milliseconds of system time used by the program. .SH WCLCK .IP The number of seconds since some predefined time is returned. Its primary usefulness is in determining elapsed time and in providing a unique time stamp. .sp .LP The other system time procedures are .SM DATE and .SM TIME that copy an appropriate text string into a pascal string array. The function .SM ARGC returns the number of command line arguments passed to the program. The procedure .SM ARGV takes an index on the stack and copies the specified command line argument into a pascal string array. .NH 2 Pascal procedures and functions .SH PACK s,w,w,w .br UNPACK s,w,w,w .IP They function as a memory to memory move with several semantic checks. They do no ``unpacking'' or ``packing'' in the true sense as the interpreter supports no packed data types. .SH NEW s .br DISPOSE s .IP An .SM LV of a pointer is passed. .SM NEW allocates a record of a specified size and puts a pointer to it into the pointer variable. .SM DISPOSE deallocates the record pointed to by the pointer and sets the pointer to .SM NIL . .sp .LP The function .SM CHR* converts a suitably small integer into an ascii character. Its primary purpose is to do a range check. The function .SM ODD* returns .I true if its argument is odd and returns .I false if its argument is even. The function .SM UNDEF always returns the value .I false . flushes the active file, .SM REMOVE that takes the pointer to a file name and removes the specified file, and .SM MESSAGE that flushes all the output files and sets the standard error file to be the active file. tion: connect time accounting and process resource accounting. The connect time accounting information is stored in the file \fI/usr/adm/wtmp\fP, which is summarized by the program .IR ac (8). The process time accounting information is stored in the file \fI/usr/adm/acct\fPdoc/misc/px/pxin1.n 444 3 12 35075 2352352034 7426 .if !\n(xx .so tmac.p .tr _\(ru .nr H1 0 .NH Organization .PP Most of .I px is written in the .SM "VAX 11/780" assembly language, using the .UX assembler .I as. Portions of .I px are also written in the .UX systems programming language C. .I Px consists of a main procedure that reads in the interpreter code, a main interpreter loop that transfers successively to various code segments implementing the abstract machine operations, built-in procedures and functions, and several routines that support the implementation of the Pascal input-output environment. .PP The interpreter runs at a fraction of the speed of equivalent compiled C code, with this fraction varying from 1/5 to 1/15. The interpreter occupies 18.5K bytes of instruction space, shared among all processes executing Pascal, and has 4.6K bytes of data space (constants, error messages, etc.) a copy of which is allocated to each executing process. .NH 2 Format of the object file .PP .I Px normally interprets the code left in an object file by a run of the Pascal translator .I pi. The file where the translator puts the object originally, and the most commonly interpreted file, is called .I obj. In order that all persons using .I px share a common text image, this executable file is a small process that coordinates with the interpreter to start execution. The interpreter code is placed at the end of a special ``header'' file and the size of the initialized data area of this header file is expanded to include this code, so that during execution it is located at an easily determined address in its data space. When executed, the object process creates a .I pipe , creates another process by doing a .I fork , and arranges that the resulting parent process becomes an instance of .I px . The child process then writes the interpreter code through the pipe that it has to the interpreter process parent. When this process is complete, the child exits. .PP The real advantage of this approach is that it does not require modifications to the shell, and that the resultant objects are ``true objects'' not requiring special treatment. A simpler mechanism would be to determine the name of the file that was executed and pass this to the interpreter. However it is not possible to determine this name in all cases.\*(Dd .FS \*(dd\ For instance, if the .I pxref program is placed in the directory `/usr/bin' then when the user types ``pxref program.p'' the first argument to the program, nominally the programs name, is ``pxref.'' While it would be possible to search in the standard place, i.e. the current directory, and the system directories `/bin' and `/usr/bin' for a corresponding object file, this would be expensive and not guaranteed to succeed. Several shells exist that allow other directories to be searched for commands, and there is, in general, no way to determine what these directories are. .FE .NH 2 General features of object code .PP Pascal object code is relocatable as all addressing references for control transfers within the code are relative. The code consists of instructions interspersed with inline data. All instructions have a length that is an even number of bytes. No variables are kept in the object code area. .PP The first byte of a Pascal interpreter instruction contains an operation code. This allows a total of 256 major operation codes, and 232 of these are in use in the current .I px. The second byte of each interpreter instruction is called the ``sub-operation code'', or more commonly the .I sub-opcode. It contains a small integer that may, for example, be used as a block-structure level for the associated operation. If the instruction can take a longword constant, this constant is often packed into the sub-opcode if it fits into 8 bits and is not zero. A sub-opcode value of zero specifies that the constant would not fit and therefore follows in the next word. This is a space optimization, the value of zero for flagging the longer case being convenient because it is easy to test. .PP Other instruction formats are used. The branching instructions take an offset in the following word, operators that load constants onto the stack take arbitrarily long inline constant values, and many operations deal exclusively with data on the interpreter stack, requiring no inline data. .NH 2 Stack structure of the interpreter .PP The interpreter emulates a stack-structured Pascal machine. The ``load'' instructions put values onto the stack, where all arithmetic operations take place. The ``store'' instructions take values off the stack and place them in an address that is also contained on the stack. The only way to move data or to compute in the machine is with the stack. .PP To make the interpreter operations more powerful and to thereby increase the interpreter speed, the arithmetic operations in the interpreter are ``typed''. That is, length conversion of arithmetic values occurs when they are used in an operation. This eliminates interpreter cycles for length conversion and the associated overhead. For example, when adding an integer that fits in one byte to one that requires four bytes to store, no ``conversion'' operators are required. The one byte integer is loaded onto the stack, followed by the four byte integer, and then an adding operator is used that has, implicit in its definition, the sizes of the arguments. .NH 2 Data types in the interpreter .PP The interpreter deals with several different fundamental data types. In the memory of the machine, 1, 2, and 4 byte integers are supported, with only 2 and 4 byte integers being present on the stack. The interpreter always converts to 4 byte integers when there is a possibility of overflowing the shorter formats. This corresponds to the Pascal language definition of overflow in arithmetic operations that requires that the result be correct if all partial values lie within the bounds of the base integer type: 4 byte integer values. .PP Character constants are treated similarly to 1 byte integers for most purposes, as are Boolean values. All enumerated types are treated as integer values of an appropriate length, usually 1 byte. The interpreter also has real numbers, occupying 8 bytes of storage, and sets and strings of varying length. The appropriate operations are included for each data type, such as set union and intersection and an operation to write a string. .PP No special .B packed data formats are supported by the interpreter. The smallest unit of storage occupied by any variable is one byte. The built-ins .I pack and .I unpack thus degenerate to simple memory to memory transfers with no special processing. .NH 2 Runtime environment .PP The interpreter runtime environment uses a stack data area and a heap data area, that are kept at opposite ends of memory and grow towards each other. All global variables and variables local to procedures and functions are kept in the stack area. Dynamically allocated variables and buffers for input/output are allocated in the heap. .PP The addressing of block structured variables is done by using a fixed display that contains the address of its stack frame for each statically active block.\*(Dg .FS \*(dg\ Here ``block'' is being used to mean any .I procedure , .I function or the main program. .FE This display is referenced by instructions that load and store variables and maintained by the operations for block entry and exit, and for non-local .B goto statements. .NH 2 Dp, lc, loop .PP Three ``global'' variables in the interpreter, in addition to the ``display'', are the .I dp, .I lc, and the .I loop. The .I dp is a pointer to the display entry for the current block; the .I lc is the abstract machine location counter; and the .I loop is a register that holds the address of the main interpreter loop so that returning to the loop to fetch the next instruction is a fast operation. .NH 2 The stack frame structure .PP Each active block has a stack frame consisting of three parts: a block mark, local variables, and temporary storage for partially evaluated expressions. The stack in the interpreter grows from the high addresses in memory to the low addresses, so that those parts of the stack frame that are ``on the top'' of the stack have the most negative offsets from the display entry for the block. The major parts of the stack frame are represented in Figure 1.1. .so fig1.1.n Note that the local variables of each block have negative offsets from the corresponding display entry, the ``first'' local variable having offset `\-2'. .NH 2 The block mark .PP The block mark contains the saved information necessary to restore the environment when the current block exits. It consists of two parts. The first and top-most part is saved by the .SM CALL instruction in the interpreter. This information is not present for the main program as it is never ``called''. The second part of the block mark is created by the .SM BEG begin block operator that also allocates and clears the local variable storage. The format of these blocks is represented in Figure 1.2. .sp .so fig1.2.n .PP The data saved by the .SM CALL operator includes the line number .I lino of the point of call, that is printed if the program execution ends abnormally; the location counter .I lc giving the return address; and the current display entry address .I dp at the time of call. .PP The .SM BEG begin operator saves the previous display contents at the level of this block, so that the display can be restored on block exit. A pointer to the beginning line number and the name of this block is also saved. This information is stored in the interpreter object code in-line after the .SM BEG operator. It is used in printing a post-mortem backtrace. The saved file name and buffer reference are necessary because of the input/output structure (this is discussed in detail in sections 3.3 and 3.4). The top of stack reference gives the value the stack pointer should have when there are no expression temporaries on the stack. It is used for a consistency check in the .SM LINO line number operators in the interpreter, that occurs before each statement executed. This helps to catch bugs in the interpreter, that often manifest themselves by leaving the stack non-empty between statements. .PP Note that there is no explicit static link here. Thus to set up the display correctly after a non-local .B goto statement one must ``unwind'' through all the block marks on the stack to rebuild the display. .NH 2 Arguments and return values .PP A function returns its value into a space reserved by the calling block. Arguments to a .B function are placed on top of this return area. For both .B procedure and .B function calls, arguments are placed at the end of the expression evaluation area of the caller. When a .B function completes, expression evaluation can continue after popping the arguments to the .B function off the stack, exactly as if the function value had been ``loaded''. The arguments to a .B procedure are also popped off the stack by the caller after its execution ends. .KS .PP As a simple example consider the following stack structure for a call to a function .I f, of the form ``f(a)''. .so fig1.3.n .KE .PP If we suppose that .I f returns a .I real and that .I a is an integer, the calling sequence for this function would be: .DS .TS lp-2w(8) l. PUSH \-8 RV4:\fIl a\fR CALL:\fIl f\fR POP 4 .TE .DE .ZP Here we use the operator .SM PUSH to clear space for the return value, load .I a on the stack with a ``right value'' operator, call the function, pop off the argument .I a , and can then complete evaluation of the containing expression. The operations used here will be explained in section 2. .PP If the function .I f were given by .LS 10 \*bfunction\fR f(i: integer): real; 11 \*bbegin\fR 12 f := i 13 \*bend\fR; .LE then .I f would have code sequence: .DS .TS lp-2w(8) l. BEG:2 0 11 "f" LV:\fIl\fR 40 RV4:\fIl\fR 32 AS48 END .TE .DE .ZP Here the .SM BEG operator takes 9 bytes of inline data. The first byte specifies the length of the function name. The second longword specifies the amount of local variable storage, here none. The succeeding two lines give the line number of the .B begin and the name of the block for error traceback. The .SM BEG operator places a name pointer in the block mark. The body of the .B function first takes an address of the .B function result variable .I f using the address of operator .SM LV .I a . The next operation in the interpretation of this function is the loading of the value of .I i . .I I is at the level of the .B function .I f , here symbolically .I l, and the first variable in the local variable area. The .B function completes by assigning the 4 byte integer on the stack to the 8 byte return location, hence the .SM AS48 assignment operator, and then uses the .SM END operator to exit the current block. .NH 2 The main interpreter loop .PP The main interpreter loop is simply: .DS .mD iloop: \fBcaseb\fR (lc)+,$0,$255 .DE .ZP The main opcode is extracted from the first byte of the instruction and used to index into the table of opcode interpreter addresses. Control is then transferred to the specified location. The sub-opcode may be used to index the display, as a small constant, or to specify one of several relational operators. In the cases where a constant is needed, but it is not small enough to fit in the byte sub-operator, a zero is placed there and the constant follows in the next word. Zero is easily tested for, as the instruction that fetches the sub-opcode sets the condition code flags. A construction like: .DS .mD _OPER: \fBcvtbl\fR (lc)+,r0 \fBbneq\fR L1 \fBcvtwl\fR (lc)+,r0 L1: ... .DE is all that is needed to effect this packing of data. This technique saves space in the Pascal .I obj object code. .PP The address of the instruction at .I iloop is always contained in the register variable .I loop . Thus a return to the main interpreter is simply: .DS \fBjmp\fR (loop) .DE that is both quick and occupies little space. .NH 2 Errors .PP Errors during interpretation fall into three classes: .DS 1) Interpreter detected errors. 2) Hardware detected errors. 3) External events. .DE .PP Interpreter detected errors include I/O errors and built-in function errors. These errors cause a subroutine call to an error routine with a single parameter indicating the cause of the error. Hardware errors such as range errors and overflows are fielded by a special routine that determines the opcode that caused the error. It then calls the error routine with an appropriate error parameter. External events include interrupts and system limits such as available memory. They generate a call to the error routine with an appropriate error code. The error routine processes the error condition, printing an appropriate error message and usually a backtrace from the point of the error. The one byte integer is loaded onto the stack, followed by the four byte integer, and then an adding operator is used that has, implicit in its definition, the sizes of the arguments. .NH 2 Data types in the interpreter .PP The interpreter deals with several different fundamental data types. In the memory of the machine, 1, 2, and 4 byte integers are supported, with only 2 and 4 byte integers being present on the stack. The interpreter always convdoc/misc/px/pxin0.n 444 3 12 5124 2352352034 7375 .if !\n(xx .so tmac.p .RP .TL Berkeley Pascal PX Implementation Notes .br Version 2.0 \- January, 1979 .AU William N. Joy\*(Dg .AU M. Kirk McKusick\*(Dd .AI Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 .AB .PP Berkeley Pascal is designed for interactive instructional use and runs on the .SM "VAX 11/780" . The interpreter .I px executes the Pascal binaries generated by the Pascal translator .I pi . .PP The .I PX Implementation Notes .R describe the general organization of .I px , detail the various operations of the interpreter, and describe the file input/output structure. Conclusions are given on the viability of an interpreter based approach to language implementation for an instructional environment. .AE .if n 'ND .SH Introduction .PP These .I PX Implementation Notes .R have been updated from the original .SM "PDP 11/70" implementation notes to reflect the interpreter that runs on the .SM "VAX 11/780" . These notes consist of four major parts. The first part outlines the general organization of .I px . Section 2 describes the operations (instructions) of the interpreter while section 3 focuses on input/output related activity. A final section gives conclusions about the viability of an interpreter based approach to language implementation for instruction. .SH Related Berkeley Pascal documents .PP The .I "PXP Implementation Notes" give details of the internals of the execution profiler .I pxp; parts of the interpreter related to .I pxp are discussed in section 2.10. A paper describing the syntactic error recovery mechanism used in .I pi was presented at the ACM Conference on Compiler Construction in Boulder Colorado in August, 1979. .SH Acknowledgements .PP This version of .I px is a .SM "PDP 11/70" to .SM "VAX 11/780" opcode mapping of the original .I px that was designed and implemented by Ken Thompson, with extensive modifications and additions by William Joy and Charles Haley. Without their work, this .UP system would never have existed. These notes were first written by William Joy for the .SM "PDP 11/70" implementation. We would also like to thank our faculty advisor Susan L. Graham for her encouragement, her helpful comments and suggestions relating to .UP and her excellent editorial assistance. .FS \*(dg\ The financial support of the National Science Foundation under grants MCS74-07644-A03 and MCS78-07291 and of an \s-2IBM\s0 Graduate Fellowship are gratefully acknowledged. .FE .FS \*(dd\ The financial support of a Howard Hughes Graduate Fellowship is gratefully acknowledged. .FE .bp result variable .I f using the address of operator .SM LV .I a . The next operation in the interpretation of this function is the loading of the value of .I i . .I I is at the level of the .B function .I f , here symbolically .I l, and the first variable in the local variable area. The .B function completes by assigning the 4 byte integer on the stack to the 8 byte return location, hence the .SM AS48 assignment operator, andoc/misc/px/makefile 444 3 12 350 3124470627 7643 TROFF= vtroff -t print: trofftxt vpr -t trofftxt troff: /usr/ucb/soelim pxin?.n | tbl | ${TROFF} trofftxt: fig2.3.n /usr/ucb/soelim pxin?.n | tbl | /usr/ucb/vtroff -t >trofftxt fig2.3.n: fig2.3.raw sort fig2.3.raw >fig2.3.n .3.nnfig3.2.nnfig2.4.nn fig2.3.raw11fig2.3.nwfig1.3.nwfig1.2.nwfig1.1.nwdoc/misc/px/fig3.3.n 444 3 12 245 2352352033 7306 .KF .TS center; l l l | cw(15) |. _ \fIbool\fP: 2 _ 6 _ 12 _ 17 _ "false" _ "true" _ .TE .sp .ce Figure 3.3 \- Boolean type conversion structure .sp .KE xin2.n.npxin1.n.npxin0.n.nmakefilenfig3.3.nnfig3.2.nnfig2.4.nn fig2.3.raw11fig2.3.nwfig1.3.nwfig1.2.nwfig1.1.nwdoc/misc/px/fig3.2.n 444 3 12 305 2352352033 7302 .FK .TS center, box; cw(15). No. of cases _ .sp offsets of element names .sp _ .sp Array of null terminated element names .sp .TE .sp .ce Figure 3.2 \- Enumerated type conversion structure .sp .KE xin0.n.nmakefilenfig3.3.nnfig3.2.nnfig2.4.nn fig2.3.raw11fig2.3.nwfig1.3.nwfig1.2.nwfig1.1.nwdoc/misc/px/fig2.4.n 444 3 12 263 2352352032 7305 .KF .TS center, box; cw(15). \s-2CASEOP\s0 _ No. of cases _ .sp Case transfer table .sp _ .sp Array of case label values .sp .TE .sp .ce Figure 2.4 \- Case data structure .sp .KE pxin1.n.npxin0.n.nmakefilenfig3.3.nnfig3.2.nnfig2.4.nn fig2.3.raw11fig2.3.nwfig1.3.nwfig1.2.nwfig1.1.nwdoc/misc/px/fig2.3.raw 444 3 12 7673 2352352032 7674 HALT 2.2 Produce control flow backtrace BEG s,W,w," 2.2,1.8 Write second part of block mark, enter block END 2.2,1.8 End block execution CALL l,A 2.2,1.8 Procedure or function call NODUMP s,W,w," 2.2 \s-2BEG\s0 main program, suppress dump PUSH s 2.2,1.9 Clear space (for function result) POP s 2.2,1.9 Pop (arguments) off stack LINO s 2.2 Set line number, count statements TRA a 2.2 Short control transfer (local branching) TRA4 A 2.2 Long control transfer GOTO l,A 2.2,1.8 Non-local goto statement IF a 2.3 Conditional transfer REL* r 2.3 Relational test yielding Boolean result AND 2.4 Boolean and OR 2.4 Boolean or NOT 2.4 Boolean not LRV* l,A 2.5 Right value (load) operators RV* l,a 2.5 Right value (load) operators CON* v 2.5 Load constant operators AS* 2.5 Assignment operators OFF s 2.5 Offset address, typically used for field reference INX* s,w,w 2.6 Subscripting (indexing) operator NIL 2.6 Assert non-nil pointer LLV l,W 2.6 Address of operator LV l,w 2.6 Address of operator IND* 2.6 Indirection operators ADD* 2.7 Addition SUB* 2.7 Subtraction MUL* 2.7 Multiplication SQR* 2.7 Squaring DIV* 2.7 Fixed division MOD* 2.7 Modulus ABS* 2.7 Absolute value NEG* 2.7 Negation DVD* 2.7 Floating division RANG* v 2.8 Subrange checking CASEOP* 2.9 Case statements FOR* a 2.12 For statements PXPBUF w 2.10 Initialize \fIpxp\fP count buffer TRACNT w,A 2.10 Count a procedure entry COUNT w 2.10 Count a statement count point CTTOT s,w,w 2.11 Construct set CARD s 2.11 Cardinality of set STOI 2.12 Convert short to long integer STOD 2.12 Convert short integer to real ITOD 2.12 Convert integer to real ITOS 2.12 Convert integer to short integer GET 3.7 Get next record from a file PUT 3.8 Output a record to a file MESSAGE 3.6 Write to terminal FNIL 3.7 Check file initialized, not eof, synced FLUSH 3.11 Flush a file BUFF 3.11 Specify buffering for file "output" EOF 3.10 Returns \fItrue\fR if end of file EOLN 3.10 Returns \fItrue\fR if end of line on input text file RESET 3.11 Open file for input REWRITE 3.11 Open file for output REMOVE 3.11 Remove a file UNIT* 3.10 Set active file READ* 3.7 Read a record from a file WRITEC 3.8 Character unformatted write WRITEF l 3.8 General formatted write WRITES l 3.8 String unformatted write WRITLN 3.8 Output a newline to a text file PAGE 3.8 Output a formfeed to a text file MIN s 3.8 Minimum of top of stack and \fIs\fR MAX s,w 3.8 Maximum of top of stack and \fIw\fR NAM A 3.8 Convert enumerated type value to print format FILE 3.9 Push descriptor for active file DEFNAME 3.11 Attach file name for \fBprogram\fR statement files PACK s,w,w,w 2.15 Convert and copy from unpacked to packed UNPACK s,w,w,w 2.15 Convert and copy from packed to unpacked LLIMIT 2.14 Set linelimit for output text file ARGC 2.14 Returns number of arguments to current process ARGV 2.14 Copy specified process argument into char array CLCK 2.14 Returns user time of program SCLCK 2.14 Returns system time of program WCLCK 2.14 Returns current time stamp DATE 2.14 Copy date into char array TIME 2.14 Copy time into char array SEED 2.13 Set random seed, return old seed RANDOM 2.13 Returns random number DISPOSE 2.15 Dispose of a heap allocation NEW s 2.15 Allocate a record on heap, set pointer to it EXPO 2.13 Returns machine representation of real exponent ATAN 2.13 Returns arctangent of argument EXP 2.13 Returns exponential of argument LN 2.13 Returns natural log of argument COS 2.13 Returns cos of argument SIN 2.13 Returns sin of argument SQRT 2.13 Returns square root of argument CHR* 2.15 Returns integer to ascii mapping of argument ODD* 2.15 Returns \fItrue\fR if argument is odd, \fIfalse\fR if even PRED* 2.7 Returns predecessor of argument STLIM 2.14 Set program statement limit SUCC* 2.7 Returns successor of argument ROUND 2.13 Returns \s-2TRUNC\s0(argument + 0.5) TRUNC 2.13 Returns integer part of argument UNDEF 2.15 Returns \fIfalse\fR SDUP 2.2 Duplicate top stack word ASRT 2.12 Assert \fItrue\fR to continue IN s,w,w 2.11 Set membership INCT 2.11 Membership in a constructed set ng of data. This technique saves space in the Pascal .I obj object codoc/misc/px/fig2.3.n 444 3 12 7673 2352352032 7340 ABS* 2.7 Absolute value ADD* 2.7 Addition AND 2.4 Boolean and ARGC 2.14 Returns number of arguments to current process ARGV 2.14 Copy specified process argument into char array AS* 2.5 Assignment operators ASRT 2.12 Assert \fItrue\fR to continue ATAN 2.13 Returns arctangent of argument BEG s,W,w," 2.2,1.8 Write second part of block mark, enter block BUFF 3.11 Specify buffering for file "output" CALL l,A 2.2,1.8 Procedure or function call CARD s 2.11 Cardinality of set CASEOP* 2.9 Case statements CHR* 2.15 Returns integer to ascii mapping of argument CLCK 2.14 Returns user time of program CON* v 2.5 Load constant operators COS 2.13 Returns cos of argument COUNT w 2.10 Count a statement count point CTTOT s,w,w 2.11 Construct set DATE 2.14 Copy date into char array DEFNAME 3.11 Attach file name for \fBprogram\fR statement files DISPOSE 2.15 Dispose of a heap allocation DIV* 2.7 Fixed division DVD* 2.7 Floating division END 2.2,1.8 End block execution EOF 3.10 Returns \fItrue\fR if end of file EOLN 3.10 Returns \fItrue\fR if end of line on input text file EXP 2.13 Returns exponential of argument EXPO 2.13 Returns machine representation of real exponent FILE 3.9 Push descriptor for active file FLUSH 3.11 Flush a file FNIL 3.7 Check file initialized, not eof, synced FOR* a 2.12 For statements GET 3.7 Get next record from a file GOTO l,A 2.2,1.8 Non-local goto statement HALT 2.2 Produce control flow backtrace IF a 2.3 Conditional transfer IN s,w,w 2.11 Set membership INCT 2.11 Membership in a constructed set IND* 2.6 Indirection operators INX* s,w,w 2.6 Subscripting (indexing) operator ITOD 2.12 Convert integer to real ITOS 2.12 Convert integer to short integer LINO s 2.2 Set line number, count statements LLIMIT 2.14 Set linelimit for output text file LLV l,W 2.6 Address of operator LN 2.13 Returns natural log of argument LRV* l,A 2.5 Right value (load) operators LV l,w 2.6 Address of operator MAX s,w 3.8 Maximum of top of stack and \fIw\fR MESSAGE 3.6 Write to terminal MIN s 3.8 Minimum of top of stack and \fIs\fR MOD* 2.7 Modulus MUL* 2.7 Multiplication NAM A 3.8 Convert enumerated type value to print format NEG* 2.7 Negation NEW s 2.15 Allocate a record on heap, set pointer to it NIL 2.6 Assert non-nil pointer NODUMP s,W,w," 2.2 \s-2BEG\s0 main program, suppress dump NOT 2.4 Boolean not ODD* 2.15 Returns \fItrue\fR if argument is odd, \fIfalse\fR if even OFF s 2.5 Offset address, typically used for field reference OR 2.4 Boolean or PACK s,w,w,w 2.15 Convert and copy from unpacked to packed PAGE 3.8 Output a formfeed to a text file POP s 2.2,1.9 Pop (arguments) off stack PRED* 2.7 Returns predecessor of argument PUSH s 2.2,1.9 Clear space (for function result) PUT 3.8 Output a record to a file PXPBUF w 2.10 Initialize \fIpxp\fP count buffer RANDOM 2.13 Returns random number RANG* v 2.8 Subrange checking READ* 3.7 Read a record from a file REL* r 2.3 Relational test yielding Boolean result REMOVE 3.11 Remove a file RESET 3.11 Open file for input REWRITE 3.11 Open file for output ROUND 2.13 Returns \s-2TRUNC\s0(argument + 0.5) RV* l,a 2.5 Right value (load) operators SCLCK 2.14 Returns system time of program SDUP 2.2 Duplicate top stack word SEED 2.13 Set random seed, return old seed SIN 2.13 Returns sin of argument SQR* 2.7 Squaring SQRT 2.13 Returns square root of argument STLIM 2.14 Set program statement limit STOD 2.12 Convert short integer to real STOI 2.12 Convert short to long integer SUB* 2.7 Subtraction SUCC* 2.7 Returns successor of argument TIME 2.14 Copy time into char array TRA a 2.2 Short control transfer (local branching) TRA4 A 2.2 Long control transfer TRACNT w,A 2.10 Count a procedure entry TRUNC 2.13 Returns integer part of argument UNDEF 2.15 Returns \fIfalse\fR UNIT* 3.10 Set active file UNPACK s,w,w,w 2.15 Convert and copy from packed to unpacked WCLCK 2.14 Returns current time stamp WRITEC 3.8 Character unformatted write WRITEF l 3.8 General formatted write WRITES l 3.8 String unformatted write WRITLN 3.8 Output a newline to a text file Write to terminal MIN s 3.8 Minimum of top of stack and \fIs\fR MOD*doc/misc/px/fig1.3.n 444 3 12 331 2352352032 7277 .TS center, allbox; lw(20). T{ .nf .ce 1000 Space for value returned from f .ce 0 .fi T} T{ .ce Value of a T} T{ .sp .ce Block Mark .sp T} .TE .sp .1i .ce Figure 1.3 \- Stack structure on function call `f(a)' .sp .1i ilenfig3.3.nnfig3.2.nnfig2.4.nn fig2.3.raw11fig2.3.nwfig1.3.nwfig1.2.nwfig1.1.nwdoc/misc/px/fig1.2.n 444 3 12 525 2352352031 7302 .KF .TS center; l l | cw(22n) | aw(20n). _ \& Created by \s-2CALL\s0 Saved lino .sp Saved lc .sp Saved dp .sp _ \& Created by \s-2BEG\s0 Saved dp contents .sp Pointer to current entry line and section name .sp Current file name and buffer .sp Top of stack reference .sp .T& | _ | l. .TE .sp .ce Figure 1.2 \- Block mark structure .sp .KE fig1.1.nwdoc/misc/px/fig1.1.n 444 3 12 512 2352352031 7275 .KF .TS center; c l l l _ l | l | | cw(18) | aw(28) | _ | l | c | a. Base of stack frame Block mark Positive offsets .sp \(<- Display entry points here .sp Local variables .sp _ Negative offsets Temporary expression space .sp .T& | _ | l c l. .sp Top of stack frame .TE .sp .ce Figure 1.1 \- Structure of stack frame .sp .KE g1.2.nwfig1.1.nwdoc/misc/kchanges.4.2/ 755 3 12 0 3650322445 7536 doc/misc/kchanges.4.2/0.t 444 3 12 4276 3142047331 10150 .TL Changes to the Kernel in 4.2BSD .sp July 25, 1983 .AU Samuel J. Leffler .AI Computer Systems Research Group Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 (415) 642-7780 .PP This document summarizes the changes to the kernel between the September 1981 4.1BSD release and the July 1983 4.2BSD distribution. The information is presented in both overall terms (e.g. organizational changes), and as specific comments about individual files. See the source code itself for more details. .PP The system has undergone too many changes to detail everything. Instead the major areas of change will pointed out, followed by a brief description of the contents of files present in the 4.1BSD release. Where important changes and/or bug fixes were applied they are described. The networking support is not discussed in this document, refer to ``4.2BSD Networking Implementation Notes'' for a discussion of the internal structure of the network facilities. .PP Major changes include: .IP \(bu 3 organizational changes to isolate VAX specific portions of the system .IP \(bu 3 changes to support the new file system organization .IP \(bu 3 changes to support the new interprocess communication facilities .IP \(bu 3 changes for the new networking support; in particular, the DARPA standard Internet protocols TCP, UDP, IP, and ICMP, and the \fInetwork interface drivers\fP which provide hardware support .IP \(bu 3 changes for the new signal facilities .IP \(bu 3 changes for the new time and interval timer facilities .IP \(bu 3 changes to eliminate references to global variables; in particular, the global variables \fIu.u_base\fP, \fIu.u_offset\fP, \fIu.u_segflg\fP, and \fIu.u_count\fP have been almost completely replaced by \fIuio\fP structures which are passed by reference; the \fIu.u_error\fP variable has not been completely purged from low level portions of the system, but is in many places now returned as a function value; the \fIuio\fP changes were necessitated by the new scatter-gather i/o facilities .IP \(bu 3 changes for the new disk quota facilities .IP \(bu 3 changes for more flexible configuration of the disk space used for paging and swapping WRITLN 3.8 Output a newline to a text file PAGE 3.8 Output a formfeed to a text file MIN s 3.8 Minimum of top of stack and \fIs\fR MAX s,w 3.8 Maximum of top of stack and \fIw\fR NAM A 3.8 Convert enumerated type value to print format FILE 3.9 Push descriptor for active file DEFNAME 3.11 Attach file name for \fBprogram\fdoc/misc/kchanges.4.2/1.t 444 3 12 5225 3141701206 10141 .NH Carrying over local software .PP With the massive changes made to the system, both in organization and in content, it may take some time to understand how to carry over local software. The majority of this document is devoted to describing the contents of each important source file in the system. If you have local software other than device drivers to incorporate in the system you should first read this document completely, then study the source code to more fully understand the changes as they affect you. .PP Locally written device drivers will need to be converted to work in the new system. The changes required of device drivers are: .IP 1) The calling convention for the driver \fIioctl\fP routine has changed. Any data copied in or out of the system is now done at the highest level inside \fIioctl\fP\|(). The third parameter to the driver \fIioctl\fP routine is a data buffer passed by reference. Values to be returned by a driver must be copied into the associated buffer from which the system then copies them into the user address space. .IP 2) The \fIread\fP, \fIwrite\fP, and \fIioctl\fP entry points in device drivers must return 0 or an error code from <\fIerrno.h\fP>. .IP 3) The \fIread\fP and \fIwrite\fP entry points should no longer reference global variables out of the user area. A new \fIuio\fP parameter is passed to these routines which should, in turn, be passed to the \fIphysio\fP\|() routine if the driver supports raw i/o. .IP 4) Disk drivers which are to support swapping/paging must have a new routine which returns the size, in sectors, of a disk partition. This value is used in calculating the size of swapping/paging areas at boot time. .IP 5) Code which previously used the \fIiomove\fP, \fIpassc\fP, or \fIcpass\fP routines will have to be modified to use the new \fIuiomove\fP, \fIureadc\fP, and \fIuwritec\fP routines. The new routines all use a \fIuio\fP structure to communicate the i/o base, offset, count, and segflag values previously passed globally in the user area. .IP 6) Include files have been rearranged and new ones have been created. Common machine-dependent files such as \fImtpr.h\fP, \fIpte.h\fP, \fIreg.h\fP, and \fIpsl.h\fP are no longer in the ``h'' directory; see below under organizational changes. .IP 7) The handling of UNIBUS resets has changed. The reset routine should no longer deallocate UNIBUS resources allocated to pending i/o requests (this is done in the \fIubareset\fP routine). For most drivers this means the reset routine simply needs to invalidate any \fIub_info\fP values stored in local data structures to insure new UNIBUS resources will be allocated the next time the ``device start'' routine is entered. \fIu.u_base\fP, \fIu.u_offset\fP, \fIu.u_segflg\fP, and \fIu.u_count\fP have been almost completely replaced by \fIuio\fP structures which are passed by reference; the \fIu.u_error\fP variable has not been completely purged from low level portions of the system, but is in many places now returned as a function value; the \fIuio\fP changes were necessitated bydoc/misc/kchanges.4.2/3.0.t 444 3 12 346 3141701225 10261 .NH Bug fixes and changes .PP This section contains a brief description of each file which is not part of the network subsystem, and also indicates important changes and bug fixes applied to the source code contained in the file. doc/misc/kchanges.4.2/2.t 444 3 12 3325 3142050445 10144 .NH Organizational changes .PP The directory organization and file names are very different from 4.1BSD. The new directory layout breaks machine-specific and network-specific portions of the system out into separate directories. A new file, \fImachine\fP is a symbolic link to a directory for the target machine, e.g. \fIvax\fP. This allows a single set of sources to be shared between multiple machine types (by including header files as ``../machine/file''). The directory naming conventions, as they relate to the network support, are intended to allow expansion in supporting multiple ``protocol families''. The following directories comprise the system sources for the VAX: .DS .TS lw(1.0i) l. /sys/h machine independent include files /sys/sys machine independent system source files /sys/conf site configuration files and basic templates /sys/net network independent, but network related code /sys/netinet DARPA Internet code /sys/netimp IMP support code /sys/netpup PUP-1 support code /sys/vax VAX specific mainline code /sys/vaxif VAX network interface code /sys/vaxmba VAX MASSBUS device drivers and related code /sys/vaxuba VAX UNIBUS device drivers and related code .TE .DE .PP Files indicated as \fImachine independent\fP are shared among 4.2BSD systems running on the VAX and Motorola 68010. Files indicated as \fImachine dependent\fP are located in directories indicative of the machine on which they are used; the 4.2BSD release from Berkeley contains support only for the VAX. Files marked \fInetwork independent\fP form the ``core'' of the networking subsystem, and are shared among all network software; the 4.2BSD release from Berkeley contains complete support only for the DARPA Internet protocols IP, TCP, UDP, and ICMP. count\fP have been almost completely replaced by \fIuio\fP structures which are passed by reference; the \fIu.u_error\fP variable has not been completely purged from low level portions of the system, but is in many places now returned as a function value; the \fIuio\fP changes were necessitated bydoc/misc/kchanges.4.2/4.t 444 3 12 6113 3161402003 10134 .NH Standalone support .PP This section describes changes made to the standalone i/o facilities and the new methods used in system bootstrapping. .NH 2 Disk formatting .PP A new disk formatting program has been developed for use with non-DEC UNIBUS and MASSBUS disk controllers. The \fIformat\fP\|(8V) program has been tested mainly with disk drives attached to Emulex MASSBUS and UNIBUS disk controllers, but should operate with any controller which handles bad sector forwarding in an identical fashion to DEC RM03/RM05 or RM80 (but not RP06) disk controllers. The program runs standalone formatting disk headers and creating a bad sector table in the DEC standard 144 format. .NH 2 Standalone i/o library .LP Changes to support more complex standalone i/o applications as well as changes for the new file system organization, have resulted in significant revisions to the standalone i/o library. Device drivers now support a new entry point for \fIioctl\fP requests and library routines now return error codes a la the UNIX system calls. In addition, standalone i/o library routines now make many more internal consistency checks to verify data structures have not been corrupted by faulty device drivers and that i/o errors have not occurred when reading critical file system information. In conjunction with the new disk formatter, the \fIup\fP and \fIhp\fP standalone drivers have been rewritten to support ECC correction and bad sector handling. These drivers are used in bootstrapping from the console media on 11/780's and 11/730's thereby eliminating the requirement for error free root partitions on disks attached to \fIhp\fP and \fIup\fP controllers. Many bugs in the standalone tape drivers have been fixed. .NH 2 System bootstrapping .PP On 11/780's and 11/730's, the console device is still used to load the ``boot'' program. This in turn loads the system image from the root file system. .PP The method by which the system bootstraps on 11/750's is different in 4.2BSD. The system is still bootstrapped from disk using a boot block in sector 0 of the root file system partition, but now this boot block simply reads in the next 7.5 kilobytes. The 7.5 kilobyte program is a version of the ``/boot'' program loaded only with the device driver required to read the ``/boot'' program from the root file system. The ``/boot'' program then reads in the system image, as done on 11/780's and 11/730's. .PP The additional level of bootstrap code was done to simplify the sector 0 boot programs and minimize the total amount of assembly language code which had to be maintained. It was also expected that 7.5 kilobytes would be sufficient to allow the new \fIhp\fP and \fIup\fP standalone drivers which support ECC correction and bad sector handling to be used. Unfortunately, the standalone system has not yet been trimmed down to allow the second level boot programs, loaded with the new drivers, to fit in the space provided. Sites which have Winchester disk drives with bad sectors in the root file system partition and which require this support should be able to trim the size of the second level boot program to make it fit. e of a heap allocation NEW s 2.15 Allocate a record on heap, set pointer to it EXPO 2.13 Returns machine representation of real exponent ATAN 2.13 Returns arctangent of argument EXP 2.13 Returns exponential of argument LN 2.13 Returns natural log of argument COS 2.13 Returns cos of argument SIN 2.13 Returns sin of argument SQRT 2.13 Returns square root of argument CHR* 2.15 Returns integer to ascii mapping of argument ODD* 2.15 Returdoc/misc/kchanges.4.2/3.1.t 444 3 12 21437 3142051476 10335 .NH 2 /sys/h .PP Files residing here are intended to be machine independent. Consequently, the header files for device drivers which were present in this directory in 4.1BSD have been moved to other directories; e.g. /sys/vaxuba. Many files which had been duplicated in /usr/include are now present only in /sys/h. Further, the 4.1BSD /usr/include/sys directory is now normally a symbolic link to this directory. By having only a single copy of these files the ``multiple update'' problem no longer occurs. (It is still possible to have /usr/include/sys be a copy of the /sys/h for sites where it is not feasible to allow the general user community access to the system source code.) .PP The following files are new to /sys/h in 4.2BSD: .IP \fBdomain.h\fP 15 describes the internal structure of a communications domain; part of the new ipc facilities .IP \fBerrno.h\fP 15 had previously been only in /usr/include; the file /usr/include/errno.h is now a symbolic link to this file .IP \fBfs.h\fP 15 replaces the old filsys.h description of the file system organization .IP \fBgprof.h\fP 15 describes various data structures used in profiling the kernel; see \fIgprof\fP\|(1) for details .IP \fBkernel.h\fP 15 is an offshoot of systm.h and param.h; contains constants and definitions related to the logical UNIX ``kernel'' .IP \fBmbuf.h\fP 15 describes the memory managment support used mostly by the network; see ``4.2BSD Networking Implementation Notes'' for more information .IP \fBmman.h\fP 15 contains definitions for planned changes to the memory management facilities (not implemented in 4.2BSD) .IP \fBnami.h\fP 15 defines various structures and manifest constants used in conjunctions with the \fInamei\fP routine (part of this file reflects future plans for changes to \fInamei\fP rather than current use) .IP \fBprotosw.h\fP 15 contains a description of the protocol switch table and related manifest constants and data structures use in communicating with routines located in the table .IP \fBquota.h\fP 15 contains definitions related to the new disk quota facilities .IP \fBresource.h\fP 15 contains definitions used in the \fIgetrusage\fP, \fIgetrlimit\fP, and \fIgetpriority\fP system calls (among others) .IP \fBsocket.h\fP 15 contains user-visible definitions related to the new socket ipc facilities .IP \fBsocketvar.h\fP 15 contains implementation definitions for the socket ipc facilities .IP \fBttychars.h\fP 15 contains definitions related to tty character handling; in particular, manifest constants for the system standard erase, kill, interrupt, quit, etc. characters are stored here (all the appropriate user programs use these manifest definitions) .IP \fBttydev.h\fP 15 contains definitions related to hardware specific portions of tty handling (such as baud rates); to be expanded in the future .IP \fBuio.h\fP 15 contains definitions for users wishing to use the new scatter-gather i/o facilities; also contains the kernel \fIuio\fP structure used in implementing scatter-gather i/o .IP \fBun.h\fP 15 contains user-visible definitions related to the ``unix'' ipc domain .IP \fBunpcb.h\fP 15 contains the definition of the protocol control block used in the ``unix'' ipc domain .IP \fBwait.h\fP 15 contains definitions used in the \fIwait\fP and \fIwait3\fP\|(2) system calls; previously in /usr/include/wait.h .PP The following files have undergone significant change: .IP \fBbuf.h\fP 15 reflects the changes made to the buffer cache for the new file system organization \- buffers are variable sized with pages allocated to buffers on demand from a pool of pages dedicated to the buffer cache; one new structure member has been added to eliminate overloading of a commonly unreferenced structure member; a new flag B_CALL, when set, causes the function \fIb_iodone\fP to be called when i/o completes on a buffer (this is used to wakeup the pageout daemon); macros have been added for manipulating the buffer queues, these replace the previous subroutines used to insert and delete buffers from the queues .IP \fBconf.h\fP 15 reflects changes made in the handling of swap space and changes made for the new \fIselect\fP\|(2) system call; the block device table has a new member, \fId_psize\fP, which returns the size of a disk partition, in sectors, given a major/minor value; the character device table has a new member, \fId_select\fP, which is passed a \fIdev_t\fP value and an FREAD (FWRITE) flag and returns 1 when data may be read (written), and 0 otherwise; the \fIswdevt\fP structure now includes the size, in sectors, of a swap partition .IP \fBdir.h\fP 15 is completely different since directory entries are now variable length; definitions for the user level interface routines described in \fIdirectory\fP\|(3) are also present .IP \fBfile.h\fP 15 has a very different \fIfile\fP structure definition and definitions for the new \fIopen\fP and \fIflock\fP system calls; symbolic definitions for many constants commonly supplied to \fIaccess\fP and \fIlseek\fP, are also present .IP \fBinode.h\fP 15 reflects the new hashed cacheing scheme as well additions made to the on-disk and in-core inodes; on-disk inodes now contain a count of the actual number of disk blocks allocated a file (used mostly by the disk quota facilities), larger time stamps (for planned changes), more direct block pointers, and room for future growth; in-core inodes have new fields for the advisory locking facilities, a back pointer to the file system super block information (to eliminate lookups), and a pointer to a structure used in implementing disk quotas. .IP \fBioctl.h\fP 15 has all request codes constructed from _IO, _IOR, _IOW, and _IOWR macros which encode whether the request requires data copied in, out, or in and out of the kernel address space; the size of the data parameter (in bytes) is also encoded in the request, allowing the \fIioctl\fP\|() routine to perform all user-kernel address space copies .IP \fBmount.h\fP 15 the \fImount\fP structure has a new member used in the disk quota facilities .IP \fBparam.h\fP 15 has had numerous items deleted from it; in particular, many definitions logically part of the ``kernel'' have been moved to kernel.h, and machine-dependent values and definitions are now found in param.h files located in machine/param.h; contains a manifest constant, NGROUPS, which defines the maximum size of the group access list .IP \fBproc.h\fP 15 has changed extensively as a result of the new signals, the different resource usage structure, the disk quotas, and the new timers; in addition, new members are present to simplify searching the process tree for siblings; the SDLYU and SDETACH bits are gone, the former is replaced by a second parameter to \fIpagein\fP, the latter is no longer needed due to changes in the handling of open's on /dev/tty by processes which have had their controlling terminal revoked with \fIvhangup\fP .IP \fBsignal.h\fP 15 reflects the new signal facilities; several new signals have been added: SIGIO for signal driven i/o; SIGURG for notification when an urgent condition arises; and SIGPROF and SIGVTALRM for the new timer facilities; structures used in the \fIsigvec\fP\|(2) and \fIsigstack\fP\|(2) system calls, as well as signal handler invocations are defined here .IP \fBstat.h\fP 15 has been updated to reflect the changes to the inode structure; in addition a new field \fIst_blksize\fP contains an ``optimal blocking factor'' for performing i/o (for files this is the block size of the underlying file system) .IP \fBsystm.h\fP 15 has been trimmed back a bit as various items were moved to kernel.h .IP \fBtime.h\fP 15 contains the definitions for the new time and interval timer facilities; time zone definitions for the half dozen time zones understood by the system are also included here .IP \fBtty.h\fP 15 reflects changes made to the internal structure of the terminal handler; the ``local'' structures have been merged into the standard flags and character definitions though the user interface is virtually identical to that of 4.1BSD; the TTYHOG value has been changed from 256 to 255 to account for a counting problem in the terminal handler on input buffer overflow .IP \fBuser.h\fP 15 has been extensively modified; members have been grouped and categorized to reflect the ``4.2BSD System Manual'' presentation; new members have been added and existing members changed to reflect: the new groups facilities, changes to resource accounting and limiting, new timer facilities, and new signal facilities .IP \fBvmmac.h\fP 15 has had many macro definitions changed to eliminate assumptions about the hardware virtual memory support; in particular, the stack and user area page table maps are no longer assumed to be adjacent or mapped by a single page table base register .IP \fBvmparam.h\fP 15 now includes machine-dependent definitions from a file machine/vmparam.h. .IP \fBvmsystm.h\fP 15 has had several machine-dependent definitions moved to machine/vmparam.h e. The format of these blocks is represented in Figure 1.2. .sp .so fig1.2.n .PP The data saved by the .SM CALL operator includes the line number .I lino of the point of call, that is printed if the program execution ends abndoc/misc/kchanges.4.2/3.2.t 444 3 12 26574 3161402157 10342 .NH 2 /sys/sys .PP This directory contains the ``mainstream'' kernel code. Files in this directory are intended to be shared between 4.2BSD implementations on all machines. As there is little correspondence between the current files in this directory and those which were present in 4.1BSD a general overview of each files's contents will be presented rather than a file-by-file comparison. .PP Files in the \fIsys\fP directory are named with prefixes which indicate their placement in the internal system layering. The following table summarizes these naming conventions. .DS .TS lw(1.0i) l. init_ system initialization kern_ kernel (authentication, process management, etc.) quota_ disk quotas sys_ system calls and similar tty_ terminal handling ufs_ file system uipc_ interprocess communication vm_ virtual memory .TE .DE .NH 3 Initialization code .IP \fBinit_main.c\fP 17 contains system startup code .IP \fBinit_sysent.c\fP 17 contains the definition of the \fIsysent\fP table \- the table of system calls supported by 4.2BSD .NH 3 Kernel-level support .IP \fBkern_acct.c\fP 17 contains code used in per-process accounting .IP \fBkern_clock.c\fP 17 contains code for clock processing; work was done here to minimize time spent in the \fIhardclock\fP routine; support for kernel profiling and statistics collection from an alternate clock source have been added; a bug which caused the system to lose time has been fixed; the code which drained terminal multiplexor silos has been made the default mode of operation and moved to locore.s .IP \fBkern_descrip.c\fP 17 contains code for management of descriptors; descriptor related system calls such as \fIdup\fP and \fIclose\fP (the upper-most levels) are present here .IP \fBkern_exec.c\fP 17 contains code for the \fIexec\fP system call .IP \fBkern_exit.c\fP 17 contains code for the \fIexit\fP system call .IP \fBkern_fork.c\fP 17 contains code for the \fIfork\fP (and \fIvfork\fP) system call .IP \fBkern_mman.c\fP 17 contains code for memory management related calls; the contents of this file is expected to change when the revamped memory management facilities are added to the system .IP \fBkern_proc.c\fP 17 contains code related to process management; in particular, support routines for process groups .IP \fBkern_prot.c\fP 17 contains code related to access control and protection; the notions of user ID, group ID, and the group access list are implemented here .IP \fBkern_resource.c\fP 17 code related to resource accounting and limits; the \fIgetrusage\fP and ``get'' and ``set'' resource limit system calls are found here .IP \fBkern_sig.c\fP 17 the signal facilities; in particular, kernel level routines for posting and processing signals .IP \fBkern_subr.c\fP 17 support routines for manipulating the \fIuio\fP structure: \fIuiomove\fP, \fIureadc\fP, and \fIuwritec\fP .IP \fBkern_synch.c\fP 17 code related to process synchonization and scheduling: \fIsleep\fP and \fIwakeup\fP among others .IP \fBkern_time.c\fP 17 code related to processing time; the handling of interval timers and time of day .IP \fBkern_xxx.c\fP 17 miscellaneous system facilities and code for supporting 4.1BSD compatibility mode (kernel level) .NH 3 Disk quotas .IP \fBquota_kern.c\fP 17 ``kernel'' of disk quota suppport .IP \fBquota_subr.c\fP 17 miscellaneous support routines for disk quotas .IP \fBquota_sys.c\fP 17 disk quota system call routines .IP \fBquota_ufs.c\fP 17 portions of the disk quota facilities which interface to the file system routines .NH 3 General subroutines .IP \fBsubr_mcount.c\fP 17 code used when profiling the kernel .IP \fBsubr_prf.c\fP 17 \fIprintf\fP and friends; also, code related to handling of the diagnostic message buffer .IP \fBsubr_rmap.c\fP 17 subroutines which manage resource maps .IP \fBsubr_xxx.c\fP 17 miscellaneous routines and code for routines implemented with special VAX instructions, e.g. bcopy .NH 3 System level support .IP \fBsys_generic.c\fP 17 code for the upper-most levels of the ``generic'' system calls: \fIread\fP, \fIwrite\fP, \fIioctl\fP, and \fIselect\fP; a ``must read'' file for the system guru trying to shake out 4.1BSD bad habits .IP \fBsys_inode.c\fP 17 code supporting the ``generic'' system calls of sys_generic.c as they apply to inodes; the guts of the byte stream file i/o interface .IP \fBsys_process.c\fP 17 code related to process debugging: \fIptrace\fP and its support routine \fIprocxmt\fP; this file is expected to change as better process debugging facilities are developed .IP \fBsys_socket.c\fP 17 code supporting the ``generic'' system calls of sys_generic.c as they apply to sockets .NH 3 Terminal handling .IP \fBtty.c\fP 17 the terminal handler proper; both 4.1BSD and version 7 terminal interfaces have been merged into a single set of routines which are selected as line disciplines; a bug which caused new line delays past column 127 to be calculated incorrectly has been fixed; the high water marks for terminals running in tandem mode at 19.2 or 38.4 kilobaud have been upped .IP \fBtty_bk.c\fP 17 the old Berknet line discipline (defunct) .IP \fBtty_conf.c\fP 17 initialized data structures related to terminal handling; .IP \fBtty_pty.c\fP 17 support for pseudo-terminals; actually two device drivers in one; additions over 4.1BSD pseudo-terminals include a simple ``packet protocol'' used to support flow-control and output flushing on interrupt, as well as a ``transparent'' mode used in programs such as emacs .IP \fBtty_subr.c\fP 17 c-list support routines .IP \fBtty_tb.c\fP 17 two line disciplines for supporting RS232 interfaces to Genisco and Hitachi tablets .IP \fBtty_tty.c\fP 17 trivial support routines for ``/dev/tty'' .NH 3 File system support .IP \fBufs_alloc.c\fP 17 code which handles allocation and deallocation of file system related resources: disk blocks, on-disk inodes, etc. .IP \fBufs_bio.c\fP 17 block i/o support; the buffer cache proper; see description of buf.h and ``A Fast File System for UNIX'' for information .IP \fBufs_bmap.c\fP 17 code which handles logical file system to logical disk block number mapping; understands structure of indirect blocks and files with holes; handles automatic extension of files on write .IP \fBufs_dsort.c\fP 17 sort routine implementing prioritized seek sort algorithm for disk i/o operations .IP \fBufs_fio.c\fP 17 code handling file system specific issues of access control and protection .IP \fBufs_inode.c\fP 17 inode management routines; in-core inodes are now hashed and cached; inode synchronization has been revamped since 4.1BSD to eliminate race conditions present in 4.1 .IP \fBufs_mount.c\fP 17 code related to demountable file systems .IP \fBufs_nami.c\fP 17 the \fInamei\fP routine (and related support routines) \- the routine that maps pathnames to inode numbers .IP \fBufs_subr.c\fP 17 miscellaneous subroutines: this code is shared with certain user programs such as \fIfsck\fP\|(8); for a good time look at the \fIbufstats\fP routine in this file .IP \fBufs_syscalls.c\fP 17 file system related system calls, everything from \fIopen\fP to \fIunlink\fP; many new system calls are found here: \fIrename\fP, \fImkdir\fP, \fIrmdir\fP, \fItruncate\fP, etc. .IP \fBufs_tables.c\fP 17 static tables used in block and fragment accounting; this file is shared with user programs such as \fIfsck\fP\|(8) .IP \fBufs_xxx.c\fP 17 miscellaneous routines and 4.1BSD compatibility code; all of the code which still understands the old inode format is in here .NH 3 Interprocess communication .IP \fBuipc_domain.c\fP 17 code implementing the ``communication domain'' concept; this file must be augmented to incorporate new domains .IP \fBuipc_mbuf.c\fP 17 memory management routines for the ipc and network facilities; refer to the document ``4.2BSD Networking Implementation Notes'' for a detailed description of the routines in this file .IP \fBuipc_pipe.c\fP 17 leftover code for connecting two sockets into a pipe; actually a special case of the code for the \fIsocketpair\fP system call .IP \fBuipc_proto.c\fP 17 UNIX ipc communication domain configuration definitions; contains UNIX domain data structure initialization .IP \fBuipc_socket.c\fP 17 top level socket support routines; these routines handle the interface to the protocol request routines, move data between user address space and socket data queues, understand the majority of the logic in process synchronization as it relates to the ipc facilities .IP \fBuipc_socket2.c\fP 17 lower level socket support routines; provide nitty gritty bit twiddling of socket data structures; manage placement of data on socket data queues .IP \fBuipc_syscalls.c\fP 17 user interface code to ipc system calls: \fIsocket\fP, \fIbind\fP, \fIconnect\fP, \fIaccept\fP, etc.; concerned exclusively with system call argument passing and validation .IP \fBuipc_usrreq.c\fP 17 UNIX ipc domain support; user request routine and supporting utility routines .NH 3 Virtual memory support .PP The code in the virtual memory subsystem has changed very little from 4.1BSD; changes made in these files were either to gain portability, handle the new swap space configuration scheme, or fix bugs. .IP \fBvm_drum.c\fP 17 code for the management of disk space used in paging and swapping .IP \fBvm_mem.c\fP 17 management of physical memory; the ``core map'' is implemented here as well as the routines which lock down pages for physical i/o (the latter will have to change when the memory management facilities are modified to support sharing of pages); a sign extension bug on block numbers extracted from the core map has been fixed (this caused the system to crash with certain disk partition layouts on RA81 disks) .IP \fBvm_mon.c\fP 17 support for virtual memory monitoring; code in this file is included in the system only if the PGINPROF and/or TRACE options are configured .IP \fBvm_page.c\fP 17 the code which handles and processes page faults: \fIpagein\fP; race conditions in accessing pages in transit and requests to lock pages for raw i/o have been fixed in this code; a major path through \fIpagein\fP whose sole purpose was to implement the software simulated reference bit has been ``parallel coded'' in assembly language (this appears to decrease system time by at least 5% when a system is paging heavily); \fIpagein\fP now has a second parameter indicating if the page to be faulted in should be left locked (this eliminated the need for the SDLYU flag in the \fIproc\fP structure) .IP \fBvm_proc.c\fP 17 mainly code to manage virtual memory allocation during process creation and destruction (the virtual memory equivalent of ``passing the buck'' is done here). .IP \fBvm_pt.c\fP 17 code for manipulating process page tables; knowledge of the user area is found here as it relates to the user address space page tables .IP \fBvm_sched.c\fP 17 the code for process 0, the scheduler, lives here; other routines which monitor and meter virtual memory activity (used in implementing high level scheduling policies) also are present; this code has been better parameterized to isolate machine-dependent heuristics used in the scheduling policies .IP \fBvm_subr.c\fP 17 miscellaneous routines: some for manipulating accessability of virtual memory, others for mapping virtual addresses to logical segments (text, data, stack) .IP \fBvm_sw.c\fP 17 indirect driver for interleaved, multi-controller, paging area; modified to support interleaved partitions of different sizes .IP \fBvm_swap.c\fP 17 code to handle process related issues of swapping .IP \fBvm_swp.c\fP 17 code to handle swap i/o .IP \fBvm_text.c\fP 17 code to handle shared text segments \- the ``text'' table ose time has been fixed; the code which drained terminal multiplexor silos has been made the default mode of operation and moved to doc/misc/kchanges.4.2/3.3.t 444 3 12 1736 3141701263 10312 .NH 2 /sys/conf .PP This directory contains files used in configuring systems. The format of configuration files has changed slightly; it is described completely in a new document ``Building 4.2BSD UNIX Systems with Config''. Several new files exist for use by the \fIconfig\fP\|(8) program, and several old files have had their meaning changed slightly. .IP \fBLINT\fP 15 a new configuration file for use in linting kernels .IP \fBdevices.vax\fP 15 maps block device names to major device numbers (on the VAX) .IP \fBfiles\fP 15 now has only files containing machine-independent code .IP \fBfiles\fP.\fIxxx\fP 15 (where \fIxxx\fP is a system name) optional, \fIxxx\fP-specific \fIfiles\fP files .IP \fBfiles.vax\fP 15 new file describing files which contain machine-dependent code .IP \fBmakefile.vax\fP 15 makefile template specific to the VAX .IP \fBparam.c\fP 15 updated calculations of \fIntext\fP and \fInfile\fP to reflect network requirements; new quantities added for disk quotas lt mode of operation and moved to doc/misc/kchanges.4.2/3.4.t 444 3 12 13331 3142053122 10320 .NH 3 /sys/vaxuba .PP This directory contains UNIBUS device drivers and their related include files. The latter have moved from /sys/h in an effort to isolate machine-dependent portions of the system. The following device drivers were not present in the 4.1BSD release. .IP \fBad.c\fP 10 a driver for the Data Translation A/D converter .IP \fBik.c\fP 10 an Ikonas frame buffer graphics interphase; user access to the device is implemented by mapping the device registers directly into the virtual address space of a user (the routines to map memory are included in uba.c only if an Ikonas is configured in the system) .IP \fBkgclock.c\fP 10 a driver for a DL11-W or KL11-W used as an auxiliary real-time clock source for kernel profiling and/or statistics gathering; if this device is present, the system will automatically collect its i/o statistics (and if profiling, pc samples) off the secondary clock; very useful in kernel profiling as the second clock source eliminates most of the statistical anomalies and shows the true time spent in the clock routine .IP \fBps.c\fP 10 driver for an Evans and Sutherland Picture System 2 .IP \fBrl.c\fP 10 driver for RL11 controller with RL02 cartridge disks; does not support RL01 disks though it should only require additions to disk geometry and partition tables .IP \fBrx.c\fP 10 driver for RX211 floppy disk controller; provides both block and character device interfaces; \fIioctl\fP calls support floppy disk formatting and ``deleted data mark'' sensing and writing; makes a great paging device .IP \fBut.c\fP 10 driver for tape controllers which emulate a TU45 on the UNIBUS; in particular, the System Industries Model 9700 triple density tape drive .IP \fBuu.c\fP 10 driver for dual UNIBUS TU58 cartridge tape cassettes accessed through a DL11 serial line; uses assembly language code in locore.s which provides pseudo-DMA on input (necessary to avoid data overruns); using this driver while the system runs multi-user degrades response severely (developed at Berkeley exclusively to produce distribution TU58 cassettes) .PP In addition to the above device drivers, many drivers present in 4.1BSD now sport corresponding include files which contain device register definitions. For example, the DH11 driver is now broken into three files: dh.c, dhreg.h, and dmreg.h. .PP The following drivers have been significantly modified, or had bugs fixed in them, since the 4.1BSD release: .IP \fBdh.c\fP 10 changes to reflect the revised tty data organization .IP \fBdmf.c\fP 10 a bug where device register accesses caused unwitting modification of certain status bits has been fixed; modem control has been fixed; a remnant of the DH11 include file which caused incorrect definitions for even/odd parity has been fixed; changes to reflect the revised tty data organization .IP \fBdz.c\fP 10 now supports the DZ32; changes to reflect the revised tty data organization .IP \fBlp.c\fP 10 now takes a non-zero flags value specified in the configuration file as the printer width (default is 132 columns); thus, to configure an 80 column printer, include ``flags 80'' in the device specification .IP \fBrk.c\fP 10 a race condition has been fixed where a seek finishing on one drive appeared as an i/o transfer completeing on another (this bug actually was present in all UNIBUS disk drivers); changes for \fIuio\fP and swap space configuration .IP \fBtm.c\fP 10 a typo which made the system crash with multiple slaves on a single controller has been fixed; an incorrect priority level change in the watchdog timer routine which caused the system to crash when a device operation timed out has been fixed; changes for \fIuio\fP processing of raw i/o .IP \fBts.c\fP 10 changes for \fIuio\fP processing of raw i/o .IP \fBuba.c\fP 10 a new support routine for allocating UNIBUS memory for memory-mapped devices such as the 3Com Ethernet interface; the handling of UNIBUS resets has been changed, all UNIBUS resources are now reclaimed in the \fIubareset\fP routine prior to calling individual device driver reset routines \- this implies driver reset routines should no longer free up allocated UNIBUS resources; new routines for mapping UNIBUS memory into the virtual address space of a process have been added to support the Ikonas device driver; changes to fix the race condition described above in the RK07 device driver; processes awaiting UNIBUS map registers now sleep on a different event than those waiting for buffered data paths .IP \fBuda.c\fP 10 the problem with multiplexing buffered data paths on an 11/750 has been fixed; a bug in the setup of the \fIui_dk\fP field has been fixed; now properly defines the field indicating the disk transfer rate; changes for \fIuio\fP processing and swap space configuration .IP \fBup.c\fP 10 now supports ECC correction and bad sector forwarding; significant changes have been made to make configuration of various disk drives simple (by probing the holding register and using the resultant value indicating the number of tracks on the disk); the race condition described under rk.c has been fixed; references to UNIBUS map registers are now done with longword instructions so the device driver does not cause the system to crash when an ECC or bad sector error occurs on a disk attached to a 730 UNIBUS; the upSDIST/upRDIST parameters which control the use of search and seek operations on controllers with multiple drives have been made drive dependent; a bug whereby the probe routine would belive certain non-existant drives were present has been fixed; changes for \fIuio\fP processing and swap space configuration .IP \fBva.c\fP 10 has been rewritten to honor the software support for exclusive access to the UNIBUS so that the device may coexist on the same UNIBUS with RK07 disk drives; the driver now works with controllers which have a GO bit pecific issues of access control and protection .IP \fBufs_inode.c\fP 17 inode management routines; in-core inodes are now hashed and cached; inode synchronization has been revamped since 4.1BSD to eliminate race conditions present in 4.1 .IP \fBufs_mount.c\fP 17 code related to demountable fildoc/misc/kchanges.4.2/3.5.t 444 3 12 7326 3161376640 10326 .NH 3 /sys/vax .PP The following files are new in 4.2BSD: .IP \fBcrt0.ex\fP 15 edit script for creating a profiled kernel .IP \fBframe.h\fP 15 copied from /usr/include .IP \fBin_cksum.c\fP 15 checksum routine for the DARPA Internet protocols .IP \fBparam.h\fP 15 machine-dependent portion of /sys/h/param.h .IP \fBpup_cksum.c\fP 15 checksum routine for PUP-I protocols .IP \fBrsp.h\fP 15 protocol definitions for communicating with a TU58 .IP \fBsys_machdep.c\fP 15 machine-dependent portion of the ``sys_*'' files of /sys/sys .IP \fBufs_machdep.c\fP 15 machine-dependent portion of the ``ufs_*'' files of /sys/sys .IP \fBvm_machdep.c\fP 15 machine-dependent portion of the ``vm_*'' files of /sys/sys .IP \fBvmparam.h\fP 15 machine-dependent portion of /sys/h/vmparam.h .PP The following files have been modified for 4.2BSD: .IP \fBLocore.c\fP 15 includes new definitions for linting the network and ipc code .IP \fBasm.sed\fP 15 now massages \fIinsque\fP, \fIremque\fP, and various routines which do byte swapping into assembly language .IP \fBautoconf.c\fP 15 handles MASSBUS drives which come on-line after the initial autoconfiguration process; sizes and configures swap space at boot time in addition to calculating the swap area allocation parameters \fIdmtext\fP, \fIdmmax\fP, and \fIdmmin\fP (which were manifest constants in 4.1BSD); calculates the disk partition offset for system dumps at boot time to take into account variable sized swap areas; now uses the per-driver array of standard control status register addresses when probing for devices on the UNIBUS; now allows MASSBUS tapes and disks to be wildcarded across controllers .IP \fBconf.c\fP 15 uses many ``local'' spaces for new and uncommon device drivers .IP \fBgenassym.c\fP 15 generates several new definitions for use in locore.s .IP \fBlocore.s\fP 15 includes code to vector software interrupts to protocol processing modules; assembly language assist routines for the console and UNIBUS TU58 cassette drives; a new routine, \fIFastreclaim\fP is a fast coding of a major path through the \fIpagein\fP routine; copyin and copyout now handle greater than 64Kbyte data copies and return EFAULT on failure; understands the new signal trampoline code; now contains code for draining terminal multiplexor silos at clock time; a bug where a the translation buffer was sometimes being improperly flushed during a \fIresume\fP operation has been fixed .IP \fBmachdep.c\fP 15 a bug which caused memory errors to not be reported on 11/750's has been fixed; has new code for handling the new signals; recovers from translation buffer parity fault machine checks apparently caused by substandard memory chips used in many 11/750's; includes optional code to pinpoint bad memory chips on Trendata memory boards; the machine check routine now calls the \fImemerr\fP routine to print out the memory controller status registers in case the fault occurred because of a memory error .IP \fBmem.c\fP 15 now has correct definitions to enable correctable memory error reporting on 11/750's: DEC documentation incorrectly specifies use of the ICRD bit .IP \fBpcb.h\fP 15 has changes related to the new signal trampoline code .IP \fBswapgeneric.c\fP 15 supports more devices which can be used as a generic root device; interacts with the new swap configuration code to size the swap area properly when running a generic system; understands the special ``swap on root'' device syntax used when installing the system .IP \fBtrap.c\fP 15 can be compiled with a SYSCALLTRACE define to allow system calls to be traced when the variable \fIsyscalltrace\fP is non-zero; .IP \fBtu.c\fP 15 includes (limited) support for the TU58 console cassette on the 11/750, sufficient for use in single-user mode; supports the use of the MRSP ROM on the 11/750. actually was present in all UNIBUS disk drivers); changes for \fIuio\fP and swap space configuration .IP \fBtm.c\fP 10 a typo which made the system crash with multiple slaves on a single controller has been fixed; an incorrect priority level change in the watchdog timer routine which caused the sdoc/misc/kchanges.4.2/3.6.t 444 3 12 2061 3142053576 10315 .NH 3 /sys/vaxmba .PP The following bug fixes and modifications have been applied to the MASSBUS device drivers: .IP \fBhp.c\fP 10 a large number of disk drives attached to second vendor disk controllers are now automatically recognized at boot time by probing the holding register and using disk geometry information to decide what kind of drive is present; the hpSDIST/hpRDIST parameters that control seek and search operations on controllers with multiple drives have been made a per-drive parameter; a bug where the sector number reported on a hard error was off by one has been fixed; the error recovery code now searches the bad sector table when a header CRC error occurs; the error recovery code now handles bad sectors on tracks which also have skip sectors; a bug in the handling of ECC errors has been fixed; many separate driver data structures have been consolidated into the software carrier structure; the driver handles the ML-11 solid-state disk .IP \fBmba.c\fP 10 now autoconfigures MASSBUS tapes and disks which ``come on-line'' after the initial boot MASSBUS tapes and disks to be wildcarded across controllers .IP \fBconf.c\fP 15 uses many ``local'' spaces for new and uncommon device drivers .IP \fBgenassym.c\fP 15 generates several new definitions for use in locore.s .IP \fBlocore.s\fP 15 includes code to vector software interrupts to protocol processing modules; assembly language assist routines for the console and UNIBUS TU58 cassette drives; a new routine, \fIFastreclaim\fP is a fast coding of a major doc/misc/uchanges.4.2/ 755 3 12 0 3650322462 7547 doc/misc/uchanges.4.2/1.t 444 3 12 14347 3143365175 10215 .SH .ce .LG Notable improvements .SM .sp .IP \s+1\(bu\s0 The file system organization has been redesigned to provide at least an order of magnitude improvement in disk bandwidth. .IP \s+1\(bu\s0 The system now provides full support for the DOD Standard TCP/IP network communication protocols. This support has been integrated into the system in a manner which allows the development and concurrent use of other communication protocols. Hardware support and routing have been isolated from the protocols to allow sharing between varying network architectures. Software support is provided for 10 different hardware devices including 3 different 10 Mb/s Ethernet modules. .IP \s+1\(bu\s0 A new set of interprocess communication facilities has replaced the old multiplexed file mechanism. These new facilities allow unrelated processes to exchange messages in either a connection-oriented or connection-less manner. The interprocess communication facilities have been integrated with the networking facilities (described above) to provide a single user interface which may be used in constructing applications which operate on one or more machines. .IP \s+1\(bu\s0 A new signal package which closely models the hardware interrupt facilities found on the VAX replaces the old signals and jobs library of 4.1BSD. The new signal package provides for automatic masking of signals, sophisticated signal stack management, and reliable protection of critical regions. .IP \s+1\(bu\s0 File names are now almost arbitrary length (up to 255 characters) and a new file type, symbolic link, has been added. Symbolic links provide a ``symbolic referencing'' mechanism similar to that found in Multics. They are interpolated during pathname expansion and allow users to create links to files and directories which span file systems. .IP \s+1\(bu\s0 The system supports advisory locking on files. Files can have ``shared'' or ``exclusive'' locks applied by processes. Multiple processes may apply shared locks, but only one process at any time may have an exclusive lock on a file. Further, when an exclusive lock is present on a file, shared locks are disallowed. Locking requests normally block a process until they can be completed, or they may be indicated as ``non-blocking'' in which case an error is returned if the lock can not be immediately obtained. .IP \s+1\(bu\s0 The group identifier notion has been extended to a ``group set''. When users log in to the system they are placed in all their groups. Access control is now done based on the group set rather than just a single group id. This has obviated the need for the newgrp command. .IP \s+1\(bu\s0 Per-user, per-filesystem disk quotas are now part of the system. Soft and hard limits may be specified on a per user and per filesystem basis to control the number of files and amount of disk space allocated to a user. Users who exceed a soft limit are warned and if, after three login sessions, their disk usage has not dropped below the soft limit, their soft limit is treated as a hard limit. Utilities exist for the creation, maintenance, and reporting of disk quotas. .IP \s+1\(bu\s0 System time is now available in microsecond precision and millisecond accuracy. Users are provided with 3 high-resolution timers which may be set up to automatically reload on expiration. The timers operate in real time, user time, and process virtual time (for profiling). All statistics and times returned to users are now given in a standard format with seconds and microseconds separated. This eliminates program dependence on the line clock frequency. .IP \s+1\(bu\s0 A new system call to rename files in the same file system has been added. This call eliminates many of the anomalies which could occur in older versions of the system due to lack of atomicity in removing and renaming files. .IP \s+1\(bu\s0 A new system call to truncate files to a specific length has been added. This call improves the performance of the Fortran I/O library. .IP \s+1\(bu\s0 Swap space configuration has been improved by allowing multiple swap partition of varying sizes to be interleaved. These partitions are sized at boot time to minimize configuration dependencies. .IP \s+1\(bu\s0 The Fortran 77 compiler and associated I/O library have undergone extensive changes to improve reliability and performance. Compilation may, optionally, include optimization phases to improve code density and decrease execution time. .IP \s+1\(bu\s0 A new symbolic debugger, dbx, replaces the old symbolic debugger sdb. Dbx works on both C and Fortran 77 programs and allows users to set break points and trace execution by source code line numbers, references to memory locations, procedure entry, etc. Dbx allows users to reference structured and local variables using the program's programming language syntax. .IP \s+1\(bu\s0 The delivermail program has been replaced by sendmail. Sendmail provides full internetwork routing, domain style naming as defined in the DARPA Request For Comments document #833, and eliminates the compiled in configuration database previously used by delivermail. Further, sendmail uses the DARPA standard Simple Mail Transfer Protocol (SMTP) for mail delivery. .IP \s+1\(bu\s0 The system contains a new line printer system. Multiple line printers and spooling queues are supported through a printer database file. Printers on serial lines, raster printing devices, and laser printers are supported through a series of filter programs which interface to the standard line printer ``core programs''. A line printer control program, lpc, allows printers and printer queues to be manipulated. Spooling to remote printers is supported in a transparent fashion. .IP \s+1\(bu\s0 Cu has been replaced by a new program tip. Tip supports a number of auto-call units and allows destination sites to be specified by name rather than phone number. Tip also supports file transfer to non-UNIX machines and can be used with sites which require half-duplex and/or odd-even parity. .IP \s+1\(bu\s0 Uucp now supports many auto-call units other than the DN11. Spooling has been reorganized into multiple directories to cut down on system overhead. Several new utilities and shell scripts exist for use in adminstrating uucp traffic. Operation has been greatly improved by numerous bug fixes. .br .ne 10 .LP .LP lesystem basis to control the number of files and amount of disk space allocated to a user. Users who exceed a soft limit are warned and if, after three login sessions, their disk usage has not dropped below the soft limit, their soft limit is treated as a hard limit. Utilities doc/misc/uchanges.4.2/2.t 444 3 12 40776 3143365275 10224 .ce .LG .B "Bug fixes and changes" .SM .sp .LP .LP .LG .ce Section 1 .SM .sp .PP .de BP .IP \fB\\$1\\fR 11n .. .BP adb Support has been added for interpreting kernel data structures on a running system and in post mortem crash dumps created by savecore. A .B \-k option causes adb to map addresses according to the system and current process page tables. A new command, $p, can be used to switch between process contexts. Many scripts are available for symbolically displaying kernel data structures, searching for a process' context by process ID, etc. A new document, ``Using ADB to Debug the UNIX Kernel'', supplies hints in the use of adb with system crash dumps. .BP addbib Is a new utility for creating and extending bibliographic data bases for use with refer. .BP apply Is a new program which may be used to apply a command to a set of arguments. .BP ar Has a new key, `o', for preserving a file's modification time when it is extracted from an archive. .BP cc Supports the additional symbol information used by dbx. The old symbol information, used by the defunct sdb debugger, is available by specifying the .B \-go flag. A new flag, \fB\-pg\fP, creates executable programs which collect profiling information to be interpreted by the new gprof program. A bug in the C preprocessor, which caused line numbers to be incorrect for macros with formal parameters with embedded newlines has been fixed. The C preprocessor now properly handles hexadecimal constants in ``#if'' constructs and checks for missing ``#endif'' statements. .BP chfn Now works interactively in changing a user's information field in the password file. .BP chgrp Is now in section 1 and may be executed by anyone. Users other than the super-user may change group ownership of a file they own to any group in their group access list. .BP cp Now has a .B \-r flag to copy recursively down a file system tree. .BP csh A bug which caused backquoted commands to wedge the terminal when interrupted has been fixed. Job identifiers are now globbed. A bug which caused the ``wait'' command to uninteruptible in certain cases has been fixed. History may now be saved and restored across terminal sessions with the \fIsavehist\fP variable. The newgrp command has been deleted due to the new group facilities. .BP ctags Now handles C \fBtypedefs\fP. .BP cu Exists only in the form of a ``compatible front-end'' to the new tip program. .BP dbx Is a new symbolic debugger replacing sdb. Dbx handles C and Fortran programs. .BP delivermail .br Has been replaced by the new sendmail program. .BP df Understands the new file system organization and reports all disk space totals in kilobytes. .BP du Now reports disk usage in kilobytes and uses the new field in the inode structure which contains the actual number of blocks allocated to a file to increase accuracy of calculations. .BP dump Has been moved to section 8. .BP error Has been taught about the error message formats of troff. .BP eyacc A bug which caused the generated parser to not recognize valid null statements has been fixed. .BP f77 Has undergone major changes. .IP The i/o library has been extensively tested and debugged. Sequential files are now opened at the \s-2\fBBEGINNING\fP\s0 by default; previously they were opened at the end. .IP Compilation of data statements has been substantially sped up. Significant new optimization is optionally available (this is still a bit buggy and should be used with caution). Even without optimization, however, single precision computations execute much faster. .IP The new debugger, dbx, has replaced sdb for debugging Fortran programs; sdb is no longer supported. .IP Files with ``.F'' suffixes are preprocessed by the C preprocessor. This allows C-style ``#include'' and ``#define'' constructs to be used. The compiler has been modified to print error messages with sensible line numbers. Make also understands the ``.F'' suffix. Note that when using the C preprocessor, the 72 column convention is not followed. .IP The .B \-I option for specifying short integers has been changed to \fB\-i\fP. The .B \-I option is now used to specify directory search paths for ``#include'' statements. A .B \-pg option for creating executable images which collect profiling information for gprof has been added. .BP fed Is a font editor of dubious value. .BP file Now understands symbolic links. .BP find Has a new .B \-type value, `l', for finding symbolic links. .BP fp Is a new compiler/interpreter for the Functional Programming language. A supporting document is present in Volume 2C of the UNIX Programmer's Manual. .BP fpr Is a new program for printing Fortran files with embedded Fortran carriage controls. .BP fsplit Is a new program for splitting a multi-function Fortran file into individual files. .BP ftp Is a new program which supports the ARPA standard File Transfer Protocol. .BP gcore Is a new program which creates a core dump of a running process. .BP gprof Is a new profiling tool which displays execution time for the dynamic call graph of a program. Gprof works on C, Fortran, and Pascal programs compiled with the .B \-pg option. Gprof may also be used in creating a call graph profile for the operating system. A supporting document, ``gprof: A Call Graph Execution Profiler" is included in Volume 2C of the UNIX Programmer's Manual. .BP groups Is a new program which displays a user's group access list. .BP hostid Is a new program which displays the system's unique identifier as returned by the new gethostid system call. The super-user uses this program to set the host identifier at boot time. .BP hostname Is a new program which displays the system's name as returned by the new gethostname system call. The super-user uses this program to set the host name at boot time. .BP indent Is a new program for formatting C program source. .BP install Is a shell script used in installing software. .BP iostat Now reports kilobytes per second transferred for each disk. This is useful as the unit of information transferred is no longer a constant one kilobytes. .BP last Now displays the remote host from which a user logged in (when accessing a machine across a network). The pseudo user ``ftp'' may be specified to find out information about FTP file transfer sessions. .BP lastcomm Now displays flags for each command indicating if the program dumped core, used PDP-11 mode, executed with a set-user-ID, or was created as the result of a fork (with no following exec). .BP learn Now has lessons for vi (this is user contributed software which is not part of the standard system). .BP lint Has a new .B \-C flag for creating lint libraries from C source code. Has improved type checking on static variables. .BP lisp Has been ported to several 68000 UNIX systems, the relevant code is included in the distribution. A new vector data type and a form of ``closure'' have been added. .BP ln Has a new flag, \fB\-s\fP, for creating symbolic links. .BP login Has been extensively modified for use with the rlogind and telnetd network servers. .BP lpq Is totally new, see lpr. .BP lpr And its related programs are totally new. The line printer system supports multiple printers of many different characteristics. A master data base, /etc/printcap, describes both local printers and printers accessable across a network. A document describing the line printer system is now part of Volume 2C of the UNIX Programmer's Manual. .BP lprm Is totally new, see lpr. .BP ls Has been rewritten for the new directory format. It understands symbolic links and uses the new inode field which contains the actual number of blocks allocated to a file when the .B \-s flag is supplied. Many rarely used options have been deleted. .BP m4 A bug which caused m4 to dump core when keywords were undefined then redefined has been fixed. .BP Mail Now supports mail folders in the style of the Rand MH system. Has been reworked to cooperate with sendmail in understanding the new mail address formats. Allows users to defined message header fields which are not be displayed when a messages is viewed. Many other changes are described in a revised version of the user manual. .BP make Understands not to unlink directories when interrupted. Understands the new ``.F'' suffix for Fortran source files which are to be run through the C preprocessor. Has a new predefined macro MFLAGS which contains the flags supplied to make on the command line (useful in creating hierarchies of makefiles). .BP mkdir Now uses the mkdir system call to run faster. .BP mt Has a new command, status, which shows the current state of a tape drive. .BP mv Has been rewritten to use the new rename system call. As a result, multiple directories may now be moved in a single command, the restrictions on having ``..'' in a pathname are no longer present, and everything runs faster. .BP net And all related Berknet programs are no longer part of the standard distribution. These programs live on in /usr/src/old for those who can not do without them. .BP netstat Is a new program which displays network statistics and active connections. .BP oldcsh No longer exists. .BP od Has gobs of new formats options. .BP pagesize Is a new program which prints the system page size for use in constructing portable shell scripts. .BP passwd Now reliably interlocks with chsh, chfn, and vipw, in guarding against concurrent updates to the password file. .BP pc/pi \fBFor\fP loops are now done according to the standard. Files may now be dynamically allocated and disposed. Records and variant records are now aligned to correspond to C structures and unions (this was falsely claimed before). Several obscure bugs involving formal routines have been fixed. Three new library routines support random access file i/o, see /usr/include/pascal for details. .BP pc (only) \fBFor\fP loop variables and \fBwith\fP pointers are now allocated to registers. Separate compilation type checking can now be done without reference to the source file; this permits movement (including distribution) of .o files and creation of libraries. Display entries are saved only when needed (a speed optimization). .BP pdx Is a new debugger for use with pi. Pdx is invoked automatically by the interpreter if a run-time error is encountered. Future work is planned to extend the new dbx debugger to understand code generated by the Pascal compiler pc. .BP ps Has been changed to work with the new kernel and is no longer dependent on system page size. All process segment sizes are now shown in kilobytes. Understands that the old ``using new signal facilities'' bit in the process structure now means ``using old 4.1BSD signal facilities''. .BP pwd Now simply calls the \fIgetwd\fP\|(3) routine. .BP rcp Is a new program for copying files across a network. The complete syntax of cp is supported, including recursive directory copying. .BP refer Has had many bugs fixed in it and the associated \-ms macro package support made to work. .BP reset Now resets all the special characters to the system defaults specified in the include file . .BP rlogin Is a new program for logging in to a machine across a network. Rlogin uses the files /etc/hosts.equiv and .rhosts in the users login directory to allow logins to be performed without a password. Rlogin supports proper handling of ^S/^Q and flushing of output when an interrupt is typed at the terminal. Its `~' escape sequences are reminiscent of the old cu program (as it is based on the same source code). .BP rmdir Now uses the rmdir system call to run more efficiently and not require root privileges. Unfortunately, this means arguments which end in one or more ``/'' characters are no longer legal. .BP roffbib Is a new program for running off bibiliographic databases. .BP rsh Is a new program which supports remote command execution across a network. .BP ruptime Is a new program which displays system status information for clusters of machines attached to a local area network. .BP rwho Is a new program which displays users logged in on clusters of machines attached to a local area network. .BP script Has been rewritten to use pseudo-terminals. This allows the C shell job control facilities (among other things) to be used while scripting. A side effect of this change is that scripts now contain everything typed at a terminal. .BP sdb Has been replaced by dbx; it still lives on in /usr/src/old for those with a personal attachment. .BP sendbug Is a new command for submitting bug reports on 4.2BSD in a standard format suitable for automatic filing by the bugfiler program. .BP sh No longer has a newgrp command due to the new groups facilities. .BP sortbib Is a new command for sorting bibliographic databases. .BP strip Has been made blindingly fast by using the new truncate system call (thereby eliminating the old method of copying the file). .BP stty The default system erase, kill, and interrupt characters have been made the DEC standard values of DEL (`^?'), `^U', and \&`^C'. This is not expected to gain much popularity, but was done in the interest of compatibility with many other standard operating systems. .BP su Has been changed to do a ``full login'' when starting up the subshell. A new flag, \fB\-f\fP, does a ``fast'' su for when a system is heavily loaded. Extra arguments supplied to su are now treated as a command line and executed directly instead of creating an interactive shell. .BP sysline Is a new program for maintaining system status information on terminals which support a ``status line''; a poor man's alternative to a window manager (or emacs). .BP tail Has a larger buffer so that ``tail \-r'' and similar show more. .BP talk Is a new program which provides a screen-oriented write facility. Users may be ``talked to''across a network, though satellite response times have indicated overseas conversations are still best done by phone. Can be very obnoxious when engaged in important work. .BP tar Now allocates its internal buffers dynamically so that the block size can be specified to be very large for streaming tape drives. Also, now avoids many core-core copy operations. Has a new .B \-C option for forcing chdir operations in the middle of operation (thereby allowing multiple disjoint subtrees to be easily placed in a single file, each with short relative pathnames). Has a new flag, `B', for forcing 20 block records to be read and written; useful in joining two tar commands with a remote shell to transfer large amounts of data across a network. .BP telnet Is a new program which supports the ARPA standard Telnet protocol. .BP tip Replaces cu as the standard mechanism for connecting to machines across a phone line or through a hardwired connection. Tip uses a database of system descriptions, supports many different auto-call units, and understands many nuances required to talk to non-UNIX systems. Files may be transferred to and from non-UNIX systems in a simple fashion. .BP ul A bug which sometimes caused an extra blank line to be printed after reaching end of file has been fixed. .BP uucp And related programs have been extensively enhanced to support many different auto-call units and multiple spooling directories (among other things). A large number of bugs and performance enhancements have been made. .BP uusnap Is a new program which gives a snap-shot of the uucp spooling area. .BP vfontinfo Is a program used to inspect and print information about fonts. .BP vgrind Now uses a regular expression language to describe formatting. A .B \-f flag forces vgrind to act as a filter, generating output suitable for inclusion in troff and/or nroff documents. Language descriptions exist for C, Pascal, Model, C shell, Bourne shell, Ratfor, and Icon programs. .BP vi A bug which caused the ^B command to place the cursor on the wrong line has been fixed. A bug which caused vi to believe a file had been modified when an i/o error occurred has been fixed. A bug which allowed ``hardtabs'' to be set to 0 causing a divide by zero fault has been fixed. .BP vlp Is a new program for pretty printing Lisp programs. .BP vmstat Has had one new piece of information added to .B \-s summary, the number of fast page reclaims performed. The fields related to paging activity are now all given in kilobytes. .BP vpr And associated programs for spooling and printing files on Varian and Versatec printers are now shell scripts which use the new line printer support. .BP vwidth Is a new program for making troff width tables for a font. .BP wc Is once again identical to the version 7 program. That is, the \fB\-v\fP, \fB\-t\fP, \fB\-b\fP, \fB\-s\fP, and \fB\-u\fP flags have been deleted. .BP whereis Understands the new directory organization for the source code. .BP which Now understands how to handle aliases. .BP who Now displays the remote machine from which a user is logged in. redoc/misc/uchanges.4.2/0.t 444 3 12 1037 3142670520 10154 .de IR \fI\\$1\fR\\$2\\fR\\fR .. .TL Bug fixes and changes in 4.2BSD .sp July 28, 1983 .AU Samuel J. Leffler .AI Computer Systems Research Group Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 (415) 642-7780 .AB This document describes briefly the changes in the Berkeley system for the VAX between the 4.1BSD distribution of April 1981 and this, its revision of July 1983. It attempts to summarize, without going into great detail, the changes which have been made. .AE different characteristics. A master data base, /c/printcap, describes both local printers and printers accessable across a network. A document describing the line printer system is now part of Volume 2C of the UNIX Programmer's Manual. .BP lprm Is totally new, see lpr. .BP ls Has been rewritten for the new directory format. It understands symbolic links and uses the new inode field which contains the actual number of blocks allocated to a file when the .B \-s flag is supdoc/misc/uchanges.4.2/3.t 444 3 12 32353 3142675232 10211 .SH .LG .ce Section 2. .SM .sp .PP The most important change in section 2 is that the documentation has been significantly improved. Manual page entries now indicate the possible error codes which may be returned and how to interpret them. The introduction to section 2 now includes a glossary of terms used throughout the section. The terminology and formatting have been made consistent. Many manual pages now have ``NOTES'' or ``CAVEATS'' providing useful information heretofore left out for the sake of brevity. As always the manual pages are still for the programmer; they are terse and extremely concise. The ``4.2BSD System Manual'' is likewise concise, but a bit more verbose in providing an overall picture of the system facilities. .PP With regard to changes in the facilities, these fall into three major categories: interprocess communication, signals, and file system related calls. The interprocess communication facilities center around the \fIsocket\fP mechanism described in the ``A 4.2BSD Interprocess Communication Primer''. The new signals do not have an accompanying document, so the manual pages should be studied carefully. The new file system calls pretty much stand on their own, with a late section of the document ``A Fast File System for UNIX'' supplying a quick overview of the most important new file system facilities. Finally, it should be noted that the job control facilities introduced in 4.1BSD have been adopted as a standard part of 4.2BSD. No special distinction is given to these calls (in 4.1BSD they were earmarked ``2J''). .PP Many of the new system calls have both a ``set'' and a ``get'' form. Only the ``get'' forms are indicated below. Consult the manual for details on the ``set'' form. .BP intro Has been updated to reflect the new list of possible error codes. Now includes a glossary of terminology used in section 2. .BP access Now has symbolic definitions for the \fImode\fP parameter defined in <\fIsys/file.h\fP>. .BP bind Is a new interprocess communication system call for binding names to sockets. .BP connect Is a new interprocess communication system call for establishing a connection between two sockets. .BP creat Has been obsoleted by the new \fIopen\fP interface. .BP fchmod Is a new system call which does a \fIchmod\fP operation given a file descriptor; useful in conjunction with the new advisory locking facilities. .BP fchown Is a new system call which does a \fIchown\fP operation given a file descriptor; useful in conjunction with the new advisory locking facilities. .BP fcntl Is a new system call which is useful in controlling how i/o is performed on a file descriptor (non-blocking i/o, signal drive i/o). This interface is compatible with the System III fcntl interface. .BP flock Is a new system call for manipulating advisory locks on files. Locks may be shared or exclusive and locking operations may be indicated as being non-blocking, in which case a process is not blocked if the requested lock is currently in use. .BP fstat Now returns a larger stat buffer; see below under stat. .BP fsync Is a new system call for synchronizing a file's in-core state with that on disk. Its intended use is in building transaction oriented facilities. .BP ftruncate Is a new system call which does a \fItruncate\fP operation given a file descriptor; useful in conjunction with the new advisory locking facilities. .BP getdtablesize Is a new system call which returns the size of the descriptor table. .BP getgroups Is a new system call which returns the group access list for the caller. .BP gethostid Is a new system call which returns the unique (hopefully) identifier for the current host. .BP gethostname Is a new system call which returns the name of the current host. .BP getitimer Is a new system call which gets the current value for an interval timer. .BP getpagesize Is a new system call which returns the system page size. .BP getpriority Is a new system call which returns the current scheduling priority for a specific process, a group of processes, or all processes owned by a user. In the latter two cases, the priority returned is the highest (lowest numerical value) enjoyed by any of the specified processes. .BP getrlimit Is a new system call which returns information about a resource limit. The getrlimit and setrlimit calls replace the old vlimit call from 4.1BSD. .BP getrusage Is a new system call which returns information about resource utilitization of a child process or the caller. This call replaces the vtimes call of 4.1BSD. .BP getsockopt Is a new interprocess communication system call which returns the current options present on a socket. .BP gettimeofday Is a new system call which returns the current Greenwich date and time, and the current timezone in which the machine is operating. Time is returned in seconds and microseconds since January 1, 1970. .BP ioctl Has been changed to encode the size of parameters and whether they are to be copied in, out, or in and out of the user address space in the \fIrequest\fP. The symbolic names for the various ioctl requests remain the same, only the numeric values have changed. A number of new ioctls exist for use with sockets and the network facilities. The old LINTRUP request has been replaced by a call to fcntl and the SIGIO signal. .BP killpg Has now been made a system call; in 4.1BSD it was a library routine. .BP listen Is a new interprocess communication system call used to indicate a socket will be used to listen for incoming connection requests. .BP lseek Now has symbolic definitions for its \fIwhence\fP parameter defined in <\fIsys/file.h\fP>. .BP mkdir Is a new system call which creates a directory. .BP mpx The multiplexed file facilities are no longer part of the system. They have been replaced by the socket, and related, system calls. .BP open Is different, now taking an optional third parameter and supporting file creation, automatic truncation, automatic append on write, and ``exclusive'' opens. The open interface has been made compatible with System III with the exception that non-blocking opens on terminal lines requiring carrier are not supported. .BP profil Now returns statistical information based on a 100 hz clock rate. .BP quota Is a new system call which is part of the disk quota facilities. Quota is used to manipulate disk quotas for a specific user, as well as perform certain random chores such as syncing quotas to disk. .BP read Now automatically restarts when a read on a terminal is interrupted by a signal before any data is read. .BP readv Is a new system call which supports scattering of read data into (possibly) disjoint areas of memory. .BP readlink Is a new system call for reading the value of a symbolic link. .BP recv Is a new interprocess communication system call used to receive a message on a connected socket. .BP recvfrom Is a new interprocess communication system call used to receive a message on a (possibly) unconnected socket. .BP recvmsg Is a new interprocess communication system call used to receive a message on a (possibly) unconnected socket which may have access rights included. When using on-machine communication, recvmsg and sendmsg may be used to pass file descriptors between processes. .BP rename Is a new system call which changes the name of an entry in the file system (plain file, directory, character special file, etc.). Rename has an important property in that it guarantees the target will always exist, even if the system crashes in the middle of the operation. Rename only works with source and destination in the same file system. .BP rmdir Is a new system call for removing a directory. .BP select Is a new system call (mainly for interprocess communication) which provides facility for synchronous i/o multiplexing. Sets of file descriptors may be queried for readability, writability, and if any exceptional conditions are present (such as out of band data on a socket). An optional timeout may also be supplied in which case the select operation will return after a specified period of time should no descriptor satisfy the requests. .BP send Is a new interprocess communication system call for sending a message on a connected socket. .BP sendto Is a new interprocess communication system call for sending a message on a (possibly) unconnected socket. .BP sendmsg Is a new interprocess communication system call for sending a message on a (possibly) unconnected socket which may included access rights. .BP setquota Is a new system call for enabling or disabling disk quotas on a file system. .BP setregid Is a new system call which replaces the 4.1BSD setgid system call. Setregid allows the real and effective group ID's of a process to be set separately. .BP setreuid Is a new system call which replaces the 4.1BSD setuid system call. Setreuid allows the real and effective user ID's of a process to be set separately. .BP shutdown Is a new interprocess communication system call for shutting down part or all of full-duplex connection. .BP sigblock Is a new system call for blocking signals during a critical section of code. .BP sigpause Is a new system call for blocking a set of signals and then pausing indefinitely for a signal to arrive. .BP sigsetmask Is a new system call for setting the set of signals which are currently blocked from delivery to a process. .BP sigstack Is a new system call for defining an alternate stack on which signals are to be processed. .BP sigsys Is no longer supported. The new signal facilities are a superset of those which sigsys provided. .BP sigvec Is the new system call interface for defining signal actions. For each signal (except SIGSTOP and SIGKILL), sigvec allows a ``signal vector'' to be defined. The signal vector is comprised of a handler, a mask of signals to be blocked while the handler executes, and an indication of whether or not the handler should execute on a signal stack defined by a sigstack call. The old signal interface is provided as a library routine with several important caveats. First, signal actions are no longer reset to their default value after a signal is delivered to a process. Second, while a signal handler is executing the signal which is being processed is blocked until the handler returns. To simulate the old signal interface, the user must explicitly reset the signal action to be the default value and unblock the signal being processed. .IP Four new signals have been added for the interprocess communication and interval timer facilities. SIGIO is delivered to a process when an fcntl call enables signal driven i/o and input is present on a terminal (and a signal handler is defined). SIGURG is delivered when an urgent condition arises on a socket (and a handler is defined). SIGPROF and SIGVTALRM are associated with the ITIMER_PROF and ITIMER_VIRTUAL interval timers, and delivered to a process when such a timer expires (the SIGALRM signal is used for the ITIMER_REAL interval timer). The old SIGTINT signal is replaced by SIGIO. .BP socket Is a new interprocess communication system call for creating a socket. .BP socketpair Is a new interprocess communication system call for creating a pair of connected and unnamed sockets. .BP stat Now returns a larger structure. New fields are present indicating the optimal blocking factor in which i/o should be performed (for disk files the block size of the underlying file system) and the actual number of disk blocks allocated to the file. Inode numbers are now 32-bit quantities. Several spare fields have been allocated for future expansion. These include space for 64-bit file sizes and 64-bit time stamps. Two new file types may be returned, S_IFLNK for symbolic links, and S_IFSOCK for sockets residing in the file system. .BP swapon Has been renamed from the vswapon call of 4.1BSD. .BP symlink Is a new system call for creating a symbolic link. .BP truncate Is a new system call for truncating a file to a specific size. .BP unlink Should no longer be used for removing directories. Directories should only be created with mkdir and removed with rmdir. Creating hard links to directories can cause disastrous results. .BP utime Is defunct, replaced by utimes. .BP utimes Is a new system call which uses the new time format in setting the accessed and updated times on a file. .BP vfork Is still present, but definitely on its way out. Future plans include implementing fork with a scheme in which pages are initially shared read-only. On the first attempt by a process to write on a page the parent and child would receive separate writable copies of the page. .BP vlimit Is no longer supported. Vlimit is replaced by the getrlimit and setrlimit calls. .BP vread Is no longer supported in the system. .BP vswapon Has been renamed swapon. .BP vtimes Is no longer supported. Vtimes is replaced by the getrusage call. .BP vwrite Is no longer supported in the system. .BP wait Now is automatically restarted when interrupted by a signal before status could be returned. .BP wait3 Returns resource usage in a different format than that which was returned in 4.1BSD. This structure is compatible with the new getrusage system call. Wait3 is now automatically restarted when interrupted by a signal before status could be returned. .BP write Now is automatically restarted when writing on a terminal and interrupted by a signal before any i/o was completed. .BP writev Is a new version of the write system call which supports gathering of data in (possibly) discontiguous areas of memory call; in 4.1BSD it was a library routine. .BP listen Is a new interprocess communication system call used to indicate a socket will be used to listen for incoming connection requests. .BP lseek Now has symbolic definitions for its \fIwhence\fP parameter defined in <\fIsys/fildoc/misc/uchanges.4.2/4.t 444 3 12 10557 3147603416 10214 .SH .LG .ce Section 3 .SM .sp .PP The section 3 documentation has been reorganized to group manual entries by library. Introductory sections for each logical and physical library contain lists of the entry points in the library. .PP A number of routines which had been system calls under 4.1BSD are now user-level library routines in 4.2BSD. These routines have been grouped under section ``3C'' headings, ``C'' for compatibility. Further, certain routines present in the standard C run-time library which do not easily categorize as part of one of the standard libraries, have been group under ``3X'' headings. .BP curses A number of bug fixes have been incorporated, and the documentation has been revised. .BP stdio The standard i/o library has been modified to block i/o operations to disk files according to the block size of the underlying file system. This is accomplished using the new \fIst_blksize\fP value returned by \fIfstat\fP. The resultant performance improvement is significant as the old 1 kilobyte buffer size often resulted in 7 memory-to-memory copy operations by the system on 8 kilobyte block file systems. .IP End-of-file marks now ``stick''. That is, all input requests on a stdio channel after encountering end-of-file will return end-of-file until a \fIclearerr\fP call is made. This has implications for programs which use stdio to read from a terminal and do not process end-of-file as a terminating keystroke. .IP Two new functions may be used to control i/o buffering. The \fIsetlinebuf\fP routine is used to change \fBstdout\fP or \fBstderr\fP from block buffered or unbuffered to line buffered. The \fIsetbuffer\fP routine is an alternate form of \fIsetbuf\fP which can be used after a stream has been opened, but before it is read or written. .BP bstring Three new routines, \fIbcmp\fP, \fIbcopy\fP, and \fIbzero\fP have been added to the library. These routines use the VAX string instructions to manipulate binary byte strings of a known size. .BP ctime Now uses the \fIgettimeofday\fP system call and supports time conversion in six different time zones. Daylight savings calculations are also performed in each time zone when appropriate. .BP isprint Now considers space a printing character; as the manual page has always indicated. .BP directory Is a new directory interface package which provides a portable interface to reading directories. A version of this library which operates under 4.1BSD is also available. .BP getpass Now properly handles being unable to open /dev/tty. .BP getwd Has been moved from the old jobs library to the standard C run-time library. It now returns an error string rather than printing on the standard error when unable to decipher the current working directory. .BP perror Now uses the writev system call to pass all its arguments to the system in a single system call. This has profound effects on programs which transmit error messages across a network. .BP psignal And sys_siglist are routines for printing signal names in an equivalent manner to perror. .BP qsort Has been greatly sped up by choosing a random element with which to apply its divide and conquer algorithm. .BP random Is a successor to rand which generates much better random numbers. The old rand routine is still available and most programs have not been switched over to random as doing so would make certain facilities such encrypted mail unable to operate on existing data files. .BP setjmp And longjmp now save and restore the signal mask so that non-local exit from a signal handler is transparent. The old semantics are available with _setjmp and _longjmp. .BP net Is a new set of routines for accessing database files for the DARPA Internet. Four databases exist: one for host names, one for network names, one for protocol numbers, and one for network services. The latter returns an Internet port and protocol to be used in accessing a given network service. .IP An additional collection of routines, all prefaced with ``inet_'' may be used to manipulate Internet addresses, and interpret and convert between Internet addresses and ASCII representations in the Internet standard ``dot'' notation. .IP Finally, routines are available for converting 16 and 32 bit quantities between host and network order (on high-ender machines these routines are defined to be noops). .BP fstab The routines for manipulating /etc/fstab have been rewritten to return arbitrary length null-terminated strings. n grouped under section ``3C'' headings, ``C'' for compatibility. Further, certain routines present in the standard C run-time library which do ndoc/misc/uchanges.4.2/5.t 444 3 12 6133 3143115506 10162 .SH .LG .ce Section 4 .SM .sp .PP The system now supports the 11/730, the new 64Kbit RAM memory controllers for the 11/750 and 11/780, and the second UNIBUS adapter for the 11/750. Several new character and/or block device drivers have been added, as well as support for many hardware devices which are accessible only through the network facilities. Each new piece of hardware supported is listed below. .PP New manual entries in section 4 have been created to describe communications protocols, and network architectures supported. At present the only network architecture fully supported is the DARPA Internet with the TCP, IP, UDP, and ICMP protocols. .PP .BP acc A network driver for the ACC LH/DH IMP interface. .BP ad A driver for the Data Translation A/D converter. .BP arp The Address Resolution Protocol for dynamically mapping betwee 32-bit DARPA Internet addresses and 48-bit Xerox 10Mb/s Ethernet addresses. .BP css A network driver for the DEC IMP-11A LH/DH IMP interface. .BP dmc A network interface driver for the DEC DMC-11/DMR-11 point-to-point communications device. .BP ec A network interface driver for the 3Com 10Mb/s Ethernet controller. .BP en A network interface driver for the Xerox 3Mb/s experimental Ethernet controller. .BP hy A network interface driver for the Network Systems Hyperchannel Adapter. .BP ik A driver for an Ikonas frame buffer graphics device interface. .BP il A network interface driver for the Interlan 10Mb/s Ethernet interface. .BP imp A network interface driver for the standard 1822 interface to an IMP; used in conjunction with either acc or css hardware. .BP kg A driver for a KL-11/DL-11W used as an alternate real time clock source for gathering kernel statistics and profiling information. .BP lo A software loopback network interface for protocol testing and performance analysis. .BP pcl A network interface driver for the DEC PCL-11B communications controller. .BP ps A driver for an Evans and Sutherland Picture System 2 graphics device connected with a DMA interface. .BP pty Now includes a simple packet protocol to support flow controlled operation with mechanisms for flushing data to be read and/or written. .BP rx A driver for the DEC dual RX02 floppy disk unit. .BP ts Now supports TU80 tape drives. .BP tu The VAX-11/750 console cassette interface has been made somewhat usable when operating in single-user mode. The device driver employs assembly language pseudo-dma code for the reception of incoming packets from the cassette. .BP uda Now supports RA81, RA80, and RA60 disk drives. .BP un A network interface driver for an Ungermann-Bass network interface unit connected to the host via a DR-11W. .BP up Now supports ECC correction and bad sector handling. Also has improved logic for recognizing many different kinds of disk drives automatically at boot time. .BP uu A driver for DEC dual TU58 tape cartridges connected via a DL-11W interface. .BP va The Varian driver has been rewritten so that it may coexist on the same UNIBUS with devices which require exclusive use of the bus; i.e. RK07's. .BP vv A network interface driver for the Proteon proNET 10Mb/s ring network controller. BP random Is a successor to rand which generates much better random numbers. The old rand routine is still available and most programs have not been switched over to random as doing so would make certain facilities such encrypted mail unable to operate on existing data files. .BP setjmp And longjmp now save and restore the signal mask so that non-local exit from a signal handler is transparent. The old semantics aredoc/misc/uchanges.4.2/6.t 444 3 12 3253 3142676373 10200 .SH .LG .ce Section 5 .SM .sp .PP .BP dir Reflects the new directory format. .BP disktab Is a new file for maintaining disk geometry information. This is a temporary scheme until the information stored in this file for each disk is recorded on the disk pack itself. .BP dump Is a superset of that used in 4.1BSD. .BP fs Reflects the new file system organization. .BP gettytab Is a new file which idescribes terminal characteristics. Each entry in the file describes one of the possible arguments to the getty program. .BP hosts Is a database for mapping between host names and DARPA Internet host addresses. .BP mtab Has been modified to include a ``type'' field indicating whether the file system is mounted read-only, read-write, or read-write with disk quotas enabled. .BP networks Is a database for mapping between network names and DARPA standard network numbers. .BP phones Is a phone number data base for tip. .BP printcap Is a termcap clone for configuring printers. .BP protocols Is a database for mapping between protocol names and DARPA Internetwork standard protocol numbers. .BP remote Is a database of remote hosts for use with tip. .BP services Is a database in which DARPA Internet services are recorded. The information contained in this file indicates the name of the service, the protocol which is required to access it, and the port number at which a client should connect to utilize the service. .BP tar Is a new entry describing the format of a tar tape. .BP utmp Has been augmented to include a remote host from which a login session originates. The wtmp file is also used to record FTP sessions. .BP vgrindefs Is a file describing how to vgrind programs written in many languages. nel statistics and profiling information. .BP lo A software loopback network interface for protocol testing and performance analysis. .BP pcl A network interface driver for the DEC PCL-11B communications controller. .BP ps A driver for an Evans and Sutherland Picture System 2 graphics device connected with a DMA interface. .BP pty Now incldoc/misc/uchanges.4.2/7.t 444 3 12 3024 3161003744 10160 .SH .LG .ce Section 6 .SM .sp .BP aardvark Does not work because it requires the ``Dungeon Definition Language'' processor which is a binary image requiring 4.1BSD compatibility mode; the DDL source is still present. .BP aliens The aliens have returned home, the game is no longer included in the distribution. .BP backgammon Is now screen oriented. A new program, teachgammon, instructs the new backgammon player. The old version is now called btlgammon. .BP canfield Is a new game which plays a brand of the popular game of solitaire. Betting is included, the program cfscores may be used to find out your current debt. .BP ching Now pipes its output through more. Thus the hacker placates the seekers. .BP chase No longer exists because the binary does not work under 4.2BSD. .BP factor Is a rewrite in C of the old version 7 assembly language program which finds the prime factors of a number. .BP fortune Has yet more adages. .BP hangman Is now screen oriented. .BP mille Now plays more intelligently. .BP primes Is a rewrite in C of the old version 7 assembly language program which finds prime numbers within a specified range. .BP rogue Has been made more of a scoundrel. The supplementary document \&``A Guide to the Dungeons of Doom'', has been updated as well, and is now part of Volume 2C of the programmer's manual. .BP sail Is a new game which simulates sea battles of yore. The manual page is large enough to be a separate document and so has been left in its source directory. .BP trek The original trek has returned; trekies rejoice. n originates. The wtmp file is also used to record FTP sessions. .BP vgrindefs Is a file describing how to vgrind programs written in many languages. nel statistics and profiling information. .BP lo A software loopback network interface for protocol testing and performance analysis. .BP pcl A network interface driver for the DEC PCL-11B communications controller. .BP ps A driver for an Evans and Sutherland Picture System 2 graphics device connected with a DMA interface. .BP pty Now incldoc/misc/uchanges.4.2/8.t 444 3 12 1477 3142321663 10175 .SH .LG .ce Section 7 .SM .sp .BP hier Has been updated to reflect the reorganization to the user and system source. .BP mailaddr Is a new entry describing mail addressing syntax under sendmail (possibly too Berkeley specific). .BP ms The \-ms macros have been extended to allow automatic creation of a table of contents. Support for the refer preprocessor is improved. Several bugs related to multi-column output and floating keeps have been fixed. Extensions to the accent mark string set are available by including the .AM macro. Footnotes can now be automatically numbered (in superscript) by \-ms and referenced in the text with a \e** string register. The manual page includes a summary of important number and string registers. A new document \&``Changes to \-ms'' is included in Volume 2C of the programmer's manual. 7 assembly language program which finds the prime factors of a number. .BP fortune Has yet more adages. .BP hangman Is now screen oriented. .BP mille Now plays more intelligently. .BP primes Isdoc/misc/uchanges.4.2/9.t 444 3 12 26376 3143365414 10226 .SH .LG .ce Section 8 .SM .NL .PP Major changes affecting system operations include: .IP \(bu 3 The system now supports disk quotas. These allow system administrators to control users' disk space and file allocation on a per-file system basis. Utilities in this section exist for fixing, summarizing, and editing disk quota summary files. .IP \(bu 3 File systems are now made with a new program, newfs, which acts as front end to the old mkfs program. There no longer is a need to remember disk partition sizes, as newfs gets this information automatically from the /etc/disktab file. In addition, newfs attempts to lay out file systems according to the characteristics of the underlying disk drive (taking into account disk geometry information). .IP \(bu 3 DEC standard bad block forwarding is now supported on the RP06 and second vendor UNIBUS storage module disks. The bad144 program can now be used to mark sectors bad on many disks, though inclusion in the bad sector table is still somewhat risky due to requirements in the ordering of entries in the table. .IP \(bu 3 A new program, format, should be used to initialize all non-DEC storage modules before creating file systems. Format formats the sector headers and creates a bad sector table which is used in normal system operation. Format runs in a standalone mode. .IP \(bu 3 Getty has been rewritten to use a description file, /etc/gettytab. This allows sites to tailor terminal operation and configuration without making modifications to getty. .IP \(bu 3 The line printer system is totally new. A program to administer the operation of printers, lpc, is supplied, and printer accounting has been consolidated into a single program, pac. .IP \(bu 3 The program used to restore files from dump tapes is now called \fIrestore\fP. This name change was done to reinforce the fact that it is completely rewritten and operates in a very different way than the old restor program. Restore operates on mounted file systems and uses only normal file system operations to restore files. Versions of both dump and restore which operate across a network are included as rdump and rrestore. Dump and restore (and their network oriented counterparts) now perform so efficiently (mostly because of the new file system), that disk to disk backups should no longer be an attractive alternative. .sp .PP .BP arff No longer asks if you want to clobber the floppy when manipulating archives which are not on the floppy. .BP bad144 Has been modified to use the /etc/disktab file. Can be used to create bad sector tables for the DEC RP06 and several new Winchester disk drives. Consult the source code for details and use with extreme care. .BP badsect Has been modified to work with the new file system and now must interact with fsck to perform its duties. Consult the manual page for more information. .BP bugfiler Is a new program for automatic filing and acknowledgement of bug reports submitted by the sendbug program. Intended to operate with the Rand MH software which is part of the user contributed software. Used at Berkeley to process bug reports on 4.2BSD. .BP chgrp Has been moved to section 1. .BP comsat Has been changed to filter the noise lines in message headers when displaying incoming mail. No longer uses a second process watchdog as it uses the more reliable socket facilities instead of the old mpx facilities. .BP config Has been extensively modified to handle the new root and swap device specification syntax. A new document, \&``Configuring 4.2BSD UNIX Systems with Config'', describes its use, as well as other important information needed in configuring system images; this is part of Volume 2C of the programmer's manual. .BP diskpart Is a new program which may be used to generate disk partition tables according to the rules used at Berkeley. Can automatically generate entries required for device drivers and for the /etc/diskpart file. (Does not handle the new DEC DSA style drives properly because it tries to reserve space for the bad sector table.) .BP drtest Is a new standalone program which is useful in testing standalone disk device drivers and for pinpointing bad sectors on a disk. .BP dump Has been modified for the new file system organization. Mainly due to the new file system, it runs virtually at tape speed. Properly handles locking on the dumpdates file when multiple dumps are performed concurrently on the same machine. .BP dumpfs Is a new program for dumping out information about a file system such as the block size and disk layout information. .BP edquota Is a new program for editing user quotas. Operates by invoking your favorite editor on an ASCII representation of the information stored in the binary quota files. Edquota also has a ``replication'' mode whereby a quota template may be used to create quotas for a group of users. .BP fastboot Is a new shell script which reboots the system without checking the file systems; should be used with extreme care. .BP fasthalt Is a new script which is similar to fastboot. .BP format Is a new standalone program for formatting non-DEC storage modules and creating the appropriate bad sector table on the disk. .BP fsck Has been changed for the new file system. Fsck is more paranoid then ever in checking the disks, and has been sped up significantly. The accompanying Volume 2C document has been updated to reflect the new file system organization. .BP ftpd Is the DARPA File Transfer Protocol server program. It supports C shell style globbing of arguments and a large set of the commands in the specification (except the ABORT command!). .BP gettable Is a new program which can be used in aquiring up to date DARPA Internet host database files. .BP getty Has been rewritten to use a terminal description database, /etc/gettytab. Consult the manual entries for \fIgetty\fP\|(8) and \fIgettytab\fP\|(5) for more information. .BP icheck Has been modified for the new file system. .BP init Has been significantly modified to use the new signal facilities. In doing so, several race conditions related to signal delivery have been fixed. .BP kgmon Is a new program for controlling running systems which have been created with kernel profiling. Using kgmon, profiling can be turned on or off and internal profiling buffers can dumped into a gmon.out file suiitable for interpretation by gprof. .BP lpc Is a new program controlling line printers and their associated spooling queues. Lpc can be used to enable and disable printers and/or their spooling queues. Lpc can also be used to rearrange existing jobs in a queue. .BP lpd Has been rewritten and now runs as a ``server'', using the interprocess communication facilities to service print requests. A supplementary document describing the line printer system is now part of Volume 2C of the programmer's manual. .BP MAKEDEV .br Is a new shell script which resides in /dev and is used to create special files there. MAKEDEV keeps commands for creating and manipulating local devices in a separate file MAKEDEV.local. .BP mkfs Has been virtually rewritten for the new file system. The arguments supplied are very different. For the most part, users now use the newfs program when creating file systems. Mkfs now automatically creates the lost+found directory. .BP mount Now indicates file systems which are mounted read-only or have disk quotas enabled. .BP newfs Is a new front-end to the mkfs program. Newfs figures out the appropriate parameters to supply to mkfs, invokes it, and then, if necessary, installs the boot blocks necessary to bootstrap UNIX on 11/750's. .BP pac Is a new program which can be used to do printer accounting on any printer. It subsumes the vpac program. .BP quot Now uses the information in the inode of each file to find out how many blocks are allocated to it. .BP quotacheck .br Is a new program which performs consistency checks on disk quota files. Quotacheck is normally run from the /etc/rc.local file after a system is rebooted, though it can also be run on mounted on file systems which are not in use. .BP quotaon Is a new program which enables disk quotas on file systems. A link to quotaon, named quotaoff, is used to disable disk quotas on file systems. .BP pstat Has been modified to understand new kernel data structures. .BP rc Has had system dependent startup commands moved to /etc/rc.local. .BP rdump Is a new program to dump file systems across a network. .BP renice Has been rewritten to use the new setpriority system call. As a result, you can now renice users and process groups. .BP repquota Is a new program which summarizes disk quotas on one or more file systems. .BP restor No longer exists. A new program, restore, is its successor. .BP restore Replaces restor. Restore operates on mounted file systems; it contains an interactive mode and can be used to restore files by name. Restore has become almost as flexible to use as tar in retrieving files from tape. .BP rexecd Is a network server for the \fIrexec\fP\|(3X) library routine. Supports remote command execution where authentication is performed using user accounts and passwords. .BP rlogind Is a network server for the \fIrlogin\fP\|(1C) command. Supports remote login sessions where authentication is performed using privileged port numbers and two files, /etc/hosts.equiv and .rhosts (in each users home directory). .BP rmt Is a program used by rrestore and rdump for doing remote tape operations. .BP route Is a program for manually manipulating network routing tables. .BP routed Is a routing daemon which uses a variant of the Xerox Routing Information Protocol to automatically maintain up to date routing tables. .BP rrestore Is a version of restore which works across a network. .BP rshd Is a server for the \fIrsh\fP\|(1C) command. It supports remote command execution using privileged port numbers and the /etc/hosts.equiv and .rhosts files in users' home directories. .BP rwhod Is a server which generates and listens for host status information on local networks. The information stored by rwhod is used by the \fIrwho\fP\|(1C) and\fIruptime\fP\|(1C) programs. .BP rxformat Is a program for formatting floppy disks (this uses the \fIrx\fP device driver, not the console floppy interface). .BP savecore Has been modified to get many pieces of information from the running system and crash dump to avoid compiled in constants. .BP sendmail Is a new program replacing delivermail; it provides fully internetwork mail forwarding capabilities. Sendmail uses the DARPA standard SMTP protocol to send and receive mail. Sendmail uses a configuration file to control its operation, eliminating the compiled in description used in delivermail. .BP setifaddr Is a new program used to set a network interface's address. Calls to this program are normally placed in the /etc/rc.local file to configure the network hardware present on a machine. .BP syslog Is a server which receives system logging messages. Currently, only the sendmail program uses this server. .BP telnetd Is a server for the DARPA standard TELNET protocol. .BP tftpd Is a server for the DARPA Trivial File Transfer Protocol. .BP trpt Is a program used in debugging TCP. Trpt transliterates protocol trace information recorded by TCP in a circular buffer in kernel memory. .BP tunefs Is a program for modifying certain parameters in the super block of file systems. .BP vipw Is no longer a shell script and properly interacts with passwd, chsh, and chfn in locking the password file. Consult the manual page for more information. .BP bugfiler Is a new program for automatic filing and acknowledgement of bug reports submitted by the sendbug program. Intended to operate with the Rand MH software which is part of the user contributed softwadoc/misc/gprof/ 755 3 12 0 3650326071 6565 doc/misc/gprof/Makefile 444 3 12 1353 3650314747 10321 # # since vtroff is a cshell script, the semi-colon is needed # to get a cshell to execute the vtroff commands. # TROFF= vtroff HEADER = header.me FILES = abstract.me intro.me profiling.me gathering.me \ postp.tbl.eqn present.tbl refs.me MES = abstract.me intro.me profiling.me gathering.me \ postp.me present.me refs.me print: vpr-t vpr -t vpr-t troff: ${FILES} ${TROFF} -t -me ${HEADER} ${FILES}; vpr-t: $(FILES) ${TROFF} -t -me $(HEADER) $(FILES) >vpr-t; equations.eqn: equations.me eqn < equations.me > equations.eqn postp.tbl.eqn: postp.me tbl postp.me | eqn > postp.tbl.eqn present.tbl: present.me tbl < present.me > present.tbl sources: $(HEADER) $(MES) clean: rm -f vpr-t present.tbl postp.tbl.eqn equations.eqn rations. .BP route Is a program for manually manipulating network routing tables. .BP routed Is a routing daemon which uses a variant of the Xerox Routing Information Protocol to automatically maintain up to date routing tables. .BP rrestore Is a version of restore which worksdoc/misc/gprof/abstract.me 444 3 12 3164 3650314747 11011 \" @(#)abstract.me 1.6 3/15/82 .sp 1 .ce 1000 Reprinted from Proceedings of the ACM SIGPLAN '82 Symposium on Compiler Construction SIGPLAN Notices 17, 6 (June 1982), pp 120-126\*[\(dg\*] .(f \(dgCopyright 1982 ACM 0-89791-074-5/82/006/0120 $00.75 .br Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and / or specific permission. .)f .sp 2 \fB\s+2gprof: a Call Graph Execution Profiler\s-2\fP\** .(f \**This work was supported by grant MCS80-05144 from the National Science Foundation. .)f .sp 1 by \fISusan L. Graham\fP \fIPeter B. Kessler\fP \fIMarshall K. McKusick\fP .sp 1 Computer Science Division Electrical Engineering and Computer Science Department University of California, Berkeley Berkeley, California 94720 .ce 0 .sp 1 .sp 0.5i .sh 0 "Abstract" .pp Large complex programs are composed of many small routines that implement abstractions for the routines that call them. To be useful, an execution profiler must attribute execution time in a way that is significant for the logical structure of a program as well as for its textual decomposition. This data must then be displayed to the user in a convenient and informative way. The \fBgprof\fP profiler accounts for the running time of called routines in the running time of the routines that call them. The design and use of this profiler is described. crash dump to avoid compiled in constants. .BP sendmail Is a new program replacing delivermail; it provides fully internetwork mail forwarding capabilities. Sendmail uses the DARPA standard SMTP protocol to send and receive mail. Sendmail uses a configuration file to control its operation, eliminating the compiled in description used in delivermail. .BP setifaddr Is a new program used to set doc/misc/gprof/intro.me 444 3 12 3457 3650314747 10346 \" @(#)intro.me 1.9 3/15/82 .sh 1 "Programs to be Profiled" .pp Software research environments normally include many large programs both for production use and for experimental investigation. These programs are typically modular, in accordance with generally accepted principles of good program design. Often they consist of numerous small routines that implement various abstractions. Sometimes such large programs are written by one programmer who has understood the requirements for these abstractions, and has programmed them appropriately. More frequently the program has had multiple authors and has evolved over time, changing the demands placed on the implementation of the abstractions without changing the implementation itself. Finally, the program may be assembled from a library of abstraction implementations unexamined by the programmer. .pp Once a large program is executable, it is often desirable to increase its speed, especially if small portions of the program are found to dominate its execution time. The purpose of the \fBgprof\fP profiling tool is to help the user evaluate alternative implementations of abstractions. We developed this tool in response to our efforts to improve a code generator we were writing [Graham82]. .pp The \fBgprof\fP design takes advantage of the fact that the programs to be measured are large, structured and hierarchical. We provide a profile in which the execution time for a set of routines that implement an abstraction is collected and charged to that abstraction. The profile can be used to compare and assess the costs of various implementations. .pp The profiler can be linked into a program without special planning by the programmer. The overhead for using \fBgprof\fP is low; both in terms of added execution time and in the volume of profiling information recorded. ard SMTP protocol to send and receive mail. Sendmail uses a configuration file to control its operation, eliminating the compiled in description used in delivermail. .BP setifaddr Is a new program used to set doc/misc/gprof/profiling.me 444 3 12 7471 3650314747 11204 \" @(#)profiling.me 1.6 3/14/82 .sh 1 "Types of Profiling" .pp There are several different uses for program profiles, and each may require different information from the profiles, or different presentation of the information. We distinguish two broad categories of profiles: those that present counts of statement or routine invocations, and those that display timing information about statements or routines. Counts are typically presented in tabular form, often in parallel with a listing of the source code. Timing information could be similarly presented; but more than one measure of time might be associated with each statement or routine. For example, in the framework used by \fBgprof\fP each profiled segment would display two times: one for the time used by the segment itself, and another for the time inherited from code segments it invokes. .pp Execution counts are used in many different contexts. The exact number of times a routine or statement is activated can be used to determine if an algorithm is performing as expected. Cursory inspection of such counters may show algorithms whose complexity is unsuited to the task at hand. Careful interpretation of counters can often suggest improvements to acceptable algorithms. Precise examination can uncover subtle errors in an algorithm. At this level, profiling counters are similar to debugging statements whose purpose is to show the number of times a piece of code is executed. Another view of such counters is as boolean values. One may be interested that a portion of code has executed at all, for exhaustive testing, or to check that one implementation of an abstraction completely replaces a previous one. .pp Execution counts are not necessarily proportional to the amount of time required to execute the routine or statement. Further, the execution time of a routine will not be the same for all calls on the routine. The criteria for establishing execution time must be decided. If a routine implements an abstraction by invoking other abstractions, the time spent in the routine will not accurately reflect the time required by the abstraction it implements. Similarly, if an abstraction is implemented by several routines the time required by the abstraction will be distributed across those routines. .pp Given the execution time of individual routines, \fBgprof\fP accounts to each routine the time spent for it by the routines it invokes. This accounting is done by assembling a \fIcall graph\fP with nodes that are the routines of the program and directed arcs that represent calls from call sites to routines. We distinguish among three different call graphs for a program. The \fIcomplete call graph\fP incorporates all routines and all potential arcs, including arcs that represent calls to functional parameters or functional variables. This graph contains the other two graphs as subgraphs. The \fIstatic call graph\fP includes all routines and all possible arcs that are not calls to functional parameters or variables. The \fIdynamic call graph\fP includes only those routines and arcs traversed by the profiled execution of the program. This graph need not include all routines, nor need it include all potential arcs between the routines it covers. It may, however, include arcs to functional parameters or variables that the static call graph may omit. The static call graph can be determined from the (static) program text. The dynamic call graph is determined only by profiling an execution of the program. The complete call graph for a monolithic program could be determined by data flow analysis techniques. The complete call graph for programs that change during execution, by modifying themselves or dynamically loading or overlaying code, may never be determinable. Both the static call graph and the dynamic call graph are used by \fBgprof\fP, but it does not search for the complete call graph. rs and for the /etc/diskpart file. (Does not handle the new DEC DSA style drives properly because it tries to reserve space for the bad sector table.) .BP drtest Is a new standalone program which isdoc/misc/gprof/gathering.me 444 3 12 22273 3650314750 11172 \" @(#)gathering.me 1.7 3/14/82 .sh 1 "Gathering Profile Data" .pp Routine calls or statement executions can be measured by having a compiler augment the code at strategic points. The additions can be inline increments to counters [Knuth71] [Satterthwaite72] [Joy79] or calls to monitoring routines [Unix]. The counter increment overhead is low, and is suitable for profiling statements. A call of the monitoring routine has an overhead comparable with a call of a regular routine, and is therefore only suited to profiling on a routine by routine basis. However, the monitoring routine solution has certain advantages. Whatever counters are needed by the monitoring routine can be managed by the monitoring routine itself, rather than being distributed around the code. In particular, a monitoring routine can easily be called from separately compiled programs. In addition, different monitoring routines can be linked into the program being measured to assemble different profiling data without having to change the compiler or recompile the program. We have exploited this approach; our compilers for C, Fortran77, and Pascal can insert calls to a monitoring routine in the prologue for each routine. Use of the monitoring routine requires no planning on part of a programmer other than to request that augmented routine prologues be produced during compilation. .pp We are interested in gathering three pieces of information during program execution: call counts and execution times for each profiled routine, and the arcs of the dynamic call graph traversed by this execution of the program. By post-processing of this data we can build the dynamic call graph for this execution of the program and propagate times along the edges of this graph to attribute times for routines to the routines that invoke them. .pp Gathering of the profiling information should not greatly interfere with the running of the program. Thus, the monitoring routine must not produce trace output each time it is invoked. The volume of data thus produced would be unmanageably large, and the time required to record it would overwhelm the running time of most programs. Similarly, the monitoring routine can not do the analysis of the profiling data (e.g. assembling the call graph, propagating times around it, discovering cycles, etc.) during program execution. Our solution is to gather profiling data in memory during program execution and to condense it to a file as the profiled program exits. This file is then processed by a separate program to produce the listing of the profile data. An advantage of this approach is that the profile data for several executions of a program can be combined by the post-processing to provide a profile of many executions. .pp The execution time monitoring consists of three parts. The first part allocates and initializes the runtime monitoring data structures before the program begins execution. The second part is the monitoring routine invoked from the prologue of each profiled routine. The third part condenses the data structures and writes them to a file as the program terminates. The monitoring routine is discussed in detail in the following sections. .sh 2 "Execution Counts" .pp The \fBgprof\fP monitoring routine counts the number of times each profiled routine is called. The monitoring routine also records the arc in the call graph that activated the profiled routine. The count is associated with the arc in the call graph rather than with the routine. Call counts for routines can then be determined by summing the counts on arcs directed into that routine. In a machine-dependent fashion, the monitoring routine notes its own return address. This address is in the prologue of some profiled routine that is the destination of an arc in the dynamic call graph. The monitoring routine also discovers the return address for that routine, thus identifying the call site, or source of the arc. The source of the arc is in the \fIcaller\fP, and the destination is in the \fIcallee\fP. For example, if a routine A calls a routine B, A is the caller, and B is the callee. The prologue of B will include a call to the monitoring routine that will note the arc from A to B and either initialize or increment a counter for that arc. .pp One can not afford to have the monitoring routine output tracing information as each arc is identified. Therefore, the monitoring routine maintains a table of all the arcs discovered, with counts of the numbers of times each is traversed during execution. This table is accessed once per routine call. Access to it must be as fast as possible so as not to overwhelm the time required to execute the program. .pp Our solution is to access the table through a hash table. We use the call site as the primary key with the callee address being the secondary key. Since each call site typically calls only one callee, we can reduce (usually to one) the number of minor lookups based on the callee. Another alternative would use the callee as the primary key and the call site as the secondary key. Such an organization has the advantage of associating callers with callees, at the expense of longer lookups in the monitoring routine. We are fortunate to be running in a virtual memory environment, and (for the sake of speed) were able to allocate enough space for the primary hash table to allow a one-to-one mapping from call site addresses to the primary hash table. Thus our hash function is trivial to calculate and collisions occur only for call sites that call multiple destinations (e.g. functional parameters and functional variables). A one level hash function using both call site and callee would result in an unreasonably large hash table. Further, the number of dynamic call sites and callees is not known during execution of the profiled program. .pp Not all callers and callees can be identified by the monitoring routine. Routines that were compiled without the profiling augmentations will not call the monitoring routine as part of their prologue, and thus no arcs will be recorded whose destinations are in these routines. One need not profile all the routines in a program. Routines that are not profiled run at full speed. Certain routines, notably exception handlers, are invoked by non-standard calling sequences. Thus the monitoring routine may know the destination of an arc (the callee), but find it difficult or impossible to determine the source of the arc (the caller). Often in these cases the apparent source of the arc is not a call site at all. Such anomalous invocations are declared ``spontaneous''. .sh 2 "Execution Times" .pp The execution times for routines can be gathered in at least two ways. One method measures the execution time of a routine by measuring the elapsed time from routine entry to routine exit. Unfortunately, time measurement is complicated on time-sharing systems by the time-slicing of the program. A second method samples the value of the program counter at some interval, and infers execution time from the distribution of the samples within the program. This technique is particularly suited to time-sharing systems, where the time-slicing can serve as the basis for sampling the program counter. Notice that, whereas the first method could provide exact timings, the second is inherently a statistical approximation. .pp The sampling method need not require support from the operating system: all that is needed is the ability to set and respond to ``alarm clock'' interrupts that run relative to program time. It is imperative that the intervals be uniform since the sampling of the program counter rather than the duration of the interval is the basis of the distribution. If sampling is done too often, the interruptions to sample the program counter will overwhelm the running of the profiled program. On the other hand, the program must run for enough sampled intervals that the distribution of the samples accurately represents the distribution of time for the execution of the program. As with routine call tracing, the monitoring routine can not afford to output information for each program counter sample. In our computing environment, the operating system can provide a histogram of the location of the program counter at the end of each clock tick (1/60th of a second) in which a program runs. The histogram is assembled in memory as the program runs. This facility is enabled by our monitoring routine. We have adjusted the granularity of the histogram so that program counter values map one-to-one onto the histogram. We make the simplifying assumption that all calls to a specific routine require the same amount of time to execute. This assumption may disguise that some calls (or worse, some call sites) always invoke a routine such that its execution is faster (or slower) than the average time for that routine. .pp When the profiled program terminates, the arc table and the histogram of program counter samples is written to a file. The arc table is condensed to consist of the source and destination addresses of the arc and the count of the number of times the arc was traversed by this execution of the program. The recorded histogram consists of counters of the number of times the program counter was found to be in each of the ranges covered by the histogram. The ranges themselves are summarized as a lower and upper bound and a step size. t afford to have the monitoring routine output tracing information as each arc is identified. Therefore, the monitoring routine maintains a table of all the arcs discovered, with counts of the numbers of times each is traversed during execution. This table is accessed once per routine call. Access to it must be as fast as pdoc/misc/gprof/postp.me 444 3 12 13445 3650314750 10370 \" @(#)postp.me 1.14 3/15/82 .EQ delim ## gsize 11 .EN .sh 1 "Post Processing" .pp Having gathered the arcs of the call graph and timing information for an execution of the program, we are interested in attributing the time for each routine to the routines that call it. We build a dynamic call graph with arcs from caller to callee, and propagate time from descendants to ancestors by topologically sorting the call graph. Time propagation is performed from the leaves of the call graph toward the roots, according to the order assigned by a topological numbering algorithm. The topological numbering ensures that all edges in the graph go from higher numbered nodes to lower numbered nodes. An example is given in Figure 1. If we propagate time from nodes in the order assigned by the algorithm, execution time can be propagated from descendants to ancestors after a single traversal of each arc in the call graph. Each parent receives some fraction of a child's time. Thus time is charged to the caller in addition to being charged to the callee. .(z .TS center; c c c c c. 8 9 3 7 2 5 6 1 4 .TE .ce 2 Topological ordering Figure 1. .ce 0 .)z .pp Let #C sub e# be the number of calls to some routine, #e#, and #C sub e sup r# be the number of calls from a caller #r# to a callee #e#. Since we are assuming each call to a routine takes the average amount of time for all calls to that routine, the caller is accountable for #C sub e sup r / C sub e# of the time spent by the callee. Let the #S sub e# be the #selftime# of a routine, #e#. The selftime of a routine can be determined from the timing information gathered during profiled program execution. The total time, #T sub r#, we wish to account to a routine #r#, is then given by the recurrence equation: .EQ T sub r ~ = ~ {S sub r} ~ + ~ sum from {r ~ roman CALLS ~ e} {T sub e times {{C sub e sup r} over {C sub e}}} .EN where #r ~ roman CALLS ~ e# is a relation showing all routines #e# called by a routine #r#. This relation is easily available from the call graph. .pp However, if the execution contains recursive calls, the call graph has cycles that cannot be topologically sorted. In these cases, we discover strongly-connected components in the call graph, treat each such component as a single node, and then sort the resulting graph. We use a variation of Tarjan's strongly-connected components algorithm that discovers strongly-connected components as it is assigning topological order numbers [Tarjan72]. .pp Time propagation within strongly connected components is a problem. For example, a self-recursive routine (a trivial cycle in the call graph) is accountable for all the time it uses in all its recursive instantiations. In our scheme, this time should be shared among its call graph parents. The arcs from a routine to itself are of interest, but do not participate in time propagation. Thus the simple equation for time propagation does not work within strongly connected components. Time is not propagated from one member of a cycle to another, since, by definition, this involves propagating time from a routine to itself. In addition, children of one member of a cycle must be considered children of all members of the cycle. Similarly, parents of one member of the cycle must inherit all members of the cycle as descendants. It is for these reasons that we collapse connected components. Our solution collects all members of a cycle together, summing the time and call counts for all members. All calls into the cycle are made to share the total time of the cycle, and all descendants of the cycle propagate time into the cycle as a whole. Calls among the members of the cycle do not propagate any time, though they are listed in the call graph profile. .pp Figure 2 shows a modified version of the call graph of Figure 1, in which the nodes labelled 3 and 7 in Figure 1 are mutually recursive. The topologically sorted graph after the cycle is collapsed is given in Figure 3. .(z .TS center; c c c c c. o o \(bu \(bu o o o o o .TE .ce 2 Cycle to be collapsed. Figure 2. .ce 0 .)z .(z .TS center; c c c c c. 7 8 \fI6\fP \fI6\fP 2 4 5 1 3 .TE .ce 2 Topological numbering after cycle collapsing. Figure 3. .ce 0 .)z .pp Since the technique described above only collects the dynamic call graph, and the program typically does not call every routine on each execution, different executions can introduce different cycles in the dynamic call graph. Since cycles often have a significant effect on time propagation, it is desirable to incorporate the static call graph so that cycles will have the same members regardless of how the program runs. .pp The static call graph can be constructed from the source text of the program. However, discovering the static call graph from the source text would require two moderately difficult steps: finding the source text for the program (which may not be available), and scanning and parsing that text, which may be in any one of several languages. .pp In our programming system, the static calling information is also contained in the executable version of the program, which we already have available, and which is in language-independent form. One can examine the instructions in the object program, looking for calls to routines, and note which routines can be called. This technique allows us to add arcs to those already in the dynamic call graph. If a statically discovered arc already exists in the dynamic call graph, no action is required. Statically discovered arcs that do not exist in the dynamic call graph are added to the graph with a traversal count of zero. Thus they are never responsible for any time propagation. However, they may affect the structure of the graph. Since they may complete strongly connected components, the static call graph construction is done before topological ordering. on time can be propagated from descendants to ancestors after a single traversal of each arc in the call graph. Each parent receives some fraction of a child's time. Thus time is charged to the caller in addition to beidoc/misc/gprof/present.me 444 3 12 26070 3650314751 10702 \" @(#)present.me 1.11 3/15/82 .sh 1 "Data Presentation" .pp The data is presented to the user in two different formats. The first presentation simply lists the routines without regard to the amount of time their descendants use. The second presentation incorporates the call graph of the program. .sh 2 "The Flat Profile .pp The flat profile consists of a list of all the routines that are called during execution of the program, with the count of the number of times they are called and the number of seconds of execution time for which they are themselves accountable. The routines are listed in decreasing order of execution time. A list of the routines that are never called during execution of the program is also available to verify that nothing important is omitted by this execution. The flat profile gives a quick overview of the routines that are used, and shows the routines that are themselves responsible for large fractions of the execution time. In practice, this profile usually shows that no single function is overwhelmingly responsible for the total time of the program. Notice that for this profile, the individual times sum to the total execution time. .sh 2 "The Call Graph Profile" .sz 10 .(z .TS box center; c c c c c l l c c c c c l l c c c c c l l l n n n c l l. called/total \ \ parents index %time self descendants called+self name index called/total \ \ children _ 0.20 1.20 4/10 \ \ \s-1CALLER1\s+1 [7] 0.30 1.80 6/10 \ \ \s-1CALLER2\s+1 [1] [2] 41.5 0.50 3.00 10+4 \s-1EXAMPLE\s+1 [2] 1.50 1.00 20/40 \ \ \s-1SUB1\s+1 [4] 0.00 0.50 1/5 \ \ \s-1SUB2\s+1 [9] 0.00 0.00 0/5 \ \ \s-1SUB3\s+1 [11] .TE .ce 2 Profile entry for \s-1EXAMPLE\s+1. Figure 4. .)z .pp Ideally, we would like to print the call graph of the program, but we are limited by the two-dimensional nature of our output devices. We cannot assume that a call graph is planar, and even if it is, that we can print a planar version of it. Instead, we choose to list each routine, together with information about the routines that are its direct parents and children. This listing presents a window into the call graph. Based on our experience, both parent information and child information is important, and should be available without searching through the output. .pp The major entries of the call graph profile are the entries from the flat profile, augmented by the time propagated to each routine from its descendants. This profile is sorted by the sum of the time for the routine itself plus the time inherited from its descendants. The profile shows which of the higher level routines spend large portions of the total execution time in the routines that they call. For each routine, we show the amount of time passed by each child to the routine, which includes time for the child itself and for the descendants of the child (and thus the descendants of the routine). We also show the percentage these times represent of the total time accounted to the child. Similarly, the parents of each routine are listed, along with time, and percentage of total routine time, propagated to each one. .pp Cycles are handled as single entities. The cycle as a whole is shown as though it were a single routine, except that members of the cycle are listed in place of the children. Although the number of calls of each member from within the cycle are shown, they do not affect time propagation. When a child is a member of a cycle, the time shown is the appropriate fraction of the time for the whole cycle. Self-recursive routines have their calls broken down into calls from the outside and self-recursive calls. Only the outside calls affect the propagation of time. .pp The following example is a typical fragment of a call graph. .(b .TS center; c c c. \s-1CALLER1\s+1 \s-1CALLER2\s+1 \s-1EXAMPLE\s+1 \s-1SUB1\s+1 \s-1SUB2\s+1 \s-1SUB3\s+1 .TE .)b The entry in the call graph profile listing for this example is shown in Figure 4. .pp The entry is for routine \s-1EXAMPLE\s+1, which has the Caller routines as its parents, and the Sub routines as its children. The reader should keep in mind that all information is given \fIwith respect to \s-1EXAMPLE\s+1\fP. The index in the first column shows that \s-1EXAMPLE\s+1 is the second entry in the profile listing. The \s-1EXAMPLE\s+1 routine is called ten times, four times by \s-1CALLER1\s+1, and six times by \s-1CALLER2\s+1. Consequently 40% of \s-1EXAMPLE\s+1's time is propagated to \s-1CALLER1\s+1, and 60% of \s-1EXAMPLE\s+1's time is propagated to \s-1CALLER2\s+1. The self and descendant fields of the parents show the amount of self and descendant time \s-1EXAMPLE\s+1 propagates to them (but not the time used by the parents directly). Note that \s-1EXAMPLE\s+1 calls itself recursively four times. The routine \s-1EXAMPLE\s+1 calls routine \s-1SUB1\s+1 twenty times, \s-1SUB2\s+1 once, and never calls \s-1SUB3\s+1. Since \s-1SUB2\s+1 is called a total of five times, 20% of its self and descendant time is propagated to \s-1EXAMPLE\s+1's descendant time field. Because \s-1SUB1\s+1 is a member of \fIcycle 1\fR, the self and descendant times and call count fraction are those for the cycle as a whole. Since cycle 1 is called a total of forty times (not counting calls among members of the cycle), it propagates 50% of the cycle's self and descendant time to \s-1EXAMPLE\s+1's descendant time field. Finally each name is followed by an index that shows where on the listing to find the entry for that routine. .sh 1 "Using the Profiles" .pp The profiler is a useful tool for improving a set of routines that implement an abstraction. It can be helpful in identifying poorly coded routines, and in evaluating the new algorithms and code that replace them. Taking full advantage of the profiler requires a careful examination of the call graph profile, and a thorough knowledge of the abstractions underlying the program. .pp The easiest optimization that can be performed is a small change to a control construct or data structure that improves the running time of the program. An obvious starting point is a routine that is called many times. For example, suppose an output routine is the only parent of a routine that formats the data. If this format routine is expanded inline in the output routine, the overhead of a function call and return can be saved for each datum that needs to be formatted. .pp The drawback to inline expansion is that the data abstractions in the program may become less parameterized, hence less clearly defined. The profiling will also become less useful since the loss of routines will make its output more granular. For example, if the symbol table functions ``lookup'', ``insert'', and ``delete'' are all merged into a single parameterized routine, it will be impossible to determine the costs of any one of these individual functions from the profile. .pp Further potential for optimization lies in routines that implement data abstractions whose total execution time is long. For example, a lookup routine might be called only a few times, but use an inefficient linear search algorithm, that might be replaced with a binary search. Alternately, the discovery that a rehashing function is being called excessively, can lead to a different hash function or a larger hash table. If the data abstraction function cannot easily be speeded up, it may be advantageous to cache its results, and eliminate the need to rerun it for identical inputs. These and other ideas for program improvement are discussed in [Bentley81]. .pp This tool is best used in an iterative approach: profiling the program, eliminating one bottleneck, then finding some other part of the program that begins to dominate execution time. For instance, we have used \fBgprof\fR on itself; eliminating, rewriting, and inline expanding routines, until reading data files (hardly a target for optimization!) represents the dominating factor in its execution time. .pp Certain types of programs are not easily analyzed by \fBgprof\fR. They are typified by programs that exhibit a large degree of recursion, such as recursive descent compilers. The problem is that most of the major routines are grouped into a single monolithic cycle. As in the symbol table abstraction that is placed in one routine, it is impossible to distinguish which members of the cycle are responsible for the execution time. Unfortunately there are no easy modifications to these programs that make them amenable to analysis. .pp A completely different use of the profiler is to analyze the control flow of an unfamiliar program. If you receive a program from another user that you need to modify in some small way, it is often unclear where the changes need to be made. By running the program on an example and then using \fBgprof\fR, you can get a view of the structure of the program. .pp Consider an example in which you need to change the output format of the program. For purposes of this example suppose that the call graph of the output portion of the program has the following structure: .(b .TS center; c c c. \s-1CALC1\s+1 \s-1CALC2\s+1 \s-1CALC3\s+1 \s-1FORMAT1\s+1 \s-1FORMAT2\s+1 ``\s-1WRITE\s+1'' .TE .)b Initially you look through the \fBgprof\fR output for the system call ``\s-1WRITE\s+1''. The format routine you will need to change is probably among the parents of the ``\s-1WRITE\s+1'' procedure. The next step is to look at the profile entry for each of parents of ``\s-1WRITE\s+1'', in this example either ``\s-1FORMAT1\s+1'' or ``\s-1FORMAT2\s+1'', to determine which one to change. Each format routine will have one or more parents, in this example ``\s-1CALC1\s+1'', ``\s-1CALC2\s+1'', and ``\s-1CALC3\s+1''. By inspecting the source code for each of these routines you can determine which format routine generates the output that you wish to modify. Since the \fBgprof\fR entry shows all the potential calls to the format routine you intend to change, you can determine if your modifications will affect output that should be left alone. If you desire to change the output of ``\s-1CALC2\s+1'', but not ``\s-1CALC3\s+1'', then formatting routine ``\s-1FORMAT2\s+1'' needs to be split into two separate routines, one of which implements the new format. You can then retarget just the call by ``\s-1CALC2\s+1'' that needs the new format. It should be noted that the static call information is particularly useful here since the test case you run probably will not exercise the entire program. .sh 1 "Conclusions" .pp We have created a profiler that aids in the evaluation of modular programs. For each routine in the program, the profile shows the extent to which that routine helps support various abstractions, and how that routine uses other abstractions. The profile accurately assesses the cost of routines at all levels of the program decomposition. The profiler is easily used, and can be compiled into the program without any prior planning by the programmer. It adds only five to thirty percent execution overhead to the program being profiled, produces no additional output until after the program finishes, and allows the program to be measured in its actual environment. Finally, the profiler runs on a time-sharing system using only the normal services provided by the operating system and compilers. spend large portions of the total execution time in the routines that they call. For each routine, we show the amount of time passed by each child to the routine, which includes time for the child itself and for the descendants of the child (and thus the descendants of the routine). We also show the percentage these times represent of the total time accounted to the child. Similarly, the parents of each routine are listed, along with time, and percendoc/misc/gprof/refs.me 444 3 12 2075 3650314751 10140 \" @(#)refs.me 1.3 3/15/82 .sh 1 "References" .ls 1 .ip [Bentley81] Bentley, J. L., ``Writing Efficient Code'', Department of Computer Science, Carnegie-Mellon University, Pittsburgh, Pennsylvania, CMU-CS-81-116, 1981. .ip [Graham82] Graham, S. L., Henry, R. R., Schulman, R. A., ``An Experiment in Table Driven Code Generation'', SIGPLAN '82 Symposium on Compiler Construction, June, 1982. .ip [Joy79] Joy, W. N., Graham, S. L., Haley, C. B. ``Berkeley Pascal User's Manual'', Version 1.1, Computer Science Division University of California, Berkeley, CA. April 1979. .ip [Knuth71] Knuth, D. E. ``An empirical study of FORTRAN programs'', Software - Practice and Experience, 1, 105-133. 1971 .ip [Satterthwaite72] Satterthwaite, E. ``Debugging Tools for High Level Languages'', Software - Practice and Experience, 2, 197-217, 1972 .ip [Tarjan72] Tarjan, R. E., ``Depth first search and linear graph algorithm,'' \fISIAM J. Computing\fP \fB1\fP:2, 146-160, 1972. .ip [Unix] Unix Programmer's Manual, ``\fBprof\fR command'', section 1, Bell Laboratories, Murray Hill, NJ. January 1979. which format routine generates the output that you wish to modify. Since the \fBgprof\fR entry shows all the potential calls to the format routine you intend to change, you can determine if your modifications will affect output that should be left alone. If you desire to change the output of ``\s-1CALC2\s+1'', but not ``\s-1CALC3\s+1'', then formatting routine ``\s-1FORMAT2\s+1'' needs to be split into two separate routines, one of which implemendoc/misc/gprof/header.me 444 3 12 0 3650314751 10333 doc/misc/diskperf/ 755 3 12 0 3652300350 7251 doc/misc/diskperf/Makefile 444 3 12 723 3652300334 10760 # # Copyright (c) 1983 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 4/20/86 # TROFF= ditroff -Pdp TBL= dtbl -Pdp FILES= abs.ms motivation.ms equip.ms methodology.ms tests.ms results.ms \ conclusions.ms appendix.ms paper: ${FILES} ${TBL} ${FILES} | ${TROFF} -ms preview:${FILES} tbl ${FILES} | nroff -ms | colcrt doc/misc/diskperf/abs.ms 444 3 12 6772 3652300335 10461 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)abs.ms 6.1 (Berkeley) 4/20/86 .\" .if n .ND .TL Performance Effects of Disk Subsystem Choices for VAX\(dg Systems Running 4.2BSD UNIX* .sp Revised July 27, 1983 .AU Bob Kridle .AI mt Xinu 2560 9th Street Suite #312 Berkeley, California 94710 .AU Marshall Kirk McKusick\(dd .AI Computer Systems Research Group Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, CA 94720 .AB .FS \(dgVAX, UNIBUS, and MASSBUS are trademarks of Digital Equipment Corporation. .FE .FS * UNIX is a trademark of Bell Laboratories. .FE .FS \(ddThis work was supported under grants from the National Science Foundation under grant MCS80-05144, and the Defense Advance Research Projects Agency (DoD) under Arpa Order No. 4031 monitored by Naval Electronic System Command under Contract No. N00039-82-C-0235. .FE Measurements were made of the UNIX file system throughput for various I/O operations using the most attractive currently available Winchester disks and controllers attached to both the native busses (SBI/CMI) and the UNIBUS on both VAX 11/780s and VAX 11/750s. The tests were designed to highlight the performance of single and dual drive subsystems operating in the 4.2BSD .I fast file system .R environment. Many of the results of the tests were initially counter-intuitive and revealed several important aspects of the VAX implementations which were surprising to us. .PP The hardware used included two Fujitsu 2351A ``Eagle'' disk drives on each of two foreign-vendor disk controllers and two DEC RA-81 disk drives on a DEC UDA-50 disk controller. The foreign-vendor controllers were Emulex SC750, SC780 and Systems Industries 9900 native bus interfaced controllers. The DEC UDA-50 controller is a UNIBUS interfaced, heavily buffered controller which is the first implementation of a new DEC storage system architecture, DSA. .PP One of the most important results of our testing was the correction of several timing parameters in our device handler for devices with an RH750/RH780 type interface and having high burst transfer rates. The correction of these parameters resulted in an increase in performance of over twenty percent in some cases. In addition, one of the controller manufacturers altered their bus arbitration scheme to produce another increase in throughput. .AE .LP .de PT .lt \\n(LLu .pc % .nr PN \\n% .tl '\\*(LH'\\*(CH'\\*(RH' .lt \\n(.lu .. .af PN i .ds LH Performance .ds RH Contents .bp 1 .\".if t .ds CF July 27, 1983 .\".if t .ds LF CSRG TR/8 .\".if t .ds RF Kridle, et. al. .ce .B "TABLE OF CONTENTS" .LP .sp 1 .nf .B "1. Motivation" .LP .sp .5v .nf .B "2. Equipment 2.1. DEC UDA50 disk controller 2.2. Emulex SC750/SC780 disk controllers 2.3. Systems Industries 9900 disk controller 2.4. DEC RA81 disk drives 2.5. Fujitsu 2351A disk drives .LP .sp .5v .nf .B "3. Methodology .LP .sp .5v .nf .B "4. Tests .LP .sp .5v .nf .B "5. Results .LP .sp .5v .nf .B "6. Conclusions .LP .sp .5v .nf .B Acknowledgements .LP .sp .5v .nf .B References .LP .sp .5v .nf .B "Appendix A A.1. read_8192 A.2. write_4096 A.3. write_8192 A.4. rewrite_8192 .ds RH Motivation .af PN 1 .bp 1 .de _d .if t .ta .6i 2.1i 2.6i .\" 2.94 went to 2.6, 3.64 to 3.30 .if n .ta .84i 2.6i 3.30i .. .de _f .if t .ta .5i 1.25i 2.5i .\" 3.5i went to 3.8i .if n .ta .7i 1.75i 3.8i .. ommanddoc/misc/diskperf/equip.ms 444 3 12 11773 3652300336 11055 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)equip.ms 6.1 (Berkeley) 4/20/86 .\" .ds RH Equipment .NH Equipment .PP Various combinations of the three manufacturers disk controllers, and two pairs of Winchester disk drives were tested on both VAX 11/780 and VAX 11/750 CPUs. The Emulex and Systems Industries disk controllers were interfaced to Fujitsu 2351A ``Eagle'' 404 Megabyte disk drives. The DEC UDA50 disk controller was interfaced to two DEC RA81 456 Megabyte Winchester disk drives. All three controllers were tested on the VAX 780 although only the Emulex and DEC controllers were benchmarked on the VAX 11/750. Systems Industries makes a VAX 11/750 CMI interface for their controller, but we did not have time to test this device. In addition, not all the storage systems were tested for two drive throughput. Each of the controllers and disk drives used in the benchmarks is described briefly below. .NH 2 DEC UDA50 disk controller .PP This is a new controller design which is part of a larger, long range storage architecture referred to as ``DSA'' or \fBD\fRigital \fBS\fRtorage \fBA\fRrchetecture. An important aspect of DSA is migrating a large part of the storage management previously handled in the operating system to the storage system. Thus, the UDA50 is a much more intelligent controller than previous interfaces like the RH750 or RH780. The UDA50 handles all error correction. It also deals with most of the physical storage parameters. Typically, system software requests a logical block or sequence of blocks. The physical locations of these blocks, their head, track, and cylinder indices, are determined by the controller. The UDA50 also orders disk requests to maximize throughput where possible, minimizing total seek and rotational delays. Where multiple drives are attached to a single controller, the UDA50 can interleave simultaneous data transfers from multiple drives. .PP The UDA50 is a UNIBUS implementation of a DSA controller. It contains 52 sectors of internal buffering to minimize the effects of a slow UNIBUS such as the one on the VAX-11/780. This buffering also minimizes the effects of contention with other UNIBUS peripherals. .NH 2 Emulex SC750/SC780 disk controllers .PP These two models of the same controller interface to the CMI bus of a VAX 11/750 and the SBI bus of a 11/VAX 780, respectively. To the operating system, they emulate either an RH750 or and RH780. The controllers install in the MASSBUS locations in the CPU cabinets and operate from the VAX power suplies. They provide an ``SMD'' or \fBS\fRtorage \fBM\fRodule \fBD\fRrive interface to the disk drives. Although a large number of disk drives use this interface, we tested the controller exclusively connected to Fujitsu 2351A disks. .PP The controller ws first implemented for the VAX-11/750 as the SC750 model several years ago. Although the SC780 was introduced more recently, both are stable products with no bugs known to us. .NH 2 System Industries 9900 disk controller .PP This controller is an evolution of the S.I. 9400 first introduced as a UNIBUS SMD interface. The 9900 has been enhanced to include an interface to the VAX 11/780 native bus, the SBI. It has also been upgraded to operate with higher data rate drives such as the Fujitsu 2351As we used in this test. The controller is contained in its own rack-mounted drawer with an integral power supply. The interface to the SMD is a four module set which mounts in a CPU cabinet slot normally occupied by an RH780. The SBI interface derives power from the VAX CPU cabinet power supplies. .NH 2 DEC RA81 disk drives .PP The RA81 is a rack-mountable 456 Megabyte (formatted) Winchester disk drive manufactured by DEC. It includes a great deal of technology which is an integral part of the DEC \fBDSA\fR scheme. The novel technology includes a serial packet based communications protocol with the controller over a pair of mini-coaxial cables. The physical characteristics of the RA81 are shown in the table below: .DS .TS box,center; c s l l. DEC RA81 Disk Drive Characteristics _ Peak Transfer Rate 2.2 Mbytes/sec. Rotational Speed 3,600 RPM Data Sectors/Track 51 Logical Cylinders 1,248 Logical Data Heads 14 Data Capacity 456 Mbytes Minimum Seek Time 6 milliseconds Average Seek Time 28 milliseconds Maximum Seek Time 52 milliseconds .TE .DE .NH 2 Fujitsu 2351A disk drives .PP The Fujitsu 2351A disk drive is a Winchester disk drive with an SMD controller interface. Fujitsu has developed a very good reputation for reliable storage products over the last several years. The 2351A has the following physical characteristics: .DS .TS box,center; c s l l. Fujitsu 2351A Disk Drive Characteristics _ Peak Transfer Rate 1.859 Mbytes/sec. Rotational Speed 3,961 RPM Data Sectors/Track 48 Cylinders 842 Data Heads 20 Data Capacity 404 Mbytes Minimum Seek Time 5 milliseconds Average Seek Time 18 milliseconds Maximum Seek Time 35 milliseconds .TE .DE .ds RH Methodology .bp f anddoc/misc/diskperf/appendix.ms 444 3 12 2021 3652300337 11505 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)appendix.ms 6.1 (Berkeley) 4/20/86 .\" .nr H2 1 .ds RH Appendix A .SH \s+2Appendix A\s0 .SH read_8192 .DS #define BUFSIZ 8192 main( argc, argv) char **argv; { char buf[BUFSIZ]; int i, j; j = open(argv[1], 0); for (i = 0; i < 1024; i++) read(j, buf, BUFSIZ); } .DE .SH write_4096 .DS #define BUFSIZ 4096 main( argc, argv) char **argv; { char buf[BUFSIZ]; int i, j; j = creat(argv[1], 0666); for (i = 0; i < 2048; i++) write(j, buf, BUFSIZ); } .DE .SH write_8192 .DS #define BUFSIZ 8192 main( argc, argv) char **argv; { char buf[BUFSIZ]; int i, j; j = creat(argv[1], 0666); for (i = 0; i < 1024; i++) write(j, buf, BUFSIZ); } .DE .bp .SH rewrite_8192 .DS #define BUFSIZ 8192 main( argc, argv) char **argv; { char buf[BUFSIZ]; int i, j; j = open(argv[1], 2); for (i = 0; i < 1024; i++) write(j, buf, BUFSIZ); } .DE is described briefly below. .NH 2 DEC UDA50 disk controller .PP This is a new controller design which is part of a larger, long range storage architecture referred to as ``DSA'' or \fBD\fRigital \fBS\fRtorage \fBA\fRrchetecture. An important aspect of DSA is migrating a large part of the storage management previously handled in the operating system to the storage system. Thus, the UDA50 is a much more intelligent controller than previous interfaces like the RH750 or RH780. The UDA50 handledoc/misc/diskperf/conclusions.ms 444 3 12 7712 3652300342 12244 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)conclusions.ms 6.1 (Berkeley) 4/20/86 .\" .ds RH Conclusions .NH Conclusions .PP Peak available throughput is only one criterion in most storage system purchasing decisions. Most of the VAX UNIX systems we are familiar with are not I/O bandwidth constrained. Nevertheless, an adequate disk bandwidth is necessary for good performance and especially to preserve snappy response time. All of the disk systems we tested provide more than adequate bandwidth for typical VAX UNIX system application. Perhaps in some I/O-intensive applications such as image processing, more consideration should be given to the peak throughput available. In most situations, we feel that other factors are more important in making a storage choice between the systems we tested. Cost, reliability, availability, and support are some of these factors. The maturity of the technology purchased must also be weighed against the future value and expandability of newer technologies. .PP Two important conclusions about storage systems in general can be drawn from these tests. The first is that buffering can be effective in smoothing the the effects of lower bus speeds and bus contention. Even though the UDA50 is located on the relatively slow UNIBUS, its performance is similar to controllers located on the faster processor busses. However, the SC780 with only one sector of buffering shows that little buffering is needed if the underlying bus is fast enough. .PP Placing more intelligence in the controller seems to hinder UNIX system performance more than it helps. Our profiling tests have indicated that UNIX spends about the same percentage of time in the SC780 driver and the UDA50 driver (about 10-14%). Normally UNIX uses a disk sort algorithm that separates reads and writes into two seek order queues. The read queue has priority over the write queue, since reads cause processes to block, while writes can be done asynchronously. This is particularly useful when generating large files, as it allows the disk allocator to read new disk maps and begin doing new allocations while the blocks allocated out of the previous map are written to disk. Because the UDA50 handles all block ordering, and because it keeps all requests in a single queue, there is no way to force the longer seek needed to get the next disk map. This disfunction causes all the writes to be done before the disk map read, which idles the disk until a new set of blocks can be allocated. .PP The additional functionality of the UDA50 controller that allows it to transfer simultaneously from two drives at once tends to make the two drive transfer tests run much more effectively. Tuning for the single drive case works more effectively in the two drive case than when controllers that cannot handle simultaneous transfers are used. .ds RH Acknowledgements .nr H2 1 .sp 1 .SH \s+2Acknowledgements\s0 .PP We thank Paul Massigilia and Bill Grace of Digital Equipment Corp for helping us run our disk tests on their UDA50/RA81. We also thank Rich Notari and Paul Ritkowski of Emulex for making their machines available to us to run our tests of the SC780/Eagles. Dan McKinster, then of Systems Industries, arranged to make their equipment available for the tests. We appreciate the time provided by Bob Gross, Joe Wolf, and Sam Leffler on their machines to refine our benchmarks. Finally we thank our sponsors, the National Science Foundation under grant MCS80-05144, and the Defense Advance Research Projects Agency (DoD) under Arpa Order No. 4031 monitored by Naval Electronic System Command under Contract No. N00039-82-C-0235. .ds RH References .nr H2 1 .sp 1 .SH \s+2References\s0 .LP .IP [McKusick83] 20 M. McKusick, W. Joy, S. Leffler, R. Fabry, ``A Fast File System for UNIX'', \fIACM Transactions on Computer Systems 2\fP, 3. pp 181-197, August 1984. .ds RH Appendix A .bp the SC780 was introduced more recently, both are stabldoc/misc/diskperf/tests.ms 444 3 12 4644 3652300343 11051 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)tests.ms 6.1 (Berkeley) 4/20/86 .\" .ds RH Tests .NH Tests .PP Our battery of tests consists of four programs, read_8192, write_8192, write_4096 and rewrite_8192 originally written by [McKusick83] to evaluate the performance of the new file system in 4.2BSD. These programs all follow the the same model and are typified by read_8192 shown here. .DS #define BUFSIZ 8192 main( argc, argv) char **argv; { char buf[BUFSIZ]; int i, j; j = open(argv[1], 0); for (i = 0; i < 1024; i++) read(j, buf, BUFSIZ); } .DE The remaining programs are included in appendix A. .PP These programs read, write with two different blocking factors, and rewrite logical files in structured file system on the disk under test. The write programs create new files while the rewrite program overwrites an existing file. Each of these programs represents an important segment of the typical UNIX file system activity with the read program representing by far the largest class and the rewrite the smallest. .PP A blocking factor of 8192 is used by all programs except write_4096. This is typical of most 4.2BSD user programs since a standard set of I/O support routines is commonly used and these routines buffer data in similar block sizes. .PP For each test run, a empty eight Kilobyte block file system was created in the target storage system. Then each of the four tests was run and timed. Each test was run three times; the first to clear out any useful data in the cache, and the second two to insure that the experiment had stablized and was repeatable. Each test operated on eight Megabytes of data to insure that the cache did not overly influence the results. Another file system was then initialized using a basic blocking factor of four Kilobytes and the same tests were run again and timed. A command script for a run appears as follows: .DS #!/bin/csh set time=2 echo "8K/1K file system" newfs /dev/rhp0g eagle mount /dev/hp0g /mnt0 mkdir /mnt0/foo echo "write_8192 /mnt0/foo/tst2" rm -f /mnt0/foo/tst2 write_8192 /mnt0/foo/tst2 rm -f /mnt0/foo/tst2 write_8192 /mnt0/foo/tst2 rm -f /mnt0/foo/tst2 write_8192 /mnt0/foo/tst2 echo "read_8192 /mnt0/foo/tst2" read_8192 /mnt0/foo/tst2 read_8192 /mnt0/foo/tst2 read_8192 /mnt0/foo/tst2 umount /dev/hp0g .DE .ds RH Results .bp ler on their machines to refine our benchmarks. Finally we thank our sponsors, the National doc/misc/diskperf/methodology.ms 444 3 12 6623 3652300346 12243 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)methodology.ms 6.1 (Berkeley) 4/20/86 .\" .ds RH Methodology .NH Methodology .PP Our goal was to evaluate the performance of the target peripherals in an environment as much like our 4.2BSD UNIX systems as possible. There are two basic approaches to creating this kind of test environment. These might be termed the \fIindirect\fR and the \fIdirect\fR approach. The approach used by DEC in producing most of the performance data on the UDA50/RA81 system under VMS is what we term the indirect approach. We chose to use the direct approach. .PP The indirect approach used by DEC involves two steps. First, the environment in which performance is to be evaluated is parameterized. In this case, the disk I/O characteristics of VMS were measured as to the distribution of various sizes of accesses and the proportion of reads and writes. This parameterization of typical I/O activity was termed a ``vax mix.'' The second stage involves simulating this mixture of I/O activities with the devices to be tested and noting the total volume of transactions processed per unit time by each system. .PP The problems encountered with this indirect approach often have to do with the completeness and correctness of the parameterization of the context environment. For example, the ``vax mix'' model constructed for DECs tests uses a random distribution of seeks to the blocks read or written. It is not likely that any real system produces a distribution of disk transfer locations which is truly random and does not exhibit strong locality characteristics. .PP The methodology chosen by us is direct in the sense that it uses the standard structured file system mechanism present in the 4.2BSD UNIX operating system to create the sequence of locations and sizes of reads and writes to the benchmarked equipment. We simply create, write, and read files as they would be by user's activities. The disk space allocation and disk cacheing mechanism built into UNIX is used to produce the actual device reads and writes as well as to determine their size and location on the disk. We measure and compare the rate at which these .I user files .R can be written, rewritten, or read. .PP The advantage of this approach is the implicit accuracy in testing in the same environment in which the peripheral will be used. Although this system does not account for the I/O produced by some paging and swapping, in our memory rich environment these activities account for a relatively small portion of the total disk activity. .PP A more significant disadvantage to the direct approach is the occasional difficulty we have in accounting for our measured results. The apparently straight-forward activity of reading or writing a logical file on disk can produce a complex mixture of disk traffic. File I/O is supported by a file management system that buffers disk traffic through an internal cache, which allows writes to ba handled asynchronously. Reads must be done synchronously, however this restriction is moderated by the use of read-ahead. Small changes in the performance of the disk controller subsystem can result in large and unexpected changes in the file system performance, as it may change the characteristics of the memory contention experienced by the processor. .ds RH Tests .bp contained in its own rack-mounted drawer with an integral power supply. The interface to the SMD is a four modoc/misc/diskperf/motivation.ms 444 3 12 5424 3652300347 12101 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)motivation.ms 6.1 (Berkeley) 4/20/86 .\" .ds RH Motivation .NH Motivation .PP These benchmarks were performed for several reasons. Foremost was our desire to obtain guideline to aid in choosing one the most expensive components of any VAX UNIX configuration, the disk storage system. The range of choices in this area has increased dramatically in the last year. DEC has become, with the introduction of the UDA50/RA81 system, cost competitive in the area of disk storage for the first time. Emulex's entry into the VAX 11/780 SBI controller field, the SC780, represented a important choice for us to examine, given our previous success with their VAX 11/750 SC750 controller and their UNIBUS controllers. The Fujitsu 2351A Winchester disk drive represents the lowest cost-per-byte disk storage known to us. In addition, Fujitsu's reputation for reliability was appealing. The many attractive aspects of these components justified a more careful examination of their performance aspects under UNIX. .PP In addition to the direct motivation of developing an effective choice of storage systems, we hoped to gain more insight into VAX UNIX file system and I/O performance in general. What generic characteristics of I/O subsystems are most important? How important is the location of the controller on the SBI/CMI versus the UNIBUS? Is extensive buffering in the controller essential or even important? How much can be gained by putting more of the storage system management and optimization function in the controller as DEC does with the UDA50? .PP We also wanted to resolve particular speculation about the value of storage system optimization by a controller in a UNIX environment. Is the access optimization as effective as that already provided by the existing 4.2BSD UNIX device handlers for traditional disks? VMS disk handlers do no seek optimization. This gives the UDA50 controller an advantage over other controllers under VMS which is not likely to be as important to UNIX. Are there penalties associated with greater intelligence in the controller? .PP A third and last reason for evaluating this equipment is comparable to the proverbial mountain climbers answer when asked why he climbs a particular mountain, ``It was there.'' In our case the equipment was there. We were lucky enough to assemble all the desired disks and controllers and get them installed on a temporarily idle VAX 11/780. This got us started collecting data. Although many of the tests were later rerun on a variety of other systems, this initial test bed was essential for working out the testing bugs and getting our feet wet. .ds RH Equipment .bp lts. The apparently straight-forward activity of reading or writing a logical file on disk can produce a complex mixture of disk traffic. File I/O is supported by a file management system that buffers disk traffic through an internal cadoc/misc/diskperf/results.ms 444 3 12 21651 3652300353 11426 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)results.ms 6.1 (Berkeley) 4/20/86 .\" .ds RH Results .NH Results .PP The following tables indicate the results of our test runs. Note that each table contains results for tests run on two varieties of 4.2BSD file systems. The first set of results is always for a file system with a basic blocking factor of eight Kilobytes and a fragment size of 1 Kilobyte. The second sets of measurements are for file systems with a four Kilobyte block size and a one Kilobyte fragment size. The values in parenthesis indicate the percentage of CPU time used by the test program. In the case of the two disk arm tests, the value in parenthesis indicates the sum of the percentage of the test programs that were run. Entries of ``n. m.'' indicate this value was not measured. .DS .TS box,center; c s s s s c s s s s c s s s s l | l s | l s l | l s | l s l | l l | l l l | c c | c c. 4.2BSD File Systems Tests - \fBVAX 11/750\fR = Logically Sequential Transfers from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test Emulex SC750/Eagle UDA50/RA81 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 490 (69%) 620 (96%) 310 (44%) 520 (65%) write_4096 380 (99%) 370 (99%) 370 (97%) 360 (98%) write_8192 470 (99%) 470 (99%) 320 (71%) 410 (83%) rewrite_8192 650 (99%) 620 (99%) 310 (50%) 450 (70%) = .T& c s s s s c s s s s l | l s | l s l | l s | l s l | l l | l l l | c c | c c. Logically Sequential Transfers from \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test Emulex SC750/Eagle UDA50/RA81 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 300 (60%) 400 (84%) 210 (42%) 340 (77%) write_4096 320 (98%) 320 (98%) 220 (67%) 290 (99%) write_8192 340 (98%) 340 (99%) 220 (65%) 310 (98%) rewrite_8192 450 (99%) 450 (98%) 230 (47%) 340 (78%) .TE .DE .PP Note that the rate of write operations on the VAX 11/750 are ultimately CPU limited in some cases. The write rates saturate the CPU at a lower bandwidth than the reads because they must do disk allocation in addition to moving the data from the user program to the disk. The UDA50/RA81 saturates the CPU at a lower transfer rate for a given operation than the SC750/Eagle because it causes more memory contention with the CPU. We do not know if this contention is caused by the UNIBUS controller or the UDA50. .PP The following table reports the results of test runs on a VAX 11/780 with 4 Megabytes of main memory. .DS .TS box,center; c s s s s s s c s s s s s s c s s s s s s l | l s | l s | l s l | l s | l s | l s l | l l | l l | l l l | c c | c c | c c. 4.2BSD File Systems Tests - \fBVAX 11/780\fR = Logically Sequential Transfers from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test Emulex SC780/Eagle UDA50/RA81 Sys. Ind. 9900/Eagle 1 Drive 2 Drives 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 560 (70%) 480 (58%) 360 (45%) 540 (72%) 340 (41%) 520 (66%) write_4096 440 (98%) 440 (98%) 380 (99%) 480 (96%) 490 (96%) 440 (84%) write_8192 490 (98%) 490 (98%) 220 (58%)* 480 (92%) 490 (80%) 430 (72%) rewrite_8192 760 (100%) 560 (72%) 220 (50%)* 180 (52%)* 490 (60%) 520 (62%) = .T& c s s s s s s c s s s s s s l | l s | l s | l s l | l s | l s | l s l | l l | l l | l l l | c c | c c | c c. Logically Sequential Transfers from an \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test Emulex SC780/Eagle UDA50/RA81 Sys. Ind. 9900/Eagle 1 Drive 2 Drives 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 490 (77%) 370 (66%) n.m. n.m. 200 (31%) 370 (56%) write_4096 380 (98%) 370 (98%) n.m. n.m. 200 (46%) 370 (88%) write_8192 380 (99%) 370 (97%) n.m. n.m. 200 (45%) 320 (76%) rewrite_8192 490 (87%) 350 (66%) n.m. n.m. 200 (31%) 300 (46%) .TE * the operation of the hardware was suspect during these tests. .DE .PP The dropoff in reading and writing rates for the two drive SC780/Eagle tests are probably due to the file system using insufficient rotational delay for these tests. We have not fully investigated these times. .PP The following table compares data rates on VAX 11/750s directly with those of VAX 11/780s using the UDA50/RA81 storage system. .DS .TS box,center; c s s s s c s s s s c s s s s l | l s | l s l | l s | l s l | l l | l l l | c c | c c. 4.2BSD File Systems Tests - \fBDEC UDA50 - 750 vs. 780\fR = Logically Sequential Transfers from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test VAX 11/750 UNIBUS VAX 11/780 UNIBUS 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 310 (44%) 520 (84%) 360 (45%) 540 (72%) write_4096 370 (97%) 360 (100%) 380 (99%) 480 (96%) write_8192 320 (71%) 410 (96%) 220 (58%)* 480 (92%) rewrite_8192 310 (50%) 450 (80%) 220 (50%)* 180 (52%)* = .T& c s s s s c s s s s l | l s | l s l | l s | l s l | l l | l l l | c c | c c. Logically Sequential Transfers from an \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test VAX 11/750 UNIBUS VAX 11/780 UNIBUS 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 210 (42%) 342 (77%) n.m. n.m. write_4096 215 (67%) 294 (99%) n.m. n.m. write_8192 215 (65%) 305 (98%) n.m. n.m. rewrite_8192 227 (47%) 336 (78%) n.m. n.m. .TE * the operation of the hardware was suspect during these tests. .DE .PP The higher throughput available on VAX 11/780s is due to a number of factors. The larger main memory size allows a larger file system cache. The block allocation routines run faster, raising the upper limit on the data rates in writing new files. .PP The next table makes the same comparison using an Emulex controller on both systems. .DS .TS box, center; c s s s s c s s s s c s s s s l | l s | l s l | l s | l s l | l l | l l l | c c | c c. 4.2BSD File Systems Tests - \fBEmulex - 750 vs. 780\fR = Logically Sequential Transfers from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test VAX 11/750 CMI Bus VAX 11/780 SBI Bus 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 490 (69%) 620 (96%) 560 (70%) 480 (58%) write_4096 380 (99%) 370 (99%) 440 (98%) 440 (98%) write_8192 470 (99%) 470 (99%) 490 (98%) 490 (98%) rewrite_8192 650 (99%) 620 (99%) 760 (100%) 560 (72%) = .T& c s s s s c s s s s l | l s | l s l | l s | l s l | l l | l l l | c c | c c. Logically Sequential Transfers from an \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test VAX 11/750 CMI Bus VAX 11/780 SBI Bus 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 300 (60%) 400 (84%) 490 (77%) 370 (66%) write_4096 320 (98%) 320 (98%) 380 (98%) 370 (98%) write_8192 340 (98%) 340 (99%) 380 (99%) 370 (97%) rewrite_8192 450 (99%) 450 (98%) 490 (87%) 350 (66%) .TE .DE .PP The following table illustrates the evolution of our testing process as both hardware and software problems effecting the performance of the Emulex SC780 were corrected. The software change was suggested to us by George Goble of Purdue University. .PP The 4.2BSD handler for RH750/RH780 interfaced disk drives contains several constants which to determine how much time is provided between an interrupt signaling the completion of a positioning command and the subsequent start of a data transfer operation. These lead times are expressed as sectors of rotational delay. If they are too small, an extra complete rotation will often be required between a seek and subsequent read or write operation. The higher bit rate and rotational speed of the 2351A Fujitsu disk drives required increasing these constants. .PP The hardware change involved allowing for slightly longer delays in arbitrating for cycles on the SBI bus by starting the bus arbitration cycle a little further ahead of when the data was ready for transfer. Finally we had to increase the rotational delay between consecutive blocks in the file because the higher bandwidth from the disk generated more memory contention, which slowed down the processor. .DS .TS box,center,expand; c s s s s s s c s s s s s s c s s s s s s l | l s | l s | l s l | l s | l s | l s l | l s | l s | l s l | c c | c c | c c l | c c | c c | c c. 4.2BSD File Systems Tests - \fBEmulex SC780 Disk Controller Evolution\fR = Logically Sequential Transfers from an \fB8K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test Inadequate Search Lead OK Search Lead OK Search Lead Initial SBI Arbitration Init SBI Arb. Improved SBI Arb. 1 Drive 2 Drives 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 320 370 440 (60%) n.m. 560 (70%) 480 (58%) write_4096 250 270 300 (63%) n.m. 440 (98%) 440 (98%) write_8192 250 280 340 (60%) n.m. 490 (98%) 490 (98%) rewrite_8192 250 290 380 (48%) n.m. 760 (100%) 560 (72%) = .T& c s s s s s s c s s s s s s l | l s | l s | l s l | l s | l s | l s l | l s | l s | l s l | c c | c c | c c l | c c | c c | c c. Logically Sequential Transfers from an \fB4K/1K\fR 4.2BSD File System (Kbytes/sec.) _ Test Inadequate Search Lead OK Search Lead OK Search Lead Initial SBI Arbitration Init SBI Arb. Improved SBI Arb. 1 Drive 2 Drives 1 Drive 2 Drives 1 Drive 2 Drives _ read_8192 200 220 280 n.m. 490 (77%) 370 (66%) write_4096 180 190 300 n.m. 380 (98%) 370 (98%) write_8192 180 200 320 n.m. 380 (99%) 370 (97%) rewrite_8192 190 200 340 n.m. 490 (87%) 350 (66%) .TE .DE .ds RH Conclusions .bp 2%) 340 (41%) 520 (66%) write_4096 440 (98%) 440 (98%) 380 (99%) 480 (96%) 490 (96%) 44doc/misc/sdb/ 755 3 12 0 3650326224 6220 doc/misc/sdb/sdbsymtab.n 444 3 12 23374 3650315116 10501 .so /usr/lib/tmac/tmac.s .MF .TL Symbol Table Format for Sdb .ft R .br .ps -2 Case: 39394 File 39394 .ps +2 .ft R .AU H.P. Katseff .AI .HO .NH Introduction. .PP A symbolic debugger, sdb, has been implemented for the UNIX/32V operating system. This document describes modifications made to the C compiler to generate additional information about the compiled program and to the assembler and loader to process the information. It also describes information recognized by the assembler, the loader and sdb which are intended for use by compilers for other languages such as F77. .NH The C Compiler .PP The C compiler was modified to generate additional symbol table information describing a compiled program. Two new types of symbol table entries are made. One describes the variables, giving their class (local, register, parameter, global, etc.), their declared type in the program and their address or offset. An additional entry is made for structures giving their size. The other type of entry provides a mapping between the source program and the object program. There is an entry for each source line, procedure and source file giving their addresses in the object file. All line numbers are relative to the beginning of the source file. .PP All entries are generated with the new assembler pseudo-operation `.stab'. It always takes 12 arguments of which the first eight usually represent the name of the symbol as declared in the C program. An underscore is .ul not prepended to the name as in some other symbol table entries. A typical entry would be .DS C \&.stab 'e,'r,'r,'f,'l,'g,0,0,046,0,05,_errflg .DE For expository convenience, names in .stab entries will be listed as one word instead of eight separate characters. .NH 2 External symbols defined with .comm .PP The following entry is made for each external symbol which is defined with a .comm pseudo-op. .DS C \&.stab name,040,0,type,0 .DE The type is a 16-bit value describing the variable's declared type. This field is described in section 2.13. The debugger determines the variable's address from the entry made with the .comm. It assumes that the name for this entry is _name. .NH 2 Symbols defined within .data areas .PP The following entry is made for each symbol which is defined as a label in a data area. .DS C \&.stab name,046,0,type,address .DE The type is the variable's declared type. The address is given symbolically as the label. .NH 2 Symbols defined with .lcomm .PP The following entry is made for each symbol which is defined with a .lcomm pseudo-op. .DS C \&.stab name,048,0,type,address .DE The type is the variable's declared type. The address is given symbolically as the label. The specification of an octal constant with an 8 occurs for historical reasons. .NH 2 Register symbols .PP The following entry is made for each variable whose value is in a register. .DS C \&.stab name,0100,0,type,register .DE The type is the variable's declared type. The register is the register number assigned to the variable. .NH 2 Local non-register symbols .PP The following entry is made for each local, non-register variable. .DS C \&.stab name,0200,0,type,offset .DE The type is the variable's declared type. The offset is a positive number indicating its offset in bytes for the frame pointer. .NH 2 Parameter symbols .PP The following entry is made for each procedure parameter. .DS C \&.stab name,0240,0,type,offset .DE The type is the variable's declared type. The offset is a positive number indicating its offset in bytes from the stack pointer. .NH 2 Structure elements .PP The following entry is made for each structure element. .DS C \&.stab name,0140,0,type,offset .DE The type is the element's declared type. The offset is its offset within the structure in bytes. .NH 2 Structure symbols .PP An additional entry is made for structures giving their size in bytes. It immediately follows their defining .stab entry. It is of the form .DS C \&.stab name,0376,0,0,length .DE .NH 2 Common blocks .PP The following sequence of entries is used to describe elements of Fortran equivalence and common blocks. The first is of the form .DS C \&.stab 0,0342,0,0,0 .DE The entries for each element of the block should then appear as if they were structure elements. Finally, one of the following two entries is used depending on the type of common or equivalence block. If the block is defined as a .globl symbol, use the entry .DS C \&.stab name,0344,0,0,0 .DE where name is the name of the block defined in the .globl statement. It the block is defined in some other way, use .DS C \&.stab 0,0348,0,0,address .DE .NH 2 Brackets .PP Since C is a block-structured language, it is necessary to know the extent of each block containing symbol definitions. An entry is made for each right and left bracket which encloses a block with definitions. The following entries are for left and right brackets respectively. .DS C \&.stab 0,0300,0,nesting level,address \&.stab 0,0340,0,nesting level,address .DE The nesting level is the static nesting level of the block. It is currently ignored by the debugger. The address is the address of the first byte of code for the block for the left brackets and the first byte following the block for right brackets. .NH 2 Procedures .PP The following entry is made for each procedure. .DS C \&.stab name,044,0,linenumber,address .DE The linenumber is the number of the first line of the procedure in the source file. The address is the address of the first byte of the procedure. .NH 2 Lines .PP The following entry is made for each line in the source program. .DS C \&.stab 0,0104,0,linenumber,address .DE The linenumber is its number. The address is the address of the first byte of code for the line. For each block of the program, the linenumber entries for that block should follow the entries for the variables of that block. .NH 2 Source files .PP The following entries are made for each source file. .DS C \&.stab name1,0144,0,0,address \&.stab name2,0144,0,0,address \&... \&.stab namen,0144,0,0,address .DE Each entry contains 8 successive bytes of the name of the source file. The name is terminated by a null byte. All bytes following this one should also be null. The address is the address of the first byte of code for the first procedure of the file. .NH 2 Included source files .PP The following entry is made for each included source file which generates code. .DS C \&.stab name1,0204,0,0,address \&.stab name2,0204,0,0,address \&... \&.stab namen,0204,0,0,address .DE This entry should appear each time the file is included. A similar entry giving the name of the original file should be made at the end of the include. The format of the name is identical to that for files. This feature is heavily used by programs generated by yacc and lex. .NH 2 Format of types. .PP This 16 bit quantity type describes the declared type of a variable. We use the same scheme as in S.C. Johnson's Portable C Compiler [Johnson, 1978]. The type is divided into the following fields: .DS struct { short basic:4; d1:2, d2:2, d3:2, d4:2, d5:2, d6:2, } .DE There are four derived types: .DS 0 none 1 pointer 2 function 3 array .DE They are indicated in the two bit fields d1, d2, d3, d4, d5 and d6. The four bit field basic indicates the basic type as follows: .DS 0 undefined 1 function argument 2 character 3 short 4 int 5 long 6 float 7 double 8 structure 9 union 10 enumerated type 11 member of enumerated type 12 unsigned character 13 unsigned short 14 unsigned 15 unsigned long .DE .NH 1 The assembler and loader .PP Each .stab pseudo-operation generates one entry in the symbol table. The entry is of the form: .DS struct { char name[8]; char type; char other; short desc; unsigned value; } .DE .PP The loader uses the four least significant bits of the type field to determine how to relocate the .stab entry. The following are currently used. .DS 0 none 4 text 6 data .DE .PP It is necessary for the assembler and loader to preserve the order of symbol table entries produced by .stab pseudo-ops. .SH Reference .LP Johnson, S.C., "A Portable Compiler: Theory and Practice", .I Proc. 5th ACM Symp. on Principles of Programming Languages, .R January 1978. .bp .SH Appendix .PP The following definitions are extracted from the file /usr/include/a.out.h. .sp 1 .nf .na struct nlist { /* symbol table entry */ char n_name[8]; /* symbol name */ char n_type; /* type flag */ char n_other; short n_desc; unsigned n_value; /* value */ }; /* values for type flag */ #define N_UNDF 0 /* undefined */ #define N_ABS 02 /* absolute */ #define N_TEXT 04 /* text */ #define N_DATA 06 /* data */ #define N_BSS 08 #define N_TYPE 037 #define N_FN 037 /* file name symbol */ #define N_GSYM 0040 /* global sym: name,,type,0 */ #define N_FUN 0044 /* function: name,,linenumber,address */ #define N_STSYM 0046 /* static symbol: name,,type,address */ #define N_LCSYM 0048 /* .lcomm symbol: name,,type,address */ #define N_RSYM 0100 /* register sym: name,,register,offset */ #define N_SLINE 0104 /* src line: ,,linenumber,address */ #define N_SSYM 0140 /* structure elt: name,,type,struct_offset */ #define N_SO 0144 /* source file name: name,,,address */ #define N_LSYM 0200 /* local sym: name,,type,offset */ #define N_SOL 0204 /* #line source filename: name,,,address */ #define N_PSYM 0240 /* parameter: name,,type,offset */ #define N_LBRAC 0300 /* left bracket: ,,nesting level,address */ #define N_RBRAC 0340 /* right bracket: ,,nesting level,address */ #define N_BCOMM 0342 /* begin common: name,,, */ #define N_ECOMM 0344 /* end common: name,,, */ #define N_ECOML 0348 /* end common (local name): ,,,address */ #define N_LENG 0376 /* second stab entry with length information */ #define N_EXT 01 /* external bit, or'ed in */ #define FORMAT "%08x" #define STABTYPES 0340 .fi .ad .SG HO-1353-HPK-sdb .sp 2 Copy to .br R.W. Lucky .br C.S. Roberts ing their size in bytes. It immediately follows their defining .stab entry. It is of the form .DS C \&.stab name,0376,0,0,length .DE .NH 2 Common blocks .PP The following sequence of entries is used to describe elements of Fortran equivalence and common blocksdoc/misc/sdb/sdbrp.n 444 3 12 37174 3650315117 7627 .RP .TL Sdb: A Symbolic Debugger .AU "HO 4F-605" 5337 Howard P. Katseff .AI .HO .OK UNIX C programming Program testing .AB Sdb is a symbolic debugging program currently implemented for the language C on the UNIX/32V\s-2\u\(dg\d\s+2 Operating System. .FS \(dg\dUNIX is a trademark of Bell Laboratories .FE Sdb allows one to interact with a debugged program at the C language level. When debugging a core image from an aborted program, sdb reports which line in the C program caused the error and allows all variables, including array and structure elements, to be accessed symbolically and displayed in the correct format. .PP One may place breakpoints at selected statements or single step on a line by line basis. To facilitate specification of lines in the program without a source listing, a mechanism for examining the source text is also included in sdb. .PP Procedures may be called directly from the debugger. This feature is useful both for testing individual procedures and for calling user-provided routines which provide formatted printout of structured data. .AE .CS 6 4 10 0 0 2 .NH Introduction .PP This document describes a symbolic debugger, sdb, as implemented for C programs on the UNIX/V32\s-2\u\(dg\d\s+2 Operating System. .FS \(dg\dUNIX is a trademark of Bell Laboratories .FE Sdb is useful both for examining core images of aborted programs and for providing an environment in which execution of a program can be monitored and controlled. .NH Examining core images .PP In order to use sdb, it is necessary to compile the C program with the `\(mig' flag. This causes the compiler to generate additional information about the variables and statements of the compiled program. When the debug flag is specified, sdb can be used to obtain a trace of the called procedures at the time of the abort and interactively display the values of variables. .NH 2 Invoking sdb .PP A typical sequence of shell commands for debugging a core image is: .DS % cc \(mig foo.c \(mio foo % foo Bus error \(mi core dumped % sdb foo main:25: x[i] = 0; \v'.25m'*\v'-.25m' .DE .PP The program foo was compiled with the `\(mig' flag and then executed. An error occurred which caused a core dump. Sdb is then invoked to examine the core dump to determine the cause of the error. It reports that the Bus error occurred in procedure main at line 25 (line numbers are always relative to the beginning of the file) and outputs the source text of the offending line. Sdb then prompts the user with a `\v'.25m'*\v'-.25m'' indicating that it awaits a command. .PP It is useful to know that sdb has a notion of current procedure and current line. In this example, they are initially set to `main' and `25' respectively. .PP In the above example sdb was called with one argument, `foo'. In general it takes three arguments on the command line. The first is the name of the executable file which is to be debugged; It defaults to a.out when not specified. The second is the name of the core file, defaulting to core and the third is the name of the directory containing the source of the program being debugged. Sdb currently requires all source to reside in a single directory. The default is the working directory. In the example the second and third arguments defaulted to the correct values, so only the first was specified. .PP It is possible that the error occurred in a procedure which was not compiled with the debug flag. In this case, sdb prints the procedure name and the address at which the error occurred. The current line and procedure are set to the first line in main. Sdb will complain if main was not compiled with `\(mig' but debugging can continue for those routines compiled with the debug flag. .NH 2 Printing a stack trace .PP It is often useful to obtain a listing of the procedure calls which led to the error. This is obtained with the .B t command. For example: .DS \v'.25m'*\v'-.25m't sub(2,3) [foo.c:25] inter(16012) [foo.c:96] main(1,2147483584, 2147483592) [foo.c:15] .DE This indicates that the error occurred within the procedure sub at line 25 in file foo.c. Sub was called with the arguments 2 and 3 for inter at line 96. Inter was called from main at line 16. Main is always called by the shell with three arguments, often referred to as .I argc, .I argp and .I envp. Arguments in the call trace are always printed in decimal. .NH 2 Examining variables .PP Sdb can be used to display variables in the stopped program. Variables are displayed by typing their name followed by a slash, so .DS \v'.25m'*\v'-.25m'errflg/ .DE causes sdb to display the value of variable errflg. Unless otherwise specified, variables are assumed to be either local to or accessible from the current procedure. To specify a different procedure, use the form .DS \v'.25m'*\v'-.25m'sub:i/ .DE to display variable i in procedure sub. Section 3.2 will explain how to change the current procedure. .PP Sdb normally displays the variable in a format determined by its type as declared in the C program. To request a different format, a specifier is placed after the slash. The specifier consists of an optional length specification followed by the format. The length specifiers are .nr PD 0 .DS .IP \fBb\fP one byte .IP \fBh\fP two bytes (half word) .IP \fBl\fP four bytes (long word) .DE .nr PD 0.3v The lengths are only effective with the formats \fBd\fP, \fBo\fP, \fBx\fP and \fBu\fP. If no length is specified, the word length of the host machine, four for the DEC VAX-11/780\s-2\u\(dg\d\s+2, is used. .FS \(dg\dDEC and VAX are trademarks of Digital Equipment Corporation .FE There are a number of format specifiers available: .nr PD 0 .DS .DS .IP \fBc\fR character .IP \fBd\fP decimal .IP \fBu\fP decimal unsigned .IP \fBo\fP octal .IP \fBx\fP hexadecimal .IP \fBf\fP 32 bit single precision floating point .IP \fBg\fP 64 bit double precision floating point .IP \fBs\fP Assume variable is a string pointer and print characters until a null is reached. .IP \fBa\fP Print characters starting at the variable's address until a null is reached. .DE .DE .nr PD 0.3v As an example, variable i can be displayed in hexadecimal with the following command .DS \v'.25m'*\v'-.25m'i/x .DE .PP Sdb also knows about structures, one dimensional arrays and pointers so that all of the following commands work. .DS \v'.25m'*\v'-.25m'array[2]/ \v'.25m'*\v'-.25m'sym.id/ \v'.25m'*\v'-.25m'psym\(mi>usage/ \v'.25m'*\v'-.25m'xsym[20].p\(mi>usage/ .DE The only restriction is that array subscripts must be numbers. Note that, as a special case .DS \v'.25m'*\v'-.25m'psym\(mi>/d .DE displays the location pointed to by psym in decimal. .PP Core locations can also be displayed by specifying their absolute addresses. The command .DS \v'.25m'*\v'-.25m'1024/ .DE displays location 1024 in decimal. As in C, numbers may also be specified in octal or hexadecimal so the above command is equivalent to both of .DS \v'.25m'*\v'-.25m'02000/ \v'.25m'*\v'-.25m'0x400/ .DE It is possible to intermix numbers and variables, so that .DS \v'.25m'*\v'-.25m'1000.x/ .DE refers to an element of a structure starting at address 1000 and .DS \v'.25m'*\v'-.25m'1000\(mi>x/ .DE refers to an element of a structure whose address is at 1000. .PP The address of a variable is printed with the `=' command, so .DS \v'.25m'*\v'-.25m'i= .DE displays the address of i. Another feature whose usefulness will become apparent later is the command .DS \v'.25m'*\v'-.25m'./ .DE which redisplays the last variable typed. .NH Source file display and manipulation .PP Sdb has been designed to make it easy to debug a program without constant reference to a current source listing. Facilities are provided which perform context searches within the source files of the program being debugged and to display selected portions of the source files. The commands are similar to those of the UNIX editor ed and ex [1]. Like these editors, sdb has a notion of current file and line within the file. Sdb also knows how the lines of a file are partitioned into procedures, so that it also has a notion of current procedure. As noted in other parts of this document, the current procedure is used by a number of sdb commands. .NH 2 Displaying the source file .PP Four command exist for displaying lines in the source file. They are useful for perusing through the source program and for determining the context of the current line. The commands are .DS .IP \fBw\fP Window. Print a window of 10 lines around the current line. .IP \fBz\fP Print 10 lines starting at the current line. Advance the current line by 10. .IP .ti 0 \fBcontrol-D\fP .br .sp -1 Scroll. Print the next 10 lines and advance the current line by 10. This command is used to cleanly display longs segments of the program. .DE .PP There is also a .B p command which prints the current line. When a line from a file is printed, it is preceded by its line number. This not only gives an indication of its relative position in the file, but is also used as input by some sdb commands. .NH 2 Changing the current source file or procedure .PP The .B e command is used to change the current source file. Either of the forms .DS \v'.25m'*\v'-.25m'e procedure \v'.25m'*\v'-.25m'e file.c .DE may be used. The first causes the file containing the named procedure to become the current file and the current line becomes the first line of the procedure. The other form causes the named file to become current. In this case the current line is set to the first line of the named file. Finally, an .B e command with no argument causes the current procedure and file named to be printed. .NH 2 Changing the current line in the source file .PP As mentioned in section 3.1, the .B z and .B control-D commands have a side effect of changing the current line in the source file. This section describes other commands which change the current line. .PP There are two commands for searching for regular expressions in source files. They are .DS \v'.25m'*\v'-.25m'/regular expression/ \v'.25m'*\v'-.25m'?regular expression? .DE The first command searches forward through the file for a line containing a string which matches the regular expression and the second searches backwards. The trailing `/' and `?' may be omitted from these commands. Regular expression matching is identical to that of ed. .PP The .B + and .B \(mi commands may be used to move the current line forwards or backwards by a specified number of lines. Typing a newline advances the current line by one and typing a number causes that line to become the current line in the file. These commands may be catenated with the display commands so that .DS \v'.25m'*\v'-.25m'+15z .DE advances the current line by 15 and then prints 10 lines. .NH A controlled environment for program testing .PP One very useful feature of sdb is breakpoint debugging. After entering the debugger, certain lines in the source program may be specified to be .I breakpoints. The program is then started with a sdb command. Execution of the program proceeds as normal until it is about to execute one of the lines at which a breakpoint has been set. The program stops and sdb reports which breakpoint the program is stopped at. Now, sdb commands may be used to display the trace of procedure calls and the values of variables. If the user is satisfied that the program is working correctly to this point, some breakpoints can be deleted and others set, and then program execution may be continued from the point where it stopped. .PP A useful alternative to setting breakpoints is single stepping. Sdb can be requested to execute the next line of the program and them stop. This feature is especially useful for testing new programs, so they can be verified on a statement by statement basis. Note that if an attempt is made to single step through a procedure which has not been compiled with the `\(mig' flag, execution proceeds until a statement in a procedure compiled with the debug flag is reached. .PP The current implementation of single stepping is rather slow. While this is not a problem when stepping through a single statement, it may result in long delays while stepping through procedures not compiled with the debug flag. This problem is partially alleviated with the .B n command which quickly single steps until the positionally next statement is reached. .NH 2 Setting and deleting breakpoints .PP Breakpoints can be set at any line in a procedure which contains executable code. The command format is: .DS \v'.25m'*\v'-.25m'12b \v'.25m'*\v'-.25m'proc:12b \v'.25m'*\v'-.25m'proc:b .DE The first form sets a breakpoint at line 12 in the current procedure. The line numbers are relative to the beginning of the file, as printed by the source file display commands. The second form sets a breakpoint at line 12 of procedure proc and the third sets a breakpoint at the first line of proc. .PP Breakpoints are deleted similarly with the commands: .DS \v'.25m'*\v'-.25m'12d \v'.25m'*\v'-.25m'proc:12d \v'.25m'*\v'-.25m'proc:d .DE In addition, if the command .B d is given alone, the breakpoints are deleted interactively. Each breakpoint location is printed and a line is read from the user. If the line begins with a `y' or `d', the breakpoint is deleted. .PP A list of the current breakpoints is printed in response to a .B b command. Beware that breakpoints do strange things if the debugged program is being run elsewhere at the same time. .NH 2 Running the program .PP The .B r command is used to begin program execution. It restarts the program as if it were invoked from the shell. The command .DS \v'.25m'*\v'-.25m'r args .DE runs the program with the given arguments, as if they had been typed on the shell command line. .PP Execution is continued after a breakpoint with the .B c command and single stepping is accomplished with \fBs\fP. The .B n command is used to run the program until it reaches the positionally next statement. .PP Program execution can also be stopped with the RUBOUT key. The debugger is entered as if a breakpoint was encountered so that execution may be continued with \fBc\fP, \fBs\fP or \fBn\fP. .NH 2 Calling procedures .PP It is possible to call any of the procedures of the program from the debugger. This feature is useful both for testing individual procedures with different arguments and for calling a procedure which prints structured data in a nice way. There are two ways to call a procedure: .DS \v'.25m'*\v'-.25m'proc(arg1, arg2, ...) \v'.25m'*\v'-.25m'proc(arg1, arg2, ...)/ .DE The first simply executes the procedure. The second is intended for calling functions: It executes the procedure and prints the value that it returns. The value is printed in decimal unless some other format is specified. Arguments to procedures may be integer, character or string constants, or values of variables which are accessible from the current procedure. .PP An unfortunate bug in the current implementation is that if a procedure is called when the program is .I not stopped at a breakpoint (such as when a core image is being debugged), static variables are reinitialized before the procedure is restarted. This makes it impossible to use a procedure which formats data from a dump. .NH Other commands .PP To exit the debugger, use the .B q command. .PP The .B ! command is identical to that in ed and is used to have the shell execute a command. .PP It is possible to change the values of variables when the program is stopped at a breakpoint. This is done with the command .DS \v'.25m'*\v'-.25m'variable!value .DE which sets the variable to the given value. The value may be a number, character constant or the name of another variable. .SH Acknowledgments .PP I would like to thank Bill Joy and Chuck Haley for their comments and constructive criticisms. .SH Reference .IP [1] William N. Joy, Ex Reference Manual, Computer Science Division, University of California, Berkeley, November 1977. .LP .SG HO-1353-hpk-sdb .bp .SH Appendix 1. Example of usage. .bp .SH Appendix 2. Manual pages. \fP hexadecimal .IP \fBf\fP 32 bit single precision floating point .IP \fBg\fP 64 bit double precision floating point .IP \fBs\fP Assume variable is a string pointer and print characters until a null is reached. .IP \fBa\fP Print characters starting at the variable's address until a null is reached. .DE .DE .nr PD 0.3v As an example, variable i can be displayed in hexadecimal with thedoc/misc/sdb/app1 444 3 12 1654 3650315117 7074 % cat testdiv2.c main() { int i; i = div2(-1); printf("-1/2 = %d\n", i); } div2(i) { int j; j = i>>1; return(j); } % cc -g testdiv2.c % a.out -1/2 = -1 % sdb No core image # Warning message from sdb */^div2 # Search for procedure "div2" 6: div2(i) { # It starts at line 6 *z # Print the next few lines 6: div2(i) { 7: int j; 8: j = i>>1; 9: return(j); 10: } *div2:b # Place a breakpoint at beginning of div2 div2:8 b # Sdb echoes proc name and line number *r # Run the procedure Breakpoint at # Execution stops just before line 8 div2:8: j = i>>1; *t # Print trace of subroutine calls div2(-1) [testdiv2.c:8] main(1,2147483380,2147483388) [testdiv2.c:3] *i/ # Print i -1 *s # Single step div2:9: return(j); # Execution stops just before line 9 *j/ # Print j -1 *8d # Delete the breakpoint *div2(1)/ # Try running div2 with different args 0 *div2(-2)/ -1 *div2(-3)/ -2 *q # Exit sdb .DE displays the location pointed to by psym in decimal. .PP Core locations can alsodoc/misc/ctour/ 755 3 12 0 3650326731 6607 doc/misc/ctour/newstuff 444 3 12 33353 3650314651 10503 .na .ce C Changes 1. Long integers The compiler implements 32-bit integers. The associated type keyword is `long'. The word can act rather like an adjective in that `long int' means a 32-bit integer and `long float' means the same as `double.' But plain `long' is a long integer. Essentially all operations on longs are implemented except that assignment-type operators do not have values, so l1+(l2=+l3) won't work. Neither will l1 = l2 = 0. Long constants are written with a terminating `l' or `L'. E.g. "123L" or "0177777777L" or "0X56789abcdL". The latter is a hex constant, which could also have been short; it is marked by starting with "0X". Every fixed decimal constant larger than 32767 is taken to be long, and so are octal or hex constants larger than 0177777 (0Xffff, or 0xFFFF if you like). A warning is given in such a case since this is actually an incompatibility with the older compiler. Where the constant is just used as an initializer or assigned to something it doesn't matter. If it is passed to a subroutine then the routine will not get what it expected. When a short and a long integer are operands of an arithmetic operator, the short is converted to long (with sign extension). This is true also when a short is assigned to a long. When a long is assigned to a short integer it is truncated at the high order end with no notice of possible loss of significant digits. This is true as well when a long is added to a pointer (which includes its usage as a subscript). The conversion rules for expressions involving doubles and floats mixed with longs are the same as those for short integers, .ul mutatis mutandis. A point to note is that constant expressions involving longs are not evaluated at compile time, and may not be used where constants are expected. Thus long x {5000L*5000L}; is illegal; long x {5000*5000}; is legal but wrong because the high-order part is lost; but both long x 25000000L; and long x 25.e6; are correct and have the same meaning because the double constant is converted to long at compile time. 2. Unsigned integers A new fundamental data type with keyword `unsigned,' is available. It may be used alone: unsigned u; or as an adjective with `int' unsigned int u; with the same meaning. There are not yet (or possibly ever) unsigned longs or chars. The meaning of an unsigned variable is that of an integer modulo 2^n, where n is 16 on the PDP-11. All operators whose operands are unsigned produce results consistent with this interpretation except division and remainder where the divisor is larger than 32767; then the result is incorrect. The dividend in an unsigned division may however have any value (i.e. up to 65535) with correct results. Right shifts of unsigned quantities are guaranteed to be logical shifts. When an ordinary integer and an unsigned integer are combined then the ordinary integer is mapped into an integer mod 2^16 and the result is unsigned. Thus, for example `u = -1' results in assigning 65535 to u. This is mathematically reasonable, and also happens to involve no run-time overhead. When an unsigned integer is assigned to a plain integer, an (undiagnosed) overflow occurs when the unsigned integer exceeds 2^15-1. It is intended that unsigned integers be used in contexts where previously character pointers were used (artificially and nonportably) to represent unsigned integers. 3. Block structure. A sequence of declarations may now appear at the beginning of any compound statement in {}. The variables declared thereby are local to the compound statement. Any declarations of the same name existing before the block was entered are pushed down for the duration of the block. Just as in functions, as before, auto variables disappear and lose their values when the block is left; static variables retain their values. Also according to the same rules as for the declarations previously allowed at the start of functions, if no storage class is mentioned in a declaration the default is automatic. Implementation of inner-block declarations is such that there is no run-time cost associated with using them. 4. Initialization (part 1) This compiler properly handles initialization of structures so the construction struct { char name[8]; char type; float val; } x { "abc", 'a', 123.4 }; compiles correctly. In particular it is recognized that the string is supposed to fill an 8-character array, the `a' goes into a character, and that the 123.4 must be rounded and placed in a single-precision cell. Structures of arrays, arrays of structures, and the like all work; a more formal description of what is done follows. ::= ::= | , | { } | { , } An element is an expression or a comma-separated sequence of elements possibly enclosed in braces. In a brace-enclosed sequence, a comma is optional after the last element. This very ambiguous definition is parsed as described below. "Expression" must of course be a constant expression within the previous meaning of the Act. An initializer for a non-structured scalar is an element with exactly one expression in it. An "aggregate" is a structure or an array. If the initializer for an aggregate begins with a left brace, then the succeeding comma-separated sequence of elements initialize the members of the aggregate. It is erroneous for the number of members in the sequence to exceed the number of elements in the aggregate. If the sequence has too few members the aggregate is padded. If the initializer for an aggregate does not begin with a left brace, then the members of the aggregate are initialized with successive elements from the succeeding comma-separated sequence. If the sequence terminates before the aggregate is filled the aggregate is padded. The "top level" initializer is the object which initializes an external object itself, as opposed to one of its members. The top level initializer for an aggregate must begin with a left brace. If the top-level object being initialized is an array and if its size is omitted in the declaration, e.g. "int a[]", then the size is calculated from the number of elements which initialized it. Short of complete assimilation of this description, there are two simple approaches to the initialization of complicated objects. First, observe that it is always legal to initialize any object with a comma-separated sequence of expressions. The members of every structure and array are stored in a specified order, so the expressions which initialize these members may if desired be laid out in a row to successively, and recursively, initialize the members. Alternatively, the sequences of expressions which initialize arrays or structures may uniformly be enclosed in braces. 5. Initialization (part 2) Declarations, whether external, at the head of functions, or in inner blocks may have initializations whose syntax is the same as previous external declarations with initializations. The only restrictions are that automatic structures and arrays may not be initialized (they can't be assigned either); nor, for the moment at least, may external variables when declared inside a function. The declarations and initializations should be thought of as occurring in lexical order so that forward references in initializations are unlikely to work. E.g., { int a a; int b c; int c 5; ... } Here a is initialized by itself (and its value is thus undefined); b is initialized with the old value of c (which is either undefined or any c declared in an outer block). 6. Bit fields A declarator inside a structure may have the form : which specifies that the object declared is stored in a field the number of bits in which is specified by the constant. If several such things are stacked up next to each other then the compiler allocates the fields from right to left, going to the next word when the new field will not fit. The declarator may also have the form : which allocates an unnamed field to simplify accurate modelling of things like hardware formats where there are unused fields. Finally, : 0 means to force the next field to start on a word boundary. The types of bit fields can be only "int" or "char". The only difference between the two is in the alignment and length restrictions: no int field can be longer than 16 bits, nor any char longer than 8 bits. If a char field will not fit into the current character, then it is moved up to the next character boundary. Both int and char fields are taken to be unsigned (non-negative) integers. Bit-field variables are not quite full-class citizens. Although most operators can be applied to them, including assignment operators, they do not have addresses (i.e. there are no bit pointers) so the unary & operator cannot be applied to them. For essentially this reason there are no arrays of bit field variables. There are three twoes in the implementation: addition (=+) applied to fields can result in an overflow into the next field; it is not possible to initialize bit fields. 7. Macro preprocessor The proprocessor handles `define' statements with formal arguments. The line #define macro(a1,...,an) ...a1...an... is recognized by the presence of a left parenthesis following the defined name. When the form macro(b1,...,bn) is recognized in normal C program text, it is replaced by the definition, with the corresponding .ul bi actual argument string substituted for the corresponding .ul ai formal arguments. Both actual and formal arguments are separated by commas not included in parentheses; the formal arguments have the syntax of names. Macro expansions are no longer surrounded by spaces. Lines in which a replacement has taken place are rescanned until no macros remain. The preprocessor has a rudimentary conditional facility. A line of the form #ifdef name is ignored if `name' is defined to the preprocessor (i.e. was the subject of a `define' line). If name is not defined then all lines through a line of the form #endif are ignored. A corresponding form is #ifndef name ... #endif which ignores the intervening lines unless `name' is defined. The name `unix' is predefined and replaced by itself to aid writers of C programs which are expected to be transported to other machines with C compilers. In connection with this, there is a new option to the cc command: cc -Dname which causes `name' to be defined to the preprocessor (and replaced by itself). This can be used together with conditional preprocessor statements to select variant versions of a program at compile time. The previous two facilities (macros with arguments, conditional compilation) were actually available in the 6th Edition system, but undocumented. New in this release of the cc command is the ability to nest `include' files. Preprocessor include lines may have the new form #include where the angle brackets replace double quotes. In this case, the file name is prepended with a standard prefix, namely `/usr/include'. In is intended that commonly-used include files be placed in this directory; the convention reduces the dependence on system-specific naming conventions. The standard prefix can be replaced by the cc command option `-I': cc -Iotherdirectory 8. Registers A formal argument may be given the storage class `register.' When this occurs the save sequence copies it from the place the caller left it into a fast register; all usual restrictions on its use are the same as for ordinary register variables. Now any variable inside a function may be declared `register;' if the type is unsuitable, or if there are more than three register declarations, then the compiler makes it `auto' instead. The restriction that the & operator may not be applied to a register remains. 9. Mode declarations A declaration of the form typedef_______ type-specifier declarator ;_ makes the name given in the declarator into the equivalent of a keyword specifying the type which the name would have in an ordinary declaration. Thus typedef int *iptr; makes `iptr' usable in declarations of pointers to integers; subsequently the declarations iptr ip; .br int *ip; would mean the same thing. Type names introduced in this way obey the same scope rules as ordinary variables. The facility is new, experimental, and probably buggy. 10. Restrictions The compiler is somewhat stickier about some constructions that used to be accepted. One difference is that external declarations made inside functions are remembered to the end of the file, that is even past the end of the function. The most frequent problem that this causes is that implicit declaration of a function as an integer in one routine, and subsequent explicit declaration of it as another type, is not allowed. This turned out to affect several source programs distributed with the system. It is now required that all forward references to labels inside a function be the subject of a `goto.' This has turned out to affect mainly people who pass a label to the routine `setexit.' In fact a routine is supposed to be passed here, and why a label worked I do not know. In general this compiler makes it more difficult to use label variables. Think of this as a contribution to structured programming. The compiler now checks multiple declarations of the same name more carefully for consistency. It used to be possible to declare the same name to be a pointer to different structures; this is caught. So too are declarations of the same array as having different sizes. The exception is that array declarations with empty brackets may be used in conjunction with a declaration with a specified size. Thus int a[]; int a[50]; is acceptable (in either order). An external array all of whose definitions involve empty brackets is diagnosed as `undefined' by the loader; it used to be taken as having 1 element. external, at the head of functions, or in inner blocks may have initializations whose syntax is the same as previous external declarations with initializations. The only restrictions are that automatic structures and arrays may not be initialized (they can't be assigned eithdoc/misc/ctour/ios.r 444 3 12 25341 3650314651 7672 .de sr .sp 1 .ft I .ne 2 \\$1 .if t .sp .2 .br .ft R .. .de it \fI\\$1\fR .. .TL A New Input-Output Package .AU D. M. Ritchie .PP A new package of IO routines is available under the Unix system. It was designed with the following goals in mind. .IP 1. It should be similar in spirit to the earlier Portable Library, and, to the extent possible, be compatible with it. At the same time a few dubious design choices in the Portable Library will be corrected. .IP 2. It must be as efficient as possible, both in time and in space, so that there will be no hesitation in using it no matter how critical the application. .IP 3. It must be simple to use, and also free of the magic numbers and mysterious calls the use of which mars the understandability and portability of many programs using older packages. .IP 4. The interface provided should be applicable on all machines, whether or not the programs which implement it are directly portable to other systems, or to machines other than the PDP11 running a version of Unix. .PP It is intended that this package replace the Portable Library. Although it is not directly compatible, as discussed below, it is sufficiently similar that a set of relatively small, inexpensive adaptor routines exist which make it appear identical to the current Portable Library except in some very obscure details. .PP The most crucial difference between this package and the Portable Library is that the current offering names streams in terms of pointers rather than by the integers known as `file descriptors.' Thus, for example, the routine which opens a named file returns a pointer to a certain structure rather than a number; the routine which reads an open file takes as an argument the pointer returned from the open call. .SH General Usage .RT Each program using the library must have the line .DS #include .DE which defines certain macros and variables. The library containing the routines is `/usr/lib/libS.a,' so the command to compile is .DS cc . . . \-lS .DE All names in the include file intended only for internal use begin with an underscore `\_' to reduce the possibility of collision with a user name. The names intended to be visible outside the package are .IP stdin 10 The name of the standard input file .IP stdout 10 The name of the standard output file .IP stderr 10 The name of the standard error file .IP EOF 10 is actually \-1, and is the value returned by the read routines on end-of-file or error. .IP NULL 10 is a notation for the null pointer, returned by pointer-valued functions to indicate an error .IP FILE 10 expands to `struct \_iob' and is a useful shorthand when declaring pointers to streams. .IP BUFSIZ is a number (viz. 512) of the size suitable for an IO buffer supplied by the user. See .it setbuf, below. .IP "getc, getchar, putc, putchar, feof, ferror, fileno" 10 .br are defined as macros. Their actions are described below; they are mentioned here to point out that it is not possible to redeclare them and that they are not actually functions; thus, for example, they may not have breakpoints set on them. .PP The routines in this package, like the current Portable Library, offer the convenience of automatic buffer allocation and output flushing where appropriate. Absent, however, is the facility of changing the default input and output streams by assigning to `cin' and `cout.' The names `stdin,' stdout,' and `stderr' are in effect constants and may not be assigned to. .SH Calls .RT The routines in the library are in nearly one-to-one correspondence with those in the Portable Library. In several cases the name has been changed. This is an attempt to reduce confusion. If the attempt is judged to fail the names may be made identical even though the arguments may be different. The order of this list generally follows the order used in the Portable Library document. .sr "FILE *fopen(filename, type)" .it Fopen opens the file and, if needed, allocates a buffer for it. .it Filename is a character string specifying the name. .it Type is a character string (not a single character). It may be `"r",' `"w",' or `"a"' to indicate intent to read, write, or append. The value returned is a file pointer. If it is null the attempt to open failed. .sr "int getc(ioptr)" returns the next character from the stream named by .it ioptr, which is a pointer to a file such as returned by .it fopen, or the name .it stdin. The integer EOF is returned on end-of-file or when an error occurs. The null character is a legal character. .sr "putc(c, ioptr)" .it Putc writes the character .it c on the output stream named by .it ioptr, which is a value returned from .it fopen or perhaps .it stdout or .it stderr. The character is returned as value, but EOF is returned on error. .sr fclose(ioptr) The file corresponding to .it ioptr is closed after any buffers are emptied. A buffer allocated by the IO system is freed. .it Fclose is automatic on normal termination of the program. .sr fflush(ioptr) Any buffered information on the (output) stream named by .it ioptr is written out. Output files are normally buffered if and only if they are not directed to the terminal, but .it stderr is unbuffered unless .it setbuf is used. .sr exit(errcode) .it Exit terminates the process and returns its argument as status to the parent. This is a special version of the routine which calls .it fflush for each output file. To terminate without flushing, use .it \_exit. .sr feof(ioptr) returns non-zero when end-of-file has occurred on the specified input stream. .sr ferror(ioptr) returns non-zero when an error has occurred while reading or writing the named stream. The error indication lasts until the file has been closed. .sr "getchar( )" is identical to `getc(stdin)'. .sr "putchar(c)" is identical to `putc(c, stdout)'. .sr "char *gets(s)" reads characters up to a new-line from the standard input. The new-line character is replaced by a null character. It is the user's responsibility to make sure that the character array .it s is large enough. .it Gets returns its argument, or null if end-of-file or error occurred. .sr "char *fgets(s, n, ioptr)" reads up to .it n characters from the stream .it ioptr into the character pointer .it s. The read terminates with a new-line character. The new-line character is placed in the buffer followed by a null pointer. The first argument, or a null pointer if error or end-of-file occurred, is returned. .sr puts(s) writes the null-terminated string (character array) .it s on the standard output. A new-line is appended. No value is returned. .sr "fputs(s, ioptr)" writes the null-terminated string (character array) on the stream .it s. No new-line is appended. No value is returned. .sr "ungetc(c, ioptr)" The argument character .it c is pushed back on the input stream named by .it ioptr. Only one character may be pushed back. .sr "printf(format, a1, . . .)" .sr "fprintf(ioptr, format, a1, . . .)" .sr "sprintf(s, format, a1, . . .)" .it Printf writes on the standard output. .it Fprintf writes on the named output stream. .it Sprintf puts characters in the character array (string) named by .it s. The specifications are as usual. .sr "scanf(format, a1, . . .)" .sr "fscanf(ioptr, format, a1, . . .)" .sr "sscanf(s, format, a1, . . .)" .it Scanf reads from the standard input. .it Fscanf reads from the named input stream. .it Sscanf reads from the character string supplied as .it s. The specifications are identical to those of the Portable Library. .sr "fread(ptr, sizeof(*ptr), nitems, ioptr)" writes .it nitems of data beginning at .it ptr on file .it ioptr. It behaves identically to the Portable Library's .it cread. No advance notification that binary IO is being done is required; when, for portability reasons, it becomes required, it will be done by adding an additional character to the mode-string on the fopen call. .sr "fwrite(ptr, sizeof(*ptr), nitems, ioptr)" Like .it fread, but in the other direction. .sr rewind(ioptr) rewinds the stream named by .it ioptr. It is not very useful except on input, since a rewound output file is still open only for output. .sr system(string) .sr atof(s) .sr tmpnam(s) .sr abort(code) .sr "intss( )" .sr "cfree(ptr)" .sr "wdleng( )" are available with specifications identical to those described for the Portable Library. .sr "char *calloc(n, sizeof(object))" returns null when no space is available. The space is guaranteed to be 0. .sr ftoa is not implemented but there are plausible alternatives. .sr "nargs( )" is not implemented. .sr getw(ioptr) returns the next word from the input stream named by .it ioptr. EOF is returned on end-of-file or error, but since this a perfectly good integer .it feof and .it ferror should be used. .sr "putw(w, ioptr)" writes the integer .it w on the named output stream. .sr "setbuf(ioptr, buf)" .it Setbuf may be used after a stream has been opened but before IO has started. If .it buf is null, the stream will be unbuffered. Otherwise the buffer supplied will be used. It is a character array of sufficient size: .DS char buf[BUFSIZ]; .DE .sr "fileno(ioptr)" returns the integer file descriptor associated with the file. .PP Several additional routines are available. .sr "fseek(ioptr, offset, ptrname)" The location of the next byte in the stream named by .it ioptr is adjusted. .it Offset is a long integer. If .it ptrname is 0, the offset is measured from the beginning of the file; if .it ptrname is 1, the offset is measured from the current read or write pointer; if .it ptrname is 2, the offset is measured from the end of the file. The routine accounts properly for any buffering. .sr "long ftell(iop)" The byte offset, measured from the beginning of the file, associated with the named stream is returned. Any buffering is properly accounted for. .sr "getpw(uid, buf)" The password file is searched for the given integer user ID. If an appropriate line is found, it is copied into the character array .it buf, and 0 is returned. If no line is found corresponding to the user ID then 1 is returned. .sr "strcat(s1, s2)" .it S1 and .it s2 are character pointers. The end (null byte) of the .it s1 string is found and .it s2 is copied to .it s1 starting there. The space pointed to by .it s1 must be large enough. .sr "strcmp(s1, s2)" The character strings .it s1 and .it s2 are compared. The result is positive, zero, or negative according as .it s1 is greater than, equal to, or less than .it s2 in ASCII collating sequence. .sr "strcpy(s1, s2) The null-terminated character string .it s2 is copied to the location pointed to by .it s1. .sr "strlen(s)" The number of bytes in s up to a null byte is returned. .it S is a character pointer. .sr "gcvt(num, ndig, buf)" .it Num is a floating or double quantity. .it Ndig significant digits are converted to ASCII and placed into the character array .it buf. The conversion is in Fortran .it e or .it f style, whichever yields the shorter string. Insignificant trailing zeros are eliminated. continued with \fBc\fP, \fBs\fP or \fBn\fP. .NH 2 Calling procedures .PP It is possible to call any of the procedures of the program from the debugger. This feature is useful both for testing individual procedures with different arguments and for calling a procedure which prints structudoc/misc/ctour/cdoc4 444 3 12 7534 3650314652 7621 .SH Delaying and reordering .PP Intertwined with the code generation routines are two other, interrelated processes. The first, implemented by a routine called .II delay, is based on the observation that naive code generation for the expression `a = b++' would produce .DS mov b,r0 inc b mov r0,a .DE The point is that the table for postfix ++ has to preserve the value of .II b before incrementing it; the general way to do this is to preserve its value in a register. A cleverer scheme would generate .DS mov b,a inc b .DE .II Delay is called for each expression input to .II rcexpr, and it searches for postfix ++ and \-\- operators. If one is found applied to a variable, the tree is patched to bypass the operator and compiled as it stands; then the increment or decrement itself is done. The effect is as if `a = b; b++' had been written. In this example, of course, the user himself could have done the same job, but more complicated examples are easily constructed, for example `switch (x++)'. An essential restriction is that the condition codes not be required. It would be incorrect to compile `if (a++) ...' as .DS tst a inc a beq ... .DE because the `inc' destroys the required setting of the condition codes. .PP Reordering is a similar sort of optimization. Many cases which it detects are useful mainly with register variables. If .II r is a register variable, the expression `r = x+y' is best compiled as .DS mov x,r add y,r .DE but the codes tables would produce .DS mov x,r0 add y,r0 mov r0,r .DE which is in fact preferred if .II r is not a register. (If .II r is not a register, the two sequences are the same size, but the second is slightly faster.) The scheme is to compile the expression as if it had been written `r = x; r =+ y'. The .II reorder routine is called with a pointer to each tree that .II rcexpr is about to compile; if it has the right characteristics, the `r = x' tree is constructed and passed recursively to .II rcexpr; then the original tree is modified to read `r =+ y' and the calling instance of .II rcexpr compiles that instead. Of course the whole business is itself recursive so that more extended forms of the same phenomenon are handled, like `r = x + y | z'. .PP Care does have to be taken to avoid `optimizing' an expression like `r = x + r' into `r = x; r =+ r'. It is required that the right operand of the expression on the right of the `=' be a ', distinct from the register variable. .PP The second case that .II reorder handles is expressions of the form `r = X' used as a subexpression. Again, the code out of the tables for `x = r = y' would be .DS mov y,r0 mov r0,r mov r0,x .DE whereas if .II r were a register it would be better to produce .DS mov y,r mov r,x .DE When .II reorder discovers that a register variable is being assigned to in a subexpression, it calls .II rcexpr recursively to compile the subexpression, then fiddles the tree passed to it so that the register variable itself appears as the operand instead of the whole subexpression. Here care has to be taken to avoid an infinite regress, with .II rcexpr and .II reorder calling each other forever to handle assignments to registers. .PP A third set of cases treated by .II reorder comes up when any name, not necessarily a register, occurs as a left operand of an assignment operator other than `=' or as an operand of prefix `++' or `\-\-'. Unless condition-code tests are involved, when a subexpression like `(a =+ b)' is seen, the assignment is performed and the argument tree modified so that .II a is its operand; effectively `x + (y =+ z)' is compiled as `y =+ z; x + y'. Similarly, prefix increment and decrement are pulled out and performed first, then the remainder of the expression. .PP Throughout code generation, the expression optimizer is called whenever .II delay or .II reorder change the expression tree. This allows some special cases to be found that otherwise would not be seen. rns non-zero when end-of-file has occurred on the specified input stream. .sr ferror(ioptr) returns non-zero when an error has occurred while reading or writing thedoc/misc/ctour/cdoc3 444 3 12 60141 3650314653 7632 .SH Code Generation .PP The grand plan for code-generation is independent of any particular machine; it depends largely on a set of tables. But this fact does not necessarily make it very easy to modify the compiler to produce code for other machines, both because there is a good deal of machine-dependent structure in the tables, and because in any event such tables are non-trivial to prepare. .PP The arguments to the basic code generation routine .II rcexpr are a pointer to a tree representing an expression, the name of a code-generation table, and the number of a register in which the value of the expression should be placed. .II Rcexpr returns the number of the register in which the value actually ended up; its caller may need to produce a .II mov instruction if the value really needs to be in the given register. There are four code generation tables. .PP .II Regtab is the basic one, which actually does the job described above: namely, compile code which places the value represented by the expression tree in a register. .PP .II Cctab is used when the value of the expression is not actually needed, but instead the value of the condition codes resulting from evaluation of the expression. This table is used, for example, to evaluate the expression after .II if. It is clearly silly to calculate the value (0 or 1) of the expression `a==b' in the context `if (a==b) ... ' .PP The .II sptab table is used when the value of an expression is to be pushed on the stack, for example when it is an actual argument. For example in the function call `f(a)' it is a bad idea to load .II a into a register which is then pushed on the stack, when there is a single instruction which does the job. .PP The .II efftab table is used when an expression is to be evaluated for its side effects, not its value. This occurs mostly for expressions which are statements, which have no value. Thus the code for the statement `a = b' need produce only the approoriate .II mov instruction, and need not leave the value of .II b in a register, while in the expression `a + (b = c)' the value of `b = c' will appear in a register. .PP All of the tables besides .II regtab are rather small, and handle only a relatively few special cases. If one of these subsidiary tables does not contain an entry applicable to the given expression tree, .II rcexpr uses .II regtab to put the value of the expression into a register and then fixes things up; nothing need be done when the table was .II efftab, but a .II tst instruction is produced when the table called for was .II cctab, and a .II mov instruction, pushing the register on the stack, when the table was .II sptab. .PP The .II rcexpr routine itself picks off some special cases, then calls .II cexpr to do the real work. .II Cexpr tries to find an entry applicable to the given tree in the given table, and returns \-1 if no such entry is found, letting .II rcexpr try again with a different table. A successful match yields a string containing both literal characters which are written out and pseudo-operations, or macros, which are expanded. Before studying the contents of these strings we will consider how table entries are matched against trees. .PP Recall that most non-leaf nodes in an expression tree contain the name of the operator, the type of the value represented, and pointers to the subtrees (operands). They also contain an estimate of the number of registers required to evaluate the expression, placed there by the expression-optimizer routines. The register counts are used to guide the code generation process, which is based on the Sethi-Ullman algorithm. .PP The main code generation tables consist of entries each containing an operator number and a pointer to a subtable for the corresponding operator. A subtable consists of a sequence of entries, each with a key describing certain properties of the operands of the operator involved; associated with the key is a code string. Once the subtable corresponding to the operator is found, the subtable is searched linearly until a key is found such that the properties demanded by the key are compatible with the operands of the tree node. A successful match returns the code string; an unsuccessful search, either for the operator in the main table or a compatble key in the subtable, returns a failure indication. .PP The tables are all contained in a file which must be processed to obtain an assembly language program. Thus they are written in a special-purpose language. To provided definiteness to the following discussion, here is an example of a subtable entry. .DS %n,aw F add A2,R .DE The `%' indicates the key; the information following (up to a blank line) specifies the code string. Very briefly, this entry is in the subtable for `+' of .II regtab; the key specifies that the left operand is any integer, character, or pointer expression, and the right operand is any word quantity which is directly addressible (e.g. a variable or constant). The code string calls for the generation of the code to compile the left (first) operand into the current register (`F') and then to produce an `add' instruction which adds the second operand (`A2') to the register (`R'). All of the notation will be explained below. .PP Only three features of the operands are used in deciding whether a match has occurred. They are: .IP 1. Is the type of the operand compatible with that demanded? .RT .IP 2. Is the `degree of difficulty' (in a sense described below) compatible? .RT .IP 3. The table may demand that the operand have a `*' (indirection operator) as its highest operator. .PP As suggested above, the key for a subtable entry is indicated by a `%,' and a comma-separated pair of specifications for the operands. (The second specification is ignored for unary operators). A specification indicates a type requirement by including one of the following letters. If no type letter is present, any integer, character, or pointer operand will satisfy the requirement (not float, double, or long). .IP b A byte (character) operand is required. .RT .IP w A word (integer or pointer) operand is required. .RT .IP f A float or double operand is required. .RT .IP d A double operand is required. .RT .IP l A long (32-bit integer) operand is required. .PP Before discussing the `degree of difficulty' specification, the algorithm has to be explained more completely. .II Rcexpr (and .II cexpr) are called with a register number in which to place their result. Registers 0, 1, ... are used during evaluation of expressions; the maximum register which can be used in this way depends on the number of register variables, but in any event only registers 0 through 4 are available since r5 is used as a stack frame header and r6 (sp) and r7 (pc) have special hardware properties. The code generation routines assume that when called with register .II n as argument, they may use .II n+1, \&... (up to the first register variable) as temporaries. Consider the expression `X+Y', where both X and Y are expressions. As a first approximation, there are three ways of compiling code to put this expression in register .II n. .IP 1. If Y is an addressible cell, (recursively) put X into register .II n and add Y to it. .RT .IP 2. If Y is an expression that can be calculated in .II k registers, where .II k smaller than the number of registers available, compile X into register .II n, Y into register .II n+1, and add register .II n+1 to .II n. .RT .IP 3. Otherwise, compile Y into register .II n, save the result in a temporary (actually, on the stack) compile X into register .II n, then add in the temporary. .PP The distinction between cases 2 and 3 therefore depends on whether the right operand can be compiled in fewer than .II k registers, where .II k is the number of free registers left after registers 0 through .II n are taken: 0 through .II n\-1 are presumed to contain already computed temporary results; .II n will, in case 2, contain the value of the left operand while the right is being evaluated. .PP These considerations should make clear the specification codes for the degree of difficulty, bearing in mind that a number of special cases are also present: .IP z is satisfied when the operand is zero, so that special code can be produced for expressions like `x = 0'. .RT .IP 1 is satisfied when the operand is the constant 1, to optimize cases like left and right shift by 1, which can be done efficiently on the PDP-11. .RT .IP c is satisfied when the operand is a positive (16-bit) constant; this takes care of some special cases in long arithmetic. .RT .IP a is satisfied when the operand is addressible; this occurs not only for variables and constants, but also for some more complicated constructions, such as indirection through a simple variable, `*p++' where .II p is a register variable (because of the PDP-11's auto-increment address mode), and `*(p+c)' where .II p is a register and .II c is a constant. Precisely, the requirement is that the operand refers to a cell whose address can be written as a source or destination of a PDP-11 instruction. .RT .IP e is satisfied by an operand whose value can be generated in a register using no more than .II k registers, where .II k is the number of registers left (not counting the current register). The `e' stands for `easy.' .RT .IP n is satisfied by any operand. The `n' stands for `anything.' .PP These degrees of difficulty are considered to lie in a linear ordering and any operand which satisfies an earlier-mentioned requirement will satisfy a later one. Since the subtables are searched linearly, if a `1' specification is included, almost certainly a `z' must be written first to prevent expressions containing the constant 0 to be compiled as if the 0 were 1. .PP Finally, a key specification may contain a `*' which requires the operand to have an indirection as its leading operator. Examples below should clarify the utility of this specification. .PP Now let us consider the contents of the code string associated with each subtable entry. Conventionally, lower-case letters in this string represent literal information which is copied directly to the output. Upper-case letters generally introduce specific macro-operations, some of which may be followed by modifying information. The code strings in the tables are written with tabs and new-lines used freely to suggest instructions which will be generated; the table-compiling program compresses tabs (using the 0200 bit of the next character) and throws away some of the new-lines. For example the macro `F' is ordinarily written on a line by itself; but since its expansion will end with a new-line, the new-line after `F' itself is dispensable. This is all to reduce the size of the stored tables. .PP The first set of macro-operations is concerned with compiling subtrees. Recall that this is done by the .II cexpr routine. In the following discussion the `current register' is generally the argument register to .II cexpr; that is, the place where the result is desired. The `next register' is numbered one higher than the current register. (This explanation isn't fully true because of complications, described below, involving operations which require even-odd register pairs.) .IP F causes a recursive call to the .II rcexpr routine to compile code which places the value of the first (left) operand of the operator in the current register. .RT .IP F1 generates code which places the value of the first operand in the next register. It is incorrectly used if there might be no next register; that is, if the degree of difficulty of the first operand is not `easy;' if not, another register might not be available. .RT .IP FS generates code which pushes the value of the first operand on the stack, by calling .II rcexpr specifying .II sptab as the table. .LP Analogously, .IP "S, S1, SS" compile the second (right) operand into the current register, the next register, or onto the stack. .LP To deal with registers, there are .IP R which expands into the name of the current register. .RT .IP R1 which expands into the name of the next register. .RT .IP R+ which expands into the the name of the current register plus 1. It was suggested above that this is the same as the next register, except for complications; here is one of them. Long integer variables have 32 bits and require 2 registers; in such cases the next register is the current register plus 2. The code would like to talk about both halves of the long quantity, so R refers to the register with the high-order part and R+ to the low-order part. .RT .IP R\- This is another complication, involving division and mod. These operations involve a pair of registers of which the odd-numbered contains the left operand. .II Cexpr arranges that the current register is odd; the R\- notation allows the code to refer to the next lower, even-numbered register. .LP To refer to addressible quantities, there are the notations: .IP A1 causes generation of the address specified by the first operand. For this to be legal, the operand must be addressible; its key must contain an `a' or a more restrictive specification. .RT .IP A2 correspondingly generates the address of the second operand providing it has one. .PP We now have enough mechanism to show a complete, if suboptimal, table for the + operator on word or byte operands. .DS %n,z F .sp 1 %n,1 F inc R .sp 1 %n,aw F add A2,R .sp 1 %n,e F S1 add R1,R .sp 1 %n,n SS F add (sp)+,R .DE The first two sequences handle some special cases. Actually it turns out that handling a right operand of 0 is unnecessary since the expression-optimizer throws out adds of 0. Adding 1 by using the `increment' instruction is done next, and then the case where the right operand is addressible. It must be a word quantity, since the PDP-11 lacks an `add byte' instruction. Finally the cases where the right operand either can, or cannot, be done in the available registers are treated. .PP The next macro-instructions are conveniently introduced by noticing that the above table is suitable for subtraction as well as addition, since no use is made of the commutativity of addition. All that is needed is substitution of `sub' for `add' and `dec' for 'inc.' Considerable saving of space is achieved by factoring out several similar operations. .IP I is replaced by a string from another table indexed by the operator in the node being expanded. This secondary table actually contains two strings per operator. .RT .IP I\(fm is replaced by the second string in the side table entry for the current operator. .PP Thus, given that the entries for `+' and `\-' in the side table (which is called .II instab) are `add' and `inc,' `sub' and `dec' respectively, the middle of of the above addition table can be written .DS %n,1 F I' R %n,aw F I A2,R .DE and it will be suitable for subtraction, and several other operators, as well. .PP Next, there is the question of character and floating-point operations. .IP B1 generates the letter `b' if the first operand is a character, `f' if it is float or double, and nothing otherwise. It is used in a context like `movB1' which generates a `mov', `movb', or `movf' instruction according to the type of the operand. .RT .IP B2 is just like B1 but applies to the second operand. .RT .IP BE generates `b' if either operand is a character and null otherwise. .RT .IP BF generates `f' if the type of the operator node itself is float or double, otherwise null. .PP For example, there is an entry in .II efftab for the `=' operator .DS %a,aw %ab,a IBE A2,A1 .DE Note first that two key specifications can be applied to the same code string. Next, observe that when a word is assigned to a byte or to a word, or a word is assigned to a byte, a single instruction, a .II mov or .II movb as appropriate, does the job. However, when a byte is assigned to a word, it must pass through a register to implement the sign-extension rules: .DS %a,n S IB1 R,A1 .DE .PP Next, there is the question of handling indirection properly. Consider the expression `X + *Y', where X and Y are expressions, Assuming that Y is more complicated than just a variable, but on the other hand qualifies as `easy' in the context, the expression would be compiled by placing the value of X in a register, that of *Y in the next register, and adding the registers. It is easy to see that a better job can be done by compiling X, then Y (into the next register), and producing the instruction symbolized by `add (R1),R'. This scheme avoids generating the instruction `mov (R1),R1' required actually to place the value of *Y in a register. A related situation occurs with the expression `X + *(p+6)', which exemplifies a construction frequent in structure and array references. The addition table shown above would produce .DS [put X in register R] mov p,R1 add $6,R1 mov (R1),R1 add R1,R .DE when the best code is .DS [put X in R] mov p,R1 add 6(R1),R .DE As we said above, a key specification for a code table entry may require an operand to have an indirection as its highest operator. To make use of the requirement, the following macros are provided. .IP F* the first operand must have the form *X. If in particular it has the form *(Y + c), for some constant .II c, then code is produced which places the value of Y in the current register. Otherwise, code is produced which loads X into the current register. .RT .IP F1* resembles F* except that the next register is loaded. .RT .IP S* resembles F* except that the second operand is loaded. .RT .IP S1* resembles S* except that the next register is loaded. .RT .IP FS* The first operand must have the form `*X'. Push the value of X on the stack. .RT .IP SS* resembles FS* except that it applies to the second operand. .LP To capture the constant that may have been skipped over in the above macros, there are .IP #1 The first operand must have the form *X; if in particular it has the form *(Y + c) for .II c a constant, then the constant is written out, otherwise a null string. .RT .IP #2 is the same as #1 except that the second operand is used. .LP Now we can improve the addition table above. Just before the `%n,e' entry, put .DS %n,ew* F S1* add #2(R1),R .DE and just before the `%n,n' put .DS %n,nw* SS* F add *(sp)+,R .DE When using the stacking macros there is no place to use the constant as an index word, so that particular special case doesn't occur. .PP The constant mentioned above can actually be more general than a number. Any quantity acceptable to the assembler as an expression will do, in particular the address of a static cell, perhaps with a numeric offset. If .II x is an external character array, the expression `x[i+5] = 0' will generate the code .DS mov i,r0 clrb x+5(r0) .DE via the table entry (in the `=' part of .II efftab) .DS %e*,z F I'B1 #1(R) .DE Some machine operations place restrictions on the registers used. The divide instruction, used to implement the divide and mod operations, requires the dividend to be placed in the odd member of an even-odd pair; other peculiarities of multiplication make it simplest to put the multiplicand in an odd-numbered register. There is no theory which optimally accounts for this kind of requirement. .II Cexpr handles it by checking for a multiply, divide, or mod operation; in these cases, its argument register number is incremented by one or two so that it is odd, and if the operation was divide or mod, so that it is a member of a free even-odd pair. The routine which determines the number of registers required estimates, conservatively, that at least two registers are required for a multiplication and three for the other peculiar operators. After the expression is compiled, the register where the result actually ended up is returned. (Divide and mod are actually the same operation except for the location of the result). .PP These operations are the ones which cause results to end up in unexpected places, and this possibility adds a further level of complexity. The simplest way of handling the problem is always to move the result to the place where the caller expected it, but this will produce unnecessary register moves in many simple cases; `a = b*c' would generate .DS mov b,r1 mul c,r1 mov r1,r0 mov r0,a .DE The next thought is used the passed-back information as to where the result landed to change the notion of the current register. While compiling the `=' operation above, which comes from a table entry like .DS %a,e S mov R,A1 .DE it is sufficient to redefine the meaning of `R' after processing the `S' which does the multiply. This technique is in fact used; the tables are written in such a way that correct code is produced. The trouble is that the technique cannot be used in general, because it invalidates the count of the number of registers required for an expression. Consider just `a*b + X' where X is some expression. The algorithm assumes that the value of a*b, once computed, requires just one register. If there are three registers available, and X requires two registers to compute, then this expression will match a key specifying `%n,e'. If a*b is computed and left in register 1, then there are, contrary to expectations, no longer two registers available to compute X, but only one, and bad code will be produced. To guard against this possibility, .II cexpr checks the result returned by recursive calls which implement F, S and their relatives. If the result is not in the expected register, then the number of registers required by the other operand is checked; if it can be done using those registers which remain even after making unavailable the unexpectedly-occupied register, then the notions of the `next register' and possibly the `current register' are redefined. Otherwise a register-copy instruction is produced. A register-copy is also always produced when the current operator is one of those which have odd-even requirements. .PP Finally, there are a few loose-end macro operations and facts about the tables. The operators: .IP V is used for long operations. It is written with an address like a machine instruction; it expands into `adc' (add carry) if the operation is an additive operator, `sbc' (subtract carry) if the operation is a subtractive operator, and disappears, along with the rest of the line, otherwise. Its purpose is to allow common treatment of logical operations, which have no carries, and additive and subtractive operations, which generate carries. .RT .IP T generates a `tst' instruction if the first operand of the tree does not set the condition codes correctly. It is used with divide and mod operations, which require a sign-extended 32-bit operand. The code table for the operations contains an `sxt' (sign-extend) instruction to generate the high-order part of the dividend. .RT .IP H is analogous to the `F' and `S' macros, except that it calls for the generation of code for the current tree (not one of its operands) using .II regtab. It is used in .II cctab for all the operators which, when executed normally, set the condition codes properly according to the result. It prevents a `tst' instruction from being generated for constructions like `if (a+b) ...' since after calculation of the value of `a+b' a conditional branch can be written immediately. .PP All of the discussion above is in terms of operators with operands. Leaves of the expression tree (variables and constants), however, are peculiar in that they have no operands. In order to regularize the matching process, .II cexpr examines its operand to determine if it is a leaf; if so, it creates a special `load' operator whose operand is the leaf, and substitutes it for the argument tree; this allows the table entry for the created operator to use the `A1' notation to load the leaf into a register. .PP Purely to save space in the tables, pieces of subtables can be labelled and referred to later. It turns out, for example, that rather large portions of the the .II efftab table for the `=' and `=+' operators are identical. Thus `=' has an entry .DS %[move3:] %a,aw %ab,a IBE A2,A1 .DE while part of the `=+' table is .DS %aw,aw % [move3] .DE Labels are written as `%[ ... : ]', before the key specifications; references are written with `% [ ... ]' after the key. Peculiarities in the implementation make it necessary that labels appear before references to them. .PP The example illustrates the utility of allowing separate keys to point to the same code string. The assignment code works properly if either the right operand is a word, or the left operand is a byte; but since there is no `add byte' instruction the addition code has to be restricted to word operands. able actually contains two strings per operator. .RT .IP I\(fm is replaced by the second string in the side table entry for the current operator. .PP Thus, given that the entries for `+' and `\-' in the side table (which is called .II instab) are `add' and `inc,' `sub' and `dec' respectively, the middle of of the above addition table can be written .DS %n,1 F I' R %n,aw F I A2,R .DE and it will be suitable doc/misc/ctour/cdoc2 444 3 12 12437 3650314653 7636 .SH Expression Optimization .PP Each expression tree, as it is read in, is subjected to a fairly comprehensive analysis. This is performed by the .II optim routine and a number of subroutines; the major things done are .IP 1. Modifications and simplifications of the tree so its value may be computed more efficiently and conveniently by the code generator. .RT .IP 2. Marking each interior node with an estimate of the number of registers required to evaluate it. This register count is needed to guide the code generation algorithm. .PP One thing that is definitely not done is discovery or exploitation of common subexpressions, nor is this done anywhere in the compiler. .PP The basic organization is simple: a depth-first scan of the tree. .II Optim does nothing for leaf nodes (except for automatics; see below), and calls .II unoptim to handle unary operators. For binary operators, it calls itself to process the operands, then treats each operator separately. One important case is commutative and associative operators, which are handled by .II acommute. .PP Here is a brief catalog of the transformations carried out by by .II optim itself. It is not intended to be complete. Some of the transformations are machine-dependent, although they may well be useful on machines other than the PDP-11. .IP 1. As indicated in the discussion of .II unoptim below, the optimizer can create a node type corresponding to the location addressed by a register plus a constant offset. Since this is precisely the implementation of automatic variables and arguments, where the register is fixed by convention, such variables are changed to the new form to simplify later processing. .RT .IP 2. Associative and commutative operators are processed by the special routine .II acommute. .RT .IP 3. After processing by .II acommute, the bitwise & operator is turned into a new .II andn operator; `a & b' becomes `a .II andn ~b'. This is done because the PDP-11 provides no .II and operator, but only .II andn. A similar transformation takes place for `=&'. .RT .IP 4. Relationals are turned around so the more complicated expression is on the left. (So that `2 > f(x)' becomes `f(x) < 2'). This improves code generation since the algorithm prefers to have the right operand require fewer registers than the left. .RT .IP 5. An expression minus a constant is turned into the expression plus the negative constant, and the .II acommute routine is called to take advantage of the properties of addition. .RT .IP 6. Operators with constant operands are evaluated. .RT .IP 7. Right shifts (unless by 1) are turned into left shifts with a negated right operand, since the PDP-11 lacks a general right-shift operator. .RT .IP 8. A number of special cases are simplified, such as division or multiplication by 1, and shifts by 0. .LP The .II unoptim routine performs the same sort of processing for unary operators. .IP 1. `*&x' and `&*x' are simplified to `x'. .RT .IP 2. If .II r is a register and .II c is a constant or the address of a static or external variable, the expressions `*(r+c)' and `*r' are turned into a special kind of name node which expresses the name itself and the offset. This simplifies subsequent processing because such constructions can appear as the the address of a PDP-11 instruction. .RT .IP 3. When the unary `&' operator is applied to a name node of the special kind just discussed, it is reworked to make the addition explicit again; this is done because the PDP-11 has no `load address' instruction. .RT .IP 4. Constructions like `*r++' and `*\-\-r' where .II r is a register are discovered and marked as being implementable using the PDP-11 auto-increment and -decrement modes. .RT .IP 5. If `!' is applied to a relational, the `!' is discarded and the sense of the relational is reversed. .RT .IP 6. Special cases involving reflexive use of negation and complementation are discovered. .RT .IP 7. Operations applying to constants are evaluated. .PP The .II acommute routine, called for associative and commutative operators, discovers clusters of the same operator at the top levels of the current tree, and arranges them in a list: for `a+((b+c)+(d+f))' the list would be`a,b,c,d,e,f'. After each subtree is optimized, the list is sorted in decreasing difficulty of computation; as mentioned above, the code generation algorithm works best when left operands are the difficult ones. The `degree of difficulty' computed is actually finer than the mere number of registers required; a constant is considered simpler than the address of a static or external, which is simpler than reference to a variable. This makes it easy to fold all the constants together, and also to merge together the sum of a constant and the address of a static or external (since in such nodes there is space for an `offset' value). There are also special cases, like multiplication by 1 and addition of 0. .II A special routine is invoked to handle sums of products. .II Distrib is based on the fact that it is better to compute `c1*c2*x + c1*y' as `c1*(c2*x + y)' and makes the divisibility tests required to assure the correctness of the transformation. This transformation is rarely possible with code directly written by the user, but it invariably occurs as a result of the implementation of multi-dimensional arrays. .PP Finally, .II acommute reconstructs a tree from the list of expressions which result. es the count of the number of registers required for an expression. Consider just `a*b + X' where X is some expression. The algorithm assumes that the value of a*b, once computed, requires just one register. If there are thredoc/misc/ctour/cdoc1 444 3 12 22330 3650314655 7630 .SH The Intermediate Language .PP .FS \(dgUNIX is a Trademark of Bell Laboratories. .FE Communication between the two phases of the compiler proper is carried out by means of a pair of intermediate files. These files are treated as having identical structure, although the second file contains only the code generated for strings. It is convenient to write strings out separately to reduce the need for multiple location counters in a later assembly phase. .PP The intermediate language is not machine-independent; its structure in a number of ways reflects the fact that C was originally a one-pass compiler chopped in two to reduce the maximum memory requirement. In fact, only the latest version of the compiler has a complete intermediate language at all. Until recently, the first phase of the compiler generated assembly code for those constructions it could deal with, and passed expression parse trees, in absolute binary form, to the second phase for code generation. Now, at least, all inter-phase information is passed in a describable form, and there are no absolute pointers involved, so the coupling between the phases is not so strong. .PP The areas in which the machine (and system) dependencies are most noticeable are .IP 1. Storage allocation for automatic variables and arguments has already been performed, and nodes for such variables refer to them by offset from a display pointer. Type conversion (for example, from integer to pointer) has already occurred using the assumption of byte addressing and 2-byte words. .IP 2. Data representations suitable to the PDP-11 are assumed; in particular, floating point constants are passed as four words in the machine representation. .PP As it happens, each intermediate file is represented as a sequence of binary numbers without any explicit demarcations. It consists of a sequence of conceptual lines, each headed by an operator, and possibly containing various operands. The operators are small numbers; to assist in recognizing failure in synchronization, the high-order byte of each operator word is always the octal number 376. Operands are either 16-bit binary numbers or strings of characters representing names. Each name is terminated by a null character. There is no alignment requirement for numerical operands and so there is no padding after a name string. .PP The binary representation was chosen to avoid the necessity of converting to and from character form and to minimize the size of the files. It would be very easy to make each operator-operand `line' in the file be a genuine, printable line, with the numbers in octal or decimal; this in fact was the representation originally used. .PP The operators fall naturally into two classes: those which represent part of an expression, and all others. Expressions are transmitted in a reverse-Polish notation; as they are being read, a tree is built which is isomorphic to the tree constructed in the first phase. Expressions are passed as a whole, with no non-expression operators intervening. The reader maintains a stack; each leaf of the expression tree (name, constant) is pushed on the stack; each unary operator replaces the top of the stack by a node whose operand is the old top-of-stack; each binary operator replaces the top pair on the stack with a single entry. When the expression is complete there is exactly one item on the stack. Following each expression is a special operator which passes the unique previous expression to the `optimizer' described below and then to the code generator. .PP Here is the list of operators not themselves part of expressions. .LP .Op EOF marks the end of an input file. .Op BDATA "flag data ..." specifies a sequence of bytes to be assembled as static data. It is followed by pairs of words; the first member of the pair is non-zero to indicate that the data continue; a zero flag is not followed by data and terminates the operator. The data bytes occupy the low-order part of a word. .Op WDATA "flag data ..." specifies a sequence of words to be assembled as static data; it is identical to the BDATA operator except that entire words, not just bytes, are passed. .Op PROG means that subsequent information is to be compiled as program text. .Op DATA means that subsequent information is to be compiled as static data. .Op BSS means that subsequent information is to be compiled as unitialized static data. .Op SYMDEF name means that the symbol .I name .R is an external name defined in the current program. It is produced for each external data or function definition. .Op CSPACE "name size" indicates that the name refers to a data area whose size is the specified number of bytes. It is produced for external data definitions without explicit initialization. .Op SSPACE size indicates that .I size .R bytes should be set aside for data storage. It is used to pad out short initializations of external data and to reserve space for static (internal) data. It will be preceded by an appropriate label. .Op EVEN is produced after each external data definition whose size is not an integral number of words. It is not produced after strings except when they initialize a character array. .Op NLABEL name is produced just before a BDATA or WDATA initializing external data, and serves as a label for the data. .Op RLABEL name is produced just before each function definition, and labels its entry point. .Op SNAME "name number" is produced at the start of each function for each static variable or label declared therein. Subsequent uses of the variable will be in terms of the given number. The code generator uses this only to produce a debugging symbol table. .Op ANAME "name number" Likewise, each automatic variable's name and stack offset is specified by this operator. Arguments count as automatics. .Op RNAME "name number" Each register variable is similarly named, with its register number. .Op SAVE number produces a register-save sequence at the start of each function, just after its label (RLABEL). .Op SETREG number is used to indicate the number of registers used for register variables. It actually gives the register number of the lowest free register; it is redundant because the RNAME operators could be counted instead. .Op PROFIL is produced before the save sequence for functions when the profile option is turned on. It produces code to count the number of times the function is called. .Op SWIT "deflab line label value ..." is produced for switches. When control flows into it, the value being switched on is in the register forced by RFORCE (below). The switch statement occurred on the indicated line of the source, and the label number of the default location is .I deflab. .R Then the operator is followed by a sequence of label-number and value pairs; the list is terminated by a 0 label. .Op LABEL number generates an internal label. It is referred to elsewhere using the given number. .Op BRANCH number indicates an unconditional transfer to the internal label number given. .Op RETRN produces the return sequence for a function. It occurs only once, at the end of each function. .Op EXPR line causes the expression just preceding to be compiled. The argument is the line number in the source where the expression occurred. .Op NAME "class type name" .Op NAME "class type number" indicates a name occurring in an expression. The first form is used when the name is external; the second when the name is automatic, static, or a register. Then the number indicates the stack offset, the label number, or the register number as appropriate. Class and type encoding is described elsewhere. .Op CON "type value" transmits an integer constant. This and the next two operators occur as part of expressions. .Op FCON "type 4-word-value" transmits a floating constant as four words in PDP-11 notation. .Op SFCON "type value" transmits a floating-point constant whose value is correctly represented by its high-order word in PDP-11 notation. .Op NULL indicates a null argument list of a function call in an expression; call is a binary operator whose second operand is the argument list. .Op CBRANCH "label cond" produces a conditional branch. It is an expression operator, and will be followed by an EXPR. The branch to the label number takes place if the expression's truth value is the same as that of .I cond. .R That is, if .I cond=1 .R and the expression evaluates to true, the branch is taken. .Op binary-operator type There are binary operators corresponding to each such source-language operator; the type of the result of each is passed as well. Some perhaps-unexpected ones are: COMMA, which is a right-associative operator designed to simplify right-to-left evaluation of function arguments; prefix and postfix ++ and \-\-, whose second operand is the increment amount, as a CON; QUEST and COLON, to express the conditional expression as `a?(b:c)'; and a sequence of special operators for expressing relations between pointers, in case pointer comparison is different from integer comparison (e.g. unsigned). .Op unary-operator type There are also numerous unary operators. These include ITOF, FTOI, FTOL, LTOF, ITOL, LTOI which convert among floating, long, and integer; JUMP which branches indirectly through a label expression; INIT, which compiles the value of a constant expression used as an initializer; RFORCE, which is used before a return sequence or a switch to place a value in an agreed-upon register. air is non-zero to indicate that the data continue; a zero flag is not followed by data and terminates the operator. The data bytes occupy the low-order part of a word. .Op WDATA "flag data ..." specifies a sequence of words to be assembled as static data; it is identical to the BDATA operator edoc/misc/ctour/cdoc0 444 3 12 276 3650314655 7574 .TL A Tour through the UNIX\(dg C Compiler .AU "MH 2C517 3770 D. M. Ritchie .AI .MH .OK Languages Computing ..AB ..AE .CS a b c d e f .de II .I \\$1 .R .. .de Op .SH \\$1 \fI\\$2 .IP .. .PP doc/misc/berknet/ 755 3 12 0 3653537327 7115 doc/misc/berknet/systemmanual.n 444 3 12 26625 2310622171 12111 .TL Network System Manual .AU Eric Schmidt .AI May 1979 (Revised March 1980) .SH Introduction .LP This documentation should be read by people responsible for maintaining the network (and the systems it runs on). It is divided into the following sections: .DS Maintaining the Network Setting up the Network Future Plans For Berkeley Bugs .DE Besides the commands described in the net introduction, there are a number of network-internal commands and statistics files. .SH Maintaining the Network .IP 1. Check the network: .RS .IP a) See if the network daemons are running with the command .DS % ps ax | grep net .DE If not running, see below. .IP b) Check the network queue to see how long commands have been waiting to be sent. .RE .IP 2. To restart the network daemons, try .RS .IP a) See if they are running, as above. .IP b) If so, there should be two net daemon processes per machine connection\(em ``kill \-9'' the child named ``netdaemon'' and the parent ``netstart'' will start a new one. .IP c) If there are no ``netstart's'' or ``netdaemon's'', executing the shell script .DS % /usr/net/bin/start .DE will truncate the log files and start up all the daemons on your machine. .IP d) To have two ``netdaemons'' pointing to the same machine is to invite disaster. What happens is that a few small requests get through, and then the error rate goes up by a factor of a hundred. The first thing to do when you see this is to check the number of net daemons. .LP (All this must be done as super-user). .RE .IP 3. There are files /usr/spool/berknet/plogfile? with a log for each directly-connected machine. Example: .DS % tail /usr/spool/berknet/plogfiley .DE will tell you in a cryptic form what the network has done on the Cory machine. This is a good file to inspect to see if transmissions are failing, etc. .IP Basically, ``sends'' begin ``^S'' and end ``^T''. If a send fails for some reason, ``^F'' is printed instead of ``^T''. ``^R'' is printed when a receive begins. ``RCV'' is entered when the command is received and executed. ``^P'' indicates a pass through. .IP The file /usr/spool/berknet/netstat?, one per directly-connected machine, have various statistics about the usage of the network, and the system load. .IP 4. The overloading on various machines is causing high error rates. If these rates persist, the network can overload to the point where the queues are immense and nothing gets through. The only thing that can be done at this point is to remove the files (using .I netrm as super-user) and adjust the delay times in the `initfile'. .IP 5. If free space is a scarce commodity, truncate logfile and plogfile?, and check /usr/spool/berknet/send? and /usr/spool/berknet/rcv. If there are any files there which are quite old, use your judgement to remove them. .IP 6. Net news should be provided periodically (usually in `/usr/help' or `/usr/news'). .IP 7. The network queues may have too many entries and ``break'' the simple rendezvous protocol I use. The easiest way to fix this is to rename the send directory that is too large, make a new, empty one, and move a small group of files in at a time from the rename'd directory to the new one. In this way the daemon thinks the sending directory is small and it less likely to have problems. .IP 8. The netdaemons take a number of command line options: .DS netdaemon \-m mach [\-d] [\-or] [\-os] [\-ou num] .DE where \-m is required and specifies the remote machine. If \-d is set, debug mode is turned on. If \-or is specified, the daemon will only recieve, not send, requests (``or'' stands for only receive). Likewise, \-os is ``only send''. Finally, ``\-ou num'', where num is a user-id, as returned by getuid(), will force the daemon to only send queue files owned by ``root'' (pass-throughs), owned by ``network'' (mail, e.g.) and by user-id num. .SH Setting up the Network .IP 1. Hardware .RS .PP For another machine to join the network, there must be some hardware link, such as tty lines, special character-oriented hardware, or DMA lines between the two machines. The software does not require the link to be reliable or fast. The best way to start is with slow-speed TTY lines (say 1200 baud) which demonstrate the network's usefulness at low cost. The highest transfer speed on a TTY link is about one-half the link speed (at best), because of processing time, the 3 \(-> 4 character expansion from 8 bits to 6, and the responses. .RE .IP 2. Software .RS .PP To run the network code, you must have a .UX running Version 6 or 7. Version 7 machines should have all the right software already. Version 6 systems must have the .I make command, the ``Version 7'' C compiler that came out a few years after initial Version 6 (about 1978), and the .I alarm() system call. This compiler, for example, supports multi-level include files. .PP There is a directory ``/usr/src/cmd/berknet'' with all the network source files and a ``makefile''. The file ``READ_ME'' has information about the different conditional compilation option available, and table entries which must be made in the `.c' files. .PP Assuming the options have been specified in the makefile, the command .DS % make all .DE will make all the necessary files. Then the command .DS % make install DESTDIR= .DE will install the user commands and service programs. The directories are specified as options in the makefile. Finally, .DS % make clean .DE removes all the `.o' and executable files. .PP There are also other little-used programs, made by ``make othernet''. Included are programs to send and receive packets and files, and a program to simulate TTY lines using pipes. It should not be necessary to run these. .PP The documentation is in /usr/man/man1 and in /usr/doc/berknet. .RE .IP 3. Directories and Files. .RS .PP The central directories are `/usr/net', which has subdirectories `bin' and `network', and `/usr/spool/berknet', which has subdirectories `rcv' and `send?', where the `?' represents the one-letter codes of the directly-connected machines. For various reasons, the support programs .I (netdaemon, netstart, mmail, mwrite, .R etc.) must be in `/usr/net/bin'. The user programs may be anywhere but the pathnames in ``Paths.h'' must be reset correctly. .PP The logfiles are `logfile' and `plogfile?', one for each directly-connected machine. If not present in `/usr/spool/berknet', they are not created. .PP The file `/usr/net/bin/start' should start up all the net daemons on the current machine. This file is normally executed by `/etc/rc'. The file `/usr/net/initfile' has a format similar to `.netrc' but is read by the net daemons when they are started. It has the network device names, speed and various tuning parameters. The complete list is in the source file `netrc.c'. It is generally possible to change almost anything about the network through the `initfile' and restarting the daemon. .PP The program `/usr/net/bin/netstart' is a simple program to start up a net daemon, and if it should abort for any reason, restart it. .PP There must be an account `network', which executes all responses and the free commands. Its login directory should be `/usr/net/network' and login shell should be `nsh' in that directory. The list of free commands can be changed in `nsh.c'. .PP At Berkeley, we follow the convention that the TTY special files are named `/dev/net-X', where `X' is the remote machine name. .PP The .UX mail program should be modified to recognize remote names and to fork a ``/usr/net/bin/sendberkmail'' command. Since many people will not or cannot add the options the network would like mail to have, there is a program ``v6mail.c'' that implements all the options the network wants. .RE .IP 4. Adding a new machine. .RS .PP Tables in `config.h' must be updated. Machine descriptions (V6, etc.) must be added to `mach.h'. Path names must be specified in `Paths.h'. Free commands must be checked in `nsh.c'. A procedure ``gothru'' in `sub.c' must be updated. All the files etc. described in #3 above must be present. .RE .SH Future Plans .PP It is important to understand the scope of this network; what it is and what it is not. Since it is ``batched'', there are a lot of things it cannot do. Our experience is that remote file copying, mailing and printing between .UX machines are adequate for our immediate needs. .PP In the future, we will concentrate on improving the hardware and speeding up the network, rather than major user-interface changes. .PP This is a list of the things that have been planned for the future for the network. .IP 1. Use Bill Joy's retrofit library to simulate the version 7 system calls. This would reduce the dependence on conditional compilation for V6 code. .IP 2. The file length restriction is a major inconvenience. One way to allow large files would be to send large files (over 100,000 chars) only when there are no smaller ones. This would be non-preemptive, but might be workable. Another way would be to have two hardware links, and two sets of daemons, one for large files and one for small ones. .IP 3. Bob Fabry has suggested generalizing the machine name to be user-definable as a login/machine pair, to make it easier for people with multiple accounts on multiple machines. .IP 4. It is possible to share binaries between all the similar machine configurations (e.g. the Comp. Center machines). This involves ``patching'' the local machine in the binary. .IP 5. Ed Gould suggested that the notion of ``default'' machine was too restrictive\(em that an appropriate default for, say, ``netlpr'' was a nearby machine with a quality printer, whereas the default for ``net'' should be the logical most useful machine. .IP 6. Security \(em I have just recently bullet-proofed the network so `root' commands are very restricted. However, the presence of passwords in the `.netrc' files poses a hazard to other machines when one machine is broken into. As long as the root password is not in a file, the root is safe. I am fairly convinced there is no way using encryption to handle the `.netrc' files. The introductory documentation is very explicit about the threat these passwords pose. .IP 7. Certain other more exotic requests are unlikely to get done until things change: .RS .IP a) Having the same user-id's across machines. .IP b) Adding an option to ``net'' to wait until a response has been received. .IP c) There should be a net status command which would give things like load averages, the number of users, etc. .IP d) The notion of a local queue is not general enough\(em .I netq should print out relevant queues on other machines. .IP e) Files on intermediate machines can't be \fInetrm\fP'ed. .RE .SH For Berkeley .IP 1. A driver for the network links to avoid character processing would make 9600-baud practical. On the Computer Center machines, this could be accomplished using a high speed link through the Bussiplexor. .IP 2. We need a .I netrcs command to use the rcs facilities from remote machines. .SH Bugs .IP 1. Extra files beginning with `df...' are created in the `send?' directories, with no control files (`cf...'). They should be removed periodically. .I netrm will remove them. .IP 2. In general, some requests can block the queue until removed. Shorter requests will get through, and longer ones will not. Again, their net queue files should be removed. .IP 3. The network rendezvous protocol seems to occasionally get in a state where a specific file is continually retransmitted and never seems to get through. This happens when both the host system and the network queues are overloaded, and thus is very unpleasant to debug. .IP 4. The network daemons occasionally core dump. They should not. assignment code works properly if either the right operand is a word, or the left operand is a byte; but sdoc/misc/berknet/refcard.n 444 3 12 6444 2312027623 10755 .LP .sp 2 .ce .B \s+2Berkeley Network Quick Reference\s0 .R .sp .ce 2 May 1979 (updated March 1980) .sp 1 .ds a \fR[\fP .ds b \fR]\fP .TS l l l. \fBCommand Summary Example Explanation\fP \fBnetcp\fI fromfile tofile\fR % netcp\ \ defs.h\ \ C:defs.h copy defs.h to C machine % netcp\ \ A:fig1\ \ fig1 copy from A to here % netcp\ \ Cory:q1\ \ D:q1 copy from Cory to D \fBmail\fI mach:user\fR % mail\ \ A:alan send mail to ``alan'' on A % mail\ \ A:alan\ \ C:george multiple recipients \fBnetmail \*a\-c\*b \*a\fImach\*b\fR % netmail\ \ Cory read mail on Cory machine % netmail\ \-c\ Cory:usern check mail on Cory machine \fBnetlpr \*a\-m \fImach\*b file\fR % netlpr\ \ \-m D\ \ p1.p print p1.p on D lineprinter \fBnetq \*a\-a\*b \*a\fImach\*b\fR % netq list network queue % netq\ \ \-a\ \ Cory ... all files to Cory \fBnetrm \*a\-\*b \*a\fIcode\*b\fR % netrm\ \ \- remove the user's requests \fBnet \*a\-m \fImach\fB\*b \*a\-\*b \fIcommand\fR % net\ \ \-m A\ \ who send who to A machine % net\ \ \-\ \ \-mA\ \ lpr\ \ resp" .DE will create a file `resp' in your login directory on the \*Y machine. It is a good idea to put the command in quotes, and it .I must be in quotes if I/O redirection (<, >, or other syntax special to the shell) is used. .PP If you do not specify the remote machine explicitly (or in the ``.netrc'' file, explained below), the default machine will be used (see Appendix A). .PP The .B \- .R option indicates that standard input from the local machine is to be supplied to the command executing remotely as standard input, thus if defaults for the login name and password are set up correctly as described below, .DS % net \-m \*Y \- "mail ripper" \ \ \ \ { message to ripper } {control-d} .DE is equivalent to .DS % mail \*Y:ripper \ \ \ \ { message to ripper } {control-d} .DE .PP The net command also has other options not documented here. See the .UX Programmer's Manual sections for more details. .SH Setting Defaults .PP Instead of repeatedly typing frequently-needed options for every invocation of the various network commands, the user may supply in his login directory a file ``.netrc'', which contains the repeated information. The ``.netrc'' file is typically used to specify login names on remote machines, as well as other options. An example of such a file is given below: .DS default \*Y machine \*Y, login dracula machine \*Z login dracula, quiet yes .DE .LP This example sets the default machine to \*Y so that for net commands where a remote machine is not explicitly specified, the command will then be executed on the \*Y machine. The second and third lines indicate for the \*Y and \*Z machines a login name of ``dracula'' should be used to network commands, and to assume the ``quiet'' option on all commands destined for the \*Z machine. The complete list of options that may follow the machine indication is: .sp 1 .TS center box; cB s s s l l l l. .netrc options for each machine Option Parameter Default Comment _ \fBlogin\fP name localname login name for remote machine \fBpassword\fP password (none) password for remote login name \fBcommand\fP command (none) default command to be executed \fBwrite\fP yes/no yes if possible, write to user \fBforce\fP yes/no no always prompt for name and password \fBquiet\fP yes/no no like the \fB\-q\fR option .TE .sp 1 .PP In setting up the ``.netrc'' file, if the ``default'' option is present, it must be the first line of the file. The information for each machine starts with the word ``machine'' and the machine name and continues one or more lines up to another machine indication (or the end of the file). Input is free-format. Multiple spaces, tabs, newlines, and commas serve as separators between words. Double quotes (") must surround passwords with blanks or special characters in them. .SH How to Specify Remote Passwords .PP For the commands which require the password for the account on the remote machine, there are a number of ways to specify the password: .IP 1) letting the command ask you, as in the .I netcp example in Section 1, .IP 2) specifying it with an alias (if using the C shell), .IP 3) putting it into the current environment if the local machine is running .UX Version 7, .IP 4) specifying it on the command line with the .B \-p .R option, .IP 5) storing it in the ``.netrc'' file, described in the previous section. .PP These can be ranked in order of security, from 1 = greatest security to 5 = lowest security, from the point of view of security of passwords from unauthorized use by other users and possibly an illicit super-user. Each is described in turn: .IP 1) If you make no effort to specify the remote password elsewhere, the network commands will prompt you with: .DS Password(mach:username): .DE Type your password, followed by a carriage return. This is the most secure mode of specifying passwords. If the net command is executed in the background (i.e. with ``&'') then the command can't read the password from your terminal and one of options 2-5 below must be used. .IP 2) The alias feature of the C shell can be used to specify the remote password. The command .DS % alias\ netcp\ netcp\ \-l\ godzilla\ \-p\ $pass .DE in the ``.cshrc'' file, followed by .DS % set\ path=your-passwd .DE right before using the network will set for subsequent .I netcp commands the login name ``godzilla'' and password ``passwd''. This alias command must be given everytime you login (see the .UX Programmers Manual section for the C shell (csh (1)) for more information about .I alias. Do .I not put this alias command in your ``.login'' file. .IP 3) If running on a Version 7 .UX system, the password can be put in the current environment. The command (to the C shell) .DS % setenv\ MACH\fImch\fR\ \(ganetlogin\ \-m\ \fImch\fR\(ga .DE or (to the default Version 7 ``Bourne'' shell) .DS % MACH\fImch\fR=\(ganetlogin\ \-m\ \fImch\fR\(ga % export MACH\fImch\fR .DE will prompt you for a login name and password for the remote machine .I mch and put an encrypted copy of the password in your environment. (Note the back-quotes to the shell.) Subsequent network commands will find it in your environment and not prompt you for it. These encrypted passwords are invalidated after the user logs out. Type ``man netlogin'' for more information on the .I netlogin command. .IP 4) Each net command takes a .B \-p .R option on the command line to specify the password. These are usually put in shell command scripts. These shell script files should have file mode 0600 \- use the chmod(I) command to set the mode. .IP 5) The remote password can be specified in the user's ``.netrc'' file. If passwords are present, the ``.netrc'' file must have mode 0600 (as in #4 above). .LP The system managers recommend options 1-3 and warn against 4 and 5. Should someone break into your account on one machine, and you use option 4 or 5, you will have to change your passwords on all net machines for which your passwords have been stored in shell script files or in the ``.netrc'' file. .SH Log File .PP The file ``/usr/spool/berknet/logfile'' has a record of the most recent requests and responses, each line of which is dated. Lines indicating ``sent'' show the file name sent; lines indicating ``rcv'' show commands executed on the local machine (C: ), their return code (R: ), and their originator. For example, on the \*Y machine, the logfile: .DS .cs R 23 Feb 28 10:29: rcv \*X: neil (neil) R: 0 C: netcp design \*Y:design Feb 28 10:43: sent tuck to \*Z (z00466, 136 bytes, wait 2 min 3 sec) Feb 28 11:05: rcv \*X: bill (bill) R: 0 C: netcp structures \*Y:structures .cs R .DE shows three entries. In this example, there are two .I netcp commands sending files from the \*X machine to \*Y, each from a different user. The second command sent was originated here by ``tuck'' and is 136 bytes long; the command that was sent is not shown. The command .DS % netlog .DE will print the last few lines of this file. Its prototype is .DS \fBnetlog \-\fInum\fR .DE where .I num is an integer will print the last .I num lines from the file. .SH Acknowledgements .PP Special thanks go to Bob Fabry, Bill Joy, Vance Vaughan, Ed Gould, Robyn Allsman, Bob Kridle, Jeff Schriebman, Kirk Thege and Ricki Blau of Berkeley, and Dave Boggs of X\s-2EROX\s0 P\s-2ARC\s0 for their help in making this network possible. .bp .ce .I "Appendix A" .sp 2 .ce The Network at Berkeley .sp 2 .NH 0 The Configuration (March 1, 1980) .sp .R .TS center box; cB s s s s l l l l l. The Current State of the Berkeley \s-2UNIX\s0 Network Machine Internal Run Default Other Name Name By Machine Name(s) _ A A Computer Center C B B Computer Center D C C Computer Center A D D Computer Center C E E Computer Center C Ing70 I I\s-2NGRES\s0 Group IngVAX Ingres IngVAX J I\s-2NGRES\s0 Group Ing70 Image M Sakrison ESVAX ESVAX O EE-CE Research CSVAX SRC S Survey Res. Cent. D CSVAX V CS Research Cory Cory Y EECS Dept. CSVAX EECS40 Z EECS Dept. ESVAX .TE .sp 3i .LP If a path exists from the local machine to the requested remote machine, the network will forward the request to the correct machine. Thus Cory users may communicate with all the other machines on the network as well as C and CSVAX (with a degradation in speed because of the intermediate machine(s)). The links between Ing70\-IngVAX, Ing70\-CSVAX, A\-C, C\-D, C\-E, and B\-D run at 9600 Baud, the other links run at 1200 Baud. .NH Documentation .PP The network commands .I (net, netq, netrm, netlog, netcp, netmail, netlpr, netlogin) .R are all documented in the .UX Programmers Manual. For example, .DS L % man netq .DE will print the .I netq manual section. .PP There are two more documents available: .DS Network System Manual Berkeley Network Retrospective .DE The Manual is intended for the systems staff who will maintain the network. The Retrospective is my Master's report and details the history of the project, discusses the design, and lists future plans. .PP There is an up-to-date news file: .DS L % news net or % help net or % cat /usr/net/news {if those fail} .DE which prints news about the network, dated and with the most recent news first. .PP The .UX Programmer's Manual, section I, has information on the .I chmod, cp, mail, who, .R and .I write commands mentioned in the text. Also, the .I help command has information about file protections: .DS L % news access {on the Cory machine} or % help permissions {on the CC machines} .DE .NH Features at Berkeley .IP a) There is a built-in character limit of 100,000 characters per single transmission, which cannot be overridden. The limit is 500,000 characters between the I\s-2NGRES\s0 machines. Longer files must be split into smaller ones in order to be sent. .IP b) The 1200 Baud links between machines seldom transmit any faster than 50 characters per second (for 9600 Baud links, 350 characters a second), and can slow to a fraction of that in peak system loading periods. This is due to an expansion of the data packets to accomodate a seven-bit data path, wakeup time on the machines, and the packet sent in acknowledgement. Heavy file transfer is faster by magnetic tape. .IP c) On the CSVAX, IngVAX, and ESVAX the net commands are all in `/usr/ucb'. Your search path on these VAX's should be set to include the directory `/usr/ucb'; otherwise you will have to prefix all net commands by `/usr/ucb', as in `/usr/ucb/netcp'. .IP d) Limited Free Commands .RS .PP Users who do not have accounts on remote machines may still execute certain commands by giving a remote login name of ``network'', and no remote password. The commands currently allowed are: .KS .TS l l l l l. bpq netlog rcs vpq whom epq netq rcslog w write finger ps rcsq where yank lpq pstat trq who .TE .KE .LP The .I lpr command is allowed on the I\s-2NGRES\s0 machine. Also, .I mail to remote machines and .I netlpr between Computer Center machines do not require a remote account. The EECS40 machine allows no free commands (but allows the sending of mail). .PP .LP For example, to execute an .I lpq command on the A machine, the user would type: .DS % net\ \-l\ network\ \-m\ A\ ``who'' .DE .RE .IP e) If no machine name specification is in the front of a full path name, the first four characters are checked and the machine is inferred from that if possible. In the command .DS % netcp file1 /ca/schmidt/file1 .DE the second file name is equivalent to ``C:file1'', if you are ``schmidt'' on the C machine. .IP f) The network can only send files in one direction at a time. Thus confirmations can slow down heavy file transfer. If you regularly use a shell script to transfer a set of files, the .B \-q .R option to .I netcp will improve transfer time. .IP g) The network creates a heavy load on the system and thus is expensive to run. If general user throughput is adversely affected, a charge will be implemented on the Computer Center machines. .IP h) When transferring files, quota overflow will result in a partial copy, so you should check the space requirements of the file being sent. .IP i) The Computer Center ``A'' machine's phototypesetter is usable from other network machines. If on one of the B-E machines, you do not need an account on the A machine. You simply type .DS % troff\ \-Q\ other-options\ file(s) .DE instead of the normal .DS % troff\ other-options\ file(s) .DE The troff command is executed on the local machine and the phototypesetter instructions are sent to the A machine. You will be sent mail both when the file is queued and when it is finally typeset. To see your place in the .I troff queue, type: .DS % trq .DE on any Computer Center machine. There is a command .DS % trrm\ code .DE (where .I code is the code from the .I trq command) to remove queue files before they have been typeset. .I Trrm must be executed on the same machine from which the job was submitted. .RS .PP If you are on a non-Computer Center machine, you may use the .I nettroff command: .DS % nettroff\ options\ file(s) .DE which is similar to the ``troff \-Q'' command earlier. You will need an account on the A machine and the .I trrm command doesn't work from a non-Computer Center machine. .PP If using .I nettroff, no more than 15 pages may be sent to the typesetter. If using .I troff more than 15 pages may be sent only if the .B \-s .R option is specified (see troff(1) for more information). The network will not transfer any file longer than 100,000 characters to the A machine. (It is best to aim for files of 25,000 characters or less)\(dg. .FS \(dg Characters from .I troff\fR's output, not the user's source files. It is our general experience that .I troff outputs roughly twice as many characters as are in the source file (before any .I eqn or .I tbl preprocessing.) .FE For more information, type .DS L man troff {on the Computer Center machines} or man nettroff {on the other machines} .DE The .I nettroff command is not supported by the Computer Center. .RE .IP j) The .I netlpr command allows ``epr'', ``bpr'', and ``vpr'' as alternate lineprinters (using the \fB\-c\fP option). .NH Bugs in systems at Berkeley (As of March 1, 1980) .IP a) If you are on the Computer Center machines using obsolete shells (/usr/pascal/sh, /usr/pascal/nsh) and have a ``.profile'' or ``.shrc'' file to change your shell prompt, you must make sure that you don't turn on ``prompting'' for non-interactive shells. This will interfere with the net commands. You should use this shell command to change your prompt: .DS ${prompt?prompt=P} .DE where ``P'' is the prompt desired. This will avoid the problem. .IP If you set the variable .I time in the C shell, extraneous time stamps may appear in response messages. The correct way to set the variable .I time in the C shell is .DS if ($?prompt) then set time=\fInum\fP endif .DE where .I num is the time interval in seconds. .IP b) The file mode should be preserved by .I netcp and it should be possible to default the second file name to a directory as in cp(I). .IP c) Various response messages are lost. This includes ``fetching'' files when the file being retrieved never arrives. I suspect this has something to do with unreliable delivery of error messages, but this is not reliably reproducible. .IP d) The network makes no provision for errors in transit on intermediate machines, such as ``No more processes'' or ``File System Overflow''. While these occur only rarely, when they do, no message or notification is sent to anyone. .IP e) The network commands are too slow on heavily-loaded instructional machines. The .I net command has to read the password file, ``.netrc'' file and the ``/etc/utmp'' file. .IP f) The queue files are normally sent shortest-job first. Unfortunately, under heavy loading the queue-search becomes too expensive and the network will choose the next file to send from the first 35 queue entries it finds in the queue directory, so the user should not depend on the requests being sent shortest-first. .IP g) Comments and bug discoveries are encouraged and can be sent by local or remote mail to ``csvax:schmidt''. .bp .ce .I "Appendix B" .sp 2 .ce Getting Started \(em An Example .sp .LP The best way to start out is to follow this example. Suppose you're a Cory user, and you have accounts on the A and CSVAX machines. .IP 1) Add a file ``.netrc'' (mode 600) to your login directory, as in the following example: .DS L default CSVAX machine A login \fIyourNameOnA\fP machine CSVAX login \fIyourNameOnCSVax\fP .DE (If ``default'' occurs, it must be the first line of the file.) .IP 2) Make sure that .RS .IP a) if you are on one of the VAX's, you have in your search path the directory `/usr/ucb'. Otherwise, on those machines you will have to prefix all commands by `/usr/ucb/' (e.g. `/usr/ucb/netcp'). .IP b) on the Computer Center machines, if you choose to set your shell prompt, you have done so correctly (details in Appendix A). .RE .IP 3) Then type .DS L % net\ ``who'' % netq .DE which will send a .I w command to the CSVAX; some undetermined time later you will have written (or mailed) to you the output from the command executed on the CSVAX machine. .IP The adventuresome may try: .DS L % net\ \-m\ A\ ``who'' .DE with the effect of being routed more slowly through an intermediate link in the net. nteger will print the last .I num lines from the file. .SH Acknowledgements .PP Special thanks go to Bob Fabry, Bdoc/misc/berknet/masters.n 444 3 12 111170 2157660767 11101 .if n .ds y + .if n .ds z ++ .if t .ds y \(dg .if t .ds z \(dd .ds a ``An Introduction to the Berkeley Network'' .ds b ``Network System Manual'' .TL The Berkeley Network \- A Retrospective .AU Eric Schmidt .AI Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 .AB The Berkeley Network connects a number of .UX machines on the Berkeley campus. It provides facilities for file transfer, sending and reading mail, and remote printing. Operating in a batch mode, network requests are transferred one by one through an inter-connected network until they reach their final destination. .PP This document describes the history and goals of this project, the design decisions faced, discusses issues in portable software development in networks, and discusses the future of this project. .AE .SH .ce Introduction .sp .5 .PP This document is intended for readers with an interest in networking who are familiar with two other documents about the network, \*a, and the \*b, by this author. It is not necessary to read this document to set up and maintain the network, although systems persons will benefit if they are familiar with the concepts presented here. .PP The sections are presented as follows: .DS Principals History Overall System Description Protocol Explanation Portability Security Future Plans Summary .DE .PP The most important section is the last, which details a set of principles the author has learned during this project. .SH .ce .sp 1 Principals .sp .5 .PP This project was a collaboration of many individuals. Dr. Robert S. Fabry participated in the initial design and has exerted the strongest influence on polishing the final product. Bill Joy and Ed Gould provided valuable technical expertise every step of the way, primarily about developing systems programs. The support staff of the EECS Department and the Computer Center (Bob Kridle, Jeff Schreibman, Vance Vaughan, Robyn Allsman, and Ricki Blau) were involved in setting up and administering this multi-domain project. The lowest-level concepts the author used came from experience at \s-2XEROX PARC\s0, primarily from discussions with David Boggs, one of the \s-2ETHERNET\s0\*y designers. .FS \*y ``Ethernet: Distributed Packet Switching for Local Computer Networks'', by Robert Metcalfe and David Boggs, CACM, July 1976. .FE .SH .ce .sp 1 History .sp .5 .PP The network project can be divided into two distinct phases. The first, from January 1978 to May 1978 (4\(12 months) involved designing and implementing the network facilities now available. The second, from October 1978 to March 1979 (5 months), saw the addition of many more machines to the network with emphasis on portability, security, and minor design changes. The network has been in almost continuous service to users since May 1, 1978. .SH First Phase .PP An initial design was worked out with Dr. Fabry in January 1978. A suitable connection was made between the Computer Center ``A'' and ``Q'' machines (then called ``D''). .DS .cs R 24 A Q .cs R .DE .PP Development proceeded on two fronts \- a set of daemons were written to transfer files, using .UX pipes for debugging. The lowest-level protocols were designed and implemented of the terminal-type connection between A and Q. These were debugged using simple programs to send and receive packets, and a pair of programs to transfer a file from one to the other. This was the first experience with a distributed software development \- the Q machine is a DEC PDP-11/34 with no lineprinter, a non-standard tape drive, and terminal access only by telephone, so most development had to proceed on the A machine. .PP During this phase the goals of the project increased in scope. The implementor and only user had to use the network to transfer network source and worked out simple ways to automate this (the ``.netrc'' file is an example). .PP When it appeared usable by more than the implementor, the connection was changed to be between A and the Computer Center ``C'' machine: .DS .cs R 24 A C .cs R .DE .PP Up until now, the network had required an account on both machines. It became clear this was a handicap since the A machine had too many accounts and the password file was immense. Certain ``free'' commands were allowed, without an account. .PP The Cory machine was soon added to the network: .DS .cs R 24 Cory A C .cs R .DE .PP This produced major changes in the design \- initially we had assumed network users would have accounts on all machines. This was unreasonably strict and a solution (kludge) was worked out where a request was examined and forwarded through the queue(s) on the intermediate machine. The network became table-driven to accomplish the routing, and distributed software development became more difficult because of the increased number of machines. The implementor quickly discovered only one solution: Always have a designated source machine for all changes. To this day, software changes are made only on this ``source'' machine, the others are guaranteed to have copies. This makes remote updating (copying new versions around the network) possible. .PP Documentation was written and sent off to about fifteen faculty, staff, and graduate student users. A few bugs were fixed and the system frozen from the end of May to October. End of Phase 1. .SH Second Phase .PP While the implementor was away at a summer job, the connection between the A and C machines was switched to reduce the loading on the A machine: .DS .cs R 24 Cory C A .cs R .DE .PP Unknown to the implementor, the network source was modified in divergent and incompatible ways, and the commands were moved to a different place. These changes invalidated certain assumptions about full pathnames and some commands such as inter-machine mail stopped working. .PP The Computer Center had also made absolutely incompatible changes to some system calls. This began a path of software divergence that became very painful and is still not completely solved. .PP Fortunately, the Computer Center placed Robyn Allsman in charge of maintaining the network on their machines \- to lighten that routine part of the load from the implementor. .PP The Computer Center acquired a ``D'' machine, and the EECS Division a DEC VAX 11/780, running an experimental Version 7 .UX system. The implementor decided to use the (at this point) unused VAX to to do software development and incorporate the Version 7 changes into the network code. By this time, the protocols were stable which made it possible to run a Version 7 network on the VAX connected to the old Version 6 code on the existing network, to facilitate debugging. Because of improved terminal availability and better machine response, many new ways were used to debug the network \- using pipes, using TTY lines wired together on the VAX and over the usual machine-to-machine link. A file was added (``initfile'') which allowed quick reconfiguration of the daemons when system parameters were changed. A temporary connection between the VAX and C machines was arranged. .DS .cs R 24 VAX Cory C A .cs R .DE .PP The network code had to be able to run on three different types of machines \- the VAX running .UX Version 7, the Cory machine running Version 6, and the anomalous Computer Center machines. There was no conversion package available at the time,\*y .FS \*y The ``retrofit'' library, by Bill Joy, is now available. .FE and the old network code had not used any system header files, so after a great deal of experimentation, conditional compilation was used as much as possible and a procedural interface was used to elide system differences. .PP The new .UX command .I make (I) was used with a ``makefile'' to organize this regime. The old network code was used to bootstrap the D machine onto a network running the new network code exclusively. .DS .cs R 24 VAX Cory C A D .cs R .DE .PP Shortly thereafter, over the Christmas break, the VAX and Cory connections went down for security reasons (discussed in the ``Security'' section). After seven weeks, they reentered the network in a new configuration. .DS .cs R 24 Cory C D VAX A .cs R .tr -- .DE .PP Shortly after that, they were down again because of a lightning strike for another week but have been operational since then. During the last time period the network was made less Berkeley-specific and a copy was run on the Rand Corporation UNIX machines. Documentation was rewritten and prepared for release. The network queues were converted to send shortest-job first. Extensive monitoring of system load, network performance, and network use was added. The format of the .I netq command was changed to summarize more information on output. The E machine, and then later the Survey Research Center (SRC) machine, were added. .DS .cs R 24 A Cory C D VAX E SRC .cs R .DE .PP Tuning was still important \- serious overloading problems caused by sluggish response stopped the network between Cory and C for a week. Network parameters were tuned to help solve this problem. The complexity of software development and maintenance became too great for unstructured changes. Versions on all the machines except the VAX were frozen for a month at a time. The protocols were almost immutable. People were delegated responsibility to observe and straighten out, if necessary, problems with the net queues. .PP As this is written, the software is stable and the user-documentation is finished and being sold, and there is hope of adding more .UX machines to the network. .SH .ce .sp 1 Overall System Description .sp .5 .PP The Berkeley network operates in a batch/ request mode, and is similar in concept to a line printer queue. ``Requests'' are queued up at the source, where they are sent in shortest job first order through an interconnected network of machines to their destination. At each intermediate node, they are queued as if they were originated locally. .PP The network consists of a set of user-executed commands, a queue of requests to be sent, and a continuously-running program called a .I daemon which transmits requests in the queue and listens for any request being sent to it. There are many network commands \- one to send mail, one to read mail, one to copy files, etc. They all use the .I net command to access the network. The .I net command takes a command, assorted parameters, with any input data, and puts a request in the queue. These requests are composed of a header, the command to be executed, and any data for input to the command. The header contains network information such as the destination machine, login name, and password. This request is stored in the queue as a normal ASCII file, owned by the invoker. This way .UX commands can be used to examine the file. .PP The daemon examines the queue to see if there is anything to send. If so, it begins sending to a remote daemon, using a protocol to establish this dialog, involving retransmissions and timeouts. The remote daemon accepts the requests, parses the header information, and takes any data for the command and puts it in a file. The main loop of the daemon then returns to a waiting state. .PP The command execution is done by `forking' a series of processes. One of these is the user's login shell, which is given the command to execute. Another is a process which waits for the command to be executed, then examines the output of the command. The output is typically sent back to the user, via a .I net command, executed by the daemon. .PP In the reverse transmission, the command is called ``mwrite'', and it is routed and handled exactly as in the forward mode, except no password is required. The ``mwrite'' command is executed on the original machine with input data which is a copy of the output of the remote command. The user is either ``written'' or ``mailed'' to, depending on certain options. If ``written'', the user's screen is filled with the output\*y .FS \*y Standard output and standard error files. .FE of the command executed remotely, just as if he had executed it locally. Otherwise, it is in his mailbox, as mail from the remote account he used. The user's terminal must be write-able (see the .I mesg (I) option), the originating user must still be logged in, and he must not have logged off and on again. .PP The output from the command is preceded by a line of information listing the command, the time it was sent, and the time elapsed. .PP Our design then tries to simulate local .UX commands as much as possible. With defaults set correctly\*y .FS \*y With a ``.netrc'' file, see below. .FE the user in principle need only precede the command he is executing with the command .I net. .SH Copying Remote Files .PP The most frequent use of the network is file-transfer using the .I netcp command. The .I netcp command is based on the .I cp (I) command. Its two arguments are a source and destination file, optionally with remote machine names prepended: .DS \fBnetcp\fI\ \ from\-file\ \ to\-file\fR .DE where the names are local or remote. Since .DS Cory:/usr/pascal/sh .DE is a file on the Cory machine, .DS % netcp\ \ junk\ \ Cory:/usr/pascal/sh .DE will transfer the file ``junk'' to the named file on the Cory machine\*z. .FS \*z For more examples, see the \*a document. .FE .PP The way the transfer is accomplished depends on the type of file copy: .IP 1. Copy local file to remote file \- .br On the remote machine a .I cat (I) command is executed on the remote file with the local file as standard input. .IP 2. Copy remote file to local file \- .br A .I cat command is executed on the remote machine from the remote file to standard output. This standard output is sent back to the local machine into a .I response file, .R instead of being written or mailed to the user. .IP 3. Copy remote file to another remote file \- .br If both are on the same machine, a .I cp command is sent. Otherwise, a .I netcp command is sent to the remote machine where the .I from\-file exists, to copy that file to the \fIto\-file\fP's machine. .PP This last case is experimental. Unfortunately, the system is structured only to carry one login name and password to a remote machine. Since the last option involves three machines, the second remote machine is handled imperfectly at best. .SH Sending Mail .PP The .I mail (I) command on the network machines has been modified to examine the names of the recipients of a particular message. If their names have a remote prefix, .I mail executes an internal command ``sendmail'', which in turn executes a .I net command. This net command sends a mail command to the remote machine, with the message as input. Since the recipient would like to know which machine the message came from, a simple program ``mmail'' is executed to insert a pseudo-header indicating the real source of the mail. The net command logs in as user ``network'', so remote mail does not require an account on the destination machine. This facility has proven invaluable. .SH Reading Mail .PP The .I netmail command uses the .I net command to send a command to read mail for a specified user on a remote machine. Since the existing mail programs on different machines vary in their options, it was decided the only thing that would work on both .UX Version 6 and 7 systems was to copy the mail from the remote to the local machine. If the user subsequently logs in on the remote machine, his mail will be there, as if it were unread. An internal program ``prmail'' is used to copy the user's mail back to the local machine. It knows the location of the mailboxes and the user's name. .PP The mail programs at Berkeley are being modified to search a database to see whether a user would like to receive all his mail on another machine and automatically forward it. This will diminish the need for the .I netmail command. .SH Printing on remote lineprinters .PP The .I netlpr command takes a list of arguments as files to be printed on a remote lineprinter. Unfortunately, there can only be one standard input file for the remote command, so each file is sent as a .I net command executing the command .I lpr. .SH Other System Components .sp .5 .LP The ``.netrc'' file. .PP A user must specify defaults for frequently repeated options on a per-machine basis. This is done in a file ``.netrc'' in the user's login directory, and is fully described in the \*a. .sp .5 .LP The .I netq command. .PP To see the network queue, the user must type the .I netq command. It lists the queue for each directly-connected machine, in the order requests will be sent. Each request is listed, one per line, giving the local and remote machines, the destination machine, the time sent, and the command to be executed. Commands which are internal to the network are called ``responses'' in the .I netq listing. .sp .5 .LP The .I netrm command. .PP Requests may be removed from the send queue using the .I netrm command. Since the originator of the file owns the queue file, a simple user-id check suffices to validate permission. Unfortunately, this notion breaks down for queue files of requests on intermediate machines. On such a machine an appropriate user does not exist, and the files are owned by ``root''. There is an option to .I netrm to remove all the user's queue files, to make .I netrm easier to use. .sp .5 .LP The .I netlog command and other information. .PP A number of log files are kept by the network. Users may execute a .I netlog command which prints the last few entries of a log of commands sent and received. Also listed is the user, the time of the entry, and the return code of the command. .PP A more unreadable logfile is `/usr/net/plogfile?'. This log file has all the information of .I netlog, in a more cryptic form, along with trace information about net errors. The beginning and ending of sending and receiving are noted. This way the exact state of the network can be determined. .PP Hourly and daily statistics in a file `/usr/net/netstat?'. The number of bytes transmitted, the number of commands, and a breakdown of their type, and system load is recorded. This information is recorded in both hourly and daily form to track the performance of the network under different system loads. .PP Every hour, a .I netq command is executed and the number of queue entries is recorded in a file `/usr/net/netqstats'. This gives an estimate of the queue length. .PP Finally, the login names of each local user are recorded in a file `/usr/net/usernames'. Periodically, these names are sorted and duplicates removed. This gives a complete listing of network users, useful for sending network-specific mail and for general interest. .SH .sp 1 .ce Protocol Explanation .sp .5 .PP The network uses three distinct levels of protocol. The highest level of protocol (the ``command'' protocol) refers to the organization of the information sent to the remote machine. An intermediate level splits such a stream into distinct numbered packets with a small header in each packet. The lowest level refers to the appearance of these packets on the hardware connection. At the present, this is a modified 6-bit ASCII code. Each of these layers is distinct, and presents the interface through procedure calls. .SH The Command Protocol .PP Each machine sends a request using a precise command protocol involving a header, the command, and any associated data. .TS center allbox; l l l l. length header command ... data ... .TE All but the length field is formatted by the .I net command before the file is queued for transmission. The length is used to detect abnormally short, and poorly-formed, requests. The header includes all the information to route and verify the request. It includes .RS .IP a) the origin and destination machines, .IP b) the login names on both machines, .IP c) a version stamp for this command protocol, .IP d) the time sent, .IP e) information about the originating terminal, and .IP f) the pseudo-command. .RE .PP The pseudo-command is read by .I netq, and instead of printing the actual command being executed, prints something more appropriate. All the commands which use .I net (e.g. .I netcp) use the pseudo-command to list themselves rather than the command they are executing on the remote machine. .PP In order to be able to print the data on a normal .UX terminal for debugging, the fields within the header are variable-length ASCII, separated by colons (`:'). This forces the daemon to parse the header information and requires that literal colons (e.g. in the command being sent) be properly escaped within the protocol, but I felt the alternatives of using byte counts or fixed-length fields were too difficult to debug. The shortest header is approximately 85 bytes. Fortunately, this means the shortest command will fit into a single packet.\*y .FS \*y (less than 100 bytes, see below). .FE .SH The Packet Protocol .PP The above information is conveyed to each machine as a stream. This is done using subroutine calls to read and write data of arbitrary length over the link. The write procedure breaks the information into a set of numbered packets, with a length and exclusive-or check-sum in a header: .TS center allbox; l l l l l. length seqnum type chksum ... data ... .TE .PP The length, type and checksum are one byte each, and the sequence number is two bytes. Since the packets are variable length the checksum is in the header rather than at the end of the packet to avoid the extra computation required to access it. .PP Each packet is transmitted over a link to a listener. Normally an acknowledgement packet is sent back. If there is an error, nothing is sent back, and the sending end will retransmit after a certain number of seconds. .PP There are no windowing or piggyback acknowledgements for two reasons: 1) this scheme is very simple to implement and 2) the error rate if each packet were not acknowledged would be high because of the hardware involved. If the future, I hope that both hardware and kernel device drivers will allow this improvement. .PP The so-called ``rendezvous'' protocol, whereby two daemons agree to communicate, is a simple ``contention'' scheme. When one daemon wants to transmit, it sends a special packet ``reset'' to the possible receiver, then transmits his first packet. Normally a daemon able to receive listens for a ``reset''. If it receives one, it enters a section of code designed to receive a header command, and data, and ultimately will execute it. If not, after a prescribed time interval is checks to see if there are any requests to send. Should both send at once, the characters may be garbled, or both may receive resets at the same time. In each case they both will retransmit. Each has a randomizing factor to break any ties which might develop. .PP In retrospect, this protocol is very primitive. Now that the network is in production use, the extra acknowledgements and separate ``reset'' are too expensive. A redesign would modify the protocol to transmit more than one packet before acknowledging it (ACKs), use negative ACKs to indicate immediately that an error has occurred, and eliminate the separate ``reset'' entirely. .PP The ``rendezvous'' protocol consumes a fair amount of time when both daemons choose to send packets. The alternative of constantly sending status packets when the daemons would be idle was never seriously considered because it was felt that the daemon should have as light a system load as possible; it seems now the daemons are busy most of the time and thus the initial connection tradeoffs should have been studied more closely. .SH The Low-Level Protocol .PP The network transmits over TTY lines through terminal interfaces and system drivers which behave as if the characters coming from another machine are from a terminal. This mode was chosen because it is absolutely the simplest, cheapest interconnection scheme possible. Unfortunately, the .UX terminal drivers cannot accept 8-bit bytes unless they are in .I raw mode. This was judged to be a high system load, so the TTY lines operate in .I cooked, the reverse of .I raw, mode. In this mode certain bit combinations, e.g. ASCII newline and escape, do not transmit through the terminal driver to the user's program but rather are interpreted as control information. .PP After much experimentation, the following transmission method was chosen. Each 3 byte triple is viewed as 24 bits, and broken into 4 6-bit groups. Each 6-bit number is in the range 0-63, and is added to a constant representing the lowest acceptable character code (a blank) in the ASCII sequence. This is sent as an ASCII character to a receiver who gathers 4 bytes, subtracts the increment, and shifts the 4 6-bit groups into 3 bytes. This represents a 3 to 4 expansion of all characters over the link, or a 33% loss of bandwidth. .PP In retrospect, this expansion has a considerable cost. The most scarce resource in the network is the actual hardware speed of the links. The alternative of using raw mode was never seriously considered. .PP The implementor's hope is that better hardware will make better middle- and lower-level protocols easier. Until then, the difficulties of using TTY lines efficiently make further protocol improvements unlikely to yield big increases in speed. .SH A Note About Features this Protocol Lacks .PP In .UX a process may only read or write one I/O device at a time. A daemon approach requires a single process reading and writing on a link to another machine. This process must decide who will receive this packet. I judged (correctly) that this decision was hard to schedule using .UX pipes and signals, and only allow one kind of communication between daemons. This also makes it almost impossible to forward packets through intermediate machines. Thus intermediate machines copy whole requests before sending them again. .PP If the design specification required a simple packet-oriented driver within the system, the .UX kernel could decide which of several special files this was destined to, and allow much more intermixing of traffic than before. I did not realize the importance of this and, in retrospect, would have chosen the other of the two approaches. .SH .sp 1 .ce Portability .sp .5 .PP The acquisition of VAX/UNIX (Version 7) and the divergence of the Computer Center and Cory Hall Version 6 systems made the portability of the network source code important. Until then, the source code on all machines was identical. Fortunately, the .UX implementors encountered these same problems and developed a number of facilities the network now uses. .PP Since many system calls use machine and version dependent data fields, so-called ``include'' files are available to hide the system differences and help standardize the system interface. The conditional compilation feature of the C language was used to select which kinds of code to generate, when the ``include'' files were not sufficient. Roughly, the following command included at the beginning of each C module: .DS # include .DE would define which system, by name, the code was run on. For example, the above defines ``VAX'' on the VAX machine, and then lines such as .DS # ifdef VAX . . # endif .DE control the code generated. In the network, sequences such as this in turn define other sequences, such as .DS # ifdef \s-2CORY\s0 # define \s-2FUID\s0 # define \s-2OLDTTY\s0 # define \s-2PASSWDF\s0 # endif .DE defines the unusual features of the Cory machine: the combined user-id and group-id returned by the .I getuid() system call, that it uses the old 1-character terminal names, and that it has a split password file for security reasons. Each of these symbols, e.g. ``FUID'', is tested in order to compile the correct code for that feature. .PP To help in isolating the changes, attempts were made to create a procedural interface to hide machines differences. These procedures are all in one file. Only one or two cases exist of conditional sections of code not in ``mach.c'' or ``mach.h'', its header file. .PP One problem these features pose is testing changes \- the conditional sections hide errors in inapplicable code. A regimen was adopted: Testing was first done on the VAX (Version 7), then, after it was stable for a few days, moved to Cory, where typically there was some Version 6-dependent error, and after that was fixed and stable, it was moved to the Computer Center machines. This notion of a ``testing'' machine is very important \- the VAX always has an up-to-date copy of the network source, even though other machines may lag in improvements. .PP There is now a ``retrofit library'' that simulates many of the features ``mach.c'' provides. It was not stable enough when the network was converted to Version 7, otherwise I would have used it. .PP At this point, when the entire source for the software for the network is transferred between machines only the first five lines of the ``makefile'' need be changed. .SH .sp 1 .ce .sp .5 Security .PP Over Christmas vacation of 1978, a 15-year old high school student repeatedly broke into the Computer Center and Cory machines. He was able to use the network to gain access to privileged files on the VAX, and the fear of protection ``holes'' caused the staff to take the network down for seven weeks. .PP There were two security problems posed by the network: .RS .IP 1. The threat to the ``root'' account on another system. .IP 2. The threat to a user's remote accounts. .RE .NH 0 Threat to ``root'' .PP Originally the network would allow a user logged in as ``root'' on one machine to execute any command as ``root'' on another network machine. As far as we know, this feature was never used to break into a system. However, the network has been changed to prevent a user from logging in as ``root'' on another machine, regardless of the password. This check is performed on the sending machine. Since ``root'' could conceivably circumvent this check by altering the command, the receiving end of a command checks the user-id of all commands being executed. If it is zero (i.e. ``root'') only a set of five commands is allowed, all needed by the network internally, and believed ``safe''. .PP We believe this makes the network ``safer'' than many local machine features such as the use of dial-up lines. .NH Threat to user's remote accounts. .PP If a user places remote passwords in his ``.netrc'' file, an illicit superuser could get the password to all the user's remote accounts. Even if the user does not care, system managers dislike this because the illicit superuser could now use a legal account on another system to break into it. .PP We have no good solutions to this. Users are now warned of this danger in the documentation, and a ``.netrc'' file with passwords must be readable only by the owner of the file. .PP Various solutions have been proposed: .RS .IP a) Disallow passwords in ``.netrc'' files. .br Unfortunately, heavy network users would have to repeatedly type their password. .IP b) Encrypt the ``.netrc'' file. .br A program would have to exist to decrypt the file. A superuser could get access to whatever key technique that program used, if it were on the local machine. A public-key encryption scheme would make this option possible. We decided it was too much work to implement this. .IP c) Once-a-session passwords. .br In this scheme, a user would register his password when he logged in, then use the network without needing to type in a password. When he logged off, the password would be removed. We discarded this because we could not guarantee the password would disappear unless we wrote a daemon, which itself could be compromised. The best solution along this line uses the ``alias'' feature of the C shell. Each net command is aliased with itself and the \fB\-l\fP, \fB\-p\fP options. When the user logs in, he sets a shell variable to his password. When he logs off, his shell dies and the passwords are forgotten. .RE .PP I believe the current alternatives are sufficient for a conscientious user to protect himself and still have an easy-to-use network interface. .SH .sp 1 .ce Future Plans .sp .5 .NH 0 Hardware .PP The net has suffered with low speed hardware. Short-term plans include speeding up the current terminal interface hardware from 1200 Baud to 9600 Baud and writing a driver for the device to bypass the internal .UX character queues. This driver will improve the reliability of transmission and decrease the character interrupt overhead. The speedup from 1200 Baud to 9600 Baud may overload the systems due to the number of hardware interrupts it causes. .PP In the longer term, the EECS Department is considering acquiring direct-memory-access (DMA) devices such as the Logical Network Interface (LNI) or the Digital Corp. DMC-11 links for high-speed transmission. These devices are capable of over 1-megabit speeds, and would increase the speed of the current network by factors of hundreds. .NH Adding More Machines to the Network .PP The \s-2INGRES\s0 Research group and various other research units within the EECS department have expressed interest in being added to the network. .NH Remote Use of the Typesetter Facilities .PP The Computer Center A machine has a Graphics Systems phototypesetter and the VAX Research machine has a Versatec 36'' dot-matrix plotter with a .I troff simulator. Software now being debugged will allow remote use of the typesetter by running the .I troff program locally and sending the typesetter device codes to the remote machine. .PP This will distribute the typesetting load and help overloading on the A and VAX machines. It will also allow the use of .I troff macro packages only available on some machines. .NH Remote Mail Forwarding .PP The .UX mail programs will be modified to forward mail to another account on another machine, allowing a user with accounts on many machines to read it all on one designated machine. .SH .sp 1 .ce Summary Points .sp .5 .PP The author would like to stress these points about his experience: .IP 1. Success in building networking software depends on having ready access to the correct hardware. The minimum is two terminals connected to two usable machines with two magnetic tape drives or some other existing means of software transfer. .IP 2. Design in portability and security. More careful attention to machine dependence and security in the first phase would have saved much later re-programming. .IP 3. Develop good local debugging techniques. The ``self-loop'' trick for network debugging depends on the accuracy of that simulation. .UX pipes, for example, were not sufficient to simulate TTY lines because TTY lines are 7-bits with a restricted ASCII range. .IP 4. Encourage users to use the system. Their feed back is important. However, it is necessary to have an unused network link for new protocol development, etc. .IP 5. There is a fine line between support of an existing network and research. In the best of all possible worlds, support of research-developed software would be the responsibility of the systems staff for the machines it runs on. This is seldom the case. .IP 6. The concept of layers of networks was very helpful in this project. There appear to be these levels: .DS L .ce 99 .ls 2 .sp 2 user interface queues and daemons command protocol packet protocol transmission protocol teletype lines .sp 2 .ls 1 .ce 0 .DE These levels are quite distinct. If a new, better network not involving queues is built, the transfer of files could still be by .I netcp. If state-of-the-art link hardware is used, perhaps all of the levels below the command protocol could be discarded. .IP 7. The chief virtue of the current system is its extreme flexibility and low start-up costs. No modifications to the .UX kernel are required and all local features are conditionally specified in a header file. .IP 8. Networks are hard to build because .RS .IP a) They involve mutually-cooperating copies of software on (usually) differing computers. .IP b) Many options are not practical because of compatibility considerations \- new networks need drivers in unchangeable systems, and new protocols have to accept the old protocols until the old protocols are extinct. .RE decide which of several special files this was destined to, and allow much more intermixing of traffic than before. I did not realize the importance of this and, in retrospect, would have chosen the other of the two approaches. .SH .sp 1 .ce Portability .sp .5 .PP The acquisition of VAX/UNIX (Version 7) and the divergence of the Computer Center and Cory Hall Version 6 systems made the pordoc/misc/berknet/makefile.doc 444 3 12 1053 2311066403 11421 # the documentation to the Berkeley network # # Eric Schmidt Feb. 1980 # # users are given netintro, mannnet, refcard # system managers are given that plus systemmanual # professors are given all # TROFF = /usr/ucb/nettroff all: coverpage masters netintro mannet systemmanual refcard done coverpage: $(TROFF) -ms coverpage.n; masters: tbl masters.n | $(TROFF) -ms netintro: tbl netintro.n | $(TROFF) -ms mannet: cd /usr/man/man1; $(TROFF) -man net*.1 systemmanual: $(TROFF) -ms systemmanual.n; refcard: tbl refcard.n | $(TROFF) -ms done: echo DONE ay lag in improvements. .PP There is now a ``retrofit library'' that simulates many of the features ``mach.c'' provides. It was not stable enough when the network was converted to Version 7, otherwise I would have used it. .PP At this point, when the entire source for the software for the network is transferred between machines only the first five lines of the ``makefile'' need be changed. .SH .sp 1 .ce .sp .5 Security .PP Over Christmas vacation of 1978, a 15-yeardoc/misc/berknet/distrib 444 3 12 564 2322245562 10535 Bill Joy, Bob Fabry, Eric Schmidt (CS Division) Vance Vaughn, Ed Gould, Kirk Thege, Ricki Blau (CC) George Lavender(SRC, 2538 Channing Way, Campus) Bob Kridle (187M Cory), Asa Bromberger (384 Cory), Len Edmonsen (187M Cory), Eric Allman (380 Cory), Jim Kleckner (319 Cory) Dave Wasley (431 Davis Hall, Campus) John Saxer Naval Ocean Systems Center, Point Loma, San Diego doc/misc/berknet/coverpage.n 444 3 12 1434 2157653022 11321 .LP .nr LL 5.5i .LP .sp 20 .sp .5i .ce 99 .ps 14 .ft B The Berkeley UNIX Network .ps .sp 2 .ft I Eric Schmidt .ft R .sp 3 .ce .sp .5i .RS .SH Overall Introduction .PP This set of papers documents a network constructed to satisfy the project option for the Master's degree from the EECS Department, C. S. Division, U. C. Berkeley. .PP The first paper is a technical description of the history of the project, details of implementation, and summary points. The second paper is an introduction being sold to many .UX users on the Berkeley campus. The third group of pages are the .UX Programmers Manual sections for the network commands available. The last paper is a manual for systems staff about operation and setup of the network. .LP .sp 2 .sp 2 .in 20 .DS Eric Schmidt .sp June 1979 .DE .in 0 when the entire source for the software for the network is transferred between machines only the first five lines of the ``makefile'' need be changed. .SH .sp 1 .ce .sp .5 Security .PP Over Christmas vacation of 1978, a 15-yeardoc/misc/berknet/makefile 444 3 12 1053 2311066403 16332 1doc/misc/berknet/makefile.docdoc/misc/sysperf/ 755 3 12 0 3670417747 7160 doc/misc/sysperf/1.t 444 3 12 4106 3527237761 7566 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.t 1.2 (Berkeley) 8/11/85 .\" .ds RH Introduction .af PN 1 .bp 1 .NH Introduction .PP The Berkeley Software Distributions of .UX for the VAX have added many new capabilities that were previously unavailable under .UX . The development effort for 4.2BSD concentrated on providing new facilities, and in getting them to work correctly. Many new data structures were added to the system to support these new capabilities. In addition, many of the existing data structures and algorithms were put to new uses or their old functions placed under increased demand. The effect of these changes was that mechanisms that were well tuned under 4.1BSD no longer provided adequate performance for 4.2BSD. The increased user feedback that came with the release of 4.2BSD and a growing body of experience with the system highlighted the performance shortcomings of 4.2BSD. .PP This paper details the work that we have done since the release of 4.2BSD to measure the performance of the system, detect the bottlenecks, and find solutions to remedy them. Most of our tuning has been in the context of the real timesharing systems in our environment. Rather than using simulated workloads, we have sought to analyze our tuning efforts under realistic conditions. Much of the work has been done in the machine independent parts of the system, hence these improvements could be applied to other variants of UNIX with equal success. All of the changes made have been included in 4.3BSD. .PP Section 2 of the paper describes the tools and techniques available to us for measuring system performance. In Section 3 we present the results of using these tools, while Section 4 has the performance improvements that have been made to the system based on our measurements. Section 5 highlights the functional enhancements that have been made to Berkeley UNIX 4.2BSD. Section 6 discusses some of the security problems that have been addressed. eeded by the network internally, and believed ``safe''. .PP We believe this makes the network ``safer'' than many local machine features such as the use of dial-up lines. .NH Threat to user's remote accounts. .PP If a user places remote passwords in his ``.netrc'' file, an illicit superuser could get the password to all the user's remote accounts. Even if the user does not care, system managers dislike this because the illicit superuser cdoc/misc/sysperf/0.t 444 3 12 14151 3573674054 7607 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)0.t 1.3 (Berkeley) 11/30/85 .\" .if n .ND .TL Measuring and Improving the Performance of Berkeley UNIX* .sp November 30, 1985 .AU Marshall Kirk McKusick, Samuel J. Leffler\(dg, Michael J. Karels, Luis Felipe Cabrera\(dd .AI Computer Systems Research Group Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, CA 94720 .AB .FS * UNIX is a trademark of AT&T Bell Laboratories. .FE .FS \(dg Samuel J. Leffler is currently employed by: Lucasfilm Ltd., PO Box 2009, San Rafael, CA 94912 .FE .FS \(dd Luis Felipe Cabrera is currently employed by: Computer Science Department, IBM Research Laboratory, 5600 Cottle Road, San Jose, California 95193. .FE .FS This work was done under grants from the National Science Foundation under grant MCS80-05144, and the Defense Advance Research Projects Agency (DoD) under ARPA Order No. 4031 monitored by Naval Electronic System Command under Contract No. N00039-82-C-0235. .FE The 4.2 Berkeley Software Distribution of .UX for the VAX\(dd .FS \(dd VAX, MASSBUS, UNIBUS, and DEC are trademarks of Digital Equipment Corporation. .FE had several problems that could severely affect the overall performance of the system. These problems were identified with kernel profiling and system tracing during day to day use. Once potential problem areas had been identified benchmark programs were devised to highlight the bottlenecks. These benchmarks verified that the problems existed and provided a metric against which to validate proposed solutions. This paper examines the performance problems encountered and describes modifications that have been made to the system since the initial distribution. .PP The changes to the system have consisted of improvements to the performance of the existing facilities, as well as enhancements to the current facilities. Performance improvements in the kernel include cacheing of path name translations, reductions in clock handling and scheduling overhead, and improved throughput of the network subsystem. Performance improvements in the libraries and utilities include replacement of linear searches of system databases with indexed lookup, merging of most network services into a single daemon, and conversion of system utilities to use the more efficient facilities available in 4.2BSD. Enhancements in the kernel include the addition of subnets and gateways, increases in many kernel limits, cleanup of the signal and autoconfiguration implementations, and support for windows and system logging. Functional extensions in the libraries and utilities include the addition of an Internet name server, new system management tools, and extensions to \fIdbx\fP to work with Pascal. The paper concludes with a brief discussion of changes made to the system to enhance security. All of these enhancements are present in Berkeley UNIX 4.3BSD. .AE .LP .sp 2 CR Categories and Subject Descriptors: D.4.3 .B "[Operating Systems]": File Systems Management \- .I "file organization, directory structures, access methods"; D.4.2 .B "[Operating Systems]": Storage Management \- .I "allocation/deallocation strategies, secondary storage devices"; D.4.8 .B "[Operating Systems]": Performance \- .I "measurements, operational analysis"; H.3.2 .B "[Information Systems]": Information Storage \- .I "file organization" .sp Additional Keywords and Phrases: Berkeley UNIX, file system organization, file system performance, file system design, application program interface. .sp General Terms: file system, measurement, performance. .de PT .lt \\n(LLu .pc % .nr PN \\n% .tl '\\*(LH'\\*(CH'\\*(RH' .lt \\n(.lu .. .af PN i .ds LH Performance .ds RH Contents .bp 1 .if t .ds CF November 30, 1985 .if t .ds LF DRAFT .if t .ds RF McKusick, et. al. .ce .B "TABLE OF CONTENTS" .LP .sp 1 .nf .B "1. Introduction" .LP .sp .5v .nf .B "2. Observation techniques \0.1. System maintenance tools \0.2. Kernel profiling \0.3. Kernel tracing \0.4. Benchmark programs .LP .sp .5v .nf .B "3. Results of our observations \0.1. User programs \0.1.1. Mail system \0.1.2. Network servers \0.2. System overhead \0.2.1. Micro-operation benchmarks \0.2.2. Path name translation \0.2.3. Clock processing \0.2.4. Terminal multiplexors \0.2.5. Process table management \0.2.6. File system buffer cache \0.2.7. Network subsystem \0.2.8. Virtual memory subsystem .LP .sp .5v .nf .B "4. Performance Improvements \0.1. Performance Improvements in the Kernel \0.1.1. Name Cacheing \0.1.2. Intelligent Auto Siloing \0.1.3. Process Table Management \0.1.4. Scheduling \0.1.5. Clock Handling \0.1.6. File System \0.1.7. Network \0.1.8. Exec \0.1.9. Context Switching \0.1.10. Setjmp and Longjmp \0.1.11. Compensating for Lack of Compiler Technology \0.2. Improvements to Libraries and Utilities \0.2.1. Hashed Databases \0.2.2. Buffered I/O \0.2.3. Mail System \0.2.4. Network Servers \0.2.5. The C Run-time Library \0.2.6. Csh .LP .sp .5v .nf .B "5. Functional Extensions \0.1. Kernel Extensions \0.1.1. Subnets, Broadcasts, and Gateways \0.1.2. Interface Addressing \0.1.3. User Control of Network Buffering \0.1.4. Number of File Descriptors \0.1.5. Kernel Limits \0.1.6. Memory Management \0.1.7. Signals \0.1.8. System Logging \0.1.9. Windows \0.1.10. Configuration of UNIBUS Devices \0.1.11. Disk Recovery from Errors \0.2. Functional Extensions to Libraries and Utilities \0.2.1. Name Server \0.2.2. System Management \0.2.3. Routing \0.2.4. Compilers .LP .sp .5v .nf .B "6. Security Tightening \0.1. Generic Kernel \0.2. Security Problems in Utilities .LP .sp .5v .nf .B "7. Conclusions .LP .sp .5v .nf .B Acknowledgements .LP .sp .5v .nf .B References .LP .sp .5v .nf .B "Appendix \- Benchmark Programs" .de _d .if t .ta .6i 2.1i 2.6i .\" 2.94 went to 2.6, 3.64 to 3.30 .if n .ta .84i 2.6i 3.30i .. .de _f .if t .ta .5i 1.25i 2.5i .\" 3.5i went to 3.8i .if n .ta .7i 1.75i 3.8i .. hine. A public-key encryption scheme would make this option possible. We decided it was too much work to implement this. .IP c) Once-a-session passwords. .br In this scheme, a user would register his password when he logged in, then use the network without needing to type in a password. When he logged off, the password would be removed. We discarded this because we could not guarantee the password would doc/misc/sysperf/3.t 444 3 12 64132 3535626626 7616 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)3.t 1.2 (Berkeley) 8/11/85 .\" .ds RH Results of our observations .NH Results of our observations .PP When 4.2BSD was first installed on several large timesharing systems the degradation in performance was significant. Informal measurements showed 4.2BSD providing 80% of the throughput of 4.1BSD (based on load averages observed under a normal timesharing load). Many of the initial problems found were because of programs that were not part of 4.1BSD. Using the techniques described in the previous section and standard process profiling several problems were identified. Later work concentrated on the operation of the kernel itself. In this section we discuss the problems uncovered; in the next section we describe the changes made to the system. .NH 2 User programs .PP .NH 3 Mail system .PP The mail system was the first culprit identified as a major contributor to the degradation in system performance. At Lucasfilm the mail system is heavily used on one machine, a VAX-11/780 with eight megabytes of memory.\** .FS \** During part of these observations the machine had only four megabytes of memory. .FE Message traffic is usually between users on the same machine and ranges from person-to-person telephone messages to per-organization distribution lists. After conversion to 4.2BSD, it was immediately noticed that mail to distribution lists of 20 or more people caused the system load to jump by anywhere from 3 to 6 points. The number of processes spawned by the \fIsendmail\fP program and the messages sent from \fIsendmail\fP to the system logging process, \fIsyslog\fP, generated significant load both from their execution and their interference with basic system operation. The number of context switches and disk transfers often doubled while \fIsendmail\fP operated; the system call rate jumped dramatically. System accounting information consistently showed \fIsendmail\fP as the top cpu user on the system. .NH 3 Network servers .PP The network services provided in 4.2BSD add new capabilities to the system, but are not without cost. The system uses one daemon process to accept requests for each network service provided. The presence of many such daemons increases the numbers of active processes and files, and requires a larger configuration to support the same number of users. The overhead of the routing and status updates can consume several percent of the cpu. Remote logins and shells incur more overhead than their local equivalents. For example, a remote login uses three processes and a pseudo-terminal handler in addition to the local hardware terminal handler. When using a screen editor, sending and echoing a single character involves four processes on two machines. The additional processes, context switching, network traffic, and terminal handler overhead can roughly triple the load presented by one local terminal user. .NH 2 System overhead .PP To measure the costs of various functions in the kernel, a profiling system was run for a 17 hour period on one of our general timesharing machines. While this is not as reproducible as a synthetic workload, it certainly represents a realistic test. This test was run on several occasions over a three month period. Despite the long period of time that elapsed between the test runs the shape of the profiles, as measured by the number of times each system call entry point was called, were remarkably similar. .PP These profiles turned up several bottlenecks that are discussed in the next section. Several of these were new to 4.2BSD, but most were caused by overloading of mechanisms which worked acceptably well in previous BSD systems. The general conclusion from our measurements was that the ratio of user to system time had increased from 45% system / 55% user in 4.1BSD to 57% system / 43% user in 4.2BSD. .NH 3 Micro-operation benchmarks .PP To compare certain basic system operations between 4.1BSD and 4.2BSD a suite of benchmark programs was constructed and run on a VAX-11/750 with 4.5 megabytes of physical memory and two disks on a MASSBUS controller. Tests were run with the machine operating in single user mode under both 4.1BSD and 4.2BSD. Paging was localized to the drive where the root file system was located. .PP The benchmark programs were modeled after the Kashtan benchmarks, [Kashtan80], with identical sources compiled under each system. The programs and their intended purpose are described briefly before the presentation of the results. The benchmark scripts were run twice with the results shown as the average of the two runs. The source code for each program and the shell scripts used during the benchmarks are included in the Appendix. .PP The set of tests shown in Table 1 was concerned with system operations other than paging. The intent of most benchmarks is clear. The result of running \fIsignocsw\fP is deducted from the \fIcsw\fP benchmark to calculate the context switch overhead. The \fIexec\fP tests use two different jobs to gauge the cost of overlaying a larger program with a smaller one and vice versa. The ``null job'' and ``big job'' differ solely in the size of their data segments, 1 kilobyte versus 256 kilobytes. In both cases the text segment of the parent is larger than that of the child.\** .FS \** These tests should also have measured the cost of expanding the text segment; unfortunately time did not permit running additional tests. .FE All programs were compiled into the default load format that causes the text segment to be demand paged out of the file system and shared between processes. .KF .DS L .TS center box; l | l. Test Description _ syscall perform 100,000 \fIgetpid\fP system calls csw perform 10,000 context switches using signals signocsw send 10,000 signals to yourself pipeself4 send 10,000 4-byte messages to yourself pipeself512 send 10,000 512-byte messages to yourself pipediscard4 send 10,000 4-byte messages to child who discards pipediscard512 send 10,000 512-byte messages to child who discards pipeback4 exchange 10,000 4-byte messages with child pipeback512 exchange 10,000 512-byte messages with child forks0 fork-exit-wait 1,000 times forks1k sbrk(1024), fault page, fork-exit-wait 1,000 times forks100k sbrk(102400), fault pages, fork-exit-wait 1,000 times vforks0 vfork-exit-wait 1,000 times vforks1k sbrk(1024), fault page, vfork-exit-wait 1,000 times vforks100k sbrk(102400), fault pages, vfork-exit-wait 1,000 times execs0null fork-exec ``null job''-exit-wait 1,000 times execs0null (1K env) execs0null above, with 1K environment added execs1knull sbrk(1024), fault page, fork-exec ``null job''-exit-wait 1,000 times execs1knull (1K env) execs1knull above, with 1K environment added execs100knull sbrk(102400), fault pages, fork-exec ``null job''-exit-wait 1,000 times vexecs0null vfork-exec ``null job''-exit-wait 1,000 times vexecs1knull sbrk(1024), fault page, vfork-exec ``null job''-exit-wait 1,000 times vexecs100knull sbrk(102400), fault pages, vfork-exec ``null job''-exit-wait 1,000 times execs0big fork-exec ``big job''-exit-wait 1,000 times execs1kbig sbrk(1024), fault page, fork-exec ``big job''-exit-wait 1,000 times execs100kbig sbrk(102400), fault pages, fork-exec ``big job''-exit-wait 1,000 times vexecs0big vfork-exec ``big job''-exit-wait 1,000 times vexecs1kbig sbrk(1024), fault pages, vfork-exec ``big job''-exit-wait 1,000 times vexecs100kbig sbrk(102400), fault pages, vfork-exec ``big job''-exit-wait 1,000 times .TE .ce Table 1. Kernel Benchmark programs. .DE .KE .PP The results of these tests are shown in Table 2. If the 4.1BSD results are scaled to reflect their being run on a VAX-11/750, they correspond closely to those found in [Joy80].\** .FS \** We assume that a VAX-11/750 runs at 60% of the speed of a VAX-11/780 (not considering floating point operations). .FE .KF .DS L .TS center box; c s s s s s s s s s c || c s s || c s s || c s s c || c s s || c s s || c s s c || c | c | c || c | c | c || c | c | c l || n | n | n || n | n | n || n | n | n. Berkeley Software Distribution UNIX Systems _ Test Elapsed Time User Time System Time \^ _ _ _ \^ 4.1 4.2 4.3 4.1 4.2 4.3 4.1 4.2 4.3 = syscall 28.0 29.0 23.0 4.5 5.3 3.5 23.9 23.7 20.4 csw 45.0 60.0 45.0 3.5 4.3 3.3 19.5 25.4 19.0 signocsw 16.5 23.0 16.0 1.9 3.0 1.1 14.6 20.1 15.2 pipeself4 21.5 29.0 26.0 1.1 1.1 0.8 20.1 28.0 25.6 pipeself512 47.5 59.0 55.0 1.2 1.2 1.0 46.1 58.3 54.2 pipediscard4 32.0 42.0 36.0 3.2 3.7 3.0 15.5 18.8 15.6 pipediscard512 61.0 76.0 69.0 3.1 2.1 2.0 29.7 36.4 33.2 pipeback4 57.0 75.0 66.0 2.9 3.2 3.3 25.1 34.2 29.7 pipeback512 110.0 138.0 125.0 3.1 3.4 2.2 52.2 65.7 57.7 forks0 37.5 41.0 22.0 0.5 0.3 0.3 34.5 37.6 21.5 forks1k 40.0 43.0 22.0 0.4 0.3 0.3 36.0 38.8 21.6 forks100k 217.5 223.0 176.0 0.7 0.6 0.4 214.3 218.4 175.2 vforks0 34.5 37.0 22.0 0.5 0.6 0.5 27.3 28.5 17.9 vforks1k 35.0 37.0 22.0 0.6 0.8 0.5 27.2 28.6 17.9 vforks100k 35.0 37.0 22.0 0.6 0.8 0.6 27.6 28.9 17.9 execs0null 97.5 92.0 66.0 3.8 2.4 0.6 68.7 82.5 48.6 execs0null (1K env) 197.0 229.0 75.0 4.1 2.6 0.9 167.8 212.3 62.6 execs1knull 99.0 100.0 66.0 4.1 1.9 0.6 70.5 86.8 48.7 execs1knull (1K env) 199.0 230.0 75.0 4.2 2.6 0.7 170.4 214.9 62.7 execs100knull 283.5 278.0 216.0 4.8 2.8 1.1 251.9 269.3 202.0 vexecs0null 100.0 92.0 66.0 5.1 2.7 1.1 63.7 76.8 45.1 vexecs1knull 100.0 91.0 66.0 5.2 2.8 1.1 63.2 77.1 45.1 vexecs100knull 100.0 92.0 66.0 5.1 3.0 1.1 64.0 77.7 45.6 execs0big 129.0 201.0 101.0 4.0 3.0 1.0 102.6 153.5 92.7 execs1kbig 130.0 202.0 101.0 3.7 3.0 1.0 104.7 155.5 93.0 execs100kbig 318.0 385.0 263.0 4.8 3.1 1.1 286.6 339.1 247.9 vexecs0big 128.0 200.0 101.0 4.6 3.5 1.6 98.5 149.6 90.4 vexecs1kbig 125.0 200.0 101.0 4.7 3.5 1.3 98.9 149.3 88.6 vexecs100kbig 126.0 200.0 101.0 4.2 3.4 1.3 99.5 151.0 89.0 .TE .ce Table 2. Kernel Benchmark results (all times in seconds). .DE .KE .PP In studying the measurements we found that the basic system call and context switch overhead did not change significantly between 4.1BSD and 4.2BSD. The \fIsignocsw\fP results were caused by the changes to the \fIsignal\fP interface, resulting in an additional subroutine invocation for each call, not to mention additional complexity in the system's implementation. .PP The times for the use of pipes are significantly higher under 4.2BSD because of their implementation on top of the interprocess communication facilities. Under 4.1BSD pipes were implemented without the complexity of the socket data structures and with simpler code. Further, while not obviously a factor here, 4.2BSD pipes have less system buffer space provided them than 4.1BSD pipes. .PP The \fIexec\fP tests shown in Table 2 were performed with 34 bytes of environment information under 4.1BSD and 40 bytes under 4.2BSD. To figure the cost of passing data through the environment, the execs0null and execs1knull tests were rerun with 1065 additional bytes of data. The results are show in Table 3. .KF .DS L .TS center box; c || c s || c s || c s c || c s || c s || c s c || c | c || c | c || c | c l || n | n || n | n || n | n. Test Real User System \^ _ _ _ \^ 4.1 4.2 4.1 4.2 4.1 4.2 = execs0null 197.0 229.0 4.1 2.6 167.8 212.3 execs1knull 199.0 230.0 4.2 2.6 170.4 214.9 .TE .ce Table 3. Benchmark results with ``large'' environment (all times in seconds). .DE .KE These results show that passing argument data is significantly slower than under 4.1BSD: 121 ms/byte versus 93 ms/byte. Even using this factor to adjust the basic overhead of an \fIexec\fP system call, this facility is more costly under 4.2BSD than under 4.1BSD. .NH 3 Path name translation .PP The single most expensive function performed by the kernel is path name translation. This has been true in almost every UNIX kernel [Mosher80]; we find that our general time sharing systems do about 500,000 name translations per day. .PP Name translations became more expensive in 4.2BSD for several reasons. The single most expensive addition was the symbolic link. Symbolic links have the effect of increasing the average number of components in path names to be translated. As an insidious example, consider the system manager that decides to change /tmp to be a symbolic link to /usr/tmp. A name such as /tmp/tmp1234 that previously required two component translations, now requires four component translations plus the cost of reading the contents of the symbolic link. .PP The new directory format also changes the characteristics of name translation. The more complex format requires more computation to determine where to place new entries in a directory. Conversely the additional information allows the system to only look at active entries when searching, hence searches of directories that had once grown large but currently have few active entries are checked quickly. The new format also stores the length of each name so that costly string comparisons are only done on names that are the same length as the name being sought. .PP The net effect of the changes is that the average time to translate a path name in 4.2BSD is 24.2 milliseconds, representing 40% of the time processing system calls, that is 19% of the total cycles in the kernel, or 11% of all cycles executed on the machine. The times are shown in Table 4. We have no comparable times for \fInamei\fP under 4.1 though they are certain to be significantly less. .KF .DS L .TS center box; l r r. part time % of kernel _ self 14.3 ms/call 11.3% child 9.9 ms/call 7.9% _ total 24.2 ms/call 19.2% .TE .ce Table 4. Call times for \fInamei\fP in 4.2BSD. .DE .KE .NH 3 Clock processing .PP Nearly 25% of the time spent in the kernel is spent in the clock processing routines. (This is a clear indication that to avoid sampling bias when profiling the kernel with our tools we need to drive them from an independent clock.) These routines are responsible for implementing timeouts, scheduling the processor, maintaining kernel statistics, and tending various hardware operations such as draining the terminal input silos. Only minimal work is done in the hardware clock interrupt routine (at high priority), the rest is performed (at a lower priority) in a software interrupt handler scheduled by the hardware interrupt handler. In the worst case, with a clock rate of 100 Hz and with every hardware interrupt scheduling a software interrupt, the processor must field 200 interrupts per second. The overhead of simply trapping and returning is 3% of the machine cycles, figuring out that there is nothing to do requires an additional 2%. .NH 3 Terminal multiplexors .PP The terminal multiplexors supported by 4.2BSD have programmable receiver silos that may be used in two ways. With the silo disabled, each character received causes an interrupt to the processor. Enabling the receiver silo allows the silo to fill before generating an interrupt, allowing multiple characters to be read for each interrupt. At low rates of input, received characters will not be processed for some time unless the silo is emptied periodically. The 4.2BSD kernel uses the input silos of each terminal multiplexor, and empties each silo on each clock interrupt. This allows high input rates without the cost of per-character interrupts while assuring low latency. However, as character input rates on most machines are usually low (about 25 characters per second), this can result in excessive overhead. At the current clock rate of 100 Hz, a machine with 5 terminal multiplexors configured makes 500 calls to the receiver interrupt routines per second. In addition, to achieve acceptable input latency for flow control, each clock interrupt must schedule a software interrupt to run the silo draining routines.\** .FS \** It is not possible to check the input silos at the time of the actual clock interrupt without modifying the terminal line disciplines, as the input queues may not be in a consistent state \**. .FE \** This implies that the worst case estimate for clock processing is the basic overhead for clock processing. .NH 3 Process table management .PP In 4.2BSD there are numerous places in the kernel where a linear search of the process table is performed: .IP \(bu 3 in \fIexit\fP to locate and wakeup a process's parent; .IP \(bu 3 in \fIwait\fP when searching for \fB\s-2ZOMBIE\s+2\fP and \fB\s-2STOPPED\s+2\fP processes; .IP \(bu 3 in \fIfork\fP when allocating a new process table slot and counting the number of processes already created by a user; .IP \(bu 3 in \fInewproc\fP, to verify that a process id assigned to a new process is not currently in use; .IP \(bu 3 in \fIkill\fP and \fIgsignal\fP to locate all processes to which a signal should be delivered; .IP \(bu 3 in \fIschedcpu\fP when adjusting the process priorities every second; and .IP \(bu 3 in \fIsched\fP when locating a process to swap out and/or swap in. .LP These linear searches can incur significant overhead. The rule for calculating the size of the process table is: .ce nproc = 20 + 8 * maxusers .sp that means a 48 user system will have a 404 slot process table. With the addition of network services in 4.2BSD, as many as a dozen server processes may be maintained simply to await incoming requests. These servers are normally created at boot time which causes them to be allocated slots near the beginning of the process table. This means that process table searches under 4.2BSD are likely to take significantly longer than under 4.1BSD. System profiling shows that as much as 20% of the time spent in the kernel on a loaded system (a VAX-11/780) can be spent in \fIschedcpu\fP and, on average, 5-10% of the kernel time is spent in \fIschedcpu\fP. The other searches of the proc table are similarly affected. This shows the system can no longer tolerate using linear searches of the process table. .NH 3 File system buffer cache .PP The trace facilities described in section 2.3 were used to gather statistics on the performance of the buffer cache. We were interested in measuring the effectiveness of the cache and the read-ahead policies. With the file system block size in 4.2BSD four to eight times that of a 4.1BSD file system, we were concerned that large amounts of read-ahead might be performed without being used. Also, we were interested in seeing if the rules used to size the buffer cache at boot time were severely affecting the overall cache operation. .PP The tracing package was run over a three hour period during a peak mid-afternoon period on a VAX 11/780 with four megabytes of physical memory. This resulted in a buffer cache containing 400 kilobytes of memory spread among 50 to 200 buffers (the actual number of buffers depends on the size mix of disk blocks being read at any given time). The pertinent configuration information is shown in Table 5. .KF .DS L .TS center box; l l l l. Controller Drive Device File System _ DEC MASSBUS DEC RP06 hp0d /usr hp0b swap Emulex SC780 Fujitsu Eagle hp1a /usr/spool/news hp1b swap hp1e /usr/src hp1d /u0 (users) Fujitsu Eagle hp2a /tmp hp2b swap hp2d /u1 (users) Fujitsu Eagle hp3a / .TE .ce Table 5. Active file systems during buffer cache tests. .DE .KE .PP During the test period the load average ranged from 2 to 13 with an average of 5. The system had no idle time, 43% user time, and 57% system time. The system averaged 90 interrupts per second (excluding the system clock interrupts), 220 system calls per second, and 50 context switches per second (40 voluntary, 10 involuntary). .PP The active virtual memory (the sum of the address space sizes of all jobs that have run in the previous twenty seconds) over the period ranged from 2 to 6 megabytes with an average of 3.5 megabytes. There was no swapping, though the page daemon was inspecting about 25 pages per second. .PP On average 250 requests to read disk blocks were initiated per second. These include read requests for file blocks made by user programs as well as requests initiated by the system. System reads include requests for indexing information to determine where a file's next data block resides, file system layout maps to allocate new data blocks, and requests for directory contents needed to do path name translations. .PP On average, an 85% cache hit rate was observed for read requests. Thus only 37 disk reads were initiated per second. In addition, 5 read-ahead requests were made each second filling about 20% of the buffer pool. Despite the policies to rapidly reuse read-ahead buffers that remain unclaimed, more than 90% of the read-ahead buffers were used. .PP These measurements showed that the buffer cache was working effectively. Independent tests have also showed that the size of the buffer cache may be reduced significantly on memory-poor system without severe effects; we have not yet tested this hypothesis [Shannon83]. .NH 3 Network subsystem .PP The overhead associated with the network facilities found in 4.2BSD is often difficult to gauge without profiling the system. This is because most input processing is performed in modules scheduled with software interrupts. As a result, the system time spent performing protocol processing is rarely attributed to the processes that really receive the data. Since the protocols supported by 4.2BSD can involve significant overhead this was a serious concern. Results from a profiled kernel show an average of 5% of the system time is spent performing network input and timer processing in our environment (a 3Mb/s Ethernet with most traffic using TCP). This figure can vary significantly depending on the network hardware used, the average message size, and whether packet reassembly is required at the network layer. On one machine we profiled over a 17 hour period (our gateway to the ARPANET) 206,000 input messages accounted for 2.4% of the system time, while another 0.6% of the system time was spent performing protocol timer processing. This machine was configured with an ACC LH/DH IMP interface and a DMA 3Mb/s Ethernet controller. .PP The performance of TCP over slower long-haul networks was degraded substantially by two problems. The first problem was a bug that prevented round-trip timing measurements from being made, thus increasing retransmissions unnecessarily. The second was a problem with the maximum segment size chosen by TCP, that was well-tuned for Ethernet, but was poorly chosen for the ARPANET, where it causes packet fragmentation. (The maximum segment size was actually negotiated upwards to a value that resulted in excessive fragmentation.) .PP When benchmarked in Ethernet environments the main memory buffer management of the network subsystem presented some performance anomalies. The overhead of processing small ``mbufs'' severely affected throughput for a substantial range of message sizes. In spite of the fact that most system ustilities made use of the throughput optimal 1024 byte size, user processes faced large degradations for some arbitrary sizes. This was specially true for TCP/IP transmissions [Cabrera84, Cabrera85]. .NH 3 Virtual memory subsystem .PP We ran a set of tests intended to exercise the virtual memory system under both 4.1BSD and 4.2BSD. The tests are described in Table 6. The test programs dynamically allocated a 7.3 Megabyte array (using \fIsbrk\fP\|(2)) then referenced pages in the array either: sequentially, in a purely random fashion, or such that the distance between successive pages accessed was randomly selected from a Gaussian distribution. In the last case, successive runs were made with increasing standard deviations. .KF .DS L .TS center box; l | l. Test Description _ seqpage sequentially touch pages, 10 iterations seqpage-v as above, but first make \fIvadvise\fP\|(2) call randpage touch random page 30,000 times randpage-v as above, but first make \fIvadvise\fP call gausspage.1 30,000 Gaussian accesses, standard deviation of 1 gausspage.10 as above, standard deviation of 10 gausspage.30 as above, standard deviation of 30 gausspage.40 as above, standard deviation of 40 gausspage.50 as above, standard deviation of 50 gausspage.60 as above, standard deviation of 60 gausspage.80 as above, standard deviation of 80 gausspage.inf as above, standard deviation of 10,000 .TE .ce Table 6. Paging benchmark programs. .DE .KE .PP The results in Table 7 show how the additional memory requirements of 4.2BSD can generate more work for the paging system. Under 4.1BSD, the system used 0.5 of the 4.5 megabytes of physical memory on the test machine; under 4.2BSD it used nearly 1 megabyte of physical memory.\** .FS \** The 4.1BSD system used for testing was really a 4.1a system configured with networking facilities and code to support remote file access. The 4.2BSD system also included the remote file access code. Since both systems would be larger than similarly configured ``vanilla'' 4.1BSD or 4.2BSD system, we consider out conclusions to still be valid. .FE This resulted in more page faults and, hence, more system time. To establish a common ground on which to compare the paging routines of each system, we check instead the average page fault service times for those test runs that had a statistically significant number of random page faults. These figures, shown in Table 8, show no significant difference between the two systems in the area of page fault servicing. We currently have no explanation for the results of the sequential paging tests. .KF .DS L .TS center box; l || c s || c s || c s || c s l || c s || c s || c s || c s l || c | c || c | c || c | c || c | c l || n | n || n | n || n | n || n | n. Test Real User System Page Faults \^ _ _ _ _ \^ 4.1 4.2 4.1 4.2 4.1 4.2 4.1 4.2 = seqpage 959 1126 16.7 12.8 197.0 213.0 17132 17113 seqpage-v 579 812 3.8 5.3 216.0 237.7 8394 8351 randpage 571 569 6.7 7.6 64.0 77.2 8085 9776 randpage-v 572 562 6.1 7.3 62.2 77.5 8126 9852 gausspage.1 25 24 23.6 23.8 0.8 0.8 8 8 gausspage.10 26 26 22.7 23.0 3.2 3.6 2 2 gausspage.30 34 33 25.0 24.8 8.6 8.9 2 2 gausspage.40 42 81 23.9 25.0 11.5 13.6 3 260 gausspage.50 113 175 24.2 26.2 19.6 26.3 784 1851 gausspage.60 191 234 27.6 26.7 27.4 36.0 2067 3177 gausspage.80 312 329 28.0 27.9 41.5 52.0 3933 5105 gausspage.inf 619 621 82.9 85.6 68.3 81.5 8046 9650 .TE .ce Table 7. Paging benchmark results (all times in seconds). .DE .KE .KF .DS L .TS center box; c || c s || c s c || c s || c s c || c | c || c | c l || n | n || n | n. Test Page Faults PFST \^ _ _ \^ 4.1 4.2 4.1 4.2 = randpage 8085 9776 791 789 randpage-v 8126 9852 765 786 gausspage.inf 8046 9650 848 844 .TE .ce Table 8. Page fault service times (all times in microseconds). .DE .KE n \fIfork\fP when allocating a new process table slot and counting the number of processes already created by a user; .IP \(bu 3 in \fInewproc\fP, to verify that a process id assigned to a new process is not currently in use; .IP \(bu 3 in \fIkill\fP and \fIgsignal\fP to locate all processes to which a signal should be delivered; .IP \(bu 3 in \fIschedcpu\fP when adjusting the process priorities every second; and .IP \doc/misc/sysperf/4.t 444 3 12 100130 3527240031 7603 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)4.t 1.2 (Berkeley) 8/11/85 .\" .ds RH Performance Improvements .NH Performance Improvements .PP This section outlines the changes made to the system since the 4.2BSD distribution. The changes reported here were made in response to the problems described in Section 3. The improvements fall into two major classes; changes to the kernel that are described in this section, and changes to the system libraries and utilities that are described in the following section. .NH 2 Performance Improvements in the Kernel .PP Our goal has been to optimize system performance for our general timesharing environment. Since most sites running 4.2BSD have been forced to take advantage of declining memory costs rather than replace their existing machines with ones that are more powerful, we have chosen to optimize running time at the expense of memory. This tradeoff may need to be reconsidered for personal workstations that have smaller memories and higher latency disks. Decreases in the running time of the system may be unnoticeable because of higher paging rates incurred by a larger kernel. Where possible, we have allowed the size of caches to be controlled so that systems with limited memory may reduce them as appropriate. .NH 3 Name Cacheing .PP Our initial profiling studies showed that more than one quarter of the time in the system was spent in the pathname translation routine, \fInamei\fP, translating path names to inodes\u\s-21\s0\d\**. .FS \** \u\s-21\s0\d Inode is an abbreviation for ``Index node''. Each file on the system is described by an inode; the inode maintains access permissions, and an array of pointers to the disk blocks that hold the data associated with the file. .FE An inspection of \fInamei\fP shows that it consists of two nested loops. The outer loop is traversed once per pathname component. The inner loop performs a linear search through a directory looking for a particular pathname component. .PP Our first idea was to reduce the number of iterations around the inner loop of \fInamei\fP by observing that many programs step through a directory performing an operation on each entry in turn. To improve performance for processes doing directory scans, the system keeps track of the directory offset of the last component of the most recently translated path name for each process. If the next name the process requests is in the same directory, the search is started from the offset that the previous name was found (instead of from the beginning of the directory). Changing directories invalidates the cache, as does modifying the directory. For programs that step sequentially through a directory with .EQ delim $$ .EN $N$ files, search time decreases from $O ( N sup 2 )$ to $O(N)$. .EQ delim off .EN .PP The cost of the cache is about 20 lines of code (about 0.2 kilobytes) and 16 bytes per process, with the cached data stored in a process's \fIuser\fP vector. .PP As a quick benchmark to verify the maximum effectiveness of the cache we ran ``ls \-l'' on a directory containing 600 files. Before the per-process cache this command used 22.3 seconds of system time. After adding the cache the program used the same amount of user time, but the system time dropped to 3.3 seconds. .PP This change prompted our rerunning a profiled system on a machine containing the new \fInamei\fP. The results showed that the time in \fInamei\fP dropped by only 2.6 ms/call and still accounted for 36% of the system call time, 18% of the kernel, or about 10% of all the machine cycles. This amounted to a drop in system time from 57% to about 55%. The results are shown in Table 9. .KF .DS L .TS center box; l r r. part time % of kernel _ self 11.0 ms/call 9.2% child 10.6 ms/call 8.9% _ total 21.6 ms/call 18.1% .TE .ce Table 9. Call times for \fInamei\fP with per-process cache. .DE .KE .PP The small performance improvement was caused by a low cache hit ratio. Although the cache was 90% effective when hit, it was only usable on about 25% of the names being translated. An additional reason for the small improvement was that although the amount of time spent in \fInamei\fP itself decreased substantially, more time was spent in the routines that it called since each directory had to be accessed twice; once to search from the middle to the end, and once to search from the beginning to the middle. .PP Frequent requests for a small set of names are best handled with a cache of recent name translations\**. .FS \** The cache is keyed on a name and the inode and device number of the directory that contains it. Associated with each entry is a pointer to the corresponding entry in the inode table. .FE This has the effect of eliminating the inner loop of \fInamei\fP. For each path name component, \fInamei\fP first looks in its cache of recent translations for the needed name. If it exists, the directory search can be completely eliminated. .PP The system already maintained a cache of recently accessed inodes, so the initial name cache maintained a simple name-inode association that was used to check each component of a path name during name translations. We considered implementing the cache by tagging each inode with its most recently translated name, but eventually decided to have a separate data structure that kept names with pointers to the inode table. Tagging inodes has two drawbacks; many inodes such as those associated with login ports remain in the inode table for a long period of time, but are never looked up by name. Other inodes, such as those describing directories are looked up frequently by many different names (\fIe.g.\fP ``..''). By keeping a separate table of names, the cache can truly reflect the most recently used names. An added benefit is that the table can be sized independently of the inode table, so that machines with small amounts of memory can reduce the size of the cache (or even eliminate it) without modifying the inode table structure. .PP Another issue to be considered is how the name cache should hold references to the inode table. Normally processes hold ``hard references'' by incrementing the reference count in the inode they reference. Since the system reuses only inodes with zero reference counts, a hard reference insures that the inode pointer will remain valid. However, if the name cache holds hard references, it is limited to some fraction of the size of the inode table, since some inodes must be left free for new files. It also makes it impossible for other parts of the kernel to verify sole use of a device or file. These reasons made it impractical to use hard references without affecting the behavior of the inode cacheing scheme. Thus, we chose instead to keep ``soft references'' protected by a \fIcapability\fP \- a 32-bit number guaranteed to be unique\u\s-22\s0\d \**. .FS \** \u\s-22\s0\d When all the numbers have been exhausted, all outstanding capabilities are purged and numbering starts over from scratch. Purging is possible as all capabilities are easily found in kernel memory. .FE When an entry is made in the name cache, the capability of its inode is copied to the name cache entry. When an inode is reused it is issued a new capability. When a name cache hit occurs, the capability of the name cache entry is compared with the capability of the inode that it references. If the capabilities do not match, the name cache entry is invalid. Since the name cache holds only soft references, it may be sized independent of the size of the inode table. A final benefit of using capabilities is that all cached names for an inode may be invalidated without searching through the entire cache; instead all you need to do is assign a new capability to the inode. .PP The cost of the name cache is about 200 lines of code (about 1.2 kilobytes) and 48 bytes per cache entry. Depending on the size of the system, about 200 to 1000 entries will normally be configured, using 10-50 kilobytes of physical memory. The name cache is resident in memory at all times. .PP After adding the system wide name cache we reran ``ls \-l'' on the same directory. The user time remained the same, however the system time rose slightly to 3.7 seconds. This was not surprising as \fInamei\fP now had to maintain the cache, but was never able to make any use of it. .PP Another profiled system was created and measurements were collected over a 17 hour period. These measurements showed a 13 ms/call decrease in \fInamei\fP, with \fInamei\fP accounting for only 26% of the system call time, 13% of the time in the kernel, or about 7% of all the machine cycles. System time dropped from 55% to about 49%. The results are shown in Table 10. .KF .DS L .TS center box; l r r. part time % of kernel _ self 4.2 ms/call 6.2% child 4.4 ms/call 6.6% _ total 8.6 ms/call 12.8% .TE .ce Table 10. Call times for \fInamei\fP with both caches. .DE .KE .PP On our general time sharing systems we find that during the twelve hour period from 8AM to 8PM the system does 500,000 to 1,000,000 name translations. Statistics on the performance of both caches show that the large performance improvement is caused by the high hit ratio. The name cache has a hit rate of 70%-80%; the directory offset cache gets a hit rate of 5%-15%. The combined hit rate of the two caches almost always adds up to 85%. With the addition of the two caches, the percentage of system time devoted to name translation has dropped from 25% to less than 13%. While the system wide cache reduces both the amount of time in the routines that \fInamei\fP calls as well as \fInamei\fP itself (since fewer directories need to be accessed or searched), it is interesting to note that the actual percentage of system time spent in \fInamei\fP itself increases even though the actual time per call decreases. This is because less total time is being spent in the kernel, hence a smaller absolute time becomes a larger total percentage. .NH 3 Intelligent Auto Siloing .PP Most terminal input hardware can run in two modes: it can either generate an interrupt each time a character is received, or collect characters in a silo that the system then periodically drains. To provide quick response for interactive input and flow control, a silo must be checked 30 to 50 times per second. Ascii terminals normally exhibit an input rate of less than 30 characters per second. At this input rate they are most efficiently handled with interrupt per character mode, since this generates fewer interrupts than draining the input silos of the terminal multiplexors at each clock interrupt. When input is being generated by another machine or a malfunctioning terminal connection, however, the input rate is usually more than 50 characters per second. It is more efficient to use a device's silo input mode, since this generates fewer interrupts than handling each character as a separate interrupt. Since a given dialup port may switch between uucp logins and user logins, it is impossible to statically select the most efficient input mode to use. .PP We therefore changed the terminal multiplexor handlers to dynamically choose between the use of the silo and the use of per-character interrupts. At low input rates the handler processes characters on an interrupt basis, avoiding the overhead of checking each interface on each clock interrupt. During periods of sustained input, the handler enables the silo and starts a timer to drain input. This timer runs less frequently than the clock interrupts, and is used only when there is a substantial amount of input. The transition from using silos to an interrupt per character is damped to minimize the number of transitions with bursty traffic (such as in network communication). Input characters serve to flush the silo, preventing long latency. By switching between these two modes of operation dynamically, the overhead of checking the silos is incurred only when necessary. .PP In addition to the savings in the terminal handlers, the clock interrupt routine is no longer required to schedule a software interrupt after each hardware interrupt to drain the silos. The software-interrupt level portion of the clock routine is only needed when timers expire or the current user process is collecting an execution profile. Thus, the number of interrupts attributable to clock processing is substantially reduced. .NH 3 Process Table Management .PP As systems have grown larger, the size of the process table has grown far past 200 entries. With large tables, linear searches must be eliminated from any frequently used facility. The kernel process table is now multi-threaded to allow selective searching of active and zombie processes. A third list threads unused process table slots. Free slots can be obtained in constant time by taking one from the front of the free list. The number of processes used by a given user may be computed by scanning only the active list. Since the 4.2BSD release, the kernel maintained linked lists of the descendents of each process. This linkage is now exploited when dealing with process exit; parents seeking the exit status of children now avoid linear search of the process table, but examine only their direct descendents. In addition, the previous algorithm for finding all descendents of an exiting process used multiple linear scans of the process table. This has been changed to follow the links between child process and siblings. .PP When forking a new process, the system must assign it a unique process identifier. The system previously scanned the entire process table each time it created a new process to locate an identifier that was not already in use. Now, to avoid scanning the process table for each new process, the system computes a range of unused identifiers that can be directly assigned. Only when the set of identifiers is exhausted is another process table scan required. .NH 3 Scheduling .PP Previously the scheduler scanned the entire process table once per second to recompute process priorities. Processes that had run for their entire time slice had their priority lowered. Processes that had not used their time slice, or that had been sleeping for the past second had their priority raised. On systems running many processes, the scheduler represented nearly 20% of the system time. To reduce this overhead, the scheduler has been changed to consider only runnable processes when recomputing priorities. To insure that processes sleeping for more than a second still get their appropriate priority boost, their priority is recomputed when they are placed back on the run queue. Since the set of runnable process is typically only a small fraction of the total number of processes on the system, the cost of invoking the scheduler drops proportionally. .NH 3 Clock Handling .PP The hardware clock interrupts the processor 100 times per second at high priority. As most of the clock-based events need not be done at high priority, the system schedules a lower priority software interrupt to do the less time-critical events such as cpu scheduling and timeout processing. Often there are no such events, and the software interrupt handler finds nothing to do and returns. The high priority event now checks to see if there are low priority events to process; if there is nothing to do, the software interrupt is not requested. Often, the high priority interrupt occurs during a period when the machine had been running at low priority. Rather than posting a software interrupt that would occur as soon as it returns, the hardware clock interrupt handler simply lowers the processor priority and calls the software clock routines directly. Between these two optimizations, nearly 80 of the 100 software interrupts per second can be eliminated. .NH 3 File System .PP The file system uses a large block size, typically 4096 or 8192 bytes. To allow small files to be stored efficiently, the large blocks can be broken into smaller fragments, typically multiples of 1024 bytes. To minimize the number of full-sized blocks that must be broken into fragments, the file system uses a best fit strategy. Programs that slowly grow files using write of 1024 bytes or less can force the file system to copy the data to successively larger and larger fragments until it finally grows to a full sized block. The file system still uses a best fit strategy the first time a fragment is written. However, the first time that the file system is forced to copy a growing fragment it places it at the beginning of a full sized block. Continued growth can be accommodated without further copying by using up the rest of the block. If the file ceases to grow, the rest of the block is still available for holding other fragments. .PP When creating a new file name, the entire directory in which it will reside must be scanned to insure that the name does not already exist. For large directories, this scan is time consuming. Because there was no provision for shortening directories, a directory that is once over-filled will increase the cost of file creation even after the over-filling is corrected. Thus, for example, a congested uucp connection can leave a legacy long after it is cleared up. To alleviate the problem, the system now deletes empty blocks that it finds at the end of a directory while doing a complete scan to create a new name. .NH 3 Network .PP The default amount of buffer space allocated for stream sockets (including pipes) has been increased to 4096 bytes. Stream sockets and pipes now return their buffer sizes in the block size field of the stat structure. This information allows the standard I/O library to use more optimal buffering. Unix domain stream sockets also return a dummy device and inode number in the stat structure to increase compatibility with other pipe implementations. The TCP maximum segment size is calculated according to the destination and interface in use; non-local connections use a more conservative size for long-haul networks. .PP On multiply-homed hosts, the local address bound by TCP now always corresponds to the interface that will be used in transmitting data packets for the connection. Several bugs in the calculation of round trip timing have been corrected. TCP now switches to an alternate gateway when an existing route fails, or when an ICMP redirect message is received. ICMP source quench messages are used to throttle the transmission rate of TCP streams by temporarily creating an artificially small send window, and retransmissions send only a single packet rather than resending all queued data. A send policy has been implemented that decreases the number of small packets outstanding for network terminal traffic [Nagle84], providing additional reduction of network congestion. The overhead of packet routing has been decreased by changes in the routing code and by cacheing the most recently used route for each datagram socket. .PP The buffer management strategy implemented by \fIsosend\fP has been changed to make better use of the increased size of the socket buffers and a better tuned delayed acknowledgement algorithm. Routing has been modified to include a one element cache of the last route computed. Multiple messages send with the same destination now require less processing. Figures 1 and 2 present typical throughput rates that user processes in 4.3BSD systems may expect when run under light load. In [Cabrera85] we documented the performance degradation due to load in either the sender host, receiver host, or ether. Any CPU contention degrades substantially the throughput achievable by user processes. We have observed empty VAX 11/750s using up to 90% of their cycles transmitting network messages. .PP Figure 1. (I owe it. lfc) .PP Figure 2. (I owe it. lfc) .NH 3 Exec .PP When \fIexec\fP-ing a new process, the kernel creates the new program's argument list by copying the arguments and environment from the parent process's address space into the system, then back out again onto the stack of the newly created process. These two copy operations were done one byte at a time, but are now done a string at a time. This optimization reduced the time to process an argument list by a factor of ten; the average time to do an \fIexec\fP call decreased by 25%. .NH 3 Context Switching .PP The kernel used to post a software event when it wanted to force a process to be rescheduled. Often the process would be rescheduled for other reasons before exiting the kernel, delaying the event trap. At some later time the process would again be selected to run and would complete its pending system call, finally causing the event to take place. The event would cause the scheduler to be invoked a second time selecting the same process to run. The fix to this problem is to cancel any software reschedule events when saving a process context. This change doubles the speed with which processes can synchronize using pipes or signals. .NH 3 Setjmp/Longjmp .PP The kernel routine \fIsetjmp\fP, that saves the current system context in preparation for a non-local goto used to save many more registers than necessary under most circumstances. By trimming its operation to save only the minimum state required, the overhead for system calls decreased by an average of 13%. .NH 3 Compensating for Lack of Compiler Technology .PP The current compilers available for C do not do any significant optimization. Good optimizing compilers are unlikely to be built; the C language is not well suited to optimization because of its rampant use of unbound pointers. Thus, many classical optimizations such as common subexpression analysis and selection of register variables must be done by hand using ``exterior'' knowledge of when such optimizations are safe. .PP Another optimization usually done by optimizing compilers is inline expansion of small or frequently used routines. In past Berkeley systems this has been done by using \fIsed\fP to run over the assembly language and replace calls to small routines with the code for the body of the routine, often a single VAX instruction. While this optimization eliminated the cost of the subroutine call and return, it did not eliminate the pushing and popping of several arguments to the routine. The \fIsed\fP script has been replaced by a more intelligent expander, \fIinline\fP, that merges the pushes and pops into moves to registers. For example, if the C code .DS if (scanc(map[i], 1, 47, i - 63)) .DE is compiled into assembly language it generates the code shown in the left hand column of Table 11. The \fIsed\fP inline expander changes this code to that shown in the middle column. The newer optimizer eliminates most of the stack operations to generate the code shown in the right hand column. .KF .TS center, box; c s s s s s c s | c s | c s l l | l l | l l. Alternative C Language Code Optimizations _ cc sed inline _ subl3 $64,_i,\-(sp) subl3 $64,_i,\-(sp) subl3 $64,_i,r5 pushl $47 pushl $47 movl $47,r4 pushl $1 pushl $1 pushl $1 mull2 $16,_i,r3 mull2 $16,_i,r3 mull2 $16,_i,r3 pushl \-56(fp)[r3] pushl \-56(fp)[r3] movl \-56(fp)[r3],r2 calls $4,_scanc movl (sp)+,r5 movl (sp)+,r3 tstl r0 movl (sp)+,r4 scanc r2,(r3),(r4),r5 jeql L7 movl (sp)+,r3 tstl r0 movl (sp)+,r2 jeql L7 scanc r2,(r3),(r4),r5 tstl r0 jeql L7 .TE .ce Table 11. Alternative inline code expansions. .KE .PP Another optimization involved reevaluating existing data structures in the context of the current system. For example, disk buffer hashing was implemented when the system typically had thirty to fifty buffers. Most systems today have 200 to 1000 buffers. Consequently, most of the hash chains contained ten to a hundred buffers each! The running time of the low level buffer management primitives was dramatically improved simply by enlarging the size of the hash table. .NH 2 Improvements to Libraries and Utilities .PP Intuitively, changes to the kernel would seem to have the greatest payoff since they affect all programs that run on the system. However, the kernel has been tuned many times before, so the opportunity for significant improvement was small. By contrast, many of the libraries and utilities had never been tuned. For example, we found utilities that spent 90% of their running time doing single character read system calls. Changing the utility to use the standard I/O library cut the running time by a factor of five! Thus, while most of our time has been spent tuning the kernel, more than half of the speedups are because of improvements in other parts of the system. Some of the more dramatic changes are described in the following subsections. .NH 3 Hashed Databases .PP UNIX provides a set of database management routines, \fIdbm\fP, that can be used to speed lookups in large data files with an external hashed index file. The original version of dbm was designed to work with only one database at a time. These routines were generalized to handle multiple database files, enabling them to be used in rewrites of the password and host file lookup routines. The new routines used to access the password file significantly improve the running time of many important programs such as the mail subsystem, the C-shell (in doing tilde expansion), \fIls \-l\fP, etc. .NH 3 Buffered I/O .PP The new filesystem with its larger block sizes allows better performance, but it is possible to degrade system performance by performing numerous small transfers rather than using appropriately-sized buffers. The standard I/O library automatically determines the optimal buffer size for each file. Some C library routines and commonly-used programs use low-level I/O or their own buffering, however. Several important utilities that did not use the standard I/O library and were buffering I/O using the old optimal buffer size, 1Kbytes; the programs were changed to buffer I/O according to the optimal file system blocksize. These include the editor, the assembler, loader, remote file copy, the text formatting programs, and the C compiler. .PP The standard error output has traditionally been unbuffered to prevent delay in presenting the output to the user, and to prevent it from being lost if buffers are not flushed. The inordinate expense of sending single-byte packets through the network led us to impose a buffering scheme on the standard error stream. Within a single call to \fIfprintf\fP, all output is buffered temporarily. Before the call returns, all output is flushed and the stream is again marked unbuffered. As before, the normal block or line buffering mechanisms can be used instead of the default behavior. .PP It is possible for programs with good intentions to unintentionally defeat the standard I/O library's choice of I/O buffer size by using the \fIsetbuf\fP call to assign an output buffer. Because of portability requirements, the default buffer size provided by \fIsetbuf\fP is 1024 bytes; this can lead, once again, to added overhead. One such program with this problem was \fIcat\fP; there are undoubtedly other standard system utilities with similar problems as the system has changed much since they were originally written. .NH 3 Mail System .PP The problems discussed in section 3.1.1 prompted significant work on the entire mail system. The first problem identified was a bug in the \fIsyslog\fP program. The mail delivery program, \fIsendmail\fP logs all mail transactions through this process with the 4.2BSD interprocess communication facilities. \fISyslog\fP then records the information in a log file. Unfortunately, \fIsyslog\fP was performing a \fIsync\fP operation after each message it received, whether it was logged to a file or not. This wreaked havoc on the effectiveness of the buffer cache and explained, to a large extent, why sending mail to large distribution lists generated such a heavy load on the system (one syslog message was generated for each message recipient causing almost a continuous sequence of sync operations). .PP The hashed data base files were installed in all mail programs, resulting in a order of magnitude speedup on large distribution lists. The code in \fI/bin/mail\fP that notifies the \fIcomsat\fP program when mail has been delivered to a user was changed to cache host table lookups, resulting in a similar speedup on large distribution lists. .PP Next, the file locking facilities provided in 4.2BSD, \fIflock\fP\|(2), were used in place of the old locking mechanism. The mail system previously used \fIlink\fP and \fIunlink\fP in implementing file locking primitives. Because these operations usually modify the contents of directories they require synchronous disk operations and cannot take advantage of the name cache maintained by the system. Unlink requires that the entry be found in the directory so that it can be removed; link requires that the directory be scanned to insure that the name does not already exist. By contrast the advisory locking facility in 4.2BSD is efficient because it is all done with in-memory tables. Thus, the mail system was modified to use the file locking primitives. This yielded another 10% cut in the basic overhead of delivering mail. Extensive profiling and tuning of \fIsendmail\fP and compiling it without debugging code reduced the overhead by another 20%. .NH 3 Network Servers .PP With the introduction of the network facilities in 4.2BSD, a myriad of services became available, each of which required its own daemon process. Many of these daemons were rarely if ever used, yet they lay asleep in the process table consuming system resources and generally slowing down response. Rather than having many servers started at boot time, a single server, \fIinetd\fP was substituted. This process reads a simple configuration file that specifies the services the system is willing to support and listens for service requests on each service's Internet port. When a client requests service the appropriate server is created and passed a service connection as its standard input. Servers that require the identity of their client may use the \fIgetpeername\fP system call; likewise \fIgetsockname\fP may be used to find out a server's local address without consulting data base files. This scheme is attractive for several reasons: .IP \(bu 3 it eliminates as many as a dozen processes, easing system overhead and allowing the file and text tables to be made smaller, .IP \(bu 3 servers need not contain the code required to handle connection queueing, simplifying the programs, and .IP \(bu 3 installing and replacing servers becomes simpler. .PP With an increased numbers of networks, both local and external to Berkeley, we found that the overhead of the routing process was becoming inordinately high. Several changes were made in the routing daemon to reduce this load. Routes to external networks are no longer exchanged by routers on the internal machines, only a route to a default gateway. This reduces the amount of network traffic and the time required to process routing messages. In addition, the routing daemon was profiled and functions responsible for large amounts of time were optimized. The major changes were a faster hashing scheme, and inline expansions of the ubiquitous byte-swapping functions. .PP Under certain circumstances, when output was blocked, attempts by the remote login process to send output to the user were rejected by the system, although a prior \fIselect\fP call had indicated that data could be sent. This resulted in continuous attempts to write the data until the remote user restarted output. This problem was initially avoided in the remote login handler, and the original problem in the kernel has since been corrected. .NH 3 The C Run-time Library .PP Several people have found poorly tuned code in frequently used routines in the C library [Lankford84]. In particular the running time of the string routines can be cut in half by rewriting them using the VAX string instructions. The memory allocation routines have been tuned to waste less memory for memory allocations with sizes that are a power of two. Certain library routines that did file input in one-character reads have been corrected. Other library routines including \fIfread\fP and \fIfwrite\fP have been rewritten for efficiency. .NH 3 Csh .PP The C-shell was converted to run on 4.2BSD by writing a set of routines to simulate the old jobs library. While this provided a functioning C-shell, it was grossly inefficient, generating up to twenty system calls per prompt. The C-shell has been modified to use the new signal facilities directly, cutting the number of system calls per prompt in half. Additional tuning was done with the help of profiling to cut the cost of frequently used facilities. embly language it generates the code shown in the left hand column of Table 11. The \fIsed\fP inline expander changes this code to that shown in the middle column. The newer optimizer eliminates most of the stack operations to generate the code shown in the right hand column. .KF .TS center, box; c s s s s s c s | c s | c s l l | l l | l l. Alternative C Language Code Optimizations _ cc sed inline _ subl3 $64,_i,\-(sp) sdoc/misc/sysperf/5.t 444 3 12 25220 3527240037 7600 .{" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)5.t 1.2 (Berkeley) 8/11/85 .\" .ds RH Functional Extensions .NH Functional Extensions .PP Some of the facilities introduced in 4.2BSD were not completely implemented. An important part of the effort that went into 4.3BSD was to clean up and unify both new and old facilities. .NH 2 Kernel Extensions .PP A significant effort went into improving the networking part of the kernel. The work consisted of fixing bugs, tuning the algorithms, and revamping the lowest levels of the system to better handle heterogeneous network topologies. .NH 3 Subnets, Broadcasts and Gateways .PP To allow sites to expand their network in an autonomous and orderly fashion, subnetworks have been introduced in 4.3BSD [GADS85]. This facility allows sites to subdivide their local Internet address space into multiple subnetwork address spaces that are visible only by hosts at that site. To off-site hosts machines on a site's subnetworks appear to reside on a single network. The routing daemon has been reworked to provide routing support in this type of environment. .PP The default Internet broadcast address is now specified with a host part of all one's, rather than all zero's. The broadcast address may be set at boot time on a per-interface basis. .NH 3 Interface Addressing .PP The organization of network interfaces has been reworked to more cleanly support multiple network protocols. Network interfaces no longer contain a host's address on that network; instead each interface contains a pointer to a list of addresses assigned to that interface. This permits a single interface to support, for example, Internet protocols at the same time as XNS protocols. .PP The Address Resolution Protocol (ARP) support for 10 megabyte/second Ethernet\(dg .FS \(dg Ethernet is a trademark of Xerox. .FE has been made more flexible by allowing hosts to act as an ``clearing house'' for hosts that do not support ARP. In addition, system managers have more control over the contents of the ARP translation cache and may interactively interrogate and modify the cache's contents. .NH 3 User Control of Network Buffering .PP Although the system allocates reasonable default amounts of buffering for most connections, certain operations such as file system dumps to remote machines benefit from significant increases in buffering [Walsh84]. The \fIsetsockopt\fP system call has been extended to allow such requests. In addition, \fIgetsockopt\fP and \fIsetsockopt\fP, are now interfaced to the protocol level allowing protocol-specific options to be manipulated by the user. .NH 3 Number of File Descriptors .PP To allow full use of the many descriptor based services available, the previous hard limit of 30 open files per process has been relaxed. The changes entailed generalizing \fIselect\fP to handle arrays of 32-bit words, removing the dependency on file descriptors from the page table entries, and limiting most of the linear scans of a process's file table. The default per-process descriptor limit was raised from 20 to 64, though there are no longer any hard upper limits on the number of file descriptors. .NH 3 Kernel Limits .PP Many internal kernel configuration limits have been increased by suitable modifications to data structures. The limit on physical memory has been changed from 8 megabyte to 64 megabyte, and the limit of 15 mounted file systems has been changed to 255. The maximum file system size has been increased to 8 gigabyte, number of processes to 65536, and per process size to 64 megabyte of data and 64 megabyte of stack. Note that these are upper bounds, the default limits for these quantities are tuned for systems with 4-8 megabyte of physical memory. .NH 3 Memory Management .PP The global clock page replacement algorithm used to have a single hand that was used both to mark and to reclaim memory. The first time that it encountered a page it would clear its reference bit. If the reference bit was still clear on its next pass across the page, it would reclaim the page. The use of a single hand does not work well with large physical memories as the time to complete a single revolution of the hand can take up to a minute or more. By the time the hand gets around to the marked pages, the information is usually no longer pertinent. During periods of sudden shortages, the page daemon will not be able to find any reclaimable pages until it has completed a full revolution. To alleviate this problem, the clock hand has been split into two separate hands. The front hand clears the reference bits, the back hand follows a constant number of pages behind reclaiming pages that still have cleared reference bits. While the code has been written to allow the distance between the hands to be varied, we have not found any algorithms suitable for determining how to dynamically adjust this distance. .PP The configuration of the virtual memory system used to require a significant understanding of its operation to do such simple tasks as increasing the maximum process size. This process has been significantly improved so that the most common configuration parameters, such as the virtual memory sizes, can be specified using a single option in the configuration file. Standard configurations support data and stack segments of 17, 33 and 64 megabytes. .NH 3 Signals .PP The 4.2BSD signal implementation would push several words onto the normal run-time stack before switching to an alternate signal stack. The 4.3BSD implementation has been corrected so that the entire signal handler's state is now pushed onto the signal stack. Another limitation in the original signal implementation was that it used an undocumented system call to return from signals. Users could not write their own return from exceptions; 4.3BSD formally specifies the \fIsigreturn\fP system call. .PP Many existing programs depend on interrupted system calls. The restartable system call semantics of 4.2BSD signals caused many of these programs to break. To simplify porting of programs from inferior versions of .UX the \fIsigvec\fP system call has been extended so that programmers may specify that system calls are not to be restarted after particular signals. .NH 3 System Logging .PP A system logging facility has been added that sends kernel messages to the syslog daemon for logging in /usr/adm/messages and possibly for printing on the system console. The revised scheme for logging messages eliminates the time lag in updating the messages file, unifies the format of kernel messages, provides a finer granularity of control over the messages that get printed on the console, and eliminates the degradation in response during the printing of low-priority kernel messages. Recoverable system errors and common resource limitations are logged using this facility. Most system utilities such as init and login, have been modified to log errors to syslog rather than writing directly on the console. .NH 3 Windows .PP The tty structure has been augmented to hold information about the size of an associated window or terminal. These sizes can be obtained by programs such as editors that want to know the size of the screen they are manipulating. When these sizes are changed, a new signal, SIGWINCH, is sent the current process group. The editors have been modified to catch this signal and reshape their view of the world, and the remote login program and server now cooperate to propagate window sizes and window size changes across a network. Other programs and libraries such as curses that need the width or height of the screen have been modified to use this facility as well. .NH 3 Configuration of UNIBUS Devices .PP The UNIBUS configuration routines have been extended to allow auto-configuration of dedicated UNIBUS memory held by devices. The new routines simplify the configuration of memory-mapped devices and correct problems occurring on reset of the UNIBUS. .NH 3 Disk Recovery from Errors .PP The MASSBUS disk driver's error recovery routines have been fixed to retry before correcting ECC errors, support ECC on bad-sector replacements, and correctly attempt retries after earlier corrective actions in the same transfer. The error messages are more accurate. .NH 2 Functional Extensions to Libraries and Utilities .PP Most of the changes to the utilities and libraries have been to allow them to handle a more general set of problems, or to handle the same set of problems more quickly. .NH 3 Name Server .PP In 4.2BSD the name resolution routines (\fIgethostbyname\fP, \fIgetservbyname\fP, etc.) were implemented by a set of database files maintained on the local machine. Inconsistencies or obsolescence in these files resulted in inaccessibility of hosts or services. In 4.3BSD these files may be replaced by a network name server that can insure a consistent view of the name space in a multimachine environment. This name server operates in accordance with Internet standards for service on the ARPANET [Mockapetris83]. .NH 3 System Management .PP A new utility, \fIrdist\fP, has been provided to assist system managers in keeping all their machines up to date with a consistent set of sources and binaries. A master set of sources may reside on a single central machine, or be distributed at (known) locations throughout the environment. New versions of \fIgetty\fP, \fIinit\fP, and \fIlogin\fP merge the functions of several files into a single place, and allow more flexibility in the startup of processes such as window managers. .PP The new utility \fItimed\fP keeps the time on a group of cooperating machines (within a single LAN) synchronized to within 30 milliseconds. It does its corrections using a new system call that changes the rate of time advance without stopping or reversing the system clock. It normally selects one machine to act as a master. If the master dies or is partitioned, a new master is elected. Other machines may participate in a purely slave role. .NH 3 Routing .PP Many bugs in the routing daemon have been fixed; it is considerably more robust, and now understands how to properly deal with subnets and point-to-point networks. Its operation has been made more efficient by tuning with the use of execution profiles, along with inline expansion of common operations using the kernel's \fIinline\fP optimizer. .NH 3 Compilers .PP The symbolic debugger \fIdbx\fP has had many new features added, and all the known bugs fixed. In addition \fIdbx\fP has been extended to work with the Pascal compiler. The fortran compiler \fIf77\fP has had numerous bugs fixed. The C compiler has been modified so that it can, optionally, generate single precision floating point instructions when operating on single precision variables. a constant number of pages behind reclaiming pages that still have cleared reference bits. While the code has been written to allow the distance between the hands to be varied, we have not found any algorithms suitable for determining how to dynamically adjust this distance. .PP The configuration of the virtual memory system used to require a significant understanddoc/misc/sysperf/6.t 444 3 12 3431 3527240042 7555 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)6.t 1.2 (Berkeley) 8/11/85 .\" .ds RH Security Tightening .NH Security Tightening .PP Since we do not wish to encourage rampant system cracking, we describe only briefly the changes made to enhance security. .NH 2 Generic Kernel .PP Several loopholes in the process tracing facility have been corrected. Programs being traced may not be executed; executing programs may not be traced. Programs may not provide input to terminals to which they do not have read permission. The handling of process groups has been tightened to eliminate some problems. When a program attempts to change its process group, the system checks to see if the process with the pid of the process group was started by the same user. If it exists and was started by a different user the process group number change is denied. .NH 2 Security Problems in Utilities .PP Setuid utilities no longer use the \fIpopen\fP or \fIsystem\fP library routines. Access to the kernel's data structures through the kmem device is now restricted to programs that are set group id ``kmem''. Thus many programs that used to run with root privileges no longer need to do so. Access to disk devices is now controlled by an ``operator'' group id; this permission allows operators to function without being the super-user. Only users in group wheel can do ``su root''; this restriction allows administrators to define a super-user access list. Numerous holes have been closed in the shell to prevent users from gaining privileges from set user id shell scripts, although use of such scripts is still highly discouraged on systems that are concerned about security. ces. The new routines simplify the configuration of memory-mapped devices and correct problems occurring on reset of the UNIBUS. .NH 3 Disk Recovery from Errors .PP The MASSBUS disk driver's error recovery routines have been fixed doc/misc/sysperf/7.t 444 3 12 11744 3527240051 7604 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)7.t 1.2 (Berkeley) 8/11/85 .\" .ds RH Conclusions .NH Conclusions .PP 4.2BSD, while functionally superior to 4.1BSD, lacked much of the performance tuning required of a good system. We found that the distributed system spent 10-20% more time in the kernel than 4.1BSD. This added overhead combined with problems with several user programs severely limited the overall performance of the system in a general timesharing environment. .PP Changes made to the system since the 4.2BSD distribution have eliminated most of the added system overhead by replacing old algorithms or introducing additional cacheing schemes. The combined caches added to the name translation process reduce the average cost of translating a pathname to an inode by more than 50%. These changes reduce the percentage of time spent running in the system by nearly 9%. .PP The use of silo input on terminal ports only when necessary has allowed the system to avoid a large amount of software interrupt processing. Observations show that the system is forced to field about 25% fewer interrupts than before. .PP The kernel changes, combined with many bug fixes, make the system much more responsive in a general timesharing environment. The 4.3BSD Berkeley UNIX system now appears capable of supporting loads at least as large as those supported under 4.1BSD while providing all the new interprocess communication, networking, and file system facilities. .nr H2 1 .ds RH Acknowledgements .SH \s+2Acknowledgements\s0 .PP We would like to thank Robert Elz for sharing his ideas and his code for cacheing system wide names and searching the process table. We thank Alan Smith for initially suggesting the use of a capability based cache. We also acknowledge George Goble who dropped many of our changes into his production system and reported back fixes to the disasters that they caused. The buffer cache read-ahead trace package was based on a program written by Jim Lawson. Ralph Campbell implemented several of the C library changes. The original version of the Internet daemon was written by Bill Joy. In addition, we would like to thank the many other people that contributed ideas, information, and work while the system was undergoing change. .ds RH References .nr H2 1 .sp 2 .SH \s+2References\s-2 .LP .IP [GADS85] 20 GADS (Gateway Algorithms and Data Structures Task Force), ``Toward an Internet Standard for Subnetting,'' RFC-940, Network Information Center, SRI International, April 1985. .IP [Joy80] 20 Joy, William, ``Comments on the performance of UNIX on the VAX'', Computer System Research Group, U.C. Berkeley. April 1980. .IP [Kashtan80] 20 Kashtan, David L., ``UNIX and VMS, Some Performance Comparisons'', SRI International. February 1980. .IP [Lankford84] 20 Jeffrey Lankford, ``UNIX System V and 4BSD Performance,'' \fIProceedings of the Salt Lake City Usenix Conference\fP, pp 228-236, June 1984. .IP [Leffler84] 20 Sam Leffler, Mike Karels, and M. Kirk McKusick, ``Measuring and Improving the Performance of 4.2BSD,'' \fIProceedings of the Salt Lake City Usenix Conference\fP, pp 237-252, June 1984. .IP [McKusick85] M. Kirk McKusick, Mike Karels, and Samual Leffler, ``Performance Improvements and Functional Enhancements in 4.3BSD'' \fIProceedings of the Portland Usenix Conference\fP, pp 519-531, June 1985. .IP [Mockapetris83] 20 Paul Mockapetris, ``Domain Names \- Implementation and Schedule,'' Network Information Center, SRI International, RFC-883, November 1983. .IP [Mogul84] 20 Jeffrey Mogul, ``Broadcasting Internet Datagrams,'' RFC-919, Network Information Center, SRI International, October 1984. .IP [Mosher80] 20 Mosher, David, ``UNIX Performance, an Introspection'', Presented at the Boulder, Colorado Usenix Conference, January 1980. Copies of the paper are available from Computer System Research Group, U.C. Berkeley. .IP [Nagle84] 20 John Nagle, ``Congestion Control in IP/TCP Internetworks,'' RFC-896, Network Information Center, SRI International, January 1984. .IP [Ritchie74] 20 Ritchie, D. M. and Thompson, K., ``The UNIX Time-Sharing System'', CACM 17, 7. July 1974. pp 365-375 .IP [Shannon83] 20 Shannon, W., private communication, July 1983 .IP [Walsh84] 20 Robert Walsh and Robert Gurwitz, ``Converting BBN TCP/IP to 4.2BSD,'' \fIProceedings of the Salt Lake City Usenix Conference\fP, pp 52-61, June 1984. .IP [Cabrera84] 20 Luis Felipe Cabrera, Eduard Hunter, Michael J. Karels, and David Mosher, ``A User-Process Oriented Performance Study of Ethernet Networking Under Berkeley UNIX 4.2BSD,'' Research Report No. UCB/CSD 84/217, University of California, Berkeley, December 1984. .IP [Cabrera85] 20 Luis Felipe Cabrera, Michael J. Karels, and David Mosher, ``The Impact of Buffer Management on Networking Software Performance in Berkeley UNIX 4.2BSD: A Case Study,'' Proceedings of the Summer Usenix Conference, Portland, Oregon, June 1985, pp. 507-517. A new utility, \fIrdist\fP, doc/misc/sysperf/2.t 444 3 12 24637 3527240066 7612 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.t 1.2 (Berkeley) 8/11/85 .\" .ds RH Observation techniques .NH Observation techniques .PP There are many tools available for monitoring the performance of the system. Those that we found most useful are described below. .NH 2 System maintenance tools .PP Several standard maintenance programs are invaluable in observing the basic actions of the system. The \fIvmstat\fP(1) program is designed to be an aid to monitoring systemwide activity. Together with the \fIps\fP\|(1) command (as in ``ps av''), it can be used to investigate systemwide virtual memory activity. By running \fIvmstat\fP when the system is active you can judge the system activity in several dimensions: job distribution, virtual memory load, paging and swapping activity, disk and cpu utilization. Ideally, to have a balanced system in activity, there should be few blocked (b) jobs, there should be little paging or swapping activity, there should be available bandwidth on the disk devices (most single arms peak out at 25-35 tps in practice), and the user cpu utilization (us) should be high (above 50%). .PP If the system is busy, then the count of active jobs may be large, and several of these jobs may often be blocked (b). If the virtual memory is active, then the paging demon will be running (sr will be non-zero). It is healthy for the paging demon to free pages when the virtual memory gets active; it is triggered by the amount of free memory dropping below a threshold and increases its pace as free memory goes to zero. .PP If you run \fIvmstat\fP when the system is busy (a ``vmstat 5'' gives all the numbers computed by the system), you can find imbalances by noting abnormal job distributions. If many processes are blocked (b), then the disk subsystem is overloaded or imbalanced. If you have several non-dma devices or open teletype lines that are ``ringing'', or user programs that are doing high-speed non-buffered input/output, then the system time may go high (60-80% or higher). It is often possible to pin down the cause of high system time by looking to see if there is excessive context switching (cs), interrupt activity (in) or system call activity (sy). Long term measurements on one of our large machines show an average of 60 context switches and interrupts per second and an average of 90 system calls per second. .PP If the system is heavily loaded, or if you have little memory for your load (1 megabyte is little in our environment), then the system may be forced to swap. This is likely to be accompanied by a noticeable reduction in the system responsiveness and long pauses when interactive jobs such as editors swap out. .PP A second important program is \fIiostat\fP\|(1). \fIIostat\fP iteratively reports the number of characters read and written to terminals, and, for each disk, the number of transfers per second, kilobytes transferred per second, and the milliseconds per average seek. It also gives the percentage of time the system has spent in user mode, in user mode running low priority (niced) processes, in system mode, and idling. .PP To compute this information, for each disk, seeks and data transfer completions and the number of words transferred are counted; for terminals collectively, the number of input and output characters are counted. Also, every 100 ms, the state of each disk is examined and a tally is made if the disk is active. From these numbers and the transfer rates of the devices it is possible to determine average seek times for each device. .PP When filesystems are poorly placed on the available disks, figures reported by \fIiostat\fP can be used to pinpoint bottlenecks. Under heavy system load, disk traffic should be spread out among the drives with higher traffic expected to the devices where the root, swap, and /tmp filesystems are located. When multiple disk drives are attached to the same controller, the system will attempt to overlap seek operations with I/O transfers. When seeks are performed, \fIiostat\fP will show non-zero average seek times. Most modern disk drives should exhibit an average seek time of 25-35 ms. .PP Terminal traffic reported by \fIiostat\fP should be heavily output oriented unless terminal lines are being used for data transfer by programs such as \fIuucp\fP. Input and output rates are system specific. Screen editors such as \fIvi\fP and \fIemacs\fP tend to exhibit output/input ratios of anywhere from 5/1 to 8/1. On one of our largest systems, 88 terminal lines plus 32 pseudo terminals, we observed an average of 180 characters/second input and 450 characters/second output over 4 days of operation. .NH 2 Kernel profiling .PP It is simple to build a 4.2BSD kernel that will automatically collect profiling information as it operates simply by specifying the .B \-p option to \fIconfig\fP\|(8) when configuring a kernel. The program counter sampling can be driven by the system clock, or by an alternate real time clock. The latter is highly recommended as use of the system clock results in statistical anomalies in accounting for the time spent in the kernel clock routine. .PP Once a profiling system has been booted statistic gathering is handled by \fIkgmon\fP\|(8). \fIKgmon\fP allows profiling to be started and stopped and the internal state of the profiling buffers to be dumped. \fIKgmon\fP can also be used to reset the state of the internal buffers to allow multiple experiments to be run without rebooting the machine. .PP The profiling data is processed with \fIgprof\fP\|(1) to obtain information regarding the system's operation. Profiled systems maintain histograms of the kernel program counter, the number of invocations of each routine, and a dynamic call graph of the executing system. The postprocessing propagates the time spent in each routine along the arcs of the call graph. \fIGprof\fP then generates a listing for each routine in the kernel, sorted according to the time it uses including the time of its call graph descendents. Below each routine entry is shown its (direct) call graph children, and how their times are propagated to this routine. A similar display above the routine shows how this routine's time and the time of its descendents is propagated to its (direct) call graph parents. .PP A profiled system is about 5-10% larger in its text space because of the calls to count the subroutine invocations. When the system executes, the profiling data is stored in a buffer that is 1.2 times the size of the text space. All the information is summarized in memory, it is not necessary to have a trace file being continuously dumped to disk. The overhead for running a profiled system varies; under normal load we see anywhere from 5-25% of the system time spent in the profiling code. Thus the system is noticeably slower than an unprofiled system, yet is not so bad that it cannot be used in a production environment. This is important since it allows us to gather data in a real environment rather than trying to devise synthetic work loads. .NH 2 Kernel tracing .PP The kernel can be configured to trace certain operations by specifying ``options TRACE'' in the configuration file. This forces the inclusion of code that records the occurrence of events in \fItrace records\fP in a circular buffer in kernel memory. Events may be enabled/disabled selectively while the system is operating. Each trace record contains a time stamp (taken from the VAX hardware time of day clock register), an event identifier, and additional information that is interpreted according to the event type. Buffer cache operations, such as initiating a read, include the disk drive, block number, and transfer size in the trace record. Virtual memory operations, such as a pagein completing, include the virtual address and process id in the trace record. The circular buffer is normally configured to hold 256 16-byte trace records.\** .FS \** The standard trace facilities distributed with 4.2 differ slightly from those described here. The time stamp in the distributed system is calculated from the kernel's time of day variable instead of the VAX hardware register, and the buffer cache trace points do not record the transfer size. .FE .PP Several user programs were written to sample and interpret the tracing information. One program runs in the background and periodically reads the circular buffer of trace records. The trace information is compressed, in some instances interpreted to generate additional information, and a summary is written to a file. In addition, the sampling program can also record information from other kernel data structures, such as those interpreted by the \fIvmstat\fP program. Data written out to a file is further buffered to minimize I/O load. .PP Once a trace log has been created, programs that compress and interpret the data may be run to generate graphs showing the data and relationships between traced events and system load. .PP The trace package was used mainly to investigate the operation of the file system buffer cache. The sampling program maintained a history of read-ahead blocks and used the trace information to calculate, for example, percentage of read-ahead blocks used. .NH 2 Benchmark programs .PP Benchmark programs were used in two ways. First, a suite of programs was constructed to calculate the cost of certain basic system operations. Operations such as system call overhead and context switching time are critically important in evaluating the overall performance of a system. Because of the drastic changes in the system between 4.1BSD and 4.2BSD, it was important to verify the overhead of these low level operations had not changed appreciably. .PP The second use of benchmarks was in exercising suspected bottlenecks. When we suspected a specific problem with the system, a small benchmark program was written to repeatedly use the facility. While these benchmarks are not useful as a general tool they can give quick feedback on whether a hypothesized improvement is really having an effect. It is important to realize that the only real assurance that a change has a beneficial effect is through long term measurements of general timesharing. We have numerous examples where a benchmark program suggests vast improvements while the change in the long term system performance is negligible, and conversely examples in which the benchmark program run more slowly, but the long term system performance improves significantly. s are located. When multiple disk drives are attached to the same controller, the system will atdoc/misc/sysperf/Makefile 444 3 12 1444 3573664452 10705 # # Copyright (c) 1985 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 1.2 (Berkeley) 11/30/85 # PRINTER=-Pdp TYPE= -n SRCS= 0.t 1.t 2.t 3.t 4.t 5.t 6.t 7.t OBJS= perf.t appendix.t TBL= dtbl EQN= deqn TROFF= ditroff GRIND= igrind paper: perf lpr ${PRINTER} ${TYPE} perf perf: ${OBJS} ${TROFF} -ms -t ${PRINTER} ${OBJS} > perf perf.t: ${SRCS} ${TBL} ${PRINTER} ${SRCS} | ${EQN} ${PRINTER} > perf.t appendix.t: a1.t a2.t ${GRIND} -f a1.t | awk '/\.\(\)/{ cnt = 2 } \ { if (cnt) cnt -= 1; else print $$0; } ' > appendix.t ${GRIND} -f -lcsh a2.t | awk '/\.\(\)/{ cnt = 2 } \ { if (cnt) cnt -= 1; else print $$0; } ' >> appendix.t clean: rm -f perf ${OBJS} kernel memory. Events may be enabled/disabled selectively while the system is operating. Each trace record contains a time stamp (taken from the VAX hardware time of day clock register), an event identifier, and additdoc/misc/sysperf/a1.t 444 3 12 25324 3522324325 7740 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)a1.t 1.1 (Berkeley) 7/27/85 .\" .ds RH Appendix A \- Benchmark sources .nr H2 1 .sp 2 .de vS .nf .. .de vE .fi .. .bp .SH \s+2Appendix A \- Benchmark sources\s-2 .LP The programs shown here run under 4.2 with only routines from the standard libraries. When run under 4.1 they were augmented with a \fIgetpagesize\fP routine and a copy of the \fIrandom\fP function from the C library. The \fIvforks\fP and \fIvexecs\fP programs are constructed from the \fIforks\fP and \fIexecs\fP programs, respectively, by substituting calls to \fIfork\fP with calls to \fIvfork\fP. .SH syscall .LP .vS /* * System call overhead benchmark. */ main(argc, argv) char *argv[]; { register int ncalls; if (argc < 2) { printf("usage: %s #syscalls\n", argv[0]); exit(1); } ncalls = atoi(argv[1]); while (ncalls-- > 0) (void) getpid(); } .vE .SH csw .LP .vS /* * Context switching benchmark. * * Force system to context switch 2*nsigs * times by forking and exchanging signals. * To calculate system overhead for a context * switch, the signocsw program must be run * with nsigs. Overhead is then estimated by * t1 = time csw * t2 = time signocsw * overhead = t1 - 2 * t2; */ #include int sigsub(); int otherpid; int nsigs; main(argc, argv) char *argv[]; { int pid; if (argc < 2) { printf("usage: %s nsignals\n", argv[0]); exit(1); } nsigs = atoi(argv[1]); signal(SIGALRM, sigsub); otherpid = getpid(); pid = fork(); if (pid != 0) { otherpid = pid; kill(otherpid, SIGALRM); } for (;;) sigpause(0); } sigsub() { signal(SIGALRM, sigsub); kill(otherpid, SIGALRM); if (--nsigs <= 0) exit(0); } .vE .SH signocsw .LP .vS /* * Signal without context switch benchmark. */ #include int pid; int nsigs; int sigsub(); main(argc, argv) char *argv[]; { register int i; if (argc < 2) { printf("usage: %s nsignals\n", argv[0]); exit(1); } nsigs = atoi(argv[1]); signal(SIGALRM, sigsub); pid = getpid(); for (i = 0; i < nsigs; i++) kill(pid, SIGALRM); } sigsub() { signal(SIGALRM, sigsub); } .vE .SH pipeself .LP .vS /* * IPC benchmark, * write to self using pipes. */ main(argc, argv) char *argv[]; { char buf[512]; int fd[2], msgsize; register int i, iter; if (argc < 3) { printf("usage: %s iterations message-size\n", argv[0]); exit(1); } argc--, argv++; iter = atoi(*argv); argc--, argv++; msgsize = atoi(*argv); if (msgsize > sizeof (buf) || msgsize <= 0) { printf("%s: Bad message size.\n", *argv); exit(2); } if (pipe(fd) < 0) { perror("pipe"); exit(3); } for (i = 0; i < iter; i++) { write(fd[1], buf, msgsize); read(fd[0], buf, msgsize); } } .vE .SH pipediscard .LP .vS /* * IPC benchmarkl, * write and discard using pipes. */ main(argc, argv) char *argv[]; { char buf[512]; int fd[2], msgsize; register int i, iter; if (argc < 3) { printf("usage: %s iterations message-size\n", argv[0]); exit(1); } argc--, argv++; iter = atoi(*argv); argc--, argv++; msgsize = atoi(*argv); if (msgsize > sizeof (buf) || msgsize <= 0) { printf("%s: Bad message size.\n", *argv); exit(2); } if (pipe(fd) < 0) { perror("pipe"); exit(3); } if (fork() == 0) for (i = 0; i < iter; i++) read(fd[0], buf, msgsize); else for (i = 0; i < iter; i++) write(fd[1], buf, msgsize); } .vE .SH pipeback .LP .vS /* * IPC benchmark, * read and reply using pipes. * * Process forks and exchanges messages * over a pipe in a request-response fashion. */ main(argc, argv) char *argv[]; { char buf[512]; int fd[2], fd2[2], msgsize; register int i, iter; if (argc < 3) { printf("usage: %s iterations message-size\n", argv[0]); exit(1); } argc--, argv++; iter = atoi(*argv); argc--, argv++; msgsize = atoi(*argv); if (msgsize > sizeof (buf) || msgsize <= 0) { printf("%s: Bad message size.\n", *argv); exit(2); } if (pipe(fd) < 0) { perror("pipe"); exit(3); } if (pipe(fd2) < 0) { perror("pipe"); exit(3); } if (fork() == 0) for (i = 0; i < iter; i++) { read(fd[0], buf, msgsize); write(fd2[1], buf, msgsize); } else for (i = 0; i < iter; i++) { write(fd[1], buf, msgsize); read(fd2[0], buf, msgsize); } } .vE .SH forks .LP .vS /* * Benchmark program to calculate fork+wait * overhead (approximately). Process * forks and exits while parent waits. * The time to run this program is used * in calculating exec overhead. */ main(argc, argv) char *argv[]; { register int nforks, i; char *cp; int pid, child, status, brksize; if (argc < 2) { printf("usage: %s number-of-forks sbrk-size\n", argv[0]); exit(1); } nforks = atoi(argv[1]); if (nforks < 0) { printf("%s: bad number of forks\n", argv[1]); exit(2); } brksize = atoi(argv[2]); if (brksize < 0) { printf("%s: bad size to sbrk\n", argv[2]); exit(3); } cp = (char *)sbrk(brksize); if ((int)cp == -1) { perror("sbrk"); exit(4); } for (i = 0; i < brksize; i += 1024) cp[i] = i; while (nforks-- > 0) { child = fork(); if (child == -1) { perror("fork"); exit(-1); } if (child == 0) _exit(-1); while ((pid = wait(&status)) != -1 && pid != child) ; } exit(0); } .vE .SH execs .LP .vS /* * Benchmark program to calculate exec * overhead (approximately). Process * forks and execs "null" test program. * The time to run the fork program should * then be deducted from this one to * estimate the overhead for the exec. */ main(argc, argv) char *argv[]; { register int nexecs, i; char *cp, *sbrk(); int pid, child, status, brksize; if (argc < 3) { printf("usage: %s number-of-execs sbrk-size job-name\n", argv[0]); exit(1); } nexecs = atoi(argv[1]); if (nexecs < 0) { printf("%s: bad number of execs\n", argv[1]); exit(2); } brksize = atoi(argv[2]); if (brksize < 0) { printf("%s: bad size to sbrk\n", argv[2]); exit(3); } cp = sbrk(brksize); if ((int)cp == -1) { perror("sbrk"); exit(4); } for (i = 0; i < brksize; i += 1024) cp[i] = i; while (nexecs-- > 0) { child = fork(); if (child == -1) { perror("fork"); exit(-1); } if (child == 0) { execv(argv[3], argv); perror("execv"); _exit(-1); } while ((pid = wait(&status)) != -1 && pid != child) ; } exit(0); } .vE .SH nulljob .LP .vS /* * Benchmark "null job" program. */ main(argc, argv) char *argv[]; { exit(0); } .vE .SH bigjob .LP .vS /* * Benchmark "null big job" program. */ /* 250 here is intended to approximate vi's text+data size */ char space[1024 * 250] = "force into data segment"; main(argc, argv) char *argv[]; { exit(0); } .vE .bp .SH seqpage .LP .vS /* * Sequential page access benchmark. */ #include char *valloc(); main(argc, argv) char *argv[]; { register i, niter; register char *pf, *lastpage; int npages = 4096, pagesize, vflag = 0; char *pages, *name; name = argv[0]; argc--, argv++; again: if (argc < 1) { usage: printf("usage: %s [ -v ] [ -p #pages ] niter\n", name); exit(1); } if (strcmp(*argv, "-p") == 0) { argc--, argv++; if (argc < 1) goto usage; npages = atoi(*argv); if (npages <= 0) { printf("%s: Bad page count.\n", *argv); exit(2); } argc--, argv++; goto again; } if (strcmp(*argv, "-v") == 0) { argc--, argv++; vflag++; goto again; } niter = atoi(*argv); pagesize = getpagesize(); pages = valloc(npages * pagesize); if (pages == (char *)0) { printf("Can't allocate %d pages (%2.1f megabytes).\n", npages, (npages * pagesize) / (1024. * 1024.)); exit(3); } lastpage = pages + (npages * pagesize); if (vflag) vadvise(VA_SEQL); for (i = 0; i < niter; i++) for (pf = pages; pf < lastpage; pf += pagesize) *pf = 1; } .vE .SH randpage .LP .vS /* * Random page access benchmark. */ #include char *valloc(); int rand(); main(argc, argv) char *argv[]; { register int npages = 4096, pagesize, pn, i, niter; int vflag = 0, debug = 0; char *pages, *name; name = argv[0]; argc--, argv++; again: if (argc < 1) { usage: printf("usage: %s [ -d ] [ -v ] [ -p #pages ] niter\n", name); exit(1); } if (strcmp(*argv, "-p") == 0) { argc--, argv++; if (argc < 1) goto usage; npages = atoi(*argv); if (npages <= 0) { printf("%s: Bad page count.\n", *argv); exit(2); } argc--, argv++; goto again; } if (strcmp(*argv, "-v") == 0) { argc--, argv++; vflag++; goto again; } if (strcmp(*argv, "-d") == 0) { argc--, argv++; debug++; goto again; } niter = atoi(*argv); pagesize = getpagesize(); pages = valloc(npages * pagesize); if (pages == (char *)0) { printf("Can't allocate %d pages (%2.1f megabytes).\n", npages, (npages * pagesize) / (1024. * 1024.)); exit(3); } if (vflag) vadvise(VA_ANOM); for (i = 0; i < niter; i++) { pn = random() % npages; if (debug) printf("touch page %d\n", pn); pages[pagesize * pn] = 1; } } .vE .SH gausspage .LP .vS /* * Random page access with * a gaussian distribution. * * Allocate a large (zero fill on demand) address * space and fault the pages in a random gaussian * order. */ float sqrt(), log(), rnd(), cos(), gauss(); char *valloc(); int rand(); main(argc, argv) char *argv[]; { register int pn, i, niter, delta; register char *pages; float sd = 10.0; int npages = 4096, pagesize, debug = 0; char *name; name = argv[0]; argc--, argv++; again: if (argc < 1) { usage: printf( "usage: %s [ -d ] [ -p #pages ] [ -s standard-deviation ] iterations\n", name); exit(1); } if (strcmp(*argv, "-s") == 0) { argc--, argv++; if (argc < 1) goto usage; sscanf(*argv, "%f", &sd); if (sd <= 0) { printf("%s: Bad standard deviation.\n", *argv); exit(2); } argc--, argv++; goto again; } if (strcmp(*argv, "-p") == 0) { argc--, argv++; if (argc < 1) goto usage; npages = atoi(*argv); if (npages <= 0) { printf("%s: Bad page count.\n", *argv); exit(2); } argc--, argv++; goto again; } if (strcmp(*argv, "-d") == 0) { argc--, argv++; debug++; goto again; } niter = atoi(*argv); pagesize = getpagesize(); pages = valloc(npages*pagesize); if (pages == (char *)0) { printf("Can't allocate %d pages (%2.1f megabytes).\n", npages, (npages*pagesize) / (1024. * 1024.)); exit(3); } pn = 0; for (i = 0; i < niter; i++) { delta = gauss(sd, 0.0); while (pn + delta < 0 || pn + delta > npages) delta = gauss(sd, 0.0); pn += delta; if (debug) printf("touch page %d\n", pn); else pages[pn * pagesize] = 1; } } float gauss(sd, mean) float sd, mean; { register float qa, qb; qa = sqrt(log(rnd()) * -2.0); qb = 3.14159 * rnd(); return (qa * cos(qb) * sd + mean); } float rnd() { static int seed = 1; static int biggest = 0x7fffffff; return ((float)rand(seed) / (float)biggest); } .vE The inordinate expense of sending single-byte packets through the network led us to impose a buffering scheme on the standard error stream. Within a single call to \fIfprintf\fP, all output is buffered temporarily. Before the call returns, all output is flushed and the stream is again marked unbuffdoc/misc/sysperf/a2.t 444 3 12 5701 3522324326 7717 .\" Copyright (c) 1985 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)a2.t 1.1 (Berkeley) 7/27/85 .\" .SH run (shell script) .LP .vS #! /bin/csh -fx # Script to run benchmark programs. # date make clean; time make time syscall 100000 time seqpage -p 7500 10 time seqpage -v -p 7500 10 time randpage -p 7500 30000 time randpage -v -p 7500 30000 time gausspage -p 7500 -s 1 30000 time gausspage -p 7500 -s 10 30000 time gausspage -p 7500 -s 30 30000 time gausspage -p 7500 -s 40 30000 time gausspage -p 7500 -s 50 30000 time gausspage -p 7500 -s 60 30000 time gausspage -p 7500 -s 80 30000 time gausspage -p 7500 -s 10000 30000 time csw 10000 time signocsw 10000 time pipeself 10000 512 time pipeself 10000 4 time udgself 10000 512 time udgself 10000 4 time pipediscard 10000 512 time pipediscard 10000 4 time udgdiscard 10000 512 time udgdiscard 10000 4 time pipeback 10000 512 time pipeback 10000 4 time udgback 10000 512 time udgback 10000 4 size forks time forks 1000 0 time forks 1000 1024 time forks 1000 102400 size vforks time vforks 1000 0 time vforks 1000 1024 time vforks 1000 102400 countenv size nulljob time execs 1000 0 nulljob time execs 1000 1024 nulljob time execs 1000 102400 nulljob time vexecs 1000 0 nulljob time vexecs 1000 1024 nulljob time vexecs 1000 102400 nulljob size bigjob time execs 1000 0 bigjob time execs 1000 1024 bigjob time execs 1000 102400 bigjob time vexecs 1000 0 bigjob time vexecs 1000 1024 bigjob time vexecs 1000 102400 bigjob # fill environment with ~1024 bytes setenv a 012345678901234567890123456789012345678901234567890123456780123456789 setenv b 012345678901234567890123456789012345678901234567890123456780123456789 setenv c 012345678901234567890123456789012345678901234567890123456780123456789 setenv d 012345678901234567890123456789012345678901234567890123456780123456789 setenv e 012345678901234567890123456789012345678901234567890123456780123456789 setenv f 012345678901234567890123456789012345678901234567890123456780123456789 setenv g 012345678901234567890123456789012345678901234567890123456780123456789 setenv h 012345678901234567890123456789012345678901234567890123456780123456789 setenv i 012345678901234567890123456789012345678901234567890123456780123456789 setenv j 012345678901234567890123456789012345678901234567890123456780123456789 setenv k 012345678901234567890123456789012345678901234567890123456780123456789 setenv l 012345678901234567890123456789012345678901234567890123456780123456789 setenv m 012345678901234567890123456789012345678901234567890123456780123456789 setenv n 012345678901234567890123456789012345678901234567890123456780123456789 setenv o 012345678901234567890123456789012345678901234567890123456780123456789 countenv time execs 1000 0 nulljob time execs 1000 1024 nulljob time execs 1000 102400 nulljob time execs 1000 0 bigjob time execs 1000 1024 bigjob time execs 1000 102400 bigjob .vE .bp randpage -v -p 7500 30000 time gausspage -p 7500 -s 1 30000 timdoc/misc/regen 444 3 12 36166 3650315114 6606 .TL REGENERATING SYSTEM SOFTWARE .AU For UNIX/32V Thomas B. London .AU John F. Reiser .HO .SH Introduction .PP This document discusses how to assemble or compile various parts of the .UX \s-2/32V\s0 system software. This may be necessary because a command or library is accidentally deleted or otherwise destroyed; also, it may be desirable to install a modified version of some command or library routine. A few commands depend to some degree on the current configuration of the system; thus in any new system modifications to some commands are advisable. Most of the likely modifications relate to the standard disk devices contained in the system. For example, the df(1) (`disk free') command has built into it the names of the standardly present disk storage drives (e.g. `/dev/rf0', `/dev/rp0'). Df(1) takes an argument to indicate which disk to examine, but it is convenient if its default argument is adjusted to reflect the ordinarily present devices. The companion document `Setting up UNIX' discusses which commands are likely to require changes. .SH Where Commands and Subroutines Live .PP The source files for commands and subroutines reside in several subdirectories of the directory /usr/src. These subdirectories, and a general description of their contents, are .IP cmd 12 Source files for commands. .IP libc/stdio 12 Source files making up the `standard i/o package'. .IP libc/sys 12 Source files for the C system call interfaces. .IP libc/gen 12 Source files for most of the remaining routines described in section 3 of the manual. .IP libc/crt 12 Source files making up the C runtime support package, as in call save-return and long arithmetic. .IP libc/csu 12 Source for the C startup routines. .IP games 12 Source for (some of) the games. No great care has been taken to try to make it obvious how to compile these; treat it as a game. .IP libF77 12 Source for the Fortran 77 runtime library, exclusive of IO. .IP libI77 12 Source for the Fortran 77 IO runtime routines. .IP libdbm 12 Source for the `data-base manager' package .I dbm (3). .IP libm 12 Source for the mathematical library. .IP libnm 12 Source for the assembler language mathematical library. .IP libplot 12 Source for plotting routines. .SH Commands .PP The regeneration of most commands is straightforward. The `cmd' directory will contain either a source file for the command or a subdirectory containing the set of files that make up the command. If it is a single file the command .DS cd /usr/src/cmd/Admin Mk cmd_name.c .DE suffices. (Cmd_name is the name of the command you are playing with.) The result of the Mk command will be an executable version, copied to /bin (or perhaps /etc or other places if appropriate). If you want the result placed somewhere else, the command .DS cd /usr/src/cmd/Admin DESTDIR=mydir Mk cmd_name.c .DE where mydir is a full pathname of some destination directory (e.g. /usr/tbl/newcmds), will compile the command and place the result in mydir/bin (or perhaps mydir/etc or mydir/usr/bin, etc.). .PP If the source files are in a subdirectory there will be a `makefile' (see make(1)) to control the regeneration. After changing to the proper directory (cd(1)) you type one of the following: .IP "make" 15 The program is compiled and loaded; the executable is left in the current directory. .IP "make install" 15 The program is compiled and loaded, and the executable is installed. .IP "make clean" 15 Everything is cleanup; for example .o files are deleted. .PP Some of the makefiles have other options. Print (cat(1)) the ones you are interested in to find out. .PP Alternately, to compiler and install a subdirectory command, one may perform the following .DS cd /usr/src/cmd/Admin Mk cmd_name .DE which combines all three of the above make options. .SH The Assembler .PP The assembler consists of one executable file: /bin/as. The source files for /bin/as are named `/usr/src/cmd/as/as?.c'. Considerable care should be exercised in replacing the assembler. Remember that if the assembler is lost, the only recourse is to replace it from some backup storage; a broken assembler cannot assemble itself. .SH The C Compiler .PP The C compiler consists of six routines: `/bin/cc', which calls the phases of the compiler proper, the compiler control line expander `/lib/cpp', the assembler (`as'), and the loader (`ld'). The C compiler proper is `/lib/ccom'; `/lib/c2' is the optional assembler-language optimizer. The loss of the C compiler is as serious as that of the assembler. .PP The source for /bin/cc resides in `/usr/src/cmd/cc.c'. Its loss alone (or that of c2) is not fatal. If needed, prog.c can be compiled by .DS /lib/cpp prog.c >temp0 /lib/ccom temp0 temp1 as temp3 ld /lib/crt0.o a.out \-lc .DE .PP The source for the compiler proper is in the directories /usr/src/cmd/mip and /usr/src/cmd/pcc. The /usr/src/cmd/mip directory contains files which are (relatively) machine independent; the machine dependent files reside in the directory /usr/src/cmd/pcc. The compiler is `made' by the makefile (see make(1)) in the directory /usr/src/cmd/pcc. To make a new /lib/ccom use .DS cd /usr/src/cmd/pcc make .DE which produces the compiler (named /usr/src/cmd/pcc/comp). Before installing the new compiler, it is prudent to save the old one someplace. .PP In a similar manner, the optimizer phase of the C compiler (/lib/c2) is made up from the files c20.c, c21.c, and c22.c together with c2.h. Its loss is not critical since it is completely optional. .SH UNIX .PP The source and object programs for UNIX are kept in two subdirectories of .I /usr/src/sys. In the subdirectory .I h there are several files ending in `.h'; these are header files which are picked up (via `#include ...') as required by each system module. The subdirectory .I sys is the rest of the system. .PP The file .I conf.c contains the tables which control device configuration of the system. .I Locore.s specifies the contents of the interrupt vectors, and all the machine-language code in the system. .PP To recreate the system, use .DS cd /usr/src/sys/sys make unix .DE See `Setting Up UNIX' for other information about configuration and such. .PP When the make is done, the new system is present in the current directory as `unix'. It should be tested before destroying the currently running `/unix', this is best done by doing something like .DS mv /unix /ounix mv unix /unix .DE If the new system doesn't work, you can still boot `ounix' and come up (see boot(8)). When you have satisfied yourself that the new system works, remove /ounix. .PP To install a new device driver, copy its source to /usr/src/sys/sys, and edit the `makefile' and the file `loadall' if necessary (see make(1)). .PP Next, the I/O interrupt fielding mechanism must be modified to properly handle the new device. If the device is connected via the UNIBUS, then one only need add the device's interrupt handling routine address(s) in the proper position in the table `UNIvec' in the file /usr/src/sys/sys/univec.c. `UNIvec' should be modified by placing a pointer to a callout routine in the proper vector. Use some other device (like the DZ11) as a guide. Notice that the entries in `UNIvec' must be in order. Bits 27-31 of the vector address will be available as the first argument of the interrupt routine. This stratagem is used when several similar devices share the same interrupt routine (as in dz11's). .PP If the device is connected via the MASSBUS, then /usr/src/sys/sys/univec.c is not to be modifed. Instead, code must be added to /usr/src/sys/sys/locore.s to actually transfer to the interrupt routine. Use the RP06 interrupt routine `Xmba0int' in locore.s as a guide. As an aside, note that external names in C programs have an underscore (`_') prepended to them. .PP The second step which must be performed to add a new device is to add it to the configuration table /usr/src/sys/sys/conf.c. This file contains two subtables, `bdevsw' and `cdevsw', one for block-type devices, and one for character-type devices. Block devices include disks, and magtape. All other devices are character devices. A line in each of these tables gives all the information the system needs to know about the device handler; the ordinal position of the line in the table implies its major device number, starting at 0. .PP There are four subentries per line in the block device table, which give its open routine, close routine, strategy routine, and device table. The open and close routines may be nonexistent, in which case the name `nulldev' is given; this routine merely returns. The strategy routine is called to do any I/O, and the device table contains status information for the device. .PP For character devices, each line in the table specifies a routine for open, close, read, and write, and one which sets and returns device-specific status (used, for example, for stty and gtty on typewriters). If there is no open or close routine, `nulldev' may be given; if there is no read, write, or status routine, `nodev' may be given. Nodev sets an error flag and returns. .PP The final step which must be taken to install a device is to make a special file for it. This is done by mknod(1), to which you must specify the device class (block or character), major device number (relative line in the configuration table) and minor device number (which is made available to the driver at appropriate times). .PP The documents `Setting up Unix' and `The Unix IO system' may aid in comprehending these steps. .SH The Library libc.a .PP The library /lib/libc.a is where most of the subroutines described in sections 2 and 3 of the manual are kept. This library can be remade using the following commands: .DS cd /usr/src/libc make libc.a make install make clean .DE If single routines need to be recompiled and replaced, use .DS cc \-c \-O x.c ar vr /lib/libc.a x.o rm x.o .DE The above can also be used to put new items into the library. See ar(1), lorder(1), and tsort(1). .PP The routines in /usr/src/cmd/libc/csu (C start up) are not in libc.a. These are separately assembled and put into /lib. The commands to do this are .DS cd /usr/src/libc for i in csu/*.s do j=`basename $i .s` as -o $j.o $i mv $j.o /lib done .DE or, if you need only redo one routine, .DS cd /usr/src/libc/csu as -o x.o x.s mv x.o /lib .DE where x is the routine you want. .SH Other Libraries .PP Likewise, the directories containing the source for the other libraries have makefiles. .SH System Tuning .PP There are several tunable parameters in the system. These set the size of various tables and limits. They are found in the file /usr/sys/h/param.h as manifests (`#define's). Their values are rather generous in the system as distributed. Our typical maximum number of users is about 20, but there are many daemon processes. .PP When any parameter is changed, it is prudent to recompile the entire system, as discussed above. A brief discussion of each follows: .IP NBUF 12 This sets the size of the disk buffer cache. Each buffer is 512 bytes. This number should be around 25 plus NMOUNT, or as big as can be if the above number of buffers cause the system to not fit in memory. .IP NFILE 12 This sets the maximum number of open files. An entry is made in this table every time a file is `opened' (see open(2), creat(2)). Processes share these table entries across forks (fork(2)). This number should be about the same size as NINODE below. (It can be a bit smaller.) .IP NMOUNT 12 This indicates the maximum number of mounted file systems. Make it big enough that you don't run out at inconvenient times. .IP MAXMEM 12 This specifies the number of page-frames of real memory at this installation. It is currently set at 1024 (512K bytes), and should be increased if you have more (otherwise the additional memory will not be utilized). .IP MAXUMEM 12 This sets an administrative limit on the amount of memory a process may have. It is currently set at MAXMEM-128 (i.e. 896). It will be increased automatically by increasing MAXMEM. Note, however, that the current upper bound on MAXUMEM is 128*12 (i.e. 1536) which limits user process space to 768K bytes. .IP PHYSPAGES 12 This indicates the number of pages which can be represented on the memory freelist. Its current value is 2048, and is sufficient for systems of up to one megabyte. If this value is too small (i.e. more memory than freelist) then system will only use PHYSPAGES page frames. .IP MAXUPRC 12 This sets the maximum number of processes that any one user can be running at any one time. This should be set just large enough that people can get work done but not so large that a user can hog all the processes available (usually by accident!). .IP NPROC 12 This sets the maximum number of processes that can be active. It depends on the demand pattern of the typical user; we seem to need about 8 times the number of terminals. .DE .IP NINODE 12 This sets the size of the inode table. There is one entry in the inode table for every open device, current working directory, sticky text segment, open file, and mounted device. Note that if two users have a file open there is still only one entry in the inode table. A reasonable rule of thumb for the size of this table is .DS NPROC + NMOUNT + (number of terminals) .DE .IP SSIZE 12 The initial size of a process stack. This may be made bigger if commonly run processes have large data areas on the stack. .IP SINCR 12 The size of the stack growth increment. .IP NOFILE 12 This sets the maximum number of files that any one process can have open. 20 is plenty. .IP CANBSIZ 12 This is the size of the typewriter canonicalization buffer. It is in this buffer that erase and kill processing is done. Thus this is the maximum size of an input typewriter line. 256 is usually plenty. .IP SMAPSIZ 12 The number of fragments that secondary (swap) memory can be broken into. This should be big enough that it never runs out. The theoretical maximum is twice the number of processes, but this is a vast overestimate in practice. 70 seems enough. .IP NCALL 12 This is the size of the callout table. Callouts are entered in this table when some sort of internal system timing must be done, as in carriage return delays for terminals. The number must be big enough to handle all such requests. .IP NTEXT 12 The maximum number of simultaneously executing pure programs. This should be big enough so as to not run out of space under heavy load. A reasonable rule of thumb is about .DS (number of terminals) + (number of sticky programs) .DE .IP NCLIST 12 The number of clist segments. A clist segment is 12 characters. NCLIST should be big enough so that the list doesn't become exhausted when the machine is busy. The characters that have arrived from a terminal and are waiting to be given to a process live here. Thus enough space should be left so that every terminal can have at least one average line pending (about 30 or 40 characters). .IP TIMEZONE 12 The number of minutes westward from Greenwich. See `Setting Up UNIX'. .IP DSTFLAG 12 See `Setting Up UNIX' section on time conversion. .IP MSGBUFS 12 The maximum number of characters of system error messages saved. This is used as a circular buffer. .IP NCARGS 12 The maximum number of characters in an exec(2) arglist. This number controls how many arguments can be passed into a process. 5120 is practically infinite. .IP HZ 12 Set to the desired frequency of the system clock (e.g., 50 for a 50 Hz. clock). The current value is 60 (i.e. 60 Hz. clock). re destroying the currently running `/unix', this is best done by doing something like .DS mv /unix /ounix mv unix /unix .DE If the new system doesn't work, you can still boot `ounix' and come up (see boot(8)). When you have satisfied yourself that the new system works, remove /ounix. .PP To install a new device driver, copy its source to /usr/src/sys/sys, and edit the `makefile' and the fildoc/misc/uchanges.4.1 444 3 12 76642 3053141707 7611 .de IR \fI\\$1\fR\\$2\\fR\\fR .. .TL Bug fixes and changes in 4.1bsd .sp May 10, 1981 .AU Bill Joy .AI Computer Systems Research Group .AB This document describes briefly the changes in the Berkeley system for the VAX between the fourth distribution of November 1980 (known originally as 4BSD, and hereinafter referred to as 4.0bsd) and this, its revision of April 1981. It attempts to be summarize, without going into great detail, the changes which have been made. .AE .SH .ce .LG Notable improvements .SM .sp .IP \s+1\(bu\s0 Performance of the system under heavy paging load has been substantially improved by correcting a problem with placement of pre-paged pages. The system now pre-pages more data, greatly benefitting processes which have locality in their behavior. System degradation due to pre-paging has been reduced (even though more pre-paging is done), by placing the pre-paged pages as the bottom of the free-list, rather than in the systems global clock replacement loop. .IP \s+1\(bu\s0 Processes which serially reference large amounts of virtual memory may now declare themselves to be sequential (see .IR vadvise (2)), causing the paging algorithm to be adjusted to be more appropriate for such behavior.* .FS * Future versions of the system will detect strongly sequential behavior and adapt themselves accordingly, so this call will no longer be necessary. .FE Processes which are known to need only a small amount of memory, but which tend to accumulate large amounts of memory due to strange page referencing patterns may declare a soft limit on the amount of memory to be used, see .IR vlimit (2) or do ``limit memoryuse \fIn\fR\|k'' in .IR csh (1). If the system needs memory, and there are processes which are over their declared limits, the system tends to take pages from these processes first. By saying that these limits are soft, we mean that on a system where physical memory is not scarce, processes with limits can still acquire as much physical memory as they require. .IP \s+1\(bu\s0 The system is now compiled from a description of the local machine which includes information about available devices and the maximum number of users to be supported on the system. It is no longer necessary to adjust an armful of constants to re-size the system; normal time-sharing systems are parameterized from a single ``maxusers'' constant. The system also adjusts the parameters of the paging subsystem based on available memory; it is no longer necessary to adjust these for machines with very small or very large amounts of available memory. .IP \s+1\(bu\s0 The system now handles multiple uba's and mba's and mixing of devices on mba's. A number of new devices are supported: RK07's and TS-11's which come in the standard 11/750 packages, UNIBUS TM-11 tape emulators (e.g. the EMULEX TC-11 with a KENNEDY 9300 transport). Line printer and C/A/T phototypesetter drivers are included in the system, and modem control for the DH-11 using the DM-11 has been integrated and tested. The new RM-80 Winchester drive from DEC is supported. Notably unsupported are the 11/750 console casettes. A single distribution system boots on all supported hardware configurations by determining the available devices and selecting a root device at boot time. .IP \s+1\(bu\s0 The \fItar\fR program has been changed to allow update of magnetic tape archives, adding to the end of the existing tape archive. This uses tape control facilities newly added in this version of the system, but the created tapes are readable on all versions of UNIX. Since blocked tapes are inherently more efficient and fully functional, \fItar\fR now creates blocked tapes by default. .IP \s+1\(bu\s0 Shell scripts are now potentially executable. A file which begins with the characters ``#!'' followed by some amount of white space and the name of an interpreter is executed directly by the system. The standard version 7 shell, /bin/sh, has been changed to recognize a # as a comment character. It is desirable that users change existing shell script so that the first line of each shell script begins with ``#!'' and the name of the proper shell to execute. .IP \s+1\(bu\s0 Two new documents have been added to Volume 2c: a manual for the crt screen package \fB\-lcurses\fR, and a document describing the \fBrogue\fR game. .br .ne 10 .LP .LP .ce .LG .B "Major bug fixes" .SM .sp .IP \s+1\(bu\s0 A number of bugs have been fixed in the FORTRAN compiler F77; these caused some block data routiens and main programs to fail to compile. Other bugs related to use of the symbolic debugger with FORTRAN have been fixed (see \fBf77\fR in ``Section 1'' below.) .IP \s+1\(bu\s0 A bug which caused the C compiler to complain ``expression too complicated'' when an expression contained an embedded structure assignment has been fixed. .IP \s+1\(bu\s0 A kernel bug which caused approximately 1/8'th of data collected during program profiling to be lost has been corrected. .IP \s+1\(bu\s0 A very confusing bug in the \fItset\fR manual page has been corrected: in the example where it uses the \fIsetenv\fR command it should rather use the \fIset\fR command: ``set noglob; eval ...''. The alternate form does not work on a number of terminals. .IP \s+1\(bu\s0 4 Due to a inconsistency between the 11/780 and the 11/750 in the interpretation of the \fBmovtuc\fR instruction, all binaries from the third distribution tape (of January 1980) and the fourth distribution tape (of November 1980) will NOT run correctly on the 11/750. The 4.1bsd distribution tape includes a new version of the standard i/o library which avoids use of this troublesome instruction, and it is recommended that all programs be recompiled from scratch to use this new library to eliminate non-portable UNIX binaries as soon as possible. .IP The problem is that when there appears to be a chance that the operands to \fBmovtuc\fR will overlap, but they in fact do not (because the pattern string to printf is terminated by a null), the 11/750 does not execute the \fBmovtuc\fR as though a shorter string length were specified which did not imply potential overlap. Thus this instruction which is in the inner loop of \fIprintf\fR on the 4bsd tape, and which works fine on an 11/780, malfunctions on an 11/750 causing strange and awful behavior. .IP \s+1\(bu\s0 4 (The following change is applicable only to systems bootstrapped from the 4.1bsd release tape; systems upgraded from 4.0bsd may or may not include this change.) The standard i/o library has been made more compatible with the PDP-11 version 7 system and now supports concurrent read and write access to files (see .IR fopen (3s) for details). This caused a change in an internal data structure which is visible to compiled programs through the macros in , and thus necessitates discarding of old \fB.o\fR files and recompilation. Note that this standard i/o library now replaces the old \fB\-lNS\fR library which was in 3bsd but was deleted from 4bsd pending the inclusion of read-write capability in stdio. .SH .LG .ce Section 1 .SM .sp .PP .de BP .IP \fB\\$1\\fR 11n .. .BP adb A bug which prevented programs loaded with the \fB\-N\fR loader option from having breakpoints set on them has been fixed. A bug which prevented backtraces of programs which are stopped at interrupt level (after a signal) has been fixed by teaching adb how to step across the interrupt stack frame. The system now makes available and the $? command in adb interprets more precise codes when SIGILL and SIGFPE exceptions occur. Thus if you divide by zero, you can find out that this was what caused a floating point exception. A bug which prevented format repetition counts (e.g. the 10 in ``0/10X'') from working has been fixed. A bug related to adb has been fixed that prevented any sensible traceback after a FORTRAN-77 runtime error which trapped an exception or fault (e.g. a floating point divide by 0). A bug which caused the maps to be set improperly when debugging the kernel on a crash dump has been fixed. .IP New commands have been added to adb to facilitate writing adb procedures stored in files: see the descriptions of $<<, the register <9, and the # operator in the revised adb manual page. .BP awk Has moved from /usr/bin to /bin because it is needed during bootstrap procedures. .BP bc Now takes the new C syntax operators: ``=op'' as well as (for history's sake) the old syntax ``op=''. .BP calendar Several bugs have been fixed in the internals of the calendar program. In addition it is now possible to have a calendar entry consisting of merely a date (with no month specified) and have this entry occur each month. .BP cc A bug has been fixed in the C optimizer which caused strange things to happen when long variable names were used. The size of the internal ``dimension'' table has been increased to allow more structure fields to be declared. A problem which caused the compiler to print ``expression causes compiler loop'' when structure assignment was embedded in an expression context has been fixed. A bug in the code generator tables which affected certain FORTRAN constructs has also been fixed. .BP checknr Es versteht \fB\-mm\fR. .BP csh A cosmetic bug which prevented the distributed source from compiling has been fixed. A bug which caused argument lists including the strings ``{'' or ``{}'' to sometimes fail saying ``No match'' has been fixed. A bug which caused a strange state to result when a command of the form ``(a; b; c)'' was stopped from the keyboard has been fixed. The shell has been fixed so that it prefers to make stopped jobs the new current jobs after the current job has terminated. The construct ``${TERM}'' no longer yields an extra ``}'' when the variable expanded is from the environment. .IP Previously undocumented was the shell variable \fIhistchars\fR; it can be set to two characters, and the first is then a replacement for the normal \fB!\fR history character and the second for the \fB^\fR quick history substitution character. Thus after ``set histchars=,;'' the command ``,,'' repeats the previous command, as ``!!'' would normally have done. .BP ctags Now takes an option .B \-v to produce output suitable for input to .IR vgrind (1). .BP cu Now honors uucp's locking protocol for the dialout lines. Several bugs relating to internal buffer overruns have been fixed. An option \fB\-b\fR has been added which causes the BREAK key to generate breaks (by turning input null characters into breaks sent over the line). .BP delivermail .br Some bugs which caused strange loops when aliases were self-referential have been fixed. .BP diff Some bugs related to directory diffs when the .B \-h option was used have been fixed; previously the .B \-h option was non-functional. .BP dump An obnoxious bug in the dump program where it would wrongly suggest that further dump tapes were needed after a multi-tape dump had already completed has been fixed. The dump program no longer attempts to time tape rewinds itself, but uses a mechanism which does not depend on the speed of the tape drive to determine when a rewind is complete. .BP error Has been taught about the error message formats of the PDP-11 C compiler. .BP expand A internal error check which was incorrect has been fixed. .BP f77 Has had a bug fixed which caused some block data subroutines and main programs to not compile (the sympton was a diagnostic of the form ``Undefined: LWM%d''. A number of minor bugs which combined to make sdb function poorly with f77 have been fixed. The result of these bugs were that if file names were longer than 6 characters sdb could not read the symbol table of the resulting FORTRAN binary. .IP An i/o library bug which caused numbers of the form ``-1.2'' to convert improperly in list-directed input (reading as ``-0.8'', taking the mantissa as positive) has been fixed. .BP ld If you are using the \fB\-r\fR flag and there remain undefined symbols you no longer get a spurious error return. Now respects modes of existing files and your file-creation mask more. .BP lisp The functions +, /, -, *, 1+, 1- now expect fixnum arguments, for interpreted functons as well as compiled ones. The source for the VMS and UNIX versions of lisp have been combined and synchronized. The construction of very large integers has been altered to use regular dotted pairs in a non-standard way, so that fewer garbage collections will occur. (It is no longer safe to use ``car'' and ``cdr'' to disect large integers). Mixed-mode arithmetic has been made faster. There is a new compiler option (liszt -r) which allows you to create .B small lisp application programs (with a mechanism other than ``dumplisp'', which tends to create very large binaries). When the result of such a compilation is executed directly, it execs /usr/ucb/lisp and then fast loads the file you asked to be executed. A new flag $ldprint has been added to control the printing of fasl/load messages. New functions (purecopy), (getdata), (putdata), and (removeaddress) have been added. A number of minor bugs have been fixed. .BP lpr Has been modified to work on both DECWRITER type devices at 1200 baud masquerading as printers and also on real line printers. The queueing algorithm has been made first-come-first-serve (replacing the old random job first algorithm), and a line printer driver is now available in the standard distributed system. .BP ls A bug has been fixed which caused essentially random numbers to be printed for the size of special files. The size now prints as 0. .BP make A spelling error has been fixed which had the variable EC initialized to f77 rather than FC=f77. .BP man A bug which caused it to core dump when reformatting a manual page whose source macros were inaccessible has been fixed. .BP mt Is a new command which provides easy access to operations such as forward and backward spacing of files and records on magnetic tape. .BP mv Has been changed to have a option ``\fB\-\fR'' which means that all the following arguments are file names. A bug has been fixed which caused strange behaviour when the \fB\-i\fR option was used on directories. A bug which prevented renaming of subdirectories to which you had no write access has been fixed. .BP oldcsh Which was non-functional due to a change in a internal library interface which it had taken advantage of has been fixed to work. .BP od New options \fBO\fR, \fBX\fR, and \fBD\fR print 32 bit integers in octal hex and decimal format; an option \fBw\fR has been added to cause 132 column output rather than the default 80 column oriented output. .BP pc/pi A number of bugs in the sdb symbol table produced have been fixed. Structured types may now exceed 65k bytes in size, but in that case may not be passed by value nor assigned by simple assignment. Structured types are properly returned from recursive functions. Minor bugs in passing function parameters have been fixed, and there still exist some more minor bugs here. Runtime tests can be now be enabled or disabled on a per routine basis. Runtime checks are now done properly on builtin functions. Warnings (or standards violations) are now produced for extensions to the language. Some inconsistencies in dealing with running out of memory have been fixed. .IP Some bugs are known: invoking a formal routine from inside a formal invocation of the same routine will mess up. In pc only: linking seperately compiled modules from other than the current directory only works if you give full path names (or the same relative paths) for the compilation and the linking. .IP Some changes are planned soon: for-loop variables and with pointers will be allocated to registers. The formal routine syntax is currently as in Jensen and Wirth, but will soon be changed to the the syntax of the proposed standards, in which parameters to formals must be given. It is planned that \fBpc\fR will soon do compile time constant folding. .BP pmerge Is a new program which can convert large Pascal programs back into a single file, eliminating the header files and separate source files normally used for separate compilation. .BP prof A bug which caused prof to loop when a file-static function was profiled has been fixed. A bug in the kernel which caused the results of prof to be inaccurate has also been fixed. .BP ps Has been changed to work with the new kernel and is no longer dependent on system sizing; thus it is no longer necessary to recompile ps when the system tables are made larger. A bug in the \fBs\fR option which caused the computed stack size to be a constant 512 bytes too large has been fixed. The ``STAT'' field now shows ``>'' in the second position for programs which are using more memory than their \fImemoryuse\fR limit (see .IR vlimit (2)). It also shows ``S'' in the fourth position for processes which have declared themselves to be strongly sequential (see .IR vadvise (2)). Under the \fBv\fR option, the SWRSS field has been replaced by a new field ``LIM'' which shows the limit on \fImemoryuse\fR if there is a limit, or \fIxx\fR if there is not. .BP px Is now written in C, is much more portable, and shares the runtime library used by the compiler. It is, unfortunately, somewhat slower now. .BP ranlib No longer considers it a fatal error that an archive member defines no symbols. .BP reset Has been changed to invoke the command .RS .IP .B "tset \-Q \-I" .RE .IP so that all terminal modes will be reset. .BP rm Now has a .B \- option to indicate that all the following parameters are to be treated as file names. It can be used when file names begin with ``\fB\-''. .BP rmdir Now works correctly when arguments end in one or more ``/'' characters. .BP sdb Has been fixed to be able to deal with ``interrupt-stack-frames'', so that it is possible to set breakpoints on and get backtraces from routines called while a signal is being processed. Now handles binaries which are mode 0407 (resulting from ``ld \-N'') properly. .BP sh Has been changed so that ``#'' begins a comment. Shell scripts to be executed by /bin/sh should begin ``#! /bin/sh'' on the first line. .BP tar Now defaults to blocked tape and can update blocked tapes (finally!). When reading tape tar defaults to the raw tape and figures out what is going on with blocksize so it need not be specified. Thus the only commands which should be needed are the simple ``tar t'', ``tar c'', ``tar u'' and ``tar x''. .BP uusend Now uses the \fB\-r\fR option of \fIuux\fR to prevent presenting extreme load to the connected system. .BP vmstat Has been changed so that the system's device names are printed for the disks rather than D0, D1, D2, D3. The old format output of the .B \-i option is no longer available. .IP The fields related to paging activity are now all given in pages (of 1024 bytes). In particular, the fields ``pi'' and ``po'' which previously showed the number of pagein and pageout events now show pages, and ``sr'' which previously gave the clock scan rate in revolutions-per-minute now gives the scan rate in pages scanned per second. To provide the extra space needed to present this information, the swap in/out information, which was only marginally interesting, is no longer printed. .BP w Has been modified so that it no longer needs to be recompiled when the kernel tables change in size. .BP wall Now checks that the message is not too long for its internal buffer, rather than just overrunning the buffer. It handles running out of processes by pausing, so it is possible to use it when there are more than 25 users logged in and you are not the super-user. It also gives the machine name you are on in the broadcast messages. .BP who ``Who am I'' now prints your machine and login name (the first word of its output) in a format suitable for use with uucp. .BP write Now checks that you do not have write permission disabled and doesn't let you write to someone if they can't write back. .SH .LG .ce Section 2. .SM .sp .BP intro Now correctly reflects that argument lists may be upto 10240 characters long. .BP exec Has been changed so that if a file being executed begins with the magic characters #!, the rest of the line is understood to be the name of an interpreter for the executed file. Previously (and in fact still) the shell did much of this job; it automatically executed itself on a text file with executable mode when the text file's name was typed as a command. Putting the facility into the system gives the following benefits. .RS .IP 1) It makes shell scripts more like real executable files, because they can be the subject of 'exec.' .IP 2) If you do a 'ps' while such a command is running, its real name appears instead of 'sh'. Likewise, accounting is done on the basis of the real name. .IP 3) Shell scripts can be set-user-ID. .IP 4) It is simpler to have alternate shells available; e.g. if you like the Berkeley \fIcsh\fR there is no question about which shell is to interpret a file. .IP 5) It will allow other interpreters to fit in more smoothly. .RE .IP To take advantage of this wonderful opportunity, put .DS #! /bin/sh .DE .IP at the left margin of the first line of your shell scripts. Blanks after ! are OK. Use a complete pathname (no search is done). At the moment the whole line is restricted to 32 characters. A single argument may be specified for the interpreter, thus: .DS #! /bin/csh \-f .DE .IP is very useful, avoiding reading \fI.cshrc\fR which is often not wanted. .BP kill Has been changed so that when broadcasting signals universally the signal being broadcast is not sent to the broadcaster. This is used by the .IR halt (8), .IR shutdown (8), and .IR reboot (8) commands. .BP reboot Has been changed to reflect the now more limited number of option flags available to the system call due to the nature of the console interface on the VAX 11/750. .BP sigsys Reflects the fact that the system now passes in to a signal handler an indication of what exception really happened when a SIGFPE or SIGILL is generated. The call interface at the point of a signal handler call is now specified. .PP .SH .LG .ce Section 3 .SM .sp .PP .BP curses A large number of bug fixes have been incorporated, and the documentation has been greatly improved. The library is now much more solid than that originally distributed. .BP fopen Reflects the new open options which allow simultaneous read-write to files; these extensions are being incorporated to bring compatibility with the standard version 7 PDP-11 UNIX and to replace the (now defunct) \fB\-lNS\fR. .BP printf A bug in the documentation which incorrectly stated that a %c format would not put out a null character has been fixed. .SH .LG .ce Section 4 .SM .sp .PP The system now supports a number of new devices and has capability for detecting the device's presence and interrupt vectors at boot time. The system also has capability to do device location at boot time so that a system description as supplied to .IR config (8) can take advantage of available hardware redundancy. .PP Each configurable device driver in this section now includes a SYNOPSIS giving sample lines to be included in a system configuration. Drivers also indicate the error messages which they produce and describe each error. .PP .BP ct A driver for a C/A/T phototypesetter interface. .BP dh Now includes handling of dm-11 modem control hardware. Optional flags to the configuration program can also be given to supply hardware carrier easily for lines where wiring is inadequate. .BP hp Includes rm80 support. .BP lp Drives standard line printers, and has been improved to cut the interrupt load by a factor of 20. .BP mt Describes the standard tape drive interface, which now includes .B ioctl operations for raw magtape allowing such standard operations as forward and backward spacing over files and records, writing of end-of-file marks, rewinds, rewinding and offlining, and sensing of tape status. These operations are used by the .IR mt (1) program which can be used to easily manipulate tape files, and by the .IR tar (1) program to allow updates to blocked tapes. .BP tm Supports the UNIBUS TM/11 emulating tape controllers (e.g. EMULEX TC-11 with a KENNEDY 9300 drive). .BP ts Supports the UNIBUS TS/11 tape drive and transport. .BP tty Now provides a LDECCTLQ option which causes ^S and ^Q to function as necessary for the VT100 to work properly. .BP up A driver for a EMULEX SC-11 or SC-21 UNIBUS disk controller with storage module (e.g. Ampex 9300) disk drives. .BP va A varian raster plotter. .SH .LG .ce Section 5 .SM .sp .ce No changes. .SH .LG .ce Section 6 .SM .sp .PP .BP chase Is a game where robots try to eat you. .BP hangman Is now screen oriented. .BP rain Drops keep falling on my head. .BP rogue Is a new and very popular screen-oriented game, see .IR rogue (6) or ``A Guide to the Dungeons of Doom.'' .BP worm Is a game where you see how long you can get the worm to grow. .BP worms Is an amusement where the worms chase each other around the screen. .SH .LG .ce Section 7 .SM .sp .ce No changes. .SH .LG .ce Section 8 .SM .NL .PP Major changes affecting system operations include: .IP * The system is configured from a single per-cpu specification file which includes all locally relevant information: desired devices, size of the maximum user load, timezone information, etc. The system determines at boot time the size of the file system buffer cache based on the amount of physical memory available and sizes the system data structures based on the specification of the maximum number of active users; it is no longer necessary to juggle an armful of constants to enlarge the system. The sizes of system tables are no longer compiled into programs such as .B ps and .B w. .IP * System error log information is saved across system crashes provided no power failure occurs, as the error log is kept in-core in the last 1024 bytes of memory. .\"Error messages to the console are in a new standard format, reminiscent .\"of Dave Presotto's speech pattern... they begin with a word, a laugh .\"encoded as `:' and go on wittily from there to speak the truth. Error messages to the console are in a standard format, of the form: .RS device: message .RE .IP Messages have error registers decoded as bits, so that they are readable, and no-longer refer to devices by their major/minor device numbers, rather using device names. Error messages about file system problems (device full, out of inodes, etc) are referred to with the mounted file system name, and a message is sent directly to a user if his/her process writes to a file system when it is full. All error diagnostics printed by drivers are documented in section 4 of the manual. .IP * DEC standard bad block forwarding is supported on all DEC disks except the RP06; the code which implements this can be easily moved into the drivers for the UNIBUS storage module disks; this is planned. .IP * Core dumps are saved after system crashes automatically as the system writes a core image to a portion of the swap area from which it is recovered after reboot. The system then transfers these core images to a specified UNIX directory, saving also the version of the system associated with the crash. The system also maintains an error log .B /usr/adm/shutdownlog which records all system crashes and reboots with the information about the causes. .sp .PP .BP analyze Now has an option .B \-u to print page numbers of the u. areas. A bug which prevented the distributed .B analyze from working has been fixed. .BP bad144 Is a new program which prints out the DEC-standard bad block information for a disk, or puts it back if it gets clobbered. The name of the program comes from the fact that the program deals with ``DEC standard 144'' format. .BP badsect Creates a file in a file system which contains a specified disk sector of that file system. This is a primitive way of dealing with bad sectors, but works on drivers which don't (yet) have bad block forwarding according to the standard. .BP getty No longer prints ``Virtual'' in front of the system identification, since there are no swap systems in sight anymore. .BP halt Now properly shuts down the system; see \fBreboot\fR below for details. .BP icheck Now properly sets the \fItfree\fR field in the super-block. .BP init Now interacts with \fBhalt\fR, \fBreboot\fR and \fBshutdown\fR to bring about orderly system shutdowns. No longer writes entries in the /usr/adm/wtmp accounting file when a \fIgetty\fR process dies without a user logging in on a terminal. Prints a warning message (on the console) if a terminal exists, is enabled, but the open returns an error, and waits for terminal to be openable, checking each minute, to prevent thrashing in this case. .BP last Now distinguishes between system shutdowns and system crashes. .BP lastcomm A bug causing a core dump if user id's not present in the password file were encountered has been fixed. .BP login Now interacts with the shutdown command to forbid logins (except by the super-user) in the last 5 minutes before a shutdown (detected by the presence of the file /etc/nologin, which also contains a message about why the system is shutting down which is presented to the rejected users.) Implements a notion of ``secure terminals''; if the file /etc/securetty exists, then it should contain a list of the secure terminals where root is allowed to login. If this file does not exist, then root can log in anywhere, as before. If a user tries to login but can't get to their home directory they are left in the root directory and warned, so that they have some chance to send mail about or fix the problem themselves. If a file \fI.hushlogin\fR exists in a users home directory the the message of the day and other such information designed for human users will not be printed at login time. This is specifically designed for the user \fIuucp\fR which is another computer and just ignores such stuff anyways. Finally a bug has been fixed which cause \fBlogin\fR to core dump if there were tabs in the file /etc/ttytype. .BP mkfs Now works properly when given a \fIproto\fR argument; previously it complained because it didn't know that the format of the file /usr/mdec/uboot had been changed. .BP pstat Has new flags \fB\-m\fR and \fB\-g\fR which interpret the multiplexor data structures. .BP reboot Now shuts the system down cleanly, stopping all system activity before initiating the reboot procedure. Normally, however, the new .B shutdown command is used to take the system down, notifying the users of the impending downtime. The options .B \-s and .B \-a options to reboot are no longer available, as it will not be possible to provide them on all VAX cpu's due to the way the console interface works. Instead, you can halt the processor using .B halt which puts the system into a tight loop, and then perform the desired reboot sequence manually at the console. This works on both 11/750 and 11/780 processors. .BP renice Has been modified for the new kernel and is no longer dependent on system configuration parameters; it no longer needs to be recompiled when system table sizes change. .BP restor Now properly handles the case where dump files are contained in dump tapes; previously the end of the embedded dump would confuse \fBrestor\fR and cause the rest of the dump tape to be inaccessible. .BP sa Now correctly handles an arbitrary number of commands and users. Two new options have been added \fB\-v\fR and \fB\-f\fR giving it a googol+2 options. See .IR sa (8) for details. .BP savecore Is a new program which runs after a reboot to save check to see if the system had crashed and, if it had, to save any core image which was successfully written to the paging area. See .IR savecore (8) for a full description. .BP shutdown Is a new command which shuts the system down at a specified time. It broadcasts messages to users warning them as the downtime approaches, records the reason for the reboot in a log file, and cooperates with init in a cleanly shutdown (e.g. during the last 2 minutes of system operation, users attempting to log in are told that the system is going down and the reason for the shutdown but not allowed to log in.) ion really happened when a SIGFPE or SIGILL is generated. The call interface at the point of doc/misc/kchanges.4.1 444 3 12 220136 3124477606 7615 .TL Changes in the Kernel in 4.1bsd .sp May 10, 1981 .br Revised: September 1, 1981 .AU Bill Joy .AI Computer Systems Research Group University of California, Berkeley .PP This document summarizes the changes in the kernel between the November 1980 4.0bsd release and the and April 1981 4.1bsd distribution. The information is presented in both overall terms (e.g. organizational changes), and as specific comments about individual changed files. See the source code itself for more details. .PP The major changes fall in five categories: .IP 1) Changes in the VAX 11/780 specific portions of the code, so that VAX 11/750's are supported also. .IP 2) Changes in the organization of the code, so that more than one configuration of the system may be built from a single set of sources. Each system is described by a single file which includes parameters such as system size, devices on the machine, etc. All ``magic numbers'' such as device register addresses are collected in this single file. .IP 3) Extensive changes in the device subsystem to allow multiple UNIBUS and MASSBUS adapters to be used, multiple instances of device controllers to exist without duplicating driver code, and to provide the capability of system configuration at boot time. The configuration capability is used to produce a generic system which runs on all supported hardware, and is used for distributions. Pattern matching in the configuration capability also allows hardware redundancy to be used to good effect. .IP 4) Diagnostics of the system have been reworked to be in a standard and readable format; file system diagnostic refer to the file systems by name rather than device number. Device diagnostics refer to the devices by name, and print error messages including device registers decoded symbolically rather than simply in octal or hexadecimal. DEC standard bad sector forwarding has been added to the drivers for DEC disks. .IP 5) Performance improvements, noticeably in the paging subsystem. .PP A number of enhancements and bug fixes have also been made. .SH Carrying over local software .PP The majority of local changes should carry over to the new system quite easily. It it necessary to create a configuration file for each machine from which a system will be built, but this is quite easy, and such files are designed to be usable without change in future releases of the system. .PP Locally written UNIBUS device drivers will need to be converted to work in the new system. The new functions needed of the device drivers are: .IP 1) Forcing a device interrupt at bootstrap time, given a proposed device register address. This is used by the configuration program to decide if the device really exists. .IP 2) If buffered data paths are to be used, the driver must use routines in the UNIBUS adapter subsystem which arranges for i/o requests to be queued when there are no resources available. .IP 3) Drivers must not assume that only one instance of a device exists in the system, but must rather be parameterized and use the information provided by the bootstrap procedure to drive all available devices. .PP Of course, it is not necessary to make a driver ``fully supported'' for it to be used. It suffices to handle 1) by pretending that the interrupt occurred, returning the (for a single system) known UNIBUS vector information, and assuming that the device exists on specific UNIBUS adapters. Drivers which use UNIBUS resources only statically or not all all need not be concerned with 2), and drivers can assume that there is only one instance of the supported device on the system, and just not work if more than one such device is really present. .PP In any case, more information about device driver changes is given in the last section of this document; also see \fIautoconf\fR\|(4) for information about the messages printed out by the configuration code at bootstrap time. Looking at the provided standard supported drivers for examples of code is also a good idea. .PP There is also a new interface for MASSBUS devices. Since all MASSBUS devices are already supported, there is no external documentation for writing new MASSBUS drivers at the present. If you have questions or intend to write a driver for a home-brew interface, you should read the MASSBUS and MASSBUS device driver code, which is amply commented. In any case, the MASSBUS interface is more stylized than the UNIBUS interface, and you may have to extend the functionality of the MASSBUS driver to handle radically different devices. .SH Organizational changes .PP On RK07 systems the source for the system lives in the root directory, since there is so little space. The system otherwise lives where it used to: the subdirectories of /usr/src/sys, with copies of the header files for the installed system in /usr/include/sys. .PP The system compilation procedure has been changes so that more than one set of binaries may be kept conveniently with a single copy of the source code. The system sources are kept in the directories \fBsys/sys\fR and \fBsys/dev\fR with the header files in \fBsys/h\fR. Source files which were previously kept in \fBsys/conf\fR are now in \fBsys/dev\fR, and no binaries are kept in any of these directories. .PP The directory \fBsys/conf\fR contains a number of files related to system configuration. For each machine to be configured, a single file is created in the \fBsys/conf\fR directory; thus files \fBERNIE\fR and \fBBERT\fR might exist there. Each such file describes all the parameters of the machine to be used: the devices which are to be configured into the system, optional parts of the system to be included, as well as the timezone in which the machine lives and the maximum number of simultaneous active users; the last is used to scale system tables. The format of the configuration files is described in \fIconfig\fR\|(8). .PP Corresponding to each system to be configured there is a directory of \fBsys\fR, thus \fBsys/BERT\fR and \fBsys/ERNIE\fR. These directories are made with \fImkdir\fR and then the \fB/etc/config\fR command is run, from the \fBsys/conf\fR directory, specifying \fBBERT\fR or \fBERNIE\fR as argument. The configuration program processes the information in the configuration files, and produces, in the directory \fB../BERT\fR or \fB\&../ERNIE\fR respectively: .IP 1) A set of header files, e.g. \fBdz.h\fR, which contain the number of devices and controllers to be available in the target system. These definitions force conditional compilation of drivers resulting in the inclusion or exclusion of driver code and the sizing of driver tables. This technique, based on compilation, is more powerful than a loader-based technique, since small sections of code may be easily conditionalized. Similarly, dynamic loading of device drivers is not needed, as only drivers which are needed are included in the resulting system. .IP 2) A small assembly language vector interface, which turns the hardware generated UNIBUS interrupt sequences into C calls on the driver interrupt routines. This \fBubglue.s\fR file glues the hardware interrupt sequence into the UNIX interface. .IP 3) A table file \fBioconf.c\fR which initializes tables to be used at bootstrap time by the system configuration routines. The configuration routines interpret the contents of the table and determine which devices are available on the system. They determine the vector addresses of UNIBUS devices by forcing the devices to interrupt. Pattern matching in the tables may be used to take advantage of hardware redundancy: the specifications need not completely constrain device placement, so the system can be built to bootstrap in several different configurations, locating the same devices on different interconnects by the fact that their unit numbers have not changes (for example). Thus two RP06 disks could be specified as: .DS disk hp0 at mba? drive 0 disk hp1 at mba? drive 1 .DE and then the disks could be cabled to any available MASSBUS adapter; the pattern matching in the configuration procedure would locate the drives. Similarly, a tape formatter on the same system could be specified: .DS master ht0 at mba? drive ? .DE and then placed anywhere on any MBA. Contrast this flexible specification with .DS disk hp0 at mba0 drive 0 disk hp1 at mba0 drive 1 master ht0 at mba1 drive 0 .DE which is not reconfigurable. This latter specification corresponds to the previous UNIX capabilities, which did not allow tapes and disks on the same MASSBUS adapter. .IP 4) Finally the \fIconfig\fR program constructs a \fImakefile\fR for the system which builds the drivers needed in the specified configuration, and includes system loading sequences for the different root and swap device configurations desired. .PP It is now easy to include ``subsystems'' optionally. This is done through the same mechanisms which causes conditional inclusion of device drivers. The file \fBconf/files\fR contains a palate of files which builds the system. Each line is either of the form: .DS filename standard .DE or .DS filename optional \fIxx\fR .DE where \fIxx\fR is the name of a device which requires the file, or a \fIpseudo-device\fR. To define a subsystem to be added to the kernel it suffices to add specifications to the \fBconf/files\fR file for the newly optional files and to then place a specification .DS pseudo-device \fIxx\fR .DE in the system configuration file. A line .DS options \fIXX\fR .DE may also be added to the configuration to have the symbol XX defined during compilation, for use in conditional compilations in the standard part of the system. Such conditional compilation is typically used to provide hooks in the standard part of the kernel to switch out to subsystem functions. .PP This completes the general description of organizational changes. We now describe the changes in the system, file by file. .SH Header files: sys/h and /usr/include/sys .PP General changes: device drivers now have header files in these directories, thus the ``up'' driver has a header file ``upreg.h''. This so the standalone code and the mainline UNIX code can share the common definitions. .PP The ``.m'' files of the previous distribution have been eliminated (with the sole exception of \fBpcb.m\fR); the magic numbers which were manually entered in these files are instead generated by a program from the definitions in the corresponding \fB\&.h\fR files; a number of header files thus no longer warn about correspondences that must be maintained. .PP The system tables are now described by pointers to their beginning and end and a count, rather than compiled in constants. This allows table sizes to be chosen at boot time (although the system currently does this only for the file system buffer cache), and makes programs such as \fBps\fR and \fBw\fR not compile in these constants. Note, especially, that the symbols such as \fIproc\fR and \fIinode\fR are now memory locations containing the addresses of these structures rather than the base of the structures themselves. Programs which access these structures have been changed and use the variables \fInproc\fR and \fIninode\fR in core rather than the (now defunct) constants NPROC and NINODE. .de BP .IP \\fB\\$1\\fR 14n .. .BP buf.h Now declares three headers on which the in-core buffers are placed. Buffers which are locked in the buffer cache are placed on the first queue. Currently, only file system super blocks are locked in core, and to good effect: it is now possible to rebuild the super-block of the root file system with the system quiescent (without rebooting) if the block device is used. It is no longer necessary to take a buffer for the super-block of a file system and also make a copy of it at each sync; the same buffer can be reused and simply released: since it is locked it will remain in the buffer cache. .IP The other two queues implement the lru cache and the list of blocks which have been discarded. By having queues for both of these rather than using the end of a single queue, we achieve true fifo behavior for blocks which we consider ``discarded''; previously rather strange behavior resulted from pushing these blocks backwards on the front of the single queue. (In particular pipes would behave badly on idle systems under some circumstances.) .IP The number of pages paged is counted at pageout completion, as well as the pageout event count. A bug in the \fBphysio\fR routine which caused physical transfers of more than 60000 bytes to sometimes fail to return an error indication has been fixed. .IP A flag has been added that marks a buffer as consisting only of a header and also one which marks a buffer being used for bad-sector processing. .BP callo.h Is now called \fBcallout.h\fR, and the name of the structure is similarly changed to make it consistent with the other structures in the kernel. The structures are now linked together in linked lists, to prevent arcane situations previously possible where only half of the structures would be used, but the table space would be exhausted. .BP clock.h A botch in handling of leap years has been fixed. A macro is defined here to queue a software interrupt for handling most of the clock processing at an IPL lower than the clock IPL. .BP cmap.h This file, like a number of others, no longer warns that the size of the structure is known elsewhere; such dependencies are the concern of a C program and automated through makefile dependencies. .BP conf.h A \fId_dump\fR entry has been added to the block device table, and is used as the system now normally does automatic dumps of core memory to disk after a crash. The field \fId_tab\fR is now called \fId_flags\fR and set to B_TAPE for tapes. For reasons not worth explaining here, there are no ``tab'' structures to sensibly use in initializing this field now, and in any case the only use of it was to tell which block devices were tapes. .BP dkbad.h Is a new file which defines the format of the bad sector forwarding information according to DEC standard 144. .BP dmap.h The constant DMMIN has been increased to 32 to allow upto 16k bytes to be paged to the paging devices in a clustered pageout. .BP filsys.h The two fields \fIs_fname\fR and \fIs_fpack\fR which were not implemented before were merged together (into a single 12 character field) which is called \fIs_fsmnt\fR. The system puts the ASCII path name where a file system is mounted (e.g. /usr) in this field and uses it in printing error messages on the console; (e.g. ``/usr: file system full'' rather than ``no space on dev 0/6''). .BP inline.h In order to reduce the number of conditional flags defined when compiling the system, the conditional flag FASTVAX, which was always defined, has been deleted. A conditional flag UNFAST, which is never defined, has been added to take its converse's place. .BP inode.h The constant NINDEX has been reduced from 15 to 6. This limits the number of files which may be join()'ed into a multiplexor (\fImpx\fR\|(2)) tree. You may have to increase this if you use the multiplexor extensively, but it saves a large amount of space in the kernel if you can use the smaller value, since NINDEX of 15 causes 40 bytes of extra unused space to be allocated to every inode. .BP map.h The \fBmalloc.c\fR routines have been rewritten to check for table overflow and renamed \frmap.c\fR. .BP mba.h Is now split into \fBmbareg.h\fR and \fBmbavar.h\fR, the former contains the definitions of device register and is usable, e.g., in the standalone version of the system. The latter contains system variable related to the MASSBUS adapters. .BP mem.h Is a new file which contains information on the memory controller registers in the form of macros which make the several VAX processors seem very similar to the UNIX code. Note also that the system now uses interrupts from the memory system to force error logging since the previous technique (polling) works only on the 11/780. .BP mscp.h A new file which defines the DEC \fIMass Storage Control Protocol\fR used by the UDA50 disk controller. .BP mtpr.h The register numbers are now given in hex, as in the DEC manuals; registers for all VAX processors are included. .BP msgbuf.h Defines the structure of the error message buffer, which is now kept in the last 1024 bytes of memory. This allows it to be preserved across system crashes and lets messages such as machine check reports be written conveniently into the error log. .BP nexus.h A new header file which defines the registers and constants related to the interconnect architecture of VAXen. .BP param.h No longer defines the large number of constants related to system sizing; a smaller number of rarely changed constants are given here. In particular, constants which were typically changed to affect the maximum number of supportable users are now controlled by the value given the \fBmaxusers\fR keyword in the machine specification (as described in \fIconfig\fR\|(8)). The \fIconfig\fR program turns this specification into parameters to the \fBparam.c\fR file which uses formulae to compute the values for the size of the process table, inode table, etc. .IP This file now includes the standard file to get system types rather than replicating the definitions from that file. It also defines a DELAY(n) macro which is used in device drivers to provide rougly \fIn\fR microseconds of delay. Finally the definition of UPAGES, the number of system control pages per-process has been increased from 6 to 8. This is partially due to the fact that there is now a red-zone page between the kernel stack and the kernel critical data in the \fIu.\fR area, but also because the kernel stack was precariously close to being too small before. .BP pcb.h Now includes definitions related to the use of AST's to implement user program profiling and rescheduling. Because AST's are now used, it is no longer necessary to take clock interrupts on the kernel stack; they now run on the interrupt stack where they belong. Also rescheduling processing is much cleaner, since the reschedule interrupts only go off when returning to user mode, not in the kernel where they have to be ignored (because UNIX cannot reschedule when running normally in the kernel.) .BP proc.h Now defines SOWEUPC, a new flag used to indicate that a profiling count should be generated when the (already posted) AST for this process goes off. Another new flag SSEQL indicates that the process has declared sequential paging behavior for its data space. Finally the field \fBp_maxrss\fR has been added, specifying the declared ``memoryuse'' limit in pages. .BP psl.h Has a bug fixed in the definitions of PSL_USERCLR. Now also declares PSL_USERSET and PSL_MBZ (must-be-zero). .BP system.h Defines the variables \fIhz\fR, \fItimezone\fR and \fIdstflag\fR replacing the old compile-time constants. No longer declares \fImsgbuf\fR as a variable (see \fBmsgbuf.h\fR). Defines the \fIdumpdev\fR and \fIdumplo\fR variables which specify where dumps are to take place. No longer defines the debugging variables \fIprintsw\fR and \fIcoresw\fR which have been removed in favor of more local debugging variables. No longer defines the field \fIsy_nrarg\fR for the system call entry structures, since system calls never take register arguments on the VAX. .IP A variable \fBwantin\fR has been added which is set each time a process is woken up which wants to be swapped in. This is used so that the code in \fBswapout\R in \fBvmsched.c\fR does not run with elevated priority. .BP trap.h Rearranges some codes previously used only internally so they would be contigous numerically. These are the finer machine traps which result in SIGILL and are made available to a signal handling process and defined in . Defines ASTFLT rather than RESCHED, since the VMS software interrupt which is used for VMS rescheduling never was appropriate for UNIX and is no longer used. .BP uba.h Has been split into \fBubareg.h\fR and \fBubavar.h\fR; see the description of device driver changes below. .BP user.h Contains definitions related to the new \fB#!\fR exec facility. The field \fIu.u_cfcode\fR has been renamed \fIu.u_code\fR since it is now used for purposes other than compatibility mode (presenting the more precise hardware reason for SIGILL and SIGFPE signals.) .BP vlimit.h Now defined LIM_MAXRSS for the ``limit memoryuse'' feature. .BP vm.h The \fBvm*.h\fR headers have been compressed into a more sensible set of files; the macros are all in \fBvmmac.h\fR (absorbing \fBvmclust.h\fR and \fBvmklust.h\fR), metering stuff is all in \fBvmmeter.h\fR (absorbing \fBvmmon.h\fR and \fBvmtotal.h\fR) and the parameters are all in \fBvmparam.h\fR (absorbing \fBvmtune.h\fR, most of the parameters of which are now adjusted at boot time in \fIsetupclock\fR in \fBvmsched.c\fR.) .BP vmmeter.h The structure \fBvmmeter\fR now computes the number of pages paged in \fIv_pgpgin\fR and pages paged out \fIv_pgpgout\fR, as well as the number of pages freed because of the behavior of programs which have told the system they are sequential \fIv_seqfree\fR. .BP vmparam.h The values of MAXDSIZ and MAXSSIZ have increased due to the increase to DMMIN in \fBdmap.h\fR. The klustering constants have been changed: in-clustering is now in 4 page (4k byte) chunks, and out-clustering is up to 16k bytes. Sequential programs kluster in 8k bytes, and text segments kluster in 2k bytes. The gap for the window into sequential programs is currently (primitively) defined as a constant kere in KLSDIST. .BP vmsystm.h Defines a new variable \fIavefree30\fR, which computes the average memory like \fIavefree\fR, but averaged over a longer period of time. This is used to put more hysteresis into swapping, and keep the system from swapping immediately when memory drops low. .SH System files: sys/sys .PP A number of files in the system have had minor changes made to them to reduce the length of time the system runs with the interrupt priority level raised; in particular, the times when the IPL is high enough to block the clock have been severely limited, in hopes of providing better real-time response (eventually) and possibly being able to drive the 11/750 console cassette (soon) which has severe interrupt latency constraints due to poor hardware interface design. .BP acct.c The code was tightened by using a register variable. The \fIsysphys\fR routine was moved to \fBsys4.c\fR since it had no business being here. .BP alloc.c Prints error messages relating to file system problems using the name of the file system rather than the major/minor device number of the device. Some code which attempted to prevent ``dups in free'' after a reboot, but could not prevent this completely, has just been removed; the condition is not harmful in any case, as it is normal and fixed by \fIfsck\fR\|(8). The system now prints directly on a user's terminal if that user causes a file system to run out of free space. The routines here also know how to deal with the fact that the super-blocks are now kept locked in the buffer cache. .BP asm.sed No longer defines \fIspl1\fR which is now defunct; \fBspl7\fR is now VAX IPL 0x1f rather than 0x18, blocking most processor aborts device interrupts from the console storage device, and a number of other processor dependent interrupts. Deals with a strange feature of the optimizer which converts ``$0'' into a register which contains 0. Implements the \fIffs\fR routine of \fBsig.c\fR in a much more efficient way (in just a couple of VAX instructions.) Beware, however: UNIX's notion of \fIffs\fR returns 1 for the low bit of a word, while the hardware \fIffs\fR would return 0. .BP clock.c Now runs only that code which is absolutely necessary when the processor priority is very high, queueing a software interrupt at which priority the rest of the clock processing is done. The conditional (old and long unused) code which profiled the kernel in a static buffer has been removed. The option of fishing characters out of the \fIdz\fR and \fIdh\fR silo's less often than every clock tick (1/hz) has been removed. Instead the silos are processed every clock tick if the system includes the berknet (bk) line discipline, or not at all (i.e. we take input interrupts) if ``bk'' is not included in the system. .IP The processing and watching of hung UNIBUS adapters has been moved from here to the UNIBUS routines. Automatic niceing of long-running (more than 10 minutes of user-state time) processes is now the default here, rather than being based on ``#if ERNIE''. A bug in the check for timeout table overflow which would cause the table to overrun without overflow being detected has been fixed. The timeout table is now implemented as a linked list, so that the entries can be conveniently discarded before calling the timeout routines. This prevents the anomalous case where only half the entries are used but the table fills up. .BP fio.c Has been changed to do the correct thing when special files or mounted file systems are closed: a flush is done at the last close and all blocks are invalidated. The standard ``table full'' routines are called when the file related tables fill up. These routines no longer pass \fBstruct chan *\fR pointers down to called routines, passing, instead, the more universal \fBstruct file *\fR pointers from which the \fBchan\fR pointers are easily derived. .BP iget.c Now uses the standard \fItablefull\fR routine. .BP ioctl.c The last argument to \fId_ioctl\fR routines when called is now always 0. .BP locore.s Has been extensively changed to accomodate the new configurable system, and to handle multiple UNIBUS and MASSBUS adapters. The code is now written using macros and the C preprocessor, improving readability. Complicated logic (such as the code to handle UNIBUS adapter errors) has been migrated to C code. .IP MASSBUS and UNIBUS adapters are no longer initialized or mapped here; this is the job of the configuration code in the system. The locore code distinguishes, in handling UNIBUS interrupts, from the machine being \fIcold\fR and not; when cold UNIBUS interrupts are handled so as to be suitable for determined device vectoring via probing. Device interrupts on the UNIBUS are now vectored through the code in a file \fBubglue.s\fR produced by the configuration program. To mask as much as possible the differences between the different VAX processors, the 11/780 uses the same \fBubglue.s\fR as the other processors which directly vector UNIBUS interrupts. .IP Many more of the exceptional conditions in the machine are caught now; only ``SBI alert'' and ``SBI fault'' remain uncaught by UNIX. The system control block is now defined in a file \fBscb.s\fR so that some symbols derived from C language header files by a program (and printed into a format suitable for inclusion in an assembly) may be stuck in after the system control block and before the mainline \fBlocore.s\fR. .IP The primitive routines \fIcopyseg\fR and \fIclearseg\fR are no longer run with the IPL raised very high. Further minor bugs have been fixed in the primitives, notably \fIaddupc\fR (a bug which caused 1/8 of the profiling ticks to be lost), and \fIkernacc\fR (a bug which allowed a strange command to a certain program to crash the system). .BP machdep.c .br Now sets up the error message buffer (in the last 1024 bytes of core) and the system data structures (such as the file and process table) at boot time. Currently only the file system buffer cache is sized at boot time, but all data structures are easily sized here. The startup routine also calls the routine \fIconfigure\fR to configure the system for the current hardware, locating available devices. .IP The \fIsendsig\fR routine passes a code back when a SIGFPE or SIGILL arrives, letting the signal handler determine which of the several conditions mapped to these two signals actually occurred. It uses the header file rather than redefining it. .IP The routines which monitor memory errors are now driven by interrupts (since the previous polling technique works only on 11/780). Extensive use of macros is made to make the various VAXen look similar. Instead of printing the raw contents of the memory controller registers, a array address and a syndrome is printed. Multiple memory controllers are supported. .IP The routines related to UNIBUS monitoring have been put with the rest of the UNIBUS routines in \fB../dev/uba.c\fR. The reboot interface has been improved, adding an automatic crash dump to a dump device (normally a disk aimed at the back end of a paging area). The system no longer ``halts'' when you ask it to (since this can cause a reboot to occur); rather it raises the IPL as high as it can and goes into a tight loop. Routines have been added to handle machine checks and print out the stack frame in a format which is readable by one who grok's what the fields mean. .BP main.c Now establishes a red zone between the stack and \fIu.\fR area in process 0; further processes also have red zones, protecting the \fIu.\fR from too-large stacks. The main routines also setup the super-blocks which are locked into the file system buffer cache, and copy the name of the root file system (/) into its super-block so that the name will be available if, e.g., the root file system becomes full. .BP malloc.c Has been renamed \fBrmap.c\fR. .BP nami.c Now respects the notion of \fB..\fR in a directory which is a virtual root directory after a \fIchroot\fR\|(2) call. .BP prf.c No longer implements the ascii in-core event tracing facility, which proved to be too slow to be useful; a binary facility replaces it, and is also conditionalized on TRACE, but implemented in \fBvmmon.c\fR. Implements the output of numbers non-recursively, since the recursive method occasionally caused the kernel stacks to overflow. Implements a new kernel routine \fIuprintf\fR which prints directly on a user's terminal for informing him/her of situations such as file systems which are full (because his/her program wrote to the file system when it was full.) Implements a new format ``%b'' which takes two arguments, a number and a second pattern. The pattern specifies a base to print the number in, and then a set of short strings separated by bit numbers (origin 1, escaped in octal into the string in the C compiler). The format prints the symbolic names for the bits which are in the string and set in the number within <>'s and separated by commas. This is extensively used to produce readable system error diagnostic messages on the console, decoding the bits of device registers symbolically. .IP The routines \fIprdev\fR and \fIdeverr\fR, which printed diagnostics which were difficult to interpreter, are deleted. There are two new routines: \fItablefull\fR which balks that a table is full, and \fIharderr\fR which begins a message about a hard (unrecoverable) error on a device. .BP prim.c Now maintains a count of free \fIclist\fR space. The code here now runs at \fBspl5\fR rather than \fBspl6\fR since there is no longer any need to block the clock. .BP rdwri.c Sees the change FASTVAX to not UNFAST. Also always clears the set-user-id bit when a file with the bit set is written on; previously this was done only ``#if UCB''. If you ``#define INSECURITY'' you get the code the old way. .BP scb.s Is a new file defining the system control block (as described above). .BP sig.c Has a bug fixed which caused processes to occasionally stop when the shell thought they were running. Processes are now given signals immediately when they are sent if the process is running. .BP slp.c A clumsiness which forced the swapout code to run with the IPL raised has been fixed by adding a variable \fIwantin\fR with which \fIwakeup\fR can communicate to the swapper that a swapped out process now wants to return to memory. The routine \fIsetpri\fR has been modified so that processes which are over their declared (soft) memory size limitation are assigned lower CPU priority when the system is very tight on memory. .BP sys.c No longer allows detached jobs to access /dev/tty; this was a security glitch. .BP sys1.c Implements the ``#!'' executable shell script scheme. No longer lets executable files be read by users using \fIptrace\fR unless the user has read access. Operates \fIexec\fR much more efficiently by avoiding copying argument lists unless the \fIexec\fR is going to succeed. .BP sys2.c The \fIopeni\fR routine passes both the FREAD and FWRITE flags to its callees; this is needed by the magnetic tape open routines. The \fImaknode\fR routine sticks the whole argument value in the ``rdev'' field of the inode. This is used by the \fIbadblock\fR\|(8) program to store block numbers corresponding to bad sectors on the disk in otherwise apparently empty files. .BP sys3.c The \fImount\fR and \fIumount\fR calls have been changed to deal correctly with buffer flushing and with simulateous access by other programs to the file system block devices. The \fImount\fR call also copies into the super-block of the file system the name of the device on which the file system is mounted (e.g. /usr). .BP sys4.c The \fIsyslock\fR routine has been moved here from \fBacct.c\fR. The mechanisms for sending signals to all processes, which is used in shutting down the system, has been changed so that the process which is broadcasting the signal does not receive it itself. This allows the \fIhalt\fR and \fIshutdown\fR programs to be written in a straightforward way. .BP trap.c Prints out the \fBpc\fR when an unexpected trap occurs. Handles AST's to implement profiling ticks and for rescheduling rather than the (older style) use of reschedule interrupts. Allows process reschedules after page faults. .BP vmmon.c Contains the internal routine \fBtrace1\fR which implements kernel event tracing in a circular buffer. .BP vmpage.c Tracing code, which is normally not compiled in, has been added. A extra case was added to an \fIif\fR statement to allow implementation of the vlimit(LIM_MAXRSS) feature of the system, for limiting processes which consume more than a process specific amount of physical memory. A botch was fixed in the virtual memory pre-paging which put pre-paged pages in the clock loop rather than at the end of the free list. Code has been added to implement a additonal replacement algorithm for processes which are declared sequential: when a hard page fault occurs, the pages sequentially preceding the faulted page are returned to the free list. .BP vmproc.c Contains a number of small changes related to AST processing. .BP vmpt.c Also contains changes for handling AST's as well as the initialization of the red-zone separating the stack and \fBu.\fR area of newly created processes. A bug in translation buffer flushing which caused rare and mysterious kernel crashes with the kernel stack not valid has been fixed. .BP vmsched.c Code has been added here which initializes the parameters of the clock page replacement algorithm based on the size of the machine. The \fIswapout\fR routine has been changed so that it no longer runs entirely at a high interrupt priority level (see \fBslp.c\fR above). The algorithm for the choice of processes to swap in and out and the hysteresis in the swap algorithm has been adjusted to work reasonably in extreme conditions when there are very large and or very few processes active in the system. .BP vmsubr.c Contains the \fIsetredzone\fR routine definition. .BP vmsys.c Contains the user interface to the kernel tracing routines. Code has been added to \fIvadvise\fR to setup VA_SEQL. .SH Device support: sys/dev .PP The major change to the device subsystem is the support of multiple MASSBUS and UNIBUS adapters, the support for multiple instances of each particular controller, and the support of system configuration at bootstrap time, investigating the interconnects, devices, and controllers available on the machine. These changes will be discussed in detail in the next section, which describes how to change existing drivers to work in the new system and gives pointers on style for writing new drivers. .PP Other changes in the device drivers affecting more than one driver: .IP * The input silos for DH-11's and DZ-11's are no longer serviced at clock IPL. Rather the clock interrupt queues a software interrupt during to service the silos. This means that the device interrupt routines are called from IPL 0x15, the IPL at which they normally interrupt. Thus it is no longer necessary to define \fBspl5\fR to be \fBspl6\fR (blocking the clock) in routines which handle asynchronous line input/output. .IP * The internal interface to the line discipline routines has been changed slightly by reordering parameters to make the arguments to the various \fIioctl\fR interfaces more similar; in particular \fIttioctl\fR routine call has been changed. If you have locally written line disciplines or asynchronous device drivers you should check the interfaces. .IP * The tty interface now provides full 8-bit output when the terminal is in LLITOUT mode; this requires support from the \fIxx\fR\|param routines in the device drivers (e.g. from \fIdhparam\fR and \fIdzparam\fR.) .IP * The UNIBUS adapter support routines have changed substantially, to allow for queueing of requests when resources are short and for support of multiple UNIBUS adapters. The interface now also allows devices which cannot function when other DMA is active on the UNIBUS to obtain exclusive transient use of UNIBUS resources; this is needed to successfully run RK07 disk controllers in the presence of other buffered data path DMA. In addition, it is used by 6250bpi tape drives supported on the UNIBUS. See the section on configuration and UNIBUS device drivers below for more information. .IP * DEC standard bad sector forwarding is provided for all standard DEC devices using the DEC formatters; the code which implements this is easily ported to the storage module drivers in the system, and this is planned soon.* .FS * The hard thing in providing bad sector handling for non-DEC drives is providing a formatter which produces the bad block information and flags the bad sectors appropriately. .FE .BP bio.c The hashing of buffers has been changed to use the existing device chain two way links. This means that unhashing is much easier, saves space, and uses the pointers which were otherwise little used. The buffers are now kept on one of three lists when not busy: a list of super-blocks which are locked in core, a list of good data blocks, which is kept fifo and used to implement the LRU buffer cache, and a list of data blocks for which further usage is not anticipated; this is also kept fifo. .IP Calls to some new tracing routines are conditionally included in \fBbio.c\fR; we are using them to do some performance measurement. The \fBd_tab\fR field of the block device table has been changed to a \fBd_flags\fR field, and that change is known here, where old field was checked before (to see if it was non-zero). Better messages are printed now when swap space is exhausted, and a user is told on his/her terminal that a process was killed before it started because there was no space. A subroutine has been added to purge the blocks from a specific device from the cache; this is used to fix some long standing buffer cache flushing problems which prevented removable media from being used reliably. .BP bk.c The definition of \fBspl5\fR as \fBspl6\fR has been removed from here. The line discipline is included only if the specification .DS pseudo-device bk .DE is included in the system configuration. The input silos on \fBdh\fR and \fBdz\fR devices are used only when this line discipline is included in the system. The comment about future implementation of 8-bit paths with this discipline has been deleted, since there is no longer any intention of doing this. .BP conf.c Has been moved to this directory from the directory \fB../conf\fR. \fBThis file should be changed only if you are adding support for a device not included on the standard distribution tape.\fR .BP ct.c Is a new driver, for a C/A/T phototypesetter interface. .BP dh.c No longer has to define \fBspl5\fR to be \fBspl6\fR. Incorporates the DM-11 driver standardly. A method is provided for specifying that lines are to be operated even though the hardware does not indicate that they are ready (using the flags word in the configuration specification, see \fIdh\fR\|(4)). A reasonable messages is printed when a \fBdh\fR silo overflows, replacing the old style of just printing a sequence of letter \fBo\fR's on the console. .BP dhfdm.c Has been incorporated into \fBdh.c\fR. .BP dn.c A driver for the DEC DN-11 autodialer interface. .BP dsort.c Has been rewritten to correct a bug which caused the elevators to be sorted incorrectly. .BP dz.c No longer has to define \fBspl5\fR to be \fBspl5\fR. Has been changed to allow lines to be specified as not properly wired and brought up without the ready signals showing in the interface; see \fIdz\fR\|(4) for details. Prints reasonable diagnostics when the input silo overflows. .BP flp.c Knows that there is no floppy on an 11/750. .BP hp.c Is now a sub-driver to \fBmba.c\fR, which probes nexus space for the MASSBUS adaptors and device space on the MASSBUS's for disks, setting up the driver for each device which is in the configuration. A number of minor bugs and enhancements have been made to the driver: The driver handles the new RM80 drive and its SSE (skip-sector-error) facility for bad sector handling, as well as the DEC standard bad block forwarding. Due to the bad block forwarding, the last three tracks of each disk are normally reserved to the system and available only through the use of a special file system partition. A further bug has been fixed in the initialization of the tables for RM05 sectoring. The driver no longer (baroquely) turns on and off interrupts on the MASSBUS adapter. Basic dual-port drive handling code has been added to the driver. .IP The remaining remarks apply to all three supported disk drivers: the \fBhp\fR driver for MASSBUS disks, the \fBup\fR driver for UNIBUS storage modules, and the \fBhk\fR driver for RK07's: The drivers do not SEARCH or SEEK if there is only one drive on the MASSBUS. On a UNIBUS no SEARCHing or SEEKing is done if one drive is on the controller. The offset positions and recalibration of error recovery is now done with interrupts rather than by waiting for the operations to complete. This prevents the system from being tied up during the many recoveries of a disk operation, and is necessary in any case in at least one of the disk drivers (RK07). The iostat numbers for each MASSBUS and UNIBUS drive are calculated by the auto-configurator at boot time, not compiled into the drivers. Much cleaner handling of errors is done: the drivers realize which errors are not even potentially recoverable, handle drives spinning up and down with readable diagnostics, and print reasonable, legible error messages when hard errors and soft ecc's occur. Each driver includes a low-level non-interrupt driver used to take crash dumps at the end of a paging area on the device. The drivers include a raw i/o buffer per drive so that raw operations on separate devices can be overlapped (both seeks and transfers); previously only one raw device operation could be pending per device type. .BP ht.c The tape drive is now a sub-drive of the MASSBUS driver. The following remarks apply to all supported tape drivers: \fBht\fR and \fBmt\fR for MASSBUS . \"tapes, \fBts\fR for the UNIBUS ts-11, \fBtm\fR for the UNIBUS . \"TM-11 emulations, and \fBut\fR for UNIBUS TU45 emulations. tapes, \fBts\fR for the UNIBUS ts-11, and \fBtm\fR for the UNIBUS TM-11 emulations. .IP Each driver implements a set of tape ioctl operations on raw tapes providing access to the functionality of the hardware such as skipping forward and backward records and files and writing end-of-file marks on the tape. Better error diagnostics are also given on tape errors. Multiple tape controllers and transports are supported. A dump routine is provided with each driver for taking a post-mortem crash dump on tape, although dumps are normally made to the paging area on the disk. .IP With the exception of the \fBts\fP driver, the drivers detect and reject attempts to switch tape density while writing a tape. .BP lp.c Is a fully supported driver for one or more line printer interfaces. It has been improved from the previous drivers (which were not supported) to take a small fraction of the number of interrupts that the previous drivers took. The user-level code driving the printers has been arranged to work on 1200 baud DECWRITER III terminals or true printers. .BP mba.c Has been rewritten. Now allows mixing of disks and tapes on the same and across multiple mba's, with the devices being driven from the routines here calling routines defined in the individual device drivers. .BP mem.c Has been fixed to not allow any access to nexus space, even by the super-users, since such access inevitably results in a machine check and a system crash. .BP mt.c A driver for the DEC TU78 tape drive. .BP mx?.c A bug has been fixed which, caused by a missing call to \fIchdrain\fR caused multiplexor files to become clogged under certain circumstances. .BP rk.c Is a new driver for RK07 disks. It uses the same logic as the storage module drive driver \fBup.c\fR whenever possible. It also makes use of the interlocking facilities of the UNIBUS device support because the \fBrk\fR controller cannot tolerate concurrent UNIBUS dma when it is operating due to a design flaw. .BP swap.c Now places only half of the first piece of the \fIswapmap\fR in the \fIargmap\fR. .BP swap??*.c Are the files for different swap configurations. Thus \fBswaphp.c\fR defines the root and swap devices for a UNIX based on a \fBhp\fR disk. The files such as \fBswaphphp.c\fR are for interleaved paging configurations, placing the swapping and paging activity on two disk arms. You can make additional such files and include them in your configuration files. .BP tdump.c Has been deleted, replaced by the dump routines in individual drivers. .BP tm.c Is a driver for UNIBUS tape drives on controllers such as the EMULEX TC-11. It has the same functionality as \fBht\fR (see \fBht.c\fR above.) .BP ts.c Is a driver for the UNIBUS TS-11 tape drive. It has full functionality except the transport itself only supports 1600 bpi. .BP tty.c No longer raises its IPL to \fBspl6\fR internally to block the clock. Has its internal interface to \fBioctl\fR entries changed slightly to be globally consistent (see, e.g. \fIttioctl\fR). The DIOC* ioctl entries have been deleted since they are not used in any standard UNIX line disciplines. .BP ttynew.c A bug is fixed which prevented echoing from occurring in raw mode. The dec-compatible method of ^S/^Q processing needed to support VT-100s in smooth scroll mode is implemented when the local mode ``decctlq'' is specified. .BP ttyold.c Implements ``decctlq'' mode. .BP tu.c A driver for the 11/750 TU58 console cassette interface. \fBNote: this driver provides reliable service only on a quiescent system.\fP .BP uba.c Has a much more structured interface. All the basic routines for dealing with the UNIBUS specify a UNIBUS adapter number to use, since there are potentially several on a machine. When requesting allocation of UNIBUS map entries, the caller specifies whether he is willing to block in the allocation routines waiting for resources to come available. If he is not, and there are no resources available, a value of 0 is returned, and the caller must deal with this. The routine which frees UNIBUS resources now takes the address of the variable describing the resources to be freed rather than the value of this variable to eliminate a race condition (where the routine is called, a UNIBUS interrupt occurs causing a UNIBUS reset, and the resources are freed twice, causing a \fIpanic\fR\|). .IP The normal interface for DMA operation is now to pass a pointer to a UNIBUS related structure to a routine \fIubago\fR, which allocates UNIBUS resources. If resources are not available, the structure is queued on a request queue, and processed when resources are available. When the requested resources are allocated, a driver specific \fIxxgo\fR routine is called, and can stuff the device registers with the address into which the operation is mapped and start the operation. The use of this interface is described in the next section. .IP Finally, we note that the error handling code which was written in assembly language is now written in C. .BP uda.c A driver for the UDA50 disk controller with RA80 Winchester storage modules. .BP up.c The UNIBUS storage module disk driver has been fixed up in the same way that the \fBhp\fR driver was, giving better error diagnostics and using interrupts during error recovery, etc. See \fBhp.c\fR above for details. The driver uses a feature of the EMULEX SC-21 to determine the size of the disks in use, so that it can adapt to both 300M storage modules and the Fujitsu 160M drives which are popular. Other drive sizes can be added easily. . \".BP ut.c . \"A driver for the System Industries Model 9700 tape drive, emulating . \"a DEC TU45 on the UNIBUS. .BP va.c The \fBvarian\fR printer-plotter driver has been modified so that it can support more than one device, probes the devices so they can be placed on differrent UNIBUS'es, and prints an error diagnostic when device errors are detected. .BP vaxcpu.c Is a new file which contains initializations of various CPU-type dependent structures. .BP vp.c Has been modified to handle multiple devices, and adapted to the auto-configuration code. .SH Configuration and UNIBUS device drivers .PP Someday this section will be a separate document. This section explains how to interface an existing UNIX device driver to the VAX system, especially to the UNIBUS routines and the autoconfiguration code. .PP A PDP-11, UNIX/32V or 3BSD or 4.0BSD driver on the VAX UNIBUS will need to be modified to run under 4.1BSD. There are three reasons why such a driver will need to be changed: .IP 1) 4.1bsd supports multiple UNIBUS adapters. .IP 2) 4.1bsd supports system configuration at boot time. .IP 3) 4.1bsd manages the UNIBUS resources and does not crash when resources are not available; the resource allocation protocol must be honored. In addition, devices such as the RK07 which require everyone else to get off the UNIBUS when they are running need cooperation from other DMA devices if they are to work. .PP Each UNIBUS on a VAX has a set of resources: .IP * 496 map registers which are used to convert from the 18 bit UNIBUS addresses into the much larger VAX address space. .IP * Some number of buffered data paths (3 on an 11/750, 15 on an 11/780) which are used by high speed devices to transfer data using fewer bus cycles. .LP There is a structure of type \fBstruct uba_hd\fR in the system per UNIBUS adapter used to manage these resources. This structure also contains a linked list where devices waiting for resources to complete DMA UNIBUS activity have requests waiting. .PP There are three central structures in the writing of drivers for UNIBUS controllers; devices which do not do DMA i/o can often use only two of these structures. The structures are \fBstruct uba_ctlr\fR, the UNIBUS controller structure, \fBstruct uba_device\fR the UNIBUS device structure, and \fBstruct uba_driver\fR, the UNIBUS driver structure. The \fBuba_ctlr\fR and \fBuba_device\fR structures are in one-to-one correspondence with the definitions of controllers and devices in the system configuration. Each driver has a \fBstruct uba_driver\fR structure specifying an internal interface to the rest of the system. .PP Thus a specification .DS controller sc0 at uba0 csr 0176700 vector upintr .DE would cause a \fBstruct uba_ctlr\fR to be declared and initialized in the file \fBioconf.c\fR for the system configured from this description. Similarly specifying .DS disk up0 at sc0 drive 0 .DE would declare a related \fBuba_device\fR in the same file. The \fBup.c\fR driver which implements this driver specifies in its declarations: .DS int upprobe(), upslave(), upattach(), updgo(), upintr(); struct uba_ctlr *upminfo[NSC]; struct uba_device *updinfo[NUP]; u_short upstd[] = { 0776700, 0774400, 0776300, 0 }; struct uba_driver scdriver = { upprobe, upslave, upattach, updgo, upstd, "up", updinfo, "sc", upminfo }; .DE initializing the \fBuba_driver\fR structure. The driver will support some number of controllers named \fBsc0\fR, \fBsc1\fR, etc, and some number of drives named \fBup0\fR, \fBup1\fR, etc. where the drives may be on any of the controllers (that is there is a single linear name space for devices, separate from the controllers.) .PP We now explain the fields in the various structures. It may help to look at a copy of \fBh/ubareg.h\fR, \fBh/ubavar.h\fR and drivers such as \fBup.c\fR and \fBdz.c\fR while reading the descriptions of the various structure fields. .SH uba_driver structure .PP One of these structures exists per driver. It is initialized in the driver and contains functions used by the configuration program and by the UNIBUS resource routines. The fields of the structure are: .BP ud_probe A routine which is given a \fBcaddr_t\fR address as argument and should cause an interrupt on the device whose control-status register is at that address in virtual memory. It may be the case that the device does not exist, so the probe routine should use delays (via the DELAY(n) macro which delays for \fIn\fR microseconds) rather than waiting for specific events to occur. The routine must \fBnot\fR declare its argument as a \fBregister\fR parameter, but \fBmust\fR declare .DS \fBregister int br, cvec;\fR .DE as local variables. At boot time the system takes special measures that these variables are ``value-result'' parameters. The \fBbr\fR is the IPL of the device when it interrupts, and the \fBcvec\fR is the interrupt vector address on the UNIBUS. These registers are actually filled in in the interrupt handler when an interrupt occurs. .IP As an example, here is the \fBup.c\fR probe routine: .DS upprobe(reg) caddr_t reg; { register int br, cvec; #ifdef lint br = 0; cvec = br; br = cvec; #endif ((struct updevice *)reg)->upcs1 = UP_IE|UP_RDY; DELAY(10); ((struct updevice *)reg)->upcs1 = 0; return (1); } .DE The definitions for \fIlint\fR serve to indicate to it that the \fBbr\fR and \fBcvec\fR variables are value-result. The statements here interrupt enable the device and write the ready bit UP_RDY. The 10 microsecond delay insures that the interrupt enable will not be cancelled before the interrupt can be posted. The return of ``1'' here indicates that the probe routine is satisfied that the device is present. A probe routine may use the function ``badaddr'' to see if certain other addresses are accessible on the UNIBUS (without generating a machine check), or look at the contents of locations where certain registers should be. If the registers contents are not acceptable or the addresses don't respond, the probe routine can return 0 and the device will not be considered to be there. .IP One other thing to note is that the action of different VAXen when illegal addresses are accessed on the UNIBUS may differ. Some of the machines may generate machine checks and some may cause UNIBUS errors. Such considerations are handled by the configuration program and the driver writer need not be concerned with them. .IP It is also possible to write a very simple probe routine for a one-of-a-kind device if probing is difficult or impossible. Such a routine would include statements of the form: .DS br = 0x15; cvec = 0200; .DE for instance, to declare that the device ran at UNIBUS br5 and interrupted through vector 0200 on the UNIBUS. The current TS-11 driver does something similar to this because the device is so difficult to force an interrupt on that it hardly seems worthwhile. (Besides, TS-11's are usually present on small 11/750's which have only one UNIBUS, and TS-11's can have only exactly one transport per-controller so little probing is needed.) .BP ud_slave This routine is called with a \fBuba_device\fR structure (yet to be described) and the address of the device controller. It should determine whether a particular slave device of a controller is present, returning 1 if it is and 0 if it is not. As an example here is the slave routine for \fBup.c\fR. .DS upslave(ui, reg) struct uba_device *ui; caddr_t reg; { register struct updevice *upaddr = (struct updevice *)reg; upaddr->upcs1 = 0; /* conservative */ upaddr->upcs2 = ui->ui_slave; if (upaddr->upcs2&UPCS2_NED) { upaddr->upcs1 = UP_DCLR|UP_GO; return (0); } return (1); } .DE Here the code fetches the slave (disk unit) number from the \fBui_slave\fR field of the \fBuba_device\fR structure, and sees if the controller responds that that is a non-existant driver (NED). If the drive a drive clear is issued to clean the state of the controller, and 0 is returned indicating that the slave is not there. Otherwise a 1 is returned. .BP ud_attach The attach routine is called after the autoconfigure code and the driver concur that a peripheral exists attached to a controller. This is the routine where internal driver state about the peripheral can be initialized. Here is the \fIattach\fR routine from the \fBup.c\fR driver: .ID .nf upattach(ui) register struct uba_device *ui; { register struct updevice *upaddr; if (upwstart == 0) { timeout(upwatch, (caddr_t)0, hz); upwstart++; } if (ui->ui_dk >= 0) dk_mspw[ui->ui_dk] = .0000020345; upip[ui->ui_ctlr][ui->ui_slave] = ui; up_softc[ui->ui_ctlr].sc_ndrive++; upaddr = (struct updevice *)ui->ui_addr; upaddr->upcs1 = 0; upaddr->upcs2 = ui->ui_slave; upaddr->uphr = UPHR_MAXTRAK; if (upaddr->uphr == 9) ui->ui_type = 1; /* fujitsu hack */ upaddr->upcs2 = UPCS2_CLR; } .DE The attach routine here performs a number of functions. The first time any drive is attached to the controller it starts the timeout routine which watches the disk drives to make sure that interrupts aren't lost. It also initializes, for devices which have been assigned \fIiostat\fR numbers (when ui->ui_dk >= 0), the transfer rate of the device in the array \fBdk_mspw\fR, the fraction of a second it takes to transfer 16 bit word. It then initializes an inverting pointer in the array \fBupip\fR which will be used later to determine, for a particular \fBup\fR controller and slave number, the corresponding \fBuba_device\fR. It increments the count of the number of devices on this controller, so that search commands can later be avoided if the count is exactly 1. It then uses a hardware feature of the EMULEX SC-21 to ask if the number of tracks on the device is 9. If it is, then the driver assumes that the type is ``1'', which corresponds to a FUJITSU 160M drive. The alternative is the only other currently supported device, a 300 Megabyte CDC or AMPEX drive, which has \fBui_type\fR 0. Note that if the controller is not an SC-21 then attempting to find out the maximum track in the device will yield an error, and a 300 Megabyte device will be assumed. In any case, any errors resulting from the attempt to type the drive are cleared by a controller clear before the routine returns. .BP ud_dgo Is the routine which is called by the UNIBUS resource management routines when an operation is ready to be started (because the required resources have been allocated). The routine in \fBup.c\fR is: .DS updgo(um) struct uba_ctlr *um; { register struct updevice *upaddr = (struct updevice *)um->um_addr; upaddr->upba = um->um_ubinfo; upaddr->upcs1 = um->um_cmd|((um->um_ubinfo>>8)&0x300); } .DE This routine uses the field \fBum_ubinfo\fR of the \fBuba_ctlr\fR structure which is where the UNIBUS routines store the UNIBUS map allocation information. In particluar, the low 18 bits of this word give the UNIBUS address assigned to the transfer. The assignment to \fIupba\fR in the go routine places the low 16 bits of the UNIBUS address in the disk UNIBUS address register. The next assignment places the disk operation command and the extended (high 2) address bits in the device control-status register, starting the i/o operation. The field \fBum_cmd\fR was initialized with the command to be stuffed here in the driver code itself before the call to the \fBubago\fR routine which eventually resulted in the call to \fBupdgo\fR. .BP ud_addr Are the conventional addresses for the device control registers in UNIBUS space. This information is not used by the system in this release, but may be used in future releases to look for instances of the device supported by the driver. In the current system, the configuration file specifies the control-status register addresses of all configured devices. .BP ud_dname Is the name of a \fIdevice\fR supported by this controller; thus the disks on a SC-21 controller are called \fBup0\fR, \fBup1\fR, etc. That is because this field contains \fBup\fR. .BP ud_dinfo Is an array of back pointers to the \fBuba_device\fR structures for each device attached to the controller. Each driver defines a set of controllers and a set of devices. The device address space is always one-dimensional, so that the presence of extra controllers may be masked away (e.g. by pattern matching) to take advantage of hardware redundancy. This field is filled in by the configuration program, and used by the driver. .BP ud_mname The name of a controller, e.g. \fBsc\fR for the \fBup.c\fR driver. The first SC-21 is called \fBsc0\fR, etc. .BP ud_minfo The backpointer array to the structures for the controllers. .BP ud_xclu If non-zero specifies that the controller requires exclusive use of the UNIBUS when it is running. This is non-zero currently only for the RK611 controller for the RK07 disks to map around a hardware problem. It could also be used if 6250bpi tape drives are to be used on the UNIBUS to insure that they get the bandwidth that they need (basically the whole bus). .SH uba_ctlr structure .PP One of these structures exists per-controller. The fields link the controller to its UNIBUS adaptor and contain the state information about the devices on the controller. The fields are: .BP um_driver A pointer to the \fBstruct uba_device\fR for this driver, which has fields as defined above. .BP um_ctlr The controller number for this controller, e.g. the 0 in \fBsc0\fR. .BP um_alive Set to 1 if the controller is considered alive; currently, always set for any structure encountered during normal operation. That is, the driver will have a handle on a \fBuba_ctlr\fR structure only if the configuration routines set this field to a 1 and entered it into the driver tables. .BP um_intr The interrupt vector routines for this device. These are generated by the \fIconfig\fR\|(8) program and this field is initialized in the \fBioconf.c\fR file. .BP um_hd A back-pointer to the UNIBUS adapter to which this controller is attached. .BP um_cmd A place for the driver to store the command which is to be given to the device before calling the routine \fIubago\fR with the devices \fBuba_device\fR structure. This information is then retrieved when the device go routine is called and stuffed in the device control status register to start the i/o operation. .BP um_ubinfo Information about the UNIBUS resources allocated to the device. This is normally only used in device driver go routine (as \fBupdgo\fR above) and occasionally in exceptional condition handling such as ECC correction. .BP um_tab This buffer structure is a place where the driver hangs the device structures which are ready to transfer. Each driver allocates a buf structure for each device (e.g. \fBupdtab\fR in the \fBup.c\fR driver) for this purpose. You can think of this structure as a device-control-block, and the buf structures linked to it as the unit-control-blocks. The code for dealing with this structure is stylized; see the \fBrk.c\fR or \fBup.c\fR driver for the details. If the \fBubago\fR routine is to be used, the structure attached to this \fBbuf\fR structure must be: .RS .IP * A chain of \fBbuf\fR structures for each waiting device on this controller. .IP * On each waiting \fBbuf\fR structure another \fBbuf\fR structure which is the one containing the parameters of the i/o operation. .RE .SH uba_device structure .PP One of these structure exists for each device attached to a UNIBUS controller. Devices which are not attached to controllers or which perform no buffered data path DMA i/o may have only a device structure. Thus \fBdz\fR and \fBdh\fR devices have only \fBuba_device\fR structures. The fields are: .BP ui_driver A pointer to the \fBstruct uba_driver\fR structure for this device type. .BP ui_unit The unit number of this device, e.g. 0 in \fBup0\fR, or 1 in \fBdh1\fR. .BP ui_ctlr The number of the controller on which this device is attached, or \-1 if this device is not on a controller. .BP ui_ubanum The number of the UNIBUS on which this device is attached. .BP ui_slave The slave number of this device on the controller which it is attached to, or \-1 if the device is not a slave. Thus a disk which was unit 2 on a SC-21 would have \fBui_slave\fR 2; it might or might not be \fBup2\fR, that depends on the system configuration specification. .BP ui_intr The interrupt vector entries for this device, copied into the UNIBUS interrupt vector at boot time. The values of these fields are filled in by the \fBconfig\fR\|(8) program to small code segments which it generates in the file \fBubglue.s\fR. .BP ui_addr The control-status register address of this device. .BP ui_dk The iostat number assigned to this device. Numbers are assigned to disks only, and are small positive integers which index the various \fBdk_*\fR arrays in . .BP ui_flags The optional ``\fBflags \fR\fIxxx\fR'' parameter from the configuration specification was copied to this field, to be interpreted by the driver. If \fBflags\fR was not specified, then this field will contain a 0. .BP ui_alive The device is really there. Presently set to 1 when a device is determined to be alive, and left 1. .BP ui_type The device type, to be used by the driver internally. Thus the \fBup.c\fR driver uses a \fBui_type\fR of 0 to mean a 300 Megabyte drive and a type of 1 to mean a 160 Megabyte FUJITSU drive. .BP ui_physaddr The physical memory address of the device control-status register. This is used in the device dump routines typically. .BP ui_mi A \fBstruct uba_ctlr\fR pointer to the controller (if any) on which this device resides. .BP ui_hd A \fBstruct uba_hd\fR pointer to the UNIBUS on which this device resides. .SH Changing drivers .PP If you driver does not do buffered data path DMA, conversion to the new system should be straightforward; if it uses buffered data paths more work will be required, but the task is really mostly cosmetic. .PP In any case, first add a line to the file \fBconf/files\fR of the form .DS dev/zz.c optional zz device-driver .DE so that your driver will be included when you specify it in a configuration. Change the \fBdev/conf.c\fR file to include a block or character device entry for your device. Note that the block device entries now include a \fBd_dump\fR entry; if you are a block device but don't have a dump entry point, just make one in your driver that returns the value ENODEV. .PP Then build a system configuration including your driver so that you have a compilation environment for your driver. You will have to add a \fBstruct uba_driver\fR declaration for your driver, and change its calls to UNIBUS routines to correspond to these routines in the new system. Trouble spots will show up here. In particular, notice that you must specify flags to \fBuballoc\fR if you call it: .BP NEEDBDP if you need a buffered data path .BP CANTWAIT if you are calling (potentially) from interrupt level .LP You may discover that your driver ``cantwait'' but that you are calling from interrupt level. This botch existed in most previous VAX UNIX drivers, since there were no mechanisms for dealing with this. We will describe some options shortly. .PP First, suppose your driver doesn't do buffered data path dma. What else is there for you to do? Very little really. You should change your driver to print messages on the console in the format now used by all device drivers; see section 4 of the revised programmers manual for details. To make more certain that your driver is ready for the new system environment, look at some of the simple existing drivers and mimic the style to create the portions of the driver which are needed to interface with the configuration part of the system. Useful drivers to look at may be: .BP ct.c Very simple drive which does programmed i/o to C/A/T phototypesetter. .BP dh.c Communications line driver which uses non-buffered UNIBUS dma for output. .BP dz.c Communications line driver which does programmed i/o. .PP Basically all you have to do is write a \fBud_probe\fR and a \fBud_attach\fR routine for the controller. It suffices to have a \fBud_probe\fR routine which just initializes \fBbr\fR and \fBcvec\fR, and a \fBud_attach\fR routine which does nothing. Making the device fully configurable requires, of course, more work, but is worth it if you expect the device to be in common usage and want to share it with others. .PP If you managed to create all the needed hooks, then make sure you include the necessary header files; the ones included by \fBct.c\fR are nearly minimal. Order is important here, don't be suprised at undefined structure complaints if you order the includes wrongly. Finally if you get the device configured in, you can try bootstrapping and see if configuration messages print out about your device. It is a good idea to have some messages in the probe routine so that you can see that you are getting called and what is going on. If you do not get called, then you probably have the control-status register address wrong in your system configuration. The autoconfigure code notices that the device doesn't exist in this case and you will never get called. .PP Assuming that your probe routine works and you manage to generate an interrupt, then you are basically back to where you would have been under older versions of UNIX. Just be sure to use the \fBui_ctlr\fR field of the \fBuba_device\fR structures to address the device; compiling in funny constants will make your driver only work on the CPU type you have (780 or 750). .PP Other bad things that might happen while you are setting up the configuration stuff: .IP * You get ``nexus zero vector'' errors from the system. This will happen if you cause a device to interrupt, but take away the interrupt enable so fast that the UNIBUS adapter cancels the interrupt and confuses the processor. The best thing to do it to put a modest delay in the probe code between the instructions which should cause and interrupt and the clearing of the interrupt enable. (You should clear interrupt enable before you leave the probe routine so the device doesn't interrupt more and confuse the system while it is configuring other devices.) .IP * The device refuses to interrupt or interrupts with a ``zero vector''. This typically indicates a problem with the hardware or, for devices which emulate other devices, that the emulation is incomplete. Devices may fail to present interrupt vectors because they have configuration switches set wrong, or because they are being accessed in inappropriate ways. Incomplete emulation can cause ``maintenance mode'' features to not work properly, and these features are often needed to force device interrupts. .SH Adapting devices which do buffered data path dma .PP These devices fall into two categories: those which are controllers to which devices are attached, and those which are just single devices. The interface for the former is very stylized and we recommend that you simply mimic one of the existing tape or disk drivers in adapting to the system. You will find that the existing tape and disk drivers are all \fBvery\fR similar; this is deliberate so that it isn't necessary to rewrite the whole driver for each device, since the available devices are typically very similar. .PP Other devices which do buffered data path DMA can be adapted to the new system in one of two ways: .IP * They can do their own data path allocation, calling the UNIBUS allocation routines from the ``top-half'' (non-interrupt) code, sleeping in the UNIBUS code when resources are not available. See for an example the code in the \fBvp.c\fR driver. .IP * They can set up a two-level structure like the tape and disk drivers do, and call the \fIubago\fR routine and use the \fBud_dgo\fR interface to start DMA operations. See for an example the code in the \fBup.c\fR driver. .PP Either way works acceptably well; the second (\fIubago\fR\|) interface is preferable because it does not force a context switch per i/o operation (to the routine driving the i/o from the ``top-half''). .PP If you have questions about converting drivers, feel free to call us and ask or to send us mail. We hope (eventually) to write a more complete paper for driver writers, but don't have the manpower to do this just now. the command which is to be given to the device before calling the routine \fIubago\fR with the devices \fBuba_device\fR structure. This information is then retrieved when the device go routine is called and stuffed in the device control status register to start the i/o operation. .BP um_ubinfo Information about the UNIBUS resources allocated to the device. This is normally only used in device driver go routine (doc/misc/ukchanges.4.0 444 3 12 104172 3053141706 7770 .de IR \fI\\$1\fR\\$2\\fR\\fR .. .TL Changes in the VAX system in the Fourth Berkeley Distribution, November, 1980 .AU Bill Joy .AB This document describes briefly the changes in the Berkeley system for the VAX between the distribution of January 1980 (known as 3BSD) and this, the fourth distribution, of November 1980. It attempts to be summarize, without going into great detail, the changes which have been made, and is intended to be used by someone who is familiar with the system to quickly re-acclimate themselves to the new system. .AE .SH .ce .LG Major changes .SM .sp .PP .IP \s+1\(bu\s0 4 There is a new format for \fB.o\fR files and also a new archive format. Old \fB.o\fR files must be discarded and the programs compiled from the source again. Old archives can be converted to the new format with .IR arcv (8), but if they contain old \fB.o\fR files they have to be completely recreated. New libraries for the loader \fBmust\fR have a table of contents, see .IR ranlib (1). .IP \s+1\(bu\s0 The C compiler and associated programs now take arbitrary length names, not chopping them off at length 7 or 8. Other changes in C are described under .B cc below. .IP \s+1\(bu\s0 There is a new version of the C shell, which supports ``job control'' and which uses a new tty driver. See .IR newcsh (1) and .IR newtty (1) for details. Programming considerations for the new system mechanisms involved are described in .IR jobs (3). Users of the older .B csh can use .B oldcsh until they have time to learn the new features. .IP \s+1\(bu\s0 The standard output (in the standard i/o library) is now line buffered by default when the output is a terminal. So that essentially all programs may work without change in the presence of this extra buffering, a partial output line is flushed whenever the library goes to the system to read from the standard input. .IP \s+1\(bu\s0 A number of performance enhancements have been made. Under normal timesharing loads, the system time has been decreased about 10%. The changes to the standard i/o library and improvements to the character handling routines to terminals have reduced greatly the cost of terminal i/o. The new version of the loader and the addition of table of contents to loader archives have speeded up loading of large programs by about a factor of 3. Improvements to the system data structures have decreased the time required for most system calls, increasing the amount of time available to user programs. .IP \s+1\(bu\s0 A bug has been fixed in the C optimizer which caused incorrect code to be generated for the random number generator. A consequence of this is that the .B rand function in this version of the system produces different sequences. Fallout from this is the fact that the secret-mail facility encryption scheme is subtly changed by this bug fix. All users should re-enroll in secretmail using .B enroll; messages sent before re-enrolling can be read using .B /usr/old/bin/xget. .bp .SH .LG .ce Section 1 .SM .sp .PP This is a brief summary of the changes which have been made in section 1 of the manual. In general, a number of system maintenance commands have been moved to section 8 of the manual as they are of little interest to the average user. In addition, to reduce the bulk of the manual, a number of very-closely related commands have been merged together onto a single manual page; thus \fBccat\fR, \fBcompact\fR and \fBuncompact\fR, which had three separate pages in the last edition of the manual, now have only one, and the line printer commands \fBlpr\fB, \fBlpq\fR and \fBlprm\fR have been placed on a single page. .de BP .IP \fB\\$1\\fR 11n .. .BP ac Now appears in section 8. .BP adb Now correctly initializes the maps when debugging the system. Control characters are now printed using the \fB^x\fR convention when the \fBC\fR output format is used. The increment for dot in the \fBp\fR format is now (correctly) 4. A previously undocumented command is \fB$?\fR, giving the output of \fB$r\fR, preceded by the process id and signal stopping the process. The bug which cause the running process to always stop at location 2 when first run has been fixed. .BP analyze Now appears in section 8. .BP ar Now creates a new archive format, in which the critical information is stored in ASCII, and thus portable between the VAX, PDP\-11, and other machines. See .IR old (8) for information on dealing with the old format. The program .IR arcv (8) converts old (binary format) archives to new format, in place. Beware, however: the format of \fB\.o\fR files has changed, so archives of object files must be recompiled (see \fBcc\fR below). .BP ar11 Is now in .B /usr/old/bin see .IR old (8). .BP arff Is now .IR arff (8). .BP as A new option \fB\-R\fR causes the assembler to make data segments read-only and shared; this replaces the cumbersome ``:rofix'' script used in the previous distribution. For very large assemblies there is an option \fB\-J\fR which causes the assembler to use four-byte jumps to avoid ``Branch too far diagnostics.'' Local labels have been added to the assembler defined by ``\fIn\fR:'' and referenced as ``\fIn\fRf'' or ``\fIn\fRb''; see the assembler manual in volume 2c for details. All tables in the assembler have been made extensible so that there should be no problems with assembling enormous files. The assembler has also been sped up by 25-40%. .BP at A number of security problems with the .I at command have been fixed. .BP biff Is a new command which can enable immediate notification when mail arrives; if you give the command ``biff y'' then the first few lines of each piece of mail sent to you is printed on your terminal. This is a (different flavor) replacement for the MAIL variable of .B sh or the mail variable of .B csh. .BP cat New options \fB\-n\fR numbers lines; \fB\-s\fR crushes out multiple blank lines, replacing \fBssp\fR; \fB\-v\fR prints control characters in the \fB^x\fR format. The commands .IR num (1) and .IR see (1) now just invoke .I cat. .BP cc A newer version of the C compiler supports more strongly typed structures. Field names need not appear in only one structure; rather the compiler insists on correct typing of pointers accessing structures in contexts where this would cause ambiguity, and producing a warning in other cases when the pointer does not have the correct type to access the field name. .IP A new type \fBvoid\fR may be used in a declaration or a cast to indicate that there is no result, or that a value is to be discarded. .IP The compiler has been changed to accept arbitrary-length names. For maximum portability it is better to limit names to 8 characters, 7 characters for externals, but this is no longer required. The longer names bring a new \fB\.o\fR format, incorporating a string table, and consequently a large number of programs are changed. The critical ones exist in ``old'' versions to ease conversion pains. .IP A number of bugs in the compiler have been fixed. To avoid remaining bugs in the code generator, the declaration of \fBregister char\fR and \fBregister short\fR variables are currently being compiled as though the word \fBregister\fR were not present. (This does \fBnot\fR affect pointer variables.) This blindness is allowed in the semantics of the language, and is not as bad as it might seem at first. It is sufficiently difficult to maintain the semantics of C in operating on such quantities that the code is often better when they are not placed in registers. This applies to \fBunsigned char\fR and \fBunsigned short\fR variables also. .BP cd The .I cd command, in .IR csh is now affected by a .I cdpath variable which works similarly to the command search .I path variable; see .IR csh (1). .BP checknr A new command which checks macro bracketing structure in .I nroff or .I troff input. .BP chgrp Has been moved to section 8. .BP chown Has been moved to section 8. .BP cifplot Produces raster plots from CIF for integrated circuit designers. .BP clri Has been moved to section 8. .BP colrm Has had several bugs fixed. .BP cp It, along with .I mv now take .B \-i flags which cause them to ask before overwriting an existing file; thus .B cp can be usefully \fIalias\fR\|ed to ``cp \fB\-i\fR'' when using .IR csh (1) to provide a safer environment. .BP csh Has had a number of changes; most importantly, the shell now supports ``job control'', allowing arbitration of a terminal between several active groups of processes. See .IR newcsh (1) for a short description of new .I csh features. Users of .I csh automatically use the new teletype driver summarized in .IR newtty (4). (An old version of .B csh, corresponding to that of the Third Distribution remains available as .B oldcsh to ease conversion to the new shell.) .BP ctags Now recognizes FORTRAN and Pascal routine definitions. .BP cu Is now functional on VADIC dial-out hardware with the necessary software to record outgoing calls; see .IR rv (4). .BP cxref Is now the .B \-x option to .B ctags. .BP date The internal date representation (maintained in the hardware) has been changed to be more compatible with the standard DEC system VMS, although VMS still poses problems (see \s-2BUGS\s0 in .IR date (1)). .BP dcheck Is now in section 8. .BP dd Options have been added to do blocking and unblocking of tapes without converting to and from EBCDIC. .BP ddate Is obsoleted by the new .B dump program, which lives in section 8. .BP df The output format is greatly improved. It is now also possible to say ``df directory'' to get \fIdf\fR to report the free space available on the file system containing \fIdirectory\fR. .BP diction Is a new program which finds bad or wordy diction. .BP diff Has new options to give lines of context and to create a merged conditional file with ``#ifdef'' controls in it. The command .I diffdir has been subsumed into .I diff and an option has been added to perform recursive directory differences. .BP diffdir Is now part of .I diff. .BP dmesg Is now in section 8. .BP dump Is now in section 8. .BP dumpdir Is now in section 8. .BP echo The echo builtin to .B csh now is the same as the standard version 7 echo. The special character sequences ``\ec'' and ``\en'' no longer have their special meaning; instead the .B \-n option is accepted. .BP ef\&l Is a new FORTRAN preprocessor, providing C-like features. .BP error Is a new program which consumes error message output from language and other processors, analyzes them and (optionally) places appropriate diagnostics back into source files near the point of error. .BP ex A number of bug fixes and a few new features are available. See the incremental change report in volume 2c or read the file .I /usr/news/ex. .BP expand Now has a companion .I unexpand command, reversing its effect. .BP f\&lcopy Is now in section 8. .BP from Now takes a .B \-s option, printing only headers from the sender who is the next argument. .BP gets Is obsolete; use ``$<'' of .IR csh (1) or .I read of .IR sh (1) instead. .BP grep The .B \-i option now works with .I fgrep; several subtle bugs have been fixed in its algorithm. .BP iostat Now has a single output format which includes character i/o rates, seeks and transfers per second on each disk. .BP kill Is now built-in to .IR csh and take job names ``%...'' as arguments. This eliminates much of the need to know process id's when using .I kill. It also takes symbolic as well as numeric signal names; do ``kill \-l'' (lower case letter l as in lark) to see a list. .BP ld Has been speeded up substantially; several new options have been added providing incremental loading (\fB\-A\fR), primitive load maps (\fB\-M\fR) and symbol def/use tracing (\fB\-y\fR). The loader now supports archives with table of contents, and expects all archives it encounters to have them (or it complains); see .IR ranlib (1). .BP lisp The lisp interpreter has begun to support new ``string'' and ``hunk'' data types. A user must now type vertical bars to delimit atoms with embedded white space, as double quotes (") now delimit strings. The interpreter has benefitted from in-line expansion of frequently called small routines, and will interpret list structure 20% more quickly than before. A perusal of the index to the lisp manual in Volume 2c will show more new functions which Franz has in common with \s-2MACLISP\s0. .BP liszt The quality of the code produced by .I liszt is substantially better than the previous version; .I liszt also now provides macros for UCI lisp compatibility as well as Maclisp compatibility, and a facility for constructing a cross-reference with .IR lxref (1). .BP ln Now subsumes .I lnall when given multiple arguments. .BP ls Has new options \fB\-R\fR for a directory-recursive version, \fB\-F\fR to highlight directories and executable files, and now indicates .IR mpx (2) files in long format outputs with first output character \fBm\fR. .BP lxref Is a new lisp cross referencing program. .BP mail All mail is now forwarded through the facilities of .IR delivermail (8) using the mail aliases data bases in the file .I /usr/lib/aliases whose format is described in .IR aliases (5). Gateways to UUCP, ARPA and Berknet machines are provided, with normal naming conventions, i.e.: ``name@site'' for the ARPANET, ``machine!name'' for UUCP, and ``machine:name'' for the Berknet. Personal distribution lists created and placed in the file .I \&.mailrc are now expanded in sent mail so that the recipient can reply to members of personal aliases. Systemwide aliases contained in the ``aliases'' file are applied to .I all incoming mail; this allows correct functioning when reply is made to a mailing list, which was not expanded to its constituents when the mail was first sent. .BP make Now understands about Pascal files, running .IR pc using the options PCFLAGS. A number of limitations have been removed to allow very large programs to be controlled. .BP makewhatis .br Has been replaced by .IR catman (8). .BP man Now interfaces with a preformatted version of the manual; this allows the manual to be presented much more quickly. The preformatted manual is maintained automatically; when pages are changed and then requested they are reformatted. The .IR catman (8) command can be used to reformat all manual pages whose preformatted sections are out of date. .BP mkfs Is now in section 8. .BP mknod Is now in section 8. .BP more Has been improved, providing more commands and has also been changed to be more (sic) similar to .IR ex (1). A new interface .I page is like .I more, but clears the screen before presenting each pageful. .BP mount Is now in section 8. .BP msgs Now provides options for saving messages in files and responding to messages. There is also an option (\fB\-p\fR) to arrange that long messages be piped through .IR more (1). .BP ncheck Is now in section 8. .BP newaliases Rebuilds the random access version of the mail forwarding database. After you edit the file /usr/lib/aliases which contains the forwarding information, you must run .B newaliases. .BP nm No longer prints symbols destined for .IR sdb (1) by default. Instead, when the .B \-a option is given, they are printed symbolically (rather than in octal as before.) .BP pc Is a new Pascal compiler, which allows separate compilation and mixing of Pascal code with routines written in C and FORTRAN. It is possible to use .IR sdb (1) with Pascal routines, and all standard language features, including procedure and function parameters are implemented. .BP pi Has had some options changed so that they are similar to \fIpc\fR\|'s options (since the latter is constrained by the demands of compatibility with .IR cc (1) and .IR ld (1)). .BP pr Now has an option \fB\-f\fR to use form-feeds in the output rather than multiple blank lines to eject pages. This can be used for greater top-of-form alignment reliability on unreliable printers or to reduce bulk of the output. .BP prof Now suppresses routines which were never called and which accumulated no time. An option to sort the output by number of calls has been provided. .I Prof can also combine the statistics from a number of saved monitor data files in a single output report, producing a new summary data file. .BP ps The formats for .B ps have been improved to include more information about job state in all output formats, and cpu and memory consumption by jobs (in the \fBu\fR and \fBv\fR output formats.) .BP pwd Is superseded for .IR csh (1) users by .I dirs, which is built-in and significantly faster. .BP ranlib Is used to create loader table-of-contents for loader archives. The loader insists that such table-of-contents exist or it complains, as loading is very slow without these indices. .BP renice Is now in section 8. .BP restor Is now in section 8. .BP sdb Now knows about Pascal as well as C and FORTRAN 77. .BP spice Is no longer part of this distribution, and must be obtained separately. .BP stty Now has options to control the features of the new tty driver, summarized in .IR newtty (4) and fully described in .IR tty (4). In particular, it is often desirable, when using the new driver with .IR csh (1) to place the command ``stty crt'' in the .I \&.login file to cause control characters to echo legibly and intelligent erasing of characters from the screen to take place except at very low speed. .BP style Is a new command, which analzes the style in which a paper is written. .BP sync Is now in section 8. .BP tail Now has a .B \-f option which follows a file as it grows, replacing .B tra, and a .B \-r option, which prints out the last part of a file backwards, line by line. .BP tar Now normally saves and (optionally) restores modes of directories. It also uses the raw tape drive by default, so the file option is not normally needed. .BP tp Has been fixed to work with the tape drive as it should. .BP tra Has been deleted; use ``tail \-f'' instead. .BP tset Has a more general scheme for mapping non-hardwired terminals to types. The command used in startup files to set the terminal type can now be simpler; see .IR tset (1) for details. .BP ul Subsumes the old ``iul'' command as the option \fB\-i\fR. .BP units Currency tables have been updated. .BP uuencode Along with .I uudecode provide the ability to mail binary files through .I uucp or other mail facilities. .BP vmstat The format has been changed to include statistics on the rate of system calls, context switches and device interrupts. The format also includes information about page-cache hits (pages of programs which recently exited which were found lying in the free list.) See .IR vmstat (8) for more details. .BP vpac Is now in section 8. .BP wc Now will estimate transmission times over communications networks. .BP yes A new command, which is excessively obsequious. .SH .LG .ce Section 2. .SM .sp .PP The important changes to section 2 define the mechanisms needed to support the job control facilities of .IR csh (2) defining new system calls .B getpgrp, .B killpg, .B setpgrp and providing a version of the .B signal system call interface with clean semantics; this is described in .IR sigsys (2). For a general introduction to the new job control facilities from a programming standpoint see .IR jobs (3). .PP The system calls in section 2 have been identified as to origin: those in section 2V are peculiar to the VAX Virtual Memory version of the system. Some of these (e.g. .B vread and .B vwrite which are likely to change soon are so marked.) Calls resulting from the job control facilities are in subsection 2J. .BP getpgrp Is a new system call, which returns the process group of a specified process. .BP ioctl There is a new .I ioctl call FIONREAD which returns the number of characters immediately available from any readable file descriptor, most usefully terminals. .BP killpg Kills all processes in a process group .BP reboot Is used to halt the processor or initiate automatic reboots. .BP setpgrp Changes the process group of a specified process. .BP sigsys There are more signals, needed by the new job control and limit facilities. This is the new signal interface, which can be setup to handle signals reliably, blocking them off when they occur so that they can't happen again before they can be reset and also allowing them to be blocked, but not lost if they occur (protecting critical sections.) .BP vadvise Allows processes with very abnormal paging behavior to advise the system so that it can have a better chance of dealing with their virtual memory needs. .BP vhangup Is used to simulate hangups on hard-wired ports and to prevent other users processes from scribbling on a terminal after they log off. .BP vlimit Is used to provide the resource limiting .I limit facility of .IR csh (1) which allows the amount of CPU time or memory used by any process to be controlled, as well as the maximum size of a file created, maximum size of a core file created, etc. .BP vswapon Is used to inform the system that it should use the interleaved portions of the paging area, since at boot it normally uses only that portion of the paging area adjacent to the root file system. .BP vtimes Provides additional virtual memory information as well as the traditional information provided by .B times. .BP wait3 Provides options which allow return of .B vtimes like information about the virtual memory utilization of terminated processes as well as allowing one to determine if any children have changed state without blocking if none have. .SH .LG .ce Section 3 .SM .sp .PP The major change to the standardly available library routines is in the standard i/o library handling of the standard output. The standard output is now line buffered by default when it is directed to a terminal. In order that old programs which do terminal i/o continue to work (in almost every case) without change, the standard i/o library flushes a partial line in the standard output buffer whenever a read is made from the standard input. .BP curses Is a new library of routines to do terminal independent cursor motions. This is a higher level set of routines based on the low level .IR termcap (3). .BP dbm Has been changed to use 1024 byte blocks internally. If you have old data files and recompile a program which uses .B dbm on them, you must recreate the files in the new format. .BP getfsent Is a new package of routines for locating entries in the file system information file, .B /etc/fstab. .BP jobs Is a descriptive page on use of the new job control facilities. .BP malloc Hasn't been changed yet (unfortunately), but we have discovered that it has extremely poor behavior if used to allocate a large number of blocks in a large virtual address space, as it tends to page fault on a large number of pages whenever you allocate more storage when the free list is nearly empty. Very large applications should write their own free storage management routines based on .IR sbrk (2) until a new version of .B malloc is ready. .BP nlist The namelist has been changed to embed a string table. The definition of the namelist in .B now includes a \fBunion\fR construction which the C compiler will not let you initialize. Thus if you wish to use .B nlist you should use .B instead of .B as it doesn't include a \fBunion\fR construction and initializations of \fBstruct nlist\fR objects are thus possible. .BP rand Generates different sequences, due to a bug fix in the C optimizer (i.e. the old routine was flaked out due to the bug.) .BP regex Is a new library routine which allows compilation and execution of .BR ed -like regular expressions. .BP stdio Has been changed to have line buffered standard output to terminals by default (as described above). .BP sigset Is the user-level interface to the new signal facilities, providing reliable and convenient handling of signals. .BP string The routines \fBstrcatn\fR \fBstrcpyn\fR and \fBstrcmpn\fR are now decreed to be spelled \fBstrncat\fR, \fBstrncpy\fR and \fBstrncmp\fR in the official version (to be compatible, e.g., with PDP-11 UNIX), but both versions still exist (temporarily). .BP termcap Is the new name for the previously misnamed \fBtermlib\fR library. .SH .LG .ce Section 4 .SM .sp .PP The system now supports additional i/o disciplines and devices: .BP bk A ``line discipline'' which allows efficient, high-speed, input for uploading of programs and networking over asynchronous communications lines. .BP dh Abel DMAX-11 dh emulators. .BP hp Includes RM-05 support (including the SI MASSBUS disks). .BP lp A driver for a standard lineprinter interface. .BP rv Racal/vadic call units (via user-software simulation of a dn-11). .BP tm Support for UNIBUS TM/11 tape drives (e.g. Kennedy transport on a Emulex controller.) .BP tty Includes a new tty driver which is standard for users of .IR csh (1) providing additional functionality. .BP up A driver for a EMULEX SC-11 or SC-21 UNIBUS disk controller with storage module (e.g. Ampex 9300) disk drives. .BP va A varian raster plotter. .SH .LG .ce Section 5 .SM .sp .PP The changes impacting most users are the new archive and object file formats. The new object file format requires recompilation of all \fB\&.o\fR files, as the new format includes a string table for names while the old table had only fixed space for 8 character names. The new archive format is portable, and can be easily converted to using .IR arcv (8). .BP a.out Now includes a string table. New macros are provided for dealing with executable files, and the names of the headers and the include files have been changed. You should read this section if you have programs which work with the bits in these files. .BP acct The system now maintains all the information fields in this file. .BP aliases This file gives forwarding information for mail. The .B delivermail utility, which is invoked by the mail handlers, uses this information to forward mail and to implement distribution groups. The program .B newaliases must be run whenever this file is edited, since the .B delivermail program actually uses a binary version of this file. .BP ar Now uses a portable format. Old formats may be converted using .IR arcv (8), although converting old loader archives is pointless, since the \fB.o\fR files must be regenerated anyways. .BP core The maximum size of a core file can now be limited with .I limit of .IR csh (1) or by calling the system call .B vlimit. .BP environ Has acquired a USER variable with the login name of the user. .BP fstab Is a new data structure, kept in the file .B /etc/fstab; it greatly simplifies the system startup script .B /etc/rc, the interface of the dump program, and is a central figure in the automatic reboot procedure. It is possible to reconfigure the disk drives simply by changing this data base. No file system dependent commands need appear in .B /etc/rc. .BP stab Describes the symbol table entries for the symbolic debugger which appear in \fBa.out\fR files. .BP termcap Has been changed to describe even more terminals and functions. .BP ttytype The standard naming for terminals in this file is now to give long names; thus dialups should be described as ``dialup'', not as ``sd'' like before. .BP vfont There are now rotated versions of all the fonts for use on output devices which run 11 by 8.5 inch (sideways) paper. The Hershey fonts have been extensively edited to fix problems and fill in missing and mangled characters. .SH .LG .ce Section 6 .SM .sp .PP There are a number of new games, including the popular ZORK game as well as more mindless and more popular games, such as \fBsnake\fR, and human-humiliating games such as \fBboggle\fR. .BP aardvark Is one of several dungeon-exploration games. .BP boggle Is an implementation of the Parker-Brothers game, in which you and the computer look for words and you are humiliated by the computer. .BP chess Is the PDP-11 chess program running in compatibility mode. .BP cribbage Is a respectably good cribbage player. .BP fish Plays \*(lqGo Fish\*(rq. .BP fortune Has been refreshed with new and interesting quotations and fancy-pants options. .BP mille Is an implementation of the French card game, Mille-Bourne. .BP monop Is the game of monopoly. .BP mpu Is another exploration game. .BP snake Is a mindless game in which the computer chases you around the screen and, usually, ends up eating you. .BP zork Is the classic successor to adventure for die-hard explorers. .br .ne 10 .SH .LG .ce Section 7 .SM .sp .BP hier Has been updated to reflect changes in this distribution. .SH .LG .ce Section 8 .SM .NL .sp .PP There is a major organizational change in section 8: the maintenance commands have been moved here from what was section 1m (which no longer exists) and have also (almost all) been moved into the directory .B /etc. .PP The procedures for system reboot have been substantially changed. The system now has provisions for automatic reboot and file system repair after a crash. The system has been changed so that the disks are kept more consistent, so that the repair program can easily tell whether the inconsistencies it finds are simple and reasonable to fix. If it finds unexpected inconsistencies, then the automatic reboot will fail and the new .I fsck interactive repair program can be run. .BP adduser There is now a shell procedure .B vipw which locks the password file for editing, so that you can't get messed up by people changing their password while you are adding users. .BP arcv Converts to the new archive format (as discussed previously.) .BP bproc Is defunct; see .B reboot which replaces it. .BP catman Is a new command, which creates the preformatted version of the on-line manual from the nroff source for the manual pages. It also creates the data base for .IR whatis (1) .B /usr/lib/whatis, replacing .B makewhatis. .BP crash At the point of a system crash, the system now will automatically reboot itself if the auto-reboot switch on the machine is set, print the registers and the top few locations of the stack, and will then normally ``preen'' the file systems and come up multiple user again. The system does not (yet) automatically dump core to disk when a crash occurs, so the procedures described in .B crash are still used to take a crash dump; in order to get one, you have to be running with auto-reboot disabled when the crash occurs. Note that you must now use \fBdd\fR to copy crash tapes, as the tapes are blocked ``bs=20b''. .BP cron Now runs the executed commands as .B root; before it ran them as .B daemon which kept a number of reasonable .B crontab entries from working properly. .BP dcheck Is obsoleted, in all normal usage, by .IR fsck (8). .BP delivermail .br Is a new daemon which acts as a postman and routes mail destined for foreign networks. It also interprets distribution, forwarding and alias lists from the file .B /usr/lib/aliases, which replaces the function only partially performed previously in .B /usr/lib/Mail.rc. .BP dump The dump program now is much more robust. It restarts after bad tapes are encountered, and will keep a selected group of operators informed about what it is doing. A .B dumpdates file which is kept in ASCII replaces the old binary format .B ddates file, making it easy to edit. .B Dump uses the new .B fstab file system table which records the desired frequency of dumps, and a new option \fBw\fR will tell the operators what needs to be dumped. .BP flcopy Has a new option \fB\-h\fR to start halfway through, writing a disk from an existing .B floppy file without reading the disk. .BP fsck Is a new, intelligent, interactive file system check program. It is normally run automatically at reboot with the option \fB\-p\fR to preen all the file systems and fix normal minor incomplete operations. If any unexpected problems arise, the automatic reboot will fail and .B fsck should be run manually. There is a document explaining the use of .B fsck and all the errors which can occur in standard UNIX systems. Most errors are prohibited from happening in this version of the system unless there is hardware or software failure; .B fsck was designed with adversity in mind to deal with these exceptional cases and is very easy to use to fix up addled file systems. .BP getty Is the new name for the old \fBgetty.vm\fR. .BP halt Halts the processor cleanly when no reboot is desired, regardless of the setting of the auto-reboot switch on the machine. .BP icheck Is largely replaced by .B fsck. .BP init Now understands how to initiate an automatic reboot. When passed appropriate information as parameter at boot time, it will immediately run .B /etc/rc with parameter .B autoboot, causing it to run a disk check. If .B /etc/rc exits with a non-zero exit status, the reboot we be considered a failure, and a single user shell is given to the console as before. The form of .B /etc/rc is such that interrupting the automatic reboot also yields a single-user shell on the console. .B Init has also been fixed so that ``kill 1'' attempting to bring the system down single user will not hang irretrievably if some processes refuse to die because of hardware or software malfunction. Instead, .B init gives a single user shell and a warning that something is amiss. .BP mkfs It is critical that all newly created file systems have .B lost+found directories as created by... .BP mklost+found .br Which creates empty directories into which .B fsck places detached files which it reconnects. .BP mount Now takes an option \fB\-a\fR to mount all normally mounted file systems as specified in .B /etc/fstab. .BP ncheck Is obsoleted in normal usage by .B fsck. .BP old Is a front for a number of old commands dealing with old formats for \fB.o\fR files and archives. These commands are kept in .B /usr/old and its subdirectories and can be used to keep your sanity until you have time to convert your programs to the new formats. .BP reboot Describes the new reboot procedures, based largely on the automatic reboot facility. Also describes the cold-start and emergency-start procedures (which came from the old .B bproc manual page.) .BP sticky The system has been changed so that text pages of processes which have exited are retained in the free page pool in core (at least for a while), so that they will not have to be read from the disk again if they are needed quickly. This tends to make heavily used commands behave much as .B sticky was intended to make them behave on swap based systems. .BP swapon The system supports paging interleaved across disks and controllers, but bootstraps running only on one disk. This command makes the additional pieces of the paging area available. .BP umount Now takes a \fB\-a\fR option, to attempt to unmount all file systems mentioned in .B fstab. .BP vipw Is a new script which lock the password file while editing it. If the password file is being changed (e.g. by the .IR passwd (1) command), then .B vipw complains, and avoid the race condition. y transport on a Emulex controller.) .BP tty Includes a new tty driver which is standard for users of .IR csh (1) providing additional functionality. .BP up A driver for a EMULEX SC-11 or SC-21 UNIBUS disk controller with storage module (e.g. Ampex 9300) disk drives. .BP va A varian raster plotter. .SH .LG .ce Section 5 .SM .sp .PP The changes impacting most users are the new archive anddoc/ps1/ 755 3 12 0 4017005717 5217 doc/ps1/02.f77/ 755 3 12 0 3655010617 6044 doc/ps1/02.f77/f77.ms 444 3 12 215104 3655010624 7134 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)f77.ms 5.4 (Berkeley) 4/28/86 .\" .rm CM .hw name-list .de XX .ne 3 .sp .3 .ti -0.8i .ta 0.8i \\$1 \c .. .\" .\" Nh macro - same as NH but also saves heading for table of contents .\" Nh usage: Nh level string, e.g.: .Nh 2 "Short Integers" .de Nh .NH \\$1 \\$2 .XS .if '2'\\$1' .ti .25i .if '3'\\$1' .ti .5i \\*(SN \\$2 .XE .IP .. .EQ delim $$ .EN .ND "" .\".RP .TL A Portable Fortran 77 Compiler .AU S. I. Feldman .AU P. J. Weinberger .AI Bell Laboratories Murray Hill, New Jersey 07974 .AU J. Berkman .AI University of California Berkeley, CA 94720 .AB The Fortran language has been revised. The new language, known as\p Fortran 77, became an official American National Standard on April 3, 1978. We report here on a compiler and run-time system for the new extended language. It is believed to be the first complete Fortran 77 system to be implemented. This compiler is designed to be portable, to be correct and complete, and to generate code compatible with calling sequences produced by C compilers. In particular, this Fortran is quite usable on .UX systems. In this paper, we describe the language compiled, interfaces between procedures, and file formats assumed by the \s-1I/O\s0 system. Appendix A describes the Fortran 77 language extensions. .PP This is a standard Bell Laboratories document reproduced with minor modifications to the text. The Bell Laboratory's appendix on ``Differences Between Fortran 66 and Fortran 77'' has been changed to Appendix A, and a local appendix has been added. Appendix B contains a list of Fortran 77 references (some from the original Bell document and some added at Berkeley). .sp 2 .LP Revised September, 1985 .AE .LP .CS 9 10 19 0 0 8 .\" the Table of Contents uses pages 2 and 3, .\" hence the document begins at page 4. .pn 4 .EH 'PS1:2-%''A Portable Fortran 77 Compiler' .OH 'A Portable Fortran 77 Compiler''PS1:2-%' .bp .NH 0 INTRODUCTION .XS \*(SN Introduction .XE .LP The Fortran language has been revised. The new language, known as Fortran 77, became an official American National Standard [1] on April 3, 1978. Fortran 77 supplants 1966 Standard Fortran [2]. We report here on a compiler and run-time system for the new extended language. The compiler and computation library were written by S.I.F., the \s-1I/O\s0 system by P.J.W. We believe ours to be the first complete Fortran 77 system to be implemented. This compiler is designed to be portable to a number of different machines, to be correct and complete, and to generate code compatible with calling sequences produced by compilers for the C language [3]. In particular, it is in use on \s-1UNIX\s0 systems. Two families of C compilers are in use at Bell Laboratories, those based on D. M. Ritchie's \s-1PDP-11\s0 compiler [4] and those based on S. C. Johnson's portable C compiler [5]. This Fortran compiler can drive the second passes of either family. In this paper, we describe the language compiled, interfaces between procedures, and file formats assumed by the \s-1I/O\s0 system. We will describe implementation details in companion papers. .Nh 2 Usage At present, versions of the compiler run on and compile for the \s-1PDP-11\s0, the \s-1VAX-11/780\s0, and the Interdata 8/32 \s-1UNIX\s0 systems. The command to run the compiler is .DS f\|77 \fIflags file . . .\fR .DE .B f\|77 is a general-purpose command for compiling and loading Fortran and Fortran-related files. \s-1EFL\s0 [6] and Ratfor [7] source files will be preprocessed before being presented to the Fortran compiler. C and assembler source files will be compiled by the appropriate programs. Object files will be loaded. (The .B f\|77 and .B cc commands cause slightly different loading sequences to be generated, since Fortran programs need a few extra libraries and a different startup routine than do C programs.) The following file name suffixes are understood: .DS \f3.f\f1 Fortran source file \f3.F\f1 Fortran source file \f3.e\f1 \s-1EFL\s0 source file \f3.r\f1 Ratfor source file \f3.c\f1 C source file \f3.s\f1 Assembler source file \f3.o\f1 Object file .DE .IP Arguments whose names end with \f3.f\f1 are taken to be Fortran 77 source programs; they are compiled, and each object program is left on the file in the current directory whose name is that of the source with \f3.o\f1 substituted for \f3.f\f1. .IP Arguments whose names end with \f3.F\f1 are also taken to be Fortran 77 source programs; these are first processed by the C preprocessor before being compiled by \fBf77\fP. .IP Arguments whose names end with \f3.r\f1 or \f3.e\f1 are taken to be Ratfor or \s-1EFL\s0 source programs, respectively; these are first transformed by the appropriate preprocessor, then compiled by \fBf77\fP. .IP In the same way, arguments whose names end with \f3.c\f1 or \f3.s\f1 are taken to be C or assembly source programs and are compiled or assembled, producing a \f3.o\f1 file. .IP The following flags are understood: .in +0.8i .XX \(mi\f3c\f1 Compile but do not load. Output for .B x.f , .B x.F , .B x.e , .B x.r , .B x.c , or .B x.s is put on file .B x.o . .XX \(mi\f3d\f1 Used in debugging the compiler. .XX \(mi\f3g\f1 Have the compiler produce additional symbol table information for \fIdbx(1)\fR. This flag is incompatible with \(mi\f3O\f1. See section 1.4 for more details. .XX \(mi\f3i2\f1 On machines which support short integers, make the default integer constants and variables short (see section 2.14). (\fB\(mii4\fR is the standard value of this option). All logical quantities will be short. .XX \(mi\f3m\f1 Apply the M4 macro preprocessor to each \s-1EFL\s0 or Ratfor source file before using the appropriate compiler. .XX "\(mi\f3o\f1 \fIfile\fR" Put executable module on file .I file . (Default is \fBa.out\fR). .ne 6 .XX \(mi\f3onetrip\f1\ or\ \(mi\f31\f1 .br Compile code that performs every .B do loop at least once (see section 2.12). .XX \(mi\f3p\f1 Generate code to produce usage profiles. .XX \(mi\f3pg\f1 Generate code in the manner of \fB\(mip\fR, but invoke a run-time recording mechanism that keeps more extensive statistics. See .I gprof (1). .XX \(mi\f3q\f1 Suppress printing of file names and program unit names during compilation. .XX \(mi\f3r8\f1 Treat all floating point variables, constants, functions and intrinsics as double precision and all complex quantities as double complex. See section 2.17. .XX \(mi\f3u\f1 Make the default type of a variable .B undefined (see section 2.3). .XX \(mi\f3v\f1 Print the version number of the compiler and the name of each pass. .XX \(mi\f3w\f1 Suppress all warning messages. .XX \(mi\f3w66\f1 Suppress warnings about Fortran 66 features used. .XX \(mi\f3C\f1 Compile code that checks that subscripts are within array bounds. For multi-dimensional arrays, only the equivalent linear subscript is checked. .XX \(mi\fBD\fP\fIname=def\fR .XX \(mi\fBD\fP\fIname\fR Define the .I name to the C preprocessor, as if by `#define'. If no definition is given, the name is defined as "1". (\fB.F\fR files only). .XX \(mi\f3E\f1\fIstr\fR Use the string \fIstr\fR as an \s-1EFL\s0 option in processing \f3.e\f1 files. .XX \(mi\f3F\f1 Ratfor, \s-1EFL\s0, and \f3.F\f1 source files are pre-processed into \f3.f\f1 files, and those \f3.f\f1 files are left on the disk without being compiled. .XX \(mi\fBI\fP\fIdir\fR `#include' files whose names do not begin with `/' are always sought first in the directory of the \fIfile\fR argument, then in directories named in \fB\(miI\fR options, then in directories on a standard list. (\fB.F\fR files only). .XX \(mi\f3N\f1[\fBqxscn\fR]\fInnn\f1 .br Make static tables in the compiler bigger. The compiler will complain if it overflows its tables and suggest you apply one or more of these flags. These flags have the following meanings: .RS .IP \fBq\fP Maximum number of equivalenced variables. Default is 150. .IP \fBx\fP Maximum number of external names (common block names, subroutine and function names). Default is 200. .IP \fBs\fP Maximum number of statement numbers. Default is 401. .IP \fBc\fP Maximum depth of nesting for control statements (e.g. DO loops). Default is 20. .IP \fBn\fP Maximum number of identifiers. Default is 1009. .RE .XX \(mi\f3O\f1 Invoke the object code optimizer. Incompatible with \(mi\f3g\f1. .XX \(mi\f3R\f1\fIstr\fR Use the string \fIstr\fR as a Ratfor option in processing \f3.r\f1 files. .XX \(mi\f3U\f1 Do not convert upper case letters to lower case. The default is to convert Fortran programs to lower case except within character string constants. .XX \(mi\f3S\f1 Generate assembler output for each source file, but do not assemble it. Assembler output for a source file .B x.f , .B x.F , .B x.e , .B x.r , or .B x.c is put on file .B x.s . .in -0.8i .IP Other flags, all library names (arguments beginning \fB\(mil\fR), and any names not ending with one of the understood suffixes are passed to the loader. .Nh 2 Documentation\ Conventions In running text, we write Fortran keywords and other literal strings in boldface lower case. Examples will be presented in lightface lower case. Names representing a class of values will be printed in italics. .Nh 2 Implementation\ Strategy The compiler and library are written entirely in C. The compiler generates C compiler intermediate code. Since there are C compilers running on a variety of machines, relatively small changes will make this Fortran compiler generate code for any of them. Furthermore, this approach guarantees that the resulting programs are compatible with C usage. The runtime computational library is complete. The runtime \s-1I/O\s0 library makes use of D. M. Ritchie's Standard C \s-1I/O\s0 package [8] for transferring data. With the few exceptions described below, only documented calls are used, so it should be relatively easy to modify to run on other operating systems. .Nh 2 Debugging\ Aids A memory image is sometimes written to a file \fBcore\fP in the current directory upon abnormal termination for errors caught by the \fBf77\fP libraries, user calls to \fBabort\fP, and certain signals (see \fBsigvec\fP\|(2) in the \fI\s-1UNIX\s0 Programmer's Manual\fP). \fBCore\fP is normally created only if the \fB\(mig\fP flag was specified to \fBf77\fP during loading.\(dg .FS \(dgSpecify \fB\(mig\fP when loading with \fBcc\fP or \fBf77\fP; specify \fB\(milg\fP as a library when using \fBld\fP directly. .FE The source-level debugger .I dbx (1) may be used with the executable and the .B core file to examine the image and determine what went wrong. .IP In the event that it is necessary to override this default behavior, the user may set the environment variable \fBf77_dump_flag\fP. If \fBf77_dump_flag\fP is set to a value beginning with \fBn\fP, a \fBcore\fP file is not produced regardless of whether \fB\(mig\fP was specified at compile time, and if the value begins with \fBy\fP, dumps are produced even if \fB\(mig\fP was not specified. .NH 1 LANGUAGE EXTENSIONS .XS \*(SN Language Extensions .XE .LP Fortran 77 includes almost all of Fortran 66 as a subset. We describe the differences briefly in Appendix A. The most important additions are a character string data type, file-oriented input/output statements, and random access \s-1I/O\s0. Also, the language has been cleaned up considerably. .LP In addition to implementing the language specified in the new Standard, our compiler implements a few extensions described in this section. Most are useful additions to the language. The remainder are extensions to make it easier to communicate with C procedures or to permit compilation of old (1966 Standard) programs. .Nh 2 Double\ Complex\ Data\ Type The new type .B "double complex" is defined. Each datum is represented by a pair of double precision real values. The statements .DS z1 = ( 0.1d0, 0.2d0 ) z2 = dcmplx( dx, dy ) .DE assign double complex values to \fBz1\fP and \fBz2\fP. The double precision values which constitute the double complex value may be isolated by using \fBdreal\fP or \fBdble\fP for the real part and \fBimag\fP or \fBdimag\fP for the imaginary part. To compute the double complex conjugate of a double complex value, use \fBconjg\fP or \fBdconjg\fP. The other \fBdouble complex\fP intrinsic functions may be accessed using their generic names or specific names. The generic names are: \fBabs\fP, \fBsqrt\fP, \fBexp\fP, \fBlog\fP, \fBsin\fP, and \fBcos\fP. The specific names are the same as the generic names preceded by either \fBcd\fP or \fBz\fP, e.g. you may code \fBsqrt\fP, \fBzsqrt\fP or \fBcdsqrt\fP to compute the square root of a double complex value. .Nh 2 Internal\ Files The Fortran 77 standard introduces ``internal files'' (memory arrays), but restricts their use to formatted sequential \s-1I/O\s0 statements. Our \s-1I/O\s0 system also permits internal files to be used in formatted direct reads and writes and list directed sequential read and writes. .Nh 2 Implicit\ Undefined\ Statement Fortran 66 has a fixed rule that the type of a variable that does not appear in a type statement is .B integer if its first letter is \fBi, j, k, l, m\fR or \fBn\fR, and .B real otherwise. Fortran 77 has an .B implicit statement for overriding this rule. As an aid to good programming practice, we permit an additional type, .B undefined. The statement .DS implicit undefined(a-z) .DE turns off the automatic data typing mechanism, and the compiler will issue a diagnostic for each variable that is used but does not appear in a type statement. Specifying the .B \(miu compiler flag is equivalent to beginning each procedure with this statement. .Nh 2 Recursion Procedures may call themselves, directly or through a chain of other procedures. Since Fortran variables are by default .B static , it is often necessary to use the .B automatic storage extension to prevent unexpected results from recursive functions. .Nh 2 Automatic\ Storage Two new keywords are recognized, .B static and .B automatic. These keywords may appear as ``types'' in type statements and in .B implicit statements. Local variables are static by default; there is only one instance of the variable. For variables declared .B automatic, there is a separate instance of the variable for each invocation of the procedure. Automatic variables may not appear in .B equivalence, .B data, or .B save statements. Neither type of variable is guaranteed to retain its value between calls to a subprogram (see the \fBsave\fP statement in Appendix A). .Nh 2 Source\ Input\ Format The Standard expects input to the compiler to be in 72-column format: except in comment lines, the first five characters are the statement number, the next is the continuation character, and the next 66 are the body of the line. (If there are fewer than 72 characters on a line, the compiler pads it with blanks; characters after the seventy-second are ignored.) .IP In order to make it easier to type Fortran programs, our compiler also accepts input in variable length lines. An ampersand ``&'' in the first position of a line indicates a continuation line; the remaining characters form the body of the line. A tab character in one of the first six positions of a line signals the end of the statement number and continuation part of the line; the remaining characters form the body of the line. A tab elsewhere on the line is treated as another kind of blank by the compiler. .IP In the Standard, there are only 26 letters \(em Fortran is a one-case language. Consistent with ordinary \s-1UNIX\s0 system usage, our compiler expects lower case input. By default, the compiler converts all upper case characters to lower case except those inside character constants. However, if the .B \(miU compiler flag is specified, upper case letters are not transformed. In this mode, it is possible to specify external names with upper case letters in them, and to have distinct variables differing only in case. If \(mi\f3U\f1 is specified, keywords will only be recognized in lower case. .Nh 2 Include\ Statement The statement .DS include \(fmstuff\|\(fm .DE is replaced by the contents of the file .B stuff ; .B include statements may be nested to a reasonable depth, currently ten. .Nh 2 Binary\ Initialization\ Constants A variable may be initialized in a .B data statement by a binary constant, denoted by a letter followed by a quoted string. If the letter is \fBb\fR, the string is binary, and only zeroes and ones are permitted. If the letter is \fBo\fR, the string is octal, with digits \fB0\(mi7\fR. If the letter is \fBz\fR or \fBx\fR, the string is hexadecimal, with digits \fB0\(mi9\fR, \fBa\(mif\fR. Thus, the statements .DS integer a(3) data a / b\(fm1010\|\(fm, o\(fm12\|\(fm, z\(fma\|\(fm / .DE initialize all three elements of .B a to ten. .Nh 2 Character\ Strings For compatibility with C usage, the following backslash escapes are recognized: .DS \f3\en\f1 newline \f3\et\f1 tab \f3\eb\f1 backspace \f3\ef\f1 form feed \f3\e0\f1 null \f3\e\(fm\f1 apostrophe (does not terminate a string) \f3\e"\f1 quotation mark (does not terminate a string) \f3\e\e\f1 \e \f3\e\fP\fIx\fR \fIx\fR, where \fIx\fR is any other character .DE Fortran 77 only has one quoting character, the apostrophe. Our compiler and \s-1I/O\s0 system recognize both the apostrophe `` \(fm '' and the double-quote `` " ''. If a string begins with one variety of quote mark, the other may be embedded within it without using the repeated quote or backslash escapes. .IP Each character string constant appearing outside a .B data statement is followed by a null character to ease communication with C routines. .Nh 2 Hollerith Fortran 77 does not have the old Hollerith ``\fIn\fP\|\fBh\fR'' notation, though the new Standard recommends implementing the old Hollerith feature in order to improve compatibility with old programs. In our compiler, Hollerith data may be used in place of character string constants, and may also be used to initialize non-character variables in .B data statements. .Nh 2 Equivalence\ Statements As a very special and peculiar case, Fortran 66 permits an element of a multiply-dimensioned array to be represented by a singly-subscripted reference in .B equivalence statements. Fortran 77 does not permit this usage, since subscript lower bounds may now be different from 1. Our compiler permits single subscripts in .B equivalence statements, under the interpretation that all missing subscripts are equal to 1. A warning message is printed for each such incomplete subscript. .Nh 2 One-Trip\ \s-1DO\s0\ Loops The Fortran 77 Standard requires that the range of a .B do loop not be performed if the initial value is already past the limit value, as in .DS do 10 i = 2, 1 .DE The 1966 Standard stated that the effect of such a statement was undefined, but it was common practice that the range of a .B do loop would be performed at least once. In order to accommodate old programs, though they were in violation of the 1966 Standard, the .B \(mionetrip or .B \(mi1 compiler flags causes non-standard loops to be generated. .Nh 2 Commas\ in\ Formatted\ Input The \s-1I/O\s0 system attempts to be more lenient than the Standard when it seems worthwhile. When doing a formatted read of non-character variables, commas may be used as value separators in the input record, overriding the field lengths given in the format statement. Thus, the format .DS (i10, f20.10, i4) .DE will read the record .DS \(mi345,.05e\(mi3,12 .DE correctly. .Nh 2 Short\ Integers On machines that support halfword integers, the compiler accepts declarations of type .B integer\(**2. (Ordinary integers follow the Fortran rules about occupying the same space as a real variable; they are assumed to be of C type .B "long int" ; halfword integers are of C type .B "short int" .) An expression involving only objects of type .B integer\(**2 is of that type. Generic functions return short or long integers depending on the actual types of their arguments. If a procedure is compiled using the .B \(mii2 flag, all small integer constants will be of type .B integer\(**2. If the precision of an integer-valued intrinsic function is not determined by the generic function rules, one will be chosen that returns the prevailing length (\fBinteger\(**2\fR when the \fB\(mii2\fR command flag is in effect). When the .B \(mii2 option is in effect, all quantities of type .B logical will be short. Note that these short integer and logical quantities do not obey the standard rules for storage association. .Nh 2 Additional\ Intrinsic\ Functions This compiler supports all of the intrinsic functions specified in the Fortran 77 Standard. In addition, there are built-in functions for performing bitwise logical and boolean operations on integer and logical values (\fBor\fR, \fBand\fR, \fBxor\fR, \fBnot\fR, \fBlshift\fP, and \fBrshift\fP), and intrinsic functions for \fBdouble complex\fP values (see section 2.1). The \fBf77\fP library contains many other functions, such as accessing the \s-1UNIX\s0 command arguments (\fBgetarg\fR and \fBiargc\fR) and environment (\fBgetenv\fR). See \fBintro\fP(3f) and \fBbit\fP(3f) in the \fI\s-1UNIX\s0 Programmer's Manual\fP for more information. .Nh 2 Namelist\ \s-1I/O\s0 Namelist \s-1I/O\s0 provides an easy way to input and output information without formats. Although not part of the standard, namelist \s-1I/O\s0 was part of many Fortran 66 systems and is a common extension to Fortran 77 systems. .IP Variables and arrays to be used in namelist \s-1I/O\s0 are declared as part of a namelist in a \fBnamelist\fP statement, e.g.: .DS character str\(**12 logical flags(20) complex c(2) real arr1(2,3), arr2(0:3,4) namelist /basic/ arr1, arr2, key, str, c /flglst/ key, flags .DE This defines two namelists: list \fBbasic\fP consists of variables \fBkey\fP and \fBstr\fP and arrays \fBarr1\fP, \fBarr2\fP, and \fBc\fP; list \fBflglst\fP consists of variable \fBkey\fP and array \fBflags\fP. A namelist can include variables and arrays of any type, and a variable or array may be in several different namelists. However dummy arguments and array elements may not be in a namelist. A namelist name may be used in external sequential \fBread\fP, \fBwrite\fP and \fBprint\fP statements wherever a format could be used. .IP In a namelist \fBread\fP, column one of each data record is ignored. The data begins with an ampersand in column 2 followed by the namelist name and a blank. Then there is a sequence of value assignments separated by commas and finally an ``&end''. A simple example of input data corresponding to namelist \fBbasic\fP is: .DS \ &basic key=5, str=\(fmhi there\(fm &end .DE .EQ delim off .EN For compatibility with other systems, dollar signs may be used instead of the ampersands: .DS \ $basic key=5, str=\(fmhi there\(fm $end .DE .IP .EQ delim $$ .EN A value assignment in the data record must be one of three forms. The simplest is a variable name followed by an equal sign followed by a data value which is assigned to that variable, e.g. ``key=5''. The second form consists of an array name followed by ``='' followed by one or more values to be assigned to the array, e.g.: .DS c=(1.1,\-2.9),(\-1.8e+10,14.0e\-3) .DE assigns values to c(1) and c(2) in the complex array c. .IP As in other \fBread\fP statements, values are assigned in the order of the array in memory, i.e. column-major order for two dimensional arrays. Multiple copies of a value may be represented by a repetition count followed by an asterisk followed by the value; e.g. ``3*55.4'' is the same as ``55.4, 55.4, 55.4''. It is an error to specify more values than the array can hold; if less are specified, only that number of elements of the array are changed. The third form of a value assignment is a subscripted variable name followed by ``='' followed by a value or values, e.g.: ``arr2(0,4)=15.2''. Only integer constant subscripts may be used. The correct number of subscripts must be used and the subscripts must be legal. This form is the same as the form with an array name except the array is filled starting at the named element. .IP In all three forms, the variable or array name must be declared in the namelist. The form of the data values is the same as in list directed input except that in namelist \s-1I/O\s0, character strings in the data must be enclosed in apostrophes or double quotes, and repetition counts must be followed by data values. .IP One use of namelist input is to read in a list of options or flags. For example: .DS logical flags(14) namelist /pars/ flags, iters, xlow, xhigh, xinc data flags/14*.false./ 10 read(5,pars,end=900) print pars call calc( xlow, xhigh, xinc, flags, iters ) go to 10 900 continue end .DE could be run with the following data (each record begins with a space): .DS \ &pars iters=10, xlow=0.0, xhigh=1.0, xinc=0.1 &end \ &pars xinc=0.2, \ \ \ flags(2)=2*.true., flags(8)=.true. &end \ &pars xlow=2.0, xhigh=8.0 &end .DE The program reads parameters for the run from the first data set and computes using them. Then it loops and each successive set of namelist input data specifies only those data items which need to be changed. Note the second data set sets the $2 sup nd$, $3 sup rd$, and $8 sup th$ elements in the array \fBflags\fP to \fB.true.\fP. .IP When a namelist name is used in a \fBwrite\fP or \fBprint\fP statement, all the values in the namelist are output together with their names. For example the \fBprint\fP in the program above prints the following: .DS \ &pars flags= f, f, f, f, f, f, f, f, f, f, f, f, f, f, iters= \ 10, xlow= 0., xhigh= 1.00000, xinc= 0.100000 \ &end \ &pars flags= f, t, t, f, f, f, f, t, f, f, f, f, f, f, iters= \ 10, xlow= 0., xhigh= 1.00000, xinc= 0.200000 \ &end \ &pars flags= f, t, t, f, f, f, f, t, f, f, f, f, f, f, iters= \ 10, xlow= 2.00000, xhigh= 8.00000, xinc= 0.200000 \ &end .DE .IP Each line begins with a space so that namelist output can be used as input to a namelist \fBread\fP. The default is to use ampersands in namelist \fBprint\fP and \fBwrite\fP. However, dollar signs will be used if the last preceding namelist \fBread\fP data set used dollar signs. The character to be used is stored as the first character of the common block \fBnamelistkey\fP. .Nh 2 Automatic\ Precision\ Increase The \(mi\fBr8\fP flag allows a user to run a program with increased precision without changing any of the program source, i.e. it allows a user to take a program coded in single precision and compile and execute it as if it had been coded in double precision. The option extends the precision of all single precision real and complex constants, variables, external functions, and intrinsic functions. For example, the source: .DS implicit complex(c) real last intrinsic sin, csin data last/0.3/ x = 0.1 y = sqrt(x)+sqrt(last) c1 = (0.1,0.2) c2 = sqrt(c1) x = real(i) y = aimag(c1) call fun(sin,csin) .DE is compiled under this flag as if it had been written as: .DS implicit double precision (a-b,d-h,o-z), double complex(c) double precision last intrinsic dsin, cdsin data last/0.3d0/ x = 0.1d0 y = sqrt(x)+sqrt(last) c1 = (0.1d0,0.2d0) c2 = sqrt(c1) x = dreal(i) y = dimag(c1) call fun(dsin,cdsin) .DE When the \(mi\fBr8\f flag is invoked, the calls using the generic name \fBsqrt\fP will refer to a different specific function since the types of the arguments have changed. This option extends the precision of all single precision \fBreal\fP and \fBcomplex\fP variables and functions, including those declared \fBreal\(**4\fP and \fBcomplex\(**8\fP. .IP In order to successfully use this flag to increase precision, the entire program including all the subroutines and functions it calls must be recompiled. Programs which use dynamic memory allocation or use equivalence or common statements to associate variables of different types may have to be changed by hand. Similar caveats apply to the sizes of records in unformatted \s-1I/O\s0. .Nh 2 Characters\ and\ Integers A character constant of integer length or less may be assigned to an integer variable. Individual bytes are packed into the integer in the native byte order. The character constant is padded with blanks to the width of the integer during the assignment. Use of this feature is deprecated; it is intended only as a porting aid for extended Fortran 66 programs. Note that the intrinsic .B ichar function behaves as the standard requires, converting only single bytes to integers. .NH 1 VIOLATIONS OF THE STANDARD .XS \*(SN Violations of the Standard .XE .LP We know only a few ways in which our Fortran system violates the new standard: .Nh 2 Double\ Precision\ Alignment The Fortran Standards (both 1966 and 1977) permit .B common or .B equivalence statements to force a double precision quantity onto an odd word boundary, as in the following example: .DS I real a(4) double precision b,c .sp .5 equivalence (a(1),b), (a(4),c) .DE Some machines (e.g., Honeywell 6000, \s-1IBM 360\s0) require that double precision quantities be on double word boundaries; other machines (e.g., \s-1IBM 370\s0), run inefficiently if this alignment rule is not observed. It is possible to tell which equivalenced and common variables suffer from a forced odd alignment, but every double precision argument would have to be assumed on a bad boundary. To load such a quantity on some machines, it would be necessary to use separate operations to move the upper and lower halves into the halves of an aligned temporary, then to load that double precision temporary; the reverse would be needed to store a result. We have chosen to require that all double precision real and complex quantities fall on even word boundaries on machines with corresponding hardware requirements, and to issue a diagnostic if the source code demands a violation of the rule. .Nh 2 Dummy\ Procedure\ Arguments If any argument of a procedure is of type character, all dummy procedure arguments of that procedure must be declared in an .B external statement. This requirement arises as a subtle corollary of the way we represent character string arguments and of the one-pass nature of the compiler. A warning is printed if a dummy procedure is not declared .B external. Code is correct if there are no .B character arguments. .Nh 2 T\ and\ TL\ Formats The implementation of the .B t (absolute tab) and .B tl (leftward tab) format codes is defective. These codes allow rereading or rewriting part of the record which has already been processed (section 6.3.2 in Appendix A). The implementation uses seeks, so if the unit is not one which allows seeks, such as a terminal, the program is in error. A benefit of the implementation chosen is that there is no upper limit on the length of a record, nor is it necessary to predeclare any record lengths except where specifically required by Fortran or the operating system. .Nh 2 Carriage\ Control The Standard leaves as implementation dependent which logical unit(s) are treated as ``printer'' files. In this implementation there is no printer file and thus by default, no carriage control is recognized on formatted output. This can be changed using \fBform=\|\(fmprint\|\(fm\fP in the \fBopen\fP statement for a unit, or by using the \fBfpr\fP(1) filter for output; see [9]. .Nh 2 Assigned\ Goto The optional .I list associated with an assigned .B goto statement is not checked against the actual assigned value during execution. .NH 1 INTER-PROCEDURE INTERFACE .XS \*(SN Inter-Procedure Interface .XE .LP To be able to write C procedures that call or are called by Fortran procedures, it is necessary to know the conventions for procedure names, data representation, return values, and argument lists that the compiled code obeys. .Nh 2 Procedure\ Names On \s-1UNIX\s0 systems, the name of a common block or a Fortran procedure has an underscore appended to it by the compiler to distinguish it from a C procedure or external variable with the same user-assigned name. Fortran built-in procedure names have embedded underscores to avoid clashes with user-assigned subroutine names. .Nh 2 Data\ Representations The following is a table of corresponding Fortran and C declarations: .KS .TS center; l l l l. .B Fortran C .R .sp .5 integer\(**2 x short int x; integer x long int x; logical x long int x; real x float x; double precision x double x; complex x struct { float r, i; } x; double complex x struct { double dr, di; } x; character\(**6 x char x[6]; .TE .KE (By the rules of Fortran, .B integer, .B logical, and .B real data occupy the same amount of memory.) .Nh 2 Arrays The first element of a C array always has subscript zero, while Fortran arrays begin at 1 by default. Fortran arrays are stored in column-major order in contiguous storage, C arrays are stored in row-major order. Many mathematical libraries have subroutines which transpose a two dimensional matrix, e.g. \fBf01crf\fP in the \fB\s-1NAG\s0\fP library and \fBvtran\fP in the \fB\s-1IMSL\s0\fP library. These may be used to transpose a two-dimensional array stored in C in row-major order to Fortran column-major order or vice-versa. .Nh 2 Return\ Values A function of type .B integer, .B logical, .B real, or .B "double precision" declared as a C function returns the corresponding type. A .B complex or .B "double complex" function is equivalent to a C routine with an additional initial argument that points to the place where the return value is to be stored. Thus, .DS complex function f( . . . ) .DE is equivalent to .DS f_(temp, . . .) struct { float r, i; } \(**temp; . . . .DE A character-valued function is equivalent to a C routine with two extra initial arguments: a data address and a length. Thus, .DS character\(**15 function g( . . . ) .DE is equivalent to .DS g_(result, length, . . .) char result[ ]; long int length; . . . .DE and could be invoked in C by .DS char chars[15]; . . . g_(chars, 15L, . . . ); .DE Subroutines are invoked as if they were \fBinteger\fR-valued functions whose value specifies which alternate return to use. Alternate return arguments (statement labels) are not passed to the function, but are used to do an indexed branch in the calling procedure. (If the subroutine has no entry points with alternate return arguments, the returned value is undefined.) The statement .DS call nret(\(**1, \(**2, \(**3) .DE is treated exactly as if it were the computed .B goto .DS goto (1, 2, 3), nret( ) .DE .Nh 2 Argument\ Lists All Fortran arguments are passed by address. In addition, for every argument that is of type character or that is a dummy procedure, an argument giving the length of the value is passed. (The string lengths are .B "long int" quantities passed by value.) The order of arguments is then: .DS Extra arguments for complex and character functions Address for each datum or function A \fBlong int\fR for each character or procedure argument .DE Thus, the call in .DS external f character\(**7 s integer b(3) . . . call sam(f, b(2), s) .DE is equivalent to that in .DS int f(); char s[7]; long int b[3]; . . . sam_(f, &b[1], s, 0L, 7L); .DE .Nh 2 System\ Interface To run a Fortran program, the system invokes a small C program which first initializes signal handling, then calls \fBf_init\fP to initialize the Fortran \s-1I/O\s0 library, then calls your Fortran main program, and then calls \fBf_exit\fP to close any Fortran files opened. .IP \fBf_init\fP initializes Fortran units 0, 5, and 6 to standard error, standard input, and standard output respectively. It also calls \fBsetlinebuf\fP to initiate line buffering of standard error. If you are using Fortran subroutines which may do \s-1I/O\s0 and you have a C main program, call \fBf_init\fP before calling the Fortran subroutines. Otherwise, Fortran units 0, 5, and 6 will be connected to files \fBfort.0\fP, \fBfort.5\fP, and \fBfort.6\fP, and error messages from the \fBf77\fP libraries will be written to \fBfort.0\fP instead of to standard error. If your C program terminates by calling the C function \fBexit\fP, all files are automatically closed. If there are Fortran scratch files to be deleted, first call \fBf_exit\fP. \fBF_init\fP and \fBf_exit\fP do not have any arguments. .IP The \fB\(mid\fP flag will show what libraries are used in loading Fortran programs. .NH 1 FILE FORMATS .XS \*(SN File Formats .XE .Nh 2 Structure\ of\ Fortran\ Files Fortran requires four kinds of external files: sequential formatted and unformatted, and direct formatted and unformatted. On \s-1UNIX\s0 systems, these are all implemented as ordinary files which are assumed to have the proper internal structure. .IP Fortran \s-1I/O\s0 is based on \f2records\f1. When a direct file is opened in a Fortran program, the record length of the records must be given, and this is used by the Fortran \s-1I/O\s0 system to make the file look as if it is made up of records of the given length. In the special case that the record length is given as 1, the files are not considered to be divided into records, but are treated as byte-addressable byte strings; that is, as ordinary \s-1UNIX\s0 file system files. (A read or write request on such a file keeps consuming bytes until satisfied, rather than being restricted to a single record.) .IP The peculiar requirements on sequential unformatted files make it unlikely that they will ever be read or written by any means except Fortran \s-1I/O\s0 statements. Each record is preceded and followed by an integer containing the record's length in bytes. .IP The Fortran \s-1I/O\s0 system breaks sequential formatted files into records while reading by using each newline as a record separator. The result of reading off the end of a record is undefined according to the Standard. The \s-1I/O\s0 system is permissive and treats the record as being extended by blanks. On output, the \s-1I/O\s0 system will write a newline at the end of each record. It is also possible for programs to write newlines for themselves. This is an error, but the only effect will be that the single record the user thought he wrote will be treated as more than one record when being read or backspaced over. .Nh 2 Portability\ Considerations The Fortran \s-1I/O\s0 system uses only the facilities of the standard C \s-1I/O\s0 library, a widely available and fairly portable package, with the following two nonstandard features: the \s-1I/O\s0 system needs to know whether a file can be used for direct \s-1I/O\s0, and whether or not it is possible to backspace. Both of these facilities are implemented using the .B fseek routine, so there is a routine .B canseek which determines if .B fseek will have the desired effect. Also, the .B inquire statement provides the user with the ability to find out if two files are the same, and to get the name of an already opened file in a form which would enable the program to reopen it. Therefore there are two routines which depend on facilities of the operating system to provide these two services. In any case, the \s-1I/O\s0 system runs on the \s-1PDP-11\s0, \s-1VAX-11/780\s0, and Interdata 8/32 \s-1UNIX\s0 systems. .Nh 2 Logical\ Units\ and\ Files Fortran logical unit numbers may be any integer between 0 and 99. The number of simultaneously open files is currently limited to 48. .IP Units 5, 6, and 0 are connected before the program begins to standard input, standard output, and standard error respectively. .IP If an unit is opened explicitly by an \fBopen\fP statement with a \fBfile=\fP keyword, then the file name is the name from the \fBopen\fP statement. Otherwise, the default file name corresponding to unit \fIn\fP is \fBfort.\fP\fIn\fP. If there is an environment variable whose name is the same as the tail of the file name after periods are deleted, then the contents of that environment variable are used as the name of the file. See [9] for details. .IP The default connection for all units is for sequential formatted \s-1I/O\s0. The Standard does not specify where a file which has been explicitly \fBopen\fRed for sequential \s-1I/O\s0 is initially positioned. The \s-1I/O\s0 system will position the file at the beginning. Therefore a .B write will destroy any data already in the file, but a .B read will work reasonably. To position a file to its end, use a \fBread\fP loop, or the system dependent function \fBfseek\fP. The preconnected units 0, 5, and 6 are positioned as they come from the program's parent process. .bp .SH APPENDIX A: Differences Between Fortran 66 and Fortran 77 .XS Appendix A. Differences Between Fortran 66 and Fortran 77 .XE .LP The following is a very brief description of the differences between the 1966 [2] and the 1977 [1] Standard languages. We assume that the reader is familiar with Fortran 66. We do not pretend to be complete, precise, or unbiased, but plan to describe what we feel are the most important aspects of the new language. The best current information on the 1977 Standard is in publications of the \s-1X3J3\s0 Subcommittee of the American National Standards Institute, and the \s-1ANSI\s0 X3.9-1978 document, the official description of the language. The Standard is written in English rather than a meta-language, but it is forbidding and legalistic. A number of tutorials and textbooks are available (see Appendix B). .NH 0 Features Deleted from Fortran 66 .XS \*(SN Features Deleted from Fortran 66 .XE .Nh 2 Hollerith All notions of ``Hollerith'' (\fIn\fP\|\fBh\fR) as data have been officially removed, although our compiler, like almost all in the foreseeable future, will continue to support this archaism. .Nh 2 Extended\ Range\ of\ DO .IP In Fortran 66, under a set of very restrictive and rarely-understood conditions, it is permissible to jump out of the range of a .B do loop, then jump back into it. Extended range has been removed in the Fortran 77 language. The restrictions are so special, and the implementation of extended range is so unreliable in many compilers, that this change really counts as no loss. .NH 1 Program Form .XS \*(SN Program Form .XE .Nh 2 Blank\ Lines Completely blank lines are now legal comment lines. .Nh 2 Program\ and\ Block\ Data\ Statements A main program may now begin with a statement that gives that program an external name: .DS program work .DE Block data procedures may also have names. .DS block data stuff .DE There is now a rule that only .I one unnamed block data procedure may appear in a program. (This rule is not enforced by our system.) The Standard does not specify the effect of the program and block data names, but they are clearly intended to aid conventional loaders. .Nh 2 ENTRY\ Statement Multiple entry points are now legal. Subroutine and function subprograms may have additional entry points, declared by an .B entry statement with an optional argument list. .DS entry extra(a, b, c) .DE Execution begins at the first statement following the .B entry line. All variable declarations must precede all executable statements in the procedure. If the procedure begins with a .B subroutine statement, all entry points are subroutine names. If it begins with a .B function statement, each entry is a function entry point, with type determined by the type declared for the entry name. If any entry is a character-valued function, then all entries must be. In a function, an entry name of the same type as that where control entered must be assigned a value. Arguments do not retain their values between calls. (The ancient trick of calling one entry point with a large number of arguments to cause the procedure to ``remember'' the locations of those arguments, then invoking an entry with just a few arguments for later calculation, is still illegal. Furthermore, the trick doesn't work in our implementation, since arguments are not kept in static storage.) .Nh 2 \s-1DO\s0\ Loops .B do variables and range parameters may now be of integer, real, or double precision types. (The use of floating point .B do variables is very dangerous because of the possibility of unexpected roundoff, and we strongly recommend against their use.) The action of the .B do statement is now defined for all values of the .B do parameters. The statement .DS do 10 i = l, u, d .DE performs $ max (0^,^ left floor ( u - l + d ) / d^ right floor )$ iterations. The .B do variable has a predictable value when exiting a loop: the value at the time a .B goto or .B return terminates the loop; otherwise the value that failed the limit test. .Nh 2 Alternate\ Returns In a .B subroutine or subroutine .B entry statement, some of the arguments may be noted by an asterisk, as in .DS subroutine s(a, \(**, b, \(**) .DE The meaning of the ``alternate returns'' is described in section 5.2 of Appendix A. .NH 1 Declarations .XS \*(SN Declarations .XE .Nh 2 CHARACTER\ Data\ Type One of the biggest improvements to the language is the addition of a character-string data type. Local and common character variables must have a length denoted by a constant expression: .DS character\(**17 a, b(3,4) character\(**(6+3) c .DE If the length is omitted entirely, it is assumed equal to 1. A character string argument may have a constant length, or the length may be declared to be the same as that of the corresponding actual argument at run time by a statement like .DS character\(**(\(**) a .DE (There is an intrinsic function .B len that returns the actual length of a character string.) Character arrays and common blocks containing character variables must be packed: in an array of character variables, the first character of one element must follow the last character of the preceding element, without holes. .Nh 2 IMPLICIT\ Statement The traditional implied declaration rules still hold: a variable whose name begins with \fBi, j, k, l, m,\fR or \fBn\fR is of type \f3integer\f1; other variables are of type .B real, unless otherwise declared. This general rule may be overridden with an .B implicit statement: .DS implicit real(a-c,g), complex(w-z), character\(**(17) (s) .DE declares that variables whose name begins with an \fBa ,b, c,\fR or \fBg\fR are .B real, those beginning with \fBw, x, y,\fR or \fBz\fR are assumed .B complex, and so on. It is still poor practice to depend on implicit typing, but this statement is an industry standard. .Nh 2 PARAMETER\ Statement It is now possible to give a constant a symbolic name, as in .DS character str\(**(\(**) parameter (x=17, y=x/3, pi=3.14159d0, str=\(fmhello\(fm) .DE The type of each parameter name is governed by the same implicit and explicit rules as for a variable. Symbolic names for \fBcharacter\fP constants may be declared with an implied length ``(\(**)''. The right side of each equal sign must be a constant expression (an expression made up of constants, operators, and already defined parameters). .Nh 2 Array\ Declarations Arrays may now have as many as seven dimensions. (Only three were permitted in 1966.) The lower bound of each dimension may be declared to be other than 1 by using a colon. Furthermore, an adjustable array bound may be an integer expression involving constants, arguments, and variables in .B common. .DS real a(\(mi5:3, 7, m:n), b(n+1:2\(**n) .DE The upper bound on the last dimension of an array argument may be denoted by an asterisk to indicate that the upper bound is not specified: .DS integer a(5, \(**), b(\(**), c(0:1, \(mi2:\(**) .DE .Nh 2 SAVE\ Statement A little known rule of Fortran 66 is that variables in a procedure do not necessarily retain their values between invocations of that procedure. This rule permits overlay and stack implementations for the affected variables. In Fortran 77, three types of variables automatically keep there values: variables in blank common, variables defined in \fBdata\fP statements and never changed, and variables in named common blocks which have not become undefined. At any instant in the execution of a program, if a named common block is declared neither in the currently executing procedure nor in any of the procedures in the chain of callers, all of the variables in that common block become undefined. Fortran 77 permits one to specify that certain variables and common blocks are to retain their values between invocations. The declaration .DS save a, /b/, c .DE leaves the values of the variables .B a and .B c and all of the contents of common block .B b unaffected by an exit from the procedure. The simple declaration .DS save .DE has this effect on all variables and common blocks in the procedure. A common block must be \fBsave\fRd in every procedure in which it is declared if the desired effect is to occur. .Nh 2 INTRINSIC\ Statement All of the functions specified in the Standard are in a single category, ``intrinsic functions'', rather than being divided into ``intrinsic'' and ``basic external'' functions. If an intrinsic function is to be passed to another procedure, it must be declared .B intrinsic. Declaring it .B external (as in Fortran 66) causes a function other than the built-in one to be passed. .NH 1 Expressions .XS \*(SN Expressions .XE .Nh 2 Character\ Constants Character string constants are marked by strings surrounded by apostrophes. If an apostrophe is to be included in a constant, it is repeated: .DS \(fmabc\(fm \(fmain\(fm\(fmt\(fm .DE Although null (zero-length) character strings are not allowed in the standard Fortran, they may be used with \fBf77\fP. Our compiler has two different quotation marks, `` \(fm '' and `` " ''. (See section 2.9 in the main text.) .Nh 2 Concatenation One new operator has been added, character string concatenation, marked by a double slash ``//''. The result of a concatenation is the string containing the characters of the left operand followed by the characters of the right operand. The character expressions .DS \(fmab\(fm // \(fmcd\(fm \(fmabcd\(fm .DE are equal. .IP Dummy arguments of type character may be declared with implied lengths: .DS subroutine s ( a, b ) character a\(**(\(**), b\(**(\(**) .DE Such dummy arguments may be used in concatenations in assign statements: .DS s = a // b .DE but not in other contexts. For example: .DS if( a // b .eq. \(fmabc\(fm ) key = 1 call sub( a // b ) .DE are legal statements if ``a'' and ``b'' are dummy arguments declared with explicit lengths, or if they are not arguments. These are illegal if they are declared with implied lengths. .Nh 2 Character\ String\ Assignment The left and right sides of a character assignment may not share storage. (The assumed implementation of character assignment is to copy characters from the right to the left side.) If the left side is longer than the right, it is padded with blanks. If the left side is shorter than the right, trailing characters are discarded. Since the two sides of a character assignment must be disjoint, the following are illegal: .DS str = \(fm\ \(fm // str str = str(2:) .DE These are not flagged as errors during compilation or execution, however the result is undefined. .Nh 2 Substrings It is possible to extract a substring of a character variable or character array element, using the colon notation: .DS a(i,\|j) (m:n) .DE is the string of $(n-m+1)$ characters beginning at the $m sup th$ character of the character array element $a sub ij$. Results are undefined unless $m<=n$. Substrings may be used on the left sides of assignments and as procedure actual arguments. .Nh 2 Exponentiation It is now permissible to raise real quantities to complex powers, or complex quantities to real or complex powers. (The principal part of the logarithm is used.) Also, multiple exponentiation is now defined: .DS a\(**\(**b\(**\(**c is equivalent to a \(**\(** (b\(**\(**c) .DE .Nh 2 Relaxation\ of\ Restrictions Mixed mode expressions are now permitted. (For instance, it is permissible to combine integer and complex quantities in an expression.) .IP Constant expressions are permitted where a constant is allowed, except in .B data statements and .B format statements. (A constant expression is made up of explicit constants and \fBparameter\fRs and the Fortran operators, except for exponentiation to a floating-point power.) An adjustable dimension may now be an integer expression involving constants, arguments, and variables in .B common. .IP Subscripts may now be general integer expressions; the old $c v +- c'$ rules have been removed. .B do loop bounds may be general integer, real, or double precision expressions. Computed .B goto expressions and \s-1I/O\s0 unit numbers may be general integer expressions. .NH 1 Executable Statements .XS \*(SN Executable Statements .XE .Nh 2 IF-THEN-ELSE At last, the if-then-else branching structure has been added to Fortran. It is called a ``Block If\|''. A Block If begins with a statement of the form .DS if ( . . . ) then .DE and ends with an .DS end if .DE statement. Two other new statements may appear in a Block If. There may be several .DS else if (. . .) then .DE statements, followed by at most one .DS else .DE statement. If the logical expression in the Block If statement is true, the statements following it up to the next .B "else if", .B else, or .B "end if" are executed. Otherwise, the next .B "else if" statement in the group is executed. If none of the .B "else if" conditions are true, control passes to the statements following the .B else statement, if any. (The .B else block must follow all .B "else if" blocks in a Block If. Of course, there may be Block Ifs embedded inside of other Block If structures.) A case construct may be rendered: .DS if (s .eq. \(fmab\(fm) then . . . else if (s .eq. \(fmcd\(fm) then . . . else . . . end if .DE .Nh 2 Alternate\ Returns Some of the arguments of a subroutine call may be statement labels preceded by an asterisk, as in: .DS call joe(j, \(**10, m, \(**2) .DE A .B return statement may have an integer expression, such as: .DS return k .DE If the entry point has $n$ alternate return (asterisk) arguments and if $1<=k<=n$, the return is followed by a branch to the corresponding statement label; otherwise the usual return to the statement following the .B call is executed. .NH 1 Input/Output .XS \*(SN Input/Output .XE .Nh 2 Format\ Variables A format may be the value of a character expression (constant or otherwise), or be stored in a character array, as in: .DS write(6, \(fm(i5)\(fm) x .DE .Nh 2 END=,\ ERR=,\ and\ IOSTAT=\ Clauses A .B read or .B write statement may contain .B end=, .B err=, and .B iostat= clauses, as in: .DS write(6, 101, err=20, iostat=a(4)) read(5, 101, err=20, end=30, iostat=x) .DE Here 5 and 6 are the .I units on which the \s-1I/O\s0 is done, 101 is the statement number of the associated format, 20 and 30 are statement numbers, and .B a and .B x are integer variables. If an error occurs during \s-1I/O\s0, control returns to the program at statement 20. If the end of the file is reached, control returns to the program at statement 30. In any case, the variable referred to in the .B iostat= clause is given a value when the \s-1I/O\s0 statement finishes. (Yes, the value is assigned to the name on the right side of the equal sign.) This value is zero if all went well, negative for end of file, and some positive value for errors. .Nh 2 Formatted\ \s-1I/O\s0 .NH 3 Character Constants .IP Character constants in formats are copied literally to the output. .IP A format may be specified as a character constant within the .B read or .B write statement. .DS write(6,\|\(fm(i2,\|\(fm\|\(fm isn\|\(fm\|\(fm\|\(fm\|\(fm\|t \|\(fm\|\(fm,i1)\|\(fm) 7, 4 .DE produces .DS 7 isn\|\(fm\|t 4 .DE In the example above, the format is the character constant .DS (i2,\|\(fm isn\|\(fm\|\(fmt \|\(fm,i1) .DE and the embedded character constant .DS isn\|\(fmt .DE is copied into the output. .IP The example could have been written more legibly by taking advantage of the two types of quote marks. .DS write(6,\|\(fm(i2," isn\|\(fm\|\|\(fm\|t ",i1)\|\(fm) 7, 4 .DE However, the double quote is not standard Fortran 77. .IP The standard does not allow reading into character constants or Hollerith fields. In order to facilitate running older programs, the Fortran \s-1I/O\s0 library allows reading into Hollerith fields; however this is a practice to be avoided. .NH 3 Positional Editing Codes .IP .B t, .B tl, .B tr, and .B x codes control where the next character is in the record. \fBtr\fIn\fR or \fIn\fBx\fR specifies that the next character is $n$ to the right of the current position. \fBtl\fIn\fR specifies that the next character is $n$ to the left of the current position, allowing parts of the record to be reconsidered. \fBt\fIn\fR says that the next character is to be character number $n$ in the record. (See section 3.3 in the main text.) .NH 3 Colon .IP A colon in the format terminates the \s-1I/O\s0 operation if there are no more data items in the \s-1I/O\s0 list, otherwise it has no effect. In the fragment .DS x=\(fm("hello", :, " there", i4)\(fm write(6, x) 12 write(6, x) .DE the first .B write statement prints .DS hello there 12 .DE while the second only prints .DS hello .DE .NH 3 Optional Plus Signs .IP According to the Standard, each implementation has the option of putting plus signs in front of non-negative numeric output. The .B sp format code may be used to make the optional plus signs actually appear for all subsequent items while the format is active. The .B ss format code guarantees that the \s-1I/O\s0 system will not insert the optional plus signs, and the .B s format code restores the default behavior of the \s-1I/O\s0 system. (Since we never put out optional plus signs, .B ss and .B s codes have the same effect in our implementation.) .NH 3 Blanks on Input .IP Blanks in numeric input fields, other than leading blanks, will be ignored following a .B bn code in a format statement, and will be treated as zeros following a .B bz code in a format statement. The default for a unit may be changed by using the .B open statement. (Blanks are ignored by default.) .NH 3 Unrepresentable Values .IP The Standard requires that if a numeric item cannot be represented in the form required by a format code, the output field must be filled with asterisks. (We think this should have been an option.) .NH 3 Iw.m .IP There is a new integer output code, \fBi\fIw.m.\fR It is the same as \fBi\fIw\fR, except that there will be at least $m$ digits in the output field, including, if necessary, leading zeros. The case \fBi\fR$w.0$ is special, in that if the value being printed is 0, the output field is entirely blank. \fBi\fIw\fB.1\fR is the same as \fBi\fIw\fR. .NH 3 Floating Point .IP On input, exponents may start with the letter \fBE, D, e, \fRor \fBd.\fR All have the same meaning. On output we always use \fBe\fR or \fBd\fR. The .B e and .B d format codes also have identical meanings. A leading zero before the decimal point in .B e output without a scale factor is optional with the implementation. There is a \fBg\fIw.d\fR format code which is the same as \fBe\fIw.d\fR and \fBf\fIw.d\fR on input, but which chooses .B f or .B e formats for output depending on the size of the number and of $d$. .NH 3 ``A'' Format Code .IP The .B a code is used for character data. \fBa\fIw\fR uses a field width of $w$, while a plain .B a uses the length of the internal character item. .Nh 2 Standard\ Units There are default formatted input and output units. The statement .DS read 10, a, b .DE reads from the standard unit using format statement 10. The default unit may be explicitly specified by an asterisk, as in .DS read(\(**, 10) a, b .DE Similarly, the standard output unit is specified by a .B print statement or an asterisk unit: .DS print 10 write(\(**, 10) .DE .Nh 2 List-Directed\ \s-1I/O\s0 List-directed \s-1I/O\s0 is a kind of free form input for sequential \s-1I/O\s0. It is invoked by using an asterisk as the format identifier, as in .DS read(6, \(**) a,b,c .DE .IP On input, values are separated by strings of blanks and possibly a comma. On \s-1UNIX\s0, tabs may be used interchangeably with blanks as separators. Values, except for character strings, cannot contain blanks. End of record counts as a blank, except in character strings, where it is ignored. Complex constants are given as two real constants separated by a comma and enclosed in parentheses. A null input field, such as between two consecutive commas, means the corresponding variable in the \s-1I/O\s0 list is not changed. Values may be preceded by repetition counts, as in .DS 4\(**(3.,2.) 2\(**, 4\(**\|\(fm\|hello\|\(fm .DE which stands for 4 complex constants, 2 null values, and 4 string constants. .IP The Fortran standard requires data being read into \fBcharacter\fP variables by a list-directed read to be enclosed in quotes. In our system, the quotes are optional for strings which do not start with a digit or quote and do not contain separators. .IP For output, suitable formats are chosen for each item. The values of character strings are printed; they are not enclosed in quotes. According to the standard, they could not be read back using list-directed input. However much of this data could be read back in with list-directed \s-1I/O\s0 on our system. .Nh 2 Direct\ \s-1I/O\s0 A file connected for direct access consists of a set of equal-sized records each of which is uniquely identified by a positive integer. The records may be written or read in any order, using direct access \s-1I/O\s0 statements. .IP Direct access .B read and .B write statements have an extra argument, .B rec=, which gives the record number to be read or written. .DS read(2, rec=13, err=20) (a(i), i=1, 203) .DE reads the thirteenth record into the array .B a. .IP The size of the records must be given by an .B open statement (see below). Direct access files may be connected for either formatted or unformatted \s-1I/O\s0. .Nh 2 Internal\ Files Internal files are character string objects, such as variables or substrings, or arrays of type character. In the former cases there is only a single record in the file; in the latter case each array element is a record. The Standard includes only sequential formatted \s-1I/O\s0 on internal files. (\s-1I/O\s0 is not a very precise term to use here, but internal files are dealt with using .B read and .B write.) Internal files are used by giving the name of the character object in place of the unit number, as in .DS character\(**80 x read(5,\(fm(a)\(fm) x read(x,\(fm(i3,i4)\(fm) n1,n2 .DE which reads a character string into .B x and then reads two integers from the front of it. A sequential .B read or .B write always starts at the beginning of an internal file. .IP We also support two extensions of the standard. The first is direct \s-1I/O\s0 on internal files. This is like direct \s-1I/O\s0 on external files, except that the number of records in the file cannot be changed. In this case a record is a single element of an array of character strings. The second extension is list-directed \s-1I/O\s0 on internal files. .Nh 2 OPEN,\ CLOSE,\ and\ INQUIRE\ Statements These statements are used to connect and disconnect units and files, and to gather information about units and files. .NH 3 OPEN .IP The .B open statement is used to connect a file with a unit, or to alter some properties of the connection. The following is a minimal example. .DS open(1, file=\(fmfort.junk\(fm) .DE .B open takes a variety of arguments with meanings described below. .EQ delim off .EN . \" macros here .de HP .RT .if !\\(IP .nr IP +1 .sp \\n(PDu .ne 3v .in +\\n(PIu .ti -\\n(PIu \fB\\$1\fR\ \c .. .de P1 .KS .nf .in +.3i .ta .3i .6i .9i 1.2i 1.5i 1.8i .sp .. .de P2 .fi .in -.3i .sp .KE .. .de TH .RT .sp \\n(PDu .ne 3v \fB\\$1\\$2\\$3\\$4\\$5\\$6\fR\ \c .. . \" end of macros .RS .HP unit= an integer between 0 and 99 inclusive which is the unit to which the file is to be connected (see section 5.3 in the text). If this parameter is the first one in the .B open statement, the .B unit= can be omitted. .HP iostat= is the same as in .B read or .B write. .HP err= is the same as in .B read or .B write. .HP file= a character expression, which when stripped of trailing blanks, is the name of the file to be connected to the unit. The file name should not be given if the .B status=\(fmscratch\(fm. .HP status= one of .B \(fmold\(fm, .B \(fmnew\(fm, .B \(fmscratch\(fm, or .B \(fmunknown\(fm. If this parameter is not given,\p .B \(fmunknown\(fm is assumed. The meaning of .B \(fmunknown\(fm is processor dependent; our system will create the file if it doesn't exist. If .B \(fmscratch\(fm is given, a temporary file will be created. Temporary files are destroyed at the end of execution. If .B \(fmnew\(fm is given, the file must not exist. It will be created for both reading and writing. If .B \(fmold\(fm is given, it is an error for the file not to exist. .HP access= .B \(fmsequential\(fm or .B \(fmdirect\(fm, depending on whether the file is to be opened for sequential or direct \s-1I/O\s0. .HP form= .B \(fmformatted\(fm or .B \(fmunformatted\(fm. On \s-1UNIX\s0 systems, .B form=\(fmprint\(fm implies .B \(fmformatted\(fm with vertical format control. (See section 3.4 of the text). .HP recl= a positive integer specifying the record length of the direct access file being opened. We measure all record lengths in bytes. On \s-1UNIX\s0 systems a record length of 1 has the special meaning explained in section 5.1 of the text. .HP blank= .B \(fmnull\(fm or .B \(fmzero\(fm. This parameter has meaning only for formatted \s-1I/O\s0. The default value is .B \(fmnull\(fm. .B \(fmzero\(fm means that blanks, other than leading blanks, in numeric input fields are to be treated as zeros. .RE .IP Opening a new file on a unit which is already connected has the effect of first closing the old file. .NH 3 CLOSE .IP .B close severs the connection between a unit and a file. The unit number must be given. The optional parameters are .B iostat= and .B err= with their usual meanings, and .B status= either .B \(fmkeep\(fm or .B \(fmdelete\(fm. For scratch files the default is .B \(fmdelete\(fm; otherwise .B \(fmkeep\(fm is the default. .B \(fmdelete\(fm means the file will be removed. A simple example is .DS close(3, err=17) .DE .NH 3 INQUIRE .IP The .B inquire statement gives information about a unit (``inquire by unit'') or a file (``inquire by file''). Simple examples are: .DS inquire(unit=3, name=xx) inquire(file=\(fm\|junk\|\(fm, number=n, exist=l) .DE .RS .HP file= a character variable specifies the file the .B inquire is about. Trailing blanks in the file name are ignored. .HP unit= an integer variable specifies the unit the .B inquire is about. Exactly one of .B file= or .B unit= must be used. .HP "iostat=, err=" are as before. .HP exist= a logical variable. The logical variable is set to .B ".true." if the file or unit exists and is set to .B ".false." otherwise. .HP opened= a logical variable. The logical variable is set to .B ".true." if the file is connected to a unit or if the unit is connected to a file, and it is set to .B ".false." otherwise. .HP number= an integer variable to which is assigned the number of the unit connected to the file, if any. .HP named= a logical variable to which is assigned .B ".true." if the file has a name, or .B ".false." otherwise. .HP name= a character variable to which is assigned the name of the file (inquire by file) or the name of the file connected to the unit (inquire by unit). .HP access= a character variable to which will be assigned the value .B \(fmsequential\(fm if the connection is for sequential \s-1I/O\s0, .B \(fmdirect\(fm if the connection is for direct \s-1I/O\s0, .B \(fmunknown\(fm if not connected. .HP sequential= a character variable to which is assigned the value .B \(fmyes\(fm if the file could be connected for sequential \s-1I/O\s0, .B \(fmno\(fm if the file could not be connected for sequential \s-1I/O\s0, and .B \(fmunknown\(fm if we can't tell. .HP direct= a character variable to which is assigned the value .B \(fmyes\(fm if the file could be connected for direct \s-1I/O\s0, .B \(fmno\(fm if the file could not be connected for direct \s-1I/O\s0, and .B \(fmunknown\(fm if we can't tell. .HP form= a character variable to which is assigned the value .B \(fmunformatted\(fm if the file is connected for unformatted \s-1I/O\s0, .B \(fmformatted\(fm if the file is connected for formatted \s-1I/O\s0, .B \(fmprint\(fm for formatted \s-1I/O\s0 with vertical format control, or .B \(fmunknown\(fm if not connected. .HP formatted= a character variable to which is assigned the value .B \(fmyes\(fm if the file could be connected for formatted \s-1I/O\s0, .B \(fmno\(fm if the file could not be connected for formatted \s-1I/O\s0, and .B \(fmunknown\(fm if we can't tell. .HP unformatted= a character variable to which is assigned the value .B \(fmyes\(fm if the file could be connected for unformatted \s-1I/O\s0, .B \(fmno\(fm if the file could not be connected for unformatted \s-1I/O\s0, and .B \(fmunknown\(fm if we can't tell. .HP recl= an integer variable to which is assigned the record length of the records in the file if the file is connected for direct access. .HP nextrec= an integer variable to which is assigned one more than the number of the the last record read from a file connected for direct access. .HP blank= a character variable to which is assigned the value .B \(fmnull\(fm if null blank control is in effect for the file connected for formatted \s-1I/O\s0, .B \(fmzero\(fm if blanks are being converted to zeros and the file is connected for formatted \s-1I/O\s0. .RE .IP For information on file permissions, ownership, etc., use the Fortran library routines \fBstat\fP and \fBaccess\fP. .IP For further discussion of the \s-1UNIX\s0 Fortran \s-1I/O\s0 system see ``Introduction to the f77 I/O Library'' [9]. .bp .SH APPENDIX B: References and Bibliography .XS Appendix B. References and Bibliography .XE .LP .sp .B References .R .IP 1. 3 \f2American National Standard Programming Language \s-1FORTRAN\s0, \s-1ANSI\s0 X3.9-1978\f1. New York: American National Standards Institute, 1978. .IP 2. \f2\s-1USA\s0 Standard \s-1FORTRAN\s0, \s-1USAS X\s03.9-1966\f1. New York: United States of America Standards Institute, 1966. Clarified in \f2Comm. \s-1ACM\s0\f1 12:289 (1969) and \f2Comm. \s-1ACM\s0\f1 14:628 (1971). .IP 3. Kernighan, B. W., and D. M. Ritchie. \f2The C Programming Language.\f1 Englewood Cliffs: Prentice-Hall, 1978. .IP 4. Ritchie, D. M. Private communication. .IP 5. Johnson, S. C. ``A Portable Compiler: Theory and Practice,'' \f2Proceedings of Fifth \s-1ACM\s0 Symposium on Principles of Programming Languages\f1. 1978. .IP 6. Feldman, S. I. ``An Informal Description of \s-1EFL\s0,'' internal memorandum. .IP 7. Kernighan, B. W. ``\s-1RATFOR\s0\(emA Preprocessor for Rational Fortran,'' \f2Bell Laboratories Computing Science Technical Report #55\f1. 1977. .IP 8. Ritchie, D. M. Private communication. .IP 9. Wasley, D. L. ``Introduction to the f77 I/O Library'', \fI\s-1UNIX\s0 Programmer's Manual, Volume 2c\fR. .sp .LP .B Bibliography .R .LP The following books or documents describe aspects of Fortran 77. This list cannot pretend to be complete. Certainly no particular endorsement is implied. .IP 1. 3 Brainerd, Walter S., et al. \f2Fortran 77 Programming.\f1 Harper Row, 1978. .IP 2. Day, A. C. \f2Compatible Fortran.\f1 Cambridge University Press, 1979. .IP 3. Dock, V. Thomas. \f2Structured Fortran IV Programming.\f1 West, 1979. .IP 4. Feldman, S. I. ``The Programming Language \s-1EFL\s0,'' \f2Bell Laboratories Technical Report\f1. June 1979. .IP 5. Hume, J. N., and R. C. Holt. \f2Programming Fortran 77.\f1 Reston, 1979. .IP 6. Katzan, Harry, Jr. \f2Fortran 77.\f1 Van Nostrand-Reinhold, 1978. .IP 7. Meissner, Loren P., and Organick, Elliott I. \f2Fortran 77 Featuring Structured Programming\f1, Addison-Wesley, 1979. .IP 8. Merchant, Michael J. \f2\s-1ABC\s0's of Fortran Programming.\f1 Wadsworth, 1979. .IP 9. Page, Rex, and Richard Didday. \f2Fortran 77 for Humans.\f1 West, 1980. .IP 10. Wagener, Jerrold L. \f2Principles of Fortran 77 Programming.\f1 Wiley, 1980. .\" want Table of Contents to begin on page 2 hence must expand body .\" of .TC macro to enable us to get handle on page number. .pn 2 .bp .PX file; in the latter case each array element is a record. The Standard includes only sequential formatted \s-1I/O\s0 on internal files. (\s-1I/O\s0 is not a very precise term to use here, but internal files are dealt with using .B read and .B write.) Internal files are used by giving the name of the character object in place of the unit number, as in .DS character\(**80 x read(5,\(fm(a)\(fm) x read(x,\(fm(i3,i4)\(fm) n1,n2 .DE which reads a doc/ps1/02.f77/Makefile 444 3 12 1224 3652573644 7601 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 5.1 (Berkeley) 4/21/86 # SRCS= f77.ms MACROS= -msU PRINTER=Pdp EQN= deqn -${PRINTER} TBL= dtbl -${PRINTER} TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${EQN} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done s and conditions for redistribution. # # @(#)Makefile 5.1 (Berkeley) 4/21/86 # SRCS= f77.ms MACROS= -msU PRINTER=Pdp EQN= deqn -${PRINTER} TBL= dtbl -${PRINTER} TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${EQN} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f papedoc/ps1/04.pascal/ 755 3 12 0 3662140745 6712 doc/ps1/04.pascal/typequ.p 444 3 12 145 3650315015 10454 program x(output); var x: ^ integer; y: ^ integer; begin new(y); x := y; x^ := 1; x := x; end. ynerr2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/tmac.p 444 3 12 2011 3650315015 10063 'so /usr/lib/tmac/tmac.s .if t .tr \(rh- .if t .tr *\(**=\(eq/\(sl+\(pl .bd S B 3 .de SM .if "\\$1"" .ps -2 .if !"\\$1"" \s-2\\$1\s0\\$2 .. .de LG .if "\\$1"" .ps +2 .if !"\\$1"" \s+2\\$a\s0\\$2 .. .de HP .nr pd \\n(PD .nr PD 0 .if \\n(.$=0 .IP .if \\n(.$=1 .IP "\\$1" .if \\n(.$>=2 .IP "\\$1" "\\$2" .nr PD \\n(pd .rm pd .. .de LS \"LS - Literal display, ASCII, constant spaced DS .XD .ID .nf .if t .tr '\'`\`^\(ua-\(mi .if t .tr _\(ul .. .de LE \"LE - End literal display .DE .tr ''``__--^^ .. .de UP Berkeley Pascal\\$1 .. .de PD \s-2PDP\s0 .if \\n(.$=0 11/70 .if \\n(.$>0 11/\\$1 .. .de DK Digital Equipment Corporation\\$1 .. .de IN .I .if \\n(.$<2 \\$1 1.0 Implementation Notes .if \\n(.$>=2 \\$1 1.0 Implementation Notes\\c .R .if \\n(.$>=2 \\$2 .. .de UM .I User's Manual .R .. .de PC .I pc \\$1 .. .de PI .I pi \\$1 .. .de XP .I pxp \\$1 .. .de IX .I pix \\$1 .. .de X .I px \\$1 .. .if n .ds dg + .if t .ds dg \(dg .if n .ds dd * .if t .ds dd \(dd .if n .nr FM 1.12i .if t .ds b \\fB .if n .ds b \\fI .ds i \\fI .nr xx 1 If .B \(fmscratch\(fm is given, a temporary file will be created. Temporary files are destroyed at the end of execution. If .B \(fmnew\(fm is given, the file must not exist. It will be created for both reading and writing. If .B \(fmold\(fm is given, it is an error for the file not to exist. .HP access= .B \(fmsequential\(fm or .B \(fmdirect\(fm, depending on whether the file is to be opened for sequential or direct \s-1I/O\s0. .HP form= .B \(fmformatted\(fm or .B \(fmunformatted\(fm. On \s-1UNIX\sdoc/ps1/04.pascal/puman1.n 444 3 12 22662 3660010451 10371 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)puman1.n 6.1 (Berkeley) 5/7/86 .\" .if !\n(xx \{\ .so tmac.p \} .if n 'ND 'nr H1 0 .NH Sources of information .PP This section lists the resources available for information about general features of .UX , text editing, the Pascal language, and the .UP implementation, concluding with a list of references. The available documents include both so-called standard documents \- those distributed with all .UX system \- and documents (such as this one) written at Berkeley. .NH 2 Where to get documentation .PP Current documentation for most of the .UX system is available ``on line'' at your terminal. Details on getting such documentation interactively are given in section 1.3. .NH 2 Documentation describing UNIX .PP The following documents are those recommended as tutorial and reference material about the .UX system. We give the documents with the introductory and tutorial materials first, the reference materials last. .SH UNIX For Beginners \- Second Edition .PP This document is the basic tutorial for .UX available with the standard system. .SH Communicating with UNIX .PP This is also a basic tutorial on the system and assumes no previous familiarity with computers; it was written at Berkeley. .SH An introduction to the C shell .PP This document introduces .I csh, the shell in common use at Berkeley, and provides a good deal of general description about the way in which the system functions. It provides a useful glossary of terms used in discussing the system. .SH UNIX Programmer's Manual .PP This manual is the major source of details on the components of the .UX system. It consists of an Introduction, a permuted index, and eight command sections. Section 1 consists of descriptions of most of the ``commands'' of .UX . Most of the other sections have limited relevance to the user of Berkeley Pascal, being of interest mainly to system programmers. .PP U\s-2NIX\s0 documentation often refers the reader to sections of the manual. Such a reference consists of a command name and a section number or name. An example of such a reference would be: .I ed (1). Here .I ed is a command name \- the standard .UX text editor, and `(1)' indicates that its documentation is in section 1 of the manual. .PP The pieces of the Berkeley Pascal system are .I pi (1), .X (1), the combined Pascal translator and interpretive executor .IX (1), the Pascal compiler .PC (1), the Pascal execution profiler .XP (1), and the Pascal cross-reference generator .I pxref (1). .PP It is possible to obtain a copy of a manual section by using the .I man (1) command. To get the Pascal documentation just described one could issue the command: .LS % \*bman pi\fP .LE to the shell. The user input here is shown in .B "bold face" ; the `% ', which was printed by the shell as a prompt, is not. Similarly the command: .LS % \*bman man\fP .LE asks the .I man command to describe itself. .NH 2 Text editing documents .PP The following documents introduce the various .UX text editors. Most Berkeley users use a version of the text editor .I ex; either .I edit, which is a version of .I ex for new and casual users, .I ex itself, or .I vi (visual) which focuses on the display editing portion of .I ex. .SH A Tutorial Introduction to the UNIX Text Editor .PP This document, written by Brian Kernighan of Bell Laboratories, is a tutorial for the standard .UX text editor .I ed. It introduces you to the basics of text editing, and provides enough information to meet day-to-day editing needs, for .I ed users. .SH Edit: A tutorial .PP This introduces the use of .I edit, an editor similar to .I ed which provides a more hospitable environment for beginning users. .SH Ex/edit Command Summary .PP This summarizes the features of the editors .I ex and .I edit in a concise form. If you have used a line oriented editor before this summary alone may be enough to get you started. .SH Ex Reference Manual \- Version 3.7 .PP A complete reference on the features of .I ex and .I edit. .SH An Introduction to Display Editing with Vi .PP .I Vi is a display oriented text editor. It can be used on most any \s-2CRT\s0 terminal, and uses the screen as a window into the file you are editing. Changes you make to the file are reflected in what you see. This manual serves both as an introduction to editing with .I vi and a reference manual. .SH Vi Quick Reference .PP This reference card is a handy quick guide to .I vi; you should get one when you get the introduction to .I vi. .NH 2 Pascal documents \- The language .PP This section describes the documents on the Pascal language which are likely to be most useful to the Berkeley Pascal user. Complete references for these documents are given in section 1.7. .SH Pascal User Manual .PP By Kathleen Jensen and Niklaus Wirth, the .I "User Manual" provides a tutorial introduction to the features of the language Pascal, and serves as an excellent quick-reference to the language. The reader with no familiarity with Algol-like languages may prefer one of the Pascal text books listed below, as they provide more examples and explanation. Particularly important here are pages 116-118 which define the syntax of the language. Sections 13 and 14 and Appendix F pertain only to the 6000-3.4 implementation of Pascal. .SH Pascal Report .PP By Niklaus Wirth, this document is bound with the .I "User Manual." It is the guiding reference for implementors and the fundamental definition of the language. Some programmers find this report too concise to be of practical use, preferring the .I "User Manual" as a reference. .SH Books on Pascal .PP Several good books which teach Pascal or use it as a medium are available. The books by Wirth .I "Systematic Programming" and .I "Algorithms + Data Structures = Programs" use Pascal as a vehicle for teaching programming and data structure concepts respectively. They are both recommended. Other books on Pascal are listed in the references below. .NH 2 Pascal documents \- The Berkeley Implementation .PP This section describes the documentation which is available describing the Berkeley implementation of Pascal. .SH User's Manual .PP The document you are reading is the .I "User's Manual" for .UP . We often refer the reader to the Jensen-Wirth .I "User Manual" mentioned above, a different document with a similar name. .SH Manual sections .PP The sections relating to Pascal in the .I "UNIX Programmer's Manual" are .IX (1), .PI (1), .PC (1), .X (1), .I pxp (1), and .I pxref (1). These sections give a description of each program, summarize the available options, indicate files used by the program, give basic information on the diagnostics produced and include a list of known bugs. .SH Implementation notes .PP For those interested in the internal organization of the Berkeley Pascal system there are a series of .I "Implementation Notes" describing these details. The .I "Berkeley Pascal PXP Implementation Notes" describe the Pascal interpreter .X \|; and the .I "Berkeley Pascal PX Implementation Notes" describe the structure of the execution profiler .I pxp . .br .ne 8 .NH 2 References .de re .sp .IP 'nf .. .SH UNIX Documents .re .I "Communicating With UNIX" Computer Center University of California, Berkeley January, 1978. .re Ricki Blau and James Joyce .I "Edit: a tutorial" UNIX User's Supplementary Documents (USD), 14 University of California, Berkeley, CA. 94720 April, 1986. .re .I "Ex/edit Command Summary" Computer Center University of California, Berkeley August, 1978. .re William Joy .I "Ex Reference Manual \- Version 3.7" UNIX User's Supplementary Documents (USD), 16 University of California, Berkeley, CA. 94720 April, 1986. .re William Joy .I "An Introduction to Display Editing with Vi" UNIX User's Supplementary Documents (USD), 15 University of California, Berkeley, CA. 94720 April, 1986. .re William Joy .I "An Introduction to the C shell (Revised)" UNIX User's Supplementary Documents (USD), 4 University of California, Berkeley, CA. 94720 April, 1986. .re Brian W. Kernighan .I "UNIX for Beginners \- Second Edition" UNIX User's Supplementary Documents (USD), 1 University of California, Berkeley, CA. 94720 April, 1986. .re Brian W. Kernighan .I "A Tutorial Introduction to the UNIX Text Editor" UNIX User's Supplementary Documents (USD), 12 University of California, Berkeley, CA. 94720 April, 1986. .re Dennis M. Ritchie and Ken Thompson .I "The UNIX Time Sharing System" Reprinted from Communications of the ACM July 1974 in UNIX Programmer's Supplementary Documents, Volume 2 (PS2), 1 University of California, Berkeley, CA. 94720 April, 1986. .SH Pascal Language Documents .re Cooper and Clancy .I "Oh! Pascal!, 2nd Edition" W. W. Norton & Company, Inc. 500 Fifth Ave., NY, NY. 10110 1985, 475 pp. .re Cooper .I "Standard Pascal User Reference Manual" W. W. Norton & Company, Inc. 500 Fifth Ave., NY, NY. 10110 1983, 176 pp. .re Kathleen Jensen and Niklaus Wirth .I "Pascal \- User Manual and Report" Springer-Verlag, New York. 1975, 167 pp. .re Niklaus Wirth .I "Algorithms + Data structures = Programs" Prentice-Hall, New York. 1976, 366 pp. .SH Berkeley Pascal documents .PP The following documents are available from the Computer Center Library at the University of California, Berkeley. .nf .re William N. Joy .I "Berkeley Pascal PX Implementation Notes" Version 1.1, April 1979. (Vax-11 Version 2.0 By Kirk McKusick, December, 1979) .re William N. Joy .I "Berkeley Pascal PXP Implementation Notes" Version 1.1, April 1979. mmary alone may be enough to get you started. .SH Ex Reference Manual \- Versidoc/ps1/04.pascal/puman2.n 444 3 12 51203 3660011317 10365 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)puman2.n 6.2 (Berkeley) 5/7/86 .\" .if !\n(xx \{\ .so tmac.p \} 'if n 'ND .nr H1 1 .NH Basic UNIX Pascal .PP The following sections explain the basics of using .UP . In examples here we use the text editor .I ex (1). Users of the text editor .I ed should have little trouble following these examples, as .I ex is similar to .I ed . We use .I ex because it allows us to make clearer examples.\(dg .FS \(dg Users with \s-2CRT\s0 terminals should find the editor .I vi more pleasant to use; we do not show its use here because its display oriented nature makes it difficult to illustrate. .FE The new .UX user will find it helpful to read one of the text editor documents described in section 1.4 before continuing with this section. .NH 2 A first program .PP To prepare a program for .UP we first need to have an account on .UX and to `login' to the system on this account. These procedures are described in the documents .I "Communicating with UNIX" and .I "UNIX for Beginners". .PP Once we are logged in we need to choose a name for our program; let us call it `first' as this is the first example. We must also choose a name for the file in which the program will be stored. The .UP system requires that programs reside in files which have names ending with the sequence `.p' so we will call our file `first.p'. .PP A sample editing session to create this file would begin: .LS % \*bex first.p\fR "first.p" [New file] : .LE We didn't expect the file to exist, so the error diagnostic doesn't bother us. The editor now knows the name of the file we are creating. The `:' prompt indicates that it is ready for command input. We can add the text for our program using the `append' command as follows. .LS :\*bappend\fR .B program first(output) begin writeln('Hello, world!') end. \&. .R : .LE The line containing the single `\*b.\fR' character here indicated the end of the appended text. The `:' prompt indicates that .I ex is ready for another command. As the editor operates in a temporary work space we must now store the contents of this work space in the file `first.p' so we can use the Pascal translator and executor .IX on it. .LS :\*bwrite\fR "first.p" [New file] 4 lines, 59 characters :\*bquit\fR % .LE We wrote out the file from the edit buffer here with the `write' command, and .I ex indicated the number of lines and characters written. We then quit the editor, and now have a prompt from the shell.\(dd .FS \(dd Our examples here assume you are using .I csh. .FE .KS .PP We are ready to try to translate and execute our program. .DS .tr '\(aa^\(ua % \*bpix first.p\fR .so firstout .tr ''^^ % .DE .KE .PP The translator first printed a syntax error diagnostic. The number 2 here indicates that the rest of the line is an image of the second line of our program. The translator is saying that it expected to find a `;' before the keyword .B begin on this line. If we look at the Pascal syntax charts in the Jensen-Wirth .I "User Manual" , or at some of the sample programs therein, we will see that we have omitted the terminating `;' of the .B program statement on the first line of our program. .PP One other thing to notice about the error diagnostic is the letter `e' at the beginning. It stands for `error', indicating that our input was not legal Pascal. The fact that it is an `e' rather than an `E' indicates that the translator managed to recover from this error well enough that generation of code and execution could take place. Execution is possible whenever no fatal `E' errors occur during translation. The other classes of diagnostics are `w' warnings, which do not necessarily indicate errors in the program, but point out inconsistencies which are likely to be due to program bugs, and `s' standard-Pascal violations.\*(dg .FS \*(dgThe standard Pascal warnings occur only when the associated .B s translator option is enabled. The .B s option is discussed in sections 5.1 and A.6 below. Warning diagnostics are discussed at the end of section 3.2, the associated .B w option is described in section 5.2. .FE .PP After completing the translation of the program to interpretive code, the Pascal system indicates that execution of the translated program began. The output from the execution of the program then appeared. At program termination, the Pascal runtime system indicated the number of statements executed, and the amount of cpu time used, with the resolution of the latter being 1/60'th of a second. .PP Let us now fix the error in the program and translate it to a permanent object code file .I obj using .PI . The program .PI translates Pascal programs but stores the object code instead of executing it\*(dd. .FS \*(ddThis script indicates some other useful approaches to debugging Pascal programs. As in .I ed we can shorten commands in .I ex to an initial prefix of the command name as we did with the .I substitute command here. We have also used the `!' shell escape command here to execute other commands with a shell without leaving the editor. .FE .LS % \*bex first.p\fR "first.p" 4 lines, 59 characters :\*b1 print\fR program first(output) :\*bs/$/;\fR program first(output); :\*bwrite\fR "first.p" 4 lines, 60 characters :\*bquit\fR % \*bpi first.p\fR % .LE If we now use the .UX .I ls list files command we can see what files we have: .LS % \*bls\fR first.p obj % .LE The file `obj' here contains the Pascal interpreter code. We can execute this by typing: .LS % \*bpx obj\fR .so firstobjout % .LE Alternatively, the command: .LS % \*bobj\fR .LE will have the same effect. Some examples of different ways to execute the program follow. .LS % \*bpx\fR .so firstobjout % \*bpi -p first.p\fR % \*bpx obj\fR .so firstobjout2 % \*bpix -p first.p\fR .so firstobjout2 % .LE .PP Note that .I px will assume that `obj' is the file we wish to execute if we don't tell it otherwise. The last two translations use the .B \-p no-post-mortem option to eliminate execution statistics and `Execution begins' and `Execution terminated' messages. See section 5.2 for more details. If we now look at the files in our directory we will see: .LS % \*bls\fR first.p obj % .LE We can give our object program a name other than `obj' by using the move command .I mv (1). Thus to name our program `hello': .LS % \*bmv obj hello\fR % \*bhello\fR Hello, world! % \*bls\fR first.p hello % .LE Finally we can get rid of the Pascal object code by using the .I rm (1) remove file command, e.g.: .LS % \*brm hello\fR % \*bls\fR first.p % .LE .PP For small programs which are being developed .IX tends to be more convenient to use than .PI and .X . Except for absence of the .I obj file after a .IX run, a .IX command is equivalent to a .PI command followed by a .X command. For larger programs, where a number of runs testing different parts of the program are to be made, .PI is useful as this .I obj file can be executed any desired number of times. .. >>> INSERT SECTION FOR PC <<< .NH 2 A larger program .PP Suppose that we have used the editor to put a larger program in the file `bigger.p'. We can list this program with line numbers by using the program .I cat -n i.e.: .LS % \*bcat -n bigger.p\fR .so bigger3.p % .LE This program is similar to program 4.9 on page 30 of the Jensen-Wirth .I "User Manual" . A number of problems have been introduced into this example for pedagogical reasons. .br .PP If we attempt to translate and execute the program using .IX we get the following response: .LS % \*bpix bigger.p\fR .so bigout1 % .LE .PP Since there were fatal `E' errors in our program, no code was generated and execution was necessarily suppressed. One thing which would be useful at this point is a listing of the program with the error messages. We can get this by using the command: .LS % \*bpi -l bigger.p\fR .LE There is no point in using .IX here, since we know there are fatal errors in the program. This command will produce the output at our terminal. If we are at a terminal which does not produce a hard copy we may wish to print this listing off-line on a line printer. We can do this with the command: .LS % \*bpi -l bigger.p | lpr\fR .LE .PP In the next few sections we will illustrate various aspects of the Berkeley Pascal system by correcting this program. .NH 2 Correcting the first errors .PP Most of the errors which occurred in this program were .I syntactic errors, those in the format and structure of the program rather than its content. Syntax errors are flagged by printing the offending line, and then a line which flags the location at which an error was detected. The flag line also gives an explanation stating either a possible cause of the error, a simple action which can be taken to recover from the error so as to be able to continue the analysis, a symbol which was expected at the point of error, or an indication that the input was `malformed'. In the last case, the recovery may skip ahead in the input to a point where analysis of the program can continue. .PP In this example, the first error diagnostic indicates that the translator detected a comment within a comment. While this is not considered an error in `standard' Pascal, it usually corresponds to an error in the program which is being translated. In this case, we have accidentally omitted the trailing `*)' of the comment on line 8. We can begin an editor session to correct this problem by doing: .LS % \*bex bigger.p\fR "bigger.p" 24 lines, 512 characters :\*b8s/$/ *)\fR s = 32; (* 32 character width for interval [x, x+1] *) : .LE .PP The second diagnostic, given after line 16, indicates that the keyword .B do was expected before the keyword .B begin in the .B for statement. If we examine the .I statement syntax chart on page 118 of the Jensen-Wirth .I "User Manual" we will discover that .B do is a necessary part of the .B for statement. Similarly, we could have referred to section C.3 of the Jensen-Wirth .I "User Manual" to learn about the .B for statement and gotten the same information there. It is often useful to refer to these syntax charts and to the relevant sections of this book. .PP We can correct this problem by first scanning for the keyword .B for in the file and then substituting the keyword .B do to appear in front of the keyword .B begin there. Thus: .LS :\*b/for\fR for i := 0 to lim begin :\*bs/begin/do &\fR for i := 0 to lim do begin : .LE The next error in the program is easy to pinpoint. On line 18, we didn't hit the shift key and got a `9' instead of a `)'. The translator diagnosed that `x9' was an undefined variable and, later, that a `)' was missing in the statement. It should be stressed that .PI is not suggesting that you should insert a `)' before the `;'. It is only indicating that making this change will help it to be able to continue analyzing the program so as to be able to diagnose further errors. You must then determine the true cause of the error and make the appropriate correction to the source text. .PP This error also illustrates the fact that one error in the input may lead to multiple error diagnostics. .I Pi attempts to give only one diagnostic for each error, but single errors in the input sometimes appear to be more than one error. It is also the case that .PI may not detect an error when it occurs, but may detect it later in the input. This would have happened in this example if we had typed `x' instead of `x9'. .PP The translator next detected, on line 19, that the function .I Round and the variable .I h were undefined. It does not know about .I Round because .UP normally distinguishes between upper and lower case.\*(dg .FS \*(dgIn ``standard'' Pascal no distinction is made based on case. .FE On .UX lower-case is preferred\*(dd, .FS \*(ddOne good reason for using lower-case is that it is easier to type. .FE and all keywords and built-in .B procedure and .B function names are composed of lower-case letters, just as they are in the Jensen-Wirth .I "Pascal Report" . Thus we need to use the function .I round here. As far as .I h is concerned, we can see why it is undefined if we look back to line 9 and note that its definition was lost in the non-terminated comment. This diagnostic need not, therefore, concern us. .PP The next error which occurred in the program caused the translator to insert a `;' before the statement calling .I writeln on line 23. If we examine the program around the point of error we will see that the actual error is that the keyword .B until and an associated expression have been omitted here. Note that the diagnostic from the translator does not indicate the actual error, and is somewhat misleading. The translator made the correction which seemed to be most plausible. As the omission of a `;' character is a common mistake, the translator chose to indicate this as a possible fix here. It later detected that the keyword .B until was missing, but not until it saw the keyword .B end on line 24. The combination of these diagnostics indicate to us the true problem. .PP The final syntactic error message indicates that the translator needed an .B end keyword to match the .B begin at line 15. Since the .B end at line 24 is supposed to match this .B begin , we can infer that another .B begin must have been mismatched, and have matched this .B end . Thus we see that we need an .B end to match the .B begin at line 16, and to appear before the final .B end . We can make these corrections: .LS :\*b/x9/s//x)\fR y := exp(-x) * sin(i * x); :\*b+s/Round/round\fR n := round(s * y) + h; :\*b/write\fR write(' '); :\*b/\fR writeln('*') :\*binsert\fR \*buntil n = 0;\fR \&\*b.\fR :\*b$\fR end. :\*binsert\fR \*bend\fR \&\*b.\fR : .LE .PP At the end of each .B procedure or .B function and the end of the .B program the translator summarizes references to undefined variables and improper usages of variables. It also gives warnings about potential errors. In our program, the summary errors do not indicate any further problems but the warning that .I c is unused is somewhat suspicious. Examining the program we see that the constant was intended to be used in the expression which is an argument to .I sin , so we can correct this expression, and translate the program. We have now made a correction for each diagnosed error in our program. .LS :\*b?i ?s//c /\fR y := exp(-x) * sin(c * x); :\*bwrite\fR "bigger.p" 26 lines, 538 characters :\*bquit\fR % \*bpi bigger.p\fR % .LE It should be noted that the translator suppresses warning diagnostics for a particular .B procedure , .B function or the main .B program when it finds severe syntax errors in that part of the source text. This is to prevent possibly confusing and incorrect warning diagnostics from being produced. Thus these warning diagnostics may not appear in a program with bad syntax errors until these errors are corrected. .KS .PP We are now ready to execute our program for the first time. We will do so in the next section after giving a listing of the corrected program for reference purposes. .LS % \*bcat -n bigger.p\fR .so bigger6.p % .LE .NH 2 Executing the second example .PP We are now ready to execute the second example. The following output was produced by our first run. .LS % \*bpx\fR .so bigout2 % .LE Here the interpreter is presenting us with a runtime error diagnostic. It detected a `division by zero' at line 17. Examining line 17, we see that we have written the statement `x := d / i' instead of `x := d * i'. We can correct this and rerun the program: .LS % \*bex bigger.p\fR "bigger.p" 26 lines, 538 characters :\*b17\fR x := d / i :\*bs'/'*\fR x := d * i :\*bwrite\fR "bigger.p" 26 lines, 538 characters :\*bq\fR % \*bpix bigger.p\fR .so bigout3 % .LE .KS .PP This appears to be the output we wanted. We could now save the output in a file if we wished by using the shell to redirect the output: .LS % \*bpx > graph\fR .LE .KE We can use .I cat (1) to see the contents of the file graph. We can also make a listing of the graph on the line printer without putting it into a file, e.g. .LS % \*bpx | lpr\fR .so bigout4 % .LE Note here that the statistics lines came out on our terminal. The statistics line comes out on the diagnostic output (unit 2.) There are two ways to get rid of the statistics line. We can redirect the statistics message to the printer using the syntax `|\|&' to the shell rather than `|', i.e.: .LS % \*bpx |\|& lpr\fR % .LE or we can translate the program with the .B p option disabled on the command line as we did above. This will disable all post-mortem dumping including the statistics line, thus: .LS % \*bpi -p bigger.p\fR % \*bpx | lpr\fR % .LE This option also disables the statement limit which normally guards against infinite looping. You should not use it until your program is debugged. Also if .B p is specified and an error occurs, you will not get run time diagnostic information to help you determine what the problem is. .NH 2 Formatting the program listing .PP It is possible to use special lines within the source text of a program to format the program listing. An empty line (one with no characters on it) corresponds to a `space' macro in an assembler, leaving a completely blank line without a line number. A line containing only a control-l (form-feed) character will cause a page eject in the listing with the corresponding line number suppressed. This corresponds to an `eject' pseudo-instruction. See also section 5.2 for details on the .B n and .B i options of .PI . .NH 2 Execution profiling .PP An execution profile consists of a structured listing of (all or part of) a program with information about the number of times each statement in the program was executed for a particular run of the program. These profiles can be used for several purposes. In a program which was abnormally terminated due to excessive looping or recursion or by a program fault, the counts can facilitate location of the error. Zero counts mark portions of the program which were not executed; during the early debugging stages they should prompt new test data or a re-examination of the program logic. The profile is perhaps most valuable, however, in drawing attention to the (typically small) portions of the program that dominate execution time. This information can be used for source level optimization. .SH An example .PP A prime number is a number which is divisible only by itself and the number one. The program .I primes , written by Niklaus Wirth, determines the first few prime numbers. In translating the program we have specified the .B z option to .IX . This option causes the translator to generate counters and count instructions sufficient in number to determine the number of times each statement in the program was executed.\*(dg .FS \*(dgThe counts are completely accurate only in the absence of runtime errors and nonlocal .B goto statements. This is not generally a problem, however, as in structured programs nonlocal .B goto statements occur infrequently, and counts are incorrect after abnormal termination only when the .I "upward look" described below to get a count passes a suspended call point. .FE When execution of the program completes, either normally or abnormally, this count data is written to the file .I pmon.out in the current directory.\*(dd .FS \*(dd\c .I Pmon.out has a name similar to .I mon.out the monitor file produced by the profiling facility of the C compiler .I cc (1). See .I prof (1) for a discussion of the C compiler profiling facilities. .FE It is then possible to prepare an execution profile by giving .XP the name of the file associated with this data, as was done in the following example. .LS % \*bpix -l -z primes.p\fR .so primeout1 % .LE .SH Discussion .PP The header lines of the outputs of .IX and .XP in this example indicate the version of the translator and execution profiler in use at the time this example was prepared. The time given with the file name (also on the header line) indicates the time of last modification of the program source file. This time serves to .I "version stamp" the input program. .I Pxp also indicates the time at which the profile data was gathered. .LS % \*bpxp -z primes.p\fR .so primeout2 % .LE .KE .PP To determine the number of times a statement was executed, one looks to the left of the statement and finds the corresponding vertical bar `|'. If this vertical bar is labelled with a count then that count gives the number of times the statement was executed. If the bar is not labelled, we look up in the listing to find the first `|' which directly above the original one which has a count and that is the answer. Thus, in our example, .I k was incremented 157 times on line 18, while the .I write procedure call on line 24 was executed 48 times as given by the count on the .B repeat . .PP More information on .I pxp can be found in its manual section .XP (1) and in sections 5.4, 5.5 and 5.10. that making this change will help it to be able to continue analyzing the program so as to be able to diagnose further errors. You must then determine the true cause of the error and make the appropriate correction to the source text. .PP This error also illustrates the fact that one error in the input may lead to multiple error diagnostics. .I Pi attempts to give only one diagdoc/ps1/04.pascal/synerr2.p 444 3 12 147 3650315017 10535 program synerr2(input,outpu); integer a(10) begin read(b); for c := 1 to 10 do a(c) := b * c; end. err2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/synerr.p 444 3 12 173 3650315020 10444 program syn(output); var i, j are integer; begin for j :* 1 to 20 begin write(j); i = 2 ** j; writeln(i)) end end. pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/csfix.c 444 3 12 6426 3657776556 10310 /* * Copyright (c) 1980 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ #ifndef lint char copyright[] = "@(#) Copyright (c) 1980 Regents of the University of California.\n\ All rights reserved.\n"; #endif not lint #ifndef lint static char sccsid[] = "@(#)csfix.c 6.2 (Berkeley) 5/7/86"; #endif not lint #include /* * csfix - fix constant spacing for error message flags in troff * * Bill Joy UCB September 11, 1977 * * This would be better written in snobol! * * Normally fixes error flags in a pi listing * Optional - causes fixing of '---' and initial blank widthin a pxp profile. */ char flag, dflag; main(argc, argv) int argc; char *argv[]; { argc--, argv++; if (argc > 0 && argv[0][0] == '-' && argv[0][1] == 'd') dflag++, argc--, argv++; if (argc > 0 && argv[0][0] == '-') flag++, argc--, argv++; if (argc != 0) { write(2, "Usage: csfix\n", 13); exit(1); } while (getline()) { if (errline()) { flag ? fixpxp() : reformat(); continue; } if (flag) { fixdigits(); continue; } if (spwarn()) continue; if (nontriv()) save(); if (dflag) fixdigits(); else putline(); } exit(0); } char line[160], flagee[160], *digitty(); getline() { register char *cp, c; for (cp = line, c = getchar(); c != '\n' && c != EOF; c = getchar()) *cp++ = c; if (c == EOF) return (0); *cp = 0; return (1); } errline() { register int i; register char *cp; for (cp = line; cp[0] && cp[1] && cp[2]; cp++) if (cp[0] == '-' && cp[1] == '-' && cp[2] == '-') return (1); return (0); } reformat() { register char *cp, c, *tail; printf("%2.2s", line); if (line[0] != 'w') printf("\\l'\\w`w `u-\\w`%2.2s`u '", line); for (cp = line; *cp != 0 && *cp != '^'; cp++) continue; tail = cp + 1; if (cp[-1] == '\b' && cp[-2] == '|') cp -= 2; c = flagee[cp - line]; flagee[cp - line] = 0; printf("\\l'\\w`%s`u-\\w`w `u\\&\\(rh'", flagee); flagee[cp - line] = c; if (c == '\0') c = flagee[cp - line - 1]; printf("\\l'(\\w`%c`u-\\w`^`u)/2 '", c); printf("\\(ua"); printf("\\l'(\\w`%c`u-\\w`^`u)/2 '", c); printf("\\l'\\w`---`u\\&\\(rh'%s\n", tail+3); } nontriv() { switch (line[0]) { case 'E': case 'e': case 'w': case 's': case 0: return (0); } return (1); } save() { strcpy(flagee, line); } putline() { printf("%s\n", flag ? digitty(0) : line); } spwarn() { if (line[0] != ' ' || line[1] != ' ' || line[2] != 'w') return (0); printf(" \\l'(\\w`E`u-\\w`w`u)/2 'w\\l'(\\w`E`u-\\w`w`u)/2 '"); printf(&line[3]); printf("\n"); return (1); } fixpxp() { register char *cp; for (cp = line; *cp != '-'; cp++) continue; *cp = 0; printf("%s\\l'\\w`\\0\\0\\0\\0`u-\\w`.`u\\&\\(rh'%s\n", digitty(1), cp + 3); } char * digitty(yup) char yup; { register char *cp, *dp, *lp; for (lp = line; *lp && *lp != '|'; lp++) continue; if (yup == 0 && !*lp) return (line); for (cp = line, dp = flagee; cp < lp; cp++) if (*cp == ' ') *dp++ = '\\', *dp++ = '0'; else *dp++ = *cp; strcpy(dp, cp); return (flagee); } fixdigits() { register char *cp, c; for (cp = line; *cp == ' ' || *cp >= '0' && *cp <= '9'; cp++) continue; c = *cp, *cp = 0; digitty(1); *cp = c; printf("%s%s\n", flagee, cp); } lagee[160], *digitty(); getline() { register char *cp, c; for (cp = line, c = getchar(); c != '\n' && c != EOF; c = getchar()) *cp++ = c; if (c == EOF) return (0); *cp = 0; return (1); } errline() { register int i; regisdoc/ps1/04.pascal/sin2.p 444 3 12 75 3650315021 7757 program sinout(output); begin write(sin('*')); end. 3puman1.n2puman2.n1 synerr2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/sin1.p 444 3 12 75 3650315022 7757 program sinout(output); begin write(sin(1,2)); end. 3puman1.n2puman2.n1 synerr2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/puman0.n 444 3 12 7121 3660011167 10346 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)puman0.n 6.2 (Berkeley) 5/7/86 .\" .so tmac.p .EH 'PS1:4-%''Berkeley Pascal User\'s Manual' .OH 'Berkeley Pascal User\'s Manual''PS1:4-%' .TL Berkeley Pascal User's Manual .br Version 3.1 \- April 1986 .AU William N. Joy\(dd, Susan L. Graham, Charles B. Haley\(dd, Marshall Kirk McKusick, and Peter B. Kessler\(dd .AI Computer Science Division .if n Department of Electrical Engineering .if n and Computer Science .if t Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 ...AI ...MH .AB .FS Copyright 1977, 1979, 1980, 1983 W. N. Joy, S. L. Graham, C. B. Haley, M. K. McKusick, P. B. Kessler .FE .FS \(ddAuthor's current addresses: William Joy: Sun Microsystems, 2550 Garcia Ave., Mountain View, CA 94043; Charles Haley: S & B Associates, 1110 Centennial Ave., Piscataway, NJ 08854; Peter Kessler: Xerox Research Park, Palo Alto, CA .FE .PP Berkeley Pascal is designed for interactive instructional use and runs on the \s-2PDP\s0/11 and \s-2VAX\s0/11 computers. Interpretive code is produced, providing fast translation at the expense of slower execution speed. There is also a fully compatible compiler for the \s-2VAX\s0/11. An execution profiler and Wirth's cross reference program are also available with the system. .PP The system supports full Pascal. The language accepted is `standard' Pascal, and a small number of extensions. There is an option to suppress the extensions. The extensions include a separate compilation facility and the ability to link to object modules produced from other source languages. .PP The .UM gives a list of sources relating to the .UX system, the Pascal language, and the .UP system. Basic usage examples are provided for the Pascal components .PI , .X , .IX , .PC , and .XP . Errors commonly encountered in these programs are discussed. Details are given of special considerations due to the interactive implementation. A number of examples are provided including many dealing with input/output. An appendix supplements Wirth's .I "Pascal Report" to form the full definition of the Berkeley implementation of the language. .AE .sp .SH 'if n 'ND Introduction .PP The .UP .UM consists of five major sections and an appendix. In section 1 we give sources of information about .UX , about the programming language Pascal, and about the Berkeley implementation of the language. Section 2 introduces the Berkeley implementation and provides a number of tutorial examples. Section 3 discusses the error diagnostics produced by the translators .PC and .PI , and the runtime interpreter .X . Section 4 describes input/output with special attention given to features of the interactive implementation and to features unique to .UX . Section 5 gives details on the components of the system and explanation of all relevant options. The .UM concludes with an appendix to Wirth's .I "Pascal Report" with which it forms a precise definition of the implementation. .SH History of the implementation .PP The first Berkeley system was written by Ken Thompson in early 1976. The main features of the present system were implemented by Charles Haley and William Joy during the latter half of 1976. Earlier versions of this system have been in use since January, 1977. .PP The system was moved to the \s-2VAX\s0-11 by Peter Kessler and Kirk McKusick with the porting of the interpreter in the spring of 1979, and the implementation of the compiler in the summer of 1980. similar to .I mon.out the monitor file produced by the profiling facility of the C compiler .I cc (1). See .I prof (1) for a discussion of the C compiler profiling facilities. .FE It is then possible to prepare an execution profile by giving .XP the name of the file associated with this data, as was done in the following example. .LS % \*bpix -l -z primes.p\fR .so primeout1 % .LE .SH Discussion .PP The header lines of the outpdoc/ps1/04.pascal/puman3.n 444 3 12 50427 3660011321 10370 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)puman3.n 6.2 (Berkeley) 5/7/86 .\" .if !\n(xx \{\ .so tmac.p \} .if n 'ND .nr H1 2 .NH Error diagnostics .PP This section of the .UM discusses the error diagnostics of the programs .PI , .PC and .X . .I Pix is a simple but useful program which invokes .PI and .X to do all the real processing. See its manual section .IX (1) and section 5.2 below for more details. All the diagnostics given by .PI will also be given by .PC . .NH 2 Translator syntax errors .PP A few comments on the general nature of the syntax errors usually made by Pascal programmers and the recovery mechanisms of the current translator may help in using the system. .SH Illegal characters .PP Characters such as `$', `!', and `@' are not part of the language Pascal. If they are found in the source program, and are not part of a constant string, a constant character, or a comment, they are considered to be `illegal characters'. This can happen if you leave off an opening string quote `\(aa'. Note that the character `"', although used in English to quote strings, is not used to quote strings in Pascal. Most non-printing characters in your input are also illegal except in character constants and character strings. Except for the tab and form feed characters, which are used to ease formatting of the program, non-printing characters in the input file print as the character `?' so that they will show in your listing. .SH String errors .PP There is no character string of length 0 in Pascal. Consequently the input `\(aa\(aa' is not acceptable. Similarly, encountering an end-of-line after an opening string quote `\(aa' without encountering the matching closing quote yields the diagnostic ``Unmatched \(aa for string''. It is permissible to use the character `#' instead of `\'' to delimit character and constant strings for portability reasons. For this reason, a spuriously placed `#' sometimes causes the diagnostic about unbalanced quotes. Similarly, a `#' in column one is used when preparing programs which are to be kept in multiple files. See section 5.11 for details. .SH Comments in a comment, non-terminated comments .PP As we saw above, these errors are usually caused by leaving off a comment delimiter. You can convert parts of your program to comments without generating this diagnostic since there are two different kinds of comments \- those delimited by `{' and `}', and those delimited by `(*' and `*)'. Thus consider: .LS { This is a comment enclosing a piece of program a := functioncall; (* comment within comment *) procedurecall; lhs := rhs; (* another comment *) } .LE .PP By using one kind of comment exclusively in your program you can use the other delimiters when you need to ``comment out'' parts of your program\*(dg. .FS \*(dgIf you wish to transport your program, especially to the 6000-3.4 implementation, you should use the character sequence `(*' to delimit comments. For transportation over the .I rcslink to Pascal 6000-3.4, the character `#' should be used to delimit characters and constant strings. .FE In this way you will also allow the translator to help by detecting statements accidentally placed within comments. .PP If a comment does not terminate before the end of the input file, the translator will point to the beginning of the comment, indicating that the comment is not terminated. In this case processing will terminate immediately. See the discussion of ``QUIT'' below. .SH Digits in numbers .PP This part of the language is a minor nuisance. Pascal requires digits in real numbers both before and after the decimal point. Thus the following statements, which look quite reasonable to .SM FORTRAN .NL users, generate diagnostics in Pascal: .LS .so digitsout .LE These same constructs are also illegal as input to the Pascal interpreter .I px . .SH Replacements, insertions, and deletions .PP When a syntax error is encountered in the input text, the parser invokes an error recovery procedure. This procedure examines the input text immediately after the point of error and considers a set of simple corrections to see whether they will allow the analysis to continue. These corrections involve replacing an input token with a different token, inserting a token, or replacing an input token with a different token. Most of these changes will not cause fatal syntax errors. The exception is the insertion of or replacement with a symbol such as an identifier or a number; in this case the recovery makes no attempt to determine .I which identifier or .I what number should be inserted, hence these are considered fatal syntax errors. .PP Consider the following example. .LS % \*bpix -l synerr.p\fR .tr -- .so synerrout % .LE The only surprise here may be that Pascal does not have an exponentiation operator, hence the complaint about `**'. This error illustrates that, if you assume that the language has a feature which it does not, the translator diagnostic may not indicate this, as the translator is unlikely to recognize the construct you supply. .SH Undefined or improper identifiers .PP If an identifier is encountered in the input but is undefined, the error recovery will replace it with an identifier of the appropriate class. Further references to this identifier will be summarized at the end of the containing .B procedure or .B function or at the end of the .B program if the reference occurred in the main program. Similarly, if an identifier is used in an inappropriate way, e.g. if a .B type identifier is used in an assignment statement, or if a simple variable is used where a .B record variable is required, a diagnostic will be produced and an identifier of the appropriate type inserted. Further incorrect references to this identifier will be flagged only if they involve incorrect use in a different way, with all incorrect uses being summarized in the same way as undefined variable uses are. .SH Expected symbols, malformed constructs .PP If none of the above mentioned corrections appear reasonable, the error recovery will examine the input to the left of the point of error to see if there is only one symbol which can follow this input. If this is the case, the recovery will print a diagnostic which indicates that the given symbol was `Expected'. .PP In cases where none of these corrections resolve the problems in the input, the recovery may issue a diagnostic that indicates that the input is ``malformed''. If necessary, the translator may then skip forward in the input to a place where analysis can continue. This process may cause some errors in the text to be missed. .PP Consider the following example: .LS % \*bpix -l synerr2.p\fR .so synerr2out % .LE Here we misspelled .I output and gave a .SM FORTRAN style variable declaration which the translator diagnosed as a `Malformed declaration'. When, on line 6, we used `(' and `)' for subscripting (as in .SM FORTRAN ) rather than the `[' and `]' which are used in Pascal, the translator noted that .I a was not defined as a .B procedure . This occurred because .B procedure and .B function argument lists are delimited by parentheses in Pascal. As it is not permissible to assign to procedure calls the translator diagnosed a malformed statement at the point of assignment. .SH Expected and unexpected end-of-file, ``QUIT'' .PP If the translator finds a complete program, but there is more non-comment text in the input file, then it will indicate that an end-of-file was expected. This situation may occur after a bracketing error, or if too many .B end s are present in the input. The message may appear after the recovery says that it ``Expected \`.\'\|'' since `.' is the symbol that terminates a program. .PP If severe errors in the input prohibit further processing the translator may produce a diagnostic followed by ``QUIT''. One example of this was given above \- a non-terminated comment; another example is a line which is longer than 160 characters. Consider also the following example. .LS % \*bpix -l mism.p\fR .so mismout % .LE .NH 2 Translator semantic errors .PP The extremely large number of semantic diagnostic messages which the translator produces make it unreasonable to discuss each message or group of messages in detail. The messages are, however, very informative. We will here explain the typical formats and the terminology used in the error messages so that you will be able to make sense out of them. In any case in which a diagnostic is not completely comprehensible you can refer to the .I "User Manual" by Jensen and Wirth for examples. .SH Format of the error diagnostics .PP As we saw in the example program above, the error diagnostics from the Pascal translator include the number of a line in the text of the program as well as the text of the error message. While this number is most often the line where the error occurred, it is occasionally the number of a line containing a bracketing keyword like .B end or .B until . In this case, the diagnostic may refer to the previous statement. This occurs because of the method the translator uses for sampling line numbers. The absence of a trailing `;' in the previous statement causes the line number corresponding to the .B end or .B until . to become associated with the statement. As Pascal is a free-format language, the line number associations can only be approximate and may seem arbitrary to some users. This is the only notable exception, however, to reasonable associations. .SH Incompatible types .PP Since Pascal is a strongly typed language, many semantic errors manifest themselves as type errors. These are called `type clashes' by the translator. The types allowed for various operators in the language are summarized on page 108 of the Jensen-Wirth .I "User Manual" . It is important to know that the Pascal translator, in its diagnostics, distinguishes between the following type `classes': .br .ne 8 .TS center; lew(10) le le le le. array Boolean char file integer pointer real record scalar string .TE These words are plugged into a great number of error messages. Thus, if you tried to assign an .I integer value to a .I char variable you would receive a diagnostic like the following: .LS .so clashout .LE In this case, one error produced a two line error message. If the same error occurs more than once, the same explanatory diagnostic will be given each time. .SH Scalar .PP The only class whose meaning is not self-explanatory is `scalar'. Scalar has a precise meaning in the Jensen-Wirth .I "User Manual" where, in fact, it refers to .I char , .I integer , .I real , and .I Boolean types as well as the enumerated types. For the purposes of the Pascal translator, scalar in an error message refers to a user-defined, enumerated type, such as .I ops in the example above or .I color in .LS \*btype\fP color = (red, green, blue) .LE For integers, the more explicit denotation .I integer is used. Although it would be correct, in the context of the .I "User Manual" to refer to an integer variable as a .I scalar variable .PI prefers the more specific identification. .SH Function and procedure type errors .PP For built-in procedures and functions, two kinds of errors occur. If the routines are called with the wrong number of arguments a message similar to: .LS .so sinout1 .LE is given. If the type of the argument is wrong, a message like .LS .so sinout2 .LE is produced. A few functions and procedures implemented in Pascal 6000-3.4 are diagnosed as unimplemented in Berkeley Pascal, notably those related to .B segmented files. .SH Can't read and write scalars, etc. .PP The messages which state that scalar (user-defined) types cannot be written to and from files are often mysterious. It is in fact the case that if you define .LS \*btype\fP color = (red, green, blue) .LE ``standard'' Pascal does not associate these constants with the strings `red', `green', and `blue' in any way. An extension has been added which allows enumerated types to be read and written, however if the program is to be portable, you will have to write your own routines to perform these functions. Standard Pascal only allows the reading of characters, integers and real numbers from text files. You cannot read strings or Booleans. It is possible to make a .LS \*bfile of\fP color .LE but the representation is binary rather than string. .SH Expression diagnostics .PP The diagnostics for semantically ill-formed expressions are very explicit. Consider this sample translation: .LS % \*bpi -l expr.p\fP .so exprout % .LE This example is admittedly far-fetched, but illustrates that the error messages are sufficiently clear to allow easy determination of the problem in the expressions. .SH Type equivalence .PP Several diagnostics produced by the Pascal translator complain about `non-equivalent types'. In general, Berkeley Pascal considers variables to have the same type only if they were declared with the same constructed type or with the same type identifier. Thus, the variables .I x and .I y declared as .LS \*bvar\fP x: ^ integer; y: ^ integer; .LE do not have the same type. The assignment .LS x := y .LE thus produces the diagnostics: .LS .so typequout .LE Thus it is always necessary to declare a type such as .LS \*btype\fP intptr = ^ integer; .LE and use it to declare .LS \*bvar\fP x: intptr; y: intptr; .LE Note that if we had initially declared .LS \*bvar\fP x, y: ^ integer; .LE then the assignment statement would have worked. The statement .LS x^ := y^ .LE is allowed in either case. Since the parameter to a .B procedure or .B function must be declared with a type identifier rather than a constructed type, it is always necessary, in practice, to declare any type which will be used in this way. .SH Unreachable statements .PP Berkeley Pascal flags unreachable statements. Such statements usually correspond to errors in the program logic. Note that a statement is considered to be reachable if there is a potential path of control, even if it can never be taken. Thus, no diagnostic is produced for the statement: .LS \*bif\fP false \*bthen\fP writeln('impossible!') .LE .SH Goto's into structured statements .PP The translator detects and complains about .B goto statements which transfer control into structured statements (\c .B for , .B while , etc.) It does not allow such jumps, nor does it allow branching from the .B then part of an .B if statement into the .B else part. Such checks are made only within the body of a single procedure or function. .SH Unused variables, never set variables .PP Although .PI always clears variables to 0 at .B procedure and .B function entry, .PC does not unless runtime checking is enabled using the .B C option. It is .B not good programming practice to rely on this initialization. To discourage this practice, and to help detect errors in program logic, .PI flags as a `w' warning error: .IP .RS .HP 1) Use of a variable which is never assigned a value. .IP 2) A variable which is declared but never used, distinguishing between those variables for which values are computed but which are never used, and those completely unused. .RE .LP In fact, these diagnostics are applied to all declared items. Thus a .B const or a .B procedure which is declared but never used is flagged. The .B w option of .PI may be used to suppress these warnings; see sections 5.1 and 5.2. .NH 2 Translator panics, i/o errors .SH Panics .PP One class of error which rarely occurs, but which causes termination of all processing when it does is a panic. A panic indicates a translator-detected internal inconsistency. A typical panic message is: .LS snark (rvalue) line=110 yyline=109 Snark in pi .LE If you receive such a message, the translation will be quickly and perhaps ungracefully terminated. You should contact a teaching assistant or a member of the system staff, after saving a copy of your program for later inspection. If you were making changes to an existing program when the problem occurred, you may be able to work around the problem by ascertaining which change caused the .I snark and making a different change or correcting an error in the program. A small number of panics are possible in .X . All panics should be reported to a teaching assistant or systems staff so that they can be fixed. .SH Out of memory .PP The only other error which will abort translation when no errors are detected is running out of memory. All tables in the translator, with the exception of the parse stack, are dynamically allocated, and can grow to take up the full available process space of 64000 bytes on the \s-2PDP\s0-11. On the \s-2VAX\s0-11, table sizes are extremely generous and very large (25000) line programs have been easily accommodated. For the \s-2PDP\s0\-11, it is generally true that the size of the largest translatable program is directly related to .B procedure and .B function size. A number of non-trivial Pascal programs, including some with more than 2000 lines and 2500 statements have been translated and interpreted using Berkeley Pascal on \s-2PDP\s0-11's. Notable among these are the Pascal-S interpreter, a large set of programs for automated generation of code generators, and a general context-free parsing program which has been used to parse sentences with a grammar for a superset of English. In general, very large programs should be translated using .PC and the separate compilation facility. .PP If you receive an out of space message from the translator during translation of a large .B procedure or .B function or one containing a large number of string constants you may yet be able to translate your program if you break this one .B procedure or .B function into several routines. .SH I/O errors .PP Other errors which you may encounter when running .PI relate to input-output. If .PI cannot open the file you specify, or if the file is empty, you will be so informed. .NH 2 Run-time errors .PP We saw, in our second example, a run-time error. We here give the general description of run-time errors. The more unusual interpreter error messages are explained briefly in the manual section for .I px (1). .SH Start-up errors .PP These errors occur when the object file to be executed is not available or appropriate. Typical errors here are caused by the specified object file not existing, not being a Pascal object, or being inaccessible to the user. .SH Program execution errors .PP These errors occur when the program interacts with the Pascal runtime environment in an inappropriate way. Typical errors are values or subscripts out of range, bad arguments to built-in functions, exceeding the statement limit because of an infinite loop, or running out of memory\*(dd. .FS \*(ddThe checks for running out of memory are not foolproof and there is a chance that the interpreter will fault, producing a core image when it runs out of memory. This situation occurs very rarely. .FE The interpreter will produce a backtrace after the error occurs, showing all the active routine calls, unless the .B p option was disabled when the program was translated. Unfortunately, no variable values are given and no way of extracting them is available.* .FS * On the \s-2VAX\s0-11, each variable is restricted to allocate at most 65000 bytes of storage (this is a \s-2PDP\s0-11ism that has survived to the \s-2VAX\s0.) .FE .PP As an example of such an error, assume that we have accidentally declared the constant .I n1 to be 6, instead of 7 on line 2 of the program primes as given in section 2.6 above. If we run this program we get the following response. .LS % \*bpix primes.p\fP .so primeout3 % .LE .PP Here the interpreter indicates that the program terminated abnormally due to a subscript out of range near line 14, which is eight lines into the body of the program primes. .SH Interrupts .PP If the program is interrupted while executing and the .B p option was not specified, then a backtrace will be printed.\*(dg .FS \*(dgOccasionally, the Pascal system will be in an inconsistent state when this occurs, e.g. when an interrupt terminates a .B procedure or .B function entry or exit. In this case, the backtrace will only contain the current line. A reverse call order list of procedures will not be given. .FE The file .I pmon.out of profile information will be written if the program was translated with the .B z option enabled to .PI or .IX . .SH I/O interaction errors .PP The final class of interpreter errors results from inappropriate interactions with files, including the user's terminal. Included here are bad formats for integer and real numbers (such as no digits after the decimal point) when reading. The only class whose meaning is not self-explanatory is `scalar'. Scalar has a precise meaning in the Jensen-Wirth .I "User Manual" where, in fact, it refers to .I char , .I integer , .I real , and .I Boolean types as well as the endoc/ps1/04.pascal/puman4.n 444 3 12 35124 3660011323 10370 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)puman4.n 6.2 (Berkeley) 5/7/86 .\" .if !\n(xx \{\ .so tmac.p \} .nr H1 3 .if n 'ND .NH Input/output .PP This section describes features of the Pascal input/output environment, with special consideration of the features peculiar to an interactive implementation. .NH 2 Introduction .PP Our first sample programs, in section 2, used the file .I output . We gave examples there of redirecting the output to a file and to the line printer using the shell. Similarly, we can read the input from a file or another program. Consider the following Pascal program which is similar to the program .I cat (1). .LS % \*bpix -l kat.p clean.p\fR .LE Note that since the shell creates the output file `clean.p' before .XP executes, so `clean.p' and `dirty.p' must not be the same file. .PP .I Pxp automatically paragraphs the program, performing housekeeping chores such as comment alignment, and treating blank lines, lines containing exactly one blank and lines containing only a form-feed character as though they were comments, preserving their vertical spacing effect in the output. .I Pxp distinguishes between four kinds of comments: .HP .RS .IP 1) Left marginal comments, which begin in the first column of the input line and are placed in the first column of an output line. .IP 2) Aligned comments, which are preceded by no input tokens on the input line. These are aligned in the output with the running program text. .IP 3) Trailing comments, which are preceded in the input line by a token with no more than two spaces separating the token from the comment. .IP 4) Right marginal comments, which are preceded in the input line by a token from which they are separated by at least three spaces or a tab. These are aligned down the right margin of the output, currently to the first tab stop after the 40th column from the current ``left margin''. .RE .LP Consider the following program. .LS % \*bcat comments.p\fR .so comments1.p .LE When formatted by .XP the following output is produced. .LS % \*bpxp comments.p\fR .so commentsout % .LE The following formatting related options are currently available in .XP . The options .B f and .B j described in the previous section may also be of interest. .SH Strip comments \-s .PP The .B s option causes .XP to remove all comments from the input text. .SH Underline keywords \- \_ .PP A command line argument of the form .B \-\_ as in .LS % \*bpxp -_ dirty.p\fR .LE can be used to cause .XP to underline all keywords in the output for enhanced readability. .SH Specify indenting unit \- [23456789] .PP The normal unit which .XP uses to indent a structure statement level is 4 spaces. By giving an argument of the form \fB\-\fId\fR with .I d a digit, 2 \(<= .I d \(<= 9 you can specify that .I d spaces are to be used per level instead. .NH 2 Pxref .PP The cross-reference program .I pxref may be used to make cross-referenced listings of Pascal programs. To produce a cross-reference of the program in the file `foo.p' one can execute the command: .LS % \*bpxref foo.p\fR .LE The cross-reference is, unfortunately, not block structured. Full details on .I pxref are given in its manual section .I pxref (1). .NH 2 Multi-file programs .PP A text inclusion facility is available with .UP . This facility allows the interpolation of source text from other files into the source stream of the translator. It can be used to divide large programs into more manageable pieces for ease in editing, listing, and maintenance. .PP The .B include facility is based on that of the .SM UNIX .NL C compiler. To trigger it you can place the character `#' in the first portion of a line and then, after an arbitrary number of blanks or tabs, the word `include' followed by a filename enclosed in single `\(aa' or double `"' quotation marks. The file name may be followed by a semicolon `;' if you wish to treat this as a pseudo-Pascal statement. The filenames of included files must end in `.i'. An example of the use of included files in a main program would be: .LS \*bprogram\fR compiler(input, output, obj); #\*binclude\fR "globals.i" #\*binclude\fR "scanner.i" #\*binclude\fR "parser.i" #\*binclude\fR "semantics.i" \*bbegin\fR { main program } \*bend\fR. .LE .PP At the point the .B include pseudo-statement is encountered in the input, the lines from the included file are interpolated into the input stream. For the purposes of translation and runtime diagnostics and statement numbers in the listings and post-mortem backtraces, the lines in the included file are numbered from 1. Nested includes are possible up to 10 deep. .PP See the descriptions of the .B i option of .PI in section 5.2 above; this can be used to control listing when .B include files are present. .PP When a non-trivial line is encountered in the source text after an .B include finishes, the `popped' filename is printed, in the same manner as above. .PP For the purposes of error diagnostics when not making a listing, the filename will be printed before each diagnostic if the current filename has changed since the last filename was printed. .NH 2 Separate Compilation with Pc .PP A separate compilation facility is provided with the Berkeley Pascal compiler, .PC . This facility allows programs to be divided into a number of files and the pieces to be compiled individually, to be linked together at some later time. This is especially useful for large programs, where small changes would otherwise require time-consuming re-compilation of the entire program. .PP Normally, .PC expects to be given entire Pascal programs. However, if given the .B \-c option on the command line, it will accept a sequence of definitions and declarations, and compile them into a .B .o file, to be linked with a Pascal program at a later time. In order that procedures and functions be available across separately compiled files, they must be declared with the directive .B external . This directive is similar to the directive .B forward in that it must precede the resolution of the function or procedure, and formal parameters and function result types must be specified at the .B external declaration and may not be specified at the resolution. .PP Type checking is performed across separately compiled files. Since Pascal type defintions define unique types, any types which are shared between separately compiled files must be the same definition. This seemingly impossible problem is solved using a facility similar to the .B include facility discussed above. Definitions may be placed in files with the extension .B .h and the files included by separately compiled files. Each definition from a .B .h file defines a unique type, and all uses of a definition from the same .B .h file define the same type. Similarly, the facility is extended to allow the definition of .B const s and the declaration of .B label s, .B var s, and .B external .B function s and .B procedure s. Thus .B procedure s and .B function s which are used between separately compiled files must be declared .B external , and must be so declared in a .B .h file included by any file which calls or resolves the .B function or .B procedure . Conversely, .B function s and .B procedure s declared .B external may only be so declared in .B .h files. These files may be included only at the outermost level, and thus define or declare global objects. Note that since only .B external .B function and .B procedure declarations (and not resolutions) are allowed in .B .h files, statically nested .B function s and .B procedure s can not be declared .B external . .PP An example of the use of included .B .h files in a program would be: .LS \*bprogram\fR compiler(input, output, obj); #\*binclude\fR "globals.h" #\*binclude\fR "scanner.h" #\*binclude\fR "parser.h" #\*binclude\fR "semantics.h" \*bbegin\fR { main program } \*bend\fR. .LE .PP This might include in the main program the definitions and declarations of all the global .B label s, .B const s, .B type s and .B var s from the file globals.h, and the .B external .B function and .B procedure declarations for each of the separately compiled files for the scanner, parser and semantics. The header file .I scanner.h would contain declarations of the form: .LS \*btype\fR token = \*brecord\fR { token fields } \*bend\fR; \*bfunction\fR scan(\*bvar\fR inputfile: text): token; \*bexternal\fR; .LE .ne 15 Then the scanner might be in a separately compiled file containing: .LS #\*binclude\fR "globals.h" #\*binclude\fR "scanner.h" \*bfunction\fR scan; \*bbegin\fR { scanner code } \*bend\fR; .LE which includes the same global definitions and declarations and resolves the scanner functions and procedures declared .B external in the file scanner.h. g .B d on the command line suppresses declaration parts. .SH Eliminate include directives \- e .PP Normally, .XP preserves .B incdoc/ps1/04.pascal/pumanA.n 444 3 12 53455 3660011171 10415 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)pumanA.n 6.2 (Berkeley) 5/7/86 .\" .if !\n(xx \{\ .so tmac.p \} .ND .nr H1 0 .af H1 A .NH Appendix to Wirth's Pascal Report .PP This section is an appendix to the definition of the Pascal language in Niklaus Wirth's .I "Pascal Report" and, with that Report, precisely defines the Berkeley implementation. This appendix includes a summary of extensions to the language, gives the ways in which the undefined specifications were resolved, gives limitations and restrictions of the current implementation, and lists the added functions and procedures available. It concludes with a list of differences with the commonly available Pascal 6000\-3.4 implementation, and some comments on standard and portable Pascal. .NH 2 Extensions to the language Pascal .PP This section defines non-standard language constructs available in .UP . The .B s standard Pascal option of the translators .PI and .PC can be used to detect these extensions in programs which are to be transported. .SH String padding .PP .UP will pad constant strings with blanks in expressions and as value parameters to make them as long as is required. The following is a legal .UP program: .LS \*bprogram\fP x(output); \*bvar\fP z : \*bpacked\fP \*barray\fP [ 1 .. 13 ] \*bof\fP char; \*bbegin\fP z := 'red'; writeln(z) \*bend\fP; .LE The padded blanks are added on the right. Thus the assignment above is equivalent to: .LS z := 'red ' .LE which is standard Pascal. .SH Octal constants, octal and hexadecimal write .PP Octal constants may be given as a sequence of octal digits followed by the character `b' or `B'. The forms .LS write(a:n \*boct\fP) .LE and .LS write(a:n \*bhex\fP) .LE cause the internal representation of expression .I a, which must be Boolean, character, integer, pointer, or a user-defined enumerated type, to be written in octal or hexadecimal respectively. .SH Assert statement .PP An .B assert statement causes a .I Boolean expression to be evaluated each time the statement is executed. A runtime error results if any of the expressions evaluates to be .I false . The .B assert statement is treated as a comment if run-time tests are disabled. The syntax for .B assert is: .LS \*bassert\fP .LE .SH Enumerated type input-output .PP Enumerated types may be read and written. On output the string name associated with the enumerated value is output. If the value is out of range, a runtime error occurs. On input an identifier is read and looked up in a table of names associated with the type of the variable, and the appropriate internal value is assigned to the variable being read. If the name is not found in the table a runtime error occurs. .SH Structure returning functions .PP An extension has been added which allows functions to return arbitrary sized structures rather than just scalars as in the standard. .SH Separate compilation .PP The compiler .PC has been extended to allow separate compilation of programs. Procedures and functions declared at the global level may be compiled separately. Type checking of calls to separately compiled routines is performed at load time to insure that the program as a whole is consistent. See section 5.10 for details. .NH 2 Resolution of the undefined specifications .SH File name \- file variable associations .PP Each Pascal file variable is associated with a named .UX file. Except for .I input and .I output, which are exceptions to some of the rules, a name can become associated with a file in any of three ways: .IP "\ \ \ \ \ 1)" 10 If a global Pascal file variable appears in the .B program statement then it is associated with .UX file of the same name. .IP "\ \ \ \ \ 2)" If a file was reset or rewritten using the extended two-argument form of .I reset or .I rewrite then the given name is associated. .IP "\ \ \ \ \ 3)" If a file which has never had .UX name associated is reset or rewritten without specifying a name via the second argument, then a temporary name of the form `tmp.x' is associated with the file. Temporary names start with `tmp.1' and continue by incrementing the last character in the .SM USASCII .NL ordering. Temporary files are removed automatically when their scope is exited. .SH The program statement .PP The syntax of the .B program statement is: .LS \*bprogram\fP ( { , } ) ; .LE The file identifiers (other than .I input and .I output ) must be declared as variables of .B file type in the global declaration part. .SH The files input and output .PP The formal parameters .I input and .I output are associated with the .UX standard input and output and have a somewhat special status. The following rules must be noted: .IP "\ \ \ \ \ 1)" 10 The program heading .B must contains the formal parameter .I output. If .I input is used, explicitly or implicitly, then it must also be declared here. .IP "\ \ \ \ \ 2)" Unlike all other files, the Pascal files .I input and .I output must not be defined in a declaration, as their declaration is automatically: .LS \*bvar\fP input, output: text .LE .IP "\ \ \ \ \ 3)" The procedure .I reset may be used on .I input. If no .UX file name has ever been associated with .I input, and no file name is given, then an attempt will be made to `rewind' .I input. If this fails, a run time error will occur. .I Rewrite calls to output act as for any other file, except that .I output initially has no associated file. This means that a simple .LS rewrite(output) .LE associates a temporary name with .I output. .SH Details for files .PP If a file other than .I input is to be read, then reading must be initiated by a call to the procedure .I reset which causes the Pascal system to attempt to open the associated .UX file for reading. If this fails, then a runtime error occurs. Writing of a file other than .I output must be initiated by a .I rewrite call, which causes the Pascal system to create the associated .UX file and to then open the file for writing only. .SH Buffering .PP The buffering for .I output is determined by the value of the .B b option at the end of the .B program statement. If it has its default value 1, then .I output is buffered in blocks of up to 512 characters, flushed whenever a writeln occurs and at each reference to the file .I input. If it has the value 0, .I output is unbuffered. Any value of 2 or more gives block buffering without line or .I input reference flushing. All other output files are always buffered in blocks of 512 characters. All output buffers are flushed when the files are closed at scope exit, whenever the procedure .I message is called, and can be flushed using the built-in procedure .I flush. .PP An important point for an interactive implementation is the definition of `input\(ua'. If .I input is a teletype, and the Pascal system reads a character at the beginning of execution to define `input\(ua', then no prompt could be printed by the program before the user is required to type some input. For this reason, `input\(ua' is not defined by the system until its definition is needed, reading from a file occurring only when necessary. .SH The character set .PP Seven bit .SM USASCII is the character set used on .UX . The standard Pascal symbols `and', 'or', 'not', '<=', '>=', '<>', and the uparrow `\(ua' (for pointer qualification) are recognized.\*(dg .FS \*(dgOn many terminals and printers, the up arrow is represented as a circumflex `^'. These are not distinct characters, but rather different graphic representations of the same internal codes. .FE Less portable are the synonyms tilde `~' for .B not , `&' for .B and , and `|' for .B or . .PP Upper and lower case are considered to be distinct.\*(st .FS \*(stThe proposed standard for Pascal considers them to be the same. .FE Keywords and built-in .B procedure and .B function names are composed of all lower case letters. Thus the identifiers GOTO and GOto are distinct both from each other and from the keyword \*bgoto\fP. The standard type `boolean' is also available as `Boolean'. .PP Character strings and constants may be delimited by the character `\'' or by the character `#'; the latter is sometimes convenient when programs are to be transported. Note that the `#' character has special meaning .up when it is the first character on a line \- see .I "Multi-file programs" below. .SH The standard types .PP The standard type .I integer is conceptually defined as .LS \*btype\fP integer = minint .. maxint; .LE .I Integer is implemented with 32 bit twos complement arithmetic. Predefined constants of type .I integer are: .LS \*bconst\fP maxint = 2147483647; minint = -2147483648; .LE .PP The standard type .I char is conceptually defined as .LS \*btype\fP char = minchar .. maxchar; .LE Built-in character constants are `minchar' and `maxchar', `bell' and `tab'; ord(minchar) = 0, ord(maxchar) = 127. .PP The type .I real is implemented using 64 bit floating point arithmetic. The floating point arithmetic is done in `rounded' mode, and provides approximately 17 digits of precision with numbers as small as 10 to the negative 38th power and as large as 10 to the 38th power. .SH Comments .PP Comments can be delimited by either `{' and `}' or by `(*' and `*)'. If the character `{' appears in a comment delimited by `{' and `}', a warning diagnostic is printed. A similar warning will be printed if the sequence `(*' appears in a comment delimited by `(*' and `*)'. The restriction implied by this warning is not part of standard Pascal, but detects many otherwise subtle errors. .SH Option control .PP Options of the translators may be controlled in two distinct ways. A number of options may appear on the command line invoking the translator. These options are given as one or more strings of letters preceded by the character `\-' and cause the default setting of each given option to be changed. This method of communication of options is expected to predominate for .UX . Thus the command .LS % \*bpi \-l \-s foo.p\fR .LE translates the file foo.p with the listing option enabled (as it normally is off), and with only standard Pascal features available. .PP If more control over the portions of the program where options are enabled is required, then option control in comments can and should be used. The format for option control in comments is identical to that used in Pascal 6000\-3.4. One places the character `$' as the first character of the comment and follows it by a comma separated list of directives. Thus an equivalent to the command line example given above would be: .LS {$l+,s+ listing on, standard Pascal} .LE as the first line of the program. The `l' option is more appropriately specified on the command line, since it is extremely unlikely in an interactive environment that one wants a listing of the program each time it is translated. .PP Directives consist of a letter designating the option, followed either by a `+' to turn the option on, or by a `\-' to turn the option off. The .B b option takes a single digit instead of a `+' or `\-'. .SH Notes on the listings .PP The first page of a listing includes a banner line indicating the version and date of generation of .PI or .PC . It also includes the .UX path name supplied for the source file and the date of last modification of that file. .PP Within the body of the listing, lines are numbered consecutively and correspond to the line numbers for the editor. Currently, two special kinds of lines may be used to format the listing: a line consisting of a form-feed character, control-l, which causes a page eject in the listing, and a line with no characters which causes the line number to be suppressed in the listing, creating a truly blank line. These lines thus correspond to `eject' and `space' macros found in many assemblers. Non-printing characters are printed as the character `?' in the listing.\*(dg .FS \*(dgThe character generated by a control-i indents to the next `tab stop'. Tab stops are set every 8 columns in .UX . Tabs thus provide a quick way of indenting in the program. .FE .SH The standard procedure write .PP If no minimum field length parameter is specified for a .I write, the following default values are assumed: .KS .TS center; l n. integer 10 real 22 Boolean length of `true' or `false' char 1 string length of the string oct 11 hex 8 .TE .KE The end of each line in a text file should be explicitly indicated by `writeln(f)', where `writeln(output)' may be written simply as `writeln'. For .UX , the built-in function `page(f)' puts a single .SM ASCII form-feed character on the output file. For programs which are to be transported the filter .I pcc can be used to interpret carriage control, as .UX does not normally do so. .NH 2 Restrictions and limitations .SH Files .PP Files cannot be members of files or members of dynamically allocated structures. .SH Arrays, sets and strings .PP The calculations involving array subscripts and set elements are done with 16 bit arithmetic. This restricts the types over which arrays and sets may be defined. The lower bound of such a range must be greater than or equal to \-32768, and the upper bound less than 32768. In particular, strings may have any length from 1 to 65535 characters, and sets may contain no more than 65535 elements. .SH Line and symbol length .PP There is no intrinsic limit on the length of identifiers. Identifiers are considered to be distinct if they differ in any single position over their entire length. There is a limit, however, on the maximum input line length. This limit is quite generous however, currently exceeding 160 characters. .SH Procedure and function nesting and program size .PP At most 20 levels of .B procedure and .B function nesting are allowed. There is no fundamental, translator defined limit on the size of the program which can be translated. The ultimate limit is supplied by the hardware and thus, on the \s-2PDP\s0-11, by the 16 bit address space. If one runs up against the `ran out of memory' diagnostic the program may yet translate if smaller procedures are used, as a lot of space is freed by the translator at the completion of each .B procedure or .B function in the current implementation. .PP On the \s-2VAX\s0-11, there is an implementation defined limit of 65536 bytes per variable. There is no limit on the number of variables. .SH Overflow .PP There is currently no checking for overflow on arithmetic operations at run-time on the \s-2PDP\s0-11. Overflow checking is performed on the \s-2VAX\s0-11 by the hardware. .br .ne 15 .NH 2 Added types, operators, procedures and functions .SH Additional predefined types .PP The type .I alfa is predefined as: .LS \*btype\fP alfa = \*bpacked\fP \*barray\fP [ 1..10 ] \*bof\fP \*bchar\fP .LE .PP The type .I intset is predefined as: .LS \*btype\fP intset = \*bset of\fP 0..127 .LE In most cases the context of an expression involving a constant set allows the translator to determine the type of the set, even though the constant set itself may not uniquely determine this type. In the cases where it is not possible to determine the type of the set from local context, the expression type defaults to a set over the entire base type unless the base type is integer\*(dg. .FS \*(dgThe current translator makes a special case of the construct `if ... in [ ... ]' and enforces only the more lax restriction on 16 bit arithmetic given above in this case. .FE In the latter case the type defaults to the current binding of .I intset, which must be ``type set of (a subrange of) integer'' at that point. .PP Note that if .I intset is redefined via: .LS \*btype\fP intset = \*bset of\fP 0..58; .LE then the default integer set is the implicit .I intset of Pascal 6000\-3.4 .SH Additional predefined operators .PP The relationals `<' and `>' of proper set inclusion are available. With .I a and .I b sets, note that .LS (\*bnot\fR (\fIa\fR < \fIb\fR)) <> (\fIa\fR >= \fIb\fR) .LE As an example consider the sets .I a = [0,2] and .I b = [1]. The only relation true between these sets is `<>'. .SH Non-standard procedures .IP argv(i,a) 25 where .I i is an integer and .I a is a string variable assigns the (possibly truncated or blank padded) .I i \|'th argument of the invocation of the current .UX process to the variable .I a . The range of valid .I i is .I 0 to .I argc\-1 . .IP date(a) assigns the current date to the alfa variable .I a in the format `dd mmm yy ', where `mmm' is the first three characters of the month, i.e. `Apr'. .IP flush(f) writes the output buffered for Pascal file .I f into the associated .UX file. .IP halt terminates the execution of the program with a control flow backtrace. .IP linelimit(f,x)\*(dd .FS \*(ddCurrently ignored by pdp-11 .X . .FE with .I f a textfile and .I x an integer expression causes the program to be abnormally terminated if more than .I x lines are written on file .I f . If .I x is less than 0 then no limit is imposed. .IP message(x,...) causes the parameters, which have the format of those to the built-in .B procedure .I write, to be written unbuffered on the diagnostic unit 2, almost always the user's terminal. .IP null a procedure of no arguments which does absolutely nothing. It is useful as a place holder, and is generated by .XP in place of the invisible empty statement. .IP remove(a) where .I a is a string causes the .UX file whose name is .I a, with trailing blanks eliminated, to be removed. .IP reset(f,a) where .I a is a string causes the file whose name is .I a (with blanks trimmed) to be associated with .I f in addition to the normal function of .I reset. .IP rewrite(f,a) is analogous to `reset' above. .IP stlimit(i) where .I i is an integer sets the statement limit to be .I i statements. Specifying the .B p option to .I pc disables statement limit counting. .IP time(a) causes the current time in the form `\ hh:mm:ss\ ' to be assigned to the alfa variable .I a. .SH Non-standard functions .IP argc 25 returns the count of arguments when the Pascal program was invoked. .I Argc is always at least 1. .IP card(x) returns the cardinality of the set .I x, i.e. the number of elements contained in the set. .IP clock returns an integer which is the number of central processor milliseconds of user time used by this process. .IP expo(x) yields the integer valued exponent of the floating-point representation of .I x ; expo(\fIx\fP) = entier(log2(abs(\fIx\fP))). .IP random(x) where .I x is a real parameter, evaluated but otherwise ignored, invokes a linear congruential random number generator. Successive seeds are generated as (seed*a + c) mod m and the new random number is a normalization of the seed to the range 0.0 to 1.0; a is 62605, c is 113218009, and m is 536870912. The initial seed is 7774755. .IP seed(i) where .I i is an integer sets the random number generator seed to .I i and returns the previous seed. Thus seed(seed(i)) has no effect except to yield value .I i. .IP sysclock an integer function of no arguments returns the number of central processor milliseconds of system time used by this process. .IP undefined(x) a Boolean function. Its argument is a real number and it always returns false. .IP wallclock an integer function of no arguments returns the time in seconds since 00:00:00 GMT January 1, 1970. .NH 2 Remarks on standard and portable Pascal .PP It is occasionally desirable to prepare Pascal programs which will be acceptable at other Pascal installations. While certain system dependencies are bound to creep in, judicious design and programming practice can usually eliminate most of the non-portable usages. Wirth's .I "Pascal Report" concludes with a standard for implementation and program exchange. .PP In particular, the following differences may cause trouble when attempting to transport programs between this implementation and Pascal 6000\-3.4. Using the .B s translator option may serve to indicate many problem areas.\*(dg .FS \*(dgThe .B s option does not, however, check that identifiers differ in the first 8 characters. .I Pi and .PC also do not check the semantics of .B packed . .FE .SH Features not available in Berkeley Pascal .IP Segmented files and associated functions and procedures. .IP The function .I trunc with two arguments. .IP Arrays whose indices exceed the capacity of 16 bit arithmetic. .SH Features available in Berkeley Pascal but not in Pascal 6000-3.4 .IP The procedures .I reset and .I rewrite with file names. .IP The functions .I argc, .I seed, .I sysclock, and .I wallclock. .IP The procedures .I argv, .I flush, and .I remove. .IP .I Message with arguments other than character strings. .IP .I Write with keyword .B hex . .IP The .B assert statement. .IP Reading and writing of enumerated types. .IP Allowing functions to return structures. .IP Separate compilation of programs. .IP Comparison of records. .SH Other problem areas .PP Sets and strings are more general in \* .UP ; see the restrictions given in the Jensen-Wirth .I "User Manual" for details on the 6000\-3.4 restrictions. .PP The character set differences may cause problems, especially the use of the function .I chr, characters as arguments to .I ord, and comparisons of characters, since the character set ordering differs between the two machines. .PP The Pascal 6000\-3.4 compiler uses a less strict notion of type equivalence. In .UP , types are considered identical only if they are represented by the same type identifier. Thus, in particular, unnamed types are unique to the variables/fields declared with them. .PP Pascal 6000\-3.4 doesn't recognize our option flags, so it is wise to put the control of .UP options to the end of option lists or, better yet, restrict the option list length to one. .PP For Pascal 6000\-3.4 the ordering of files in the program statement has significance. It is desirable to place .I input and .I output as the first two files in the .B program statement. .sp 2 .SH Acknowledgments .PP The financial support of William Joy and Susan Graham by the National Science Foundation under grants MCS74-07644-A04, MCS78-07291, and MCS80-05144, and the William Joy by an .SM IBM Graduate Fellowship are gratefully acknowledged. `tab stop'. Tab stops are set every 8 columns in .UX . Tabs thus provide a quick way of indenting in the program. .FE .SH The standard procedure write .PP If no minimum field length parameter is specified for a doc/ps1/04.pascal/primes2.p 444 3 12 1460 3650315026 10531 program primes(output); const n = 50; n1 = 6; (*n1 = sqrt(n)*) var i,k,x,inc,lim,square,l: integer; prim: boolean; p,v: array[1..n1] of integer; begin write(2:6, 3:6); l := 2; x := 1; inc := 4; lim := 1; square := 9; for i := 3 to n do begin (*find next prime*) repeat x := x + inc; inc := 6-inc; if square <= x then begin lim := lim+1; v[lim] := square; square := sqr(p[lim+1]) end ; k := 2; prim := true; while prim and (k v[k] end until prim; if i <= n1 then p[i] := x; write(x:6); l := l+1; if l = 10 then begin writeln; l := 0 end end ; writeln; end . termine this type. In the cases where it is not possible to determine the type of the set from local context, the expression type defaults to a set over the entire base type unless the base type is integer\*(doc/ps1/04.pascal/primes.p 444 3 12 1460 3650315027 10450 program primes(output); const n = 50; n1 = 7; (*n1 = sqrt(n)*) var i,k,x,inc,lim,square,l: integer; prim: boolean; p,v: array[1..n1] of integer; begin write(2:6, 3:6); l := 2; x := 1; inc := 4; lim := 1; square := 9; for i := 3 to n do begin (*find next prime*) repeat x := x + inc; inc := 6-inc; if square <= x then begin lim := lim+1; v[lim] := square; square := sqr(p[lim+1]) end ; k := 2; prim := true; while prim and (k v[k] end until prim; if i <= n1 then p[i] := x; write(x:6); l := l+1; if l = 10 then begin writeln; l := 0 end end ; writeln; end . termine this type. In the cases where it is not possible to determine the type of the set from local context, the expression type defaults to a set over the entire base type unless the base type is integer\*(doc/ps1/04.pascal/Makefile 444 3 12 6525 3657747345 10462 # # Copyright (c) 1980 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)makefile 6.1 (Berkeley) 5/7/86 # # This makefile assumes that csh is running the figures # PRINTER=Pdp TROFF= ditroff -${PRINTER} TBL= dtbl -${PRINTER} LPR= lpr -n -${PRINTER} SEC = ? FIGURES=\ firstout firstobjout firstobjout2\ bigger2.p bigger3.p bigout1 bigger6.p bigout2 bigout3 bigout4\ primeout1 primeout2\ digitsout synerrout synerr2out\ mismout clashout sinout1 sinout2\ exprout typequout primeout3\ katout copydataout kat2out katscript xxxxqqqout xxxxqqqout2\ primes primes-d\ comments1.p commentsout manual: lpr.${PRINTER} ${LPR} lpr.${PRINTER} lpr.${PRINTER}: ${FIGURES} soelim puman${SEC}.n | ${TBL} | csh -cf '${TROFF} -t >lpr.${PRINTER}' troff: ${FIGURES} soelim puman${SEC}.n | ${TBL} | ${TROFF} csfix: cc -O csfix.c -o csfix firstout: first.p csfix -csh -cf 'pix -g first.p |& expand | csfix >firstout' firstobjout: first.p -csh -cf 'pi -g first.p >& firstobjout ; px >& firstobjout' firstobjout2: first.p -csh -cf 'pi -g -p first.p >& firstobjout2 ; px >& firstobjout2' bigger2.p: bigger.p -expand bigger.p >bigger2.p bigger3.p: bigger2.p csfix cat -n bigger2.p | expand | csfix -d >bigger3.p bigout1: bigger.p csfix -csh -cf 'pix -g bigger.p |& expand | csfix >bigout1' bigger6.p: bigger5.p csfix cat -n bigger5.p | expand | csfix -d >bigger6.p bigout2: bigger4.p -csh -cf 'pix -g bigger4.p |& expand >bigout2' bigout3: bigger7.p -csh -cf 'pix -g bigger7.p |& expand >bigout3' bigout4: bigger7.p -csh -cf '(pix -g bigger7.p >/dev/null) |& expand > bigout4' primeout1: primes.p csfix -csh -cf 'pix -g -l -z primes.p |& expand | csfix - >primeout1' primeout2: primes.p csfix -csh -cf 'pxp -z primes.p |& expand | csfix - >primeout2' digitsout: digits.p csfix -csh -cf 'pi -g digits.p |& expand | csfix >digitsout' synerrout: synerr.p csfix -csh -cf 'pi -g -l synerr.p |& expand | csfix >synerrout' synerr2out: synerr2.p csfix -csh -cf 'pix -g -l synerr2.p |& expand | csfix >synerr2out' mismout: mism.p csfix -csh -cf 'pi -g -l mism.p |& expand | csfix >mismout' clashout: clash.p -csh -cf 'pi -g clash.p |& expand >clashout' sinout1: sin1.p -csh -cf 'pi -g sin1.p |& expand >sinout1' sinout2: sin2.p -csh -cf 'pi -g sin2.p |& expand >sinout2' exprout: expr.p -pi -g -l expr.p | expand >exprout typequout: typequ.p -pi -g typequ.p >typequout primeout3: primes2.p csfix -csh -cf 'pix -g primes2.p |& expand | csfix -d >primeout3' katout: kat.p csfix primes -csh -cf 'pix -g -l kat.p katout' copydataout: copydata.p csfix -csh -cf 'pix -g -l copydata.p |& expand | csfix -d >copydataout' kat2out: kat2.p -csh -cf 'pi -g kat2.p ; obj primes |& csfix -d >kat2out' xxxxqqqout: kat2.p -pi -g kat2.p -csh -cf 'obj xxxxqqq >& xxxxqqqout' xxxxqqqout2: kat2.p -pi -g -p kat2.p -csh -cf 'obj xxxxqqq >& xxxxqqqout2' primes: primes.p -pix -g -p primes.p > primes primes-d: primes csfix -d primes-d katscript: katin -csh -cf 'pi -g kat2.p ; obj katin >& katscript' -ed - katscript < fixkatscript comments1.p: comments.p -expand comments.p >comments1.p commentsout: comments.p -csh -cf 'pxp comments.p |& expand >commentsout' -ed - commentsout < fixcomments clean: -rm csfix pmon.out obj lpr.${PRINTER} ${FIGURES} errs Errs ite(f,a) is analogous to `reset' above. .IP stlimit(i) where .I i is an integer sets the statement limit to be .I i statements. Specifying the .B p option to .I pc disadoc/ps1/04.pascal/data 444 3 12 53 3650315042 7556 line one. line two. line three is the end. p4tmac.pal3puman1.n2puman2.n1 synerr2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/mism.p 444 3 12 151 3650315033 10067 program mismatch(output) begin writeln('***'); { The next line is the last line in the file } writeln r2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/katin 444 3 12 135 3650315035 7776 This is a line of text. The next line contains only an end-of-file (an invisible control-d!) 1 synerr2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/kat3.p 444 3 12 737 3650315035 10000 program kat(input, output); var ch: char; i: integer; name: packed array [1..100] of char; begin i := 1; repeat if i < argc then begin argv(i, name); reset(input, name); i := i + 1 end; while not eof do begin while not eoln do begin read(ch); write(ch) end; readln; writeln end until i >= argc end { kat }. copydata.p comments.pdoc/ps1/04.pascal/kat2.p 444 3 12 566 3650315036 10000 program kat(input, output); var ch: char; i: integer; name: packed array [1..100] of char; begin i := 1; repeat if i < argc then begin argv(i, name); reset(input, name); i := i + 1 end; while not eof do begin while not eoln do begin read(ch); write(ch) end; readln; writeln end until i >= argc end { kat }.  kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/kat.p 444 3 12 263 3650315036 7710 program kat(input, output); var ch: char; begin while not eof do begin while not eoln do begin read(ch); write(ch) end; readln; writeln end end { kat }. puman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/fixkatscript 444 3 12 56 3650315037 11367 1t1 1s/.*/\\*b&\\fR/ 3t3 3s/.*/\\*b&\\fR/ w q 4tmac.pal3puman1.n2puman2.n1 synerr2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/fixcomments 444 3 12 52 3650315037 11204 1i .ta 3.25i . g/ *{/s// {/ w q .p4tmac.pal3puman1.n2puman2.n1 synerr2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/first.p 444 3 12 73 3650315040 10232 program first(output) begin writeln('Hello, world!') end. al3puman1.n2puman2.n1 synerr2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/expr.p 444 3 12 611 3650315041 10100 program x(output); var a: set of char; b: Boolean; c: (red, green, blue); p: ^ integer; A: alfa; B: packed array [1..5] of char; begin b := true; c := red; new(p); a := []; A := 'Hello, yellow'; b := a and b; a := a * 3; if input < 2 then writeln('boo'); if p <= 2 then writeln('sure nuff'); if A = B then writeln('same'); if c = true then writeln('hue''s and color''s') end. ixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/digits.p 444 3 12 147 3650315042 10412 program digits(output); var r: real; begin r := 0.; r := .0; r := 1.e10; r := .05e-10; writeln(r) end. err2.p0synerr.pcsfix.clsin2.palsin1.palpuman0.npuman3.npuman4.npuman5.npumanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/copydata.p 444 3 12 365 3650315043 10736 program copydata(data, output); var ch: char; data: text; begin reset(data); while not eof(data) do begin while not eoln(data) do begin read(data, ch); write(ch) end; readln(data); writeln end end { copydata }. umanA.n primes2.pprimes.pMakefile datasmism.pal katinkat3.palkat2.pal kat.p fixkatscript fixcommentsfirst.plexpr.paldigits.p copydata.p comments.pdoc/ps1/04.pascal/comments.p 444 3 12 732 3650315044 10756 { This is a left marginal comment. } program hello(output); var i : integer; {This is a trailing comment} j : integer; {This is a right marginal comment} k : array [ 1..10] of array [1..10] of integer; {Marginal, but past the margin} { An aligned, multi-line comment which explains what this program is all about } begin i := 1; {Trailing i comment} {A left marginal comment} {An aligned comment} j := 1; {Right marginal comment} k[1] := 1; writeln(i, j, k[1]) end.  copydata.p comments.pdoc/ps1/04.pascal/clash.p 444 3 12 134 3650315045 10220 program clash(output); var i: integer; c: char; begin i := 1; c := i; write(c, i) end. doc/ps1/04.pascal/bigger7.p 444 3 12 1032 3650315051 10467 (* * Graphic representation of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] *) h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim do begin x := d * i; y := exp(-x) * sin(c * x); n := round(s * y) + h; repeat write(' '); n := n - 1 until n = 0; writeln('*') end end. on of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] *) h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim do begin x := d * i; y := exp(-x) * sin(c * x); n := round(s * y) + h; repeat write(' '); n := n - 1 until n = 0;doc/ps1/04.pascal/bigger5.p 444 3 12 1032 3650315052 10466 (* * Graphic representation of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] *) h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim do begin x := d / i; y := exp(-x) * sin(c * x); n := round(s * y) + h; repeat write(' '); n := n - 1 until n = 0; writeln('*') end end. ut\ mismout clashout sinout1 sinout2\ exprout typequt primeout3\ katout copydataout kat2out katscript xxxxqqqout xxxxqqqout2\ primes primes-d\ comments1.p commentsout manual: lpr.${PRINTER} ${LPR} lpr.${PRINTER} lpr.${PRINTER}: ${FIGURES} soelim puman${SEC}.n | ${TBL} | csh -cf '${TROFF} -t >lpr.${PRINTER}' troff: ${FIGURES} soelim puman${SEC}.n | ${TBL} | ${TROFF} csfix: cc -O csfix.c -o csfix firstout: first.p csfix -csh -cf 'pix -g first.p |& expand | csfix >firsdoc/ps1/04.pascal/bigger4.p 444 3 12 1032 3650315052 10465 (* * Graphic representation of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] *) h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim do begin x := d / i; y := exp(-x) * sin(c * x); n := round(s * y) + h; repeat write(' '); n := n - 1 until n = 0; writeln('*') end end. ut\ mismout clashout sinout1 sinout2\ exprout typequt primeout3\ katout copydataout kat2out katscript xxxxqqqout xxxxqqqout2\ primes primes-d\ comments1.p commentsout manual: lpr.${PRINTER} ${LPR} lpr.${PRINTER} lpr.${PRINTER}: ${FIGURES} soelim puman${SEC}.n | ${TBL} | csh -cf '${TROFF} -t >lpr.${PRINTER}' troff: ${FIGURES} soelim puman${SEC}.n | ${TBL} | ${TROFF} csfix: cc -O csfix.c -o csfix firstout: first.p csfix -csh -cf 'pix -g first.p |& expand | csfix >firsdoc/ps1/04.pascal/bigger.p 444 3 12 1000 3650315053 10375 (* * Graphic representation of a function * f(x) = exp(-x) * sin(2 * pi * x) *) program graph1(output); const d = 0.0625; (* 1/16, 16 lines for interval [x, x+1] *) s = 32; (* 32 character width for interval [x, x+1] h = 34; (* Character position of x-axis *) c = 6.28138; (* 2 * pi *) lim = 32; var x, y: real; i, n: integer; begin for i := 0 to lim begin x := d / i; y := exp(-x9 * sin(i * x); n := Round(s * y) + h; repeat write(' '); n := n - 1 writeln('*') end. doc/ps1/05.as/ 755 3 12 0 3655011422 6042 doc/ps1/05.as/asdocs2.me 444 3 12 17434 3650314617 10046 .\" .\" Copyright (c) 1982 Regents of the University of California .\" @(#)asdocs2.me 1.6 2/11/83 .\" .EQ delim $$ .EN .SH 1 "Statements" .pp A source program is composed of a sequence of .i statements . Statements are separated either by new-lines or by semicolons. There are two kinds of statements: null statements and keyword statements. Either kind of statement may be preceded by one or more labels. .SH 2 "Named Global Labels" .pp A global label consists of a name followed by a colon. The effect of a name label is to assign the current value and type of the location counter to the name. An error is indicated in pass 1 if the name is already defined; an error is indicated in pass 2 if the value assigned changes the definition of the label. .pp A global label is referenced by its name. .pp Global labels beginning with a .q "\|L\|" are discarded unless the .b \-L option is in effect. .SH 2 "Numeric Local Labels" .pp A numeric label consists of a digit $0$ to $9$ followed by a colon. Such a label serves to define temporary symbols of the form .q "$n roman b$" and .q "$n roman f$" , where $n$ is the digit of the label. As in the case of name labels, a numeric label assigns the current value and type of the location counter to the temporary symbol. However, several numeric labels with the same digit may be used within the same assembly. References to symbols of the form .q "$n roman b$" refer to the first numeric label .q "$n$:" .i b ackwards from the reference; .q "$n roman f$" symbols refer to the first numeric label .q "$n$:" .i f orwards from the reference. Such numeric labels conserve the inventive powers of the human programmer. .pp For various reasons, .i as turns local labels into labels of the form $roman L n roman ".\*(DL" m$. Although unlikely, these generated labels may conflict with programmer defined labels. .SH 2 "Null statements" .pp A null statement is an empty statement ignored by the assembler. A null statement may be labeled, however. .SH 2 "Keyword statements" .pp A keyword statement begins with one of the many predefined keywords known to .i as ; the syntax of the remainder of the statement depends on the keyword. All instruction opcodes are keywords. The remaining keywords are assembler pseudo-operations, also called .i directives . The pseudo-operations are listed in \(sc8, together with the syntax they require. .SH 1 "Expressions" .pp An expression is a sequence of symbols representing a value. Its constituents are identifiers, constants, operators, and parentheses. Each expression has a type. .pp All operators in expressions are fundamentally binary in nature. Arithmetic is two's complement and has 32 bits of precision. .i As can not do arithmetic on floating point numbers, quad or octal precision scalar numbers. There are four levels of precedence, listed here from lowest precedence level to highest: .(b .TS center; c l. precedence operators _ binary $+$, $-$ binary \fI\(bv\fP\|, $&$, $italic "^"$, $!$ binary $*$, $/$, $%$, unary $-$, $italic "~"$ .TE .)b .pp All operators of the same precedence are evaluated strictly left to right, except for the evaluation order enforced by parenthesis. .SH 2 "Expression Operators" .pp The operators are: .(b .TS center; c l. operator meaning _ $+$ addition $-$ (binary) subtraction $*$ multiplication $/$ division $%$ modulo $-$ (unary) 2's complement $&$ bitwise and $\(bv$ bitwise or $italic "^"$ bitwise exclusive or $!$ bitwise or not $italic "~"$ bitwise 1's complement $>$ logical right shift $>>$ logical right shift $<$ logical left shift $<<$ logical left shift .TE .)b .pp Expressions may be grouped by use of parentheses, .q "(" and .q ")". .SH 2 "Data Types" .pp The assembler manipulates several different types of expressions. The types likely to be met explicitly are: .nr ii \w'undefined\ \ 'u .ip "undefined" Upon first encounter, each symbol is undefined. It may become undefined if it is assigned an undefined expression. It is an error to attempt to assemble an undefined expression in pass 2; in pass 1, it is not (except that certain keywords require operands which are not undefined). .ip "undefined\ external" A symbol which is declared .b .globl but not defined in the current assembly is an undefined external. If such a symbol is declared, the link editor .i ld must be used to load the assembler's output with another routine that defines the undefined reference. .ip "absolute" An absolute symbol is defined ultimately from a constant. Its value is unaffected by any possible future applications of the link-editor to the output file. .ip "text" The value of a text symbol is measured with respect to the beginning of the text segment of the program. If the assembler output is link-edited, its text symbols may change in value since the program need not be the first in the link editor's output. Most text symbols are defined by appearing as labels. At the start of an assembly, the value of .q "\|\fB.\fP\|" is .q "text 0" . .ip "data" The value of a data symbol is measured with respect to the origin of the data segment of a program. Like text symbols, the value of a data symbol may change during a subsequent link-editor run since previously loaded programs may have data segments. After the first .b .data statement, the value of .q "\|\fB.\fP\|" is .q "data 0". .ip "bss" The value of a bss symbol is measured from the beginning of the bss segment of a program. Like text and data symbols, the value of a bss symbol may change during a subsequent link-editor run, since previously loaded programs may have bss segments. .ip "external\ absolute,\ text,\ data,\ or\ bss" Symbols declared .b .globl but defined within an assembly as absolute, text, data, or bss symbols may be used exactly as if they were not declared .b .globl ; however, their value and type are available to the link editor so that the program may be loaded with others that reference these symbols. .ip "register" The symbols .(q .b "r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15" .b "ap fp sp pc" .)q are predefined as register symbols. In addition, the .q "%" operator converts the following absolute expression whose value is between 0 and 15 into a register reference. .ip "other\ types\ \ " Each keyword known to the assembler has a type which is used to select the routine which processes the associated keyword statement. The behavior of such symbols when not used as keywords is the same as if they were absolute. .SH 2 "Type Propagation in Expressions" .pp When operands are combined by expression operators, the result has a type which depends on the types of the operands and on the operator. The rules involved are complex to state but were intended to be sensible and predictable. For purposes of expression evaluation the important types are .(b .TS center; l. undefined absolute text data bss undefined external other .TE .)b .pp The combination rules are then .nr ii 5n .np If one of the operands is undefined, the result is undefined. .np If both operands are absolute, the result is absolute. .np If an absolute is combined with one of the .q "other types" mentioned above, the result has the other type. An .q "other type" combined with an explicitly discussed type other than absolute it acts like an absolute. .pp Further rules applying to particular operators are: .ip "$+$" If one operand is text-, data-, or bss-segment relocatable, or is an undefined external, the result has the postulated type and the other operand must be absolute. .ip $-$ If the first operand is a relocatable text-, data-, or bss-segment symbol, the second operand may be absolute (in which case the result has the type of the first operand); or the second operand may have the same type as the first (in which case the result is absolute). If the first operand is external undefined, the second must be absolute. All other combinations are illegal. .ip others It is illegal to apply these operators to any but absolute symbols. 2's complement $&$ bitwise and $\(bv$ bitwise or $italic "^"$ bitwise exclusive or $!$ bitwise or not $italic "~"$ bitwise 1's complement $>$ logical right shift $>>$ logical right shift $<$ logical left shift $<<$ logical left doc/ps1/05.as/Makefile 444 3 12 1661 3650545537 7607 # # Copyright (c) 1983 Regents of the University of California # # @(#)Makefile 1.2 (Berkeley) 4/15/86 # MAN = as.man.1 DOC = asdocs0.me asdocs1.me asdocs2.me asdocs3.me asdocs4.me # # Change these to change the way the document is printed out; # the document is written using -me, which always must be present # FMT = ditroff PKG = -me PRINTER = -Pdp # FMTOPTIONS = -t FMTOPTIONS = FMTDST = docs.t.out EQN = deqn TBL = dtbl all: sources fmt clean: -rm *.TME $(FMTDST) srcs: sources sources: $(DOC) $(MAN) $(DOC) $(MAN): sccs get $@ # # Constructing the assembler documentation: # assembler reference manual # assembler manual page # .SUFFIXES: .me .TME .tbl DOCS = asdocs0.me asdocs1.TME asdocs2.TME asdocs3.TME asdocs4.TME docs.raw: $(DOCS) fmt: $(DOCS) cat $(DOCS) | $(FMT) $(FMTOPTIONS) $(PKG) $(PRINTER) -rm *.TME .me.TME: soelim $*.me | $(TBL) $(PRINTER) > $*.tmp $(EQN) $(PRINTER) /usr/pub/eqnchar $*.tmp > $*.TME rm $*.tmp s may have bss segments. .ip "external\ absolute,\ text,\ data,\ or\ bss" Symbdoc/ps1/05.as/asdocs3.me 444 3 12 27217 3650314620 10041 .\" .\" Copyright (c) 1982 Regents of the University of California .\" @(#)asdocs3.me 1.6 2/11/83 .\" .EQ delim $$ .EN .SH 1 "Pseudo-operations (Directives)" .pp The keywords listed below introduce directives or instructions, and influence the later behavior of the assembler for this statement. The metanotation .ce 1 [ stuff ] .ce 0 means that 0 or more instances of the given .q stuff may appear. .pp .b Boldface tokens must appear literally; words in .i italic words are substitutable. .pp The pseudo\-operations listed below are grouped into functional categories. .SH 2 "Interface to a Previous Pass" .(b .in -2n .TS lb l. \&.ABORT .TE .in +2n .)b .pp As soon as the assembler sees this directive, it ignores all further input (but it does read to the end of file), and aborts the assembly. No files are created. It is anticipated that this would be used in a pipe interconnected version of a compiler, where the first major syntax error would cause the compiler to issue this directive, saving unnecessary work in assembling code that would have to be discarded anyway. .(b .in -2n .TS lb l. \&.file $string$ .TE .in +2n .)b .pp This directive causes the assembler to think it is in file .i string , so error messages reflect the proper source file. .(b .in -2n .TS lb l. \&.line $expression$ .TE .in +2n .)b .pp This directive causes the assembler to think it is on line .i expression so error messages reflect the proper source file. .pp The only effect of assembling multiple files specified in the command string is to insert the .i file and .i line directives, with the appropriate values, at the beginning of the source from each file. .(b .in -2n .TS lb l. # $expression$ $string$ # $expression$ .TE .in +2n .)b .pp This is the only instance where a comment is meaningful to the assembler. The .q "#" .ul 1 must be in the first column. This meta comment causes the assembler to believe it is on line .i expression . The second argument, if included, causes the assembler to believe it is in file .i string , otherwise the current file name does not change. .SH 2 "Location Counter Control" .(b .in -2n .TS lb l. \&.data [ $expression$ ] \&.text [ $expression$ ] .TE .in +2n .)b .pp These two pseudo-operations cause the assembler to begin assembling into the indicated text or data subsegment. If specified, the .i expression must be defined and absolute; an omitted .i expression is treated as zero. The effect of a .b .data directive is treated as a .b .text directive if the .b \-R assembly flag is set. Assembly starts in the .b ".text" 0 subsegment. .pp The directives .b .align and .b .org also control the placement of the location counter. .sh 2 "Filled Data" .(b .in -2n .TS lb l. \&.align $align\*(USexpr$ [ \fB,\fP $fill\*(USexpr$ ] .TE .in +2n .)b .pp The location counter is adjusted so that the .i expression lowest bits of the location counter become zero. This is done by assembling from 0 to $2 sup align\*(USexpr$ bytes, taken from the low order byte of $fill\*(USexpr$. If present, $fill\*(USexpr$ must be absolute; otherwise it defaults to 0. Thus .q ".align 2" pads by null bytes to make the location counter evenly divisible by 4. The .i align_expr must be defined, absolute, nonnegative, and less than 16. .pp Warning: the subsegment concatenation convention and the current loader conventions may not preserve attempts at aligning to more than 2 low-order zero bits. .(b .in -2n .TS lb l. \&.org $org\*(USexpr$ [ \fB,\fP $fill\*(USexpr$ ] .TE .in +2n .)b .pp The location counter is set equal to the value of $org\*(USexpr$, which must be defined and absolute. The value of the $org\*(USexpr$ must be greater than the current value of the location counter. Space between the current value of the location counter and the desired value are filled with bytes taken from the low order byte of $fill\*(USexpr$, which must be absolute and defaults to 0. .(b .in -2n .TS lb l. \&.space $space\*(USexpr$ [ \fB,\fP $fill\*(USexpr$ ] .TE .in +2n .)b .pp The location counter is advanced by $space\*(USexpr$ bytes. $Space\*(USexpr$ must be defined and absolute. The space is filled in with bytes taken from the low order byte of $fill\*(USexpr$, which must be defined and absolute. $Fill\*(USexpr$ defaults to 0. The .b .fill directive is a more general way to accomplish the .b .space directive. .(b .in -2n .TS lb l. \&.fill $rep\*(USexpr$\fB,\fP $size\*(USexpr$\fB,\fP $fill\*(USexpr$ .TE .in +2n .)b .pp All three expressions must be absolute. .i fill\*(USexpr , treated as an expression of size .i size\*(USexpr bytes, is assembled and replicated .i rep\*(USexpr times. The effect is to advance the current location counter .i rep\*(USexpr \(** .i size\*(USexpr bytes. .i size\*(USexpr must be between 1 and 8. .SH 2 "Symbol Definitions" .SH 2 "Initialized Data" .(b .in -2n .TS lb l. \&.byte $expr$ [ \fB,\fP $expr$ ] \&.word $expr$ [ \fB,\fP $expr$ ] \&.int $expr$ [ \fB,\fP $expr$ ] \&.long $expr$ [ \fB,\fP $expr$ ] .TE .in +2n .)b .pp The .i expression s in the comma-separated list are truncated to the size indicated by the key word: .(b .in -2n .TS center; c l cb n. keyword length (bits) _ \&.byte 8 \&.word 16 \&.int 32 \&.long 32 .TE .in +2n .)b and assembled in successive locations. The .i expression s must be absolute. .pp Each .i expression may optionally be of the form: .(b .TS center; l. $expression sub 1$ : $expression sub 2$ .TE .)b In this case, the value of $expression sub 2$ is truncated to $expression sub 1$ bits, and assembled in the next $expression sub 1$ bit field which fits in the natural data size being assembled. Bits which are skipped because a field does not fit are filled with zeros. Thus, .q "\fB.byte\fP 123" is equivalent to .q "\fB.byte\fP 8:123" , and .q "\fB.byte\fP 3:1,2:1,5:1" assembles two bytes, containing the values 9 and 1. .pp .b NB: Bit field initialization with the colon operator is likely to disappear in future releases of the assembler. .(b .in -2n .TS lb l. \&.quad $number$ [ , $number$ ] \&.octa $number$ [ , $number$ ] \&.float $number$ [ , $number$ ] \&.double $number$ [ , $number$ ] \&.ffloat $number$ [ , $number$ ] \&.dfloat $number$ [ , $number$ ] \&.gfloat $number$ [ , $number$ ] \&.hfloat $number$ [ , $number$ ] .TE .in +2n .)b .pp These initialize Bignums (see \(sc3.2.2) in successive locations whose size is a function on the key word. The type of the Bignums (determined by the exponent field, or lack thereof) may not agree with type implied by the key word. The following table shows the key words, their size, and the data types for the Bignums they expect. .(b .in -2n .TS center; c l l l rb n l l. keyword format length (bits) valid $number$(s) _ \&.quad quad scalar 64 scalar \&.octa octal scalar 128 scalar \&.float F float 32 F, D and scalar \&.ffloat F float 32 F, D and scalar \&.double D float 64 F, D and scalar \&.dfloat D float 64 F, D and scalar \&.gfloat G float 64 G scalar \&.hfloat H float 128 H scalar .TE .in +2n .)b .pp .i As will correctly perform other floating point conversions while initializing, but issues a warning message. .i As performs all floating point initializations and conversions using only the facilities defined in the original (native) architecture. .(b .in -2n .TS lb l. \&.ascii $string$ [ , $string$] \&.asciz $string$ [ , $string$] .TE .in +2n .)b .pp Each .i string in the list is assembled into successive locations, with the first letter in the string being placed into the first location, etc. The .b .ascii directive will not null pad the string; the .b .asciz directive will null pad the string. (Recall that strings are known by their length, and need not be terminated with a null, and that the \*(CL conventions for escaping are understood.) The .b .ascii directive is identical to: .br .b .byte $string sub 0$ .b , $string sub 1$ .b , $...$ .br .(b .in -2n .TS lb l. \&.comm $name$\fB,\fP $expression$ .TE .in +2n .)b .pp Provided the .i name is not defined elsewhere, its type is made .q "undefined external" , and its value is .i expression . In fact the .i name behaves in the current assembly just like an undefined external. However, the link editor .i ld has been special-cased so that all external symbols which are not otherwise defined, and which have a non-zero value, are defined to lie in the bss segment, and enough space is left after the symbol to hold .i expression bytes. .(b .in -2n .TS lb l. \&.lcomm $name$\fB,\fP $expression$ .TE .in +2n .)b .pp .i expression bytes will be allocated in the bss segment and .i name assigned the location of the first byte, but the .i name is not declared as global and hence will be unknown to the link editor. .(b .in -2n .TS lb l. \&.globl $name$ .TE .in +2n .)b .pp This statement makes the .i name external. If it is otherwise defined (by .b .set or by appearance as a label) it acts within the assembly exactly as if the .b .globl statement were not given; however, the link editor may be used to combine this object module with other modules referring to this symbol. .pp Conversely, if the given symbol is not defined within the current assembly, the link editor can combine the output of this assembly with that of others which define the symbol. The assembler makes all otherwise undefined symbols external. .(b .in -2n .TS lb l. \&.set $name$\fB,\fP $expression$ .TE .in +2n .)b .pp The ($name$, $expression$) pair is entered into the symbol table. Multiple .b .set statements with the same name are legal; the most recent value replaces all previous values. .(b .in -2n .TS lb l. \&.lsym\& $name$\fB,\fP $expression$ .TE .in +2n .)b .pp A unique and otherwise unreferencable instance of the ($name$, $expression$) pair is created in the symbol table. The Fortran 77 compiler uses this mechanism to pass local symbol definitions to the link editor and debugger. .(b .in -2n .TS lb l. \&.stabs $string$, $expr sub 1$, $expr sub 2$, $expr sub 3$, $expr sub 4$ \&.stabn $expr sub 1$, $expr sub 2$, $expr sub 3$, $expr sub 4$ \&.stabd $expr sub 1$, $expr sub 2$, $expr sub 3$ .TE .in +2n .)b .pp The .i stab directives place symbols in the symbol table for the symbolic debugger, .i sdb \**. .(f \**Katseff, H.P. .i "Sdb: A Symbol Debugger." Bell Laboratories, Holmdel, NJ. April 12, 1979. .br Katseff, H.P. .i "Symbol Table Format for Sdb", File 39394, Bell Laboratories, Holmdel, NJ. March 14, 1979. .)f A .q stab is a .i s ymbol .i tab le entry. The .b .stabs is a string stab, the .b .stabn is a stab not having a string, and the .b .stabd is a .q dot stab that implicitly references .q dot , the current location counter. .pp The .i string in the .b .stabs directive is the name of a symbol. If the symbol name is zero, the .b .stabn directive may be used instead. .pp The other expressions are stored in the name list structure of the symbol table and preserved by the loader for reference by .i sdb ; the value of the expressions are peculiar to formats required by .i sdb . .nr ii \w'$expr sub 1$\ \ 'u .ip $expr sub 1$ is used as a symbol table tag (nlist field .i n\*(UStype ). .ip $expr sub 2$ seems to always be zero (nlist field .i n\*(USother ). .ip $expr sub 3$ is used for either the source line number, or for a nesting level (nlist field .i n\*(USdesc ). .ip $expr sub 4$ is used as tag specific information (nlist field .i n\*(USvalue ). In the case of the .b .stabd directive, this expression is nonexistent, and is taken to be the value of the location counter at the following instruction. Since there is no associated name for a .b .stabd directive, it can only be used in circumstances where the name is zero. The effect of a .b .stabd directive can be achieved by one of the other .b .stab x directives in the following manner: .br $bold .stabn$ $expr sub 1$, $expr sub 2$, $expr sub 3$, $roman LL n$ .br $roman LL n bold :$ .pp The .b .stabd directive is preferred, because it does not clog the symbol table with labels used only for the stab symbol entries. /fields declared with them. .PP Pascal 6000\-3.4 doesn't recognize our option flags, so it is wise to put the control of .UP options to the end of option lists or, better yet, restrict the option list length to one. .PP For Pascal 6000\-3.4 the ordering of files in the program statement has significance. It is desirable to place .I input and .I output as the first doc/ps1/05.as/asdocs4.me 444 3 12 14664 3650314620 10044 .\" .\" Copyright (c) 1982 Regents of the University of California .\" @(#)asdocs4.me 1.9 7/1/83 .\" .EQ delim $$ .EN .SH 1 "Machine instructions" .pp The syntax of machine instruction statements accepted by .i as is generally similar to the syntax of \*(DM. There are differences, however. .SH 2 "Character set" .pp .i As uses the character .q \*(DL instead of .q # for immediate constants, and the character .q * instead of .q @ for indirection. Opcodes and register names are spelled with lower-case rather than upper-case letters. .SH 2 "Specifying Displacement Lengths" .pp Under certain circumstances, the following constructs are (optionally) recognized by .i as to indicate the number of bytes to allocate for the displacement used when constructing displacement and displacement deferred addressing modes: .(b .TS center; c c l cb cb l. primary alternate length _ B\` B^ byte (1 byte) W\` W^ word (2 bytes) L\` L^ long word (4 bytes) .TE .)b .pp One can also use lower case .b b , .b w or .b l instead of the upper case letters. There must be no space between the size specifier letter and the .q "^" or .q "\`" . The constructs .b "S^" and .b "G^" are not recognized by .i as , as they are by the \*(DM assembler. It is preferred to use the .q "\`" displacement specifier, so that the .q "^" is not misinterpreted as the .b xor operator. .pp Literal values (including floating-point literals used where the hardware expects a floating-point operand) are assembled as short literals if possible, hence not needing the .b "S^" \*(DM directive. .pp If the displacement length modifier is present, then the displacement is .b always assembled with that displacement, even if it will fit into a smaller field, or if significance is lost. If the length modifier is not present, and if the value of the displacement is known exactly in .i as 's first pass, then .i as determines the length automatically, assembling it in the shortest possible way, Otherwise, .i as will use the value specified by the .b \-d argument, which defaults to 4 bytes. .SH 2 "case\fIx\fP Instructions" .pp .i As considers the instructions .b caseb , .b casel , .b casew to have three operands. The displacements must be explicitly computed by .i as , using one or more .b .word statements. .SH 2 "Extended branch instructions" .pp These opcodes (formed in general by substituting a .q j for the initial .q b of the standard opcodes) take as branch destinations the name of a label in the current subsegment. It is an error if the destination is known to be in a different subsegment, and it is a warning if the destination is not defined within the object module being assembled. .pp If the branch destination is close enough, then the corresponding short branch .q b instruction is assembled. Otherwise the assembler choses a sequence of one or more instructions which together have the same effect as if the .q b instruction had a larger span. In general, .i as chooses the inverse branch followed by a .b brw , but a .b brw is sometimes pooled among several .q j instructions with the same destination. .pp .i As is unable to perform the same long/short branch generation for other instructions with a fixed byte displacement, such as the .b sob , .b aob families, or for the .b acbx family of instructions which has a fixed word displacement. This would be desirable, but is prohibitive because of the complexity of these instructions. .pp If the .b \-J assembler option is given, a .b jmp instruction is used instead of a .b brw instruction for .b ALL .q j instructions with distant destinations. This makes assembly of large (>32K bytes) programs (inefficiently) possible. .i As does not try to use clever combinations of .b brb , .b brw and .b jmp instructions. The .b jmp instructions use PC relative addressing, with the length of the offset given by the .b \-d assembler option. .pp These are the extended branch instructions .i as recognizes: .(b .TS center; lb lb lb. jeql jeqlu jneq jnequ jgeq jgequ jgtr jgtru jleq jlequ jlss jlssu jbcc jbsc jbcs jbss jlbc jlbs jcc jcs jvc jvs jbc jbs jbr .TE .)b .pp Note that .b jbr turns into .b brb if its target is close enough; otherwise a .b brw is used. .SH 1 "Diagnostics" .pp Diagnostics are intended to be self explanatory and appear on the standard output. Diagnostics either report an .i error or a .i warning. Error diagnostics complain about lexical, syntactic and some semantic errors, and abort the assembly. .pp The majority of the warnings complain about the use of \*(VX features not supported by all implementations of the architecture. .i As will warn if new opcodes are used, if .q G or .q H floating point numbers are used and will complain about mixed floating conversions. .SH 1 "Limits" .(b .TS center; l l. limit what _ Arbitrary\** Files to assemble BUFSIZ Significant characters per name Arbitrary Characters per input line Arbitrary Characters per string Arbitrary Symbols 4 Text segments 4 Data segments .TE .)b .(f \**Although the number of characters available to the \fIargv\fP line is restricted by \*(UX to 10240. .)f .SH 1 "Annoyances and Future Work" .pp Most of the annoyances deal with restrictions on the extended branch instructions. .pp .i As only uses a two level algorithm for resolving extended branch instructions into short or long displacements. What is really needed is a general mechanism to turn a short conditional jump into a reverse conditional jump over one of .b two possible unconditional branches, either a .b brw or a .b jmp instruction. Currently, the .b \-J forces the .b jmp instruction to .i always be used, instead of the shorter .b brw instruction when needed. .pp The assembler should also recognize extended branch instructions for .b sob , .b aob , and .b acbx instructions. .b Sob instructions will be easy, .b aob will be harder because the synthesized instruction uses the index operand twice, so one must be careful of side effects, and the .b acbx family will be much harder (in the general case) because the comparison depends on the sign of the addend operand, and two operands are used more than once. Augmenting .i as with these extended loop instructions will allow the peephole optimizer to produce much better loop optimizations, since it currently assumes the worst case about the size of the loop body. .pp The string temporary file is not put in memory when the -V flag is set. The string table in the generated a.out contains some strings and names that are never referenced from the symbol table; the loader removes these unreferenced strings, however. that of others which define the symbol. The assembler makes all otherwise undoc/ps1/05.as/asdocs0.me 444 3 12 1062 3654013633 10010 .\" .\" Copyright (c) 1982 Regents of the University of California .\" @(#)asdocs0.me 1.5 4/25/86 .\" .nr si 1n .ds UX \s-2UNIX\s+2 .ds DC \s-2DEC\s+2 .ds VX \s-2VAX\s+2 .ds AC \s-2ASCII\s+2 .ds PD \s-2PDP-11\s+2 .ds MA \s-2MACRO-32\s+2 .ds DM \*(DC \*(MA .ds CL ``C'' .ds DL $ .ds US \s-2\d\-\u\s+2 .ds UL \s-2\d\-\u\s+2 .ds TD February 9, 1983 .ds VS Berkeley VAX/UNIX .ds AM Assembler Reference Manual .oh '\*(VS \*(AM''PS1:5-%' .eh 'PS1:5-%''\*(VS \*(AM' .\".of ''\*(TD'%' .\".ef '%'\*(TD'' .de SH .sh "\\$1" "\\$2" .\".tm Starting with section \\$1 \\$2 .. s not defined within the objecmodule being assembled. .pp If the branch destination is close enough, then the corresponding short branch .q b instruction is assembled. Otherwise the assembler choses a sequence of one or more instructions which together have the same effect as if the .q b instruction had a larger span. In general, .i as chooses the inverse branch followed by a .b brw , but a .b brw is sometimes pooled among several .q j instructions with thdoc/ps1/05.as/asdocs1.me 444 3 12 25561 3650314621 10040 .\" .\" Copyright (c) 1982 Regents of the University of California .\" @(#)asdocs1.me 1.7 2/9/83 .\" .EQ delim $$ .EN .(l C .i "\*(VS \*(AM" .sp 2.0v John F. Reiser Bell Laboratories, Holmdel, NJ .sp 1.0v .i and .sp 1.0v Robert R. Henry\** .(f \**Preparation of this paper supported in part by the National Science Foundation under grant MCS #78-07291. .)f Electronics Research Laboratory University of California Berkeley, CA 94720 .sp 1.0v November 5, 1979 .sp 1.0v .i Revised \*(TD .)l .SH 1 Introduction .pp This document describes the usage and input syntax of the \*(UX \*(VX-11 assembler .i as . .i As is designed for assembling the code produced by the \*(CL compiler; certain concessions have been made to handle code written directly by people, but in general little sympathy has been extended. This document is intended only for the writer of a compiler or a maintainer of the assembler. .SH 2 "Assembler Revisions since November 5, 1979" .pp There has been one major change to .i as since the last release. .i As has been updated to assemble the new instructions and data formats for .q G and .q H floating point numbers, as well as the new queue instructions. .SH 2 "Features Supported, but No Longer Encouraged as of \*(TD" .pp These feature(s) in .i as are supported, but no longer encouraged. .ip - The colon operator for field initialization is likely to disappear. .SH 1 "Usage" .pp .i As is invoked with these command arguments: .br .sp 0.25v as [ .b \-LVWJR ] [ .b \-d $n$ ] [ .b \-DTS ] [ .b \-t .i directory ] [ .b \-o .i output ] [ $name sub 1$ ] $...$ [ $name sub n$ ] .br .sp 0.25v .pp The .b \-L flag instructs the assembler to save labels beginning with a .q L in the symbol table portion of the .i output file. Labels are not saved by default, as the default action of the link editor .i ld is to discard them anyway. .pp The .b \-V flag tells the assembler to place its interpass temporary file into virtual memory. In normal circumstances, the system manager will decide where the temporary file should lie. Our experiments with very large temporary files show that placing the temporary file into virtual memory will save about 13% of the assembly time, where the size of the temporary file is about 350K bytes. Most assembler sources will not be this long. .pp The .b \-W turns of all warning error reporting. .pp The .b \-J flag forces \*(UX style pseudo\-branch instructions with destinations further away than a byte displacement to be turned into jump instructions with 4 byte offsets. The .b \-J flag buys you nothing if .b \-d2 is set. (See \(sc8.4, and future work described in \(sc11) .pp The .b \-R flag effectively turns .q "\fB.data\fP $n$" directives into .q "\fB.text\fP $n$" directives. This obviates the need to run editor scripts on assembler source to .q "read\-only" fix initialized data segments. Uninitialized data (via .b .lcomm and .b .comm directives) is still assembled into the data or bss segments. .pp The .b \-d flag specifies the number of bytes which the assembler should allow for a displacement when the value of the displacement expression is undefined in the first pass. The possible values of .i n are 1, 2, or 4; the assembler uses 4 bytes if .b -d is not specified. See \(sc8.2. .pp Provided the .b \-V flag is not set, the .b \-t flag causes the assembler to place its single temporary file in the .i directory instead of in .i /tmp . .pp The .b \-o flag causes the output to be placed on the file .i output . By default, the output of the assembler is placed in the file .i a.out in the current directory. .pp The input to the assembler is normally taken from the standard input. If file arguments occur, then the input is taken sequentially from the files $name sub 1$, $name sub 2~...~name sub n$ This is not to say that the files are assembled separately; $name sub 1$ is effectively concatenated to $name sub 2$, so multiple definitions cannot occur amongst the input sources. .pp .pp The .b \-D (debug), .b \-T (token trace), and the .b \-S (symbol table) flags enable assembler trace information, provided that the assembler has been compiled with the debugging code enabled. The information printed is long and boring, but useful when debugging the assembler. .SH 1 "Lexical conventions" .pp Assembler tokens include identifiers (alternatively, .q symbols or .q names ), constants, and operators. .SH 2 "Identifiers" .pp An identifier consists of a sequence of alphanumeric characters (including period .q "\fB\|.\|\fP" , underscore .q "\*(US" , and dollar .q "\*(DL" ). The first character may not be numeric. Identifiers may be (practically) arbitrary long; all characters are significant. .SH 2 "Constants" .SH 3 "Scalar constants" .pp All scalar (non floating point) constants are (potentially) 128 bits wide. Such constants are interpreted as two's complement numbers. Note that 64 bit (quad words) and 128 bit (octal word) integers are only partially supported by the \*(VX hardware. In addition, 128 bit integers are only supported by the extended \*(VX architecture. .i As supports 64 and 128 bit integers only so they can be used as immediate constants or to fill initialized data space. .i As can not perform arithmetic on constants larger than 32 bits. .pp Scalar constants are initially evaluated to a full 128 bits, but are pared down by discarding high order copies of the sign bit and categorizing the number as a long, quad or octal integer. Numbers with less precision than 32 bits are treated as 32 bit quantities. .pp The digits are .q 0123456789abcdefABCDEF with the obvious values. .pp An octal constant consists of a sequence of digits with a leading zero. .pp A decimal constant consists of a sequence of digits without a leading zero. .pp A hexadecimal constant consists of the characters .q 0x (or .q 0X ) followed by a sequence of digits. .pp A single-character constant consists of a single quote .q "\|\(fm\|" followed by an \*(AC character, including \*(AC newline. The constant's value is the code for the given character. .SH 3 "Floating Point Constants" .pp Floating point constants are internally represented in the \*(VX floating point format that is specified by the lexical form of the constant. Using the meta notation that [dec] is a decimal digit (\c .q "0123456789" ), [expt] is a type specification character (\c, .q "fFdDhHgG" ), [expe] is a exponent delimiter and type specification character (\c, .q "eEfFdDhHgG" ), $x sup roman "*"$ means 0 or more occurences of $x$, $x sup +$ means 1 or more occurences of $x$, then the general lexical form of a floating point number is: .ce 1 0[expe]([+-])$roman "[dec]" sup +$(.)($roman "[dec]" sup roman "*"$)([expt]([+-])($roman "dec]" sup +$)) .ce 0 The standard semantic interpretation is used for the signed integer, fraction and signed power of 10 exponent. If the exponent delimiter is specified, it must be either an .q e or .q E , or must agree with the initial type specification character that is used. The type specification character specifies the type and representation of the constructed number, as follows: .(b .TS center; c l c c l n. type character floating representation size (bits) _ f, F F format floating 32 d, D D format floating 64 g, G G format floating 64 h, H H format floating 128 .TE .)b Note that .q G and .q H format floating point numbers are not supported by all implementations of the \*(VX architecture. .i As does not require the augmented architecture in order to run. .pp The assembler uses the library routine .i atof() to convert .q F and .q D numbers, and uses its own conversion routine (derived from .i atof , and believed to be numerically accurate) to convert .q G and .q H floating point numbers. .pp Collectively, all floating point numbers, together with quad and octal scalars are called .i Bignums . When .i as requires a Bignum, a 32 bit scalar quantity may also be used. .SH 3 "String Constants" .pp A string constant is defined using the same syntax and semantics as the \*(CL language uses. Strings begin and end with a .q "''" (double quote). The \*(DM assembler conventions for flexible string quoting is not implemented. All \*(CL backslash conventions are observed; the backslash conventions peculiar to the \*(PD assembler are not observed. Strings are known by their value and their length; the assembler does not implicitly end strings with a null byte. .SH 2 "Operators" .pp There are several single-character operators; see \(sc6.1. .SH 2 "Blanks" .pp Blank and tab characters may be interspersed freely between tokens, but may not be used within tokens (except character constants). A blank or tab is required to separate adjacent identifiers or constants not otherwise separated. .SH 2 "Scratch Mark Comments" .pp The character .q "#" introduces a comment, which extends through the end of the line on which it appears. Comments starting in column 1, having the format .q "# $expression~~string$" , are interpreted as an indication that the assembler is now assembling file .i string at line .i expression . Thus, one can use the \*(CL preprocessor on an assembly language source file, and use the .i #include and .i #define preprocessor directives. (Note that there may not be an assembler comment starting in column 1 if the assembler source is given to the \*(CL preprocessor, as it will be interpreted by the preprocessor in a way not intended.) Comments are otherwise ignored by the assembler. .SH 2 "\*(CL Style Comments" .pp The assembler will recognize \*(CL style comments, introduced with the prologue .b "/*" and ending with the epilogue .b "*/" . \*(CL style comments may extend across multiple lines, and are the preferred comment style to use if one chooses to use the \*(CL preprocessor. .SH 1 "Segments and Location Counters" .pp Assembled code and data fall into three segments: the text segment, the data segment, and the bss segment. The \*(UX operating system makes some assumptions about the content of these segments; the assembler does not. Within the text and data segments there are a number of sub-segments, distinguished by number (\c .q "\fBtext\fP 0" , .q "\fBtext\fP 1" , $...$ .q "\fBdata\fP 0" , .q "\fBdata\fP 1" , $...$). Currently there are four subsegments each in text and data. The subsegments are for programming convenience only. .pp Before writing the output file, the assembler zero-pads each text subsegment to a multiple of four bytes and then concatenates the subsegments in order to form the text segment; an analogous operation is done for the data segment. Requesting that the loader define symbols and storage regions is the only action allowed by the assembler with respect to the bss segment. Assembly begins in .q "\fBtext\fP 0" . .pp Associated with each (sub)segment is an implicit location counter which begins at zero and is incremented by 1 for each byte assembled into the (sub)segment. There is no way to explicitly reference a location counter. Note that the location counters of subsegments other than .q "\fBtext\fP 0" and .q "\fBdata\fP 0" behave peculiarly due to the concatenation used to form the text and data segments. scal 6000\-3.4 the ordering of files in the program statement has significance. It is desirable to place .I input and .I output as the first doc/ps1/05.as/as.man.1 444 3 12 3657 3650314621 7401 .\" .\" Copyright (c) 1982 Regents of the University of California .\" .\" @(#)as.man.1 4.3 7/1/83 .\" .TH AS 1 "July 1, 1983" .UC 4 .SH NAME as \- VAX-11 assembler .SH SYNOPSIS .B as [ .B \-d124 ] [ .B \-L ] [ .B \-W ] [ .B \-V ] [ .B \-J ] [ .B \-R ] [ .B \-t directory ] [ .B \-o objfile ] [ name ... ] .SH DESCRIPTION .I As assembles the named files, or the standard input if no file name is specified. The available flags are: .TP .B \-d Specifies the number of bytes to be assembled for offsets which involve forward or external references, and which have sizes unspecified in the assembly language. The default is .B \-d4. .TP .B \-L Save defined labels beginning with a `L', which are normally discarded to save space in the resultant symbol table. The compilers generate such temporary labels. .TP .B \-V Use virtual memory for some intermediate storage, rather than a temporary file. .TP .B \-W Do not complain about errors. .TP .B \-J Use long branches to resolve jumps when byte-displacement branches are insufficient. This must be used when a compiler-generated assembly contains branches of more than 32k bytes. .TP .B \-R Make initialized data segments read-only, by concatenating them to the text segments. This obviates the need to run editor scripts on assembly code to make initialized data read-only and shared. .TP .B \-t Specifies a directory to receive the temporary file, other than the default /tmp. .PP All undefined symbols in the assembly are treated as global. .PP The output of the assembly is left on the file .I objfile; if that is omitted, .I a.out is used. .SH FILES .ta 1.5i /tmp/as\(** default temporary files .br a.out default resultant object file .SH "SEE ALSO" ld(1), nm(1), adb(1), dbx(1), a.out(5) .br Auxiliary documentation .I Assembler Reference Manual. .SH AUTHORS John F. Reiser .br Robert R. Henry .SH BUGS .B \-J should be eliminated; the assembler should automatically choose among byte, word and long branches. efABCDEF with the obvious values. .pp An octal constant consists of a sequence ofdoc/ps1/06.sysman/ 755 3 12 0 3661746051 6764 doc/ps1/06.sysman/0.t 444 3 12 15066 3661746052 7424 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)0.t 6.6 (Berkeley) 5/13/86 .\" .if n .ND .TL Berkeley Software Architecture Manual .br 4.3BSD Edition .AU William Joy, Robert Fabry, .AU Samuel Leffler, M. Kirk McKusick, .AU Michael Karels .AI Computer Systems Research Group Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, CA 94720 .EH 'PS1:6-%''4.3BSD Architecture Manual' .OH '4.3BSD Architecture Manual''PS1:6-%' .AB .FS * UNIX is a trademark of Bell Laboratories. .FE This document summarizes the facilities provided by the 4.3BSD version of the UNIX\|* operating system. It does not attempt to act as a tutorial for use of the system nor does it attempt to explain or justify the design of the system facilities. It gives neither motivation nor implementation details, in favor of brevity. .PP The first section describes the basic kernel functions provided to a UNIX process: process naming and protection, memory management, software interrupts, object references (descriptors), time and statistics functions, and resource controls. These facilities, as well as facilities for bootstrap, shutdown and process accounting, are provided solely by the kernel. .PP The second section describes the standard system abstractions for files and file systems, communication, terminal handling, and process control and debugging. These facilities are implemented by the operating system or by network server processes. .AE .LP .bp .ft B .br .sv 2 .ce TABLE OF CONTENTS .ft R .LP .sp 1 .nf .B "Introduction." .LP .if t .sp .5v .nf .B "0. Notation and types" .LP .if t .sp .5v .nf .B "1. Kernel primitives" .LP .if t .sp .5v .nf .nf \fB1.1. Processes and protection\fP 1.1.1. Host and process identifiers 1.1.2. Process creation and termination 1.1.3. User and group ids 1.1.4. Process groups .LP .nf \fB1.2. Memory management\fP 1.2.1. Text, data and stack 1.2.2. Mapping pages 1.2.3. Page protection control 1.2.4. Giving and getting advice 1.2.5. Protection primitives .LP .if t .sp .5v .nf \fB1.3. Signals\fP 1.3.1. Overview 1.3.2. Signal types 1.3.3. Signal handlers 1.3.4. Sending signals 1.3.5. Protecting critical sections 1.3.6. Signal stacks .LP .if t .sp .5v .nf \fB1.4. Timing and statistics\fP 1.4.1. Real time 1.4.2. Interval time .LP .if t .sp .5v .nf \fB1.5. Descriptors\fP 1.5.1. The reference table 1.5.2. Descriptor properties 1.5.3. Managing descriptor references 1.5.4. Multiplexing requests 1.5.5. Descriptor wrapping .LP .if t .sp .5v .nf \fB1.6. Resource controls\fP 1.6.1. Process priorities 1.6.2. Resource utilization 1.6.3. Resource limits .LP .if t .sp .5v .nf \fB1.7. System operation support\fP 1.7.1. Bootstrap operations 1.7.2. Shutdown operations 1.7.3. Accounting .bp .LP .if t .sp .5v .sp 1 .nf \fB2. System facilities\fP .LP .if t .sp .5v .nf \fB2.1. Generic operations\fP 2.1.1. Read and write 2.1.2. Input/output control 2.1.3. Non-blocking and asynchronous operations .LP .if t .sp .5v .nf \fB2.2. File system\fP 2.2.1 Overview 2.2.2. Naming 2.2.3. Creation and removal 2.2.3.1. Directory creation and removal 2.2.3.2. File creation 2.2.3.3. Creating references to devices 2.2.3.4. Portal creation 2.2.3.6. File, device, and portal removal 2.2.4. Reading and modifying file attributes 2.2.5. Links and renaming 2.2.6. Extension and truncation 2.2.7. Checking accessibility 2.2.8. Locking 2.2.9. Disc quotas .LP .if t .sp .5v .nf \fB2.3. Interprocess communication\fP 2.3.1. Interprocess communication primitives 2.3.1.1.\0 Communication domains 2.3.1.2.\0 Socket types and protocols 2.3.1.3.\0 Socket creation, naming and service establishment 2.3.1.4.\0 Accepting connections 2.3.1.5.\0 Making connections 2.3.1.6.\0 Sending and receiving data 2.3.1.7.\0 Scatter/gather and exchanging access rights 2.3.1.8.\0 Using read and write with sockets 2.3.1.9.\0 Shutting down halves of full-duplex connections 2.3.1.10.\0 Socket and protocol options 2.3.2. UNIX domain 2.3.2.1. Types of sockets 2.3.2.2. Naming 2.3.2.3. Access rights transmission 2.3.3. INTERNET domain 2.3.3.1. Socket types and protocols 2.3.3.2. Socket naming 2.3.3.3. Access rights transmission 2.3.3.4. Raw access .LP .if t .sp .5v .nf \fB2.4. Terminals and devices\fP 2.4.1. Terminals 2.4.1.1. Terminal input 2.4.1.1.1 Input modes 2.4.1.1.2 Interrupt characters 2.4.1.1.3 Line editing 2.4.1.2. Terminal output 2.4.1.3. Terminal control operations 2.4.1.4. Terminal hardware support 2.4.2. Structured devices 2.4.3. Unstructured devices .LP .if t .sp .5v .nf \fB2.5. Process control and debugging\fP .LP .if t .sp .5v .nf \fBI. Summary of facilities\fP .LP .de sh .ds RH \\$1 .bp .NH \\*(ss \s+2\\$1\s0 .PP .PP .. .bp .ds ss 1 .de _d .if t .ta .6i 2.1i 2.6i .\" 2.94 went to 2.6, 3.64 to 3.30 .if n .ta .84i 2.6i 3.30i .. .de _f .if t .ta .5i 1.25i 2.5i 3.5i .\" 3.5i went to 3.8i .if n .ta .7i 1.75i 3.8i 4.8i .. .nr H1 -1 .sh "Notation and types .PP The notation used to describe system calls is a variant of a C language call, consisting of a prototype call followed by declaration of parameters and results. An additional keyword \fBresult\fP, not part of the normal C language, is used to indicate which of the declared entities receive results. As an example, consider the \fIread\fP call, as described in section 2.1: .DS cc = read(fd, buf, nbytes); result int cc; int fd; result char *buf; int nbytes; .DE The first line shows how the \fIread\fP routine is called, with three parameters. As shown on the second line \fIcc\fP is an integer and \fIread\fP also returns information in the parameter \fIbuf\fP. .PP Description of all error conditions arising from each system call is not provided here; they appear in the programmer's manual. In particular, when accessed from the C language, many calls return a characteristic \-1 value when an error occurs, returning the error code in the global variable \fIerrno\fP. Other languages may present errors in different ways. .PP A number of system standard types are defined in the include file .I and used in the specifications here and in many C programs. These include \fBcaddr_t\fP giving a memory address (typically as a character pointer), \fBoff_t\fP giving a file offset (typically as a long integer), and a set of unsigned types \fBu_char\fP, \fBu_short\fP, \fBu_int\fP and \fBu_long\fP, shorthand names for \fBunsigned char\fP, \fBunsigned short\fP, etc. nce only. .pp Before writing the output file, the assembler zero-pads each text subsegment to a multiple of four bytes and then concatenates the subsegments in order to form the text segment; an analogous operation is done for the data segment. Requesting that the loader define symbols and storage regions is the only action allowed by the assembler with respect to the bss segment. Assembly begins in .q "\fBtext\fP 0" . .pp Associated with each (sub)segmedoc/ps1/06.sysman/1.0.t 444 3 12 2560 3661321565 7534 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.0.t 6.2 (Berkeley) 5/12/86 .\" .ds ss 1 .sh "Kernel primitives .PP The facilities available to a UNIX user process are logically divided into two parts: kernel facilities directly implemented by UNIX code running in the operating system, and system facilities implemented either by the system, or in cooperation with a \fIserver process\fP. These kernel facilities are described in this section 1. .PP The facilities implemented in the kernel are those which define the \fIUNIX virtual machine\fP in which each process runs. Like many real machines, this virtual machine has memory management hardware, an interrupt facility, timers and counters. The UNIX virtual machine also allows access to files and other objects through a set of \fIdescriptors\fP. Each descriptor resembles a device controller, and supports a set of operations. Like devices on real machines, some of which are internal to the machine and some of which are external, parts of the descriptor machinery are built-in to the operating system, while other parts are often implemented in server processes on other machines. The facilities provided through the descriptor machinery are described in section 2. .ds ss 2 nel. .PP The second section describes the standard system abstractions for files and file systems, communication, terminal handling, and processdoc/ps1/06.sysman/1.1.t 444 3 12 13564 3661321566 7564 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.1.t 6.2 (Berkeley) 5/12/86 .\" .sh "Processes and protection .NH 3 Host and process identifiers .PP Each UNIX host has associated with it a 32-bit host id, and a host name of up to 64 characters (as defined by MAXHOSTNAMELEN in \fI\fP). These are set (by a privileged user) and returned by the calls: .DS sethostid(hostid) long hostid; hostid = gethostid(); result long hostid; sethostname(name, len) char *name; int len; len = gethostname(buf, buflen) result int len; result char *buf; int buflen; .DE On each host runs a set of \fIprocesses\fP. Each process is largely independent of other processes, having its own protection domain, address space, timers, and an independent set of references to system or user implemented objects. .PP Each process in a host is named by an integer called the \fIprocess id\fP. This number is in the range 1-30000 and is returned by the \fIgetpid\fP routine: .DS pid = getpid(); result int pid; .DE On each UNIX host this identifier is guaranteed to be unique; in a multi-host environment, the (hostid, process id) pairs are guaranteed unique. .NH 3 Process creation and termination .PP A new process is created by making a logical duplicate of an existing process: .DS pid = fork(); result int pid; .DE The \fIfork\fP call returns twice, once in the parent process, where \fIpid\fP is the process identifier of the child, and once in the child process where \fIpid\fP is 0. The parent-child relationship induces a hierarchical structure on the set of processes in the system. .PP A process may terminate by executing an \fIexit\fP call: .DS exit(status) int status; .DE returning 8 bits of exit status to its parent. .PP When a child process exits or terminates abnormally, the parent process receives information about any event which caused termination of the child process. A second call provides a non-blocking interface and may also be used to retrieve information about resources consumed by the process during its lifetime. .DS #include pid = wait(astatus); result int pid; result union wait *astatus; pid = wait3(astatus, options, arusage); result int pid; result union waitstatus *astatus; int options; result struct rusage *arusage; .DE .PP A process can overlay itself with the memory image of another process, passing the newly created process a set of parameters, using the call: .DS execve(name, argv, envp) char *name, **argv, **envp; .DE The specified \fIname\fP must be a file which is in a format recognized by the system, either a binary executable file or a file which causes the execution of a specified interpreter program to process its contents. .NH 3 User and group ids .PP Each process in the system has associated with it two user-id's: a \fIreal user id\fP and a \fIeffective user id\fP, both 16 bit unsigned integers (type \fBuid_t\fP). Each process has an \fIreal accounting group id\fP and an \fIeffective accounting group id\fP and a set of \fIaccess group id's\fP. The group id's are 16 bit unsigned integers (type \fBgid_t\fP). Each process may be in several different access groups, with the maximum concurrent number of access groups a system compilation parameter, the constant NGROUPS in the file \fI\fP, guaranteed to be at least 8. .PP The real and effective user ids associated with a process are returned by: .DS ruid = getuid(); result uid_t ruid; euid = geteuid(); result uid_t euid; .DE the real and effective accounting group ids by: .DS rgid = getgid(); result gid_t rgid; egid = getegid(); result gid_t egid; .DE The access group id set is returned by a \fIgetgroups\fP call*: .DS ngroups = getgroups(gidsetsize, gidset); result int ngroups; int gidsetsize; result int gidset[gidsetsize]; .DE .FS * The type of the gidset array in getgroups and setgroups remains integer for compatibility with 4.2BSD. It may change to \fBgid_t\fP in future releases. .FE .PP The user and group id's are assigned at login time using the \fIsetreuid\fP, \fIsetregid\fP, and \fIsetgroups\fP calls: .DS setreuid(ruid, euid); int ruid, euid; setregid(rgid, egid); int rgid, egid; setgroups(gidsetsize, gidset) int gidsetsize; int gidset[gidsetsize]; .DE The \fIsetreuid\fP call sets both the real and effective user-id's, while the \fIsetregid\fP call sets both the real and effective accounting group id's. Unless the caller is the super-user, \fIruid\fP must be equal to either the current real or effective user-id, and \fIrgid\fP equal to either the current real or effective accounting group id. The \fIsetgroups\fP call is restricted to the super-user. .NH 3 Process groups .PP Each process in the system is also normally associated with a \fIprocess group\fP. The group of processes in a process group is sometimes referred to as a \fIjob\fP and manipulated by high-level system software (such as the shell). The current process group of a process is returned by the \fIgetpgrp\fP call: .DS pgrp = getpgrp(pid); result int pgrp; int pid; .DE When a process is in a specific process group it may receive software interrupts affecting the group, causing the group to suspend or resume execution or to be interrupted or terminated. In particular, a system terminal has a process group and only processes which are in the process group of the terminal may read from the terminal, allowing arbitration of terminals among several different jobs. .PP The process group associated with a process may be changed by the \fIsetpgrp\fP call: .DS setpgrp(pid, pgrp); int pid, pgrp; .DE Newly created processes are assigned process id's distinct from all processes and process groups, and the same process group as their parent. A normal (unprivileged) process may set its process group equal to its process id. A privileged process may set the process group of any process to any value. ogrammer's manual. In particular, when accessed from the C language, many calls return a characteristic \-1 value when an error occurs, retudoc/ps1/06.sysman/1.2.t 444 3 12 20400 3662176722 7553 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.2.t 6.8 (Berkeley) 5/14/86 .\" .sh "Memory management\(dg .NH 3 Text, data and stack .PP .FS \(dg This section represents the interface planned for later releases of the system. Of the calls described in this section, only \fIsbrk\fP and \fIgetpagesize\fP are included in 4.3BSD. .FE Each process begins execution with three logical areas of memory called text, data and stack. The text area is read-only and shared, while the data and stack areas are private to the process. Both the data and stack areas may be extended and contracted on program request. The call .DS addr = sbrk(incr); result caddr_t addr; int incr; .DE changes the size of the data area by \fIincr\fP bytes and returns the new end of the data area, while .DS addr = sstk(incr); result caddr_t addr; int incr; .DE changes the size of the stack area. The stack area is also automatically extended as needed. On the VAX the text and data areas are adjacent in the P0 region, while the stack section is in the P1 region, and grows downward. .NH 3 Mapping pages .PP The system supports sharing of data between processes by allowing pages to be mapped into memory. These mapped pages may be \fIshared\fP with other processes or \fIprivate\fP to the process. Protection and sharing options are defined in \fI\fP as: .DS .ta \w'#define\ \ 'u +\w'MAP_HASSEMPHORE\ \ 'u +\w'0x0080\ \ 'u /* protections are chosen from these bits, or-ed together */ #define PROT_READ 0x04 /* pages can be read */ #define PROT_WRITE 0x02 /* pages can be written */ #define PROT_EXEC 0x01 /* pages can be executed */ /* flags contain mapping type, sharing type and options */ /* mapping type; choose one */ #define MAP_FILE 0x0001 /* mapped from a file or device */ #define MAP_ANON 0x0002 /* allocated from memory, swap space */ #define MAP_TYPE 0x000f /* mask for type field */ /* sharing types; choose one */ #define MAP_SHARED 0x0010 /* share changes */ #define MAP_PRIVATE 0x0000 /* changes are private */ /* other flags */ #define MAP_FIXED 0x0020 /* map addr must be exactly as requested */ #define MAP_NOEXTEND 0x0040 /* for MAP_FILE, don't change file size */ #define MAP_HASSEMPHORE 0x0080 /* region may contain semaphores */ #define MAP_INHERIT 0x0100 /* region is retained after exec */ .DE The cpu-dependent size of a page is returned by the \fIgetpagesize\fP system call: .DS pagesize = getpagesize(); result int pagesize; .DE .PP The call: .DS maddr = mmap(addr, len, prot, flags, fd, pos); result caddr_t maddr; caddr_t addr; int *len, prot, flags, fd; off_t pos; .DE causes the pages starting at \fIaddr\fP and continuing for at most \fIlen\fP bytes to be mapped from the object represented by descriptor \fIfd\fP, starting at byte offset \fIpos\fP. The starting address of the region is returned; for the convenience of the system, it may be different than that supplied unless the MAP_FIXED flag is given, in which case the exact address will be used or the call will fail. The actual amount mapped is returned in \fIlen\fP. The \fIaddr\fP, \fIlen\fP, and \fIpos\fP parameters must all be multiples of the pagesize. The parameter \fIprot\fP specifies the accessibility of the mapped pages. The parameter \fIflags\fP specifies the type of object to be mapped, mapping options, and whether modifications made to this mapped copy of the page are to be kept \fIprivate\fP, or are to be \fIshared\fP with other references. Possible types include MAP_FILE, mapping a regular file or character-special device memory, and MAP_ANON, which maps memory not associated with any specific file. The file descriptor used for creating MAP_ANON regions is used only for naming, and may be given as \-1 if no name is associated with the region\(dd. .FS \(dd The current design does not allow a process to specify the location of swap space. In the future we may define an additional mapping type, MAP_SWAP, in which the file descriptor argument specifies a file or device to which swapping should be done. .FE The MAP_NOEXTEND flag prevents the mapped file from being extended despite rounding due to the granularity of mapping. The MAP_HASSEMAPHORE flag allows special handling for regions that may contain semaphores. The MAP_INHERIT flag allows a region to be inherited after an \fIexec\fP. .PP A facility is provided to synchronize a mapped region with the file it maps; the call .DS msync(addr, len); caddr_t addr; int len; .DE writes any modified pages back to the filesystem and updates the file modification time. If \fIlen\fP is 0, all modified pages within the region containing \fIaddr\fP will be flushed; if \fIlen\fP is non-zero, only the pages containing \fIaddr\fP and \fIlen\fP succeeding locations will be examined. Any required invalidation of memory caches will also take place at this time. Filesystem operations on a file which is mapped for shared modifications are unpredictable except after an \fImsync\fP. .PP A mapping can be removed by the call .DS munmap(addr); caddr_t addr; .DE This call deletes the region containing the address given, and causes further references to addresses within the region to generate invalid memory references. .NH 3 Page protection control .PP A process can control the protection of pages using the call .DS mprotect(addr, len, prot); caddr_t addr; int len, prot; .DE This call changes the specified pages to have protection \fIprot\fP\|. Not all implementations will guarantee protection on a page basis; the granularity of protection changes may be as large as an entire region. .NH 3 Giving and getting advice .PP A process that has knowledge of its memory behavior may use the \fImadvise\fP call: .DS madvise(addr, len, behav); caddr_t addr; int len, behav; .DE \fIBehav\fP describes expected behavior, as given in \fI\fP: .DS .ta \w'#define\ \ 'u +\w'MADV_SEQUENTIAL\ \ 'u +\w'00\ \ \ \ 'u #define MADV_NORMAL 0 /* no further special treatment */ #define MADV_RANDOM 1 /* expect random page references */ #define MADV_SEQUENTIAL 2 /* expect sequential references */ #define MADV_WILLNEED 3 /* will need these pages */ #define MADV_DONTNEED 4 /* don't need these pages */ #define MADV_SPACEAVAIL 5 /* insure that resources are reserved */ .DE Finally, a process may obtain information about whether pages are core resident by using the call .DS mincore(addr, len, vec) caddr_t addr; int len; result char *vec; .DE Here the current core residency of the pages is returned in the character array \fIvec\fP, with a value of 1 meaning that the page is in-core. .NH 3 Synchronization primitives .PP Primitives are provided for synchronization using semaphores in shared memory. Semaphores must lie within a MAP_SHARED region with at least modes PROT_READ and PROT_WRITE. The MAP_HASSEMAPHORE flag must have been specified when the region was created. To acquire a lock a process calls: .DS value = mset(sem, wait) result int value; semaphore *sem; int wait; .DE \fIMset\fP indivisibly tests and sets the semaphore \fIsem\fP. If the the previous value is zero, the process has acquired the lock and \fImset\fP returns true immediately. Otherwise, if the \fIwait\fP flag is zero, failure is returned. If \fIwait\fP is true and the previous value is non-zero, the ``want'' flag is set and the test-and-set is retried; if the lock is still unavailable \fImset\fP relinquishes the processor until notified that it should retry. .LP To release a lock a process calls: .DS mclear(sem) semaphore *sem; .DE \fIMclear\fP indivisibly tests and clears the semaphore \fIsem\fP. If the ``want'' flag is zero in the previous value, \fImclear\fP returns immediately. If the ``want'' flag is non-zero in the previous value, \fImclear\fP arranges for waiting processes to retry before returning. .PP Two routines provide services analogous to the kernel \fIsleep\fP and \fIwakeup\fP functions interpreted in the domain of shared memory. A process may relinquish the processor by calling \fImsleep\fP: .DS msleep(sem) semaphore *sem; .DE The process will remain in a sleeping state until some other process issues an \fImwakeup\fP for the same semaphore within the region using the call: .DS mwakeup(sem) semaphore *sem; .DE An \fImwakeup\fP may awaken all sleepers on the semaphore, or may awaken only the next sleeper on a queue. stem terminal has a process group and only processes which are in the process group of the terminal may read from the terminal, allowing arbitration of terminals among several different jobs. .PP The process group associated with a process may be changed bdoc/ps1/06.sysman/1.3.t 444 3 12 21062 3661321571 7552 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.3.t 6.2 (Berkeley) 5/12/86 .\" .sh "Signals .PP .NH 3 Overview .PP The system defines a set of \fIsignals\fP that may be delivered to a process. Signal delivery resembles the occurrence of a hardware interrupt: the signal is blocked from further occurrence, the current process context is saved, and a new one is built. A process may specify the \fIhandler\fP to which a signal is delivered, or specify that the signal is to be \fIblocked\fP or \fIignored\fP. A process may also specify that a \fIdefault\fP action is to be taken when signals occur. .PP Some signals will cause a process to exit when they are not caught. This may be accompanied by creation of a \fIcore\fP image file, containing the current memory image of the process for use in post-mortem debugging. A process may choose to have signals delivered on a special stack, so that sophisticated software stack manipulations are possible. .PP All signals have the same \fIpriority\fP. If multiple signals are pending simultaneously, the order in which they are delivered to a process is implementation specific. Signal routines execute with the signal that caused their invocation \fIblocked\fP, but other signals may yet occur. Mechanisms are provided whereby critical sections of code may protect themselves against the occurrence of specified signals. .NH 3 Signal types .PP The signals defined by the system fall into one of five classes: hardware conditions, software conditions, input/output notification, process control, or resource control. The set of signals is defined in the file \fI\fP. .PP Hardware signals are derived from exceptional conditions which may occur during execution. Such signals include SIGFPE representing floating point and other arithmetic exceptions, SIGILL for illegal instruction execution, SIGSEGV for addresses outside the currently assigned area of memory, and SIGBUS for accesses that violate memory protection constraints. Other, more cpu-specific hardware signals exist, such as those for the various customer-reserved instructions on the VAX (SIGIOT, SIGEMT, and SIGTRAP). .PP Software signals reflect interrupts generated by user request: SIGINT for the normal interrupt signal; SIGQUIT for the more powerful \fIquit\fP signal, that normally causes a core image to be generated; SIGHUP and SIGTERM that cause graceful process termination, either because a user has ``hung up'', or by user or program request; and SIGKILL, a more powerful termination signal which a process cannot catch or ignore. Programs may define their own asynchronous events using SIGUSR1 and SIGUSR2. Other software signals (SIGALRM, SIGVTALRM, SIGPROF) indicate the expiration of interval timers. .PP A process can request notification via a SIGIO signal when input or output is possible on a descriptor, or when a \fInon-blocking\fP operation completes. A process may request to receive a SIGURG signal when an urgent condition arises. .PP A process may be \fIstopped\fP by a signal sent to it or the members of its process group. The SIGSTOP signal is a powerful stop signal, because it cannot be caught. Other stop signals SIGTSTP, SIGTTIN, and SIGTTOU are used when a user request, input request, or output request respectively is the reason for stopping the process. A SIGCONT signal is sent to a process when it is continued from a stopped state. Processes may receive notification with a SIGCHLD signal when a child process changes state, either by stopping or by terminating. .PP Exceeding resource limits may cause signals to be generated. SIGXCPU occurs when a process nears its CPU time limit and SIGXFSZ warns that the limit on file size creation has been reached. .NH 3 Signal handlers .PP A process has a handler associated with each signal. The handler controls the way the signal is delivered. The call .DS #include ._f struct sigvec { int (*sv_handler)(); int sv_mask; int sv_flags; }; sigvec(signo, sv, osv) int signo; struct sigvec *sv; result struct sigvec *osv; .DE assigns interrupt handler address \fIsv_handler\fP to signal \fIsigno\fP. Each handler address specifies either an interrupt routine for the signal, that the signal is to be ignored, or that a default action (usually process termination) is to occur if the signal occurs. The constants SIG_IGN and SIG_DEF used as values for \fIsv_handler\fP cause ignoring or defaulting of a condition. The \fIsv_mask\fP value specifies the signal mask to be used when the handler is invoked; it implicitly includes the signal which invoked the handler. Signal masks include one bit for each signal; the mask for a signal \fIsigno\fP is provided by the macro \fIsigmask\fP(\fIsigno\fP), from \fI\fP. \fISv_flags\fP specifies whether system calls should be restarted if the signal handler returns and whether the handler should operate on the normal run-time stack or a special signal stack (see below). If \fIosv\fP is non-zero, the previous signal vector is returned. .PP When a signal condition arises for a process, the signal is added to a set of signals pending for the process. If the signal is not currently \fIblocked\fP by the process then it will be delivered. The process of signal delivery adds the signal to be delivered and those signals specified in the associated signal handler's \fIsv_mask\fP to a set of those \fImasked\fP for the process, saves the current process context, and places the process in the context of the signal handling routine. The call is arranged so that if the signal handling routine exits normally the signal mask will be restored and the process will resume execution in the original context. If the process wishes to resume in a different context, then it must arrange to restore the signal mask itself. .PP The mask of \fIblocked\fP signals is independent of handlers for signals. It delays signals from being delivered much as a raised hardware interrupt priority level delays hardware interrupts. Preventing an interrupt from occurring by changing the handler is analogous to disabling a device from further interrupts. .PP The signal handling routine \fIsv_handler\fP is called by a C call of the form .DS (*sv_handler)(signo, code, scp); int signo; long code; struct sigcontext *scp; .DE The \fIsigno\fP gives the number of the signal that occurred, and the \fIcode\fP, a word of information supplied by the hardware. The \fIscp\fP parameter is a pointer to a machine-dependent structure containing the information for restoring the context before the signal. .NH 3 Sending signals .PP A process can send a signal to another process or group of processes with the calls: .DS kill(pid, signo) int pid, signo; killpgrp(pgrp, signo) int pgrp, signo; .DE Unless the process sending the signal is privileged, it must have the same effective user id as the process receiving the signal. .PP Signals are also sent implicitly from a terminal device to the process group associated with the terminal when certain input characters are typed. .NH 3 Protecting critical sections .PP To block a section of code against one or more signals, a \fIsigblock\fP call may be used to add a set of signals to the existing mask, returning the old mask: .DS oldmask = sigblock(mask); result long oldmask; long mask; .DE The old mask can then be restored later with \fIsigsetmask\fP\|, .DS oldmask = sigsetmask(mask); result long oldmask; long mask; .DE The \fIsigblock\fP call can be used to read the current mask by specifying an empty \fImask\fP\|. .PP It is possible to check conditions with some signals blocked, and then to pause waiting for a signal and restoring the mask, by using: .DS sigpause(mask); long mask; .DE .NH 3 Signal stacks .PP Applications that maintain complex or fixed size stacks can use the call .DS ._f struct sigstack { caddr_t ss_sp; int ss_onstack; }; sigstack(ss, oss) struct sigstack *ss; result struct sigstack *oss; .DE to provide the system with a stack based at \fIss_sp\fP for delivery of signals. The value \fIss_onstack\fP indicates whether the process is currently on the signal stack, a notion maintained in software by the system. .PP When a signal is to be delivered, the system checks whether the process is on a signal stack. If not, then the process is switched to the signal stack for delivery, with the return from the signal arranged to restore the previous stack. .PP If the process wishes to take a non-local exit from the signal routine, or run code from the signal stack that uses a different stack, a \fIsigstack\fP call should be used to reset the signal stack. n the previous value, \fImclear\fP returns immediately. If the ``want'' flag is non-zero in the previous value, \fImclear\fP arranges for waiting processes to retry before returning. .PP Two routines provide services analogous to the kernel \fIsleep\fP and \fIwakeup\fP functions interpreted in the domain of shared memory. A process may relinquish the processor by calling \fImsleep\fP: .DS msleep(sem) semaphore *sem; .DE The process will remain in a sleeping doc/ps1/06.sysman/1.4.t 444 3 12 6563 3661321572 7545 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.4.t 6.2 (Berkeley) 5/12/86 .\" .sh "Timers .NH 3 Real time .PP The system's notion of the current Greenwich time and the current time zone is set and returned by the call by the calls: .DS #include settimeofday(tvp, tzp); struct timeval *tp; struct timezone *tzp; gettimeofday(tp, tzp); result struct timeval *tp; result struct timezone *tzp; .DE where the structures are defined in \fI\fP as: .DS ._f struct timeval { long tv_sec; /* seconds since Jan 1, 1970 */ long tv_usec; /* and microseconds */ }; struct timezone { int tz_minuteswest; /* of Greenwich */ int tz_dsttime; /* type of dst correction to apply */ }; .DE The precision of the system clock is hardware dependent. Earlier versions of UNIX contained only a 1-second resolution version of this call, which remains as a library routine: .DS time(tvsec) result long *tvsec; .DE returning only the tv_sec field from the \fIgettimeofday\fP call. .NH 3 Interval time .PP The system provides each process with three interval timers, defined in \fI\fP: .DS ._d #define ITIMER_REAL 0 /* real time intervals */ #define ITIMER_VIRTUAL 1 /* virtual time intervals */ #define ITIMER_PROF 2 /* user and system virtual time */ .DE The ITIMER_REAL timer decrements in real time. It could be used by a library routine to maintain a wakeup service queue. A SIGALRM signal is delivered when this timer expires. .PP The ITIMER_VIRTUAL timer decrements in process virtual time. It runs only when the process is executing. A SIGVTALRM signal is delivered when it expires. .PP The ITIMER_PROF timer decrements both in process virtual time and when the system is running on behalf of the process. It is designed to be used by processes to statistically profile their execution. A SIGPROF signal is delivered when it expires. .PP A timer value is defined by the \fIitimerval\fP structure: .DS ._f struct itimerval { struct timeval it_interval; /* timer interval */ struct timeval it_value; /* current value */ }; .DE and a timer is set or read by the call: .DS getitimer(which, value); int which; result struct itimerval *value; setitimer(which, value, ovalue); int which; struct itimerval *value; result struct itimerval *ovalue; .DE The third argument to \fIsetitimer\fP specifies an optional structure to receive the previous contents of the interval timer. A timer can be disabled by specifying a timer value of 0. .PP The system rounds argument timer intervals to be not less than the resolution of its clock. This clock resolution can be determined by loading a very small value into a timer and reading the timer back to see what value resulted. .PP The \fIalarm\fP system call of earlier versions of UNIX is provided as a library routine using the ITIMER_REAL timer. The process profiling facilities of earlier versions of UNIX remain because it is not always possible to guarantee the automatic restart of system calls after receipt of a signal. The \fIprofil\fP call arranges for the kernel to begin gathering execution statistics for a process: .DS profil(buf, bufsize, offset, scale); result char *buf; int bufsize, offset, scale; .DE This begins sampling of the program counter, with statistics maintained in the user-provided buffer. ask(mask); result long oldmask; long mask; .DE The \fIsigblock\fP call can be used to read the current mask by specifying an empty \fImask\fPdoc/ps1/06.sysman/1.5.t 444 3 12 16443 3661324271 7563 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.5.t 6.3 (Berkeley) 5/12/86 .\" .sh Descriptors .PP .NH 3 The reference table .PP Each process has access to resources through \fIdescriptors\fP. Each descriptor is a handle allowing the process to reference objects such as files, devices and communications links. .PP Rather than allowing processes direct access to descriptors, the system introduces a level of indirection, so that descriptors may be shared between processes. Each process has a \fIdescriptor reference table\fP, containing pointers to the actual descriptors. The descriptors themselves thus have multiple references, and are reference counted by the system. .PP Each process has a fixed size descriptor reference table, where the size is returned by the \fIgetdtablesize\fP call: .DS nds = getdtablesize(); result int nds; .DE and guaranteed to be at least 20. The entries in the descriptor reference table are referred to by small integers; for example if there are 20 slots they are numbered 0 to 19. .NH 3 Descriptor properties .PP Each descriptor has a logical set of properties maintained by the system and defined by its \fItype\fP. Each type supports a set of operations; some operations, such as reading and writing, are common to several abstractions, while others are unique. The generic operations applying to many of these types are described in section 2.1. Naming contexts, files and directories are described in section 2.2. Section 2.3 describes communications domains and sockets. Terminals and (structured and unstructured) devices are described in section 2.4. .NH 3 Managing descriptor references .PP A duplicate of a descriptor reference may be made by doing .DS new = dup(old); result int new; int old; .DE returning a copy of descriptor reference \fIold\fP indistinguishable from the original. The \fInew\fP chosen by the system will be the smallest unused descriptor reference slot. A copy of a descriptor reference may be made in a specific slot by doing .DS dup2(old, new); int old, new; .DE The \fIdup2\fP call causes the system to deallocate the descriptor reference current occupying slot \fInew\fP, if any, replacing it with a reference to the same descriptor as old. This deallocation is also performed by: .DS close(old); int old; .DE .NH 3 Multiplexing requests .PP The system provides a standard way to do synchronous and asynchronous multiplexing of operations. .PP Synchronous multiplexing is performed by using the \fIselect\fP call to examine the state of multiple descriptors simultaneously, and to wait for state changes on those descriptors. Sets of descriptors of interest are specified as bit masks, as follows: .DS #include nds = select(nd, in, out, except, tvp); result int nds; int nd; result fd_set *in, *out, *except; struct timeval *tvp; FD_ZERO(&fdset); FD_SET(fd, &fdset); FD_CLR(fd, &fdset); FD_ISSET(fd, &fdset); int fs; fs_set fdset; .DE The \fIselect\fP call examines the descriptors specified by the sets \fIin\fP, \fIout\fP and \fIexcept\fP, replacing the specified bit masks by the subsets that select true for input, output, and exceptional conditions respectively (\fInd\fP indicates the number of file descriptors specified by the bit masks). If any descriptors meet the following criteria, then the number of such descriptors is returned in \fInds\fP and the bit masks are updated. .if n .ds bu * .if t .ds bu \(bu .IP \*(bu A descriptor selects for input if an input oriented operation such as \fIread\fP or \fIreceive\fP is possible, or if a connection request may be accepted (see section 2.3.1.4). .IP \*(bu A descriptor selects for output if an output oriented operation such as \fIwrite\fP or \fIsend\fP is possible, or if an operation that was ``in progress'', such as connection establishment, has completed (see section 2.1.3). .IP \*(bu A descriptor selects for an exceptional condition if a condition that would cause a SIGURG signal to be generated exists (see section 1.3.2), or other device-specific events have occurred. .LP If none of the specified conditions is true, the operation waits for one of the conditions to arise, blocking at most the amount of time specified by \fItvp\fP. If \fItvp\fP is given as 0, the \fIselect\fP waits indefinitely. .PP Options affecting I/O on a descriptor may be read and set by the call: .DS ._d dopt = fcntl(d, cmd, arg) result int dopt; int d, cmd, arg; /* interesting values for cmd */ #define F_SETFL 3 /* set descriptor options */ #define F_GETFL 4 /* get descriptor options */ #define F_SETOWN 5 /* set descriptor owner (pid/pgrp) */ #define F_GETOWN 6 /* get descriptor owner (pid/pgrp) */ .DE The F_SETFL \fIcmd\fP may be used to set a descriptor in non-blocking I/O mode and/or enable signaling when I/O is possible. F_SETOWN may be used to specify a process or process group to be signaled when using the latter mode of operation or when urgent indications arise. .PP Operations on non-blocking descriptors will either complete immediately, note an error EWOULDBLOCK, partially complete an input or output operation returning a partial count, or return an error EINPROGRESS noting that the requested operation is in progress. A descriptor which has signalling enabled will cause the specified process and/or process group be signaled, with a SIGIO for input, output, or in-progress operation complete, or a SIGURG for exceptional conditions. .PP For example, when writing to a terminal using non-blocking output, the system will accept only as much data as there is buffer space for and return; when making a connection on a \fIsocket\fP, the operation may return indicating that the connection establishment is ``in progress''. The \fIselect\fP facility can be used to determine when further output is possible on the terminal, or when the connection establishment attempt is complete. .NH 3 Descriptor wrapping.\(dg .PP .FS \(dg The facilities described in this section are not included in 4.3BSD. .FE A user process may build descriptors of a specified type by \fIwrapping\fP a communications channel with a system supplied protocol translator: .DS new = wrap(old, proto) result int new; int old; struct dprop *proto; .DE Operations on the descriptor \fIold\fP are then translated by the system provided protocol translator into requests on the underlying object \fIold\fP in a way defined by the protocol. The protocols supported by the kernel may vary from system to system and are described in the programmers manual. .PP Protocols may be based on communications multiplexing or a rights-passing style of handling multiple requests made on the same object. For instance, a protocol for implementing a file abstraction may or may not include locally generated ``read-ahead'' requests. A protocol that provides for read-ahead may provide higher performance but have a more difficult implementation. .PP Another example is the terminal driving facilities. Normally a terminal is associated with a communications line, and the terminal type and standard terminal access protocol are wrapped around a synchronous communications line and given to the user. If a virtual terminal is required, the terminal driver can be wrapped around a communications link, the other end of which is held by a virtual terminal protocol interpreter. egment. Requesting that the loader define symbols and storage regions is the only action allowed by the assembler with respect to the bss segment. Assembly begins in .q "\fBtext\fP 0" . .pp Associated with each (sub)segmedoc/ps1/06.sysman/1.6.t 444 3 12 6767 3661321574 7557 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.6.t 6.2 (Berkeley) 5/12/86 .\" .sh "Resource controls .NH 3 Process priorities .PP The system gives CPU scheduling priority to processes that have not used CPU time recently. This tends to favor interactive processes and processes that execute only for short periods. It is possible to determine the priority currently assigned to a process, process group, or the processes of a specified user, or to alter this priority using the calls: .DS ._d #define PRIO_PROCESS 0 /* process */ #define PRIO_PGRP 1 /* process group */ #define PRIO_USER 2 /* user id */ prio = getpriority(which, who); result int prio; int which, who; setpriority(which, who, prio); int which, who, prio; .DE The value \fIprio\fP is in the range \-20 to 20. The default priority is 0; lower priorities cause more favorable execution. The \fIgetpriority\fP call returns the highest priority (lowest numerical value) enjoyed by any of the specified processes. The \fIsetpriority\fP call sets the priorities of all of the specified processes to the specified value. Only the super-user may lower priorities. .NH 3 Resource utilization .PP The resources used by a process are returned by a \fIgetrusage\fP call, returning information in a structure defined in \fI\fP: .DS ._d #define RUSAGE_SELF 0 /* usage by this process */ #define RUSAGE_CHILDREN -1 /* usage by all children */ getrusage(who, rusage) int who; result struct rusage *rusage; ._f struct rusage { struct timeval ru_utime; /* user time used */ struct timeval ru_stime; /* system time used */ int ru_maxrss; /* maximum core resident set size: kbytes */ int ru_ixrss; /* integral shared memory size (kbytes*sec) */ int ru_idrss; /* unshared data memory size */ int ru_isrss; /* unshared stack memory size */ int ru_minflt; /* page-reclaims */ int ru_majflt; /* page faults */ int ru_nswap; /* swaps */ int ru_inblock; /* block input operations */ int ru_oublock; /* block output operations */ int ru_msgsnd; /* messages sent */ int ru_msgrcv; /* messages received */ int ru_nsignals; /* signals received */ int ru_nvcsw; /* voluntary context switches */ int ru_nivcsw; /* involuntary context switches */ }; .DE The \fIwho\fP parameter specifies whose resource usage is to be returned. The resources used by the current process, or by all the terminated children of the current process may be requested. .NH 3 Resource limits .PP The resources of a process for which limits are controlled by the kernel are defined in \fI\fP, and controlled by the \fIgetrlimit\fP and \fIsetrlimit\fP calls: .DS ._d #define RLIMIT_CPU 0 /* cpu time in milliseconds */ #define RLIMIT_FSIZE 1 /* maximum file size */ #define RLIMIT_DATA 2 /* maximum data segment size */ #define RLIMIT_STACK 3 /* maximum stack segment size */ #define RLIMIT_CORE 4 /* maximum core file size */ #define RLIMIT_RSS 5 /* maximum resident set size */ #define RLIM_NLIMITS 6 #define RLIM_INFINITY 0x7f\&f\&f\&f\&f\&f\&f ._f struct rlimit { int rlim_cur; /* current (soft) limit */ int rlim_max; /* hard limit */ }; getrlimit(resource, rlp) int resource; result struct rlimit *rlp; setrlimit(resource, rlp) int resource; struct rlimit *rlp; .DE .PP Only the super-user can raise the maximum limits. Other users may only alter \fIrlim_cur\fP within the range from 0 to \fIrlim_max\fP or (irreversibly) lower \fIrlim_max\fP. fIgetpriodoc/ps1/06.sysman/1.7.t 444 3 12 3633 3661324272 7543 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)1.7.t 6.3 (Berkeley) 5/12/86 .\" .sh "System operation support .PP Unless noted otherwise, the calls in this section are permitted only to a privileged user. .NH 3 Bootstrap operations .PP The call .DS mount(blkdev, dir, ronly); char *blkdev, *dir; int ronly; .DE extends the UNIX name space. The \fImount\fP call specifies a block device \fIblkdev\fP containing a UNIX file system to be made available starting at \fIdir\fP. If \fIronly\fP is set then the file system is read-only; writes to the file system will not be permitted and access times will not be updated when files are referenced. \fIDir\fP is normally a name in the root directory. .PP The call .DS swapon(blkdev, size); char *blkdev; int size; .DE specifies a device to be made available for paging and swapping. .PP .NH 3 Shutdown operations .PP The call .DS unmount(dir); char *dir; .DE unmounts the file system mounted on \fIdir\fP. This call will succeed only if the file system is not currently being used. .PP The call .DS sync(); .DE schedules input/output to clean all system buffer caches. (This call does not require privileged status.) .PP The call .DS reboot(how) int how; .DE causes a machine halt or reboot. The call may request a reboot by specifying \fIhow\fP as RB_AUTOBOOT, or that the machine be halted with RB_HALT. These constants are defined in \fI\fP. .NH 3 Accounting .PP The system optionally keeps an accounting record in a file for each process that exits on the system. The format of this record is beyond the scope of this document. The accounting may be enabled to a file \fIname\fP by doing .DS acct(path); char *path; .DE If \fIpath\fP is null, then accounting is disabled. Otherwise, the named file becomes the accounting file. stack memory size */ int ru_minflt; /* page-reclaims */ int ru_majflt; /* page faults */ int ru_ndoc/ps1/06.sysman/2.0.t 444 3 12 4240 3661321575 7533 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.0.t 6.2 (Berkeley) 5/12/86 .\" .ds ss 1 .sh "System facilities This section discusses the system facilities that are not considered part of the kernel. .PP The system abstractions described are: .IP "Directory contexts .br A directory context is a position in the UNIX file system name space. Operations on files and other named objects in a file system are always specified relative to such a context. .IP "Files .br Files are used to store uninterpreted sequence of bytes on which random access \fIreads\fP and \fIwrites\fP may occur. Pages from files may also be mapped into process address space.\(dg A directory may be read as a file. .FS \(dg Support for mapping files is not included in the 4.3 release. .FE .IP "Communications domains .br A communications domain represents an interprocess communications environment, such as the communications facilities of the UNIX system, communications in the INTERNET, or the resource sharing protocols and access rights of a resource sharing system on a local network. .IP "Sockets .br A socket is an endpoint of communication and the focal point for IPC in a communications domain. Sockets may be created in pairs, or given names and used to rendezvous with other sockets in a communications domain, accepting connections from these sockets or exchanging messages with them. These operations model a labeled or unlabeled communications graph, and can be used in a wide variety of communications domains. Sockets can have different \fItypes\fP\| to provide different semantics of communication, increasing the flexibility of the model. .IP "Terminals and other devices .br Devices include terminals, providing input editing and interrupt generation and output flow control and editing, magnetic tapes, disks and other peripherals. They often support the generic \fIread\fP and \fIwrite\fP operations as well as a number of \fIioctl\fP\|s. .IP "Processes .br Process descriptors provide facilities for control and debugging of other processes. .ds ss 2 v; /* messages received */ int ru_nsignals; /* signals received */ int ru_nvcsw; /* voluntary context switches */ int ru_nivcsw; /* involuntary context switches */ }; .DE The \fIwho\fP parameter specifies whose resource usage is to be returned. The resources used by the current process, or by all the terminated children of the current process may doc/ps1/06.sysman/2.1.t 444 3 12 10441 3661321576 7555 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.1.t 6.2 (Berkeley) 5/12/86 .\" .sh "Generic operations .PP .PP Many system abstractions support the operations \fIread\fP, \fIwrite\fP and \fIioctl\fP. We describe the basics of these common primitives here. Similarly, the mechanisms whereby normally synchronous operations may occur in a non-blocking or asynchronous fashion are common to all system-defined abstractions and are described here. .NH 3 Read and write .PP The \fIread\fP and \fIwrite\fP system calls can be applied to communications channels, files, terminals and devices. They have the form: .DS cc = read(fd, buf, nbytes); result int cc; int fd; result caddr_t buf; int nbytes; cc = write(fd, buf, nbytes); result int cc; int fd; caddr_t buf; int nbytes; .DE The \fIread\fP call transfers as much data as possible from the object defined by \fIfd\fP to the buffer at address \fIbuf\fP of size \fInbytes\fP. The number of bytes transferred is returned in \fIcc\fP, which is \-1 if a return occurred before any data was transferred because of an error or use of non-blocking operations. .PP The \fIwrite\fP call transfers data from the buffer to the object defined by \fIfd\fP. Depending on the type of \fIfd\fP, it is possible that the \fIwrite\fP call will accept some portion of the provided bytes; the user should resubmit the other bytes in a later request in this case. Error returns because of interrupted or otherwise incomplete operations are possible. .PP Scattering of data on input or gathering of data for output is also possible using an array of input/output vector descriptors. The type for the descriptors is defined in \fI\fP as: .DS ._f struct iovec { caddr_t iov_msg; /* base of a component */ int iov_len; /* length of a component */ }; .DE The calls using an array of descriptors are: .DS cc = readv(fd, iov, iovlen); result int cc; int fd; struct iovec *iov; int iovlen; cc = writev(fd, iov, iovlen); result int cc; int fd; struct iovec *iov; int iovlen; .DE Here \fIiovlen\fP is the count of elements in the \fIiov\fP array. .NH 3 Input/output control .PP Control operations on an object are performed by the \fIioctl\fP operation: .DS ioctl(fd, request, buffer); int fd, request; caddr_t buffer; .DE This operation causes the specified \fIrequest\fP to be performed on the object \fIfd\fP. The \fIrequest\fP parameter specifies whether the argument buffer is to be read, written, read and written, or is not needed, and also the size of the buffer, as well as the request. Different descriptor types and subtypes within descriptor types may use distinct \fIioctl\fP requests. For example, operations on terminals control flushing of input and output queues and setting of terminal parameters; operations on disks cause formatting operations to occur; operations on tapes control tape positioning. .PP The names for basic control operations are defined in \fI\fP. .NH 3 Non-blocking and asynchronous operations .PP A process that wishes to do non-blocking operations on one of its descriptors sets the descriptor in non-blocking mode as described in section 1.5.4. Thereafter the \fIread\fP call will return a specific EWOULDBLOCK error indication if there is no data to be \fIread\fP. The process may \fIselect\fP the associated descriptor to determine when a read is possible. .PP Output attempted when a descriptor can accept less than is requested will either accept some of the provided data, returning a shorter than normal length, or return an error indicating that the operation would block. More output can be performed as soon as a \fIselect\fP call indicates the object is writeable. .PP Operations other than data input or output may be performed on a descriptor in a non-blocking fashion. These operations will return with a characteristic error indicating that they are in progress if they cannot complete immediately. The descriptor may then be \fIselect\fPed for \fIwrite\fP to find out when the operation has been completed. When \fIselect\fP indicates the descriptor is writeable, the operation has completed. Depending on the nature of the descriptor and the operation, additional activity may be started or the new state may be tested. to the object defined by \fIfd\fP. Depending on the type of \fIfd\fP, it is possible that the \fIwrite\fP call will accept some portion of the provided bytes; the user should resubmit the other bytes in a later request indoc/ps1/06.sysman/2.2.t 444 3 12 36132 3661324276 7563 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.2.t 6.3 (Berkeley) 5/12/86 .\" .sh "File system .NH 3 Overview .PP The file system abstraction provides access to a hierarchical file system structure. The file system contains directories (each of which may contain other sub-directories) as well as files and references to other objects such as devices and inter-process communications sockets. .PP Each file is organized as a linear array of bytes. No record boundaries or system related information is present in a file. Files may be read and written in a random-access fashion. The user may read the data in a directory as though it were an ordinary file to determine the names of the contained files, but only the system may write into the directories. The file system stores only a small amount of ownership, protection and usage information with a file. .NH 3 Naming .PP The file system calls take \fIpath name\fP arguments. These consist of a zero or more component \fIfile names\fP separated by ``/\^'' characters, where each file name is up to 255 ASCII characters excluding null and ``/\^''. .PP Each process always has two naming contexts: one for the root directory of the file system and one for the current working directory. These are used by the system in the filename translation process. If a path name begins with a ``/\^'', it is called a full path name and interpreted relative to the root directory context. If the path name does not begin with a ``/\^'' it is called a relative path name and interpreted relative to the current directory context. .PP The system limits the total length of a path name to 1024 characters. .PP The file name ``..'' in each directory refers to the parent directory of that directory. The parent directory of the root of the file system is always that directory. .PP The calls .DS chdir(path); char *path; chroot(path) char *path; .DE change the current working directory and root directory context of a process. Only the super-user can change the root directory context of a process. .NH 3 Creation and removal .PP The file system allows directories, files, special devices, and ``portals'' to be created and removed from the file system. .NH 4 Directory creation and removal .PP A directory is created with the \fImkdir\fP system call: .DS mkdir(path, mode); char *path; int mode; .DE where the mode is defined as for files (see below). Directories are removed with the \fIrmdir\fP system call: .DS rmdir(path); char *path; .DE A directory must be empty if it is to be deleted. .NH 4 File creation .PP Files are created with the \fIopen\fP system call, .DS fd = open(path, oflag, mode); result int fd; char *path; int oflag, mode; .DE The \fIpath\fP parameter specifies the name of the file to be created. The \fIoflag\fP parameter must include O_CREAT from below to cause the file to be created. Bits for \fIoflag\fP are defined in \fI\fP: .DS ._d #define O_RDONLY 000 /* open for reading */ #define O_WRONLY 001 /* open for writing */ #define O_RDWR 002 /* open for read & write */ #define O_NDELAY 004 /* non-blocking open */ #define O_APPEND 010 /* append on each write */ #define O_CREAT 01000 /* open with file create */ #define O_TRUNC 02000 /* open with truncation */ #define O_EXCL 04000 /* error on create if file exists */ .DE .PP One of O_RDONLY, O_WRONLY and O_RDWR should be specified, indicating what types of operations are desired to be performed on the open file. The operations will be checked against the user's access rights to the file before allowing the \fIopen\fP to succeed. Specifying O_APPEND causes writes to automatically append to the file. The flag O_CREAT causes the file to be created if it does not exist, owned by the current user and the group of the containing directory. The protection for the new file is specified in \fImode\fP. The file mode is used as a three digit octal number. Each digit encodes read access as 4, write access as 2 and execute access as 1, or'ed together. The 0700 bits describe owner access, the 070 bits describe the access rights for processes in the same group as the file, and the 07 bits describe the access rights for other processes. .PP If the open specifies to create the file with O_EXCL and the file already exists, then the \fIopen\fP will fail without affecting the file in any way. This provides a simple exclusive access facility. If the file exists but is a symbolic link, the open will fail regardless of the existence of the file specified by the link. .NH 4 Creating references to devices .PP The file system allows entries which reference peripheral devices. Peripherals are distinguished as \fIblock\fP or \fIcharacter\fP devices according by their ability to support block-oriented operations. Devices are identified by their ``major'' and ``minor'' device numbers. The major device number determines the kind of peripheral it is, while the minor device number indicates one of possibly many peripherals of that kind. Structured devices have all operations performed internally in ``block'' quantities while unstructured devices often have a number of special \fIioctl\fP operations, and may have input and output performed in varying units. The \fImknod\fP call creates special entries: .DS mknod(path, mode, dev); char *path; int mode, dev; .DE where \fImode\fP is formed from the object type and access permissions. The parameter \fIdev\fP is a configuration dependent parameter used to identify specific character or block I/O devices. .NH 4 Portal creation\(dg .PP .FS \(dg The \fIportal\fP call is not implemented in 4.3BSD. .FE The call .DS fd = portal(name, server, param, dtype, protocol, domain, socktype) result int fd; char *name, *server, *param; int dtype, protocol; int domain, socktype; .DE places a \fIname\fP in the file system name space that causes connection to a server process when the name is used. The portal call returns an active portal in \fIfd\fP as though an access had occurred to activate an inactive portal, as now described. .PP When an inactive portal is accessed, the system sets up a socket of the specified \fIsocktype\fP in the specified communications \fIdomain\fP (see section 2.3), and creates the \fIserver\fP process, giving it the specified \fIparam\fP as argument to help it identify the portal, and also giving it the newly created socket as descriptor number 0. The accessor of the portal will create a socket in the same \fIdomain\fP and \fIconnect\fP to the server. The user will then \fIwrap\fP the socket in the specified \fIprotocol\fP to create an object of the required descriptor type \fIdtype\fP and proceed with the operation which was in progress before the portal was encountered. .PP While the server process holds the socket (which it received as \fIfd\fP from the \fIportal\fP call on descriptor 0 at activation) further references will result in connections being made to the same socket. .NH 4 File, device, and portal removal .PP A reference to a file, special device or portal may be removed with the \fIunlink\fP call, .DS unlink(path); char *path; .DE The caller must have write access to the directory in which the file is located for this call to be successful. .NH 3 Reading and modifying file attributes .PP Detailed information about the attributes of a file may be obtained with the calls: .DS #include stat(path, stb); char *path; result struct stat *stb; fstat(fd, stb); int fd; result struct stat *stb; .DE The \fIstat\fP structure includes the file type, protection, ownership, access times, size, and a count of hard links. If the file is a symbolic link, then the status of the link itself (rather than the file the link references) may be found using the \fIlstat\fP call: .DS lstat(path, stb); char *path; result struct stat *stb; .DE .PP Newly created files are assigned the user id of the process that created it and the group id of the directory in which it was created. The ownership of a file may be changed by either of the calls .DS chown(path, owner, group); char *path; int owner, group; fchown(fd, owner, group); int fd, owner, group; .DE .PP In addition to ownership, each file has three levels of access protection associated with it. These levels are owner relative, group relative, and global (all users and groups). Each level of access has separate indicators for read permission, write permission, and execute permission. The protection bits associated with a file may be set by either of the calls: .DS chmod(path, mode); char *path; int mode; fchmod(fd, mode); int fd, mode; .DE where \fImode\fP is a value indicating the new protection of the file, as listed in section 2.2.3.2. .PP Finally, the access and modify times on a file may be set by the call: .DS utimes(path, tvp) char *path; struct timeval *tvp[2]; .DE This is particularly useful when moving files between media, to preserve relationships between the times the file was modified. .NH 3 Links and renaming .PP Links allow multiple names for a file to exist. Links exist independently of the file linked to. .PP Two types of links exist, \fIhard\fP links and \fIsymbolic\fP links. A hard link is a reference counting mechanism that allows a file to have multiple names within the same file system. Symbolic links cause string substitution during the pathname interpretation process. .PP Hard links and symbolic links have different properties. A hard link insures the target file will always be accessible, even after its original directory entry is removed; no such guarantee exists for a symbolic link. Symbolic links can span file systems boundaries. .PP The following calls create a new link, named \fIpath2\fP, to \fIpath1\fP: .DS link(path1, path2); char *path1, *path2; symlink(path1, path2); char *path1, *path2; .DE The \fIunlink\fP primitive may be used to remove either type of link. .PP If a file is a symbolic link, the ``value'' of the link may be read with the \fIreadlink\fP call, .DS len = readlink(path, buf, bufsize); result int len; result char *path, *buf; int bufsize; .DE This call returns, in \fIbuf\fP, the null-terminated string substituted into pathnames passing through \fIpath\fP\|. .PP Atomic renaming of file system resident objects is possible with the \fIrename\fP call: .DS rename(oldname, newname); char *oldname, *newname; .DE where both \fIoldname\fP and \fInewname\fP must be in the same file system. If \fInewname\fP exists and is a directory, then it must be empty. .NH 3 Extension and truncation .PP Files are created with zero length and may be extended simply by writing or appending to them. While a file is open the system maintains a pointer into the file indicating the current location in the file associated with the descriptor. This pointer may be moved about in the file in a random access fashion. To set the current offset into a file, the \fIlseek\fP call may be used, .DS oldoffset = lseek(fd, offset, type); result off_t oldoffset; int fd; off_t offset; int type; .DE where \fItype\fP is given in \fI\fP as one of: .DS ._d #define L_SET 0 /* set absolute file offset */ #define L_INCR 1 /* set file offset relative to current position */ #define L_XTND 2 /* set offset relative to end-of-file */ .DE The call ``lseek(fd, 0, L_INCR)'' returns the current offset into the file. .PP Files may have ``holes'' in them. Holes are void areas in the linear extent of the file where data has never been written. These may be created by seeking to a location in a file past the current end-of-file and writing. Holes are treated by the system as zero valued bytes. .PP A file may be truncated with either of the calls: .DS truncate(path, length); char *path; int length; ftruncate(fd, length); int fd, length; .DE reducing the size of the specified file to \fIlength\fP bytes. .NH 3 Checking accessibility .PP A process running with different real and effective user ids may interrogate the accessibility of a file to the real user by using the \fIaccess\fP call: .DS accessible = access(path, how); result int accessible; char *path; int how; .DE Here \fIhow\fP is constructed by or'ing the following bits, defined in \fI\fP: .DS ._d #define F_OK 0 /* file exists */ #define X_OK 1 /* file is executable */ #define W_OK 2 /* file is writable */ #define R_OK 4 /* file is readable */ .DE The presence or absence of advisory locks does not affect the result of \fIaccess\fP\|. .NH 3 Locking .PP The file system provides basic facilities that allow cooperating processes to synchronize their access to shared files. A process may place an advisory \fIread\fP or \fIwrite\fP lock on a file, so that other cooperating processes may avoid interfering with the process' access. This simple mechanism provides locking with file granularity. More granular locking can be built using the IPC facilities to provide a lock manager. The system does not force processes to obey the locks; they are of an advisory nature only. .PP Locking is performed after an \fIopen\fP call by applying the \fIflock\fP primitive, .DS flock(fd, how); int fd, how; .DE where the \fIhow\fP parameter is formed from bits defined in \fI\fP: .DS ._d #define LOCK_SH 1 /* shared lock */ #define LOCK_EX 2 /* exclusive lock */ #define LOCK_NB 4 /* don't block when locking */ #define LOCK_UN 8 /* unlock */ .DE Successive lock calls may be used to increase or decrease the level of locking. If an object is currently locked by another process when a \fIflock\fP call is made, the caller will be blocked until the current lock owner releases the lock; this may be avoided by including LOCK_NB in the \fIhow\fP parameter. Specifying LOCK_UN removes all locks associated with the descriptor. Advisory locks held by a process are automatically deleted when the process terminates. .NH 3 Disk quotas .PP As an optional facility, each file system may be requested to impose limits on a user's disk usage. Two quantities are limited: the total amount of disk space which a user may allocate in a file system and the total number of files a user may create in a file system. Quotas are expressed as \fIhard\fP limits and \fIsoft\fP limits. A hard limit is always imposed; if a user would exceed a hard limit, the operation which caused the resource request will fail. A soft limit results in the user receiving a warning message, but with allocation succeeding. Facilities are provided to turn soft limits into hard limits if a user has exceeded a soft limit for an unreasonable period of time. .PP To enable disk quotas on a file system the \fIsetquota\fP call is used: .DS setquota(special, file) char *special, *file; .DE where \fIspecial\fP refers to a structured device file where a mounted file system exists, and \fIfile\fP refers to a disk quota file (residing on the file system associated with \fIspecial\fP) from which user quotas should be obtained. The format of the disk quota file is implementation dependent. .PP To manipulate disk quotas the \fIquota\fP call is provided: .DS #include quota(cmd, uid, arg, addr) int cmd, uid, arg; caddr_t addr; .DE The indicated \fIcmd\fP is applied to the user ID \fIuid\fP. The parameters \fIarg\fP and \fIaddr\fP are command specific. The file \fI\fP contains definitions pertinent to the use of this call. e write access to the directory in which the file is located for this call to be successful. .NH 3 Reading and modifying file attributes .PP Detailed information about the attributes of a file may be obtained with the calls: .DS #include stat(path, stb); char *path; result struct stat *stb; fstat(fd, stb); int fd; result struct stat *stb; .DE The \fIstat\fP structure includes the file type, protection, odoc/ps1/06.sysman/2.3.t 444 3 12 34025 3661324303 7552 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.3.t 6.3 (Berkeley) 5/12/86 .\" .sh "Interprocess communications .NH 3 Interprocess communication primitives .NH 4 Communication domains .PP The system provides access to an extensible set of communication \fIdomains\fP. A communication domain is identified by a manifest constant defined in the file \fI\fP. Important standard domains supported by the system are the ``unix'' domain, AF_UNIX, for communication within the system, the ``Internet'' domain for communication in the DARPA Internet, AF_INET, and the ``NS'' domain, AF_NS, for communication using the Xerox Network Systems protocols. Other domains can be added to the system. .NH 4 Socket types and protocols .PP Within a domain, communication takes place between communication endpoints known as \fIsockets\fP. Each socket has the potential to exchange information with other sockets of an appropriate type within the domain. .PP Each socket has an associated abstract type, which describes the semantics of communication using that socket. Properties such as reliability, ordering, and prevention of duplication of messages are determined by the type. The basic set of socket types is defined in \fI\fP: .DS /* Standard socket types */ ._d #define SOCK_DGRAM 1 /* datagram */ #define SOCK_STREAM 2 /* virtual circuit */ #define SOCK_RAW 3 /* raw socket */ #define SOCK_RDM 4 /* reliably-delivered message */ #define SOCK_SEQPACKET 5 /* sequenced packets */ .DE The SOCK_DGRAM type models the semantics of datagrams in network communication: messages may be lost or duplicated and may arrive out-of-order. A datagram socket may send messages to and receive messages from multiple peers. The SOCK_RDM type models the semantics of reliable datagrams: messages arrive unduplicated and in-order, the sender is notified if messages are lost. The \fIsend\fP and \fIreceive\fP operations (described below) generate reliable/unreliable datagrams. The SOCK_STREAM type models connection-based virtual circuits: two-way byte streams with no record boundaries. Connection setup is required before data communication may begin. The SOCK_SEQPACKET type models a connection-based, full-duplex, reliable, sequenced packet exchange; the sender is notified if messages are lost, and messages are never duplicated or presented out-of-order. Users of the last two abstractions may use the facilities for out-of-band transmission to send out-of-band data. .PP SOCK_RAW is used for unprocessed access to internal network layers and interfaces; it has no specific semantics. .PP Other socket types can be defined. .PP Each socket may have a specific \fIprotocol\fP associated with it. This protocol is used within the domain to provide the semantics required by the socket type. Not all socket types are supported by each domain; support depends on the existence and the implementation of a suitable protocol within the domain. For example, within the ``Internet'' domain, the SOCK_DGRAM type may be implemented by the UDP user datagram protocol, and the SOCK_STREAM type may be implemented by the TCP transmission control protocol, while no standard protocols to provide SOCK_RDM or SOCK_SEQPACKET sockets exist. .NH 4 Socket creation, naming and service establishment .PP Sockets may be \fIconnected\fP or \fIunconnected\fP. An unconnected socket descriptor is obtained by the \fIsocket\fP call: .DS s = socket(domain, type, protocol); result int s; int domain, type, protocol; .DE The socket domain and type are as described above, and are specified using the definitions from \fI\fP. The protocol may be given as 0, meaning any suitable protocol. One of several possible protocols may be selected using identifiers obtained from a library routine, \fIgetprotobyname\fP. .PP An unconnected socket descriptor of a connection-oriented type may yield a connected socket descriptor in one of two ways: either by actively connecting to another socket, or by becoming associated with a name in the communications domain and \fIaccepting\fP a connection from another socket. Datagram sockets need not establish connections before use. .PP To accept connections or to receive datagrams, a socket must first have a binding to a name (or address) within the communications domain. Such a binding may be established by a \fIbind\fP call: .DS bind(s, name, namelen); int s; struct sockaddr *name; int namelen; .DE Datagram sockets may have default bindings established when first sending data if not explicitly bound earlier. In either case, a socket's bound name may be retrieved with a \fIgetsockname\fP call: .DS getsockname(s, name, namelen); int s; result struct sockaddr *name; result int *namelen; .DE while the peer's name can be retrieved with \fIgetpeername\fP: .DS getpeername(s, name, namelen); int s; result struct sockaddr *name; result int *namelen; .DE Domains may support sockets with several names. .NH 4 Accepting connections .PP Once a binding is made to a connection-oriented socket, it is possible to \fIlisten\fP for connections: .DS listen(s, backlog); int s, backlog; .DE The \fIbacklog\fP specifies the maximum count of connections that can be simultaneously queued awaiting acceptance. .PP An \fIaccept\fP call: .DS t = accept(s, name, anamelen); result int t; int s; result struct sockaddr *name; result int *anamelen; .DE returns a descriptor for a new, connected, socket from the queue of pending connections on \fIs\fP. If no new connections are queued for acceptance, the call will wait for a connection unless non-blocking I/O has been enabled. .NH 4 Making connections .PP An active connection to a named socket is made by the \fIconnect\fP call: .DS connect(s, name, namelen); int s; struct sockaddr *name; int namelen; .DE Although datagram sockets do not establish connections, the \fIconnect\fP call may be used with such sockets to create an \fIassociation\fP with the foreign address. The address is recorded for use in future \fIsend\fP calls, which then need not supply destination addresses. Datagrams will be received only from that peer, and asynchronous error reports may be received. .PP It is also possible to create connected pairs of sockets without using the domain's name space to rendezvous; this is done with the \fIsocketpair\fP call\(dg: .FS \(dg 4.3BSD supports \fIsocketpair\fP creation only in the ``unix'' communication domain. .FE .DS socketpair(domain, type, protocol, sv); int domain, type, protocol; result int sv[2]; .DE Here the returned \fIsv\fP descriptors correspond to those obtained with \fIaccept\fP and \fIconnect\fP. .PP The call .DS pipe(pv) result int pv[2]; .DE creates a pair of SOCK_STREAM sockets in the UNIX domain, with pv[0] only writable and pv[1] only readable. .NH 4 Sending and receiving data .PP Messages may be sent from a socket by: .DS cc = sendto(s, buf, len, flags, to, tolen); result int cc; int s; caddr_t buf; int len, flags; caddr_t to; int tolen; .DE if the socket is not connected or: .DS cc = send(s, buf, len, flags); result int cc; int s; caddr_t buf; int len, flags; .DE if the socket is connected. The corresponding receive primitives are: .DS msglen = recvfrom(s, buf, len, flags, from, fromlenaddr); result int msglen; int s; result caddr_t buf; int len, flags; result caddr_t from; result int *fromlenaddr; .DE and .DS msglen = recv(s, buf, len, flags); result int msglen; int s; result caddr_t buf; int len, flags; .DE .PP In the unconnected case, the parameters \fIto\fP and \fItolen\fP specify the destination or source of the message, while the \fIfrom\fP parameter stores the source of the message, and \fI*fromlenaddr\fP initially gives the size of the \fIfrom\fP buffer and is updated to reflect the true length of the \fIfrom\fP address. .PP All calls cause the message to be received in or sent from the message buffer of length \fIlen\fP bytes, starting at address \fIbuf\fP. The \fIflags\fP specify peeking at a message without reading it or sending or receiving high-priority out-of-band messages, as follows: .DS ._d #define MSG_PEEK 0x1 /* peek at incoming message */ #define MSG_OOB 0x2 /* process out-of-band data */ .DE .NH 4 Scatter/gather and exchanging access rights .PP It is possible scatter and gather data and to exchange access rights with messages. When either of these operations is involved, the number of parameters to the call becomes large. Thus the system defines a message header structure, in \fI\fP, which can be used to conveniently contain the parameters to the calls: .DS .if t .ta .5i 1.25i 2i 2.7i .if n ._f struct msghdr { caddr_t msg_name; /* optional address */ int msg_namelen; /* size of address */ struct iov *msg_iov; /* scatter/gather array */ int msg_iovlen; /* # elements in msg_iov */ caddr_t msg_accrights; /* access rights sent/received */ int msg_accrightslen; /* size of msg_accrights */ }; .DE Here \fImsg_name\fP and \fImsg_namelen\fP specify the source or destination address if the socket is unconnected; \fImsg_name\fP may be given as a null pointer if no names are desired or required. The \fImsg_iov\fP and \fImsg_iovlen\fP describe the scatter/gather locations, as described in section 2.1.3. Access rights to be sent along with the message are specified in \fImsg_accrights\fP, which has length \fImsg_accrightslen\fP. In the ``unix'' domain these are an array of integer descriptors, taken from the sending process and duplicated in the receiver. .PP This structure is used in the operations \fIsendmsg\fP and \fIrecvmsg\fP: .DS sendmsg(s, msg, flags); int s; struct msghdr *msg; int flags; msglen = recvmsg(s, msg, flags); result int msglen; int s; result struct msghdr *msg; int flags; .DE .NH 4 Using read and write with sockets .PP The normal UNIX \fIread\fP and \fIwrite\fP calls may be applied to connected sockets and translated into \fIsend\fP and \fIreceive\fP calls from or to a single area of memory and discarding any rights received. A process may operate on a virtual circuit socket, a terminal or a file with blocking or non-blocking input/output operations without distinguishing the descriptor type. .NH 4 Shutting down halves of full-duplex connections .PP A process that has a full-duplex socket such as a virtual circuit and no longer wishes to read from or write to this socket can give the call: .DS shutdown(s, direction); int s, direction; .DE where \fIdirection\fP is 0 to not read further, 1 to not write further, or 2 to completely shut the connection down. If the underlying protocol supports unidirectional or bidirectional shutdown, this indication will be passed to the peer. For example, a shutdown for writing might produce an end-of-file condition at the remote end. .NH 4 Socket and protocol options .PP Sockets, and their underlying communication protocols, may support \fIoptions\fP. These options may be used to manipulate implementation- or protocol-specific facilities. The \fIgetsockopt\fP and \fIsetsockopt\fP calls are used to control options: .DS getsockopt(s, level, optname, optval, optlen) int s, level, optname; result caddr_t optval; result int *optlen; setsockopt(s, level, optname, optval, optlen) int s, level, optname; caddr_t optval; int optlen; .DE The option \fIoptname\fP is interpreted at the indicated protocol \fIlevel\fP for socket \fIs\fP. If a value is specified with \fIoptval\fP and \fIoptlen\fP, it is interpreted by the software operating at the specified \fIlevel\fP. The \fIlevel\fP SOL_SOCKET is reserved to indicate options maintained by the socket facilities. Other \fIlevel\fP values indicate a particular protocol which is to act on the option request; these values are normally interpreted as a ``protocol number''. .NH 3 UNIX domain .PP This section describes briefly the properties of the UNIX communications domain. .NH 4 Types of sockets .PP In the UNIX domain, the SOCK_STREAM abstraction provides pipe-like facilities, while SOCK_DGRAM provides (usually) reliable message-style communications. .NH 4 Naming .PP Socket names are strings and may appear in the UNIX file system name space through portals\(dg. .FS \(dg The 4.3BSD implementation of the UNIX domain embeds bound sockets in the UNIX file system name space; this may change in future releases. .FE .NH 4 Access rights transmission .PP The ability to pass UNIX descriptors with messages in this domain allows migration of service within the system and allows user processes to be used in building system facilities. .NH 3 INTERNET domain .PP This section describes briefly how the Internet domain is mapped to the model described in this section. More information will be found in the document describing the network implementation in 4.3BSD. .NH 4 Socket types and protocols .PP SOCK_STREAM is supported by the Internet TCP protocol; SOCK_DGRAM by the UDP protocol. Each is layered atop the transport-level Internet Protocol (IP). The Internet Control Message Protocol is implemented atop/beside IP and is accessible via a raw socket. The SOCK_SEQPACKET has no direct Internet family analogue; a protocol based on one from the XEROX NS family and layered on top of IP could be implemented to fill this gap. .NH 4 Socket naming .PP Sockets in the Internet domain have names composed of the 32 bit Internet address, and a 16 bit port number. Options may be used to provide IP source routing or security options. The 32-bit address is composed of network and host parts; the network part is variable in size and is frequency encoded. The host part may optionally be interpreted as a subnet field plus the host on subnet; this is is enabled by setting a network address mask at boot time. .NH 4 Access rights transmission .PP No access rights transmission facilities are provided in the Internet domain. .NH 4 Raw access .PP The Internet domain allows the super-user access to the raw facilities of IP. These interfaces are modeled as SOCK_RAW sockets. Each raw socket is associated with one IP protocol number, and receives all traffic received for that protocol. This allows administrative and debugging functions to occur, and enables user-level implementations of special-purpose protocols such as inter-gateway routing protocols. ing to another socket, or by becoming associated with a name in the communications domain and \fIaccepting\fP a connection from another socket. Datagram sockets need not establish connections before use. .PP To accept connections or to receive datagrams, a socket must first have a binding to a name (or address) within the communications domain. Such a binding may be established by a \fIbind\fP call: .DS bind(s, name, namelen); int s; struct sockaddr *name; int namelen; .DE Datagram sockdoc/ps1/06.sysman/2.4.t 444 3 12 12466 3661321603 7560 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.4.t 6.2 (Berkeley) 5/12/86 .\" .sh "Terminals and Devices .NH 3 Terminals .PP Terminals support \fIread\fP and \fIwrite\fP I/O operations, as well as a collection of terminal specific \fIioctl\fP operations, to control input character interpretation and editing, and output format and delays. .NH 4 Terminal input .PP Terminals are handled according to the underlying communication characteristics such as baud rate and required delays, and a set of software parameters. .NH 5 Input modes .PP A terminal is in one of three possible modes: \fIraw\fP, \fIcbreak\fP, or \fIcooked\fP. In raw mode all input is passed through to the reading process immediately and without interpretation. In cbreak mode, the handler interprets input only by looking for characters that cause interrupts or output flow control; all other characters are made available as in raw mode. In cooked mode, input is processed to provide standard line-oriented local editing functions, and input is presented on a line-by-line basis. .NH 5 Interrupt characters .PP Interrupt characters are interpreted by the terminal handler only in cbreak and cooked modes, and cause a software interrupt to be sent to all processes in the process group associated with the terminal. Interrupt characters exist to send SIGINT and SIGQUIT signals, and to stop a process group with the SIGTSTP signal either immediately, or when all input up to the stop character has been read. .NH 5 Line editing .PP When the terminal is in cooked mode, editing of an input line is performed. Editing facilities allow deletion of the previous character or word, or deletion of the current input line. In addition, a special character may be used to reprint the current input line after some number of editing operations have been applied. .PP Certain other characters are interpreted specially when a process is in cooked mode. The \fIend of line\fP character determines the end of an input record. The \fIend of file\fP character simulates an end of file occurrence on terminal input. Flow control is provided by \fIstop output\fP and \fIstart output\fP control characters. Output may be flushed with the \fIflush output\fP character; and a \fIliteral character\fP may be used to force literal input of the immediately following character in the input line. .PP Input characters may be echoed to the terminal as they are received. Non-graphic ASCII input characters may be echoed as a two-character printable representation, ``^character.'' .NH 4 Terminal output .PP On output, the terminal handler provides some simple formatting services. These include converting the carriage return character to the two character return-linefeed sequence, inserting delays after certain standard control characters, expanding tabs, and providing translations for upper-case only terminals. .NH 4 Terminal control operations .PP When a terminal is first opened it is initialized to a standard state and configured with a set of standard control, editing, and interrupt characters. A process may alter this configuration with certain control operations, specifying parameters in a standard structure:\(dg .FS \(dg The control interface described here is an internal interface only in 4.3BSD. Future releases will probably use a modified interface based on currently-proposed standards. .FE .DS ._f struct ttymode { short tt_ispeed; /* input speed */ int tt_iflags; /* input flags */ short tt_ospeed; /* output speed */ int tt_oflags; /* output flags */ }; .DE and ``special characters'' are specified with the \fIttychars\fP structure, .DS ._f struct ttychars { char tc_erasec; /* erase char */ char tc_killc; /* erase line */ char tc_intrc; /* interrupt */ char tc_quitc; /* quit */ char tc_startc; /* start output */ char tc_stopc; /* stop output */ char tc_eofc; /* end-of-file */ char tc_brkc; /* input delimiter (like nl) */ char tc_suspc; /* stop process signal */ char tc_dsuspc; /* delayed stop process signal */ char tc_rprntc; /* reprint line */ char tc_flushc; /* flush output (toggles) */ char tc_werasc; /* word erase */ char tc_lnextc; /* literal next character */ }; .DE .NH 4 Terminal hardware support .PP The terminal handler allows a user to access basic hardware related functions; e.g. line speed, modem control, parity, and stop bits. A special signal, SIGHUP, is automatically sent to processes in a terminal's process group when a carrier transition is detected. This is normally associated with a user hanging up on a modem controlled terminal line. .NH 3 Structured devices .PP Structures devices are typified by disks and magnetic tapes, but may represent any random-access device. The system performs read-modify-write type buffering actions on block devices to allow them to be read and written in a totally random access fashion like ordinary files. File systems are normally created in block devices. .NH 3 Unstructured devices .PP Unstructured devices are those devices which do not support block structure. Familiar unstructured devices are raw communications lines (with no terminal handler), raster plotters, magnetic tape and disks unfettered by buffering and permitting large block input/output and positioning and formatting commands. nt *fromlenaddr; .DE and .DS msglen = recv(s, buf, len, flags); result int msglen; int s; result caddr_t buf; int len, flags; .DE .PP In the unconnected case, the parameters \fIto\fP and \fItolen\fP spedoc/ps1/06.sysman/2.5.t 444 3 12 755 3661321603 7517 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.5.t 6.2 (Berkeley) 5/12/86 .\" .sh "Process and kernel descriptors .PP The status of the facilities in this section is still under discussion. The \fIptrace\fP facility of earlier UNIX systems remains in 4.3BSD. Planned enhancements would allow a descriptor-based process control facility. doc/ps1/06.sysman/a.t 444 3 12 11514 3661426656 7504 .\" Copyright (c) 1983 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)a.t 6.5 (Berkeley) 5/12/86 .\" .ds RH Summary of facilities .bp .SH \s+2I. Summary of facilities\s0 .PP .de h .br .if n .ne 8 \fB\\$1 \\$2\fP .br .. .nr H1 0 .NH Kernel primitives .LP .h 1.1. "Process naming and protection .in +5 .TS lw(1.6i) aw(3i). sethostid set UNIX host id gethostid get UNIX host id sethostname set UNIX host name gethostname get UNIX host name getpid get process id fork create new process exit terminate a process execve execute a different process getuid get user id geteuid get effective user id setreuid set real and effective user id's getgid get accounting group id getegid get effective accounting group id getgroups get access group set setregid set real and effective group id's setgroups set access group set getpgrp get process group setpgrp set process group .TE .in -5 .h 1.2 "Memory management .in +5 .TS lw(1.6i) aw(3i). memory management definitions sbrk change data section size sstk\(dg change stack section size .FS \(dg Not supported in 4.3BSD. .FE getpagesize get memory page size mmap\(dg map pages of memory msync\(dg flush modified mapped pages to filesystem munmap\(dg unmap memory mprotect\(dg change protection of pages madvise\(dg give memory management advice mincore\(dg determine core residency of pages msleep\(dg sleep on a lock mwakeup\(dg wakeup process sleeping on a lock .TE .in -5 .h 1.3 "Signals .in +5 .TS lw(1.6i) aw(3i). signal definitions sigvec set handler for signal kill send signal to process killpgrp send signal to process group sigblock block set of signals sigsetmask restore set of blocked signals sigpause wait for signals sigstack set software stack for signals .TE .in -5 .h 1.4 "Timing and statistics .in +5 .TS lw(1.6i) aw(3i). time-related definitions gettimeofday get current time and timezone settimeofday set current time and timezone getitimer read an interval timer setitimer get and set an interval timer profil profile process .TE .in -5 .h 1.5 "Descriptors .in +5 .TS lw(1.6i) aw(3i). getdtablesize descriptor reference table size dup duplicate descriptor dup2 duplicate to specified index close close descriptor select multiplex input/output fcntl control descriptor options wrap\(dg wrap descriptor with protocol .FS \(dg Not supported in 4.3BSD. .FE .TE .in -5 .h 1.6 "Resource controls .in +5 .TS lw(1.6i) aw(3i). resource-related definitions getpriority get process priority setpriority set process priority getrusage get resource usage getrlimit get resource limitations setrlimit set resource limitations .TE .in -5 .h 1.7 "System operation support .in +5 .TS lw(1.6i) aw(3i). mount mount a device file system swapon add a swap device umount umount a file system sync flush system caches reboot reboot a machine acct specify accounting file .TE .in -5 .NH System facilities .LP .h 2.1 "Generic operations .in +5 .TS lw(1.6i) aw(3i). read read data write write data scatter-gather related definitions readv scattered data input writev gathered data output standard control operations ioctl device control operation .TE .in -5 .h 2.2 "File system .PP Operations marked with a * exist in two forms: as shown, operating on a file name, and operating on a file descriptor, when the name is preceded with a ``f''. .in +5 .TS lw(1.6i) aw(3i). file system definitions chdir change directory chroot change root directory mkdir make a directory rmdir remove a directory open open a new or existing file mknod make a special file portal\(dg make a portal entry unlink remove a link stat* return status for a file lstat returned status of link chown* change owner chmod* change mode utimes change access/modify times link make a hard link symlink make a symbolic link readlink read contents of symbolic link rename change name of file lseek reposition within file truncate* truncate file access determine accessibility flock lock a file .TE .in -5 .h 2.3 "Communications .in +5 .TS lw(1.6i) aw(3i). standard definitions socket create socket bind bind socket to name getsockname get socket name listen allow queuing of connections accept accept a connection connect connect to peer socket socketpair create pair of connected sockets sendto send data to named socket send send data to connected socket recvfrom receive data on unconnected socket recv receive data on connected socket sendmsg send gathered data and/or rights recvmsg receive scattered data and/or rights shutdown partially close full-duplex connection getsockopt get socket option setsockopt set socket option .TE .in -5 .h 2.4 "Terminals, block and character devices .in +5 .TS lw(1.6i) aw(3i). .TE .in -5 .h 2.5 "Processes and kernel hooks .in +5 .TS lw(1.6i) aw(3i). .TE .in -5 es to allow them to be read and written in a totally random access fashion like ordinary files. File systems are normally created in block devices. .NH 3 Unstructured devices .PP Udoc/ps1/06.sysman/Makefile 444 3 12 1314 3660050152 10473 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 5/8/86 # SRCS= 0.t 1.0.t 1.1.t 1.2.t 1.3.t 1.4.t 1.5.t 1.6.t 1.7.t \ 2.0.t 2.1.t 2.2.t 2.3.t 2.4.t 2.5.t a.t MACROS= -msU PRINTER=Pdp TBL= dtbl -${PRINTER} TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done user id setreuid set real and effective user id's getgid get accounting group id getegid get effective accounting group id getgroups get access group set setregid set real and effective group id's setgroups set access group set getpgrp get process group setpgrp set process group .TE .in -5 .h 1.2 "Memory madoc/ps1/06.sysman/spell.ok 444 3 12 4430 3661323565 10523 AF ANON AUTOBOOT Behav CLR DEF DGRAM DONTNEED Datagram Datagrams EINPROGRESS EWOULDBLOCK EXCL FD FSIZE Fabry GETFL GETOWN HASSEMAPHORE HASSEMPHORE IGN INCR INET IP IPC ISSET ITIMER Karels Leffler MADV MAXHOSTNAMELEN MSG Manual''PS1:6 McKusick Mclear Mset NB NDELAY NGROUPS NLIMITS NOEXTEND NS OOB PGRP PRIO PROT PS1:6 RB RDM RDONLY RDWR RH RLIM RLIMIT RSS RUSAGE SEQPACKET SETFL SETOWN SIG SIGALRM SIGBUS SIGCHLD SIGCONT SIGEMT SIGFPE SIGHUP SIGILL SIGINT SIGIO SIGIOT SIGKILL SIGPROF SIGQUIT SIGSEGV SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU SIGURG SIGUSR1 SIGUSR2 SIGVTALRM SIGXCPU SIGXFSZ Sem Sv TCP TRUNC UDP VAX WILLNEED WRONLY XTND accessor accrights accrightslen addr anamelen arg argv arusage astatus behav blkdev brkc bu buf buflen bufsize caddr cbreak chroot cmd datagram datagrams dev dopt dprop ds dst dsttime dsuspc dtype dup2 egid envp eofc erasec errno euid fchmod fchown fcntl fd fdset file.h filename filesystem flushc fromlenaddr fs fstat ftruncate getdtablesize getegid geteuid getgid getgroups gethostid gethostname getitimer getpagesize getpeername getpriority getprotobyname getrlimit getrusage getsockname getsockopt gettimeofday gid gidset gidsetsize hostid idrss iflags inblock incr intrc ioctl.h iov iovec iovlen ispeed isrss itimerval ixrss kbytes killc killpgrp len linefeed lnextc lstat maddr madvise majflt maxrss mclear mincore minflt minuteswest mman.h mmap mprotect mremap mset msg msghdr msglen msgrcv msgsnd msleep msync munmap mwakeup namelen nbytes nd nds newname ngroups nivcsw nl nsignals nswap nvcsw oflag oflags oldmask oldname oldoffset onstack optlen optname optval or'ed or'ing ospeed oss osv oublock ovalue pagesize param param.h path1 path2 pathname pathnames pgrp pid pos prio prot proto pv quitc quota.h readlink readv reboot.h recv recvfrom recvmsg resource.h rgid rlim rlimit rlp ronly rprntc ru ruid rusage sbrk scp sem sendmsg sendto setgroups sethostid sethostname setitimer setpriority setquota setregid setreuid setrlimit setsockopt settimeofday sigblock sigcontext sigmask signal.h signo sigpause sigsetmask sigstack sigvec sockaddr socket.h socketpair socktype sp ss sstk startc stat.h stb stopc suspc sv sw symlink ta time.h timeval timezone tolen tt ttychars ttymode tv tvp tvsec types.h tz tzp uid uio.h umount usec vec wait.h waitstatus werasc writeable writev e descriptor select multiplex input/output fcntl control descriptor options wrap\(dg wrap descriptor with protocol .FS \(dg Not supported in 4.3BSD. .FE .TE .in -5 .h 1.6 "Resource controls .in +5 .TS lw(1.6i) aw(3i). file system definitions chdir change directory chroot chadoc/ps1/08.ipc/2.t 444 3 12 64220 3656257251 6667 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)2.t 1.3 (Berkeley) 5/2/86 .\" .\".ds RH "Basics .bp .nr H1 2 .nr H2 0 .bp .LG .B .ce 2. BASICS .sp 2 .R .NL .PP The basic building block for communication is the \fIsocket\fP. A socket is an endpoint of communication to which a name may be \fIbound\fP. Each socket in use has a \fItype\fP and one or more associated processes. Sockets exist within \fIcommunication domains\fP. A communication domain is an abstraction introduced to bundle common properties of processes communicating through sockets. One such property is the scheme used to name sockets. For example, in the UNIX communication domain sockets are named with UNIX path names; e.g. a socket may be named \*(lq/dev/foo\*(rq. Sockets normally exchange data only with sockets in the same domain (it may be possible to cross domain boundaries, but only if some translation process is performed). The 4.3BSD IPC facilities support three separate communication domains: the UNIX domain, for on-system communication; the Internet domain, which is used by processes which communicate using the the DARPA standard communication protocols; and the NS domain, which is used by processes which communicate using the Xerox standard communication protocols*. .FS * See \fIInternet Transport Protocols\fP, Xerox System Integration Standard (XSIS)028112 for more information. This document is almost a necessity for one trying to write NS applications. .FE The underlying communication facilities provided by these domains have a significant influence on the internal system implementation as well as the interface to socket facilities available to a user. An example of the latter is that a socket \*(lqoperating\*(rq in the UNIX domain sees a subset of the error conditions which are possible when operating in the Internet (or NS) domain. .NH 2 Socket types .PP Sockets are typed according to the communication properties visible to a user. Processes are presumed to communicate only between sockets of the same type, although there is nothing that prevents communication between sockets of different types should the underlying communication protocols support this. .PP Four types of sockets currently are available to a user. A \fIstream\fP socket provides for the bidirectional, reliable, sequenced, and unduplicated flow of data without record boundaries. Aside from the bidirectionality of data flow, a pair of connected stream sockets provides an interface nearly identical to that of pipes\(dg. .FS \(dg In the UNIX domain, in fact, the semantics are identical and, as one might expect, pipes have been implemented internally as simply a pair of connected stream sockets. .FE .PP A \fIdatagram\fP socket supports bidirectional flow of data which is not promised to be sequenced, reliable, or unduplicated. That is, a process receiving messages on a datagram socket may find messages duplicated, and, possibly, in an order different from the order in which it was sent. An important characteristic of a datagram socket is that record boundaries in data are preserved. Datagram sockets closely model the facilities found in many contemporary packet switched networks such as the Ethernet. .PP A \fIraw\fP socket provides users access to the underlying communication protocols which support socket abstractions. These sockets are normally datagram oriented, though their exact characteristics are dependent on the interface provided by the protocol. Raw sockets are not intended for the general user; they have been provided mainly for those interested in developing new communication protocols, or for gaining access to some of the more esoteric facilities of an existing protocol. The use of raw sockets is considered in section 5. .PP A \fIsequenced packet\fP socket is similar to a stream socket, with the exception that record boundaries are preserved. This interface is provided only as part of the NS socket abstraction, and is very important in most serious NS applications. Sequenced-packet sockets allow the user to manipulate the SPP or IDP headers on a packet or a group of packets either by writing a prototype header along with whatever data is to be sent, or by specifying a default header to be used with all outgoing data, and allows the user to receive the headers on incoming packets. The use of these options is considered in section 5. .PP Another potential socket type which has interesting properties is the \fIreliably delivered message\fP socket. The reliably delivered message socket has similar properties to a datagram socket, but with reliable delivery. There is currently no support for this type of socket, but a reliably delivered message protocol similar to Xerox's Packet Exchange Protocol (PEX) may be simulated at the user level. More information on this topic can be found in section 5. .NH 2 Socket creation .PP To create a socket the \fIsocket\fP system call is used: .DS s = socket(domain, type, protocol); .DE This call requests that the system create a socket in the specified \fIdomain\fP and of the specified \fItype\fP. A particular protocol may also be requested. If the protocol is left unspecified (a value of 0), the system will select an appropriate protocol from those protocols which comprise the communication domain and which may be used to support the requested socket type. The user is returned a descriptor (a small integer number) which may be used in later system calls which operate on sockets. The domain is specified as one of the manifest constants defined in the file <\fIsys/socket.h\fP>. For the UNIX domain the constant is AF_UNIX*; for the Internet .FS * The manifest constants are named AF_whatever as they indicate the ``address format'' to use in interpreting names. .FE domain AF_INET; and for the NS domain, AF_NS. The socket types are also defined in this file and one of SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, or SOCK_SEQPACKET must be specified. To create a stream socket in the Internet domain the following call might be used: .DS s = socket(AF_INET, SOCK_STREAM, 0); .DE This call would result in a stream socket being created with the TCP protocol providing the underlying communication support. To create a datagram socket for on-machine use the call might be: .DS s = socket(AF_UNIX, SOCK_DGRAM, 0); .DE .PP The default protocol (used when the \fIprotocol\fP argument to the \fIsocket\fP call is 0) should be correct for most every situation. However, it is possible to specify a protocol other than the default; this will be covered in section 5. .PP There are several reasons a socket call may fail. Aside from the rare occurrence of lack of memory (ENOBUFS), a socket request may fail due to a request for an unknown protocol (EPROTONOSUPPORT), or a request for a type of socket for which there is no supporting protocol (EPROTOTYPE). .NH 2 Binding local names .PP A socket is created without a name. Until a name is bound to a socket, processes have no way to reference it and, consequently, no messages may be received on it. Communicating processes are bound by an \fIassociation\fP. In the Internet and NS domains, an association is composed of local and foreign addresses, and local and foreign ports, while in the UNIX domain, an association is composed of local and foreign path names (the phrase ``foreign pathname'' means a pathname created by a foreign process, not a pathname on a foreign system). In most domains, associations must be unique. In the Internet domain there may never be duplicate tuples. UNIX domain sockets need not always be bound to a name, but when bound there may never be duplicate tuples. The pathnames may not refer to files already existing on the system in 4.3; the situation may change in future releases. .PP The \fIbind\fP system call allows a process to specify half of an association, (or ), while the \fIconnect\fP and \fIaccept\fP primitives are used to complete a socket's association. .PP In the Internet domain, binding names to sockets can be fairly complex. Fortunately, it is usually not necessary to specifically bind an address and port number to a socket, because the \fIconnect\fP and \fIsend\fP calls will automatically bind an appropriate address if they are used with an unbound socket. The process of binding names to NS sockets is similar in most ways to that of binding names to Internet sockets. .PP The \fIbind\fP system call is used as follows: .DS bind(s, name, namelen); .DE The bound name is a variable length byte string which is interpreted by the supporting protocol(s). Its interpretation may vary from communication domain to communication domain (this is one of the properties which comprise the \*(lqdomain\*(rq). As mentioned, in the Internet domain names contain an Internet address and port number. NS domain names contain an NS address and port number. In the UNIX domain, names contain a path name and a family, which is always AF_UNIX. If one wanted to bind the name \*(lq/tmp/foo\*(rq to a UNIX domain socket, the following code would be used*: .FS * Note that, although the tendency here is to call the \*(lqaddr\*(rq structure \*(lqsun\*(rq, doing so would cause problems if the code were ever ported to a Sun workstation. .FE .DS #include ... struct sockaddr_un addr; ... strcpy(addr.sun_path, "/tmp/foo"); addr.sun_family = AF_UNIX; bind(s, (struct sockaddr *) &addr, strlen(addr.sun_path) + sizeof (addr.sun_family)); .DE Note that in determining the size of a UNIX domain address null bytes are not counted, which is why \fIstrlen\fP is used. In the current implementation of UNIX domain IPC under 4.3BSD, the file name referred to in \fIaddr.sun_path\fP is created as a socket in the system file space. The caller must, therefore, have write permission in the directory where \fIaddr.sun_path\fP is to reside, and this file should be deleted by the caller when it is no longer needed. Future versions of 4BSD may not create this file. .PP In binding an Internet address things become more complicated. The actual call is similar, .DS #include #include ... struct sockaddr_in sin; ... bind(s, (struct sockaddr *) &sin, sizeof (sin)); .DE but the selection of what to place in the address \fIsin\fP requires some discussion. We will come back to the problem of formulating Internet addresses in section 3 when the library routines used in name resolution are discussed. .PP Binding an NS address to a socket is even more difficult, especially since the Internet library routines do not work with NS hostnames. The actual call is again similar: .DS #include #include ... struct sockaddr_ns sns; ... bind(s, (struct sockaddr *) &sns, sizeof (sns)); .DE Again, discussion of what to place in a \*(lqstruct sockaddr_ns\*(rq will be deferred to section 3. .NH 2 Connection establishment .PP Connection establishment is usually asymmetric, with one process a \*(lqclient\*(rq and the other a \*(lqserver\*(rq. The server, when willing to offer its advertised services, binds a socket to a well-known address associated with the service and then passively \*(lqlistens\*(rq on its socket. It is then possible for an unrelated process to rendezvous with the server. The client requests services from the server by initiating a \*(lqconnection\*(rq to the server's socket. On the client side the \fIconnect\fP call is used to initiate a connection. Using the UNIX domain, this might appear as, .DS struct sockaddr_un server; ... connect(s, (struct sockaddr *)&server, strlen(server.sun_path) + sizeof (server.sun_family)); .DE while in the Internet domain, .DS struct sockaddr_in server; ... connect(s, (struct sockaddr *)&server, sizeof (server)); .DE and in the NS domain, .DS struct sockaddr_ns server; ... connect(s, (struct sockaddr *)&server, sizeof (server)); .DE where \fIserver\fP in the example above would contain either the UNIX pathname, Internet address and port number, or NS address and port number of the server to which the client process wishes to speak. If the client process's socket is unbound at the time of the connect call, the system will automatically select and bind a name to the socket if necessary; c.f. section 5.4. This is the usual way that local addresses are bound to a socket. .PP An error is returned if the connection was unsuccessful (any name automatically bound by the system, however, remains). Otherwise, the socket is associated with the server and data transfer may begin. Some of the more common errors returned when a connection attempt fails are: .IP ETIMEDOUT .br After failing to establish a connection for a period of time, the system decided there was no point in retrying the connection attempt any more. This usually occurs because the destination host is down, or because problems in the network resulted in transmissions being lost. .IP ECONNREFUSED .br The host refused service for some reason. This is usually due to a server process not being present at the requested name. .IP "ENETDOWN or EHOSTDOWN" .br These operational errors are returned based on status information delivered to the client host by the underlying communication services. .IP "ENETUNREACH or EHOSTUNREACH" .br These operational errors can occur either because the network or host is unknown (no route to the network or host is present), or because of status information returned by intermediate gateways or switching nodes. Many times the status returned is not sufficient to distinguish a network being down from a host being down, in which case the system indicates the entire network is unreachable. .PP For the server to receive a client's connection it must perform two steps after binding its socket. The first is to indicate a willingness to listen for incoming connection requests: .DS listen(s, 5); .DE The second parameter to the \fIlisten\fP call specifies the maximum number of outstanding connections which may be queued awaiting acceptance by the server process; this number may be limited by the system. Should a connection be requested while the queue is full, the connection will not be refused, but rather the individual messages which comprise the request will be ignored. This gives a harried server time to make room in its pending connection queue while the client retries the connection request. Had the connection been returned with the ECONNREFUSED error, the client would be unable to tell if the server was up or not. As it is now it is still possible to get the ETIMEDOUT error back, though this is unlikely. The backlog figure supplied with the listen call is currently limited by the system to a maximum of 5 pending connections on any one queue. This avoids the problem of processes hogging system resources by setting an infinite backlog, then ignoring all connection requests. .PP With a socket marked as listening, a server may \fIaccept\fP a connection: .DS struct sockaddr_in from; ... fromlen = sizeof (from); newsock = accept(s, (struct sockaddr *)&from, &fromlen); .DE (For the UNIX domain, \fIfrom\fP would be declared as a \fIstruct sockaddr_un\fP, and for the NS domain, \fIfrom\fP would be declared as a \fIstruct sockaddr_ns\fP, but nothing different would need to be done as far as \fIfromlen\fP is concerned. In the examples which follow, only Internet routines will be discussed.) A new descriptor is returned on receipt of a connection (along with a new socket). If the server wishes to find out who its client is, it may supply a buffer for the client socket's name. The value-result parameter \fIfromlen\fP is initialized by the server to indicate how much space is associated with \fIfrom\fP, then modified on return to reflect the true size of the name. If the client's name is not of interest, the second parameter may be a null pointer. .PP \fIAccept\fP normally blocks. That is, \fIaccept\fP will not return until a connection is available or the system call is interrupted by a signal to the process. Further, there is no way for a process to indicate it will accept connections from only a specific individual, or individuals. It is up to the user process to consider who the connection is from and close down the connection if it does not wish to speak to the process. If the server process wants to accept connections on more than one socket, or wants to avoid blocking on the accept call, there are alternatives; they will be considered in section 5. .NH 2 Data transfer .PP With a connection established, data may begin to flow. To send and receive data there are a number of possible calls. With the peer entity at each end of a connection anchored, a user can send or receive a message without specifying the peer. As one might expect, in this case, then the normal \fIread\fP and \fIwrite\fP system calls are usable, .DS write(s, buf, sizeof (buf)); read(s, buf, sizeof (buf)); .DE In addition to \fIread\fP and \fIwrite\fP, the new calls \fIsend\fP and \fIrecv\fP may be used: .DS send(s, buf, sizeof (buf), flags); recv(s, buf, sizeof (buf), flags); .DE While \fIsend\fP and \fIrecv\fP are virtually identical to \fIread\fP and \fIwrite\fP, the extra \fIflags\fP argument is important. The flags, defined in \fI\fP, may be specified as a non-zero value if one or more of the following is required: .DS .TS l l. MSG_OOB send/receive out of band data MSG_PEEK look at data without reading MSG_DONTROUTE send data without routing packets .TE .DE Out of band data is a notion specific to stream sockets, and one which we will not immediately consider. The option to have data sent without routing applied to the outgoing packets is currently used only by the routing table management process, and is unlikely to be of interest to the casual user. The ability to preview data is, however, of interest. When MSG_PEEK is specified with a \fIrecv\fP call, any data present is returned to the user, but treated as still \*(lqunread\*(rq. That is, the next \fIread\fP or \fIrecv\fP call applied to the socket will return the data previously previewed. .NH 2 Discarding sockets .PP Once a socket is no longer of interest, it may be discarded by applying a \fIclose\fP to the descriptor, .DS close(s); .DE If data is associated with a socket which promises reliable delivery (e.g. a stream socket) when a close takes place, the system will continue to attempt to transfer the data. However, after a fairly long period of time, if the data is still undelivered, it will be discarded. Should a user have no use for any pending data, it may perform a \fIshutdown\fP on the socket prior to closing it. This call is of the form: .DS shutdown(s, how); .DE where \fIhow\fP is 0 if the user is no longer interested in reading data, 1 if no more data will be sent, or 2 if no data is to be sent or received. .NH 2 Connectionless sockets .PP To this point we have been concerned mostly with sockets which follow a connection oriented model. However, there is also support for connectionless interactions typical of the datagram facilities found in contemporary packet switched networks. A datagram socket provides a symmetric interface to data exchange. While processes are still likely to be client and server, there is no requirement for connection establishment. Instead, each message includes the destination address. .PP Datagram sockets are created as before. If a particular local address is needed, the \fIbind\fP operation must precede the first data transmission. Otherwise, the system will set the local address and/or port when data is first sent. To send data, the \fIsendto\fP primitive is used, .DS sendto(s, buf, buflen, flags, (struct sockaddr *)&to, tolen); .DE The \fIs\fP, \fIbuf\fP, \fIbuflen\fP, and \fIflags\fP parameters are used as before. The \fIto\fP and \fItolen\fP values are used to indicate the address of the intended recipient of the message. When using an unreliable datagram interface, it is unlikely that any errors will be reported to the sender. When information is present locally to recognize a message that can not be delivered (for instance when a network is unreachable), the call will return \-1 and the global value \fIerrno\fP will contain an error number. .PP To receive messages on an unconnected datagram socket, the \fIrecvfrom\fP primitive is provided: .DS recvfrom(s, buf, buflen, flags, (struct sockaddr *)&from, &fromlen); .DE Once again, the \fIfromlen\fP parameter is handled in a value-result fashion, initially containing the size of the \fIfrom\fP buffer, and modified on return to indicate the actual size of the address from which the datagram was received. .PP In addition to the two calls mentioned above, datagram sockets may also use the \fIconnect\fP call to associate a socket with a specific destination address. In this case, any data sent on the socket will automatically be addressed to the connected peer, and only data received from that peer will be delivered to the user. Only one connected address is permitted for each socket at one time; a second connect will change the destination address, and a connect to a null address (family AF_UNSPEC) will disconnect. Connect requests on datagram sockets return immediately, as this simply results in the system recording the peer's address (as compared to a stream socket, where a connect request initiates establishment of an end to end connection). \fIAccept\fP and \fIlisten\fP are not used with datagram sockets. .PP While a datagram socket socket is connected, errors from recent \fIsend\fP calls may be returned asynchronously. These errors may be reported on subsequent operations on the socket, or a special socket option used with \fIgetsockopt\fP, SO_ERROR, may be used to interrogate the error status. A \fIselect\fP for reading or writing will return true when an error indication has been received. The next operation will return the error, and the error status is cleared. Other of the less important details of datagram sockets are described in section 5. .NH 2 Input/Output multiplexing .PP One last facility often used in developing applications is the ability to multiplex i/o requests among multiple sockets and/or files. This is done using the \fIselect\fP call: .DS #include #include ... fd_set readmask, writemask, exceptmask; struct timeval timeout; ... select(nfds, &readmask, &writemask, &exceptmask, &timeout); .DE \fISelect\fP takes as arguments pointers to three sets, one for the set of file descriptors for which the caller wishes to be able to read data on, one for those descriptors to which data is to be written, and one for which exceptional conditions are pending; out-of-band data is the only exceptional condition currently implemented by the socket If the user is not interested in certain conditions (i.e., read, write, or exceptions), the corresponding argument to the \fIselect\fP should be a null pointer. .PP Each set is actually a structure containing an array of long integer bit masks; the size of the array is set by the definition FD_SETSIZE. The array is be long enough to hold one bit for each of FD_SETSIZE file descriptors. .PP The macros FD_SET(\fIfd, &mask\fP) and FD_CLR(\fIfd, &mask\fP) have been provided for adding and removing file descriptor \fIfd\fP in the set \fImask\fP. The set should be zeroed before use, and the macro FD_ZERO(\fI&mask\fP) has been provided to clear the set \fImask\fP. The parameter \fInfds\fP in the \fIselect\fP call specifies the range of file descriptors (i.e. one plus the value of the largest descriptor) to be examined in a set. .PP A timeout value may be specified if the selection is not to last more than a predetermined period of time. If the fields in \fItimeout\fP are set to 0, the selection takes the form of a \fIpoll\fP, returning immediately. If the last parameter is a null pointer, the selection will block indefinitely*. .FS * To be more specific, a return takes place only when a descriptor is selectable, or when a signal is received by the caller, interrupting the system call. .FE \fISelect\fP normally returns the number of file descriptors selected; if the \fIselect\fP call returns due to the timeout expiring, then the value 0 is returned. If the \fIselect\fP terminates because of an error or interruption, a \-1 is returned with the error number in \fIerrno\fP, and with the file descriptor masks unchanged. .PP Assuming a successful return, the three sets will indicate which file descriptors are ready to be read from, written to, or have exceptional conditions pending. The status of a file descriptor in a select mask may be tested with the \fIFD_ISSET(fd, &mask)\fP macro, which returns a non-zero value if \fIfd\fP is a member of the set \fImask\fP, and 0 if it is not. .PP To determine if there are connections waiting on a socket to be used with an \fIaccept\fP call, \fIselect\fP can be used, followed by a \fIFD_ISSET(fd, &mask)\fP macro to check for read readiness on the appropriate socket. If \fIFD_ISSET\fP returns a non-zero value, indicating permission to read, then a connection is pending on the socket. .PP As an example, to read data from two sockets, \fIs1\fP and \fIs2\fP as it is available from each and with a one-second timeout, the following code might be used: .DS #include #include ... fd_set read_template; struct timeval wait; ... for (;;) { wait.tv_sec = 1; /* one second */ wait.tv_usec = 0; FD_ZERO(&read_template); FD_SET(s1, &read_template); FD_SET(s2, &read_template); nb = select(FD_SETSIZE, &read_template, (fd_set *) 0, (fd_set *) 0, &wait); if (nb <= 0) { \fIAn error occurred during the \fPselect\fI, or the \fPselect\fI timed out.\fP } if (FD_ISSET(s1, &read_template)) { \fISocket #1 is ready to be read from.\fP } if (FD_ISSET(s2, &read_template)) { \fISocket #2 is ready to be read from.\fP } } .DE .PP In 4.2, the arguments to \fIselect\fP were pointers to integers instead of pointers to \fIfd_set\fPs. This type of call will still work as long as the number of file descriptors being examined is less than the number of bits in an integer; however, the methods illustrated above should be used in all current programs. .PP \fISelect\fP provides a synchronous multiplexing scheme. Asynchronous notification of output completion, input availability, and exceptional conditions is possible through use of the SIGIO and SIGURG signals described in section 5. onnection if it does not wish to speak to the process. If the server process wants to accept connections on more than one socket, or wants to avoid blocking on the accept call, there are alternatives; they will be considered in section 5. .NH 2 Data transfer .PP With a connection established, data may begin to flow. To send and receive data there are a number of pdoc/ps1/08.ipc/3.t 444 3 12 31522 3656257253 6671 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)3.t 1.4 (Berkeley) 5/2/86 .\" .\".ds RH "Network Library Routines .bp .nr H1 3 .nr H2 0 .bp .LG .B .ce 3. NETWORK LIBRARY ROUTINES .sp 2 .R .NL .PP The discussion in section 2 indicated the possible need to locate and construct network addresses when using the interprocess communication facilities in a distributed environment. To aid in this task a number of routines have been added to the standard C run-time library. In this section we will consider the new routines provided to manipulate network addresses. While the 4.3BSD networking facilities support both the DARPA standard Internet protocols and the Xerox NS protocols, most of the routines presented in this section do not apply to the NS domain. Unless otherwise stated, it should be assumed that the routines presented in this section do not apply to the NS domain. .PP Locating a service on a remote host requires many levels of mapping before client and server may communicate. A service is assigned a name which is intended for human consumption; e.g. \*(lqthe \fIlogin server\fP on host monet\*(rq. This name, and the name of the peer host, must then be translated into network \fIaddresses\fP which are not necessarily suitable for human consumption. Finally, the address must then used in locating a physical \fIlocation\fP and \fIroute\fP to the service. The specifics of these three mappings are likely to vary between network architectures. For instance, it is desirable for a network to not require hosts to be named in such a way that their physical location is known by the client host. Instead, underlying services in the network may discover the actual location of the host at the time a client host wishes to communicate. This ability to have hosts named in a location independent manner may induce overhead in connection establishment, as a discovery process must take place, but allows a host to be physically mobile without requiring it to notify its clientele of its current location. .PP Standard routines are provided for: mapping host names to network addresses, network names to network numbers, protocol names to protocol numbers, and service names to port numbers and the appropriate protocol to use in communicating with the server process. The file <\fInetdb.h\fP> must be included when using any of these routines. .NH 2 Host names .PP An Internet host name to address mapping is represented by the \fIhostent\fP structure: .DS .if t .ta 0.6i 1.1i 2.6i struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type (e.g., AF_INET) */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses, null terminated */ }; #define h_addr h_addr_list[0] /* first address, network byte order */ .DE The routine \fIgethostbyname\fP(3N) takes an Internet host name and returns a \fIhostent\fP structure, while the routine \fIgethostbyaddr\fP(3N) maps Internet host addresses into a \fIhostent\fP structure. .PP The official name of the host and its public aliases are returned by these routines, along with the address type (family) and a null terminated list of variable length address. This list of addresses is required because it is possible for a host to have many addresses, all having the same name. The \fIh_addr\fP definition is provided for backward compatibility, and is defined to be the first address in the list of addresses in the \fIhostent\fP structure. .PP The database for these calls is provided either by the file \fI/etc/hosts\fP (\fIhosts\fP\|(5)), or by use of a nameserver, \fInamed\fP\|(8). Because of the differences in these databases and their access protocols, the information returned may differ. When using the host table version of \fIgethostbyname\fP, only one address will be returned, but all listed aliases will be included. The nameserver version may return alternate addresses, but will not provide any aliases other than one given as argument. .PP Unlike Internet names, NS names are always mapped into host addresses by the use of a standard NS \fIClearinghouse service\fP, a distributed name and authentication server. The algorithms for mapping NS names to addresses via a Clearinghouse are rather complicated, and the routines are not part of the standard libraries. The user-contributed Courier (Xerox remote procedure call protocol) compiler contains routines to accomplish this mapping; see the documentation and examples provided therein for more information. It is expected that almost all software that has to communicate using NS will need to use the facilities of the Courier compiler. .PP An NS host address is represented by the following: .DS union ns_host { u_char c_host[6]; u_short s_host[3]; }; union ns_net { u_char c_net[4]; u_short s_net[2]; }; struct ns_addr { union ns_net x_net; union ns_host x_host; u_short x_port; }; .DE The following code fragment inserts a known NS address into a \fIns_addr\fP: .DS #include #include #include ... u_long netnum; struct sockaddr_ns dst; ... bzero((char *)&dst, sizeof(dst)); /* * There is no convenient way to assign a long * integer to a ``union ns_net'' at present; in * the future, something will hopefully be provided, * but this is the portable way to go for now. * The network number below is the one for the NS net * that the desired host (gyre) is on. */ netnum = htonl(2266); dst.sns_addr.x_net = *(union ns_net *) &netnum; dst.sns_family = AF_NS; /* * host 2.7.1.0.2a.18 == "gyre:Computer Science:UofMaryland" */ dst.sns_addr.x_host.c_host[0] = 0x02; dst.sns_addr.x_host.c_host[1] = 0x07; dst.sns_addr.x_host.c_host[2] = 0x01; dst.sns_addr.x_host.c_host[3] = 0x00; dst.sns_addr.x_host.c_host[4] = 0x2a; dst.sns_addr.x_host.c_host[5] = 0x18; dst.sns_addr.x_port = htons(75); .DE .NH 2 Network names .PP As for host names, routines for mapping network names to numbers, and back, are provided. These routines return a \fInetent\fP structure: .DS .DT /* * Assumption here is that a network number * fits in 32 bits -- probably a poor one. */ struct netent { char *n_name; /* official name of net */ char **n_aliases; /* alias list */ int n_addrtype; /* net address type */ int n_net; /* network number, host byte order */ }; .DE The routines \fIgetnetbyname\fP(3N), \fIgetnetbynumber\fP(3N), and \fIgetnetent\fP(3N) are the network counterparts to the host routines described above. The routines extract their information from \fI/etc/networks\fP. .PP NS network numbers are determined either by asking your local Xerox Network Administrator (and hardcoding the information into your code), or by querying the Clearinghouse for addresses. The internetwork router is the only process that needs to manipulate network numbers on a regular basis; if a process wishes to communicate with a machine, it should ask the Clearinghouse for that machine's address (which will include the net number). .NH 2 Protocol names .PP For protocols, which are defined in \fI/etc/protocols\fP, the \fIprotoent\fP structure defines the protocol-name mapping used with the routines \fIgetprotobyname\fP(3N), \fIgetprotobynumber\fP(3N), and \fIgetprotoent\fP(3N): .DS .DT struct protoent { char *p_name; /* official protocol name */ char **p_aliases; /* alias list */ int p_proto; /* protocol number */ }; .DE .PP In the NS domain, protocols are indicated by the "client type" field of a IDP header. No protocol database exists; see section 5 for more information. .NH 2 Service names .PP Information regarding services is a bit more complicated. A service is expected to reside at a specific \*(lqport\*(rq and employ a particular communication protocol. This view is consistent with the Internet domain, but inconsistent with other network architectures. Further, a service may reside on multiple ports. If this occurs, the higher level library routines will have to be bypassed or extended. Services available are contained in the file \fI/etc/services\fP. A service mapping is described by the \fIservent\fP structure, .DS .DT struct servent { char *s_name; /* official service name */ char **s_aliases; /* alias list */ int s_port; /* port number, network byte order */ char *s_proto; /* protocol to use */ }; .DE The routine \fIgetservbyname\fP(3N) maps service names to a servent structure by specifying a service name and, optionally, a qualifying protocol. Thus the call .DS sp = getservbyname("telnet", (char *) 0); .DE returns the service specification for a telnet server using any protocol, while the call .DS sp = getservbyname("telnet", "tcp"); .DE returns only that telnet server which uses the TCP protocol. The routines \fIgetservbyport\fP(3N) and \fIgetservent\fP(3N) are also provided. The \fIgetservbyport\fP routine has an interface similar to that provided by \fIgetservbyname\fP; an optional protocol name may be specified to qualify lookups. .PP In the NS domain, services are handled by a central dispatcher provided as part of the Courier remote procedure call facilities. Again, the reader is referred to the Courier compiler documentation and to the Xerox standard* .FS * \fICourier: The Remote Procedure Call Protocol\fP, XSIS 038112. .FE for further details. .NH 2 Miscellaneous .PP With the support routines described above, an Internet application program should rarely have to deal directly with addresses. This allows services to be developed as much as possible in a network independent fashion. It is clear, however, that purging all network dependencies is very difficult. So long as the user is required to supply network addresses when naming services and sockets there will always some network dependency in a program. For example, the normal code included in client programs, such as the remote login program, is of the form shown in Figure 1. (This example will be considered in more detail in section 4.) .PP If we wanted to make the remote login program independent of the Internet protocols and addressing scheme we would be forced to add a layer of routines which masked the network dependent aspects from the mainstream login code. For the current facilities available in the system this does not appear to be worthwhile. .PP Aside from the address-related data base routines, there are several other routines available in the run-time library which are of interest to users. These are intended mostly to simplify manipulation of names and addresses. Table 1 summarizes the routines for manipulating variable length byte strings and handling byte swapping of network addresses and values. .KF .DS B .TS box; l | l l | l. Call Synopsis _ bcmp(s1, s2, n) compare byte-strings; 0 if same, not 0 otherwise bcopy(s1, s2, n) copy n bytes from s1 to s2 bzero(base, n) zero-fill n bytes starting at base htonl(val) convert 32-bit quantity from host to network byte order htons(val) convert 16-bit quantity from host to network byte order ntohl(val) convert 32-bit quantity from network to host byte order ntohs(val) convert 16-bit quantity from network to host byte order .TE .DE .ce Table 1. C run-time routines. .KE .PP The byte swapping routines are provided because the operating system expects addresses to be supplied in network order. On some architectures, such as the VAX, host byte ordering is different than network byte ordering. Consequently, programs are sometimes required to byte swap quantities. The library routines which return network addresses provide them in network order so that they may simply be copied into the structures provided to the system. This implies users should encounter the byte swapping problem only when \fIinterpreting\fP network addresses. For example, if an Internet port is to be printed out the following code would be required: .DS printf("port number %d\en", ntohs(sp->s_port)); .DE On machines where unneeded these routines are defined as null macros. .DS .if t .ta .5i 1.0i 1.5i 2.0i .if n .ta .7i 1.4i 2.1i 2.8i #include #include #include #include #include ... main(argc, argv) int argc; char *argv[]; { struct sockaddr_in server; struct servent *sp; struct hostent *hp; int s; ... sp = getservbyname("login", "tcp"); if (sp == NULL) { fprintf(stderr, "rlogin: tcp/login: unknown service\en"); exit(1); } hp = gethostbyname(argv[1]); if (hp == NULL) { fprintf(stderr, "rlogin: %s: unknown host\en", argv[1]); exit(2); } bzero((char *)&server, sizeof (server)); bcopy(hp->h_addr, (char *)&server.sin_addr, hp->h_length); server.sin_family = hp->h_addrtype; server.sin_port = sp->s_port; s = socket(AF_INET, SOCK_STREAM, 0); if (s < 0) { perror("rlogin: socket"); exit(3); } ... /* Connect does the bind() for us */ if (connect(s, (char *)&server, sizeof (server)) < 0) { perror("rlogin: connect"); exit(5); } ... } .DE .ce Figure 1. Remote login client code. st byte order */ }; .DE The routines \fIgetnetbyname\fP(3N), \fIgetnetbynumber\fP(3N), and \fIgetnetent\fP(3N) are the network counterparts to the host routines described abodoc/ps1/08.ipc/4.t 444 3 12 40400 3656257255 6667 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)4.t 1.3 (Berkeley) 5/2/86 .\" .\".ds RH "Client/Server Model .bp .nr H1 4 .nr H2 0 .sp 8i .bp .LG .B .ce 4. CLIENT/SERVER MODEL .sp 2 .R .NL .PP The most commonly used paradigm in constructing distributed applications is the client/server model. In this scheme client applications request services from a server process. This implies an asymmetry in establishing communication between the client and server which has been examined in section 2. In this section we will look more closely at the interactions between client and server, and consider some of the problems in developing client and server applications. .PP The client and server require a well known set of conventions before service may be rendered (and accepted). This set of conventions comprises a protocol which must be implemented at both ends of a connection. Depending on the situation, the protocol may be symmetric or asymmetric. In a symmetric protocol, either side may play the master or slave roles. In an asymmetric protocol, one side is immutably recognized as the master, with the other as the slave. An example of a symmetric protocol is the TELNET protocol used in the Internet for remote terminal emulation. An example of an asymmetric protocol is the Internet file transfer protocol, FTP. No matter whether the specific protocol used in obtaining a service is symmetric or asymmetric, when accessing a service there is a \*(lqclient process\*(rq and a \*(lqserver process\*(rq. We will first consider the properties of server processes, then client processes. .PP A server process normally listens at a well known address for service requests. That is, the server process remains dormant until a connection is requested by a client's connection to the server's address. At such a time the server process ``wakes up'' and services the client, performing whatever appropriate actions the client requests of it. .PP Alternative schemes which use a service server may be used to eliminate a flock of server processes clogging the system while remaining dormant most of the time. For Internet servers in 4.3BSD, this scheme has been implemented via \fIinetd\fP, the so called ``internet super-server.'' \fIInetd\fP listens at a variety of ports, determined at start-up by reading a configuration file. When a connection is requested to a port on which \fIinetd\fP is listening, \fIinetd\fP executes the appropriate server program to handle the client. With this method, clients are unaware that an intermediary such as \fIinetd\fP has played any part in the connection. \fIInetd\fP will be described in more detail in section 5. .PP A similar alternative scheme is used by most Xerox services. In general, the Courier dispatch process (if used) accepts connections from processes requesting services of some sort or another. The client processes request a particular triple. If the dispatcher knows of such a program, it is started to handle the request; if not, an error is reported to the client. In this way, only one port is required to service a large variety of different requests. Again, the Courier facilities are not available without the use and installation of the Courier compiler. The information presented in this section applies only to NS clients and services that do not use Courier. .NH 2 Servers .PP In 4.3BSD most servers are accessed at well known Internet addresses or UNIX domain names. For example, the remote login server's main loop is of the form shown in Figure 2. .KF .if t .ta .5i 1.0i 1.5i 2.0i 2.5i 3.0i 3.5i .if n .ta .7i 1.4i 2.1i 2.8i 3.5i 4.2i 4.9i .sp 0.5i .DS main(argc, argv) int argc; char *argv[]; { int f; struct sockaddr_in from; struct servent *sp; sp = getservbyname("login", "tcp"); if (sp == NULL) { fprintf(stderr, "rlogind: tcp/login: unknown service\en"); exit(1); } ... #ifndef DEBUG /* Disassociate server from controlling terminal */ ... #endif sin.sin_port = sp->s_port; /* Restricted port -- see section 5 */ ... f = socket(AF_INET, SOCK_STREAM, 0); ... if (bind(f, (struct sockaddr *) &sin, sizeof (sin)) < 0) { ... } ... listen(f, 5); for (;;) { int g, len = sizeof (from); g = accept(f, (struct sockaddr *) &from, &len); if (g < 0) { if (errno != EINTR) syslog(LOG_ERR, "rlogind: accept: %m"); continue; } if (fork() == 0) { close(f); doit(g, &from); } close(g); } } .DE .ce Figure 2. Remote login server. .sp 0.5i .KE .PP The first step taken by the server is look up its service definition: .sp 1 .nf .in +5 .if t .ta .5i 1.0i 1.5i 2.0i .if n .ta .7i 1.4i 2.1i 2.8i sp = getservbyname("login", "tcp"); if (sp == NULL) { fprintf(stderr, "rlogind: tcp/login: unknown service\en"); exit(1); } .sp 1 .in -5 .fi The result of the \fIgetservbyname\fP call is used in later portions of the code to define the Internet port at which it listens for service requests (indicated by a connection). .KS .PP Step two is to disassociate the server from the controlling terminal of its invoker: .DS for (i = 0; i < 3; ++i) close(i); open("/", O_RDONLY); dup2(0, 1); dup2(0, 2); i = open("/dev/tty", O_RDWR); if (i >= 0) { ioctl(i, TIOCNOTTY, 0); close(i); } .DE .KE This step is important as the server will likely not want to receive signals delivered to the process group of the controlling terminal. Note, however, that once a server has disassociated itself it can no longer send reports of errors to a terminal, and must log errors via \fIsyslog\fP. .PP Once a server has established a pristine environment, it creates a socket and begins accepting service requests. The \fIbind\fP call is required to insure the server listens at its expected location. It should be noted that the remote login server listens at a restricted port number, and must therefore be run with a user-id of root. This concept of a ``restricted port number'' is 4BSD specific, and is covered in section 5. .PP The main body of the loop is fairly simple: .DS .if t .ta .5i 1.0i 1.5i 2.0i .if n .ta .7i 1.4i 2.1i 2.8i for (;;) { int g, len = sizeof (from); g = accept(f, (struct sockaddr *)&from, &len); if (g < 0) { if (errno != EINTR) syslog(LOG_ERR, "rlogind: accept: %m"); continue; } if (fork() == 0) { /* Child */ close(f); doit(g, &from); } close(g); /* Parent */ } .DE An \fIaccept\fP call blocks the server until a client requests service. This call could return a failure status if the call is interrupted by a signal such as SIGCHLD (to be discussed in section 5). Therefore, the return value from \fIaccept\fP is checked to insure a connection has actually been established, and an error report is logged via \fIsyslog\fP if an error has occurred. .PP With a connection in hand, the server then forks a child process and invokes the main body of the remote login protocol processing. Note how the socket used by the parent for queuing connection requests is closed in the child, while the socket created as a result of the \fIaccept\fP is closed in the parent. The address of the client is also handed the \fIdoit\fP routine because it requires it in authenticating clients. .NH 2 Clients .PP The client side of the remote login service was shown earlier in Figure 1. One can see the separate, asymmetric roles of the client and server clearly in the code. The server is a passive entity, listening for client connections, while the client process is an active entity, initiating a connection when invoked. .PP Let us consider more closely the steps taken by the client remote login process. As in the server process, the first step is to locate the service definition for a remote login: .DS sp = getservbyname("login", "tcp"); if (sp == NULL) { fprintf(stderr, "rlogin: tcp/login: unknown service\en"); exit(1); } .DE Next the destination host is looked up with a \fIgethostbyname\fP call: .DS hp = gethostbyname(argv[1]); if (hp == NULL) { fprintf(stderr, "rlogin: %s: unknown host\en", argv[1]); exit(2); } .DE With this accomplished, all that is required is to establish a connection to the server at the requested host and start up the remote login protocol. The address buffer is cleared, then filled in with the Internet address of the foreign host and the port number at which the login process resides on the foreign host: .DS bzero((char *)&server, sizeof (server)); bcopy(hp->h_addr, (char *) &server.sin_addr, hp->h_length); server.sin_family = hp->h_addrtype; server.sin_port = sp->s_port; .DE A socket is created, and a connection initiated. Note that \fIconnect\fP implicitly performs a \fIbind\fP call, since \fIs\fP is unbound. .DS s = socket(hp->h_addrtype, SOCK_STREAM, 0); if (s < 0) { perror("rlogin: socket"); exit(3); } ... if (connect(s, (struct sockaddr *) &server, sizeof (server)) < 0) { perror("rlogin: connect"); exit(4); } .DE The details of the remote login protocol will not be considered here. .NH 2 Connectionless servers .PP While connection-based services are the norm, some services are based on the use of datagram sockets. One, in particular, is the \*(lqrwho\*(rq service which provides users with status information for hosts connected to a local area network. This service, while predicated on the ability to \fIbroadcast\fP information to all hosts connected to a particular network, is of interest as an example usage of datagram sockets. .PP A user on any machine running the rwho server may find out the current status of a machine with the \fIruptime\fP(1) program. The output generated is illustrated in Figure 3. .KF .DS B .TS l r l l l l l. arpa up 9:45, 5 users, load 1.15, 1.39, 1.31 cad up 2+12:04, 8 users, load 4.67, 5.13, 4.59 calder up 10:10, 0 users, load 0.27, 0.15, 0.14 dali up 2+06:28, 9 users, load 1.04, 1.20, 1.65 degas up 25+09:48, 0 users, load 1.49, 1.43, 1.41 ear up 5+00:05, 0 users, load 1.51, 1.54, 1.56 ernie down 0:24 esvax down 17:04 ingres down 0:26 kim up 3+09:16, 8 users, load 2.03, 2.46, 3.11 matisse up 3+06:18, 0 users, load 0.03, 0.03, 0.05 medea up 3+09:39, 2 users, load 0.35, 0.37, 0.50 merlin down 19+15:37 miro up 1+07:20, 7 users, load 4.59, 3.28, 2.12 monet up 1+00:43, 2 users, load 0.22, 0.09, 0.07 oz down 16:09 statvax up 2+15:57, 3 users, load 1.52, 1.81, 1.86 ucbvax up 9:34, 2 users, load 6.08, 5.16, 3.28 .TE .DE .ce Figure 3. ruptime output. .sp .KE .PP Status information for each host is periodically broadcast by rwho server processes on each machine. The same server process also receives the status information and uses it to update a database. This database is then interpreted to generate the status information for each host. Servers operate autonomously, coupled only by the local network and its broadcast capabilities. .PP Note that the use of broadcast for such a task is fairly inefficient, as all hosts must process each message, whether or not using an rwho server. Unless such a service is sufficiently universal and is frequently used, the expense of periodic broadcasts outweighs the simplicity. .PP The rwho server, in a simplified form, is pictured in Figure 4. There are two separate tasks performed by the server. The first task is to act as a receiver of status information broadcast by other hosts on the network. This job is carried out in the main loop of the program. Packets received at the rwho port are interrogated to insure they've been sent by another rwho server process, then are time stamped with their arrival time and used to update a file indicating the status of the host. When a host has not been heard from for an extended period of time, the database interpretation routines assume the host is down and indicate such on the status reports. This algorithm is prone to error as a server may be down while a host is actually up, but serves our current needs. .KF .DS .if t .ta .5i 1.0i 1.5i 2.0i .if n .ta .7i 1.4i 2.1i 2.8i main() { ... sp = getservbyname("who", "udp"); net = getnetbyname("localnet"); sin.sin_addr = inet_makeaddr(INADDR_ANY, net); sin.sin_port = sp->s_port; ... s = socket(AF_INET, SOCK_DGRAM, 0); ... on = 1; if (setsockopt(s, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) < 0) { syslog(LOG_ERR, "setsockopt SO_BROADCAST: %m"); exit(1); } bind(s, (struct sockaddr *) &sin, sizeof (sin)); ... signal(SIGALRM, onalrm); onalrm(); for (;;) { struct whod wd; int cc, whod, len = sizeof (from); cc = recvfrom(s, (char *)&wd, sizeof (struct whod), 0, (struct sockaddr *)&from, &len); if (cc <= 0) { if (cc < 0 && errno != EINTR) syslog(LOG_ERR, "rwhod: recv: %m"); continue; } if (from.sin_port != sp->s_port) { syslog(LOG_ERR, "rwhod: %d: bad from port", ntohs(from.sin_port)); continue; } ... if (!verify(wd.wd_hostname)) { syslog(LOG_ERR, "rwhod: malformed host name from %x", ntohl(from.sin_addr.s_addr)); continue; } (void) sprintf(path, "%s/whod.%s", RWHODIR, wd.wd_hostname); whod = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0666); ... (void) time(&wd.wd_recvtime); (void) write(whod, (char *)&wd, cc); (void) close(whod); } } .DE .ce Figure 4. rwho server. .sp .KE .PP The second task performed by the server is to supply information regarding the status of its host. This involves periodically acquiring system status information, packaging it up in a message and broadcasting it on the local network for other rwho servers to hear. The supply function is triggered by a timer and runs off a signal. Locating the system status information is somewhat involved, but uninteresting. Deciding where to transmit the resultant packet is somewhat problematical, however. .PP Status information must be broadcast on the local network. For networks which do not support the notion of broadcast another scheme must be used to simulate or replace broadcasting. One possibility is to enumerate the known neighbors (based on the status messages received from other rwho servers). This, unfortunately, requires some bootstrapping information, for a server will have no idea what machines are its neighbors until it receives status messages from them. Therefore, if all machines on a net are freshly booted, no machine will have any known neighbors and thus never receive, or send, any status information. This is the identical problem faced by the routing table management process in propagating routing status information. The standard solution, unsatisfactory as it may be, is to inform one or more servers of known neighbors and request that they always communicate with these neighbors. If each server has at least one neighbor supplied to it, status information may then propagate through a neighbor to hosts which are not (possibly) directly neighbors. If the server is able to support networks which provide a broadcast capability, as well as those which do not, then networks with an arbitrary topology may share status information*. .FS * One must, however, be concerned about \*(lqloops\*(rq. That is, if a host is connected to multiple networks, it will receive status information from itself. This can lead to an endless, wasteful, exchange of information. .FE .PP It is important that software operating in a distributed environment not have any site-dependent information compiled into it. This would require a separate copy of the server at each host and make maintenance a severe headache. 4.3BSD attempts to isolate host-specific information from applications by providing system calls which return the necessary information*. .FS * An example of such a system call is the \fIgethostname\fP(2) call which returns the host's \*(lqofficial\*(rq name. .FE A mechanism exists, in the form of an \fIioctl\fP call, for finding the collection of networks to which a host is directly connected. Further, a local network broadcasting mechanism has been implemented at the socket level. Combining these two features allows a process to broadcast on any directly connected local network which supports the notion of broadcasting in a site independent manner. This allows 4.3BSD to solve the problem of deciding how to propagate status information in the case of \fIrwho\fP, or more generally in broadcasting: Such status information is broadcast to connected networks at the socket level, where the connected networks have been obtained via the appropriate \fIioctl\fP calls. The specifics of such broadcastings are complex, however, and will be covered in section 5. syslog(LOG_ERR, "rlogind: accept: %m"); continue; } if (fork() == 0) { /* Child */ close(f); doit(g, &from); } close(g); /* Parent */ } .DE An \fIaccept\fP call blocks the server until a client requests service. This call could return a failudoc/ps1/08.ipc/5.t 444 3 12 124004 3656257264 6713 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)5.t 1.4 (Berkeley) 5/2/86 .\" .\".ds RH "Advanced Topics .bp .nr H1 5 .nr H2 0 .LG .B .ce 5. ADVANCED TOPICS .sp 2 .R .NL .PP A number of facilities have yet to be discussed. For most users of the IPC the mechanisms already described will suffice in constructing distributed applications. However, others will find the need to utilize some of the features which we consider in this section. .NH 2 Out of band data .PP The stream socket abstraction includes the notion of \*(lqout of band\*(rq data. Out of band data is a logically independent transmission channel associated with each pair of connected stream sockets. Out of band data is delivered to the user independently of normal data. The abstraction defines that the out of band data facilities must support the reliable delivery of at least one out of band message at a time. This message may contain at least one byte of data, and at least one message may be pending delivery to the user at any one time. For communications protocols which support only in-band signaling (i.e. the urgent data is delivered in sequence with the normal data), the system normally extracts the data from the normal data stream and stores it separately. This allows users to choose between receiving the urgent data in order and receiving it out of sequence without having to buffer all the intervening data. It is possible to ``peek'' (via MSG_PEEK) at out of band data. If the socket has a process group, a SIGURG signal is generated when the protocol is notified of its existence. A process can set the process group or process id to be informed by the SIGURG signal via the appropriate \fIfcntl\fP call, as described below for SIGIO. If multiple sockets may have out of band data awaiting delivery, a \fIselect\fP call for exceptional conditions may be used to determine those sockets with such data pending. Neither the signal nor the select indicate the actual arrival of the out-of-band data, but only notification that it is pending. .PP In addition to the information passed, a logical mark is placed in the data stream to indicate the point at which the out of band data was sent. The remote login and remote shell applications use this facility to propagate signals between client and server processes. When a signal flushs any pending output from the remote process(es), all data up to the mark in the data stream is discarded. .PP To send an out of band message the MSG_OOB flag is supplied to a \fIsend\fP or \fIsendto\fP calls, while to receive out of band data MSG_OOB should be indicated when performing a \fIrecvfrom\fP or \fIrecv\fP call. To find out if the read pointer is currently pointing at the mark in the data stream, the SIOCATMARK ioctl is provided: .DS ioctl(s, SIOCATMARK, &yes); .DE If \fIyes\fP is a 1 on return, the next read will return data after the mark. Otherwise (assuming out of band data has arrived), the next read will provide data sent by the client prior to transmission of the out of band signal. The routine used in the remote login process to flush output on receipt of an interrupt or quit signal is shown in Figure 5. It reads the normal data up to the mark (to discard it), then reads the out-of-band byte. .KF .DS #include #include ... oob() { int out = FWRITE; char waste[BUFSIZ], mark; /* flush local terminal output */ ioctl(1, TIOCFLUSH, (char *)&out); for (;;) { if (ioctl(rem, SIOCATMARK, &mark) < 0) { perror("ioctl"); break; } if (mark) break; (void) read(rem, waste, sizeof (waste)); } if (recv(rem, &mark, 1, MSG_OOB) < 0) { perror("recv"); ... } ... } .DE .ce Figure 5. Flushing terminal I/O on receipt of out of band data. .sp .KE .PP A process may also read or peek at the out-of-band data without first reading up to the mark. This is more difficult when the underlying protocol delivers the urgent data in-band with the normal data, and only sends notification of its presence ahead of time (e.g., the TCP protocol used to implement streams in the Internet domain). With such protocols, the out-of-band byte may not yet have arrived when a \fIrecv\fP is done with the MSG_OOB flag. In that case, the call will return an error of EWOULDBLOCK. Worse, there may be enough in-band data in the input buffer that normal flow control prevents the peer from sending the urgent data until the buffer is cleared. The process must then read enough of the queued data that the urgent data may be delivered. .PP Certain programs that use multiple bytes of urgent data and must handle multiple urgent signals (e.g., \fItelnet\fP\|(1C)) need to retain the position of urgent data within the stream. This treatment is available as a socket-level option, SO_OOBINLINE; see \fIsetsockopt\fP\|(2) for usage. With this option, the position of urgent data (the \*(lqmark\*(rq) is retained, but the urgent data immediately follows the mark within the normal data stream returned without the MSG_OOB flag. Reception of multiple urgent indications causes the mark to move, but no out-of-band data are lost. .NH 2 Non-Blocking Sockets .PP It is occasionally convenient to make use of sockets which do not block; that is, I/O requests which cannot complete immediately and would therefore cause the process to be suspended awaiting completion are not executed, and an error code is returned. Once a socket has been created via the \fIsocket\fP call, it may be marked as non-blocking by \fIfcntl\fP as follows: .DS #include ... int s; ... s = socket(AF_INET, SOCK_STREAM, 0); ... if (fcntl(s, F_SETFL, FNDELAY) < 0) perror("fcntl F_SETFL, FNDELAY"); exit(1); } ... .DE .PP When performing non-blocking I/O on sockets, one must be careful to check for the error EWOULDBLOCK (stored in the global variable \fIerrno\fP), which occurs when an operation would normally block, but the socket it was performed on is marked as non-blocking. In particular, \fIaccept\fP, \fIconnect\fP, \fIsend\fP, \fIrecv\fP, \fIread\fP, and \fIwrite\fP can all return EWOULDBLOCK, and processes should be prepared to deal with such return codes. If an operation such as a \fIsend\fP cannot be done in its entirety, but partial writes are sensible (for example, when using a stream socket), the data that can be sent immediately will be processed, and the return value will indicate the amount actually sent. .NH 2 Interrupt driven socket I/O .PP The SIGIO signal allows a process to be notified via a signal when a socket (or more generally, a file descriptor) has data waiting to be read. Use of the SIGIO facility requires three steps: First, the process must set up a SIGIO signal handler by use of the \fIsignal\fP or \fIsigvec\fP calls. Second, it must set the process id or process group id which is to receive notification of pending input to its own process id, or the process group id of its process group (note that the default process group of a socket is group zero). This is accomplished by use of an \fIfcntl\fP call. Third, it must enable asynchronous notification of pending I/O requests with another \fIfcntl\fP call. Sample code to allow a given process to receive information on pending I/O requests as they occur for a socket \fIs\fP is given in Figure 6. With the addition of a handler for SIGURG, this code can also be used to prepare for receipt of SIGURG signals. .KF .DS #include ... int io_handler(); ... signal(SIGIO, io_handler); /* Set the process receiving SIGIO/SIGURG signals to us */ if (fcntl(s, F_SETOWN, getpid()) < 0) { perror("fcntl F_SETOWN"); exit(1); } /* Allow receipt of asynchronous I/O signals */ if (fcntl(s, F_SETFL, FASYNC) < 0) { perror("fcntl F_SETFL, FASYNC"); exit(1); } .DE .ce Figure 6. Use of asynchronous notification of I/O requests. .sp .KE .NH 2 Signals and process groups .PP Due to the existence of the SIGURG and SIGIO signals each socket has an associated process number, just as is done for terminals. This value is initialized to zero, but may be redefined at a later time with the F_SETOWN \fIfcntl\fP, such as was done in the code above for SIGIO. To set the socket's process id for signals, positive arguments should be given to the \fIfcntl\fP call. To set the socket's process group for signals, negative arguments should be passed to \fIfcntl\fP. Note that the process number indicates either the associated process id or the associated process group; it is impossible to specify both at the same time. A similar \fIfcntl\fP, F_GETOWN, is available for determining the current process number of a socket. .PP Another signal which is useful when constructing server processes is SIGCHLD. This signal is delivered to a process when any child processes have changed state. Normally servers use the signal to \*(lqreap\*(rq child processes that have exited without explicitly awaiting their termination or periodic polling for exit status. For example, the remote login server loop shown in Figure 2 may be augmented as shown in Figure 7. .KF .DS int reaper(); ... signal(SIGCHLD, reaper); listen(f, 5); for (;;) { int g, len = sizeof (from); g = accept(f, (struct sockaddr *)&from, &len,); if (g < 0) { if (errno != EINTR) syslog(LOG_ERR, "rlogind: accept: %m"); continue; } ... } ... #include reaper() { union wait status; while (wait3(&status, WNOHANG, 0) > 0) ; } .DE .sp .ce Figure 7. Use of the SIGCHLD signal. .sp .KE .PP If the parent server process fails to reap its children, a large number of \*(lqzombie\*(rq processes may be created. .NH 2 Pseudo terminals .PP Many programs will not function properly without a terminal for standard input and output. Since sockets do not provide the semantics of terminals, it is often necessary to have a process communicating over the network do so through a \fIpseudo-terminal\fP. A pseudo- terminal is actually a pair of devices, master and slave, which allow a process to serve as an active agent in communication between processes and users. Data written on the slave side of a pseudo-terminal is supplied as input to a process reading from the master side, while data written on the master side are processed as terminal input for the slave. In this way, the process manipulating the master side of the pseudo-terminal has control over the information read and written on the slave side as if it were manipulating the keyboard and reading the screen on a real terminal. The purpose of this abstraction is to preserve terminal semantics over a network connection\(em that is, the slave side appears as a normal terminal to any process reading from or writing to it. .PP For example, the remote login server uses pseudo-terminals for remote login sessions. A user logging in to a machine across the network is provided a shell with a slave pseudo-terminal as standard input, output, and error. The server process then handles the communication between the programs invoked by the remote shell and the user's local client process. When a user sends a character that generates an interrupt on the remote machine that flushes terminal output, the pseudo-terminal generates a control message for the server process. The server then sends an out of band message to the client process to signal a flush of data at the real terminal and on the intervening data buffered in the network. .PP Under 4.3BSD, the name of the slave side of a pseudo-terminal is of the form \fI/dev/ttyxy\fP, where \fIx\fP is a single letter starting at `p' and continuing to `t'. \fIy\fP is a hexadecimal digit (i.e., a single character in the range 0 through 9 or `a' through `f'). The master side of a pseudo-terminal is \fI/dev/ptyxy\fP, where \fIx\fP and \fIy\fP correspond to the slave side of the pseudo-terminal. .PP In general, the method of obtaining a pair of master and slave pseudo-terminals is to find a pseudo-terminal which is not currently in use. The master half of a pseudo-terminal is a single-open device; thus, each master may be opened in turn until an open succeeds. The slave side of the pseudo-terminal is then opened, and is set to the proper terminal modes if necessary. The process then \fIfork\fPs; the child closes the master side of the pseudo-terminal, and \fIexec\fPs the appropriate program. Meanwhile, the parent closes the slave side of the pseudo-terminal and begins reading and writing from the master side. Sample code making use of pseudo-terminals is given in Figure 8; this code assumes that a connection on a socket \fIs\fP exists, connected to a peer who wants a service of some kind, and that the process has disassociated itself from any previous controlling terminal. .KF .DS gotpty = 0; for (c = 'p'; !gotpty && c <= 's'; c++) { line = "/dev/ptyXX"; line[sizeof("/dev/pty")-1] = c; line[sizeof("/dev/ptyp")-1] = '0'; if (stat(line, &statbuf) < 0) break; for (i = 0; i < 16; i++) { line[sizeof("/dev/ptyp")-1] = "0123456789abcdef"[i]; master = open(line, O_RDWR); if (master > 0) { gotpty = 1; break; } } } if (!gotpty) { syslog(LOG_ERR, "All network ports in use"); exit(1); } line[sizeof("/dev/")-1] = 't'; slave = open(line, O_RDWR); /* \fIslave\fP is now slave side */ if (slave < 0) { syslog(LOG_ERR, "Cannot open slave pty %s", line); exit(1); } ioctl(slave, TIOCGETP, &b); /* Set slave tty modes */ b.sg_flags = CRMOD|XTABS|ANYP; ioctl(slave, TIOCSETP, &b); i = fork(); if (i < 0) { syslog(LOG_ERR, "fork: %m"); exit(1); } else if (i) { /* Parent */ close(slave); ... } else { /* Child */ (void) close(s); (void) close(master); dup2(slave, 0); dup2(slave, 1); dup2(slave, 2); if (slave > 2) (void) close(slave); ... } .DE .ce Figure 8. Creation and use of a pseudo terminal .sp .KE .NH 2 Selecting specific protocols .PP If the third argument to the \fIsocket\fP call is 0, \fIsocket\fP will select a default protocol to use with the returned socket of the type requested. The default protocol is usually correct, and alternate choices are not usually available. However, when using ``raw'' sockets to communicate directly with lower-level protocols or hardware interfaces, the protocol argument may be important for setting up demultiplexing. For example, raw sockets in the Internet family may be used to implement a new protocol above IP, and the socket will receive packets only for the protocol specified. To obtain a particular protocol one determines the protocol number as defined within the communication domain. For the Internet domain one may use one of the library routines discussed in section 3, such as \fIgetprotobyname\fP: .DS #include #include #include #include ... pp = getprotobyname("newtcp"); s = socket(AF_INET, SOCK_STREAM, pp->p_proto); .DE This would result in a socket \fIs\fP using a stream based connection, but with protocol type of ``newtcp'' instead of the default ``tcp.'' .PP In the NS domain, the available socket protocols are defined in <\fInetns/ns.h\fP>. To create a raw socket for Xerox Error Protocol messages, one might use: .DS #include #include #include ... s = socket(AF_NS, SOCK_RAW, NSPROTO_ERROR); .DE .NH 2 Address binding .PP As was mentioned in section 2, binding addresses to sockets in the Internet and NS domains can be fairly complex. As a brief reminder, these associations are composed of local and foreign addresses, and local and foreign ports. Port numbers are allocated out of separate spaces, one for each system and one for each domain on that system. Through the \fIbind\fP system call, a process may specify half of an association, the part, while the \fIconnect\fP and \fIaccept\fP primitives are used to complete a socket's association by specifying the part. Since the association is created in two steps the association uniqueness requirement indicated previously could be violated unless care is taken. Further, it is unrealistic to expect user programs to always know proper values to use for the local address and local port since a host may reside on multiple networks and the set of allocated port numbers is not directly accessible to a user. .PP To simplify local address binding in the Internet domain the notion of a \*(lqwildcard\*(rq address has been provided. When an address is specified as INADDR_ANY (a manifest constant defined in ), the system interprets the address as \*(lqany valid address\*(rq. For example, to bind a specific port number to a socket, but leave the local address unspecified, the following code might be used: .DS #include #include ... struct sockaddr_in sin; ... s = socket(AF_INET, SOCK_STREAM, 0); sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_port = htons(MYPORT); bind(s, (struct sockaddr *) &sin, sizeof (sin)); .DE Sockets with wildcarded local addresses may receive messages directed to the specified port number, and sent to any of the possible addresses assigned to a host. For example, if a host has addresses 128.32.0.4 and 10.0.0.78, and a socket is bound as above, the process will be able to accept connection requests which are addressed to 128.32.0.4 or 10.0.0.78. If a server process wished to only allow hosts on a given network connect to it, it would bind the address of the host on the appropriate network. .PP In a similar fashion, a local port may be left unspecified (specified as zero), in which case the system will select an appropriate port number for it. This shortcut will work both in the Internet and NS domains. For example, to bind a specific local address to a socket, but to leave the local port number unspecified: .DS hp = gethostbyname(hostname); if (hp == NULL) { ... } bcopy(hp->h_addr, (char *) sin.sin_addr, hp->h_length); sin.sin_port = htons(0); bind(s, (struct sockaddr *) &sin, sizeof (sin)); .DE The system selects the local port number based on two criteria. The first is that on 4BSD systems, Internet ports below IPPORT_RESERVED (1024) (for the Xerox domain, 0 through 3000) are reserved for privileged users (i.e., the super user); Internet ports above IPPORT_USERRESERVED (50000) are reserved for non-privileged servers. The second is that the port number is not currently bound to some other socket. In order to find a free Internet port number in the privileged range the \fIrresvport\fP library routine may be used as follows to return a stream socket in with a privileged port number: .DS int lport = IPPORT_RESERVED \- 1; int s; ... s = rresvport(&lport); if (s < 0) { if (errno == EAGAIN) fprintf(stderr, "socket: all ports in use\en"); else perror("rresvport: socket"); ... } .DE The restriction on allocating ports was done to allow processes executing in a \*(lqsecure\*(rq environment to perform authentication based on the originating address and port number. For example, the \fIrlogin\fP(1) command allows users to log in across a network without being asked for a password, if two conditions hold: First, the name of the system the user is logging in from is in the file \fI/etc/hosts.equiv\fP on the system he is logging in to (or the system name and the user name are in the user's \fI.rhosts\fP file in the user's home directory), and second, that the user's rlogin process is coming from a privileged port on the machine from which he is logging. The port number and network address of the machine from which the user is logging in can be determined either by the \fIfrom\fP result of the \fIaccept\fP call, or from the \fIgetpeername\fP call. .PP In certain cases the algorithm used by the system in selecting port numbers is unsuitable for an application. This is because associations are created in a two step process. For example, the Internet file transfer protocol, FTP, specifies that data connections must always originate from the same local port. However, duplicate associations are avoided by connecting to different foreign ports. In this situation the system would disallow binding the same local address and port number to a socket if a previous data connection's socket still existed. To override the default port selection algorithm, an option call must be performed prior to address binding: .DS ... int on = 1; ... setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); bind(s, (struct sockaddr *) &sin, sizeof (sin)); .DE With the above call, local addresses may be bound which are already in use. This does not violate the uniqueness requirement as the system still checks at connect time to be sure any other sockets with the same local address and port do not have the same foreign address and port. If the association already exists, the error EADDRINUSE is returned. .NH 2 Broadcasting and determining network configuration .PP By using a datagram socket, it is possible to send broadcast packets on many networks supported by the system. The network itself must support broadcast; the system provides no simulation of broadcast in software. Broadcast messages can place a high load on a network since they force every host on the network to service them. Consequently, the ability to send broadcast packets has been limited to sockets which are explicitly marked as allowing broadcasting. Broadcast is typically used for one of two reasons: it is desired to find a resource on a local network without prior knowledge of its address, or important functions such as routing require that information be sent to all accessible neighbors. .PP To send a broadcast message, a datagram socket should be created: .DS s = socket(AF_INET, SOCK_DGRAM, 0); .DE or .DS s = socket(AF_NS, SOCK_DGRAM, 0); .DE The socket is marked as allowing broadcasting, .DS int on = 1; setsockopt(s, SOL_SOCKET, SO_BROADCAST, &on, sizeof (on)); .DE and at least a port number should be bound to the socket: .DS sin.sin_family = AF_INET; sin.sin_addr.s_addr = htonl(INADDR_ANY); sin.sin_port = htons(MYPORT); bind(s, (struct sockaddr *) &sin, sizeof (sin)); .DE or, for the NS domain, .DS sns.sns_family = AF_NS; netnum = htonl(net); sns.sns_addr.x_net = *(union ns_net *) &netnum; /* insert net number */ sns.sns_addr.x_port = htons(MYPORT); bind(s, (struct sockaddr *) &sns, sizeof (sns)); .DE The destination address of the message to be broadcast depends on the network(s) on which the message is to be broadcast. The Internet domain supports a shorthand notation for broadcast on the local network, the address INADDR_BROADCAST (defined in <\fInetinet/in.h\fP>. To determine the list of addresses for all reachable neighbors requires knowledge of the networks to which the host is connected. Since this information should be obtained in a host-independent fashion and may be impossible to derive, 4.3BSD provides a method of retrieving this information from the system data structures. The SIOCGIFCONF \fIioctl\fP call returns the interface configuration of a host in the form of a single \fIifconf\fP structure; this structure contains a ``data area'' which is made up of an array of of \fIifreq\fP structures, one for each network interface to which the host is connected. These structures are defined in \fI\fP as follows: .DS .if t .ta .5i 1.0i 1.5i 3.5i .if n .ta .7i 1.4i 2.1i 3.4i struct ifconf { int ifc_len; /* size of associated buffer */ union { caddr_t ifcu_buf; struct ifreq *ifcu_req; } ifc_ifcu; }; #define ifc_buf ifc_ifcu.ifcu_buf /* buffer address */ #define ifc_req ifc_ifcu.ifcu_req /* array of structures returned */ #define IFNAMSIZ 16 struct ifreq { char ifr_name[IFNAMSIZ]; /* if name, e.g. "en0" */ union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr; short ifru_flags; caddr_t ifru_data; } ifr_ifru; }; .if t .ta \w' #define'u +\w' ifr_broadaddr'u +\w' ifr_ifru.ifru_broadaddr'u #define ifr_addr ifr_ifru.ifru_addr /* address */ #define ifr_dstaddr ifr_ifru.ifru_dstaddr /* other end of p-to-p link */ #define ifr_broadaddr ifr_ifru.ifru_broadaddr /* broadcast address */ #define ifr_flags ifr_ifru.ifru_flags /* flags */ #define ifr_data ifr_ifru.ifru_data /* for use by interface */ .DE The actual call which obtains the interface configuration is .DS struct ifconf ifc; char buf[BUFSIZ]; ifc.ifc_len = sizeof (buf); ifc.ifc_buf = buf; if (ioctl(s, SIOCGIFCONF, (char *) &ifc) < 0) { ... } .DE After this call \fIbuf\fP will contain one \fIifreq\fP structure for each network to which the host is connected, and \fIifc.ifc_len\fP will have been modified to reflect the number of bytes used by the \fIifreq\fP structures. .PP For each structure there exists a set of ``interface flags'' which tell whether the network corresponding to that interface is up or down, point to point or broadcast, etc. The SIOCGIFFLAGS \fIioctl\fP retrieves these flags for an interface specified by an \fIifreq\fP structure as follows: .DS struct ifreq *ifr; ifr = ifc.ifc_req; for (n = ifc.ifc_len / sizeof (struct ifreq); --n >= 0; ifr++) { /* * We must be careful that we don't use an interface * devoted to an address family other than those intended; * if we were interested in NS interfaces, the * AF_INET would be AF_NS. */ if (ifr->ifr_addr.sa_family != AF_INET) continue; if (ioctl(s, SIOCGIFFLAGS, (char *) ifr) < 0) { ... } /* * Skip boring cases. */ if ((ifr->ifr_flags & IFF_UP) == 0 || (ifr->ifr_flags & IFF_LOOPBACK) || (ifr->ifr_flags & (IFF_BROADCAST | IFF_POINTTOPOINT)) == 0) continue; .DE .PP Once the flags have been obtained, the broadcast address must be obtained. In the case of broadcast networks this is done via the SIOCGIFBRDADDR \fIioctl\fP, while for point-to-point networks the address of the destination host is obtained with SIOCGIFDSTADDR. .DS struct sockaddr dst; if (ifr->ifr_flags & IFF_POINTTOPOINT) { if (ioctl(s, SIOCGIFDSTADDR, (char *) ifr) < 0) { ... } bcopy((char *) ifr->ifr_dstaddr, (char *) &dst, sizeof (ifr->ifr_dstaddr)); } else if (ifr->ifr_flags & IFF_BROADCAST) { if (ioctl(s, SIOCGIFBRDADDR, (char *) ifr) < 0) { ... } bcopy((char *) ifr->ifr_broadaddr, (char *) &dst, sizeof (ifr->ifr_broadaddr)); } .DE .PP After the appropriate \fIioctl\fP's have obtained the broadcast or destination address (now in \fIdst\fP), the \fIsendto\fP call may be used: .DS sendto(s, buf, buflen, 0, (struct sockaddr *)&dst, sizeof (dst)); } .DE In the above loop one \fIsendto\fP occurs for every interface to which the host is connected that supports the notion of broadcast or point-to-point addressing. If a process only wished to send broadcast messages on a given network, code similar to that outlined above would be used, but the loop would need to find the correct destination address. .PP Received broadcast messages contain the senders address and port, as datagram sockets are bound before a message is allowed to go out. .NH 2 Socket Options .PP It is possible to set and get a number of options on sockets via the \fIsetsockopt\fP and \fIgetsockopt\fP system calls. These options include such things as marking a socket for broadcasting, not to route, to linger on close, etc. The general forms of the calls are: .DS setsockopt(s, level, optname, optval, optlen); .DE and .DS getsockopt(s, level, optname, optval, optlen); .DE .PP The parameters to the calls are as follows: \fIs\fP is the socket on which the option is to be applied. \fILevel\fP specifies the protocol layer on which the option is to be applied; in most cases this is the ``socket level'', indicated by the symbolic constant SOL_SOCKET, defined in \fI.\fP The actual option is specified in \fIoptname\fP, and is a symbolic constant also defined in \fI\fP. \fIOptval\fP and \fIOptlen\fP point to the value of the option (in most cases, whether the option is to be turned on or off), and the length of the value of the option, respectively. For \fIgetsockopt\fP, \fIoptlen\fP is a value-result parameter, initially set to the size of the storage area pointed to by \fIoptval\fP, and modified upon return to indicate the actual amount of storage used. .PP An example should help clarify things. It is sometimes useful to determine the type (e.g., stream, datagram, etc.) of an existing socket; programs under \fIinetd\fP (described below) may need to perform this task. This can be accomplished as follows via the SO_TYPE socket option and the \fIgetsockopt\fP call: .DS #include #include int type, size; size = sizeof (int); if (getsockopt(s, SOL_SOCKET, SO_TYPE, (char *) &type, &size) < 0) { ... } .DE After the \fIgetsockopt\fP call, \fItype\fP will be set to the value of the socket type, as defined in \fI\fP. If, for example, the socket were a datagram socket, \fItype\fP would have the value corresponding to SOCK_DGRAM. .NH 2 NS Packet Sequences .PP The semantics of NS connections demand that the user both be able to look inside the network header associated with any incoming packet and be able to specify what should go in certain fields of an outgoing packet. Using different calls to \fIsetsockopt\fP, it is possible to indicate whether prototype headers will be associated by the user with each outgoing packet (SO_HEADERS_ON_OUTPUT), to indicate whether the headers received by the system should be delivered to the user (SO_HEADERS_ON_INPUT), or to indicate default information that should be associated with all outgoing packets on a given socket (SO_DEFAULT_HEADERS). .PP The contents of a SPP header (minus the IDP header) are: .DS .if t .ta \w" #define"u +\w" u_short"u +2.0i struct sphdr { u_char sp_cc; /* connection control */ #define SP_SP 0x80 /* system packet */ #define SP_SA 0x40 /* send acknowledgement */ #define SP_OB 0x20 /* attention (out of band data) */ #define SP_EM 0x10 /* end of message */ u_char sp_dt; /* datastream type */ u_short sp_sid; /* source connection identifier */ u_short sp_did; /* destination connection identifier */ u_short sp_seq; /* sequence number */ u_short sp_ack; /* acknowledge number */ u_short sp_alo; /* allocation number */ }; .DE Here, the items of interest are the \fIdatastream type\fP and the \fIconnection control\fP fields. The semantics of the datastream type are defined by the application(s) in question; the value of this field is, by default, zero, but it can be used to indicate things such as Xerox's Bulk Data Transfer Protocol (in which case it is set to one). The connection control field is a mask of the flags defined just below it. The user may set or clear the end-of-message bit to indicate that a given message is the last of a given substream type, or may set/clear the attention bit as an alternate way to indicate that a packet should be sent out-of-band. As an example, to associate prototype headers with outgoing SPP packets, consider: .DS #include #include #include #include ... struct sockaddr_ns sns, to; int s, on = 1; struct databuf { struct sphdr proto_spp; /* prototype header */ char buf[534]; /* max. possible data by Xerox std. */ } buf; ... s = socket(AF_NS, SOCK_SEQPACKET, 0); ... bind(s, (struct sockaddr *) &sns, sizeof (sns)); setsockopt(s, NSPROTO_SPP, SO_HEADERS_ON_OUTPUT, &on, sizeof(on)); ... buf.proto_spp.sp_dt = 1; /* bulk data */ buf.proto_spp.sp_cc = SP_EM; /* end-of-message */ strcpy(buf.buf, "hello world\en"); sendto(s, (char *) &buf, sizeof(struct sphdr) + strlen("hello world\en"), (struct sockaddr *) &to, sizeof(to)); ... .DE Note that one must be careful when writing headers; if the prototype header is not written with the data with which it is to be associated, the kernel will treat the first few bytes of the data as the header, with unpredictable results. To turn off the above association, and to indicate that packet headers received by the system should be passed up to the user, one might use: .DS #include #include #include #include ... struct sockaddr sns; int s, on = 1, off = 0; ... s = socket(AF_NS, SOCK_SEQPACKET, 0); ... bind(s, (struct sockaddr *) &sns, sizeof (sns)); setsockopt(s, NSPROTO_SPP, SO_HEADERS_ON_OUTPUT, &off, sizeof(off)); setsockopt(s, NSPROTO_SPP, SO_HEADERS_ON_INPUT, &on, sizeof(on)); ... .DE .PP Output is handled somewhat differently in the IDP world. The header of an IDP-level packet looks like: .DS .if t .ta \w'struct 'u +\w" struct ns_addr"u +2.0i struct idp { u_short idp_sum; /* Checksum */ u_short idp_len; /* Length, in bytes, including header */ u_char idp_tc; /* Transport Control (i.e., hop count) */ u_char idp_pt; /* Packet Type (i.e., level 2 protocol) */ struct ns_addr idp_dna; /* Destination Network Address */ struct ns_addr idp_sna; /* Source Network Address */ }; .DE The primary field of interest in an IDP header is the \fIpacket type\fP field. The standard values for this field are (as defined in <\fInetns/ns.h\fP>): .DS .if t .ta \w" #define"u +\w" NSPROTO_ERROR"u +1.0i #define NSPROTO_RI 1 /* Routing Information */ #define NSPROTO_ECHO 2 /* Echo Protocol */ #define NSPROTO_ERROR 3 /* Error Protocol */ #define NSPROTO_PE 4 /* Packet Exchange */ #define NSPROTO_SPP 5 /* Sequenced Packet */ .DE For SPP connections, the contents of this field are automatically set to NSPROTO_SPP; for IDP packets, this value defaults to zero, which means ``unknown''. .PP Setting the value of that field with SO_DEFAULT_HEADERS is easy: .DS #include #include #include #include ... struct sockaddr sns; struct idp proto_idp; /* prototype header */ int s, on = 1; ... s = socket(AF_NS, SOCK_DGRAM, 0); ... bind(s, (struct sockaddr *) &sns, sizeof (sns)); proto_idp.idp_pt = NSPROTO_PE; /* packet exchange */ setsockopt(s, NSPROTO_IDP, SO_DEFAULT_HEADERS, (char *) &proto_idp, sizeof(proto_idp)); ... .DE .PP Using SO_HEADERS_ON_OUTPUT is somewhat more difficult. When SO_HEADERS_ON_OUTPUT is turned on for an IDP socket, the socket becomes (for all intents and purposes) a raw socket. In this case, all the fields of the prototype header (except the length and checksum fields, which are computed by the kernel) must be filled in correctly in order for the socket to send and receive data in a sensible manner. To be more specific, the source address must be set to that of the host sending the data; the destination address must be set to that of the host for whom the data is intended; the packet type must be set to whatever value is desired; and the hopcount must be set to some reasonable value (almost always zero). It should also be noted that simply sending data using \fIwrite\fP will not work unless a \fIconnect\fP or \fIsendto\fP call is used, in spite of the fact that it is the destination address in the prototype header that is used, not the one given in either of those calls. For almost all IDP applications , using SO_DEFAULT_HEADERS is easier and more desirable than writing headers. .NH 2 Three-way Handshake .PP The semantics of SPP connections indicates that a three-way handshake, involving changes in the datastream type, should \(em but is not absolutely required to \(em take place before a SPP connection is closed. Almost all SPP connections are ``well-behaved'' in this manner; when communicating with any process, it is best to assume that the three-way handshake is required unless it is known for certain that it is not required. In a three-way close, the closing process indicates that it wishes to close the connection by sending a zero-length packet with end-of-message set and with datastream type 254. The other side of the connection indicates that it is OK to close by sending a zero-length packet with end-of-message set and datastream type 255. Finally, the closing process replies with a zero-length packet with substream type 255; at this point, the connection is considered closed. The following code fragments are simplified examples of how one might handle this three-way handshake at the user level; in the future, support for this type of close will probably be provided as part of the C library or as part of the kernel. The first code fragment below illustrates how a process might handle three-way handshake if it sees that the process it is communicating with wants to close the connection: .DS #include #include #include #include ... #ifndef SPPSST_END #define SPPSST_END 254 #define SPPSST_ENDREPLY 255 #endif struct sphdr proto_sp; int s; ... read(s, buf, BUFSIZE); if (((struct sphdr *)buf)->sp_dt == SPPSST_END) { /* * SPPSST_END indicates that the other side wants to * close. */ proto_sp.sp_dt = SPPSST_ENDREPLY; proto_sp.sp_cc = SP_EM; setsockopt(s, NSPROTO_SPP, SO_DEFAULT_HEADERS, (char *)&proto_sp, sizeof(proto_sp)); write(s, buf, 0); /* * Write a zero-length packet with datastream type = SPPSST_ENDREPLY * to indicate that the close is OK with us. The packet that we * don't see (because we don't look for it) is another packet * from the other side of the connection, with SPPSST_ENDREPLY * on it it, too. Once that packet is sent, the connection is * considered closed; note that we really ought to retransmit * the close for some time if we do not get a reply. */ close(s); } ... .DE To indicate to another process that we would like to close the connection, the following code would suffice: .DS #include #include #include #include ... #ifndef SPPSST_END #define SPPSST_END 254 #define SPPSST_ENDREPLY 255 #endif struct sphdr proto_sp; int s; ... proto_sp.sp_dt = SPPSST_END; proto_sp.sp_cc = SP_EM; setsockopt(s, NSPROTO_SPP, SO_DEFAULT_HEADERS, (char *)&proto_sp, sizeof(proto_sp)); write(s, buf, 0); /* send the end request */ proto_sp.sp_dt = SPPSST_ENDREPLY; setsockopt(s, NSPROTO_SPP, SO_DEFAULT_HEADERS, (char *)&proto_sp, sizeof(proto_sp)); /* * We assume (perhaps unwisely) * that the other side will send the * ENDREPLY, so we'll just send our final ENDREPLY * as if we'd seen theirs already. */ write(s, buf, 0); close(s); ... .DE .NH 2 Packet Exchange .PP The Xerox standard protocols include a protocol that is both reliable and datagram-oriented. This protocol is known as Packet Exchange (PEX or PE) and, like SPP, is layered on top of IDP. PEX is important for a number of things: Courier remote procedure calls may be expedited through the use of PEX, and many Xerox servers are located by doing a PEX ``BroadcastForServers'' operation. Although there is no implementation of PEX in the kernel, it may be simulated at the user level with some clever coding and the use of one peculiar \fIgetsockopt\fP. A PEX packet looks like: .DS .if t .ta \w'struct 'u +\w" struct idp"u +2.0i /* * The packet-exchange header shown here is not defined * as part of any of the system include files. */ struct pex { struct idp p_idp; /* idp header */ u_short ph_id[2]; /* unique transaction ID for pex */ u_short ph_client; /* client type field for pex */ }; .DE The \fIph_id\fP field is used to hold a ``unique id'' that is used in duplicate suppression; the \fIph_client\fP field indicates the PEX client type (similar to the packet type field in the IDP header). PEX reliability stems from the fact that it is an idempotent (``I send a packet to you, you send a packet to me'') protocol. Processes on each side of the connection may use the unique id to determine if they have seen a given packet before (the unique id field differs on each packet sent) so that duplicates may be detected, and to indicate which message a given packet is in response to. If a packet with a given unique id is sent and no response is received in a given amount of time, the packet is retransmitted until it is decided that no response will ever be received. To simulate PEX, one must be able to generate unique ids -- something that is hard to do at the user level with any real guarantee that the id is really unique. Therefore, a means (via \fIgetsockopt\fP) has been provided for getting unique ids from the kernel. The following code fragment indicates how to get a unique id: .DS long uniqueid; int s, idsize = sizeof(uniqueid); ... s = socket(AF_NS, SOCK_DGRAM, 0); ... /* get id from the kernel -- only on IDP sockets */ getsockopt(s, NSPROTO_PE, SO_SEQNO, (char *)&uniqueid, &idsize); ... .DE The retransmission and duplicate suppression code required to simulate PEX fully is left as an exercise for the reader. .NH 2 Inetd .PP One of the daemons provided with 4.3BSD is \fIinetd\fP, the so called ``internet super-server.'' \fIInetd\fP is invoked at boot time, and determines from the file \fI/etc/inetd.conf\fP the servers for which it is to listen. Once this information has been read and a pristine environment created, \fIinetd\fP proceeds to create one socket for each service it is to listen for, binding the appropriate port number to each socket. .PP \fIInetd\fP then performs a \fIselect\fP on all these sockets for read availability, waiting for somebody wishing a connection to the service corresponding to that socket. \fIInetd\fP then performs an \fIaccept\fP on the socket in question, \fIfork\fPs, \fIdup\fPs the new socket to file descriptors 0 and 1 (stdin and stdout), closes other open file descriptors, and \fIexec\fPs the appropriate server. .PP Servers making use of \fIinetd\fP are considerably simplified, as \fIinetd\fP takes care of the majority of the IPC work required in establishing a connection. The server invoked by \fIinetd\fP expects the socket connected to its client on file descriptors 0 and 1, and may immediately perform any operations such as \fIread\fP, \fIwrite\fP, \fIsend\fP, or \fIrecv\fP. Indeed, servers may use buffered I/O as provided by the ``stdio'' conventions, as long as as they remember to use \fIfflush\fP when appropriate. .PP One call which may be of interest to individuals writing servers under \fIinetd\fP is the \fIgetpeername\fP call, which returns the address of the peer (process) connected on the other end of the socket. For example, to log the Internet address in ``dot notation'' (e.g., ``128.32.0.4'') of a client connected to a server under \fIinetd\fP, the following code might be used: .DS struct sockaddr_in name; int namelen = sizeof (name); ... if (getpeername(0, (struct sockaddr *)&name, &namelen) < 0) { syslog(LOG_ERR, "getpeername: %m"); exit(1); } else syslog(LOG_INFO, "Connection from %s", inet_ntoa(name.sin_addr)); ... .DE While the \fIgetpeername\fP call is especially useful when writing programs to run with \fIinetd\fP, it can be used under other circumstances. Be warned, however, that \fIgetpeername\fP will fail on UNIX domain sockets. _char idp_tc; /* Transport Control (i.e., hop count) */ u_char idp_pt; /* Packet Type (i.e., level 2 protocol) */ struct ns_addr idp_dna; /* Destination Network Address */ struct ns_addr idp_sna; /* Source Network Address */ }; .DE The primary field of interest in an IDP header is the \fIpacket type\fP field. The standard values for this field are (as defined in <\fInetns/ns.h\fP>): .DS .if t .ta \w" #define"u +\w" NSPROTO_ERROR"u +1.0i #define NSPROTO_RI 1 /* Routing Information */ #define NSPdoc/ps1/08.ipc/spell.ok 444 3 12 4756 3655566765 10017 4.2bsd AF ANYP BUFSIZ BUFSIZE BroadcastForServers CF CLR CRMOD Clearinghouse DARPA DESTPORT DGRAM DONTROUTE Datagram EADDRINUSE EADDRNOTAVAIL EAGAIN ECONNREFUSED EHOSTDOWN EHOSTUNREACH EINTR ENDREPLY ENETDOWN ENETUNREACH ENOBUFS EPROTONOSUPPORT EPROTOTYPE ETIMEDOUT EWOULDBLOCK Ethernet FASYNC FCREATE FD FNDELAY FTP FTRUNCATE FWRITE FWRONLY Fabry GETOWN Gethostybyname IDP IFF IFNAMSIZ INADDR INET INFO IP IPC IPPORT ISSET Inetd LF LH LOOPBACK Lapsley Leffler MSG MYADDRESS MYPORT NS NSPROTO OB OOB OOBINLINE Optlen Optval PE PEX POINTTOPOINT PS1:8 RDONLY RDWR REUSEADDR RF RH RWHODIR SEQNO SEQPACKET SETFL SETOWN SETSIZE SIGALRM SIGCHLD SIGIO SIGURG SIOCATMARK SIOCGIFBRDADDR SIOCGIFCONF SIOCGIFDSTADDR SIOCGIFFLAGS SIOCGPGRP SIOCSPGRP SOF SP SPP SPPSST Science:UofMaryland TCP TELNET TIOCFLUSH TIOCGETP TIOCNOTTY TIOCSETP TRUNC Torek Tutorial''PS1:8 USERRESERVED VAX WNOHANG WRONLY XSIS XTABS ack addr addr.s addr.sa addr.sun addr.x addrtype alo argc argv arpa b.sg bcmp bcopy broadaddr buf buf.buf buf.proto buflen bzero c.f cad caddr calder daemons dali databuf datagram datastream dev dna doit dst dst.sin dst.sns dstaddr dt dup2 en0 endhostent endif ernie errno es esvax exceptmask execptfds fcntl fcntl.h fd fflush file.h foo fprintf from.sin fromlen gethostbyaddr gethostbyname gethostbynameandnet gethostent gethostname getnetbyname getnetbynumber getnetent getpeername getprotobyname getprotobynumber getprotoent getservbyname getservbyport getservent getsockopt goto gotpty gyre gyre:Computer hardcoding hopcount host.c hostent hostname hostnames hosts.equiv htonl htons idp idp.h idp.idp idsize if.h ifc ifc.ifc ifconf ifcu ifcu.ifcu ifndef ifr ifreq ifru ifru.ifru in.h inet inetd inetd.conf ing ingres io ioctl.h ipc kim len localnet lport lq makeaddr matisse medea miro monet name.sin namelen nameserver nb netdb.h netent netinet netns netnum netof newsock newtcp nfds ns ns.h ntoa ntohl ntohs onalrm oob optlen optname optval oz pathname pathnames pex pgrp ph pp proto protoent pt pty ptyXX ptyp ptyxy queueing readfds readmask recv recvfrom recvtime rem req rhosts rlogin rlogind rq rresvport ruptime rwho rwhod sendto servent server.sin server.sun sethostent setsockopt sid sigvec sin.sin sizeof sna snew sns sns.sns sockaddr socket.h sp sp.h sp.sp sphdr spp spp.sp sprintf statbuf statvax std stderr stdin stdio.h stdout strcmp strcpy strlen syslog ta tcp telnet time.h timeval tmp tolen ttyxy tuples types.h ucbvax udp un un.h uniqueid useable usec val wait.h wait.tv wd wd.wd whod wildcard wildcarded writefds writemask te suppression; thdoc/ps1/08.ipc/Makefile 444 3 12 1210 3656257265 7754 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 1.2 (Berkeley) 5/2/86 # SRCS= 0.t 1.t 2.t 3.t 4.t 5.t MACROS= -ms PRINTER=-Pdp EQN= deqn ${PRINTER} TBL= dtbl ${PRINTER} TROFF= ditroff ${PRINTER} ipc: ipc.${PRINTER} lpr ${PRINTER} -n ipc.${PRINTER} ipc.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${TROFF} ${MACROS} -t > ipc.${PRINTER} clean: rm -f ipc.-* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done URG SIOCATMARK SIOCGIFBRDADDR SIOCGIFCONF SIOCGIFDSTADDR SIOCGIFFLAGS SIOCGPGRP SIOCSPGRP SOF SP SPP SPPSST Science:UofMaryland TCP TELNET TIOCFLUSH TIOCGETP TIOCNOTTY TIOCSETP TRUNC Torek Tutorial''PS1:8 USERRESERVED VAX WNOHANG WRONLY XSIS XTABS ack addr addr.s addr.sa addr.sun addr.x addrtype alo argc argv arpa b.sg bcmp bcopy broadaddr buf buf.buf buf.proto buflen bzerodoc/ps1/07.ipctut/ 755 3 12 0 3662141037 6755 doc/ps1/07.ipctut/dgramread.c 444 3 12 2620 3660216316 11133 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)dgramread.c 6.3 (Berkeley) 5/8/86 .\" #include #include #include #include /* * In the included file a sockaddr_in is defined as follows: * struct sockaddr_in { * short sin_family; * u_short sin_port; * struct in_addr sin_addr; * char sin_zero[8]; * }; * * This program creates a datagram socket, binds a name to it, then reads * from the socket. */ main() { int sock, length; struct sockaddr_in name; char buf[1024]; /* Create socket from which to read. */ sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) { perror("opening datagram socket"); exit(1); } /* Create name with wildcards. */ name.sin_family = AF_INET; name.sin_addr.s_addr = INADDR_ANY; name.sin_port = 0; if (bind(sock, &name, sizeof(name))) { perror("binding datagram socket"); exit(1); } /* Find assigned port value and print it out. */ length = sizeof(name); if (getsockname(sock, &name, &length)) { perror("getting socket name"); exit(1); } printf("Socket has port #%d\en", ntohs(name.sin_port)); /* Read from the socket */ if (read(sock, buf, 1024) < 0) perror("receiving datagram packet"); printf("-->%s\en", buf); close(sock); } getservbyname getservbyport getservent getsockopt goto gotpty gyre gyre:Computer hardcoding hopcount host.c hostdoc/ps1/07.ipctut/dgramsend.c 444 3 12 2644 3660216316 11157 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)dgramsend.c 6.2 (Berkeley) 5/8/86 .\" #include #include #include #include #include #define DATA "The sea is calm tonight, the tide is full . . ." /* * Here I send a datagram to a receiver whose name I get from the command * line arguments. The form of the command line is dgramsend hostname * portnumber */ main(argc, argv) int argc; char *argv[]; { int sock; struct sockaddr_in name; struct hostent *hp, *gethostbyname(); /* Create socket on which to send. */ sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) { perror("opening datagram socket"); exit(1); } /* * Construct name, with no wildcards, of the socket to send to. * Getnostbyname() returns a structure including the network address * of the specified host. The port number is taken from the command * line. */ hp = gethostbyname(argv[1]); if (hp == 0) { fprintf(stderr, "%s: unknown host\n", argv[1]); exit(2); } bcopy(hp->h_addr, &name.sin_addr, hp->h_length); name.sin_family = AF_INET; name.sin_port = htons(atoi(argv[2])); /* Send message. */ if (sendto(sock, DATA, sizeof(DATA), 0, &name, sizeof(name)) < 0) perror("sending datagram message"); close(sock); } vbyport getservent getsockopt goto gotpty gyre gyre:Computer hardcoding hopcount host.c hostdoc/ps1/07.ipctut/pipe.c 444 3 12 2404 3660216317 10143 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)pipe.c 6.2 (Berkeley) 5/8/86 .\" #include #define DATA "Bright star, would I were steadfast as thou art . . ." /* * This program creates a pipe, then forks. The child communicates to the * parent over the pipe. Notice that a pipe is a one-way communications * device. I can write to the output socket (sockets[1], the second socket * of the array returned by pipe()) and read from the input socket * (sockets[0]), but not vice versa. */ main() { int sockets[2], child; /* Create a pipe */ if (pipe(sockets) < 0) { perror("opening stream socket pair"); exit(10); } if ((child = fork()) == -1) perror("fork"); else if (child) { char buf[1024]; /* This is still the parent. It reads the child's message. */ close(sockets[1]); if (read(sockets[0], buf, 1024) < 0) perror("reading message"); printf("-->%s\en", buf); close(sockets[0]); } else { /* This is the child. It writes a message to its parent. */ close(sockets[0]); if (write(sockets[1], DATA, sizeof(DATA)) < 0) perror("writing message"); close(sockets[1]); } } s(atoi(argv[2])); /* Send message. */ if (sendto(sock, DATA, sizeof(DATA), 0, &name, sizeof(name)) < 0) perror("sending datagram message"); close(sock); } vbyport getservent getsockopt goto gotpty gyre gyre:Computer hardcoding hopcount host.c hostdoc/ps1/07.ipctut/socketpair.c 444 3 12 2645 3660216320 11353 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)socketpair.c 6.2 (Berkeley) 5/8/86 .\" #include #include #include #define DATA1 "In Xanadu, did Kublai Khan . . ." #define DATA2 "A stately pleasure dome decree . . ." /* * This program creates a pair of connected sockets then forks and * communicates over them. This is very similar to communication with pipes, * however, socketpairs are two-way communications objects. Therefore I can * send messages in both directions. */ main() { int sockets[2], child; char buf[1024]; if (socketpair(AF_UNIX, SOCK_STREAM, 0, sockets) < 0) { perror("opening stream socket pair"); exit(1); } if ((child = fork()) == -1) perror("fork"); else if (child) { /* This is the parent. */ close(sockets[0]); if (read(sockets[1], buf, 1024, 0) < 0) perror("reading stream message"); printf("-->%s\en", buf); if (write(sockets[1], DATA2, sizeof(DATA2)) < 0) perror("writing stream message"); close(sockets[1]); } else { /* This is the child. */ close(sockets[1]); if (write(sockets[0], DATA1, sizeof(DATA1)) < 0) perror("writing stream message"); if (read(sockets[0], buf, 1024, 0) < 0) perror("reading stream message"); printf("-->%s\en", buf); close(sockets[0]); } } byport getservent getsockopt goto gotpty gyre gyre:Computer hardcoding hopcount host.c hostdoc/ps1/07.ipctut/strchkread.c 444 3 12 3532 3660216320 11335 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)strchkread.c 6.2 (Berkeley) 5/8/86 .\" #include #include #include #include #include #include #define TRUE 1 /* * This program uses select() to check that someone is trying to connect * before calling accept(). */ main() { int sock, length; struct sockaddr_in server; int msgsock; char buf[1024]; int rval; fd_set ready; struct timeval to; /* Create socket */ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("opening stream socket"); exit(1); } /* Name socket using wildcards */ server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = 0; if (bind(sock, &server, sizeof(server))) { perror("binding stream socket"); exit(1); } /* Find out assigned port number and print it out */ length = sizeof(server); if (getsockname(sock, &server, &length)) { perror("getting socket name"); exit(1); } printf("Socket has port #%d\en", ntohs(server.sin_port)); /* Start accepting connections */ listen(sock, 5); do { FD_ZERO(&ready); FD_SET(sock, &ready); to.tv_sec = 5; if (select(sock + 1, &ready, 0, 0, &to) < 0) { perror("select"); continue; } if (FD_ISSET(sock, &ready)) { msgsock = accept(sock, (struct sockaddr *)0, (int *)0); if (msgsock == -1) perror("accept"); else do { bzero(buf, sizeof(buf)); if ((rval = read(msgsock, buf, 1024)) < 0) perror("reading stream message"); else if (rval == 0) printf("Ending connection\en"); else printf("-->%s\en", buf); } while (rval > 0); close(msgsock); } else printf("Do something else\en"); } while (TRUE); } ds ns ns.h ntoa ntohl ntohs onalrm oob optlen optname optval oz pathname pathnames pex pgrp ph pp proto protoent pt pty ptyXX ptyp ptyxy queueing readfds readmask recdoc/ps1/07.ipctut/streamread.c 444 3 12 3640 3660216321 11333 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)streamread.c 6.2 (Berkeley) 5/8/86 .\" #include #include #include #include #include #define TRUE 1 /* * This program creates a socket and then begins an infinite loop. Each time * through the loop it accepts a connection and prints out messages from it. * When the connection breaks, or a termination message comes through, the * program accepts a new connection. */ main() { int sock, length; struct sockaddr_in server; int msgsock; char buf[1024]; int rval; int i; /* Create socket */ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("opening stream socket"); exit(1); } /* Name socket using wildcards */ server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = 0; if (bind(sock, &server, sizeof(server))) { perror("binding stream socket"); exit(1); } /* Find out assigned port number and print it out */ length = sizeof(server); if (getsockname(sock, &server, &length)) { perror("getting socket name"); exit(1); } printf("Socket has port #%d\en", ntohs(server.sin_port)); /* Start accepting connections */ listen(sock, 5); do { msgsock = accept(sock, 0, 0); if (msgsock == -1) perror("accept"); else do { bzero(buf, sizeof(buf)); if ((rval = read(msgsock, buf, 1024)) < 0) perror("reading stream message"); i = 0; if (rval == 0) printf("Ending connection\en"); else printf("-->%s\en", buf); } while (rval != 0); close(msgsock); } while (TRUE); /* * Since this program has an infinite loop, the socket "sock" is * never explicitly closed. However, all sockets will be closed * automatically when a process is killed or terminates normally. */ } me pathnames pex pgrp ph pp proto protoent pt pty ptyXX ptyp ptyxy queueing readfds readmask recdoc/ps1/07.ipctut/streamwrite.c 444 3 12 2644 3660216322 11556 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)streamwrite.c 6.2 (Berkeley) 5/8/86 .\" #include #include #include #include #include #define DATA "Half a league, half a league . . ." /* * This program creates a socket and initiates a connection with the socket * given in the command line. One message is sent over the connection and * then the socket is closed, ending the connection. The form of the command * line is streamwrite hostname portnumber */ main(argc, argv) int argc; char *argv[]; { int sock; struct sockaddr_in server; struct hostent *hp, *gethostbyname(); char buf[1024]; /* Create socket */ sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { perror("opening stream socket"); exit(1); } /* Connect socket using name specified by command line. */ server.sin_family = AF_INET; hp = gethostbyname(argv[1]); if (hp == 0) { fprintf(stderr, "%s: unknown host\n", argv[1]); exit(2); } bcopy(hp->h_addr, &server.sin_addr, hp->h_length); server.sin_port = htons(atoi(argv[2])); if (connect(sock, &server, sizeof(server)) < 0) { perror("connecting stream socket"); exit(1); } if (write(sock, DATA, sizeof(DATA)) < 0) perror("writing on stream socket"); close(sock); } or("accept"); else do { bzero(buf, sizeof(buf)); if ((rval = read(msgsock, buf, 1024doc/ps1/07.ipctut/tutor.me 444 3 12 114000 3660727334 10604 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)tutor.me 6.5 (Berkeley) 5/10/86 .\" .oh 'Introductory 4.3BSD IPC''PS1:7-%' .eh 'PS1:7-%''Introductory 4.3BSD IPC' .rs .sp 2 .sz 14 .ft B .ce 2 An Introductory 4.3BSD Interprocess Communication Tutorial .sz 10 .sp 2 .ce .i "Stuart Sechrest" .ft .sp .ce 4 Computer Science Research Group Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley .sp 2 .ce .i ABSTRACT .sp .(c .pp Berkeley UNIX\(dg 4.3BSD offers several choices for interprocess communication. To aid the programmer in developing programs which are comprised of cooperating processes, the different choices are discussed and a series of example programs are presented. These programs demonstrate in a simple way the use of pipes, socketpairs, sockets and the use of datagram and stream communication. The intent of this document is to present a few simple example programs, not to describe the networking system in full. .)c .sp 2 .(f \(dg\|UNIX is a trademark of AT&T Bell Laboratories. .)f .b .sh 1 "Goals" .r .pp Facilities for interprocess communication (IPC) and networking were a major addition to UNIX in the Berkeley UNIX 4.2BSD release. These facilities required major additions and some changes to the system interface. The basic idea of this interface is to make IPC similar to file I/O. In UNIX a process has a set of I/O descriptors, from which one reads and to which one writes. Descriptors may refer to normal files, to devices (including terminals), or to communication channels. The use of a descriptor has three phases: its creation, its use for reading and writing, and its destruction. By using descriptors to write files, rather than simply naming the target file in the write call, one gains a surprising amount of flexibility. Often, the program that creates a descriptor will be different from the program that uses the descriptor. For example the shell can create a descriptor for the output of the `ls' command that will cause the listing to appear in a file rather than on a terminal. Pipes are another form of descriptor that have been used in UNIX for some time. Pipes allow one-way data transmission from one process to another; the two processes and the pipe must be set up by a common ancestor. .pp The use of descriptors is not the only communication interface provided by UNIX. The signal mechanism sends a tiny amount of information from one process to another. The signaled process receives only the signal type, not the identity of the sender, and the number of possible signals is small. The signal semantics limit the flexibility of the signaling mechanism as a means of interprocess communication. .pp The identification of IPC with I/O is quite longstanding in UNIX and has proved quite successful. At first, however, IPC was limited to processes communicating within a single machine. With Berkeley UNIX 4.2BSD this expanded to include IPC between machines. This expansion has necessitated some change in the way that descriptors are created. Additionally, new possibilities for the meaning of read and write have been admitted. Originally the meanings, or semantics, of these terms were fairly simple. When you wrote something it was delivered. When you read something, you were blocked until the data arrived. Other possibilities exist, however. One can write without full assurance of delivery if one can check later to catch occasional failures. Messages can be kept as discrete units or merged into a stream. One can ask to read, but insist on not waiting if nothing is immediately available. These new possibilities are allowed in the Berkeley UNIX IPC interface. .pp Thus Berkeley UNIX 4.3BSD offers several choices for IPC. This paper presents simple examples that illustrate some of the choices. The reader is presumed to be familiar with the C programming language [Kernighan & Ritchie 1978], but not necessarily with the system calls of the UNIX system or with processes and interprocess communication. The paper reviews the notion of a process and the types of communication that are supported by Berkeley UNIX 4.3BSD. A series of examples are presented that create processes that communicate with one another. The programs show different ways of establishing channels of communication. Finally, the calls that actually transfer data are reviewed. To clearly present how communication can take place, the example programs have been cleared of anything that might be construed as useful work. They can, therefore, serve as models for the programmer trying to construct programs which are comprised of cooperating processes. .b .sh 1 "Processes" .pp A \fIprogram\fP is both a sequence of statements and a rough way of referring to the computation that occurs when the compiled statements are run. A \fIprocess\fP can be thought of as a single line of control in a program. Most programs execute some statements, go through a few loops, branch in various directions and then end. These are single process programs. Programs can also have a point where control splits into two independent lines, an action called \fIforking.\fP In UNIX these lines can never join again. A call to the system routine \fIfork()\fP, causes a process to split in this way. The result of this call is that two independent processes will be running, executing exactly the same code. Memory values will be the same for all values set before the fork, but, subsequently, each version will be able to change only the value of its own copy of each variable. Initially, the only difference between the two will be the value returned by \fIfork().\fP The parent will receive a process id for the child, the child will receive a zero. Calls to \fIfork(),\fP therefore, typically precede, or are included in, an if-statement. .pp A process views the rest of the system through a private table of descriptors. The descriptors can represent open files or sockets (sockets are communication objects that will be discussed below). Descriptors are referred to by their index numbers in the table. The first three descriptors are often known by special names, \fI stdin, stdout\fP and \fIstderr\fP. These are the standard input, output and error. When a process forks, its descriptor table is copied to the child. Thus, if the parent's standard input is being taken from a terminal (devices are also treated as files in UNIX), the child's input will be taken from the same terminal. Whoever reads first will get the input. If, before forking, the parent changes its standard input so that it is reading from a new file, the child will take its input from the new file. It is also possible to take input from a socket, rather than from a file. .b .sh 1 "Pipes" .r .pp Most users of UNIX know that they can pipe the output of a program ``prog1'' to the input of another, ``prog2,'' by typing the command \fI``prog1 | prog2.''\fP This is called ``piping'' the output of one program to another because the mechanism used to transfer the output is called a pipe. When the user types a command, the command is read by the shell, which decides how to execute it. If the command is simple, for example, .i "``prog1,''" the shell forks a process, which executes the program, prog1, and then dies. The shell waits for this termination and then prompts for the next command. If the command is a compound command, .i "``prog1 | prog2,''" the shell creates two processes connected by a pipe. One process runs the program, prog1, the other runs prog2. The pipe is an I/O mechanism with two ends, or sockets. Data that is written into one socket can be read from the other. .(z .ft CW .so pipe.c .ft .ce 1 Figure 1\ \ Use of a pipe .)z .pp Since a program specifies its input and output only by the descriptor table indices, which appear as variables or constants, the input source and output destination can be changed without changing the text of the program. It is in this way that the shell is able to set up pipes. Before executing prog1, the process can close whatever is at \fIstdout\fP and replace it with one end of a pipe. Similarly, the process that will execute prog2 can substitute the opposite end of the pipe for \fIstdin.\fP .pp Let us now examine a program that creates a pipe for communication between its child and itself (Figure 1). A pipe is created by a parent process, which then forks. When a process forks, the parent's descriptor table is copied into the child's. .pp In Figure 1, the parent process makes a call to the system routine \fIpipe().\fP This routine creates a pipe and places descriptors for the sockets for the two ends of the pipe in the process's descriptor table. \fIPipe()\fP is passed an array into which it places the index numbers of the sockets it created. The two ends are not equivalent. The socket whose index is returned in the low word of the array is opened for reading only, while the socket in the high end is opened only for writing. This corresponds to the fact that the standard input is the first descriptor of a process's descriptor table and the standard output is the second. After creating the pipe, the parent creates the child with which it will share the pipe by calling \fIfork().\fP Figure 2 illustrates the effect of a fork. The parent process's descriptor table points to both ends of the pipe. After the fork, both parent's and child's descriptor tables point to the pipe. The child can then use the pipe to send a message to the parent. .(z - .bl 5.8i - .\" pipe.grn goes here .sp .ce 1 Figure 2\ \ Sharing a pipe between parent and child .)z .pp Just what is a pipe? It is a one-way communication mechanism, with one end opened for reading and the other end for writing. Therefore, parent and child need to agree on which way to turn the pipe, from parent to child or the other way around. Using the same pipe for communication both from parent to child and from child to parent would be possible (since both processes have references to both ends), but very complicated. If the parent and child are to have a two-way conversation, the parent creates two pipes, one for use in each direction. (In accordance with their plans, both parent and child in the example above close the socket that they will not use. It is not required that unused descriptors be closed, but it is good practice.) A pipe is also a \fIstream\fP communication mechanism; that is, all messages sent through the pipe are placed in order and reliably delivered. When the reader asks for a certain number of bytes from this stream, he is given as many bytes as are available, up to the amount of the request. Note that these bytes may have come from the same call to \fIwrite()\fR or from several calls to \fIwrite()\fR which were concatenated. .b .sh 1 "Socketpairs" .r .pp Berkeley UNIX 4.3BSD provides a slight generalization of pipes. A pipe is a pair of connected sockets for one-way stream communication. One may obtain a pair of connected sockets for two-way stream communication by calling the routine \fIsocketpair().\fP The program in Figure 3 calls \fIsocketpair()\fP to create such a connection. The program uses the link for communication in both directions. Since socketpairs are an extension of pipes, their use resembles that of pipes. Figure 4 illustrates the result of a fork following a call to \fIsocketpair().\fP .pp \fISocketpair()\fP takes as arguments a specification of a domain, a style of communication, and a protocol. These are the parameters shown in the example. Domains and protocols will be discussed in the next section. Briefly, a domain is a space of names that may be bound to sockets and implies certain other conventions. Currently, socketpairs have only been implemented for one domain, called the UNIX domain. The UNIX domain uses UNIX path names for naming sockets. It only allows communication between sockets on the same machine. .pp Note that the header files .i "" and .i "." are required in this program. The constants AF_UNIX and SOCK_STREAM are defined in .i "," which in turn requires the file .i "" for some of its definitions. .(z .ft CW .so socketpair.c .ft .ce 1 Figure 3\ \ Use of a socketpair .)z .(z - .bl 5.8i - .\" socketpair.grn goes here .sp .ce 1 Figure 4\ \ Sharing a socketpair between parent and child .)z .b .sh 1 "Domains and Protocols" .r .pp Pipes and socketpairs are a simple solution for communicating between a parent and child or between child processes. What if we wanted to have processes that have no common ancestor with whom to set up communication? Neither standard UNIX pipes nor socketpairs are the answer here, since both mechanisms require a common ancestor to set up the communication. We would like to have two processes separately create sockets and then have messages sent between them. This is often the case when providing or using a service in the system. This is also the case when the communicating processes are on separate machines. In Berkeley UNIX 4.3BSD one can create individual sockets, give them names and send messages between them. .pp Sockets created by different programs use names to refer to one another; names generally must be translated into addresses for use. The space from which an address is drawn is referred to as a .i domain. There are several domains for sockets. Two that will be used in the examples here are the UNIX domain (or AF_UNIX, for Address Format UNIX) and the Internet domain (or AF_INET). UNIX domain IPC is an experimental facility in 4.2BSD and 4.3BSD. In the UNIX domain, a socket is given a path name within the file system name space. A file system node is created for the socket and other processes may then refer to the socket by giving the proper pathname. UNIX domain names, therefore, allow communication between any two processes that work in the same file system. The Internet domain is the UNIX implementation of the DARPA Internet standard protocols IP/TCP/UDP. Addresses in the Internet domain consist of a machine network address and an identifying number, called a port. Internet domain names allow communication between machines. .pp Communication follows some particular ``style.'' Currently, communication is either through a \fIstream\fP or by \fIdatagram.\fP Stream communication implies several things. Communication takes place across a connection between two sockets. The communication is reliable, error-free, and, as in pipes, no message boundaries are kept. Reading from a stream may result in reading the data sent from one or several calls to \fIwrite()\fP or only part of the data from a single call, if there is not enough room for the entire message, or if not all the data from a large message has been transferred. The protocol implementing such a style will retransmit messages received with errors. It will also return error messages if one tries to send a message after the connection has been broken. Datagram communication does not use connections. Each message is addressed individually. If the address is correct, it will generally be received, although this is not guaranteed. Often datagrams are used for requests that require a response from the recipient. If no response arrives in a reasonable amount of time, the request is repeated. The individual datagrams will be kept separate when they are read, that is, message boundaries are preserved. .pp The difference in performance between the two styles of communication is generally less important than the difference in semantics. The performance gain that one might find in using datagrams must be weighed against the increased complexity of the program, which must now concern itself with lost or out of order messages. If lost messages may simply be ignored, the quantity of traffic may be a consideration. The expense of setting up a connection is best justified by frequent use of the connection. Since the performance of a protocol changes as it is tuned for different situations, it is best to seek the most up-to-date information when making choices for a program in which performance is crucial. .pp A protocol is a set of rules, data formats and conventions that regulate the transfer of data between participants in the communication. In general, there is one protocol for each socket type (stream, datagram, etc.) within each domain. The code that implements a protocol keeps track of the names that are bound to sockets, sets up connections and transfers data between sockets, perhaps sending the data across a network. This code also keeps track of the names that are bound to sockets. It is possible for several protocols, differing only in low level details, to implement the same style of communication within a particular domain. Although it is possible to select which protocol should be used, for nearly all uses it is sufficient to request the default protocol. This has been done in all of the example programs. .pp One specifies the domain, style and protocol of a socket when it is created. For example, in Figure 5a the call to \fIsocket()\fP causes the creation of a datagram socket with the default protocol in the UNIX domain. .b .sh 1 "Datagrams in the UNIX Domain" .r .(z .ft CW .so udgramread.c .ft .ce 1 Figure 5a\ \ Reading UNIX domain datagrams .)z .pp Let us now look at two programs that create sockets separately. The programs in Figures 5a and 5b use datagram communication rather than a stream. The structure used to name UNIX domain sockets is defined in the file \fI.\fP The definition has also been included in the example for clarity. .pp Each program creates a socket with a call to \fIsocket().\fP These sockets are in the UNIX domain. Once a name has been decided upon it is attached to a socket by the system call \fIbind().\fP The program in Figure 5a uses the name ``socket'', which it binds to its socket. This name will appear in the working directory of the program. The routines in Figure 5b use its socket only for sending messages. It does not create a name for the socket because no other process has to refer to it. .(z .ft CW .so udgramsend.c .ft .ce 1 Figure 5b\ \ Sending a UNIX domain datagrams .)z .pp Names in the UNIX domain are path names. Like file path names they may be either absolute (e.g. ``/dev/imaginary'') or relative (e.g. ``socket''). Because these names are used to allow processes to rendezvous, relative path names can pose difficulties and should be used with care. When a name is bound into the name space, a file (inode) is allocated in the file system. If the inode is not deallocated, the name will continue to exist even after the bound socket is closed. This can cause subsequent runs of a program to find that a name is unavailable, and can cause directories to fill up with these objects. The names are removed by calling \fIunlink()\fP or using the \fIrm\fP\|(1) command. Names in the UNIX domain are only used for rendezvous. They are not used for message delivery once a connection is established. Therefore, in contrast with the Internet domain, unbound sockets need not be (and are not) automatically given addresses when they are connected. .pp There is no established means of communicating names to interested parties. In the example, the program in Figure 5b gets the name of the socket to which it will send its message through its command line arguments. Once a line of communication has been created, one can send the names of additional, perhaps new, sockets over the link. Facilities will have to be built that will make the distribution of names less of a problem than it now is. .b .sh 1 "Datagrams in the Internet Domain" .r .(z .ft CW .so dgramread.c .ft .ce 1 Figure 6a\ \ Reading Internet domain datagrams .)z .pp The examples in Figure 6a and 6b are very close to the previous example except that the socket is in the Internet domain. The structure of Internet domain addresses is defined in the file \fI\fP. Internet addresses specify a host address (a 32-bit number) and a delivery slot, or port, on that machine. These ports are managed by the system routines that implement a particular protocol. Unlike UNIX domain names, Internet socket names are not entered into the file system and, therefore, they do not have to be unlinked after the socket has been closed. When a message must be sent between machines it is sent to the protocol routine on the destination machine, which interprets the address to determine to which socket the message should be delivered. Several different protocols may be active on the same machine, but, in general, they will not communicate with one another. As a result, different protocols are allowed to use the same port numbers. Thus, implicitly, an Internet address is a triple including a protocol as well as the port and machine address. An \fIassociation\fP is a temporary or permanent specification of a pair of communicating sockets. An association is thus identified by the tuple <\fIprotocol, local machine address, local port, remote machine address, remote port\fP>. An association may be transient when using datagram sockets; the association actually exists during a \fIsend\fP operation. .(z .ft CW .so dgramsend.c .ft .ce 1 Figure 6b\ \ Sending an Internet domain datagram .)z .pp The protocol for a socket is chosen when the socket is created. The local machine address for a socket can be any valid network address of the machine, if it has more than one, or it can be the wildcard value INADDR_ANY. The wildcard value is used in the program in Figure 6a. If a machine has several network addresses, it is likely that messages sent to any of the addresses should be deliverable to a socket. This will be the case if the wildcard value has been chosen. Note that even if the wildcard value is chosen, a program sending messages to the named socket must specify a valid network address. One can be willing to receive from ``anywhere,'' but one cannot send a message ``anywhere.'' The program in Figure 6b is given the destination host name as a command line argument. To determine a network address to which it can send the message, it looks up the host address by the call to \fIgethostbyname()\fP. The returned structure includes the host's network address, which is copied into the structure specifying the destination of the message. .pp The port number can be thought of as the number of a mailbox, into which the protocol places one's messages. Certain daemons, offering certain advertised services, have reserved or ``well-known'' port numbers. These fall in the range from 1 to 1023. Higher numbers are available to general users. Only servers need to ask for a particular number. The system will assign an unused port number when an address is bound to a socket. This may happen when an explicit \fIbind\fP call is made with a port number of 0, or when a \fIconnect\fP or \fIsend\fP is performed on an unbound socket. Note that port numbers are not automatically reported back to the user. After calling \fIbind(),\fP asking for port 0, one may call \fIgetsockname()\fP to discover what port was actually assigned. The routine \fIgetsockname()\fP will not work for names in the UNIX domain. .pp The format of the socket address is specified in part by standards within the Internet domain. The specification includes the order of the bytes in the address. Because machines differ in the internal representation they ordinarily use to represent integers, printing out the port number as returned by \fIgetsockname()\fP may result in a misinterpretation. To print out the number, it is necessary to use the routine \fIntohs()\fP (for \fInetwork to host: short\fP) to convert the number from the network representation to the host's representation. On some machines, such as 68000-based machines, this is a null operation. On others, such as VAXes, this results in a swapping of bytes. Another routine exists to convert a short integer from the host format to the network format, called \fIhtons()\fP; similar routines exist for long integers. For further information, refer to the entry for \fIbyteorder\fP in section 3 of the manual. .b .sh 1 "Connections" .r .pp To send data between stream sockets (having communication style SOCK_STREAM), the sockets must be connected. Figures 7a and 7b show two programs that create such a connection. The program in 7a is relatively simple. To initiate a connection, this program simply creates a stream socket, then calls \fIconnect()\fP, specifying the address of the socket to which it wishes its socket connected. Provided that the target socket exists and is prepared to handle a connection, connection will be complete, and the program can begin to send messages. Messages will be delivered in order without message boundaries, as with pipes. The connection is destroyed when either socket is closed (or soon thereafter). If a process persists in sending messages after the connection is closed, a SIGPIPE signal is sent to the process by the operating system. Unless explicit action is taken to handle the signal (see the manual page for \fIsignal\fP or \fIsigvec\fP), the process will terminate and the shell will print the message ``broken pipe.'' .(z .ft CW .so streamwrite.c .ft .ce 1 Figure 7a\ \ Initiating an Internet domain stream connection .)z .(z .ft CW .so streamread.c .ft .ce 1 Figure 7b\ \ Accepting an Internet domain stream connection .sp 2 .ft CW .so strchkread.c .ft .ce 1 Figure 7c\ \ Using select() to check for pending connections .)z .(z - .bl 5.8i - .\" accept.grn goes here .sp .ce 1 Figure 8\ \ Establishing a stream connection .)z .pp Forming a connection is asymmetrical; one process, such as the program in Figure 7a, requests a connection with a particular socket, the other process accepts connection requests. Before a connection can be accepted a socket must be created and an address bound to it. This situation is illustrated in the top half of Figure 8. Process 2 has created a socket and bound a port number to it. Process 1 has created an unnamed socket. The address bound to process 2's socket is then made known to process 1 and, perhaps to several other potential communicants as well. If there are several possible communicants, this one socket might receive several requests for connections. As a result, a new socket is created for each connection. This new socket is the endpoint for communication within this process for this connection. A connection may be destroyed by closing the corresponding socket. .pp The program in Figure 7b is a rather trivial example of a server. It creates a socket to which it binds a name, which it then advertises. (In this case it prints out the socket number.) The program then calls \fIlisten()\fP for this socket. Since several clients may attempt to connect more or less simultaneously, a queue of pending connections is maintained in the system address space. \fIListen()\fP marks the socket as willing to accept connections and initializes the queue. When a connection is requested, it is listed in the queue. If the queue is full, an error status may be returned to the requester. The maximum length of this queue is specified by the second argument of \fIlisten()\fP; the maximum length is limited by the system. Once the listen call has been completed, the program enters an infinite loop. On each pass through the loop, a new connection is accepted and removed from the queue, and, hence, a new socket for the connection is created. The bottom half of Figure 8 shows the result of Process 1 connecting with the named socket of Process 2, and Process 2 accepting the connection. After the connection is created, the service, in this case printing out the messages, is performed and the connection socket closed. The \fIaccept()\fP call will take a pending connection request from the queue if one is available, or block waiting for a request. Messages are read from the connection socket. Reads from an active connection will normally block until data is available. The number of bytes read is returned. When a connection is destroyed, the read call returns immediately. The number of bytes returned will be zero. .pp The program in Figure 7c is a slight variation on the server in Figure 7b. It avoids blocking when there are no pending connection requests by calling \fIselect()\fP to check for pending requests before calling \fIaccept().\fP This strategy is useful when connections may be received on more than one socket, or when data may arrive on other connected sockets before another connection request. .pp The programs in Figures 9a and 9b show a program using stream communication in the UNIX domain. Streams in the UNIX domain can be used for this sort of program in exactly the same way as Internet domain streams, except for the form of the names and the restriction of the connections to a single file system. There are some differences, however, in the functionality of streams in the two domains, notably in the handling of \fIout-of-band\fP data (discussed briefly below). These differences are beyond the scope of this paper. .(z .ft CW .so ustreamwrite.c .ft .ce 1 Figure 9a\ \ Initiating a UNIX domain stream connection .sp 2 .ft CW .so ustreamread.c .ft .ce 1 Figure 9b\ \ Accepting a UNIX domain stream connection .)z .b .sh 1 "Reads, Writes, Recvs, etc." .r .pp UNIX 4.3BSD has several system calls for reading and writing information. The simplest calls are \fIread() \fP and \fIwrite().\fP \fIWrite()\fP takes as arguments the index of a descriptor, a pointer to a buffer containing the data and the size of the data. The descriptor may indicate either a file or a connected socket. ``Connected'' can mean either a connected stream socket (as described in Section 8) or a datagram socket for which a \fIconnect()\fP call has provided a default destination (see the \fIconnect()\fP manual page). \fIRead()\fP also takes a descriptor that indicates either a file or a socket. \fIWrite()\fP requires a connected socket since no destination is specified in the parameters of the system call. \fIRead()\fP can be used for either a connected or an unconnected socket. These calls are, therefore, quite flexible and may be used to write applications that require no assumptions about the source of their input or the destination of their output. There are variations on \fIread() \fP and \fIwrite()\fP that allow the source and destination of the input and output to use several separate buffers, while retaining the flexibility to handle both files and sockets. These are \fIreadv()\fP and \fI writev(),\fP for read and write \fIvector.\fP .pp It is sometimes necessary to send high priority data over a connection that may have unread low priority data at the other end. For example, a user interface process may be interpreting commands and sending them on to another process through a stream connection. The user interface may have filled the stream with as yet unprocessed requests when the user types a command to cancel all outstanding requests. Rather than have the high priority data wait to be processed after the low priority data, it is possible to send it as \fIout-of-band\fP (OOB) data. The notification of pending OOB data results in the generation of a SIGURG signal, if this signal has been enabled (see the manual page for \fIsignal\fP or \fIsigvec\fP). See [Leffler 1986] for a more complete description of the OOB mechanism. There are a pair of calls similar to \fIread\fP and \fIwrite\fP that allow options, including sending and receiving OOB information; these are \fI send()\fP and \fIrecv().\fP These calls are used only with sockets; specifying a descriptor for a file will result in the return of an error status. These calls also allow \fIpeeking\fP at data in a stream. That is, they allow a process to read data without removing the data from the stream. One use of this facility is to read ahead in a stream to determine the size of the next item to be read. When not using these options, these calls have the same functions as \fIread()\fP and \fIwrite().\fP .pp To send datagrams, one must be allowed to specify the destination. The call \fIsendto()\fP takes a destination address as an argument and is therefore used for sending datagrams. The call \fIrecvfrom()\fP is often used to read datagrams, since this call returns the address of the sender, if it is available, along with the data. If the identity of the sender does not matter, one may use \fIread()\fP or \fIrecv().\fP .pp Finally, there are a pair of calls that allow the sending and receiving of messages from multiple buffers, when the address of the recipient must be specified. These are \fIsendmsg()\fP and \fIrecvmsg().\fP These calls are actually quite general and have other uses, including, in the UNIX domain, the transmission of a file descriptor from one process to another. .pp The various options for reading and writing are shown in Figure 10, together with their parameters. The parameters for each system call reflect the differences in function of the different calls. In the examples given in this paper, the calls \fIread()\fP and \fIwrite()\fP have been used whenever possible. .(z .ft CW /* * The variable descriptor may be the descriptor of either a file * or of a socket. */ cc = read(descriptor, buf, nbytes) int cc, descriptor; char *buf; int nbytes; /* * An iovec can include several source buffers. */ cc = readv(descriptor, iov, iovcnt) int cc, descriptor; struct iovec *iov; int iovcnt; cc = write(descriptor, buf, nbytes) int cc, descriptor; char *buf; int nbytes; cc = writev(descriptor, iovec, ioveclen) int cc, descriptor; struct iovec *iovec; int ioveclen; /* * The variable ``sock'' must be the descriptor of a socket. * Flags may include MSG_OOB and MSG_PEEK. */ cc = send(sock, msg, len, flags) int cc, sock; char *msg; int len, flags; cc = sendto(sock, msg, len, flags, to, tolen) int cc, sock; char *msg; int len, flags; struct sockaddr *to; int tolen; cc = sendmsg(sock, msg, flags) int cc, sock; struct msghdr msg[]; int flags; cc = recv(sock, buf, len, flags) int cc, sock; char *buf; int len, flags; cc = recvfrom(sock, buf, len, flags, from, fromlen) int cc, sock; char *buf; int len, flags; struct sockaddr *from; int *fromlen; cc = recvmsg(sock, msg, flags) int cc, socket; struct msghdr msg[]; int flags; .ft .sp 1 .ce 1 Figure 10\ \ Varieties of read and write commands .)z .b .sh 1 "Choices" .r .pp This paper has presented examples of some of the forms of communication supported by Berkeley UNIX 4.3BSD. These have been presented in an order chosen for ease of presentation. It is useful to review these options emphasizing the factors that make each attractive. .pp Pipes have the advantage of portability, in that they are supported in all UNIX systems. They also are relatively simple to use. Socketpairs share this simplicity and have the additional advantage of allowing bidirectional communication. The major shortcoming of these mechanisms is that they require communicating processes to be descendants of a common process. They do not allow intermachine communication. .pp The two communication domains, UNIX and Internet, allow processes with no common ancestor to communicate. Of the two, only the Internet domain allows communication between machines. This makes the Internet domain a necessary choice for processes running on separate machines. .pp The choice between datagrams and stream communication is best made by carefully considering the semantic and performance requirements of the application. Streams can be both advantageous and disadvantageous. One disadvantage is that a process is only allowed a limited number of open streams, as there are usually only 64 entries available in the open descriptor table. This can cause problems if a single server must talk with a large number of clients. Another is that for delivering a short message the stream setup and teardown time can be unnecessarily long. Weighed against this are the reliability built into the streams. This will often be the deciding factor in favor of streams. .b .sh 1 "What to do Next" .r .pp Many of the examples presented here can serve as models for multiprocess programs and for programs distributed across several machines. In developing a new multiprocess program, it is often easiest to first write the code to create the processes and communication paths. After this code is debugged, the code specific to the application can be added. .pp An introduction to the UNIX system and programming using UNIX system calls can be found in [Kernighan and Pike 1984]. Further documentation of the Berkeley UNIX 4.3BSD IPC mechanisms can be found in [Leffler et al. 1986]. More detailed information about particular calls and protocols is provided in sections 2, 3 and 4 of the UNIX Programmer's Manual [CSRG 1986]. In particular the following manual pages are relevant: .(b .TS l l. creating and naming sockets socket(2), bind(2) establishing connections listen(2), accept(2), connect(2) transferring data read(2), write(2), send(2), recv(2) addresses inet(4F) protocols tcp(4P), udp(4P). .TE .)b .(b .sp .b Acknowledgements .pp I would like to thank Sam Leffler and Mike Karels for their help in understanding the IPC mechanisms and all the people whose comments have helped in writing and improving this report. .pp This work was sponsored by the Defense Advanced Research Projects Agency (DoD), ARPA Order No. 4031, monitored by the Naval Electronics Systems Command under contract No. N00039-C-0235. The views and conclusions contained in this document are those of the author and should not be interpreted as representing official policies, either expressed or implied, of the Defense Research Projects Agency or of the US Government. .)b .(b .sp .b References .r .sp .ls 1 B.W. Kernighan & R. Pike, 1984, .i "The UNIX Programming Environment." Englewood Cliffs, N.J.: Prentice-Hall. .sp .ls 1 B.W. Kernighan & D.M. Ritchie, 1978, .i "The C Programming Language," Englewood Cliffs, N.J.: Prentice-Hall. .sp .ls 1 S.J. Leffler, R.S. Fabry, W.N. Joy, P. Lapsley, S. Miller & C. Torek, 1986, .i "An Advanced 4.3BSD Interprocess Communication Tutorial." Computer Systems Research Group, Department of Electrical Engineering and Computer Science, University of California, Berkeley. .sp .ls 1 Computer Systems Research Group, 1986, .i "UNIX Programmer's Manual, 4.3 Berkeley Software Distribution." Computer Systems Research Group, Department of Electrical Engineering and Computer Science, University of California, Berkeley. .)b doc/ps1/07.ipctut/udgramread.c 444 3 12 2305 3660217712 11321 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)udgramread.c 6.3 (Berkeley) 5/8/86 .\" #include #include #include /* * In the included file a sockaddr_un is defined as follows * struct sockaddr_un { * short sun_family; * char sun_path[108]; * }; */ #include #define NAME "socket" /* * This program creates a UNIX domain datagram socket, binds a name to it, * then reads from the socket. */ main() { int sock, length; struct sockaddr_un name; char buf[1024]; /* Create socket from which to read. */ sock = socket(AF_UNIX, SOCK_DGRAM, 0); if (sock < 0) { perror("opening datagram socket"); exit(1); } /* Create name. */ name.sun_family = AF_UNIX; strcpy(name.sun_path, NAME); if (bind(sock, &name, sizeof(struct sockaddr_un))) { perror("binding name to datagram socket"); exit(1); } printf("socket -->%s\en", NAME); /* Read from the socket */ if (read(sock, buf, 1024) < 0) perror("receiving datagram packet"); printf("-->%s\en", buf); close(sock); unlink(NAME); } hat make each attractive. .pp Pipes have the advantage of portability, in that they are supported in all UNIX systems. They also are relatively simple to use. Socketpairs share this simplicity and have the additional advantage of allowing bidirectional communication. The major shortcoming of these mechanisms isdoc/ps1/07.ipctut/udgramsend.c 444 3 12 2027 3660216327 11341 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)udgramsend.c 6.2 (Berkeley) 5/8/86 .\" #include #include #include #include #define DATA "The sea is calm tonight, the tide is full . . ." /* * Here I send a datagram to a receiver whose name I get from the command * line arguments. The form of the command line is udgramsend pathname */ main(argc, argv) int argc; char *argv[]; { int sock; struct sockaddr_un name; /* Create socket on which to send. */ sock = socket(AF_UNIX, SOCK_DGRAM, 0); if (sock < 0) { perror("opening datagram socket"); exit(1); } /* Construct name of socket to send to. */ name.sun_family = AF_UNIX; strcpy(name.sun_path, argv[1]); /* Send message. */ if (sendto(sock, DATA, sizeof(DATA), 0, &name, sizeof(struct sockaddr_un)) < 0) { perror("sending datagram message"); } close(sock); } -->%s\en", NAME); /* Read from the socket */ if (read(sock, buf, 1024) < 0) perror("receiving datagram packet"); printf("-->%s\en", buf); close(sock); unlink(NAME); } hat make each attractive. .pp Pipes have the advantage of portability, in that they are supported in all UNIX systems. They also are relatively simple to use. Socketpairs share this simplicity and have the additional advantage of allowing bidirectional communication. The major shortcoming of these mechanisms isdoc/ps1/07.ipctut/ustreamread.c 444 3 12 3755 3660216327 11535 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ustreamread.c 6.3 (Berkeley) 5/8/86 .\" #include #include #include #include #define NAME "socket" /* * This program creates a socket in the UNIX domain and binds a name to it. * After printing the socket's name it begins a loop. Each time through the * loop it accepts a connection and prints out messages from it. When the * connection breaks, or a termination message comes through, the program * accepts a new connection. */ main() { int sock, msgsock, rval; struct sockaddr_un server; char buf[1024]; /* Create socket */ sock = socket(AF_UNIX, SOCK_STREAM, 0); if (sock < 0) { perror("opening stream socket"); exit(1); } /* Name socket using file system name */ server.sun_family = AF_UNIX; strcpy(server.sun_path, NAME); if (bind(sock, &server, sizeof(struct sockaddr_un))) { perror("binding stream socket"); exit(1); } printf("Socket has name %s\en", server.sun_path); /* Start accepting connections */ listen(sock, 5); for (;;) { msgsock = accept(sock, 0, 0); if (msgsock == -1) perror("accept"); else do { bzero(buf, sizeof(buf)); if ((rval = read(msgsock, buf, 1024)) < 0) perror("reading stream message"); else if (rval == 0) printf("Ending connection\en"); else printf("-->%s\en", buf); } while (rval > 0); close(msgsock); } /* * The following statements are not executed, because they follow an * infinite loop. However, most ordinary programs will not run * forever. In the UNIX domain it is necessary to tell the file * system that one is through using NAME. In most programs one uses * the call unlink() as below. Since the user will have to kill this * program, it will be necessary to remove the name by a command from * the shell. */ close(sock); unlink(NAME); } these mechanisms isdoc/ps1/07.ipctut/ustreamwrite.c 444 3 12 2146 3660216330 11737 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ustreamwrite.c 6.3 (Berkeley) 5/8/86 .\" #include #include #include #include #define DATA "Half a league, half a league . . ." /* * This program connects to the socket named in the command line and sends a * one line message to that socket. The form of the command line is * ustreamwrite pathname */ main(argc, argv) int argc; char *argv[]; { int sock; struct sockaddr_un server; char buf[1024]; /* Create socket */ sock = socket(AF_UNIX, SOCK_STREAM, 0); if (sock < 0) { perror("opening stream socket"); exit(1); } /* Connect socket using name specified by command line. */ server.sun_family = AF_UNIX; strcpy(server.sun_path, argv[1]); if (connect(sock, &server, sizeof(struct sockaddr_un)) < 0) { close(sock); perror("connecting stream socket"); exit(1); } if (write(sock, DATA, sizeof(DATA)) < 0) perror("writing on stream socket"); } infinite loop. However, most ordinary programs will not run * forever. In the UNIX domain it is necessary to tell the file * system that one is through using NAME. In most programs one uses * the call unlink() as below. Since the user will have to kill this * program, it will be necessary to remove the name by a command from * the shell. */ close(sock); unlink(NAME); } these mechanisms isdoc/ps1/07.ipctut/Makefile 444 3 12 1366 3657516514 10520 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.2 (Berkeley) 5/6/86 # SRCS= tutor.me GSRCS= gremlins MACROS= -me PRINTER=Pdp SOELIM= soelim TBL= dtbl -${PRINTER} TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} pics.Pip lpr -${PRINTER} -n paper.${PRINTER} lpr -Pip -n pics.Pip paper.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${TROFF} ${MACROS} -t > paper.${PRINTER} pics.Pip: ${GSRCS} grn -Pip ${GSRCS} | ditroff -Pip -t >pics.Pip clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done tream socket"); exit(1); } /* Connect socket using name specified by command line. */ server.sun_family = AF_UNIX; strcpy(server.sun_path, argv[1]); if (connect(sock, &server, sizeof(struct sockaddr_un)) < 0) { close(sock); perror("connecting stream sockdoc/ps1/07.ipctut/accept.grn 444 3 12 11330 3656771163 11041 gremlinfile 1 208.00 256.00 3 208.00 256.00 448.00 256.00 -1.00 -1.00 1 0 0 3 328.00 56.00 320.41 64.85 322.31 57.90 316.62 53.47 328.00 56.00 -1.00 -1.00 6 0 0 3 272.00 56.00 280.46 47.97 277.86 54.70 283.06 59.69 272.00 56.00 -1.00 -1.00 6 0 0 4 249.60 438.40 272.00 438.40 249.60 460.80 249.60 416.00 272.00 438.40 227.20 438.40 -1.00 -1.00 6 0 0 3 224.00 400.00 224.00 336.00 275.20 336.00 275.20 400.00 224.00 400.00 -1.00 -1.00 6 0 0 3 249.60 400.00 249.60 416.00 -1.00 -1.00 6 0 0 3 224.00 387.20 275.20 387.20 275.20 374.40 224.00 374.40 224.00 361.60 275.20 361.60 275.20 348.80 224.00 348.80 -1.00 -1.00 6 0 0 4 268.80 380.80 265.60 380.80 268.80 384.00 268.80 377.60 272.00 380.80 265.60 380.80 -1.00 -1.00 6 0 0 5 272.00 380.80 297.60 377.60 300.80 352.00 284.80 326.40 275.20 316.80 -1.00 -1.00 6 0 0 3 275.20 316.80 284.25 319.06 278.59 320.19 277.46 325.85 275.20 316.80 -1.00 -1.00 6 0 0 4 249.60 291.20 249.60 307.20 249.60 307.20 249.60 275.20 265.60 291.20 233.60 291.20 -1.00 -1.00 6 0 0 4 401.60 291.20 401.60 307.20 401.60 307.20 401.60 275.20 417.60 291.20 385.60 291.20 -1.00 -1.00 6 0 0 4 393.60 438.40 416.00 438.40 393.60 460.80 393.60 416.00 416.00 438.40 371.20 438.40 -1.00 -1.00 6 0 0 3 368.00 400.00 368.00 336.00 419.20 336.00 419.20 400.00 368.00 400.00 -1.00 -1.00 6 0 0 3 393.60 400.00 393.60 416.00 -1.00 -1.00 6 0 0 3 368.00 387.20 419.20 387.20 419.20 374.40 368.00 374.40 368.00 361.60 419.20 361.60 419.20 348.80 368.00 348.80 -1.00 -1.00 6 0 0 4 376.80 368.80 373.60 368.80 376.80 372.00 376.80 365.60 380.00 368.80 373.60 368.80 -1.00 -1.00 6 0 0 5 372.00 368.00 352.00 364.00 340.00 348.00 372.00 308.00 -1.00 -1.00 6 0 0 3 372.00 308.00 367.60 318.80 367.20 311.60 360.40 309.20 372.00 308.00 -1.00 -1.00 6 0 0 3 412.00 304.00 436.00 336.00 -1.00 -1.00 6 0 0 5 436.00 336.00 456.00 332.00 476.00 336.00 488.00 332.00 -1.00 -1.00 6 0 0 5 424.00 316.00 448.00 312.00 472.00 316.00 488.00 312.00 -1.00 -1.00 6 0 0 3 488.00 312.00 480.00 324.00 488.00 332.00 -1.00 -1.00 6 0 0 4 249.60 214.40 272.00 214.40 249.60 236.80 249.60 192.00 272.00 214.40 227.20 214.40 -1.00 -1.00 6 0 0 3 224.00 176.00 224.00 112.00 275.20 112.00 275.20 176.00 224.00 176.00 -1.00 -1.00 6 0 0 3 249.60 176.00 249.60 192.00 -1.00 -1.00 6 0 0 3 224.00 163.20 275.20 163.20 275.20 150.40 224.00 150.40 224.00 137.60 275.20 137.60 275.20 124.80 224.00 124.80 -1.00 -1.00 6 0 0 4 268.80 156.80 265.60 156.80 268.80 160.00 268.80 153.60 272.00 156.80 265.60 156.80 -1.00 -1.00 6 0 0 5 272.00 156.80 297.60 153.60 300.80 128.00 284.80 102.40 275.20 92.80 -1.00 -1.00 6 0 0 3 275.20 92.80 284.25 95.06 278.59 96.19 277.46 101.85 275.20 92.80 -1.00 -1.00 6 0 0 4 249.60 67.20 249.60 83.20 249.60 83.20 249.60 51.20 265.60 67.20 233.60 67.20 -1.00 -1.00 6 0 0 4 401.60 67.20 401.60 83.20 401.60 83.20 401.60 51.20 417.60 67.20 385.60 67.20 -1.00 -1.00 6 0 0 4 393.60 214.40 416.00 214.40 393.60 236.80 393.60 192.00 416.00 214.40 371.20 214.40 -1.00 -1.00 6 0 0 3 368.00 176.00 368.00 112.00 419.20 112.00 419.20 176.00 368.00 176.00 -1.00 -1.00 6 0 0 3 393.60 176.00 393.60 192.00 -1.00 -1.00 6 0 0 3 368.00 163.20 419.20 163.20 419.20 150.40 368.00 150.40 368.00 137.60 419.20 137.60 419.20 124.80 368.00 124.80 -1.00 -1.00 6 0 0 4 376.80 144.80 373.60 144.80 376.80 148.00 376.80 141.60 380.00 144.80 373.60 144.80 -1.00 -1.00 6 0 0 5 372.00 144.00 352.00 140.00 340.00 124.00 372.00 84.00 -1.00 -1.00 6 0 0 3 372.00 84.00 367.60 94.80 367.20 87.60 360.40 85.20 372.00 84.00 -1.00 -1.00 6 0 0 3 412.00 80.00 436.00 112.00 -1.00 -1.00 6 0 0 5 436.00 112.00 456.00 108.00 476.00 112.00 488.00 108.00 -1.00 -1.00 6 0 0 5 424.00 92.00 448.00 88.00 472.00 92.00 488.00 88.00 -1.00 -1.00 6 0 0 3 488.00 88.00 480.00 100.00 488.00 108.00 -1.00 -1.00 6 0 0 4 337.60 47.20 337.60 63.20 337.60 63.20 337.60 31.20 353.60 47.20 321.60 47.20 -1.00 -1.00 6 0 0 4 376.80 132.80 373.60 132.80 376.80 136.00 376.80 129.60 380.00 132.80 373.60 132.80 -1.00 -1.00 6 0 0 5 372.00 132.00 360.00 132.00 336.00 120.00 332.00 80.00 -1.00 -1.00 6 0 0 3 332.00 80.00 335.40 91.16 330.54 85.82 323.75 88.25 332.00 80.00 -1.00 -1.00 6 0 0 3 268.00 68.00 316.00 56.00 -1.00 -1.00 4 0 0 3 268.00 56.00 320.00 44.00 -1.00 -1.00 4 0 0 0 232.00 464.00 232.00 464.00 262.00 464.00 292.00 464.00 -1.00 -1.00 1 1 9 Process 1 0 380.00 464.00 380.00 464.00 410.00 464.00 440.00 464.00 -1.00 -1.00 1 1 9 Process 2 0 236.00 240.00 236.00 240.00 266.00 240.00 296.00 240.00 -1.00 -1.00 1 1 9 Process 1 0 380.00 240.00 380.00 240.00 410.00 240.00 440.00 240.00 -1.00 -1.00 1 1 9 Process 2 0 440.00 320.00 440.00 320.00 455.00 320.00 470.00 320.00 -1.00 -1.00 1 1 4 NAME 0 440.00 96.00 440.00 96.00 455.00 96.00 470.00 96.00 -1.00 -1.00 1 1 4 NAME -1 69 272.00 56.00 -1.00 -1.00 6 0 0 4 249.60 438.40 272.00 438.40 249.60 460.80 249.60 416.00 272.00 438.40 227.20 438.40 -1.00 -1.00 6 0 0 3 224.00 400.00 224.00 336.00 275.20 336.00 275.20 400.00 224.00 400.00 -1.00 -1.00 6 0 0 3 249.60 400.00 249.60 416.00 -1.00 -1.00 6 0 0 3 224.00 387doc/ps1/07.ipctut/pipe.grn 444 3 12 7776 3656771165 10544 gremlinfile 1 208.00 256.00 3 208.00 256.00 432.00 256.00 -1.00 -1.00 1 0 0 0 384.00 244.00 384.00 244.00 402.00 244.00 420.00 244.00 -1.00 -1.00 1 1 5 child 0 232.00 244.00 232.00 244.00 253.00 244.00 274.00 244.00 -1.00 -1.00 1 1 6 parent 0 232.00 468.00 232.00 468.00 253.00 468.00 274.00 468.00 -1.00 -1.00 1 1 6 parent 3 340.00 104.00 339.45 115.65 336.67 108.99 329.46 108.99 340.00 104.00 -1.00 -1.00 6 0 0 3 300.00 100.00 309.84 106.26 302.68 105.37 299.11 111.63 300.00 100.00 -1.00 -1.00 6 0 0 4 376.80 169.60 373.60 169.60 376.80 172.80 376.80 166.40 380.00 169.60 373.60 169.60 -1.00 -1.00 6 0 0 4 376.80 156.80 373.60 156.80 376.80 160.00 376.80 153.60 380.00 156.80 373.60 156.80 -1.00 -1.00 6 0 0 3 368.00 163.20 419.20 163.20 419.20 150.40 368.00 150.40 368.00 137.60 419.20 137.60 419.20 124.80 368.00 124.80 -1.00 -1.00 6 0 0 3 393.60 176.00 393.60 192.00 -1.00 -1.00 6 0 0 3 368.00 176.00 368.00 112.00 419.20 112.00 419.20 176.00 368.00 176.00 -1.00 -1.00 6 0 0 4 393.60 214.40 416.00 214.40 393.60 236.80 393.60 192.00 416.00 214.40 371.20 214.40 -1.00 -1.00 6 0 0 3 358.40 108.80 359.12 118.10 356.25 113.09 350.53 113.81 358.40 108.80 -1.00 -1.00 6 0 0 5 272.00 169.60 297.60 169.60 323.20 160.00 358.40 108.80 -1.00 -1.00 6 0 0 4 268.80 169.60 265.60 169.60 268.80 172.80 268.80 166.40 272.00 169.60 265.60 169.60 -1.00 -1.00 6 0 0 3 352.00 51.20 249.60 51.20 -1.00 -1.00 6 0 0 3 249.60 83.20 352.00 83.20 -1.00 -1.00 6 0 0 4 352.00 67.20 352.00 51.20 352.00 83.20 -1.00 -1.00 6 180 0 4 249.60 67.20 249.60 83.20 249.60 83.20 249.60 51.20 265.60 67.20 233.60 67.20 -1.00 -1.00 6 0 0 3 275.20 92.80 284.25 95.06 278.59 96.19 277.46 101.85 275.20 92.80 -1.00 -1.00 6 0 0 5 272.00 156.80 297.60 153.60 300.80 128.00 284.80 102.40 275.20 92.80 -1.00 -1.00 6 0 0 4 268.80 156.80 265.60 156.80 268.80 160.00 268.80 153.60 272.00 156.80 265.60 156.80 -1.00 -1.00 6 0 0 3 224.00 163.20 275.20 163.20 275.20 150.40 224.00 150.40 224.00 137.60 275.20 137.60 275.20 124.80 224.00 124.80 -1.00 -1.00 6 0 0 3 249.60 176.00 249.60 192.00 -1.00 -1.00 6 0 0 3 224.00 176.00 224.00 112.00 275.20 112.00 275.20 176.00 224.00 176.00 -1.00 -1.00 6 0 0 4 249.60 214.40 272.00 214.40 249.60 236.80 249.60 192.00 272.00 214.40 227.20 214.40 -1.00 -1.00 6 0 0 3 358.40 332.80 359.12 342.10 356.25 337.09 350.53 337.81 358.40 332.80 -1.00 -1.00 6 0 0 5 272.00 393.60 297.60 393.60 323.20 384.00 358.40 332.80 -1.00 -1.00 6 0 0 4 268.80 393.60 265.60 393.60 268.80 396.80 268.80 390.40 272.00 393.60 265.60 393.60 -1.00 -1.00 6 0 0 3 352.00 275.20 249.60 275.20 -1.00 -1.00 6 0 0 3 249.60 307.20 352.00 307.20 -1.00 -1.00 6 0 0 4 352.00 291.20 352.00 275.20 352.00 307.20 -1.00 -1.00 6 180 0 4 249.60 291.20 249.60 307.20 249.60 307.20 249.60 275.20 265.60 291.20 233.60 291.20 -1.00 -1.00 6 0 0 3 275.20 316.80 284.25 319.06 278.59 320.19 277.46 325.85 275.20 316.80 -1.00 -1.00 6 0 0 5 272.00 380.80 297.60 377.60 300.80 352.00 284.80 326.40 275.20 316.80 -1.00 -1.00 6 0 0 4 268.80 380.80 265.60 380.80 268.80 384.00 268.80 377.60 272.00 380.80 265.60 380.80 -1.00 -1.00 6 0 0 3 224.00 387.20 275.20 387.20 275.20 374.40 224.00 374.40 224.00 361.60 275.20 361.60 275.20 348.80 224.00 348.80 -1.00 -1.00 6 0 0 3 249.60 400.00 249.60 416.00 -1.00 -1.00 6 0 0 3 224.00 400.00 224.00 336.00 275.20 336.00 275.20 400.00 224.00 400.00 -1.00 -1.00 6 0 0 4 249.60 438.40 272.00 438.40 249.60 460.80 249.60 416.00 272.00 438.40 227.20 438.40 -1.00 -1.00 6 0 0 3 272.00 292.00 284.00 300.00 284.00 296.00 304.00 296.00 304.00 288.00 284.00 288.00 284.00 284.00 272.00 292.00 -1.00 -1.00 6 0 0 3 272.00 68.00 284.00 76.00 284.00 72.00 304.00 72.00 304.00 64.00 284.00 64.00 284.00 60.00 272.00 68.00 -1.00 -1.00 6 0 0 0 316.00 64.00 316.00 64.00 331.00 64.00 346.00 64.00 -1.00 -1.00 1 1 4 PIPE 0 316.00 288.00 316.00 288.00 331.00 288.00 346.00 288.00 -1.00 -1.00 1 1 4 PIPE 5 372.00 156.00 348.00 156.00 300.00 100.00 -1.00 -1.00 6 0 0 5 372.00 168.00 332.00 160.00 324.00 136.00 340.00 104.00 -1.00 -1.00 6 0 0 -1 00doc/ps1/07.ipctut/gremlins 444 3 12 572 3656771076 10606 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)gremlins 6.1 (Berkeley) 5/4/86 .\" .sp |1i .GS C height 6i file pipe.grn .GE .bp .sp |1i .GS C height 6i file socketpair.grn .GE .bp .sp |1i .GS C height 6i file accept.grn .GE doc/ps1/07.ipctut/socketpair.grn 444 3 12 10015 3656771170 11743 gremlinfile 1 208.00 256.00 3 208.00 256.00 432.00 256.00 -1.00 -1.00 1 0 0 3 332.00 284.00 320.33 291.00 325.00 284.00 320.33 277.00 332.00 284.00 -1.00 -1.00 6 0 0 3 272.00 296.00 282.00 290.00 278.00 296.00 282.00 302.00 272.00 296.00 -1.00 -1.00 6 0 0 3 264.00 284.00 328.00 284.00 -1.00 -1.00 4 0 0 3 272.00 296.00 336.00 296.00 -1.00 -1.00 4 0 0 3 332.00 60.00 320.33 67.00 325.00 60.00 320.33 53.00 332.00 60.00 -1.00 -1.00 6 0 0 3 272.00 72.00 282.00 66.00 278.00 72.00 282.00 78.00 272.00 72.00 -1.00 -1.00 6 0 0 3 264.00 60.00 328.00 60.00 -1.00 -1.00 4 0 0 3 272.00 72.00 336.00 72.00 -1.00 -1.00 4 0 0 0 384.00 244.00 384.00 244.00 402.00 244.00 420.00 244.00 -1.00 -1.00 1 1 5 child 4 353.60 67.20 353.60 83.20 353.60 83.20 353.60 51.20 369.60 67.20 337.60 67.20 -1.00 -1.00 6 0 0 4 249.60 67.20 249.60 83.20 249.60 83.20 249.60 51.20 265.60 67.20 233.60 67.20 -1.00 -1.00 6 0 0 4 353.60 291.20 353.60 307.20 353.60 307.20 353.60 275.20 369.60 291.20 337.60 291.20 -1.00 -1.00 6 0 0 0 232.00 244.00 232.00 244.00 253.00 244.00 274.00 244.00 -1.00 -1.00 1 1 6 parent 0 232.00 468.00 232.00 468.00 253.00 468.00 274.00 468.00 -1.00 -1.00 1 1 6 parent 3 340.00 104.00 339.45 115.65 336.67 108.99 329.46 108.99 340.00 104.00 -1.00 -1.00 6 0 0 3 300.00 100.00 309.84 106.26 302.68 105.37 299.11 111.63 300.00 100.00 -1.00 -1.00 6 0 0 4 376.80 169.60 373.60 169.60 376.80 172.80 376.80 166.40 380.00 169.60 373.60 169.60 -1.00 -1.00 6 0 0 4 376.80 156.80 373.60 156.80 376.80 160.00 376.80 153.60 380.00 156.80 373.60 156.80 -1.00 -1.00 6 0 0 3 368.00 163.20 419.20 163.20 419.20 150.40 368.00 150.40 368.00 137.60 419.20 137.60 419.20 124.80 368.00 124.80 -1.00 -1.00 6 0 0 3 393.60 176.00 393.60 192.00 -1.00 -1.00 6 0 0 3 368.00 176.00 368.00 112.00 419.20 112.00 419.20 176.00 368.00 176.00 -1.00 -1.00 6 0 0 4 393.60 214.40 416.00 214.40 393.60 236.80 393.60 192.00 416.00 214.40 371.20 214.40 -1.00 -1.00 6 0 0 3 358.40 108.80 359.12 118.10 356.25 113.09 350.53 113.81 358.40 108.80 -1.00 -1.00 6 0 0 5 272.00 169.60 297.60 169.60 323.20 160.00 358.40 108.80 -1.00 -1.00 6 0 0 4 268.80 169.60 265.60 169.60 268.80 172.80 268.80 166.40 272.00 169.60 265.60 169.60 -1.00 -1.00 6 0 0 3 275.20 92.80 284.25 95.06 278.59 96.19 277.46 101.85 275.20 92.80 -1.00 -1.00 6 0 0 5 272.00 156.80 297.60 153.60 300.80 128.00 284.80 102.40 275.20 92.80 -1.00 -1.00 6 0 0 4 268.80 156.80 265.60 156.80 268.80 160.00 268.80 153.60 272.00 156.80 265.60 156.80 -1.00 -1.00 6 0 0 3 224.00 163.20 275.20 163.20 275.20 150.40 224.00 150.40 224.00 137.60 275.20 137.60 275.20 124.80 224.00 124.80 -1.00 -1.00 6 0 0 3 249.60 176.00 249.60 192.00 -1.00 -1.00 6 0 0 3 224.00 176.00 224.00 112.00 275.20 112.00 275.20 176.00 224.00 176.00 -1.00 -1.00 6 0 0 4 249.60 214.40 272.00 214.40 249.60 236.80 249.60 192.00 272.00 214.40 227.20 214.40 -1.00 -1.00 6 0 0 3 358.40 332.80 359.12 342.10 356.25 337.09 350.53 337.81 358.40 332.80 -1.00 -1.00 6 0 0 5 272.00 393.60 297.60 393.60 323.20 384.00 358.40 332.80 -1.00 -1.00 6 0 0 4 268.80 393.60 265.60 393.60 268.80 396.80 268.80 390.40 272.00 393.60 265.60 393.60 -1.00 -1.00 6 0 0 4 249.60 291.20 249.60 307.20 249.60 307.20 249.60 275.20 265.60 291.20 233.60 291.20 -1.00 -1.00 6 0 0 3 275.20 316.80 284.25 319.06 278.59 320.19 277.46 325.85 275.20 316.80 -1.00 -1.00 6 0 0 5 272.00 380.80 297.60 377.60 300.80 352.00 284.80 326.40 275.20 316.80 -1.00 -1.00 6 0 0 4 268.80 380.80 265.60 380.80 268.80 384.00 268.80 377.60 272.00 380.80 265.60 380.80 -1.00 -1.00 6 0 0 3 224.00 387.20 275.20 387.20 275.20 374.40 224.00 374.40 224.00 361.60 275.20 361.60 275.20 348.80 224.00 348.80 -1.00 -1.00 6 0 0 3 249.60 400.00 249.60 416.00 -1.00 -1.00 6 0 0 3 224.00 400.00 224.00 336.00 275.20 336.00 275.20 400.00 224.00 400.00 -1.00 -1.00 6 0 0 4 249.60 438.40 272.00 438.40 249.60 460.80 249.60 416.00 272.00 438.40 227.20 438.40 -1.00 -1.00 6 0 0 5 372.00 168.00 332.00 164.00 324.00 140.00 340.00 104.00 -1.00 -1.00 6 0 0 5 372.00 156.00 344.00 156.00 300.00 100.00 -1.00 -1.00 6 0 0 -1 00 6 0 0 3 264.00 60.00 328.00 60.00 -1.00 -1.00 4 0 0 3 272.00 72.00 336.00 72.00 -1.00 -1.00 4 0 0 0 384.00 244.00 384.00 244.00 402.00 244.00 420.00 244.00 -1.00 -1.00 1 1 5 child 4 353.60 67.20 353.60 83.20 353.60 83.20 353.60 51.20 369.60 67.20 337.60 67.20 -1.00 -1.00 6 0 0 4 249.60 67.20 249.60 83.20 249.60 83.20 249.60 51.20 265.60 67.20 233.60 67.20 -1.00 -1.00 6 0 0 4 353.60 291.20 353.60 307.20 353.60 307.20 353.60 275.20 369.60 291.20 337.60 291.20 -1.00 -1.00 6 0 0 0 2doc/ps1/09.lint/ 755 3 12 0 3660045377 6425 doc/ps1/09.lint/Makefile 444 3 12 1205 3660045372 10141 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 5/7/86 # SRCS= lint.ms MACROS= -msU PRINTER=Pdp REFER= refer -e -p /usr/doc/run/Ind TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${REFER} ${SRCS} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done 00 384.00 244.00 402.00 244.00 420.00 244.00 -1.00 -1.00 1 1 5 child 4 353.60 67.20 353.60 83.20 353.60 83.20 353.60 51.20 369.60 67.20 337.60 67.20 -1.00 -1.00 6 0 0 4 249.60 67.20 249.60 83.20 249.60 83.20 249.60 51.20 265.60 67.20 233.60 67.20 -1.00 -1.00 6 0 0 4 353.60 291.20 353.60 307.20 353.60 307.20 353.60 275.20 369.60 291.20 337.60 291.20 -1.00 -1.00 6 0 0 0 2doc/ps1/09.lint/lint.ms 444 3 12 77464 3660045352 10052 .\" @(#)lint 6.1 (Berkeley) 5/7/86 .\" .EH 'PS1:9-%''Lint, a C Program Checker' .OH 'Lint, a C Program Checker''PS1:9-%' .\".RP .ND "July 26, 1978" .OK .\"Program Portability .\"Strong Type Checking .TL Lint, a C Program Checker .AU "MH 2C-559" 3968 S. C. Johnson .AI .MH .AB .PP .I Lint is a command which examines C source programs, detecting a number of bugs and obscurities. It enforces the type rules of C more strictly than the C compilers. It may also be used to enforce a number of portability restrictions involved in moving programs between different machines and/or operating systems. Another option detects a number of wasteful, or error prone, constructions which nevertheless are, strictly speaking, legal. .PP .I Lint accepts multiple input files and library specifications, and checks them for consistency. .PP The separation of function between .I lint and the C compilers has both historical and practical rationale. The compilers turn C programs into executable files rapidly and efficiently. This is possible in part because the compilers do not do sophisticated type checking, especially between separately compiled programs. .I Lint takes a more global, leisurely view of the program, looking much more carefully at the compatibilities. .PP This document discusses the use of .I lint , gives an overview of the implementation, and gives some hints on the writing of machine independent C code. .AE .CS 10 2 12 0 0 5 .SH Introduction and Usage .PP Suppose there are two C .[ Kernighan Ritchie Programming Prentice 1978 .] source files, .I file1. c and .I file2.c , which are ordinarily compiled and loaded together. Then the command .DS lint file1.c file2.c .DE produces messages describing inconsistencies and inefficiencies in the programs. The program enforces the typing rules of C more strictly than the C compilers (for both historical and practical reasons) enforce them. The command .DS lint \-p file1.c file2.c .DE will produce, in addition to the above messages, additional messages which relate to the portability of the programs to other operating systems and machines. Replacing the .B \-p by .B \-h will produce messages about various error-prone or wasteful constructions which, strictly speaking, are not bugs. Saying .B \-hp gets the whole works. .PP The next several sections describe the major messages; the document closes with sections discussing the implementation and giving suggestions for writing portable C. An appendix gives a summary of the .I lint options. .SH A Word About Philosophy .PP Many of the facts which .I lint needs may be impossible to discover. For example, whether a given function in a program ever gets called may depend on the input data. Deciding whether .I exit is ever called is equivalent to solving the famous ``halting problem,'' known to be recursively undecidable. .PP Thus, most of the .I lint algorithms are a compromise. If a function is never mentioned, it can never be called. If a function is mentioned, .I lint assumes it can be called; this is not necessarily so, but in practice is quite reasonable. .PP .I Lint tries to give information with a high degree of relevance. Messages of the form ``\fIxxx\fR might be a bug'' are easy to generate, but are acceptable only in proportion to the fraction of real bugs they uncover. If this fraction of real bugs is too small, the messages lose their credibility and serve merely to clutter up the output, obscuring the more important messages. .PP Keeping these issues in mind, we now consider in more detail the classes of messages which .I lint produces. .SH Unused Variables and Functions .PP As sets of programs evolve and develop, previously used variables and arguments to functions may become unused; it is not uncommon for external variables, or even entire functions, to become unnecessary, and yet not be removed from the source. These ``errors of commission'' rarely cause working programs to fail, but they are a source of inefficiency, and make programs harder to understand and change. Moreover, information about such unused variables and functions can occasionally serve to discover bugs; if a function does a necessary job, and is never called, something is wrong! .PP .I Lint complains about variables and functions which are defined but not otherwise mentioned. An exception is variables which are declared through explicit .B extern statements but are never referenced; thus the statement .DS extern float sin(\|); .DE will evoke no comment if .I sin is never used. Note that this agrees with the semantics of the C compiler. In some cases, these unused external declarations might be of some interest; they can be discovered by adding the .B \-x flag to the .I lint invocation. .PP Certain styles of programming require many functions to be written with similar interfaces; frequently, some of the arguments may be unused in many of the calls. The .B \-v option is available to suppress the printing of complaints about unused arguments. When .B \-v is in effect, no messages are produced about unused arguments except for those arguments which are unused and also declared as register arguments; this can be considered an active (and preventable) waste of the register resources of the machine. .PP There is one case where information about unused, or undefined, variables is more distracting than helpful. This is when .I lint is applied to some, but not all, files out of a collection which are to be loaded together. In this case, many of the functions and variables defined may not be used, and, conversely, many functions and variables defined elsewhere may be used. The .B \-u flag may be used to suppress the spurious messages which might otherwise appear. .SH Set/Used Information .PP .I Lint attempts to detect cases where a variable is used before it is set. This is very difficult to do well; many algorithms take a good deal of time and space, and still produce messages about perfectly valid programs. .I Lint detects local variables (automatic and register storage classes) whose first use appears physically earlier in the input file than the first assignment to the variable. It assumes that taking the address of a variable constitutes a ``use,'' since the actual use may occur at any later time, in a data dependent fashion. .PP The restriction to the physical appearance of variables in the file makes the algorithm very simple and quick to implement, since the true flow of control need not be discovered. It does mean that .I lint can complain about some programs which are legal, but these programs would probably be considered bad on stylistic grounds (e.g. might contain at least two \fBgoto\fR's). Because static and external variables are initialized to 0, no meaningful information can be discovered about their uses. The algorithm deals correctly, however, with initialized automatic variables, and variables which are used in the expression which first sets them. .PP The set/used information also permits recognition of those local variables which are set and never used; these form a frequent source of inefficiencies, and may also be symptomatic of bugs. .SH Flow of Control .PP .I Lint attempts to detect unreachable portions of the programs which it processes. It will complain about unlabeled statements immediately following \fBgoto\fR, \fBbreak\fR, \fBcontinue\fR, or \fBreturn\fR statements. An attempt is made to detect loops which can never be left at the bottom, detecting the special cases \fBwhile\fR( 1 ) and \fBfor\fR(;;) as infinite loops. .I Lint also complains about loops which cannot be entered at the top; some valid programs may have such loops, but at best they are bad style, at worst bugs. .PP .I Lint has an important area of blindness in the flow of control algorithm: it has no way of detecting functions which are called and never return. Thus, a call to .I exit may cause unreachable code which .I lint does not detect; the most serious effects of this are in the determination of returned function values (see the next section). .PP One form of unreachable statement is not usually complained about by .I lint; a .B break statement that cannot be reached causes no message. Programs generated by .I yacc , .[ Johnson Yacc 1975 .] and especially .I lex , .[ Lesk Lex .] may have literally hundreds of unreachable .B break statements. The .B \-O flag in the C compiler will often eliminate the resulting object code inefficiency. Thus, these unreached statements are of little importance, there is typically nothing the user can do about them, and the resulting messages would clutter up the .I lint output. If these messages are desired, .I lint can be invoked with the .B \-b option. .SH Function Values .PP Sometimes functions return values which are never used; sometimes programs incorrectly use function ``values'' which have never been returned. .I Lint addresses this problem in a number of ways. .PP Locally, within a function definition, the appearance of both .DS return( \fIexpr\fR ); .DE and .DS return ; .DE statements is cause for alarm; .I lint will give the message .DS function \fIname\fR contains return(e) and return .DE The most serious difficulty with this is detecting when a function return is implied by flow of control reaching the end of the function. This can be seen with a simple example: .DS .ta .5i 1i 1.5i \fRf ( a ) { if ( a ) return ( 3 ); g (\|); } .DE Notice that, if \fIa\fR tests false, \fIf\fR will call \fIg\fR and then return with no defined return value; this will trigger a complaint from .I lint . If \fIg\fR, like \fIexit\fR, never returns, the message will still be produced when in fact nothing is wrong. .PP In practice, some potentially serious bugs have been discovered by this feature; it also accounts for a substantial fraction of the ``noise'' messages produced by .I lint . .PP On a global scale, .I lint detects cases where a function returns a value, but this value is sometimes, or always, unused. When the value is always unused, it may constitute an inefficiency in the function definition. When the value is sometimes unused, it may represent bad style (e.g., not testing for error conditions). .PP The dual problem, using a function value when the function does not return one, is also detected. This is a serious problem. Amazingly, this bug has been observed on a couple of occasions in ``working'' programs; the desired function value just happened to have been computed in the function return register! .SH Type Checking .PP .I Lint enforces the type checking rules of C more strictly than the compilers do. The additional checking is in four major areas: across certain binary operators and implied assignments, at the structure selection operators, between the definition and uses of functions, and in the use of enumerations. .PP There are a number of operators which have an implied balancing between types of the operands. The assignment, conditional ( ?\|: ), and relational operators have this property; the argument of a \fBreturn\fR statement, and expressions used in initialization also suffer similar conversions. In these operations, \fBchar\fR, \fBshort\fR, \fBint\fR, \fBlong\fR, \fBunsigned\fR, \fBfloat\fR, and \fBdouble\fR types may be freely intermixed. The types of pointers must agree exactly, except that arrays of \fIx\fR's can, of course, be intermixed with pointers to \fIx\fR's. .PP The type checking rules also require that, in structure references, the left operand of the \(em> be a pointer to structure, the left operand of the \fB.\fR be a structure, and the right operand of these operators be a member of the structure implied by the left operand. Similar checking is done for references to unions. .PP Strict rules apply to function argument and return value matching. The types \fBfloat\fR and \fBdouble\fR may be freely matched, as may the types \fBchar\fR, \fBshort\fR, \fBint\fR, and \fBunsigned\fR. Also, pointers can be matched with the associated arrays. Aside from this, all actual arguments must agree in type with their declared counterparts. .PP With enumerations, checks are made that enumeration variables or members are not mixed with other types, or other enumerations, and that the only operations applied are =, initialization, ==, !=, and function arguments and return values. .SH Type Casts .PP The type cast feature in C was introduced largely as an aid to producing more portable programs. Consider the assignment .DS p = 1 ; .DE where .I p is a character pointer. .I Lint will quite rightly complain. Now, consider the assignment .DS p = (char \(**)1 ; .DE in which a cast has been used to convert the integer to a character pointer. The programmer obviously had a strong motivation for doing this, and has clearly signaled his intentions. It seems harsh for .I lint to continue to complain about this. On the other hand, if this code is moved to another machine, such code should be looked at carefully. The .B \-c flag controls the printing of comments about casts. When .B \-c is in effect, casts are treated as though they were assignments subject to complaint; otherwise, all legal casts are passed without comment, no matter how strange the type mixing seems to be. .SH Nonportable Character Use .PP On the PDP-11, characters are signed quantities, with a range from \-128 to 127. On most of the other C implementations, characters take on only positive values. Thus, .I lint will flag certain comparisons and assignments as being illegal or nonportable. For example, the fragment .DS char c; ... if( (c = getchar(\|)) < 0 ) .... .DE works on the PDP-11, but will fail on machines where characters always take on positive values. The real solution is to declare .I c an integer, since .I getchar is actually returning integer values. In any case, .I lint will say ``nonportable character comparison''. .PP A similar issue arises with bitfields; when assignments of constant values are made to bitfields, the field may be too small to hold the value. This is especially true because on some machines bitfields are considered as signed quantities. While it may seem unintuitive to consider that a two bit field declared of type .B int cannot hold the value 3, the problem disappears if the bitfield is declared to have type .B unsigned . .SH Assignments of longs to ints .PP Bugs may arise from the assignment of .B long to an .B int , which loses accuracy. This may happen in programs which have been incompletely converted to use .B typedefs . When a .B typedef variable is changed from \fBint\fR to \fBlong\fR, the program can stop working because some intermediate results may be assigned to \fBints\fR, losing accuracy. Since there are a number of legitimate reasons for assigning \fBlongs\fR to \fBints\fR, the detection of these assignments is enabled by the .B \-a flag. .SH Strange Constructions .PP Several perfectly legal, but somewhat strange, constructions are flagged by .I lint; the messages hopefully encourage better code quality, clearer style, and may even point out bugs. The .B \-h flag is used to enable these checks. For example, in the statement .DS \(**p++ ; .DE the \(** does nothing; this provokes the message ``null effect'' from .I lint . The program fragment .DS unsigned x ; if( x < 0 ) ... .DE is clearly somewhat strange; the test will never succeed. Similarly, the test .DS if( x > 0 ) ... .DE is equivalent to .DS if( x != 0 ) .DE which may not be the intended action. .I Lint will say ``degenerate unsigned comparison'' in these cases. If one says .DS if( 1 != 0 ) .... .DE .I lint will report ``constant in conditional context'', since the comparison of 1 with 0 gives a constant result. .PP Another construction detected by .I lint involves operator precedence. Bugs which arise from misunderstandings about the precedence of operators can be accentuated by spacing and formatting, making such bugs extremely hard to find. For example, the statements .DS if( x&077 == 0 ) ... .DE or .DS x<\h'-.3m'<2 + 40 .DE probably do not do what was intended. The best solution is to parenthesize such expressions, and .I lint encourages this by an appropriate message. .PP Finally, when the .B \-h flag is in force .I lint complains about variables which are redeclared in inner blocks in a way that conflicts with their use in outer blocks. This is legal, but is considered by many (including the author) to be bad style, usually unnecessary, and frequently a bug. .SH Ancient History .PP There are several forms of older syntax which are being officially discouraged. These fall into two classes, assignment operators and initialization. .PP The older forms of assignment operators (e.g., =+, =\-, . . . ) could cause ambiguous expressions, such as .DS a =\-1 ; .DE which could be taken as either .DS a =\- 1 ; .DE or .DS a = \-1 ; .DE The situation is especially perplexing if this kind of ambiguity arises as the result of a macro substitution. The newer, and preferred operators (+=, \-=, etc. ) have no such ambiguities. To spur the abandonment of the older forms, .I lint complains about these old fashioned operators. .PP A similar issue arises with initialization. The older language allowed .DS int x \fR1 ; .DE to initialize .I x to 1. This also caused syntactic difficulties: for example, .DS int x ( \-1 ) ; .DE looks somewhat like the beginning of a function declaration: .DS int x ( y ) { . . . .DE and the compiler must read a fair ways past .I x in order to sure what the declaration really is.. Again, the problem is even more perplexing when the initializer involves a macro. The current syntax places an equals sign between the variable and the initializer: .DS int x = \-1 ; .DE This is free of any possible syntactic ambiguity. .SH Pointer Alignment .PP Certain pointer assignments may be reasonable on some machines, and illegal on others, due entirely to alignment restrictions. For example, on the PDP-11, it is reasonable to assign integer pointers to double pointers, since double precision values may begin on any integer boundary. On the Honeywell 6000, double precision values must begin on even word boundaries; thus, not all such assignments make sense. .I Lint tries to detect cases where pointers are assigned to other pointers, and such alignment problems might arise. The message ``possible pointer alignment problem'' results from this situation whenever either the .B \-p or .B \-h flags are in effect. .SH Multiple Uses and Side Effects .PP In complicated expressions, the best order in which to evaluate subexpressions may be highly machine dependent. For example, on machines (like the PDP-11) in which the stack runs backwards, function arguments will probably be best evaluated from right-to-left; on machines with a stack running forward, left-to-right seems most attractive. Function calls embedded as arguments of other functions may or may not be treated similarly to ordinary arguments. Similar issues arise with other operators which have side effects, such as the assignment operators and the increment and decrement operators. .PP In order that the efficiency of C on a particular machine not be unduly compromised, the C language leaves the order of evaluation of complicated expressions up to the local compiler, and, in fact, the various C compilers have considerable differences in the order in which they will evaluate complicated expressions. In particular, if any variable is changed by a side effect, and also used elsewhere in the same expression, the result is explicitly undefined. .PP .I Lint checks for the important special case where a simple scalar variable is affected. For example, the statement .DS \fIa\fR[\fIi\|\fR] = \fIb\fR[\fIi\fR++] ; .DE will draw the complaint: .DS warning: \fIi\fR evaluation order undefined .DE .SH Implementation .PP .I Lint consists of two programs and a driver. The first program is a version of the Portable C Compiler .[ Johnson Ritchie BSTJ Portability Programs System .] .[ Johnson portable compiler 1978 .] which is the basis of the IBM 370, Honeywell 6000, and Interdata 8/32 C compilers. This compiler does lexical and syntax analysis on the input text, constructs and maintains symbol tables, and builds trees for expressions. Instead of writing an intermediate file which is passed to a code generator, as the other compilers do, .I lint produces an intermediate file which consists of lines of ascii text. Each line contains an external variable name, an encoding of the context in which it was seen (use, definition, declaration, etc.), a type specifier, and a source file name and line number. The information about variables local to a function or file is collected by accessing the symbol table, and examining the expression trees. .PP Comments about local problems are produced as detected. The information about external names is collected onto an intermediate file. After all the source files and library descriptions have been collected, the intermediate file is sorted to bring all information collected about a given external name together. The second, rather small, program then reads the lines from the intermediate file and compares all of the definitions, declarations, and uses for consistency. .PP The driver controls this process, and is also responsible for making the options available to both passes of .I lint . .SH Portability .PP C on the Honeywell and IBM systems is used, in part, to write system code for the host operating system. This means that the implementation of C tends to follow local conventions rather than adhere strictly to .UX system conventions. Despite these differences, many C programs have been successfully moved to GCOS and the various IBM installations with little effort. This section describes some of the differences between the implementations, and discusses the .I lint features which encourage portability. .PP Uninitialized external variables are treated differently in different implementations of C. Suppose two files both contain a declaration without initialization, such as .DS int a ; .DE outside of any function. The .UX loader will resolve these declarations, and cause only a single word of storage to be set aside for \fIa\fR. Under the GCOS and IBM implementations, this is not feasible (for various stupid reasons!) so each such declaration causes a word of storage to be set aside and called \fIa\fR. When loading or library editing takes place, this causes fatal conflicts which prevent the proper operation of the program. If .I lint is invoked with the \fB\-p\fR flag, it will detect such multiple definitions. .PP A related difficulty comes from the amount of information retained about external names during the loading process. On the .UX system, externally known names have seven significant characters, with the upper/lower case distinction kept. On the IBM systems, there are eight significant characters, but the case distinction is lost. On GCOS, there are only six characters, of a single case. This leads to situations where programs run on the .UX system, but encounter loader problems on the IBM or GCOS systems. .I Lint .B \-p causes all external symbols to be mapped to one case and truncated to six characters, providing a worst-case analysis. .PP A number of differences arise in the area of character handling: characters in the .UX system are eight bit ascii, while they are eight bit ebcdic on the IBM, and nine bit ascii on GCOS. Moreover, character strings go from high to low bit positions (``left to right'') on GCOS and IBM, and low to high (``right to left'') on the PDP-11. This means that code attempting to construct strings out of character constants, or attempting to use characters as indices into arrays, must be looked at with great suspicion. .I Lint is of little help here, except to flag multi-character character constants. .PP Of course, the word sizes are different! This causes less trouble than might be expected, at least when moving from the .UX system (16 bit words) to the IBM (32 bits) or GCOS (36 bits). The main problems are likely to arise in shifting or masking. C now supports a bit-field facility, which can be used to write much of this code in a reasonably portable way. Frequently, portability of such code can be enhanced by slight rearrangements in coding style. Many of the incompatibilities seem to have the flavor of writing .DS x &= 0177700 ; .DE to clear the low order six bits of \fIx\fR. This suffices on the PDP-11, but fails badly on GCOS and IBM. If the bit field feature cannot be used, the same effect can be obtained by writing .DS x &= \(ap 077 ; .DE which will work on all these machines. .PP The right shift operator is arithmetic shift on the PDP-11, and logical shift on most other machines. To obtain a logical shift on all machines, the left operand can be typed \fBunsigned\fR. Characters are considered signed integers on the PDP-11, and unsigned on the other machines. This persistence of the sign bit may be reasonably considered a bug in the PDP-11 hardware which has infiltrated itself into the C language. If there were a good way to discover the programs which would be affected, C could be changed; in any case, .I lint is no help here. .PP The above discussion may have made the problem of portability seem bigger than it in fact is. The issues involved here are rarely subtle or mysterious, at least to the implementor of the program, although they can involve some work to straighten out. The most serious bar to the portability of .UX system utilities has been the inability to mimic essential .UX system functions on the other systems. The inability to seek to a random character position in a text file, or to establish a pipe between processes, has involved far more rewriting and debugging than any of the differences in C compilers. On the other hand, .I lint has been very helpful in moving the .UX operating system and associated utility programs to other machines. .SH Shutting Lint Up .PP There are occasions when the programmer is smarter than .I lint . There may be valid reasons for ``illegal'' type casts, functions with a variable number of arguments, etc. Moreover, as specified above, the flow of control information produced by .I lint often has blind spots, causing occasional spurious messages about perfectly reasonable programs. Thus, some way of communicating with .I lint , typically to shut it up, is desirable. .PP The form which this mechanism should take is not at all clear. New keywords would require current and old compilers to recognize these keywords, if only to ignore them. This has both philosophical and practical problems. New preprocessor syntax suffers from similar problems. .PP What was finally done was to cause a number of words to be recognized by .I lint when they were embedded in comments. This required minimal preprocessor changes; the preprocessor just had to agree to pass comments through to its output, instead of deleting them as had been previously done. Thus, .I lint directives are invisible to the compilers, and the effect on systems with the older preprocessors is merely that the .I lint directives don't work. .PP The first directive is concerned with flow of control information; if a particular place in the program cannot be reached, but this is not apparent to .I lint , this can be asserted by the directive .DS /* NOTREACHED */ .DE at the appropriate spot in the program. Similarly, if it is desired to turn off strict type checking for the next expression, the directive .DS /* NOSTRICT */ .DE can be used; the situation reverts to the previous default after the next expression. The .B \-v flag can be turned on for one function by the directive .DS /* ARGSUSED */ .DE Complaints about variable number of arguments in calls to a function can be turned off by the directive .DS /* VARARGS */ .DE preceding the function definition. In some cases, it is desirable to check the first several arguments, and leave the later arguments unchecked. This can be done by following the VARARGS keyword immediately with a digit giving the number of arguments which should be checked; thus, .DS /* VARARGS2 */ .DE will cause the first two arguments to be checked, the others unchecked. Finally, the directive .DS /* LINTLIBRARY */ .DE at the head of a file identifies this file as a library declaration file; this topic is worth a section by itself. .SH Library Declaration Files .PP .I Lint accepts certain library directives, such as .DS \-ly .DE and tests the source files for compatibility with these libraries. This is done by accessing library description files whose names are constructed from the library directives. These files all begin with the directive .DS /* LINTLIBRARY */ .DE which is followed by a series of dummy function definitions. The critical parts of these definitions are the declaration of the function return type, whether the dummy function returns a value, and the number and types of arguments to the function. The VARARGS and ARGSUSED directives can be used to specify features of the library functions. .PP .I Lint library files are processed almost exactly like ordinary source files. The only difference is that functions which are defined on a library file, but are not used on a source file, draw no complaints. .I Lint does not simulate a full library search algorithm, and complains if the source files contain a redefinition of a library routine (this is a feature!). .PP By default, .I lint checks the programs it is given against a standard library file, which contains descriptions of the programs which are normally loaded when a C program is run. When the .B -p flag is in effect, another file is checked containing descriptions of the standard I/O library routines which are expected to be portable across various machines. The .B -n flag can be used to suppress all library checking. .SH Bugs, etc. .PP .I Lint was a difficult program to write, partially because it is closely connected with matters of programming style, and partially because users usually don't notice bugs which cause .I lint to miss errors which it should have caught. (By contrast, if .I lint incorrectly complains about something that is correct, the programmer reports that immediately!) .PP A number of areas remain to be further developed. The checking of structures and arrays is rather inadequate; size incompatibilities go unchecked, and no attempt is made to match up structure and union declarations across files. Some stricter checking of the use of the .B typedef is clearly desirable, but what checking is appropriate, and how to carry it out, is still to be determined. .PP .I Lint shares the preprocessor with the C compiler. At some point it may be appropriate for a special version of the preprocessor to be constructed which checks for things such as unused macro definitions, macro arguments which have side effects which are not expanded at all, or are expanded more than once, etc. .PP The central problem with .I lint is the packaging of the information which it collects. There are many options which serve only to turn off, or slightly modify, certain features. There are pressures to add even more of these options. .PP In conclusion, it appears that the general notion of having two programs is a good one. The compiler concentrates on quickly and accurately turning the program text into bits which can be run; .I lint concentrates on issues of portability, style, and efficiency. .I Lint can afford to be wrong, since incorrectness and over-conservatism are merely annoying, not fatal. The compiler can be fast since it knows that .I lint will cover its flanks. Finally, the programmer can concentrate at one stage of the programming process solely on the algorithms, data structures, and correctness of the program, and then later retrofit, with the aid of .I lint , the desirable properties of universality and portability. .SG MH-1273-SCJ-unix .\".bp .[ $LIST$ .] .bp .SH Appendix: Current Lint Options .PP The command currently has the form .DS lint\fR [\fB\-\fRoptions ] files... library-descriptors... .DE The options are .IP \fBh\fR Perform heuristic checks .IP \fBp\fR Perform portability checks .IP \fBv\fR Don't report unused arguments .IP \fBu\fR Don't report unused or undefined externals .IP \fBb\fR Report unreachable .B break statements. .IP \fBx\fR Report unused external declarations .IP \fBa\fR Report assignments of .B long to .B int or shorter. .IP \fBc\fR Complain about questionable casts .IP \fBn\fR No library checking is done .IP \fBs\fR Same as .B h (for historical reasons) torage to be set aside and called \fIa\fR. When loading or library editing takes place, this causes fatal conflicts which prevent the proper operation of the program. If .I lint is invoked with the \fB\-pdoc/ps1/10.adb/ 755 3 12 0 3660046703 6167 doc/ps1/10.adb/adb.ms 444 3 12 126776 3660046677 7436 .\" @(#)adb.ms 6.1 (Berkeley) 5/7/86 .\" .EH 'PS1:10-%''A Tutorial Introduction to ADB' .OH 'A Tutorial Introduction to ADB''PS1:10-%' .de P1 .sp .5 .if \\n(.$>0 .ta \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 .if \\n(.$=0 .ta 1i 1.7i 2.5i .ft 3 .nf .. .de P2 .sp .5 .ft 1 .fi .. .\".RP .....TM "77-8234-11 77-1273-10" "49170-220 39199" "40952-1 39199-11" .ND May 5, 1977 .TL A Tutorial Introduction to ADB .AU "MH2F-207" "3816" J. F. Maranzano .AU "MH2C-512" 7419 S. R. Bourne .AI .MH .OK .\"UNIX .\"Debugging .\"C Programming .AB .PP Debugging tools generally provide a wealth of information about the inner workings of programs. These tools have been available on .UX to allow users to examine ``core'' files that result from aborted programs. A new debugging program, ADB, provides enhanced capabilities to examine "core" and other program files in a variety of formats, run programs with embedded breakpoints and patch files. .PP ADB is an indispensable but complex tool for debugging crashed systems and/or programs. This document provides an introduction to ADB with examples of its use. It explains the various formatting options, techniques for debugging C programs, examples of printing file system information and patching. .AE .CS 12 15 27 13 0 5 .NH Introduction .PP ADB is a new debugging program that is available on UNIX. It provides capabilities to look at ``core'' files resulting from aborted programs, print output in a variety of formats, patch files, and run programs with embedded breakpoints. This document provides examples of the more useful features of ADB. The reader is expected to be familiar with the basic commands on .UX with the C language, and with References 1, 2 and 3. .NH A Quick Survey .NH 2 Invocation .PP ADB is invoked as: .P1 adb objfile corefile .P2 where .ul objfile is an executable UNIX file and .ul corefile is a core image file. Many times this will look like: .P1 adb a.out core .P2 or more simply: .P1 adb .P2 where the defaults are .ul a.out and .ul core respectively. The filename minus (\-) means ignore this argument as in: .P1 adb \- core .P2 .PP ADB has requests for examining locations in either file. The \fB?\fP request examines the contents of .ul objfile, the \fB/\fP request examines the .ul corefile. The general form of these requests is: .P1 address ? format .P2 or .P1 address / format .P2 .NH 2 Current Address .PP ADB maintains a current address, called dot, similar in function to the current pointer in the UNIX editor. When an address is entered, the current address is set to that location, so that: .P1 0126?i .P2 sets dot to octal 126 and prints the instruction at that address. The request: .P1 .,10/d .P2 prints 10 decimal numbers starting at dot. Dot ends up referring to the address of the last item printed. When used with the \fB?\fP or \fB/\fP requests, the current address can be advanced by typing newline; it can be decremented by typing \fB^\fP. .PP Addresses are represented by expressions. Expressions are made up from decimal, octal, and hexadecimal integers, and symbols from the program under test. These may be combined with the operators +, \-, *, % (integer division), & (bitwise and), | (bitwise inclusive or), # (round up to the next multiple), and ~ (not). (All arithmetic within ADB is 32 bits.) When typing a symbolic address for a C program, the user can type .ul name or .ul _name; ADB will recognize both forms. .NH 2 Formats .PP To print data, a user specifies a collection of letters and characters that describe the format of the printout. Formats are "remembered" in the sense that typing a request without one will cause the new printout to appear in the previous format. The following are the most commonly used format letters. .P1 \fB b \fPone byte in octal \fB c \fPone byte as a character \fB o \fPone word in octal \fB d \fPone word in decimal \fB f \fPtwo words in floating point \fB i \fPPDP 11 instruction \fB s \fPa null terminated character string \fB a \fPthe value of dot \fB u \fPone word as unsigned integer \fB n \fPprint a newline \fB r \fPprint a blank space \fB ^ \fPbackup dot .P2 (Format letters are also available for "long" values, for example, `\fBD\fR' for long decimal, and `\fBF\fP' for double floating point.) For other formats see the ADB manual. .NH 2 General Request Meanings .PP The general form of a request is: .P1 address,count command modifier .P2 which sets `dot' to \fIaddress\fP and executes the command \fIcount\fR times. .PP The following table illustrates some general ADB command meanings: .P1 Command Meaning \fB ? \fPPrint contents from \fIa.out\fP file \fB / \fPPrint contents from \fIcore\fP file \fB = \fPPrint value of "dot" \fB : \fPBreakpoint control \fB $ \fPMiscellaneous requests \fB ; \fPRequest separator \fB ! \fPEscape to shell .P2 .PP ADB catches signals, so a user cannot use a quit signal to exit from ADB. The request $q or $Q (or cntl-D) must be used to exit from ADB. .NH Debugging C Programs .NH 2 Debugging A Core Image .PP Consider the C program in Figure 1. The program is used to illustrate a common error made by C programmers. The object of the program is to change the lower case "t" to upper case in the string pointed to by .ul charp and then write the character string to the file indicated by argument 1. The bug shown is that the character "T" is stored in the pointer .ul charp instead of the string pointed to by .ul charp. Executing the program produces a core file because of an out of bounds memory reference. .PP ADB is invoked by: .P1 adb a.out core .P2 The first debugging request: .P1 $c .P2 is used to give a C backtrace through the subroutines called. As shown in Figure 2 only one function (\fImain\fR) was called and the arguments .ul argc and .ul argv have octal values 02 and 0177762 respectively. Both of these values look reasonable; 02 = two arguments, 0177762 = address on stack of parameter vector. .br The next request: .P1 $C .P2 is used to give a C backtrace plus an interpretation of all the local variables in each function and their values in octal. The value of the variable .ul cc looks incorrect since .ul cc was declared as a character. .PP The next request: .P1 $r .P2 prints out the registers including the program counter and an interpretation of the instruction at that location. .PP The request: .P1 $e .P2 prints out the values of all external variables. .PP A map exists for each file handled by ADB. The map for the .ul a.out file is referenced by \fB?\fP whereas the map for .ul core file is referenced by \fB/\fP. Furthermore, a good rule of thumb is to use \fB?\fP for instructions and \fB/\fP for data when looking at programs. To print out information about the maps type: .P1 $m .P2 This produces a report of the contents of the maps. More about these maps later. .PP In our example, it is useful to see the contents of the string pointed to by .ul charp. This is done by: .P1 *charp/s .P2 which says use .ul charp as a pointer in the .ul core file and print the information as a character string. This printout clearly shows that the character buffer was incorrectly overwritten and helps identify the error. Printing the locations around .ul charp shows that the buffer is unchanged but that the pointer is destroyed. Using ADB similarly, we could print information about the arguments to a function. The request: .P1 main.argc/d .P2 prints the decimal .ul core image value of the argument .ul argc in the function .ul main. .br The request: .P1 *main.argv,3/o .P2 prints the octal values of the three consecutive cells pointed to by .ul argv in the function .ul main. Note that these values are the addresses of the arguments to main. Therefore: .P1 0177770/s .P2 prints the ASCII value of the first argument. Another way to print this value would have been .P1 *"/s .P2 The " means ditto which remembers the last address typed, in this case \fImain.argc\fP ; the \fB*\fP instructs ADB to use the address field of the .ul core file as a pointer. .PP The request: .P1 .=o .P2 prints the current address (not its contents) in octal which has been set to the address of the first argument. The current address, dot, is used by ADB to "remember" its current location. It allows the user to reference locations relative to the current address, for example: .P1 .\-10/d .P2 .NH 2 Multiple Functions .PP Consider the C program illustrated in Figure 3. This program calls functions .ul f, g, and .ul h until the stack is exhausted and a core image is produced. .PP Again you can enter the debugger via: .P1 adb .P2 which assumes the names .ul a.out and .ul core for the executable file and core image file respectively. The request: .P1 $c .P2 will fill a page of backtrace references to .ul f, g, and .ul h. Figure 4 shows an abbreviated list (typing .ul DEL will terminate the output and bring you back to ADB request level). .PP The request: .P1 ,5$C .P2 prints the five most recent activations. .PP Notice that each function (\fIf,g,h\fP) has a counter of the number of times it was called. .PP The request: .P1 fcnt/d .P2 prints the decimal value of the counter for the function .ul f. Similarly .ul gcnt and .ul hcnt could be printed. To print the value of an automatic variable, for example the decimal value of .ul x in the last call of the function .ul h, type: .P1 h.x/d .P2 It is currently not possible in the exported version to print stack frames other than the most recent activation of a function. Therefore, a user can print everything with \fB$C\fR or the occurrence of a variable in the most recent call of a function. It is possible with the \fB$C\fR request, however, to print the stack frame starting at some address as \fBaddress$C.\fR .NH 2 Setting Breakpoints .PP Consider the C program in Figure 5. This program, which changes tabs into blanks, is adapted from .ul Software Tools by Kernighan and Plauger, pp. 18-27. .PP We will run this program under the control of ADB (see Figure 6a) by: .P1 adb a.out \- .P2 Breakpoints are set in the program as: .ul .P1 address:b [request] .P2 The requests: .P1 settab+4:b fopen+4:b getc+4:b tabpos+4:b .P2 set breakpoints at the start of these functions. C does not generate statement labels. Therefore it is currently not possible to plant breakpoints at locations other than function entry points without a knowledge of the code generated by the C compiler. The above addresses are entered as .ft B symbol+4 .ft R so that they will appear in any C backtrace since the first instruction of each function is a call to the C save routine (\fIcsv\fR). Note that some of the functions are from the C library. .PP To print the location of breakpoints one types: .P1 $b .P2 The display indicates a .ul count field. A breakpoint is bypassed .ul count \-1 times before causing a stop. The .ul command field indicates the ADB requests to be executed each time the breakpoint is encountered. In our example no .ul command fields are present. .PP By displaying the original instructions at the function .ul settab we see that the breakpoint is set after the jsr to the C save routine. We can display the instructions using the ADB request: .P1 settab,5?ia .P2 This request displays five instructions starting at .ul settab with the addresses of each location displayed. Another variation is: .P1 settab,5?i .P2 which displays the instructions with only the starting address. .PP Notice that we accessed the addresses from the .ul a.out file with the \fB?\fP command. In general when asking for a printout of multiple items, ADB will advance the current address the number of bytes necessary to satisfy the request; in the above example five instructions were displayed and the current address was advanced 18 (decimal) bytes. .PP To run the program one simply types: .P1 :r .P2 To delete a breakpoint, for instance the entry to the function .ul settab, one types: .P1 settab+4:d .P2 To continue execution of the program from the breakpoint type: .P1 :c .PP Once the program has stopped (in this case at the breakpoint for .ul fopen), ADB requests can be used to display the contents of memory. For example: .P1 $C .P2 to display a stack trace, or: .P1 tabs,3/8o .P2 to print three lines of 8 locations each from the array called .ul tabs. By this time (at location .ul fopen) in the C program, .ul settab has been called and should have set a one in every eighth location of .ul tabs. .NH 2 Advanced Breakpoint Usage .PP We continue execution of the program with: .P1 :c .P2 See Figure 6b. .ul Getc is called three times and the contents of the variable .ul c in the function .ul main are displayed each time. The single character on the left hand edge is the output from the C program. On the third occurrence of .ul getc the program stops. We can look at the full buffer of characters by typing: .P1 ibuf+6/20c .P2 When we continue the program with: .P1 :c .P2 we hit our first breakpoint at .ul tabpos since there is a tab following the "This" word of the data. .PP Several breakpoints of .ul tabpos will occur until the program has changed the tab into equivalent blanks. Since we feel that .ul tabpos is working, we can remove the breakpoint at that location by: .P1 tabpos+4:d .P2 If the program is continued with: .P1 :c .P2 it resumes normal execution after ADB prints the message .P1 a.out:running .P2 .PP The UNIX quit and interrupt signals act on ADB itself rather than on the program being debugged. If such a signal occurs then the program being debugged is stopped and control is returned to ADB. The signal is saved by ADB and is passed on to the test program if: .P1 :c .P2 is typed. This can be useful when testing interrupt handling routines. The signal is not passed on to the test program if: .P1 :c 0 .P2 is typed. .PP Now let us reset the breakpoint at .ul settab and display the instructions located there when we reach the breakpoint. This is accomplished by: .P1 settab+4:b settab,5?ia \fR* .P2 .FS * Owing to a bug in early versions of ADB (including the version distributed in Generic 3 UNIX) these statements must be written as: .br .in 1i \fBsettab+4:b settab,5?ia;0\fR .ft B .br getc+4,3:b main.c?C;0 .br settab+4:b settab,5?ia; ptab/o;0 .br .ft R .in -1i Note that \fB;0\fR will set dot to zero and stop at the breakpoint. .FE It is also possible to execute the ADB requests for each occurrence of the breakpoint but only stop after the third occurrence by typing: .P1 getc+4,3:b main.c?C \fR* .P2 This request will print the local variable .ul c in the function .ul main at each occurrence of the breakpoint. The semicolon is used to separate multiple ADB requests on a single line. .PP Warning: setting a breakpoint causes the value of dot to be changed; executing the program under ADB does not change dot. Therefore: .P1 settab+4:b .,5?ia fopen+4:b .P2 will print the last thing dot was set to (in the example \fIfopen+4\fP) .ul not the current location (\fIsettab+4\fP) at which the program is executing. .PP A breakpoint can be overwritten without first deleting the old breakpoint. For example: .P1 settab+4:b settab,5?ia; ptab/o \fR* .P2 could be entered after typing the above requests. .PP Now the display of breakpoints: .P1 $b .P2 shows the above request for the .ul settab breakpoint. When the breakpoint at .ul settab is encountered the ADB requests are executed. Note that the location at .ul settab+4 has been changed to plant the breakpoint; all the other locations match their original value. .PP Using the functions, .ul f, g and .ul h shown in Figure 3, we can follow the execution of each function by planting non-stopping breakpoints. We call ADB with the executable program of Figure 3 as follows: .P1 adb ex3 \- .P2 Suppose we enter the following breakpoints: .P1 h+4:b hcnt/d; h.hi/; h.hr/ g+4:b gcnt/d; g.gi/; g.gr/ f+4:b fcnt/d; f.fi/; f.fr/ :r .P2 Each request line indicates that the variables are printed in decimal (by the specification \fBd\fR). Since the format is not changed, the \fBd\fR can be left off all but the first request. .PP The output in Figure 7 illustrates two points. First, the ADB requests in the breakpoint line are not examined until the program under test is run. That means any errors in those ADB requests is not detected until run time. At the location of the error ADB stops running the program. .PP The second point is the way ADB handles register variables. ADB uses the symbol table to address variables. Register variables, like \fIf.fr\fR above, have pointers to uninitialized places on the stack. Therefore the message "symbol not found". .PP Another way of getting at the data in this example is to print the variables used in the call as: .P1 f+4:b fcnt/d; f.a/; f.b/; f.fi/ g+4:b gcnt/d; g.p/; g.q/; g.gi/ :c .P2 The operator / was used instead of ? to read values from the \fIcore\fP file. The output for each function, as shown in Figure 7, has the same format. For the function \fIf\fP, for example, it shows the name and value of the .ul external variable .ul fcnt. It also shows the address on the stack and value of the variables .ul a, b and .ul fi. .PP Notice that the addresses on the stack will continue to decrease until no address space is left for program execution at which time (after many pages of output) the program under test aborts. A display with names would be produced by requests like the following: .P1 f+4:b fcnt/d; f.a/"a="d; f.b/"b="d; f.fi/"fi="d .P2 In this format the quoted string is printed literally and the \fBd\fP produces a decimal display of the variables. The results are shown in Figure 7. .NH 2 Other Breakpoint Facilities .LP .IP \(bu 4 Arguments and change of standard input and output are passed to a program as: .P1 :r arg1 arg2 ... outfile .P2 This request kills any existing program under test and starts the .ul a.out afresh. .IP \(bu The program being debugged can be single stepped by: .P1 :s .P2 If necessary, this request will start up the program being debugged and stop after executing the first instruction. .IP \(bu ADB allows a program to be entered at a specific address by typing: .P1 address:r .P2 .IP \(bu The count field can be used to skip the first \fIn\fR breakpoints as: .P1 ,n:r .P2 The request: .P1 ,n:c .P2 may also be used for skipping the first \fIn\fR breakpoints when continuing a program. .sp .IP \(bu A program can be continued at an address different from the breakpoint by: .P1 address:c .P2 .IP \(bu The program being debugged runs as a separate process and can be killed by: .P1 :k .P2 .LP .NH Maps .PP UNIX supports several executable file formats. These are used to tell the loader how to load the program file. File type 407 is the most common and is generated by a C compiler invocation such as \fBcc pgm.c\fP. A 410 file is produced by a C compiler command of the form \fBcc -n pgm.c\fP, whereas a 411 file is produced by \fBcc -i pgm.c\fP. ADB interprets these different file formats and provides access to the different segments through a set of maps (see Figure 8). To print the maps type: .P1 $m .P2 .PP In 407 files, both text (instructions) and data are intermixed. This makes it impossible for ADB to differentiate data from instructions and some of the printed symbolic addresses look incorrect; for example, printing data addresses as offsets from routines. .PP In 410 files (shared text), the instructions are separated from data and \fB?*\fR accesses the data part of the \fIa.out\fP file. The \fB?* \fP request tells ADB to use the second part of the map in the .ul a.out file. Accessing data in the \fIcore\fP file shows the data after it was modified by the execution of the program. Notice also that the data segment may have grown during program execution. .PP In 411 files (separated I & D space), the instructions and data are also separated. However, in this case, since data is mapped through a separate set of segmentation registers, the base of the data segment is also relative to address zero. In this case since the addresses overlap it is necessary to use the \fB?*\fR operator to access the data space of the \fIa.out\fP file. In both 410 and 411 files the corresponding core file does not contain the program text. .PP Figure 9 shows the display of three maps for the same program linked as a 407, 410, 411 respectively. The b, e, and f fields are used by ADB to map addresses into file addresses. The "f1" field is the length of the header at the beginning of the file (020 bytes for an \fIa.out\fP file and 02000 bytes for a \fIcore\fP file). The "f2" field is the displacement from the beginning of the file to the data. For a 407 file with mixed text and data this is the same as the length of the header; for 410 and 411 files this is the length of the header plus the size of the text portion. .PP The "b" and "e" fields are the starting and ending locations for a segment. Given an address, A, the location in the file (either \fIa.out\fP or \fIcore\fP) is calculated as: .P1 b1\(<=A\(<=e1 =\h'-.5m'> file address = (A\-b1)+f1 b2\(<=A\(<=e2 =\h'-.5m'> file address = (A\-b2)+f2 .P2 A user can access locations by using the ADB defined variables. The \fB$v\fR request prints the variables initialized by ADB: .P1 b base address of data segment d length of the data segment s length of the stack t length of the text m execution type (407,410,411) .P2 .PP In Figure 9 those variables not present are zero. Use can be made of these variables by expressions such as: .P1 b .P2 that sets \fBb\fP to octal 2000. These variables are useful to know if the file under examination is an executable or \fIcore\fP image file. .PP ADB reads the header of the \fIcore\fP image file to find the values for these variables. If the second file specified does not seem to be a \fIcore\fP file, or if it is missing then the header of the executable file is used instead. .NH Advanced Usage .PP It is possible with ADB to combine formatting requests to provide elaborate displays. Below are several examples. .NH 2 Formatted dump .PP The line: .P1 b ?m MAXLINE) return(YES); else return(tabs[col]); } .sp .5 /* Settab - Set initial tab stops */ settab(tabp) int *tabp; { int i; .sp .5 for(i = 0; i<= MAXLINE; i++) (i%TABSP) ? (tabs[i] = NO) : (tabs[i] = YES); } .P2 .sp 100 .SH Figure 6a: ADB output for C program of Figure 5 .LP .P1 .ft B adb a.out \(mi settab+4:b fopen+4:b getc+4:b tabpos+4:b $b .ft R breakpoints count bkpt command 1 ~tabpos+04 1 _getc+04 1 _fopen+04 1 ~settab+04 .ft B settab,5?ia .ft R ~settab: jsr r5,csv ~settab+04: tst \(mi(sp) ~settab+06: clr 0177770(r5) ~settab+012: cmp $0120,0177770(r5) ~settab+020: blt ~settab+076 ~settab+022: .ft B settab,5?i .ft R ~settab: jsr r5,csv tst \(mi(sp) clr 0177770(r5) cmp $0120,0177770(r5) blt ~settab+076 .ft B :r .ft R a.out: running breakpoint ~settab+04: tst \(mi(sp) .ft B settab+4:d :c .ft R a.out: running breakpoint _fopen+04: mov 04(r5),nulstr+012 .ft B $C .ft R _fopen(02302,02472) ~main(01,0177770) col: 01 c: 0 ptab: 03500 .ft B tabs,3/8o .ft R 03500: 01 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 .P2 .sp 100 .SH Figure 6b: ADB output for C program of Figure 5 .LP .P1 .ft B :c .ft R a.out: running breakpoint _getc+04: mov 04(r5),r1 .ft B ibuf+6/20c .ft R __cleanu+0202: This is a test of .ft B :c .ft R a.out: running breakpoint ~tabpos+04: cmp $0120,04(r5) .ft B tabpos+4:d settab+4:b settab,5?ia settab+4:b settab,5?ia; 0 getc+4,3:b main.c?C; 0 settab+4:b settab,5?ia; ptab/o; 0 $b .ft R breakpoints count bkpt command 1 ~tabpos+04 3 _getc+04 main.c?C;0 1 _fopen+04 1 ~settab+04 settab,5?ia;ptab?o;0 ~settab: jsr r5,csv ~settab+04: bpt ~settab+06: clr 0177770(r5) ~settab+012: cmp $0120,0177770(r5) ~settab+020: blt ~settab+076 ~settab+022: 0177766: 0177770 0177744: @\` T0177744: T h0177744: h i0177744: i s0177744: s .P2 .sp 100 .SH Figure 7: ADB output for C program with breakpoints .LP .in +.5i .nf .ps 8 .vs 9 .ft B adb ex3 \(mi h+4:b hcnt/d; h.hi/; h.hr/ g+4:b gcnt/d; g.gi/; g.gr/ f+4:b fcnt/d; f.fi/; f.fr/ :r .ft R ex3: running _fcnt: 0 0177732: 214 symbol not found .ft B f+4:b fcnt/d; f.a/; f.b/; f.fi/ g+4:b gcnt/d; g.p/; g.q/; g.gi/ h+4:b hcnt/d; h.x/; h.y/; h.hi/ :c .ft R ex3: running _fcnt: 0 0177746: 1 0177750: 1 0177732: 214 _gcnt: 0 0177726: 2 0177730: 3 0177712: 214 _hcnt: 0 0177706: 2 0177710: 1 0177672: 214 _fcnt: 1 0177666: 2 0177670: 3 0177652: 214 _gcnt: 1 0177646: 5 0177650: 8 0177632: 214 .ft B HIT DEL f+4:b fcnt/d; f.a/"a = "d; f.b/"b = "d; f.fi/"fi = "d g+4:b gcnt/d; g.p/"p = "d; g.q/"q = "d; g.gi/"gi = "d h+4:b hcnt/d; h.x/"x = "d; h.y/"h = "d; h.hi/"hi = "d :r .ft R ex3: running _fcnt: 0 0177746: a = 1 0177750: b = 1 0177732: fi = 214 _gcnt: 0 0177726: p = 2 0177730: q = 3 0177712: gi = 214 _hcnt: 0 0177706: x = 2 0177710: y = 1 0177672: hi = 214 _fcnt: 1 0177666: a = 2 0177670: b = 3 0177652: fi = 214 .ft B HIT DEL $q .in -.5i .sp 100 .SH Figure 8: ADB address maps .LP .de l1 .tc .ta 1.20i +1.6i +2.5i .. .de l3 .tc .ta 1.6i +2.80i +.2i +1.55i .. .de l2 .tc .ti 1.0i .ta +0.5i +3.0i +1.75i .tc _ .. .de l5 .tc .ti 1.0i .ta +0.75i +3.0i +1.5i .tc _ .. .de l6 .tc .ti 1.0i .ta +.8i +2.85i +0.4i +1.1i .. .de l8 .tc .ti 1.0i .ta +0.5i +3.0i +1.75i .tc _ .. .de la .tc .ta 1.20i +1.25i +1.7i .. .de lc .tc .ti 1.0i .ta +.85i +1.6i +.35i +1.1i .. .de lb .tc .ti 1.0i .ta +0.75i +1.75i +1.5i .tc _ .. .ul 407 files .sp .l1 a.out hdr text+data .l2 | | | .l3 0 D .sp .l1 core hdr text+data stack .l5 | | ......| | .l6 0 D S E .sp 2 .ul 410 files (shared text) .sp .l1 a.out hdr text data .l2 | | | | .l3 0 T B D .sp .la core hdr data stack .lb | | ......| | .lc B D S E .sp 2 .ul 411 files (separated I and D space) .sp .l1 a.out hdr text data .l2 | | | | .l3 0 T 0 D .sp .la core hdr data stack .lb | | ......| | .lc 0 D S E .sp 2 The following .ul adb variables are set. .nf .ta .75i 1.5i 3.5i 4.5i 5.5i .sp 407 410 411 .sp b base of data 0 B 0 d length of data D D\(miB D s length of stack S S S t length of text 0 T T .sp 100 .SH Figure 9: ADB output for maps .LP .nf .in +.5i .ft B adb map407 core407 $m .ft R text map \`map407\' b1 = 0 e1 = 0256 f1 = 020 b2 = 0 e2 = 0256 f2 = 020 data map \`core407\' b1 = 0 e1 = 0300 f1 = 02000 b2 = 0175400 e2 = 0200000 f2 = 02300 .ft B $v .ft R variables d = 0300 m = 0407 s = 02400 .ft B $q .sp 2 adb map410 core410 $m .ft R text map \`map410\' b1 = 0 e1 = 0200 f1 = 020 b2 = 020000 e2 = 020116 f2 = 0220 data map \`core410\' b1 = 020000 e1 = 020200 f1 = 02000 b2 = 0175400 e2 = 0200000 f2 = 02200 .ft B $v .ft R variables b = 020000 d = 0200 m = 0410 s = 02400 t = 0200 .ft B $q .sp 2 adb map411 core411 $m .ft R text map \`map411\' b1 = 0 e1 = 0200 f1 = 020 b2 = 0 e2 = 0116 f2 = 0220 data map \`core411\' b1 = 0 e1 = 0200 f1 = 02000 b2 = 0175400 e2 = 0200000 f2 = 02200 .ft B $v .ft R variables d = 0200 m = 0411 s = 02400 t = 0200 .ft B $q .in -.5i .sp 100 .SH Figure 10: Simple C program for illustrating formatting and patching .LP .P1 char str1[] "This is a character string"; int one 1; int number 456; long lnum 1234; float fpt 1.25; char str2[] "This is the second character string"; main() { one = 2; } .P2 .sp 100 .SH Figure 11: ADB output illustrating fancy formats .LP .nf .ps 9 .vs 11p .ft B adb map410 core410 b ?m\fIname\fR assign dot to variable or register \fIname\fR .sp 100 .SH Format Summary .LP .ta .7i .nf \fBa \fRthe value of dot \fBb \fRone byte in octal \fBc \fRone byte as a character \fBd \fRone word in decimal \fBf \fRtwo words in floating point \fBi \fRPDP 11 instruction \fBo \fRone word in octal \fBn \fRprint a newline \fBr \fRprint a blank space \fBs \fRa null terminated character string \fIn\fBt \fRmove to next \fIn\fR space tab \fBu \fRone word as unsigned integer \fBx \fRhexadecimal \fBY \fRdate \fB^ \fRbackup dot \fB"..."\fR print string .LP .ta .7i .SH Expression Summary .LP .ta .7i a) expression components .LP .ta .1.1i .nf \fBdecimal integer \fRe.g. 256 \fBoctal integer \fRe.g. 0277 \fBhexadecimal \fRe.g. #ff \fBsymbols \fRe.g. flag _main main.argc \fBvariables \fRe.g. adb.n clean: rm -f adb.n spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done pen+04: mov 04(r5),nstr+012 .ft B $C .ft R _fopen(02302,02472) ~main(01,0177770) col: 01 c: 0 ptab: 03500 .ft B tabs,3/8o .ft R 03500: 01 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 .P2 .sp 100 .SH Figure 6b: ADB output for C program of Figure 5 .LP .P1 .ft B :c .ft R a.out: running breakpoint _getc+04: mov 04(r5),r1 .ft B ibuf+6/20c .ft R __cleanu+0202: This is a test of .ft B :c .ft R a.out: running breakpoint ~tabpos+doc/ps1/11.dbx/ 755 3 12 0 3660731241 6215 doc/ps1/11.dbx/dbx.ms 444 3 12 25065 3660731230 7444 .\" @(#)dbx.ms 6.4 (Berkeley) 5/10/86 .\" .\" modified by mark seiden in cosmetic ways. .\" examples VAXinated by Kevin Dunlap .\" dtbl | ditroff -ms .OH 'Debugging with dbx''PS1:11-%' .EH 'PS1:11-%''Debugging with dbx' .de BE .DS .ft CW .ps -1 .. .de EE .ft P .ps +1 .DE .. .de UL \f(CW\s-1\\$1\fP\s0 .. .TL Debugging with dbx .AU Bill Tuthill .AI Sun Microsystems, Inc. 2550 Garcia Avenue .AU Kevin J. Dunlap .AI Computer Systems Research Group University of California Berkeley, CA 94720 .SH Introduction .PP This short paper discusses .I dbx , a symbolic debugger that is vastly superior to .I adb . It may be as good as the debuggers you remember from those non- .UX systems you worked on before. The advantage of symbolic debuggers is that they allow you to work with the same names (symbols) as in your source code. .PP Like .I adb , .I dbx is interactive and line-oriented, but .I dbx is a source-level rather than an assembly-level debugger. It allows you to determine where a program crashed, to view the values of variables and expressions, to set breakpoints in the code, and to run and trace a program. Source code may be in C, Fortran, or Pascal. .PP Mark Linton wrote .I dbx as his master's thesis at UC Berkeley. Along with Eric Schmidt's Berknet, .I dbx is among the most successful master's theses done on UNIX. Since .I dbx required changes to the symbol tables generated by the various compilers, you need to compile programs for debugging with the .I \-g flag. For example, C programs should be compiled as follows: .DS % cc \-g \fIprogram\fP.c \-o \fIprogram\fP .DE Programs compiled with the .I \-g option have good symbol tables, while programs compiled without .I \-g have old-style symbol tables intended for .I adb . Stripped programs have no symbol tables at all. Invoke the debugger as follows, where .I program is the pathname of the executable file that dumped core: .DS % dbx \fIprogram\fP .DE The core image should be in the working directory; if it isn't, specify its pathname in the argument after the program name. Among the great advances of .I dbx is that it has a help facility; type the .I help request to see a list of possible requests. You can obtain help on any .I dbx request by giving its name as an argument to .I help . .bp .SH Examining Core Dumps .PP Much of the time, programmers use .I dbx to find out why a program dumped core. As an example, consider the following program .I dumpcore.c , which dereferences a NULL pointer. This is a legal operation on VAX/UNIX, but not on VAX/VMS or on MC68000-based UNIX systems, on one of which this example was run: .BE #include .sp.5 #define LIMIT 5 .sp.5 main() /* print messages and die */ { int i; .sp.5 for (i = 1; i <= 10 ; i++) { printf("Goodbye world! (%d)\en", i); dumpcore(i); } exit(0); } .sp.5 int *ip; .sp.5 dumpcore(lim) /* dereference NULL pointer */ int lim; { if (lim >= LIMIT) *ip = lim; } .EE The program core dumps because of a segmentation violation or memory fault \(em on most machines it is illegal to assign to address zero. Once the program has produced a core dump, here's how you can find out why the program died: .DS %\c .UL " dbx dumpcore" dbx version 3.17 of 4/24/86 15:04 (monet.Berkeley.EDU). Type 'help' for help. reading symbolic information ... [using memory image in core] (dbx)\c .UL " where" dumpcore.dumpcore(lim = 5), line 22 in "dumpcore.c" main(0x1, 0x7fffe904, 0x7fffe90c), line 11 in "dumpcore.c" .DE The .I where request yields a stack trace. As you can see, the .I dumpcore() routine was called from line 11 of the program, with the argument .I lim equal to 5. You can look at the .I dumpcore() procedure by invoking the .I list request as follows: .DS (dbx)\c .UL " list dumpcore" 18 dumpcore(lim) /* dereference NULL pointer */ 19 int lim; 20 { 21 if (lim >= LIMIT) 22 *ip = lim; 23 } .DE We immediately suspect that the program's failure had something to do with .I *ip , so we use the .I print request to retrieve the value of the pointer and what it points to: .DS (dbx)\c .UL " print *ip" reference through nil pointer (dbx)\c .UL " print ip" (nil) .DE This tells us the program has dereferenced a null pointer. It is possible to run the program again from inside the debugger. The first line tells you name of the running program, and successive lines give output from the program: .DS (dbx)\c .UL " run" Goodbye world! (1) Goodbye world! (2) Goodbye world! (3) Goodbye world! (4) Goodbye world! (5) .sp.5 Bus error in dumpcore.dumpcore at line 22 22 *ip = lim; (dbx)\c .UL " quit" .DE In this example the program dies with a Bus error at line 22. This method of running the program does not produce a core dump, but the .I where request will still behave properly, because the debugger is in the same state as if it had just read the core file. .SH Setting Breakpoints .PP With .I dbx you can set breakpoints before each line of a program, not just at function and procedure boundaries, as with .I adb . The .I stop request sets a breakpoint. After setting a breakpoint, use the .I run request to execute the program. The .I cont request continues execution from the current stopping point until the program finishes or another breakpoint is encountered. The .I step request executes one source statement, following any function calls. The .I next request executes one source statement, but does not stop inside any function calls. The .I status request lists active breakpoints, while the .I delete request removes them if required. .PP The .I stop request can take a conditional expression to avoid needless single-stepping. We will use a conditional in our example to make things simpler. Of course you can use .I print and .I list requests at any time during statement stepping if you want to print the value of variables or list lines of source code. This sample session shows a mixture of requests as we verify that the program fails when it tries to assign to .I *ip : .DS (dbx)\c .UL " stop at 10 if (i == 5)" [1] if i = 5 { stop } at 10 (dbx)\c .UL " run" Goodbye world! (1) Goodbye world! (2) Goodbye world! (3) Goodbye world! (4) [1] stopped in main at line 10 10 printf("Goodbye world! (%d)\en", i); (dbx)\c .UL " next" Goodbye world! (5) stopped in main at line 11 11 dumpcore(i); (dbx)\c .UL " step" stopped in dumpcore at line 21 21 if (lim >= LIMIT) (dbx)\c .UL " step" stopped in dumpcore at line 22 22 *ip = lim; (dbx)\c .UL " step" Bus error in dumpcore.dumpcore at line 22 22 *ip = lim; .DE Running the program with breakpoints assures us that our intuition was correct. We shouldn't be assigning anything to a null pointer \(em .I ip should have been initialized to point at an object of the proper type. To exit from the debugger, use the .I quit request. .PP It is possible to set variables from inside .I dbx . The previous breakpoint session, for example, could have gone like this: .DS %\c .UL " dbx dumpcore" dbx version 3.17 of 4/24/86 15:04 (monet.Berkeley.EDU). Type 'help' for help. reading symbolic information ... [using memory image in core] (dbx)\c .UL " stop at 10" [1] stop at 10 (dbx)\c .UL " run" Running: dumpcore stopped in main at line 10 10 printf("Goodbye world! (%d)\en", i); (dbx)\c .UL " assign i = 5" (dbx)\c .UL " next" Goodbye world! (5) stopped in main at line 11 11 dumpcore(i); (dbx)\c .UL " next" Bus error in dumpcore.dumpcore at line 22 22 *ip = lim; .DE It is often useful to assign new values to variables to draw conclusions about alternative conditions. We can't fix the bug in this program, however, because there is no declared variable to which .I ip should point. .SH Conclusion .PP Expressions in .I dbx are similar to those in C, except that there is a distinction between .I / (floating-point division) and .I div (integer division), as in Pascal. The table on the following page shows .I dbx requests organized by function: .PP Like .I adb , .I dbx can disassemble object code. It can also examine object files and print output in various formats; but .I dbx requires the proper symbol tables, so .I adb is more useful to examine arbitrary binary files. The most important thing .I adb can do that .I dbx cannot is to patch binary files \(em .I dbx has no write option. Despite these shortcomings, .I dbx is much easier to use than .I adb , so it contributes much more to individual programmer productivity. .SH Acknowledgements .PP Material presented in this document was first presented in ``C Advisor'', \fIUnix Review 4\fP, 1, pp 78\-85. The Regents of the University California expresses their gratitude to Unix Review for allowing them to reprint this document. .PP This document is a good starting point for a more thorough tutorial. Those with the ambition to expand on this document are encouraged to contact the Computer Systems Research Group at ``4bsd-ideas@Berkeley.Edu.'' .KF .TS center box; cf s. .sp.2 \s+2Groups of \&\fIdbx\fP Requests\s-2 .sp.2 _ .T& l lfI lp-1fCW l. execution and tracing _ run execute object file cont continue execution from where it stopped trace display tracing information at specified place stop stop execution at specified place status display active \&\fItrace\fP and \&\fIstop\fP requests delete delete specific \&\fItrace\fP or \&\fIstop\fP requests catch start trapping specified signals ignore stop trapping specified signals step execute the next source line, stepping into functions next execute the next source line, even if it's a function .T& l lfI lp-1fCW l. _ displaying data _ print print the value of an expression whatis print the declaration of a given identifier or type which print outer block associated with identifier whereis print all symbols matching identifier assign set the value of a variable .T& l lfI lp-1fCW l. _ function and procedure handling _ where display active procedures and functions on stack down move down the stack towards stopping point up move up the stack towards \&\fImain\fP call call the named function or procedure dump display names and values of all local variables .T& l lfI lp-1fCW l. _ accessing source files and directories _ edit invoke an editor on current source file file change current source file func change the current function or procedure list display lines of source code use set directory list to search for source files /.../ search down in file to match regular expression ?...? search up in file to match regular expression .T& l lfI lp-1fCW l. _ miscellaneous commands _ sh pass command line to the shell alias change \&\fIdbx\fP command name help explain commands source read commands from external file quit exit the debugger .TE .KE .bp you can find out why the program died: .DS %\c .UL " dbx dumpcore" dbx version 3.17 of 4/24/86 15:04 (monet.Berkeley.EDU). Type 'help' for help. reading symbolic information ... [using memory image in core] (dbx)\c .UL " where" dumpcore.dumpcore(lim = 5), line 22 in "dumpcore.c" main(0x1, 0x7fffe904, 0x7fffe90c), line 11 in "dumpcore.c" .DE The .I where request yields a stack trace. As you can see, the .I dumpcore() routine was called from line 11 of thedoc/ps1/11.dbx/Makefile 444 3 12 1037 3657240550 7745 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 5/5/86 # PRINTER=-Pdp TROFF= ditroff ${PRINTER} TBL= dtbl ${PRINTER} LPR= lpr -n ${PRINTER} SRCS= dbx.ms paper: dbx.n ${LPR} dbx.n dbx.n: ${SRCS} ${TBL} ${SRCS} | ${TROFF} -t -msU >dbx.n clean: rm -f dbx.n spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done r symbol tables, so .I adb is more useful to exame arbitrary binary files. The most important thing .I adb can do that .I dbx cannot is to patch binary files \(em .I dbx has no write option. Despite these shortcomings, .I dbx is much easier to use than .I adb , so it contributes much more to individual programmer productivity. .SH Acknowledgements .PP Material presented in this document was first presented in ``C Advisor'', \fIUnix Review 4\fP, 1, pp 78\-85. The Regents of tdoc/ps1/11.dbx/spell.ok 444 3 12 266 3657242335 7745 Berkeley.Edu Berknet CW Linton MC68000 PS1:11 Tuthill UC VAX VMS cont dbx dbx''PS1:11 dbxenv div dumpcore dumpcore.c dumpcore.dumpcore func ip monet.Berkeley.EDU pathname pp stdio.h doc/ps1/12.make/ 755 3 12 0 3656766613 6376 doc/ps1/12.make/Makefile 444 3 12 1126 3656766611 10117 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 5/4/86 # SRCS= make.ms MACROS= -msU PRINTER=Pdp TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TROFF} ${MACROS} -t ${SRCS} > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done bitrary binary files. The most important thing .I adb can do that .I dbx cannot is to patch binary files \(em .I dbx has no write option. Despite these shortcomings, .I dbx is much easier to use than .I adb , so it contributes much more to individual programmer productivity. .SH Acknowledgements .PP Material presented in this document was first presented in ``C Advisor'', \fIUnix Review 4\fP, 1, pp 78\-85. The Regents of tdoc/ps1/12.make/make.ms 444 3 12 60227 3656766544 7771 .\" @(#)make 6.1 (Berkeley) 5/4/86 .\" .EH 'PS1:12-%''Make \(em A Program for Maintaining Computer Programs' .OH 'Make \(em A Program for Maintaining Computer Programs''PS1:12-%' .....TR 57 .\".RP .de IT .if n .ul \&\\$3\f2\\$1\fR\^\&\\$2 .. .TL Make \(em A Program for Maintaining Computer Programs .AU S. I. Feldman .AI .MH .AB .PP In a programming project, it is easy to lose track of which files need to be reprocessed or recompiled after a change is made in some part of the source. .I Make provides a simple mechanism for maintaining up-to-date versions of programs that result from many operations on a number of files. It is possible to tell .I Make the sequence of commands that create certain files, and the list of files that require other files to be current before the operations can be done. Whenever a change is made in any part of the program, the .I Make command will create the proper files simply, correctly, and with a minimum amount of effort. .PP The basic operation of .I Make is to find the name of a needed target in the description, ensure that all of the files on which it depends exist and are up to date, and then create the target if it has not been modified since its generators were. The description file really defines the graph of dependencies; .I Make does a depth-first search of this graph to determine what work is really necessary. .PP .I Make also provides a simple macro substitution facility and the ability to encapsulate commands in a single file for convenient administration. .sp 2 Revised April, 1986 .AE .SH Introduction .PP It is common practice to divide large programs into smaller, more manageable pieces. The pieces may require quite different treatments: some may need to be run through a macro processor, some may need to be processed by a sophisticated program generator (e.g., Yacc[1] or Lex[2]). The outputs of these generators may then have to be compiled with special options and with certain definitions and declarations. The code resulting from these transformations may then need to be loaded together with certain libraries under the control of special options. Related maintenance activities involve running complicated test scripts and installing validated modules. Unfortunately, it is very easy for a programmer to forget which files depend on which others, which files have been modified recently, and the exact sequence of operations needed to make or exercise a new version of the program. After a long editing session, one may easily lose track of which files have been changed and which object modules are still valid, since a change to a declaration can obsolete a dozen other files. Forgetting to compile a routine that has been changed or that uses changed declarations will result in a program that will not work, and a bug that can be very hard to track down. On the other hand, recompiling everything in sight just to be safe is very wasteful. .PP The program described in this report mechanizes many of the activities of program development and maintenance. If the information on inter-file dependences and command sequences is stored in a file, the simple command .DS make .DE is frequently sufficient to update the interesting files, regardless of the number that have been edited since the last ``make''. In most cases, the description file is easy to write and changes infrequently. It is usually easier to type the .IT make command than to issue even one of the needed operations, so the typical cycle of program development operations becomes .DS think \(em edit \(em \fImake\fR \(em test . . . .DE .PP .IT Make is most useful for medium-sized programming projects; it does not solve the problems of maintaining multiple source versions or of describing huge programs. .IT Make was designed for use on Unix, but a version runs on GCOS. .SH Basic Features .PP The basic operation of .IT make is to update a target file by ensuring that all of the files on which it depends exist and are up to date, then creating the target if it has not been modified since its dependents were. .IT Make does a depth-first search of the graph of dependences. The operation of the command depends on the ability to find the date and time that a file was last modified. .PP To illustrate, let us consider a simple example: A program named .IT prog is made by compiling and loading three C-language files .IT x.c , .IT y.c , and .IT z.c with the .IT lS library. By convention, the output of the C compilations will be found in files named .IT x.o , .IT y.o , and .IT z.o . Assume that the files .IT x.c and .IT y.c share some declarations in a file named .IT defs , but that .IT z.c does not. That is, .IT x.c and .IT y.c have the line .DS #include "defs" .DE The following text describes the relationships and operations: .DS prog : x.o y.o z.o cc x.o y.o z.o \-lS \-o prog .sp .5 x.o y.o : defs .DE If this information were stored in a file named .IT makefile , the command .DS make .DE would perform the operations needed to recreate .IT prog after any changes had been made to any of the four source files .IT x.c , .IT y.c , .IT z.c , or .IT defs . .PP .IT Make operates using three sources of information: a user-supplied description file (as above), file names and ``last-modified'' times from the file system, and built-in rules to bridge some of the gaps. In our example, the first line says that .IT prog depends on three ``\fI.o\fR'' files. Once these object files are current, the second line describes how to load them to create .IT prog . The third line says that .IT x.o and .IT y.o depend on the file .IT defs . From the file system, .IT make discovers that there are three ``\fI.c\fR'' files corresponding to the needed ``\fI.o\fR'' files, and uses built-in information on how to generate an object from a source file (\fIi.e.,\fR issue a ``cc\ \-c'' command). .PP The following long-winded description file is equivalent to the one above, but takes no advantage of .IT make 's innate knowledge: .DS prog : x.o y.o z.o cc x.o y.o z.o \-lS \-o prog .sp .3 x.o : x.c defs cc \-c x.c y.o : y.c defs cc \-c y.c z.o : z.c cc \-c z.c .DE .PP If none of the source or object files had changed since the last time .IT prog was made, all of the files would be current, and the command .DS make .DE would just announce this fact and stop. If, however, the .IT defs file had been edited, .IT x.c and .IT y.c (but not .IT z.c ) would be recompiled, and then .IT prog would be created from the new ``\fI.o\fR'' files. If only the file .IT y.c had changed, only it would be recompiled, but it would still be necessary to reload .IT prog . .PP If no target name is given on the .IT make command line, the first target mentioned in the description is created; otherwise the specified targets are made. The command .DS make x.o .DE would recompile .IT x.o if .IT x.c or .IT defs had changed. .PP If the file exists after the commands are executed, its time of last modification is used in further decisions; otherwise the current time is used. It is often quite useful to include rules with mnemonic names and commands that do not actually produce a file with that name. These entries can take advantage of .IT make 's ability to generate files and substitute macros. Thus, an entry ``save'' might be included to copy a certain set of files, or an entry ``cleanup'' might be used to throw away unneeded intermediate files. In other cases one may maintain a zero-length file purely to keep track of the time at which certain actions were performed. This technique is useful for maintaining remote archives and listings. .PP .IT Make has a simple macro mechanism for substituting in dependency lines and command strings. Macros are defined by command arguments or description file lines with embedded equal signs. A macro is invoked by preceding the name by a dollar sign; macro names longer than one character must be parenthesized. The name of the macro is either the single character after the dollar sign or a name inside parentheses. The following are valid macro invocations: .DS $(CFLAGS) $2 $(xy) $Z $(Z) .DE The last two invocations are identical. $$ is a dollar sign. All of these macros are assigned values during input, as shown below. Four special macros change values during the execution of the command: $\(**, $@, $?, and $<. They will be discussed later. The following fragment shows the use: .DS OBJECTS = x.o y.o z.o LIBES = \-lS prog: $(OBJECTS) cc $(OBJECTS) $(LIBES) \-o prog . . . .DE The command .DS make .DE loads the three object files with the .IT lS library. The command .DS make "LIBES= \-ll \-lS" .DE loads them with both the Lex (``\-ll'') and the Standard (``\-lS'') libraries, since macro definitions on the command line override definitions in the description. (It is necessary to quote arguments with embedded blanks in .UX commands.) .PP The following sections detail the form of description files and the command line, and discuss options and built-in rules in more detail. .SH Description Files and Substitutions .PP A description file contains three types of information: macro definitions, dependency information, and executable commands. There is also a comment convention: all characters after a sharp (#) are ignored, as is the sharp itself. Blank lines and lines beginning with a sharp are totally ignored. If a non-comment line is too long, it can be continued using a backslash. If the last character of a line is a backslash, the backslash, newline, and following blanks and tabs are replaced by a single blank. .PP A macro definition is a line containing an equal sign not preceded by a colon or a tab. The name (string of letters and digits) to the left of the equal sign (trailing blanks and tabs are stripped) is assigned the string of characters following the equal sign (leading blanks and tabs are stripped.) The following are valid macro definitions: .DS 2 = xyz abc = \-ll \-ly \-lS LIBES = .DE The last definition assigns LIBES the null string. A macro that is never explicitly defined has the null string as value. Macro definitions may also appear on the .IT make command line (see below). .PP Other lines give information about target files. The general form of an entry is: .DS target1 [target2 . . .] :[:] [dependent1 . . .] [; commands] [# . . .] [\fI(tab)\fR commands] [# . . .] . . . .DE Items inside brackets may be omitted. Targets and dependents are strings of letters, digits, periods, and slashes. (Shell metacharacters ``\(**'' and ``?'' are expanded.) A command is any string of characters not including a sharp (except in quotes) or newline. Commands may appear either after a semicolon on a dependency line or on lines beginning with a tab immediately following a dependency line. .PP A dependency line may have either a single or a double colon. A target name may appear on more than one dependency line, but all of those lines must be of the same (single or double colon) type. .IP 1. For the usual single-colon case, at most one of these dependency lines may have a command sequence associated with it. If the target is out of date with any of the dependents on any of the lines, and a command sequence is specified (even a null one following a semicolon or tab), it is executed; otherwise a default creation rule may be invoked. .IP 2. In the double-colon case, a command sequence may be associated with each dependency line; if the target is out of date with any of the files on a particular line, the associated commands are executed. A built-in rule may also be executed. This detailed form is of particular value in updating archive-type files. .PP If a target must be created, the sequence of commands is executed. Normally, each command line is printed and then passed to a separate invocation of the Shell after substituting for macros. (The printing is suppressed in silent mode or if the command line begins with an @ sign). .IT Make normally stops if any command signals an error by returning a non-zero error code. (Errors are ignored if the ``\-i'' flags has been specified on the .IT make command line, if the fake target name ``.IGNORE'' appears in the description file, or if the command string in the description file begins with a hyphen. Some .UX commands return meaningless status). Because each command line is passed to a separate invocation of the Shell, care must be taken with certain commands (e.g., \fIcd\fR and Shell control commands) that have meaning only within a single Shell process; the results are forgotten before the next line is executed. .PP Before issuing any command, certain macros are set. $@ is set to the name of the file to be ``made''. $? is set to the string of names that were found to be younger than the target. If the command was generated by an implicit rule (see below), $< is the name of the related file that caused the action, and $\(** is the prefix shared by the current and the dependent file names. .PP If a file must be made but there are no explicit commands or relevant built-in rules, the commands associated with the name ``.DEFAULT'' are used. If there is no such name, .IT make prints a message and stops. .SH Command Usage .PP The .IT make command takes four kinds of arguments: macro definitions, flags, description file names, and target file names. .DS make [ flags ] [ macro definitions ] [ targets ] .DE The following summary of the operation of the command explains how these arguments are interpreted. .PP First, all macro definition arguments (arguments with embedded equal signs) are analyzed and the assignments made. Command-line macros override corresponding definitions found in the description files. .PP Next, the flag arguments are examined. The permissible flags are .IP \-i Ignore error codes returned by invoked commands. This mode is entered if the fake target name ``.IGNORE'' appears in the description file. .IP \-s Silent mode. Do not print command lines before executing. This mode is also entered if the fake target name ``.SILENT'' appears in the description file. .IP \-r Do not use the built-in rules. .IP \-n No execute mode. Print commands, but do not execute them. Even lines beginning with an ``@'' sign are printed. .IP \-t Touch the target files (causing them to be up to date) rather than issue the usual commands. .IP \-q Question. The .IT make command returns a zero or non-zero status code depending on whether the target file is or is not up to date. .IP \-p Print out the complete set of macro definitions and target descriptions .IP \-d Debug mode. Print out detailed information on files and times examined. .IP \-f Description file name. The next argument is assumed to be the name of a description file. A file name of ``\-'' denotes the standard input. If there are no ``\-f\|'' arguments, the file named .IT makefile or .IT Makefile in the current directory is read. The contents of the description files override the built-in rules if they are present). .PP Finally, the remaining arguments are assumed to be the names of targets to be made; they are done in left to right order. If there are no such arguments, the first name in the description files that does not begin with a period is ``made''. .SH Implicit Rules .PP The .ul make program uses a table of interesting suffixes and a set of transformation rules to supply default dependency information and implied commands. (The Appendix describes these tables and means of overriding them.) The default suffix list is: .KS .sp .nf .ta 0.5i 1.5i \fI.o\fR Object file \fI.c\fR C source file \fI.e\fR Efl source file \fI.r\fR Ratfor source file \fI.f\fR Fortran source file \fI.s\fR Assembler source file \fI.y\fR Yacc-C source grammar \fI.yr\fR Yacc-Ratfor source grammar \fI.ye\fR Yacc-Efl source grammar \fI.l\fR Lex source grammar .fi .sp .KE The following diagram summarizes the default transformation paths. If there are two paths connecting a pair of suffixes, the longer one is used only if the intermediate file exists or is named in the description. .KS .sp .ft I .ta 2i .o .sp 2 .ta 0.75i 1.25i 1.6i 2.1i .c .r .e .f .s .y .yr .ye .l .d .sp 2 .ta 0.6i 1.25i 1.6i .y .l .yr .ye .ft R .sp .KE .PP If the file .ul x.o were needed and there were an .ul x.c in the description or directory, it would be compiled. If there were also an .IT x.l , that grammar would be run through Lex before compiling the result. However, if there were no .ul x.c but there were an .IT x.l , .IT make would discard the intermediate C-language file and use the direct link in the graph above. .PP It is possible to change the names of some of the compilers used in the default, or the flag arguments with which they are invoked by knowing the macro names used. The compiler names are the macros AS, CC, RC, EC, YACC, YACCR, YACCE, and LEX. The command .DS make CC=newcc .DE will cause the ``newcc'' command to be used instead of the usual C compiler. The macros CFLAGS, RFLAGS, EFLAGS, YFLAGS, and LFLAGS may be set to cause these commands to be issued with optional flags. Thus, .DS make "CFLAGS=\|\(miO" .DE causes the optimizing C compiler to be used. .PP Another special macro is `VPATH'. The ``VPATH'' macro should be set to a list of directories separated by colons. When .I make searches for a file as a result of a dependency relation, it will first search the current directory and then each of the directories on the ``VPATH'' list. If the file is found, the actual path to the file will be used, rather than just the filename. If ``VPATH'' is not defined, then only the current directory is searched. Note that ``VPATH'' is intended to act like the System V ``VPATH'' support, but there is no guarantee that it functions identically. .PP One use for ``VPATH'' is when one has several programs that compile from the same source. The source can be kept in one directory and each set of object files (along with a separate .IR makefile ) would be in a separate subdirectory. The ``VPATH'' macro would point to the source directory in this case. .SH Example .PP As an example of the use of .ul make, we will present the description file used to maintain the .ul make command itself. The code for .ul make is spread over a number of C source files and a Yacc grammar. The description file contains: .DS # Description file for the Make command .sp .3 P = und \-3 | opr \-r2 # send to GCOS to be printed FILES = Makefile version.c defs main.c doname.c misc.c files.c dosys.c\ gram.y lex.c gcos.c OBJECTS = version.o main.o doname.o misc.o files.o dosys.o gram.o LIBES= \-lS LINT = lint \-p CFLAGS = \-O .sp .3 make: $(OBJECTS) cc $(CFLAGS) $(OBJECTS) $(LIBES) \-o make size make .sp .3 $(OBJECTS): defs gram.o: lex.c .sp .3 cleanup: -rm *.o gram.c -du .sp .3 install: @size make /usr/bin/make cp make /usr/bin/make ; rm make .sp .3 print: $(FILES) # print recently changed files pr $? | $P touch print .sp .3 test: make \-dp | grep \-v TIME >1zap /usr/bin/make \-dp | grep \-v TIME >2zap diff 1zap 2zap rm 1zap 2zap .sp .3 lint : dosys.c doname.c files.c main.c misc.c version.c gram.c $(LINT) dosys.c doname.c files.c main.c misc.c version.c gram.c rm gram.c .sp .3 arch: ar uv /sys/source/s2/make.a $(FILES) .DE .IT Make usually prints out each command before issuing it. The following output results from typing the simple command .DS make .DE in a directory containing only the source and description file: .DS cc \-c version.c cc \-c main.c cc \-c doname.c cc \-c misc.c cc \-c files.c cc \-c dosys.c yacc gram.y mv y.tab.c gram.c cc \-c gram.c cc version.o main.o doname.o misc.o files.o dosys.o gram.o \-lS \-o make 13188+3348+3044 = 19580b = 046174b .DE Although none of the source files or grammars were mentioned by name in the description file, .IT make found them using its suffix rules and issued the needed commands. The string of digits results from the ``size make'' command; the printing of the command line itself was suppressed by an @ sign. The @ sign on the .IT size command in the description file suppressed the printing of the command, so only the sizes are written. .PP The last few entries in the description file are useful maintenance sequences. The ``print'' entry prints only the files that have been changed since the last ``make print'' command. A zero-length file .IT print is maintained to keep track of the time of the printing; the $? macro in the command line then picks up only the names of the files changed since .IT print was touched. The printed output can be sent to a different printer or to a file by changing the definition of the .IT P macro: .DS make print "P = opr \-sp" \fIor\fR make print "P= cat >zap" .DE .SH Suggestions and Warnings .PP The most common difficulties arise from .IT make 's specific meaning of dependency. If file .IT x.c has a ``#include "defs"'' line, then the object file .IT x.o depends on .IT defs ; the source file .IT x.c does not. (If .IT defs is changed, it is not necessary to do anything to the file .IT x.c , while it is necessary to recreate .IT x.o .) .PP To discover what .IT make would do, the ``\-n'' option is very useful. The command .DS make \-n .DE orders .IT make to print out the commands it would issue without actually taking the time to execute them. If a change to a file is absolutely certain to be benign (e.g., adding a new definition to an include file), the ``\-t'' (touch) option can save a lot of time: instead of issuing a large number of superfluous recompilations, .IT make updates the modification times on the affected file. Thus, the command .DS make \-ts .DE (``touch silently'') causes the relevant files to appear up to date. Obvious care is necessary, since this mode of operation subverts the intention of .IT make and destroys all memory of the previous relationships. .PP The debugging flag (``\-d'') causes .IT make to print out a very detailed description of what it is doing, including the file times. The output is verbose, and recommended only as a last resort. .SH Acknowledgments .PP I would like to thank S. C. Johnson for suggesting this approach to program maintenance control. I would like to thank S. C. Johnson and H. Gajewska for being the prime guinea pigs during development of .IT make . .SH References .IP 1. S. C. Johnson, ``Yacc \(em Yet Another Compiler-Compiler'', Bell Laboratories Computing Science Technical Report #32, July 1978. .IP 2. M. E. Lesk, ``Lex \(em A Lexical Analyzer Generator'', Computing Science Technical Report #39, October 1975. .bp .SH Appendix. Suffixes and Transformation Rules .PP The .ul make program itself does not know what file name suffixes are interesting or how to transform a file with one suffix into a file with another suffix. This information is stored in an internal table that has the form of a description file. If the ``\-r'' flag is used, this table is not used. .PP The list of suffixes is actually the dependency list for the name ``.SUFFIXES''; .ul make looks for a file with any of the suffixes on the list. If such a file exists, and if there is a transformation rule for that combination, .ul make acts as described earlier. The transformation rule names are the concatenation of the two suffixes. The name of the rule to transform a ``\fI.r\fR'' file to a ``\fI.o\fR'' file is thus ``\fI.r.o\fR''. If the rule is present and no explicit command sequence has been given in the user's description files, the command sequence for the rule ``.r.o'' is used. If a command is generated by using one of these suffixing rules, the macro $\(** is given the value of the stem (everything but the suffix) of the name of the file to be made, and the macro $< is the name of the dependent that caused the action. .PP The order of the suffix list is significant, since it is scanned from left to right, and the first name that is formed that has both a file and a rule associated with it is used. If new names are to be appended, the user can just add an entry for ``.SUFFIXES'' in his own description file; the dependents will be added to the usual list. A ``.SUFFIXES'' line without any dependents deletes the current list. (It is necessary to clear the current list if the order of names is to be changed). .PP The following is an excerpt from the default rules file: .DS .ta .5i 1i .SUFFIXES : .o .c .e .r .f .y .yr .ye .l .s YACC=yacc YACCR=yacc \-r YACCE=yacc \-e YFLAGS= LEX=lex LFLAGS= CC=cc AS=as \- CFLAGS= RC=ec RFLAGS= EC=ec EFLAGS= FFLAGS= .c.o : $(CC) $(CFLAGS) \-c $< .e.o .r.o .f.o : $(EC) $(RFLAGS) $(EFLAGS) $(FFLAGS) \-c $< .s.o : $(AS) \-o $@ $< .y.o : $(YACC) $(YFLAGS) $< $(CC) $(CFLAGS) \-c y.tab.c rm y.tab.c mv y.tab.o $@ .y.c : $(YACC) $(YFLAGS) $< mv y.tab.c $@ .DE of macro definitions and target descriptions .IP \-d Debug mode. Print out detailed information on files and times examined. .IP \-f Description file name. The next argument is assumed to be the name of a description file. A file name of ``\-'' denotes the standard input. If there are no ``\-f\|'' arguments, the file named .IT makefile or .IT Makefile in thdoc/ps1/13.rcs/ 755 3 12 0 3661275601 6235 doc/ps1/13.rcs/rcs.man 444 3 12 671 3660047071 7565 .\" @(#)rcs.man 6.1 (Berkeley) 5/7/86 .\" .TH CHUCK THIS .rs .rm }C .de }F .bp .. .de }H .ev 1 'sp .5i .ft 1 .ps 10 .if o .tl '\\*(]H'Introduction to RCS'PS1:13-%' .if e .tl 'PS1:13-%'Introduction to RCS'\\*(]H' .sp .5i .ev .ns .. .de TH .ds ]H \\$1\|(\|\\$2\|) .rs .bp .. .pn 5 .so man/ci.1 .so man/co.1 .so man/ident.1 .so man/merge.1 .so man/rcs.1 .so man/rcsdiff.1 .so man/rcsfile.5 .so man/rcsmerge.1 .so man/rlog.1 .so man/sccstorcs.1 doc/ps1/13.rcs/rcs.ms 444 3 12 26115 3660047072 7473 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)rcs.ms 6.1 (Berkeley) 5/7/86 .\" .OH 'Introduction to RCS''PS1:13-%' .EH 'PS1:13-%''Introduction to RCS' .TL An Introduction to the Revision Control System .AU Walter F. Tichy .AI Department of Computer Sciences Purdue University West Lafayette, IN 47907 .AB The Revision Control System (RCS) manages software libraries. It greatly increases programmer productivity by centralizing and cataloging changes to a software project. This document describes the benefits of using a source code control system. It then gives a tutorial introduction to the use of RCS. .AE .SH Functions of RCS .PP The Revision Control System (RCS) manages multiple revisions of text files. RCS automates the storing, retrieval, logging, identification, and merging of revisions. RCS is useful for text that is revised frequently, for example programs, documentation, graphics, papers, form letters, etc. It greatly increases programmer productivity by providing the following functions. .IP 1. RCS stores and retrieves multiple revisions of program and other text. Thus, one can maintain one or more releases while developing the next release, with a minimum of space overhead. Changes no longer destroy the original -- previous revisions remain accessible. .RS .IP a. Maintains each module as a tree of revisions. .IP b. Project libraries can be organized centrally, decentralized, or any way you like. .IP c. RCS works for any type of text: programs, documentation, memos, papers, graphics, VLSI layouts, form letters, etc. .RE .IP 2. RCS maintains a complete history of changes. Thus, one can find out what happened to a module easily and quickly, without having to compare source listings or having to track down colleagues. .RS .IP a. RCS performs automatic record keeping. .IP b. RCS logs all changes automatically. .IP c. RCS guarantees project continuity. .RE .IP 3. RCS manages multiple lines of development. .IP 4. RCS can merge multiple lines of development. Thus, when several parallel lines of development must be consolidated into one line, the merging of changes is automatic. .IP 5. RCS flags coding conflicts. If two or more lines of development modify the same section of code, RCS can alert programmers about overlapping changes. .IP 6. RCS resolves access conflicts. When two or more programmers wish to modify the same revision, RCS alerts the programmers and makes sure that one change will not wipe out the other one. .IP 7. RCS provides high-level retrieval functions. Revisions can be retrieved according to ranges of revision numbers, symbolic names, dates, authors, and states. .IP 8. RCS provides release and configuration control. Revisions can be marked as released, stable, experimental, etc. Configurations of modules can be described simply and directly. .IP 9. RCS performs automatic identification of modules with name, revision number, creation time, author, etc. Thus, it is always possible to determine which revisions of which modules make up a given configuration. .IP 10. Provides high-level management visibility. Thus, it is easy to track the status of a software project. .RS .IP a. RCS provides a complete change history. .IP b. RCS records who did what when to which revision of which module. .RE .IP 11. RCS is fully compatible with existing software development tools. RCS is unobtrusive -- its interface to the file system is such that all your existing software tools can be used as before. .IP 12. RCS' basic user interface is extremely simple. The novice only needs to learn two commands. Its more sophisticated features have been tuned towards advanced software development environments and the experienced software professional. .IP 13. RCS simplifies software distribution if customers also maintain sources with RCS. This technique assures proper identification of versions and configurations, and tracking of customer changes. Customer changes can be merged into distributed versions locally or by the development group. .IP 14. RCS needs little extra space for the revisions (only the differences). If intermediate revisions are deleted, the corresponding differences are compressed into the shortest possible form. .SH Getting Started with RCS .PP Suppose you have a file f.c that you wish to put under control of RCS. Invoke the checkin command: .DS ci f.c .DE This command creates f.c,v, stores f.c into it as revision 1.1, and deletes f.c. It also asks you for a description. The description should be a synopsis of the contents of the file. All later checkin commands will ask you for a log entry, which should summarize the changes that you made. .PP Files ending in ,v are called RCS files ("v" stands for "versions"), the others are called working files. To get back the working file f.c in the previous example, use the checkout command: .DS co f.c .DE This command extracts the latest revision from f.c,v and writes it into f.c. You can now edit f.c and check it in back in by invoking: .DS ci f.c .DE \fICi\fR increments the revision number properly. If \fIci\fR complains with the message .DS ci error: no lock set by .DE then your system administrator has decided to create all RCS files with the locking attribute set to ``strict''. With strict locking, you you must lock the revision during the previous checkout. Thus, your last checkout should have been .DS co -l f.c .DE Locking assures that you, and only you, can check in the next update, and avoids nasty problems if several people work on the same file. Of course, it is too late now to do the checkout with locking, because you probably modified f.c already, and a second checkout would overwrite your changes. Instead, invoke .DS rcs -l f.c .DE This command will lock the latest revision for you, unless somebody else got ahead of you already. If someone else has the lock you will have to negotiate your changes with them. .PP If your RCS file is private, i.e., if you are the only person who is going to deposit revisions into it, strict locking is not needed and you can turn it off. If strict locking is turned off, the owner off the RCS file need not have a lock for checkin; all others still do. Turning strict locking off and on is done with the commands: .DS rcs -U f.c and rcs -L f.c .DE You can set the locking to strict or non-strict on every RCS file. .PP If you do not want to clutter your working directory with RCS files, create a subdirectory called RCS in your working directory, and move all your RCS files there. RCS commands will look first into that directory to find needed files. All the commands discussed above will still work, without any change*. .FS * Pairs of RCS and working files can really be specified in 3 ways: a) both are given, b) only the working file is given, c) only the RCS file is given. Both files may have arbitrary path prefixes; RCS commands pair them up intelligently. .FE .PP To avoid the deletion of the working file during checkin (should you want to continue editing), invoke .DS ci -l f.c .DE This command checks in f.c as usual, but performs an additional checkout with locking. Thus, it saves you one checkout operation. There is also an option \fB-u\fR for \fIci\fR that does a checkin followed by a checkout without locking. This is useful if you want to compile the file after the checkin. Both options also update the identification markers in your file (see below). .PP You can give \fIci\fR the number you want assigned to a checked in revision. Assume all your revisions were numbered 1.1, 1.2, 1.3, etc., and you would like to start release 2. The command .DS ci -r2 f.c or ci -r2.1 f.c .DE assigns the number 2.1 to the new revision. From then on, \fIci\fR will number the subsequent revisions with 2.2, 2.3, etc. The corresponding \fIco\fR commands .DS co -r2 f.c and co -r2.1 f.c .DE retrieve the latest revision numbered 2.x and the revision 2.1, respectively. \fICo\fR without a revision number selects the latest revision on the "trunk", i.e., the highest revision with a number consisting of 2 fields. Numbers with more than 2 fields are needed for branches. For example, to start a branch at revision 1.3, invoke .DS ci -r1.3.1 f.c .DE This command starts a branch numbered 1 at revision 1.3, and assigns the number 1.3.1.1 to the new revision. For more information about branches, see \fIrcsfile\fR(5). .SH Automatic Identification .PP RCS can put special strings for identification into your source and object code. To obtain such identification, place the marker .DS $Header$ .DE into your text, for instance inside a comment. RCS will replace this marker with a string of the form .DS $Header: filename revisionnumber date time author state $ .DE You never need to touch this string, because RCS keeps it up to date automatically. To propagate the marker into your object code, simply put it into a literal character string. In C, this is done as follows: .DS static char rcsid[] = "$Header$"; .DE The command \fIident\fR extracts such markers from any file, even object code. Thus, \fIident\fR helps you to find out which revisions of which modules were used in a given program. .PP You may also find it useful to put the marker .DS $Log$ .DE into your text, inside a comment. This marker accumulates the log messages that are requested during checkin. Thus, you can maintain the complete history of your file directly inside it. There are several additional identification markers; see \fIco\fR (1) for details. .SH How to combine MAKE and RCS .PP If your RCS files are in the same directory as your working files, you can put a default rule into your makefile. Do not use a rule of the form .c,v.c, because such a rule keeps a copy of every working file checked out, even those you are not working on. Instead, use this: .DS .SUFFIXES: .c,v .c,v.o: co -q $*.c cc $(CFLAGS) -c $*.c rm -f $*.c prog: f1.o f2.o ..... cc f1.o f2.o ..... -o prog .DE This rule has the following effect. If a file f.c does not exist, and f.o is older than f.c,v, MAKE checks out f.c, compiles f.c into f.o, and then deletes f.c. From then on, MAKE will use f.o until you change f.c,v. .PP If f.c exists (presumably because you are working on it), the default rule .c.o takes precedence, and f.c is compiled into f.o, but not deleted. .PP If you keep your RCS file in the directory ./RCS, all this will not work and you have to write explicit checkout rules for every file, like .DS f1.c: RCS/f1.c,v; co -q f1.c .DE Unfortunately, these rules do not have the property of removing unneeded .c-files. .SH Additional Information on RCS .PP If you want to know more about RCS, for example how to work with a tree of revisions and how to use symbolic revision numbers, read the following paper: .sp 1 Walter F. Tichy, ``Design, Implementation, and Evaluation of a Revision Control System,'' in \fIProceedings of the 6th International Conference on Software Engineering\fR, IEEE, Tokyo, Sept. 1982. .PP Taking a look at the manual page \fIRCSFILE\fP(5) should also help to understand the revision tree permitted by RCS. directory in this case. .SH Example .PP As an example of the use of .ul make, we will present the description file used to maintain the .ul make command itself. The code for .ul make is spread over a number of C source files and a Yacc grammar. The description file contains: .DS # Description file for the Make command .sp .3 P = und \-3 | opr \-r2 # send to GCOS to be printed FILES = Makefile version.c defs main.c doname.c midoc/ps1/13.rcs/man 751 0 12 0 6045321107 12467 2/usr/src/new/rcs/mandoc/ps1/13.rcs/Makefile 444 3 12 1355 3660047073 7763 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 5/7/86 # SRCS= rcs.ms MSRC= rcs.man MACROS= -msU PRINTER=Pdp TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} manpg.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} lpr -${PRINTER} -n manpg.${PRINTER} paper.${PRINTER}: ${SRCS} ${TROFF} ${MACROS} -t ${SRCS} > paper.${PRINTER} manpg.${PRINTER}: ${MSRC} ${TROFF} -man -t ${MSRC} > manpg.${PRINTER} clean: rm -f manpg.[PT]* paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done rcs -l f.c .DE This command will lock the latest revision for you, unless somebody else got ahead of you already. If someone else has the lock you will have to negotiate your changes with them. .PP If your RCS file is private, i.e., if you are the only person who is going doc/ps1/14.sccs/ 755 3 12 0 3655011672 6401 doc/ps1/14.sccs/sccs.me 444 3 12 101031 3667447452 10012 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)sccs.me 6.3 (Berkeley) 5/30/86 .\" .eh '\fRPS1:14-%\fP''\fRAn Introduction to the Source Code Control System\fP' .oh '\fRAn Introduction to the Source Code Control System\fP''\fRPS1:14-%\fP' .ds S \s-1SCCS\s0 .ds I \s-1SID\s0 .nr bi 8n .ev 1 \" only for keeps .ss 16 .ev .\".he '\*S Introduction''%' .+c .(l C .sz 14 .b An Introduction to the Source Code Control System .sz .r .sp Eric Allman .i "Project Ingres" .i "University of California at Berkeley" .)l .sp 3 .pp .(f This is version 1.21 of this document. It was last modified on 12/5/80. .)f This document gives a quick introduction to using the Source Code Control System (\*S). The presentation is geared to programmers who are more concerned with what to do to get a task done rather than how it works; for this reason some of the examples are not well explained. For details of what the magic options do, see the section on .q "Further Information" . .(l F This is a working document. Please send any comments or suggestions to eric@Berkeley.Edu. .)l .sh 1 "Introduction" .pp \*S is a source management system. Such a system maintains a record of versions of a system; a record is kept with each set of changes of what the changes are, why they were made, and who made them and when. Old versions can be recovered, and different versions can be maintained simultaneously. In projects with more than one person, \*S will insure that two people are not editing the same file at the same time. .pp All versions of your program, plus the log and other information, is kept in a file called the .q "s-file" . There are three major operations that can be performed on the s-file: .np Get a file for compilation (not for editing). This operation retrieves a version of the file from the s-file. By default, the latest version is retrieved. This file is intended for compilation, printing, or whatever; it is specifically NOT intended to be edited or changed in any way; any changes made to a file retrieved in this way will probably be lost. .np Get a file for editing. This operation also retrieves a version of the file from the s-file, but this file is intended to be edited and then incorporated back into the s-file. Only one person may be editing a file at one time. .np Merge a file back into the s-file. This is the companion operation to (2). A new version number is assigned, and comments are saved explaining why this change was made. .sh 1 "Learning the Lingo" .pp There are a number of terms that are worth learning before we go any farther. .sh 2 "S-file" .pp The s-file is a single file that holds all the different versions of your file. The s-file is stored in differential format; .i i.e. , only the differences between versions are stored, rather than the entire text of the new version. This saves disk space and allows selective changes to be removed later. Also included in the s-file is some header information for each version, including the comments given by the person who created the version explaining why the changes were made. .sh 2 "Deltas" .pp Each set of changes to the s-file (which is approximately [but not exactly!] equivalent to a version of the file) is called a .i delta . Although technically a delta only includes the .i changes made, in practice it is usual for each delta to be made with respect to all the deltas that have occurred before\**. .(f \**This matches normal usage, where the previous changes are not saved at all, so all changes are automatically based on all other changes that have happened through history. .)f However, it is possible to get a version of the file that has selected deltas removed out of the middle of the list of changes \*- equivalent to removing your changes later. .sh 2 "\*I's (or, version numbers)" .pp A \*I (\*S Id) is a number that represents a delta. This is normally a two-part number consisting of a .q release number and a .q level number. Normally the release number stays the same, however, it is possible to move into a new release if some major change is being made. .pp Since all past deltas are normally applied, the \*I of the final delta applied can be used to represent a version number of the file as a whole. .sh 2 "Id keywords" .pp When you get a version of a file with intent to compile and install it (\c .i i.e. , something other than edit it), some special keywords are expanded inline by \*S. These .i "Id Keywords" can be used to include the current version number or other information into the file. All id keywords are of the form .b % \c .i x \c .b % , where .i x is an upper case letter. For example, .b %\&I\&% is the \*I of the latest delta applied, .b %\&W\&% includes the module name, \*I, and a mark that makes it findable by a program, and .b %\&G\&% is the date of the latest delta applied. There are many others, most of which are of dubious usefulness. .pp When you get a file for editing, the id keywords are not expanded; this is so that after you put them back in to the s-file, they will be expanded automatically on each new version. But notice: if you were to get them expanded accidently, then your file would appear to be the same version forever more, which would of course defeat the purpose. Also, if you should install a version of the program without expanding the id keywords, it will be impossible to tell what version it is (since all it will have is .q %\&W\&% or whatever). .sh 1 "Creating \*S Files" .pp To put source files into \*S format, run the following shell script from csh: .(b mkdir SCCS save foreach i (*.[ch]) sccs admin \-i$i $i mv $i save/$i end .)b This will put the named files into s-files in the subdirectory .q SCCS The files will be removed from the current directory and hidden away in the directory .q save , so the next thing you will probably want to do is to get all the files (described below). When you are convinced that \*S has correctly created the s-files, you should remove the directory .q save . .pp If you want to have id keywords in the files, it is best to put them in before you create the s-files. If you do not, .i admin will print .q "No Id Keywords (cm7)" , which is a warning message only. .sh 1 "Getting Files for Compilation" .pp To get a copy of the latest version of a file, run .(b sccs get prog.c .)b \*S will respond: .(b 1.1 87 lines .)b meaning that version 1.1 was retrieved\** .(f \**Actually, the \*I of the final delta applied was 1.1. .)f and that it has 87 lines. The file .i prog.c will be created in the current directory. The file will be read-only to remind you that you are not supposed to change it. .pp This copy of the file should not be changed, since \*S is unable to merge the changes back into the s-file. If you do make changes, they will be lost the next time someone does a .i get . .sh 1 "Changing Files (or, Creating Deltas)" .sh 2 "Getting a copy to edit" .pp To edit a source file, you must first get it, requesting permission to edit it\**: .(f \**The .q "edit" command is equivalent to using the \-e flag to .i "get" , as: .(l sccs get \-e prog.c .)l Keep this in mind when reading other documentation. .)f .(b sccs edit prog.c .)b The response will be the same as with .i get except that it will also say: .(b New delta 1.2 .)b You then edit it, using a standard text editor: .(b vi prog.c .)b .sh 2 "Merging the changes back into the s-file" .pp When the desired changes are made, you can put your changes into the \*S file using the .i delta command: .(b sccs delta prog.c .)b .pp Delta will prompt you for .q "comments?" before it merges the changes in. At this prompt you should type a one-line description of what the changes mean (more lines can be entered by ending each line except the last with a backslash\**). .(f \**Yes, this is a stupid default. .)f .i Delta will then type: .(b 1.2 5 inserted 3 deleted 84 unchanged .)b saying that delta 1.2 was created, and it inserted five lines, removed three lines, and left 84 lines unchanged\**. .(f \**Changes to a line are counted as a line deleted and a line inserted. .)f The .i prog.c file will be removed; it can be retrieved using .i get . .sh 2 "When to make deltas" .pp It is probably unwise to make a delta before every recompilation or test; otherwise, you tend to get a lot of deltas with comments like .q "fixed compilation problem in previous delta" or .q "fixed botch in 1.3" . However, it is very important to delta everything before installing a module for general use. A good technique is to edit the files you need, make all necessary changes and tests, compiling and editing as often as necessary without making deltas. When you are satisfied that you have a working version, delta everything being edited, re-get them, and recompile everything. .sh 2 "What's going on: the info command" .pp To find out what files where being edited, you can use: .(b sccs info .)b to print out all the files being edited and other information such as the name of the user who did the edit. Also, the command: .(b sccs check .)b is nearly equivalent to the .i info command, except that it is silent if nothing is being edited, and returns non-zero exit status if anything is being edited; it can be used in an .q install entry in a makefile to abort the install if anything has not been properly deltaed. .pp If you know that everything being edited should be deltaed, you can use: .(b sccs delta \`sccs tell\` .)b The .i tell command is similar to .i info except that only the names of files being edited are output, one per line. .pp All of these commands take a .b \-b flag to ignore .q branches (alternate versions, described later) and the .b \-u flag to only give files being edited by you. The .b \-u flag takes an optional .i user argument, giving only files being edited by that user. For example, .(b sccs info \-ujohn .)b gives a listing of files being edited by john. .sh 2 "ID keywords" .pp Id keywords can be inserted into your file that will be expanded automatically by .i get . For example, a line such as: .(b static char SccsId[] = "%\&W\&%\et%\&G\&%"; .)b will be replaced with something like: .(b static char SccsId[] = "@\&(#)prog.c 1.2 08/29/80"; .)b This tells you the name and version of the source file and the time the delta was created. The string .q "@\&(#)" is a special string which signals the beginning of an \*S Id keyword. .sh 3 "The what command" .pp To find out what version of a program is being run, use: .(b sccs what prog.c /usr/bin/prog .)b which will print all strings it finds that begin with .q "@\&(#)" . This works on all types of files, including binaries and libraries. For example, the above command will output something like: .(b prog.c: prog.c 1.2 08/29/80 /usr/bin/prog: prog.c 1.1 02/05/79 .)b From this I can see that the source that I have in prog.c will not compile into the same version as the binary in /usr/bin/prog. .sh 3 "Where to put id keywords" .pp ID keywords can be inserted anywhere, including in comments, but Id Keywords that are compiled into the object module are especially useful, since it lets you find out what version of the object is being run, as well as the source. However, there is a cost: data space is used up to store the keywords, and on small address space machines this may be prohibitive. .pp When you put id keywords into header files, it is important that you assign them to different variables. For example, you might use: .(b static char AccessSid[] = "%\&W\&% %\&G\&%"; .)b in the file .i access.h and: .(b static char OpsysSid[] = "%\&W\&% %\&G\&%"; .)b in the file .i opsys.h . Otherwise, you will get compilation errors because .q SccsId is redefined. The problem with this is that if the header file is included by many modules that are loaded together, the version number of that header file is included in the object module many times; you may find it more to your taste to put id keywords in header files in comments. .sh 2 "Keeping \*I's consistent across files" .pp With some care, it is possible to keep the \*I's consistent in multi-file systems. The trick here is to always .i edit all files at once. The changes can then be made to whatever files are necessary and then all files (even those not changed) are redeltaed. This can be done fairly easily by just specifying the name of the directory that the \*S files are in: .(b sccs edit SCCS .)b which will .i edit all files in that directory. To make the delta, use: .(b sccs delta SCCS .)b You will be prompted for comments only once. .sh 2 "Creating new releases" .pp When you want to create a new release of a program, you can specify the release number you want to create on the .i edit command. For example: .(b sccs edit \-r2 prog.c .)b will cause the next delta to be in release two (that is, it will be numbered 2.1). Future deltas will automatically be in release two. To change the release number of an entire system, use: .(b sccs edit \-r2 SCCS .)b .sh 1 "Restoring Old Versions" .sh 2 "Reverting to old versions" .pp Suppose that after delta 1.2 was stable you made and released a delta 1.3. But this introduced a bug, so you made a delta 1.4 to correct it. But 1.4 was still buggy, and you decided you wanted to go back to the old version. You could revert to delta 1.2 by choosing the \*I in a get: .(b sccs get \-r1.2 prog.c .)b This will produce a version of .i prog.c that is delta 1.2 that can be reinstalled so that work can proceed. .pp In some cases you don't know what the \*I of the delta you want is. However, you can revert to the version of the program that was running as of a certain date by using the .b \-c (cutoff) flag. For example, .(b sccs get \-c800722120000 prog.c .)b will retrieve whatever version was current as of July 22, 1980 at 12:00 noon. Trailing components can be stripped off (defaulting to their highest legal value), and punctuation can be inserted in the obvious places; for example, the above line could be equivalently stated: .(b sccs get \-c"80/07/22 12:00:00" prog.c .)b .sh 2 "Selectively deleting old deltas" .pp Suppose that you later decided that you liked the changes in delta 1.4, but that delta 1.3 should be removed. You could do this by .i excluding delta 1.3: .(b sccs edit \-x1.3 prog.c .)b When delta 1.5 is made, it will include the changes made in delta 1.4, but will exclude the changes made in delta 1.3. You can exclude a range of deltas using a dash. For example, if you want to get rid of 1.3 and 1.4 you can use: .(b sccs edit \-x1.3\-1.4 prog.c .)b which will exclude all deltas from 1.3 to 1.4. Alternatively, .(b sccs edit \-x1.3\-1 prog.c .)b will exclude a range of deltas from 1.3 to the current highest delta in release 1. .pp In certain cases when using .b \-x (or .b \-i ; see below) there will be conflicts between versions; for example, it may be necessary to both include and delete a particular line. If this happens, \*S always prints out a message telling the range of lines effected; these lines should then be examined very carefully to see if the version \*S got is ok. .pp Since each delta (in the sense of .q "a set of changes" ) can be excluded at will, that this makes it most useful to put each semantically distinct change into its own delta. .sh 1 "Auditing Changes" .sh 2 "The prt command" .pp When you created a delta, you presumably gave a reason for the delta to the .q "comments?" prompt. To print out these comments later, use: .(b sccs prt prog.c .)b This will produce a report for each delta of the \*I, time and date of creation, user who created the delta, number of lines inserted, deleted, and unchanged, and the comments associated with the delta. For example, the output of the above command might be: .(b D 1.2 80/08/29 12:35:31 bill 2 1 00005/00003/00084 removed "-q" option .sp \n(psu D 1.1 79/02/05 00:19:31 eric 1 0 00087/00000/00000 date and time created 80/06/10 00:19:31 by eric .)b .sh 2 "Finding why lines were inserted" .pp To find out why you inserted lines, you can get a copy of the file with each line preceded by the \*I that created it: .(b sccs get \-m prog.c .)b You can then find out what this delta did by printing the comments using .i prt . .pp To find out what lines are associated with a particular delta (\c .i e.g. , 1.3), use: .(b sccs get \-m \-p prog.c \(bv grep \'^1.3\' .)b The .b \-p flag causes \*S to output the generated source to the standard output rather than to a file. .sh 2 "Finding what changes you have made" .pp When you are editing a file, you can find out what changes you have made using: .(b sccs diffs prog.c .)b Most of the ``diff'' flags can be used. To pass the .b \-c flag, use .b \-C . .pp To compare two versions that are in deltas, use: .(b sccs sccsdiff -r1.3 -r1.6 prog.c .)b to see the differences between delta 1.3 and delta 1.6. .sh 1 "Shorthand Notations" .pp There are several sequences of commands that get executed frequently. .i Sccs tries to make it easy to do these. .sh 2 "Delget" .pp A frequent requirement is to make a delta of some file and then get that file. This can be done by using: .(b sccs delget prog.c .)b which is entirely equivalent to using: .(b sccs delta prog.c sccs get prog.c .)b The .q deledit command is equivalent to .q delget except that the .q edit command is used instead of the .q get command. .sh 2 "Fix" .pp Frequently, there are small bugs in deltas, e.g., compilation errors, for which there is no reason to maintain an audit trail. To .i replace a delta, use: .(b sccs fix \-r1.4 prog.c .)b This will get a copy of delta 1.4 of prog.c for you to edit and then delete delta 1.4 from the \*S file. When you do a delta of prog.c, it will be delta 1.4 again. The \-r flag must be specified, and the delta that is specified must be a leaf delta, i.e., no other deltas may have been made subsequent to the creation of that delta. .sh 2 "Unedit" .pp If you found you edited a file that you did not want to edit, you can back out by using: .(b sccs unedit prog.c .)b .sh 2 "The \-d flag" .pp If you are working on a project where the \*S code is in a directory somewhere, you may be able to simplify things by using a shell alias. For example, the alias: .(b alias syssccs sccs \-d/usr/src .)b will allow you to issue commands such as: .(b syssccs edit cmd/who.c .)b which will look for the file .q "/usr/src/cmd/SCCS/who.c" . The file .q who.c will always be created in your current directory regardless of the value of the \-d flag. .sh 1 "Using \*S on a Project" .pp Working on a project with several people has its own set of special problems. The main problem occurs when two people modify a file at the same time. \*S prevents this by locking an s-file while it is being edited. .pp As a result, files should not be reserved for editing unless they are actually being edited at the time, since this will prevent other people on the project from making necessary changes. For example, a good scenario for working might be: .(b sccs edit a.c g.c t.c vi a.c g.c t.c # do testing of the (experimental) version sccs delget a.c g.c t.c sccs info # should respond "Nothing being edited" make install .)b .pp As a general rule, all source files should be deltaed before installing the program for general use. This will insure that it is possible to restore any version in use at any time. .sh 1 "Saving Yourself" .sh 2 "Recovering a munged edit file" .pp Sometimes you may find that you have destroyed or trashed a file that you were trying to edit\**. .(f \**Or given up and decided to start over. .)f Unfortunately, you can't just remove it and re-\c .i edit it; \*S keeps track of the fact that someone is trying to edit it, so it won't let you do it again. Neither can you just get it using .i get , since that would expand the Id keywords. Instead, you can say: .(b sccs get \-k prog.c .)b This will not expand the Id keywords, so it is safe to do a delta with it. .pp Alternately, you can .i unedit and .i edit the file. .sh 2 "Restoring the s-file" .pp In particularly bad circumstances, the \*S file itself may get munged. The most common way this happens is that it gets edited. Since \*S keeps a checksum, you will get errors every time you read the file. To fix this checksum, use: .(b sccs admin \-z prog.c .)b .sh 1 "Using the Admin Command" .pp There are a number of parameters that can be set using the .i admin command. The most interesting of these are flags. Flags can be added by using the .b \-f flag. For example: .(b sccs admin \-fd1 prog.c .)b sets the .q d flag to the value .q 1 . This flag can be deleted by using: .(b sccs admin \-dd prog.c .)b The most useful flags are: .nr ii 7n .ip "b" Allow branches to be made using the \-b flag to .i edit . .ip "d\fISID\fP" Default \*I to be used on a .i get or .i edit . If this is just a release number it constrains the version to a particular release only. .ip "i" Give a fatal error if there are no Id Keywords in a file. This is useful to guarantee that a version of the file does not get merged into the s-file that has the Id Keywords inserted as constants instead of internal forms. .ip "y" The .q type of the module. Actually, the value of this flag is unused by \*S except that it replaces the .b %\&Y\&% keyword. .pp The .b \-t\fIfile\fR flag can be used to store descriptive text from .i file . This descriptive text might be the documentation or a design and implementation document. Using the .b \-t flag insures that if the \*S file is sent, the documentation will be sent also. If .i file is omitted, the descriptive text is deleted. To see the descriptive text, use .q "prt \-t" . .pp The .i admin command can be used safely any number of times on files. A file need not be gotten for .i admin to work. .sh 1 "Maintaining Different Versions (Branches)" .pp Sometimes it is convenient to maintain an experimental version of a program for an extended period while normal maintenance continues on the version in production. This can be done using a .q branch. Normally deltas continue in a straight line, each depending on the delta before. Creating a branch .q "forks off" a version of the program. .pp The ability to create branches must be enabled in advance using: .(b sccs admin \-fb prog.c .)b The .b \-fb flag can be specified when the \*S file is first created. .sh 2 "Creating a branch" .pp To create a branch, use: .(b sccs edit \-b prog.c .)b This will create a branch with (for example) \*I 1.5.1.1. The deltas for this version will be numbered 1.5.1.\c .i n . .sh 2 "Getting from a branch" .pp Deltas in a branch are normally not included when you do a get. To get these versions, you will have to say: .(b sccs get \-r1.5.1 prog.c .)b .sh 2 "Merging a branch back into the main trunk" .pp At some point you will have finished the experiment, and if it was successful you will want to incorporate it into the release version. But in the meantime someone may have created a delta 1.6 that you don't want to lose. The commands: .(b sccs edit \-i1.5.1.1\-1.5.1 prog.c sccs delta prog.c .)b will merge all of your changes into the release system. If some of the changes conflict, get will print an error; the generated result should be carefully examined before the delta is made. .sh 2 "A more detailed example" .pp The following technique might be used to maintain a different version of a program. First, create a directory to contain the new version: .(b mkdir ../newxyz cd ../newxyz .)b Edit a copy of the program on a branch: .(b sccs \-d../xyz edit prog.c .)b When using the old version, be sure to use the .b \-b flag to info, check, tell, and clean to avoid confusion. For example, use: .(b sccs info \-b .)b when in the directory .q xyz . .pp If you want to save a copy of the program (still on the branch) back in the s-file, you can use: .(b sccs -d../xyz deledit prog.c .)b which will do a delta on the branch and reedit it for you. .pp When the experiment is complete, merge it back into the s-file using delta: .(b sccs -d../xyz delta prog.c .)b At this point you must decide whether this version should be merged back into the trunk (\c .i i.e. the default version), which may have undergone changes. If so, it can be merged using the .b \-i flag to .i edit as described above. .sh 2 "A warning" .pp Branches should be kept to a minimum. After the first branch from the trunk, \*I's are assigned rather haphazardly, and the structure gets complex fast. .sh 1 "Using \*S with Make" .pp \*S and make can be made to work together with a little care. A few sample makefiles for common applications are shown. .pp There are a few basic entries that every makefile ought to have. These are: .nr ii 1i .ip a.out (or whatever the makefile generates.) This entry regenerates whatever this makefile is supposed to regenerate. If the makefile regenerates many things, this should be called .q all and should in turn have dependencies on everything the makefile can generate. .ip install Moves the objects to the final resting place, doing any special .i chmod 's or .i ranlib 's as appropriate. .ip sources Creates all the source files from \*S files. .ip clean Removes all files from the current directory that can be regenerated from \*S files. .ip print Prints the contents of the directory. .lp The examples shown below are only partial examples, and may omit some of these entries when they are deemed to be obvious. .pp The .i clean entry should not remove files that can be regenerated from the \*S files. It is sufficiently important to have the source files around at all times that the only time they should be removed is when the directory is being mothballed. To do this, the command: .(b sccs clean .)b can be used. This will remove all files for which an s-file exists, but which is not being edited. .sh 2 "To maintain single programs" .pp Frequently there are directories with several largely unrelated programs (such as simple commands). These can be put into a single makefile: .(b LDFLAGS= \-i \-s .sp \n(psu prog: prog.o $(CC) $(LDFLAGS) \-o prog prog.o prog.o: prog.c prog.h .sp \n(psu example: example.o $(CC) $(LDFLAGS) \-o example example.o example.o: example.c .sp \n(psu \&.DEFAULT: sccs get $< .)b The trick here is that the .DEFAULT rule is called every time something is needed that does not exist, and no other rule exists to make it. The explicit dependency of the .b \&.o file on the .b \&.c file is important. Another way of doing the same thing is: .(b SRCS= prog.c prog.h example.c .sp \n(psu LDFLAGS= \-i \-s .sp \n(psu prog: prog.o $(CC) $(LDFLAGS) \-o prog prog.o prog.o: prog.h .sp \n(psu example: example.o $(CC) $(LDFLAGS) \-o example example.o .sp \n(psu sources: $(SRCS) $(SRCS): sccs get $@ .)b There are a couple of advantages to this approach: (1) the explicit dependencies of the .o on the .c files are not needed, (2) there is an entry called "sources" so if you want to get all the sources you can just say .q "make sources" , and (3) the makefile is less likely to do confusing things since it won't try to .i get things that do not exist. .sh 2 "To maintain a library" .pp Libraries that are largely static are best updated using explicit commands, since .i make doesn't know about updating them properly. However, libraries that are in the process of being developed can be handled quite adequately. The problem is that the .o files have to be kept out of the library as well as in the library. .(b # configuration information OBJS= a.o b.o c.o d.o SRCS= a.c b.c c.c d.s x.h y.h z.h TARG= /usr/lib .sp \n(psu # programs GET= sccs get REL= AR= \-ar RANLIB= ranlib .sp \n(psu lib.a: $(OBJS) $(AR) rvu lib.a $(OBJS) $(RANLIB) lib.a .sp \n(psu install: lib.a sccs check cp lib.a $(TARG)/lib.a $(RANLIB) $(TARG)/lib.a .sp \n(psu sources: $(SRCS) $(SRCS): $(GET) $(REL) $@ .sp \n(psu print: sources pr *.h *.[cs] clean: rm \-f *.o rm \-f core a.out $(LIB) .)b .pp The .q "$(REL)" in the get can be used to get old versions easily; for example: .(b make b.o REL=\-r1.3 .)b .pp The .i install entry includes the line .q "sccs check" before anything else. This guarantees that all the s-files are up to date (\c .i i.e. , nothing is being edited), and will abort the .i make if this condition is not met. .sh 2 "To maintain a large program" .(b OBJS= a.o b.o c.o d.o SRCS= a.c b.c c.y d.s x.h y.h z.h .sp \n(psu GET= sccs get REL= .sp \n(psu a.out: $(OBJS) $(CC) $(LDFLAGS) $(OBJS) $(LIBS) .sp \n(psu sources: $(SRCS) $(SRCS): $(GET) $(REL) $@ .)b (The .i print and .i clean entries are identical to the previous case.) This makefile requires copies of the source and object files to be kept during development. It is probably also wise to include lines of the form: .(b a.o: x.h y.h b.o: z.h c.o: x.h y.h z.h z.h: x.h .)b so that modules will be recompiled if header files change. .pp Since .i make does not do transitive closure on dependencies, you may find in some makefiles lines like: .(b z.h: x.h touch z.h .)b This would be used in cases where file z.h has a line: .(b #include "x.h" .)b in order to bring the mod date of z.h in line with the mod date of x.h. When you have a makefile such as above, the .i touch command can be removed completely; the equivalent effect will be achieved by doing an automatic .i get on z.h. .sh 1 "Further Information" .pp The .i "SCCS/PWB User's Manual" gives a deeper description of how to use \*S. Of particular interest are the numbering of branches, the l-file, which gives a description of what deltas were used on a get, and certain other \*S commands. .pp The \*S manual pages are a good last resort. These should be read by software managers and by people who want to know everything about everything. .pp Both of these documents were written without the .i sccs front end in mind, so most of the examples are slightly different from those in this document. .bp .sz 12 .ce .b "Quick Reference" .sz .sp 2 .sh 1 Commands 1 .pp The following commands should all be preceded with .q sccs . This list is not exhaustive; for more options see .i "Further Information" . .ip get 9n Gets files for compilation (not for editing). Id keywords are expanded. .ba 9n .nr ii 8n .ip \-r\fI\*I\fP Version to get. .ip \-p Send to standard output rather than to the actual file. .ip \-k Don't expand id keywords. .ip \-i\fIlist\fP List of deltas to include. .ip \-x\fIlist\fP List of deltas to exclude. .ip \-m Precede each line with \*I of creating delta. .ip \-c\fIdate\fP Don't apply any deltas created after .i date. .ba .ip edit 9n Gets files for editing. Id keywords are not expanded. Should be matched with a .i delta command. .ba 9n .nr ii 8n .ip \-r\fI\*I\fP Same as .i get . If .i \*I specifies a release that does not yet exist, the highest numbered delta is retrieved and the new delta is numbered with .i \*I . .ip \-b Create a branch. .ip \-i\fIlist\fP Same as .i get . .ip \-x\fIlist\fP Same as .i get . .ba .ip delta 9n Merge a file gotten using .i edit back into the s-file. Collect comments about why this delta was made. .ip unedit 9n Remove a file that has been edited previously without merging the changes into the s-file. .ip prt 9n Produce a report of changes. .ba 9n .nr ii 5n .ip \-t Print the descriptive text. .ip \-e Print (nearly) everything. .ba .ip info 9n Give a list of all files being edited. .ba 9n .nr ii 5n .ip \-b Ignore branches. .ip \-u[\fIuser\fP] Ignore files not being edited by .i user . .ba .ip check 9n Same as .i info , except that nothing is printed if nothing is being edited and exit status is returned. .ip tell 9n Same as .i info , except that one line is produced per file being edited containing only the file name. .ip clean 9n Remove all files that can be regenerated from the s-file. .ip what 9n Find and print id keywords. .ip admin 9n Create or set parameters on s-files. .ba 9n .nr ii 8n .ip \-i\fIfile\fP Create, using .i file as the initial contents. .ip \-z Rebuild the checksum in case the file has been trashed. .ip \-f\fIflag\fP Turn on the .i flag . .ip \-d\fIflag\fP Turn off (delete) the .i flag . .ip \-t\fIfile\fP Replace the descriptive text in the s-file with the contents of .i file . If .i file is omitted, the text is deleted. Useful for storing documentation or .q "design & implementation" documents to insure they get distributed with the s-file. .lp Useful flags are: .ip b Allow branches to be made using the \-b flag to .i edit. .ip d\fI\*I\fP Default \*I to be used on a .i get or .i edit . .ip i Cause .q "No Id Keywords" error message to be a fatal error rather than a warning. .ip t The module .q type ; the value of this flag replaces the .b %\&Y\&% keyword. .ba .ip fix 9n Remove a delta and reedit it. .ip delget 9n Do a .i delta followed by a .i get . .ip deledit 9n Do a .i delta followed by an .i edit . .sh 1 "Id Keywords" .nr ii 6n .ip "%\&Z\&%" Expands to .q @\&(#) for the .i what command to find. .ip "%\&M\&%" The current module name, .i e.g., .q prog.c . .ip "%\&I\&%" The highest \*I applied. .ip "%\&W\&%" A shorthand for .q "%\&Z\&%%\&M\&% %\&I\&%" . .ip "%\&G\&%" The date of the delta corresponding to the .q "%\&I\&%" keyword. .ip "%\&R\&%" The current release number, .i i.e. , the first component of the .q "%\&I\&%" keyword. .ip "%\&Y\&%" Replaced by the value of the .b t flag (set by .i admin ). ccs delta prog.c .)b will merge all of your changes into the release system. If some of the changes conflict, get will print an error; the generated result should be carefully examined before the delta is made. .sh 2 "A more detailed example" .pp The following technique might be used to maintain a different version of a program. First, create a directory to contain the new version: .(b mkdir ../newxyz cd ../newxyz .)b Edit a copy of the program on a branch: .(b sccs \-d../xyz edit pdoc/ps1/14.sccs/Makefile 444 3 12 1133 3652315645 10126 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 4/20/86 # SRCS= sccs.me MACROS= -me PRINTER=Pdp TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TROFF} ${MACROS} -t ${SRCS} > paper.${PRINTER} clean: rm -f paper.${PRINTER} *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done ii 8n .ip \-i\fIfile\fP Create, using .i file as the initial contents. .ip \-z Rebuild the checksum in case the file has been trashed. .ip \-f\fIflag\fP Turn on the .i flag . .ip \-d\fIflag\fP Turn off (delete) the .i flag . .ip \-t\fIfile\fP Replace the descriptive text in the s-file with the contents of .i file . If .i file is omitted, the text is deleted. Useful for storing documentation or .q "design & implementatdoc/ps1/14.sccs/spell.ok 444 3 12 710 3653526477 10130 AccessSid Admin Allman Berkeley.Edu Delget Ingres LDFLAGS LIB LIBS OBJS OpsysSid PS1:14 PWB REL SCCS SID SRCS Sccs SccsId System''PS1:14 TARG a.c a.o a.out access.h admin b.c b.o backslash bi c.c c.o c.y ch cm7 cmd cs d.o d.s deledit delget eric example.c example.o fb fd1 foreach g.c info inline john lib lib.a makefile makefiles mod mothballed newxyz ok opsys.h prog prog.c prog.h prog.o prt rvu sccs sccsdiff src syssccs t.c ujohn who.c x.h xyz y.h z.h doc/ps1/15.yacc/ 755 3 12 0 3660052503 6360 doc/ps1/15.yacc/ssd 444 3 12 2513 3660052102 7153 .\" @(#)ssd 6.1 (Berkeley) 5/8/86 .\" .SH Appendix D: Old Features Supported but not Encouraged .PP This Appendix mentions synonyms and features which are supported for historical continuity, but, for various reasons, are not encouraged. .IP 1. Literals may also be delimited by double quotes ``"''. .IP 2. Literals may be more than one character long. If all the characters are alphabetic, numeric, or \_, the type number of the literal is defined, just as if the literal did not have the quotes around it. Otherwise, it is difficult to find the value for such literals. .IP The use of multi-character literals is likely to mislead those unfamiliar with Yacc, since it suggests that Yacc is doing a job which must be actually done by the lexical analyzer. .IP 3. Most places where % is legal, backslash ``\e'' may be used. In particular, \e\e is the same as %%, \eleft the same as %left, etc. .IP 4. There are a number of other synonyms: .DS %< is the same as %left %> is the same as %right %binary and %2 are the same as %nonassoc %0 and %term are the same as %token %= is the same as %prec .DE .IP 5. Actions may also have the form .DS ={ . . . } .DE and the curly braces can be dropped if the action is a single C statement. .IP 6. C code between %{ and %} used to be permitted at the head of the rules section, as well as in the declaration section. value of this flag replaces the .b %\&Y\&% keyword. .ba .ip fix 9n Remove a delta and reedit it. .ip delget 9n Do a .i delta followed by a .i get . .ip deledit 9n Do a .i delta folldoc/ps1/15.yacc/ssc 444 3 12 20470 3660052064 7203 .\" @(#)ssc 6.1 (Berkeley) 5/8/86 .\" .SH Appendix C: An Advanced Example .PP This Appendix gives an example of a grammar using some of the advanced features discussed in Section 10. The desk calculator example in Appendix A is modified to provide a desk calculator that does floating point interval arithmetic. The calculator understands floating point constants, the arithmetic operations +, \-, *, /, unary \-, and = (assignment), and has 26 floating point variables, ``a'' through ``z''. Moreover, it also understands .I intervals , written .DS ( x , y ) .DE where .I x is less than or equal to .I y . There are 26 interval valued variables ``A'' through ``Z'' that may also be used. The usage is similar to that in Appendix A; assignments return no value, and print nothing, while expressions print the (floating or interval) value. .PP This example explores a number of interesting features of Yacc and C. Intervals are represented by a structure, consisting of the left and right endpoint values, stored as .I double 's. This structure is given a type name, INTERVAL, by using .I typedef . The Yacc value stack can also contain floating point scalars, and integers (used to index into the arrays holding the variable values). Notice that this entire strategy depends strongly on being able to assign structures and unions in C. In fact, many of the actions call functions that return structures as well. .PP It is also worth noting the use of YYERROR to handle error conditions: division by an interval containing 0, and an interval presented in the wrong order. In effect, the error recovery mechanism of Yacc is used to throw away the rest of the offending line. .PP In addition to the mixing of types on the value stack, this grammar also demonstrates an interesting use of syntax to keep track of the type (e.g. scalar or interval) of intermediate expressions. Note that a scalar can be automatically promoted to an interval if the context demands an interval value. This causes a large number of conflicts when the grammar is run through Yacc: 18 Shift/Reduce and 26 Reduce/Reduce. The problem can be seen by looking at the two input lines: .DS 2.5 + ( 3.5 \- 4. ) .DE and .DS 2.5 + ( 3.5 , 4. ) .DE Notice that the 2.5 is to be used in an interval valued expression in the second example, but this fact is not known until the ``,'' is read; by this time, 2.5 is finished, and the parser cannot go back and change its mind. More generally, it might be necessary to look ahead an arbitrary number of tokens to decide whether to convert a scalar to an interval. This problem is evaded by having two rules for each binary interval valued operator: one when the left operand is a scalar, and one when the left operand is an interval. In the second case, the right operand must be an interval, so the conversion will be applied automatically. Despite this evasion, there are still many cases where the conversion may be applied or not, leading to the above conflicts. They are resolved by listing the rules that yield scalars first in the specification file; in this way, the conflicts will be resolved in the direction of keeping scalar valued expressions scalar valued until they are forced to become intervals. .PP This way of handling multiple types is very instructive, but not very general. If there were many kinds of expression types, instead of just two, the number of rules needed would increase dramatically, and the conflicts even more dramatically. Thus, while this example is instructive, it is better practice in a more normal programming language environment to keep the type information as part of the value, and not as part of the grammar. .PP Finally, a word about the lexical analysis. The only unusual feature is the treatment of floating point constants. The C library routine .I atof is used to do the actual conversion from a character string to a double precision value. If the lexical analyzer detects an error, it responds by returning a token that is illegal in the grammar, provoking a syntax error in the parser, and thence error recovery. .DS L %{ # include # include typedef struct interval { double lo, hi; } INTERVAL; INTERVAL vmul(), vdiv(); double atof(); double dreg[ 26 ]; INTERVAL vreg[ 26 ]; %} %start lines %union { int ival; double dval; INTERVAL vval; } %token DREG VREG /* indices into dreg, vreg arrays */ %token CONST /* floating point constant */ %type dexp /* expression */ %type vexp /* interval expression */ /* precedence information about the operators */ %left \'+\' \'\-\' %left \'*\' \'/\' %left UMINUS /* precedence for unary minus */ %% lines : /* empty */ | lines line ; line : dexp \'\en\' { printf( "%15.8f\en", $1 ); } | vexp \'\en\' { printf( "(%15.8f , %15.8f )\en", $1.lo, $1.hi ); } | DREG \'=\' dexp \'\en\' { dreg[$1] = $3; } | VREG \'=\' vexp \'\en\' { vreg[$1] = $3; } | error \'\en\' { yyerrok; } ; dexp : CONST | DREG { $$ = dreg[$1]; } | dexp \'+\' dexp { $$ = $1 + $3; } | dexp \'\-\' dexp { $$ = $1 \- $3; } | dexp \'*\' dexp { $$ = $1 * $3; } | dexp \'/\' dexp { $$ = $1 / $3; } | \'\-\' dexp %prec UMINUS { $$ = \- $2; } | \'(\' dexp \')\' { $$ = $2; } ; vexp : dexp { $$.hi = $$.lo = $1; } | \'(\' dexp \',\' dexp \')\' { $$.lo = $2; $$.hi = $4; if( $$.lo > $$.hi ){ printf( "interval out of order\en" ); YYERROR; } } | VREG { $$ = vreg[$1]; } | vexp \'+\' vexp { $$.hi = $1.hi + $3.hi; $$.lo = $1.lo + $3.lo; } | dexp \'+\' vexp { $$.hi = $1 + $3.hi; $$.lo = $1 + $3.lo; } | vexp \'\-\' vexp { $$.hi = $1.hi \- $3.lo; $$.lo = $1.lo \- $3.hi; } | dexp \'\-\' vexp { $$.hi = $1 \- $3.lo; $$.lo = $1 \- $3.hi; } | vexp \'*\' vexp { $$ = vmul( $1.lo, $1.hi, $3 ); } | dexp \'*\' vexp { $$ = vmul( $1, $1, $3 ); } | vexp \'/\' vexp { if( dcheck( $3 ) ) YYERROR; $$ = vdiv( $1.lo, $1.hi, $3 ); } | dexp \'/\' vexp { if( dcheck( $3 ) ) YYERROR; $$ = vdiv( $1, $1, $3 ); } | \'\-\' vexp %prec UMINUS { $$.hi = \-$2.lo; $$.lo = \-$2.hi; } | \'(\' vexp \')\' { $$ = $2; } ; %% # define BSZ 50 /* buffer size for floating point numbers */ /* lexical analysis */ yylex(){ register c; while( (c=getchar()) == \' \' ){ /* skip over blanks */ } if( isupper( c ) ){ yylval.ival = c \- \'A\'; return( VREG ); } if( islower( c ) ){ yylval.ival = c \- \'a\'; return( DREG ); } if( isdigit( c ) || c==\'.\' ){ /* gobble up digits, points, exponents */ char buf[BSZ+1], *cp = buf; int dot = 0, exp = 0; for( ; (cp\-buf)= BSZ ) printf( "constant too long: truncated\en" ); else ungetc( c, stdin ); /* push back last char read */ yylval.dval = atof( buf ); return( CONST ); } return( c ); } INTERVAL hilo( a, b, c, d ) double a, b, c, d; { /* returns the smallest interval containing a, b, c, and d */ /* used by *, / routines */ INTERVAL v; if( a>b ) { v.hi = a; v.lo = b; } else { v.hi = b; v.lo = a; } if( c>d ) { if( c>v.hi ) v.hi = c; if( dv.hi ) v.hi = d; if( c= 0. && v.lo <= 0. ){ printf( "divisor interval contains 0.\en" ); return( 1 ); } return( 0 ); } INTERVAL vdiv( a, b, v ) double a, b; INTERVAL v; { return( hilo( a/v.hi, a/v.lo, b/v.hi, b/v.lo ) ); } .DE .bp ary. .(b # configuration information OBJS= a.o b.o c.o d.o SRCS= a.c b.c c.c d.s x.h y.h z.h TARG= /usr/lib .sp \n(psu # programs GET= sccs get REL= AR= \-ar RANLIB= ranlib .sp \n(psu lib.a: $(OBJS) doc/ps1/15.yacc/ssb 444 3 12 5056 3660052036 7164 .\" @(#)ssb 6.1 (Berkeley) 5/8/86 .\" .SH Appendix B: Yacc Input Syntax .PP This Appendix has a description of the Yacc input syntax, as a Yacc specification. Context dependencies, etc., are not considered. Ironically, the Yacc input specification language is most naturally specified as an LR(2) grammar; the sticky part comes when an identifier is seen in a rule, immediately following an action. If this identifier is followed by a colon, it is the start of the next rule; otherwise it is a continuation of the current rule, which just happens to have an action embedded in it. As implemented, the lexical analyzer looks ahead after seeing an identifier, and decide whether the next token (skipping blanks, newlines, comments, etc.) is a colon. If so, it returns the token C_IDENTIFIER. Otherwise, it returns IDENTIFIER. Literals (quoted strings) are also returned as IDENTIFIERS, but never as part of C_IDENTIFIERs. .sp .nf .ta .6i 1.2i 1.8i 2.4i 3i 3.6i /* grammar for the input to Yacc */ /* basic entities */ %token IDENTIFIER /* includes identifiers and literals */ %token C_IDENTIFIER /* identifier (but not literal) followed by colon */ %token NUMBER /* [0-9]+ */ /* reserved words: %type => TYPE, %left => LEFT, etc. */ %token LEFT RIGHT NONASSOC TOKEN PREC TYPE START UNION %token MARK /* the %% mark */ %token LCURL /* the %{ mark */ %token RCURL /* the %} mark */ /* ascii character literals stand for themselves */ %start spec %% spec : defs MARK rules tail ; tail : MARK { \fIIn this action, eat up the rest of the file\fR } | /* empty: the second MARK is optional */ ; defs : /* empty */ | defs def ; def : START IDENTIFIER | UNION { \fICopy union definition to output\fR } | LCURL { \fICopy C code to output file\fR } RCURL | ndefs rword tag nlist ; rword : TOKEN | LEFT | RIGHT | NONASSOC | TYPE ; tag : /* empty: union tag is optional */ | \'<\' IDENTIFIER \'>\' ; nlist : nmno | nlist nmno | nlist \',\' nmno ; nmno : IDENTIFIER /* NOTE: literal illegal with %type */ | IDENTIFIER NUMBER /* NOTE: illegal with %type */ ; /* rules section */ rules : C_IDENTIFIER rbody prec | rules rule ; rule : C_IDENTIFIER rbody prec | '|' rbody prec ; rbody : /* empty */ | rbody IDENTIFIER | rbody act ; act : \'{\' { \fICopy action, translate $$, etc.\fR } \'}\' ; prec : /* empty */ | PREC IDENTIFIER | PREC IDENTIFIER act | prec \';\' ; .fi .bp \' \'\-\' %left \'*\' \'/\' %left UMINUS /* precedence for unary minus */ %% lines : /* empty */ | lines line ; line : dexp \'\en\' { printf( "%15.8f\en", $1 ); } | vexp \'\en\' { printf( "(%15.8f , %15.8f )\en", $1.lo, $1.hi ); } | DREG \'=\' dexp \'\en\' { dreg[$1] = $3; } | VREG \'=\' vexp \'\en\' { vreg[$1] = $3; } | error \'\en\' { yyerrok; } ; dexp : CONST | DREG { $$ = dreg[$1]; doc/ps1/15.yacc/ssa 444 3 12 5367 3660052015 7165 .\" @(#)ssa 6.1 (Berkeley) 5/8/86 .\" .SH Appendix A: A Simple Example .PP This example gives the complete Yacc specification for a small desk calculator; the desk calculator has 26 registers, labeled ``a'' through ``z'', and accepts arithmetic expressions made up of the operators +, \-, *, /, % (mod operator), & (bitwise and), | (bitwise or), and assignment. If an expression at the top level is an assignment, the value is not printed; otherwise it is. As in C, an integer that begins with 0 (zero) is assumed to be octal; otherwise, it is assumed to be decimal. .PP As an example of a Yacc specification, the desk calculator does a reasonable job of showing how precedences and ambiguities are used, and demonstrating simple error recovery. The major oversimplifications are that the lexical analysis phase is much simpler than for most applications, and the output is produced immediately, line by line. Note the way that decimal and octal integers are read in by the grammar rules; This job is probably better done by the lexical analyzer. .sp .nf .ta .5i 1i 1.5i 2i 2.5i %{ # include # include int regs[26]; int base; %} %start list %token DIGIT LETTER %left \'|\' %left \'&\' %left \'+\' \'\-\' %left \'*\' \'/\' \'%\' %left UMINUS /* supplies precedence for unary minus */ %% /* beginning of rules section */ list : /* empty */ | list stat \'\en\' | list error \'\en\' { yyerrok; } ; stat : expr { printf( "%d\en", $1 ); } | LETTER \'=\' expr { regs[$1] = $3; } ; expr : \'(\' expr \')\' { $$ = $2; } | expr \'+\' expr { $$ = $1 + $3; } | expr \'\-\' expr { $$ = $1 \- $3; } | expr \'*\' expr { $$ = $1 * $3; } | expr \'/\' expr { $$ = $1 / $3; } | expr \'%\' expr { $$ = $1 % $3; } | expr \'&\' expr { $$ = $1 & $3; } | expr \'|\' expr { $$ = $1 | $3; } | \'\-\' expr %prec UMINUS { $$ = \- $2; } | LETTER { $$ = regs[$1]; } | number ; number : DIGIT { $$ = $1; base = ($1==0) ? 8 : 10; } | number DIGIT { $$ = base * $1 + $2; } ; %% /* start of programs */ yylex() { /* lexical analysis routine */ /* returns LETTER for a lower case letter, yylval = 0 through 25 */ /* return DIGIT for a digit, yylval = 0 through 9 */ /* all other characters are returned immediately */ int c; while( (c=getchar()) == \' \' ) { /* skip blanks */ } /* c is now nonblank */ if( islower( c ) ) { yylval = c \- \'a\'; return ( LETTER ); } if( isdigit( c ) ) { yylval = c \- \'0\'; return( DIGIT ); } return( c ); } .fi .bp \'\en\' { printf( "(%15.8f , %15.8f )\en", $1.lo, $1.hi ); } | DREG \'=\' dexp \'\en\' { dreg[$1] = $3; } | VREG \'=\' vexp \'\en\' { vreg[$1] = $3; } | error \'\en\' { yyerrok; } ; dexp : CONST | DREG { $$ = dreg[$1]; doc/ps1/15.yacc/ssB 444 3 12 1510 3660051772 7121 .\" @(#)ssB 6.1 (Berkeley) 5/8/86 .\" .SH 11: Acknowledgements .PP Yacc owes much to a most stimulating collection of users, who have goaded me beyond my inclination, and frequently beyond my ability, in their endless search for ``one more feature''. Their irritating unwillingness to learn how to do things my way has usually led to my doing things their way; most of the time, they have been right. B. W. Kernighan, P. J. Plauger, S. I. Feldman, C. Imagna, M. E. Lesk, and A. Snyder will recognize some of their ideas in the current version of Yacc. C. B. Haley contributed to the error recovery algorithm. D. M. Ritchie, B. W. Kernighan, and M. O. Harris helped translate this document into English. Al Aho also deserves special credit for bringing the mountain to Mohammed, and other favors. .SG "MH-1273-SCJ-unix" .bp .[ $LIST$ .] .bp st applications, and the output is produced immediately, line by line. Note the way that decimal and octal integers are read in by the grammar rules; This job is probably better done bdoc/ps1/15.yacc/ssA 444 3 12 12220 3660051755 7141 .\" @(#)ssA 6.1 (Berkeley) 5/8/86 .\" .SH 10: Advanced Topics .PP This section discusses a number of advanced features of Yacc. .SH Simulating Error and Accept in Actions .PP The parsing actions of error and accept can be simulated in an action by use of macros YYACCEPT and YYERROR. YYACCEPT causes .I yyparse to return the value 0; YYERROR causes the parser to behave as if the current input symbol had been a syntax error; .I yyerror is called, and error recovery takes place. These mechanisms can be used to simulate parsers with multiple endmarkers or context-sensitive syntax checking. .SH Accessing Values in Enclosing Rules. .PP An action may refer to values returned by actions to the left of the current rule. The mechanism is simply the same as with ordinary actions, a dollar sign followed by a digit, but in this case the digit may be 0 or negative. Consider .DS sent : adj noun verb adj noun { \fIlook at the sentence\fR . . . } ; adj : THE { $$ = THE; } | YOUNG { $$ = YOUNG; } . . . ; noun : DOG { $$ = DOG; } | CRONE { if( $0 == YOUNG ){ printf( "what?\en" ); } $$ = CRONE; } ; . . . .DE In the action following the word CRONE, a check is made that the preceding token shifted was not YOUNG. Obviously, this is only possible when a great deal is known about what might precede the symbol .I noun in the input. There is also a distinctly unstructured flavor about this. Nevertheless, at times this mechanism will save a great deal of trouble, especially when a few combinations are to be excluded from an otherwise regular structure. .SH Support for Arbitrary Value Types .PP By default, the values returned by actions and the lexical analyzer are integers. Yacc can also support values of other types, including structures. In addition, Yacc keeps track of the types, and inserts appropriate union member names so that the resulting parser will be strictly type checked. The Yacc value stack (see Section 4) is declared to be a .I union of the various types of values desired. The user declares the union, and associates union member names to each token and nonterminal symbol having a value. When the value is referenced through a $$ or $n construction, Yacc will automatically insert the appropriate union name, so that no unwanted conversions will take place. In addition, type checking commands such as .I Lint\| .[ Johnson Lint Checker 1273 .] will be far more silent. .PP There are three mechanisms used to provide for this typing. First, there is a way of defining the union; this must be done by the user since other programs, notably the lexical analyzer, must know about the union member names. Second, there is a way of associating a union member name with tokens and nonterminals. Finally, there is a mechanism for describing the type of those few values where Yacc can not easily determine the type. .PP To declare the union, the user includes in the declaration section: .DS %union { body of union ... } .DE This declares the Yacc value stack, and the external variables .I yylval and .I yyval , to have type equal to this union. If Yacc was invoked with the .B \-d option, the union declaration is copied onto the .I y.tab.h file. Alternatively, the union may be declared in a header file, and a typedef used to define the variable YYSTYPE to represent this union. Thus, the header file might also have said: .DS typedef union { body of union ... } YYSTYPE; .DE The header file must be included in the declarations section, by use of %{ and %}. .PP Once YYSTYPE is defined, the union member names must be associated with the various terminal and nonterminal names. The construction .DS < name > .DE is used to indicate a union member name. If this follows one of the keywords %token, %left, %right, and %nonassoc, the union member name is associated with the tokens listed. Thus, saying .DS %left \'+\' \'\-\' .DE will cause any reference to values returned by these two tokens to be tagged with the union member name .I optype . Another keyword, %type, is used similarly to associate union member names with nonterminals. Thus, one might say .DS %type expr stat .DE .PP There remain a couple of cases where these mechanisms are insufficient. If there is an action within a rule, the value returned by this action has no .I "a priori" type. Similarly, reference to left context values (such as $0 \- see the previous subsection ) leaves Yacc with no easy way of knowing the type. In this case, a type can be imposed on the reference by inserting a union member name, between < and >, immediately after the first $. An example of this usage is .DS rule : aaa { $$ = 3; } bbb { fun( $2, $0 ); } ; .DE This syntax has little to recommend it, but the situation arises rarely. .PP A sample specification is given in Appendix C. The facilities in this subsection are not triggered until they are used: in particular, the use of %type will turn on these mechanisms. When they are used, there is a fairly strict level of checking. For example, use of $n or $$ to refer to something with no defined type is diagnosed. If these facilities are not triggered, the Yacc value stack is used to hold .I int' s, as was true historically. to values returned by actions to the left of the current rule. The mechanism is simply the same as with ordinary actions, a dollar sign followed by a digit, but in this case the digit may be 0 or negative. Consider .DS sent : adj noun verb adj noun { \fIlook at the sentence\fR . . . } ; adj : THE { $$ = THE; } | YOUNG { $$ = YOUNG; } . . . ; noun doc/ps1/15.yacc/ss9 444 3 12 11440 3660051731 7126 .\" @(#)ss9 6.1 (Berkeley) 5/8/86 .\" .SH 9: Hints for Preparing Specifications .PP This section contains miscellaneous hints on preparing efficient, easy to change, and clear specifications. The individual subsections are more or less independent. .SH Input Style .PP It is difficult to provide rules with substantial actions and still have a readable specification file. The following style hints owe much to Brian Kernighan. .IP a. Use all capital letters for token names, all lower case letters for nonterminal names. This rule comes under the heading of ``knowing who to blame when things go wrong.'' .IP b. Put grammar rules and actions on separate lines. This allows either to be changed without an automatic need to change the other. .IP c. Put all rules with the same left hand side together. Put the left hand side in only once, and let all following rules begin with a vertical bar. .IP d. Put a semicolon only after the last rule with a given left hand side, and put the semicolon on a separate line. This allows new rules to be easily added. .IP e. Indent rule bodies by two tab stops, and action bodies by three tab stops. .PP The example in Appendix A is written following this style, as are the examples in the text of this paper (where space permits). The user must make up his own mind about these stylistic questions; the central problem, however, is to make the rules visible through the morass of action code. .SH Left Recursion .PP The algorithm used by the Yacc parser encourages so called ``left recursive'' grammar rules: rules of the form .DS name : name rest_of_rule ; .DE These rules frequently arise when writing specifications of sequences and lists: .DS list : item | list \',\' item ; .DE and .DS seq : item | seq item ; .DE In each of these cases, the first rule will be reduced for the first item only, and the second rule will be reduced for the second and all succeeding items. .PP With right recursive rules, such as .DS seq : item | item seq ; .DE the parser would be a bit bigger, and the items would be seen, and reduced, from right to left. More seriously, an internal stack in the parser would be in danger of overflowing if a very long sequence were read. Thus, the user should use left recursion wherever reasonable. .PP It is worth considering whether a sequence with zero elements has any meaning, and if so, consider writing the sequence specification with an empty rule: .DS seq : /* empty */ | seq item ; .DE Once again, the first rule would always be reduced exactly once, before the first item was read, and then the second rule would be reduced once for each item read. Permitting empty sequences often leads to increased generality. However, conflicts might arise if Yacc is asked to decide which empty sequence it has seen, when it hasn't seen enough to know! .SH Lexical Tie-ins .PP Some lexical decisions depend on context. For example, the lexical analyzer might want to delete blanks normally, but not within quoted strings. Or names might be entered into a symbol table in declarations, but not in expressions. .PP One way of handling this situation is to create a global flag that is examined by the lexical analyzer, and set by actions. For example, suppose a program consists of 0 or more declarations, followed by 0 or more statements. Consider: .DS %{ int dflag; %} ... other declarations ... %% prog : decls stats ; decls : /* empty */ { dflag = 1; } | decls declaration ; stats : /* empty */ { dflag = 0; } | stats statement ; ... other rules ... .DE The flag .I dflag is now 0 when reading statements, and 1 when reading declarations, .ul except for the first token in the first statement. This token must be seen by the parser before it can tell that the declaration section has ended and the statements have begun. In many cases, this single token exception does not affect the lexical scan. .PP This kind of ``backdoor'' approach can be elaborated to a noxious degree. Nevertheless, it represents a way of doing some things that are difficult, if not impossible, to do otherwise. .SH Reserved Words .PP Some programming languages permit the user to use words like ``if'', which are normally reserved, as label or variable names, provided that such use does not conflict with the legal use of these names in the programming language. This is extremely hard to do in the framework of Yacc; it is difficult to pass information to the lexical analyzer telling it ``this instance of `if' is a keyword, and that instance is a variable''. The user can make a stab at it, using the mechanism described in the last subsection, but it is difficult. .PP A number of ways of making this easier are under advisement. Until then, it is better that the keywords be .I reserved \|; that is, be forbidden for use as variable names. There are powerful stylistic reasons for preferring this, anyway. cp = buf; int dot = 0, exp = 0; for( ; (cp\-buf) yyerror(s) char *s; { fprintf( stderr, "%s\en", s ); } .DE The argument to .I yyerror is a string containing an error message, usually the string ``syntax error''. The average application will want to do better than this. Ordinarily, the program should keep track of the input line number, and print it along with the message when a syntax error is detected. The external integer variable .I yychar contains the lookahead token number at the time the error was detected; this may be of some interest in giving better diagnostics. Since the .I main program is probably supplied by the user (to read arguments, etc.) the Yacc library is useful only in small projects, or in the earliest stages of larger ones. .PP The external integer variable .I yydebug is normally set to 0. If it is set to a nonzero value, the parser will output a verbose description of its actions, including a discussion of which input symbols have been read, and what the parser actions are. Depending on the operating environment, it may be possible to set this variable by using a debugging system. ce for each item read. Permitting empty sequences often leads to increased generality. However, conflicts might arise if Yacc is asked to decide which empty sequence it has seen, when it hasn't seen enough to know! .SH Lexical Tie-ins .PP Some lexical decisions depend on context. For example, the lexical analyzer might want to delete blanks normally, but not within quoted strings. Or names might be entered into a symbol table in declarations, but not in doc/ps1/15.yacc/ss7 444 3 12 11553 3660051666 7140 .\" @(#)ss7 6.1 (Berkeley) 5/8/86 .\" .SH 7: Error Handling .PP Error handling is an extremely difficult area, and many of the problems are semantic ones. When an error is found, for example, it may be necessary to reclaim parse tree storage, delete or alter symbol table entries, and, typically, set switches to avoid generating any further output. .PP It is seldom acceptable to stop all processing when an error is found; it is more useful to continue scanning the input to find further syntax errors. This leads to the problem of getting the parser ``restarted'' after an error. A general class of algorithms to do this involves discarding a number of tokens from the input string, and attempting to adjust the parser so that input can continue. .PP To allow the user some control over this process, Yacc provides a simple, but reasonably general, feature. The token name ``error'' is reserved for error handling. This name can be used in grammar rules; in effect, it suggests places where errors are expected, and recovery might take place. The parser pops its stack until it enters a state where the token ``error'' is legal. It then behaves as if the token ``error'' were the current lookahead token, and performs the action encountered. The lookahead token is then reset to the token that caused the error. If no special error rules have been specified, the processing halts when an error is detected. .PP In order to prevent a cascade of error messages, the parser, after detecting an error, remains in error state until three tokens have been successfully read and shifted. If an error is detected when the parser is already in error state, no message is given, and the input token is quietly deleted. .PP As an example, a rule of the form .DS stat : error .DE would, in effect, mean that on a syntax error the parser would attempt to skip over the statement in which the error was seen. More precisely, the parser will scan ahead, looking for three tokens that might legally follow a statement, and start processing at the first of these; if the beginnings of statements are not sufficiently distinctive, it may make a false start in the middle of a statement, and end up reporting a second error where there is in fact no error. .PP Actions may be used with these special error rules. These actions might attempt to reinitialize tables, reclaim symbol table space, etc. .PP Error rules such as the above are very general, but difficult to control. Somewhat easier are rules such as .DS stat : error \';\' .DE Here, when there is an error, the parser attempts to skip over the statement, but will do so by skipping to the next \';\'. All tokens after the error and before the next \';\' cannot be shifted, and are discarded. When the \';\' is seen, this rule will be reduced, and any ``cleanup'' action associated with it performed. .PP Another form of error rule arises in interactive applications, where it may be desirable to permit a line to be reentered after an error. A possible error rule might be .DS input : error \'\en\' { printf( "Reenter last line: " ); } input { $$ = $4; } .DE There is one potential difficulty with this approach; the parser must correctly process three input tokens before it admits that it has correctly resynchronized after the error. If the reentered line contains an error in the first two tokens, the parser deletes the offending tokens, and gives no message; this is clearly unacceptable. For this reason, there is a mechanism that can be used to force the parser to believe that an error has been fully recovered from. The statement .DS yyerrok ; .DE in an action resets the parser to its normal mode. The last example is better written .DS input : error \'\en\' { yyerrok; printf( "Reenter last line: " ); } input { $$ = $4; } ; .DE .PP As mentioned above, the token seen immediately after the ``error'' symbol is the input token at which the error was discovered. Sometimes, this is inappropriate; for example, an error recovery action might take upon itself the job of finding the correct place to resume input. In this case, the previous lookahead token must be cleared. The statement .DS yyclearin ; .DE in an action will have this effect. For example, suppose the action after error were to call some sophisticated resynchronization routine, supplied by the user, that attempted to advance the input to the beginning of the next valid statement. After this routine was called, the next token returned by yylex would presumably be the first token in a legal statement; the old, illegal token must be discarded, and the error state reset. This could be done by a rule like .DS stat : error { resynch(); yyerrok ; yyclearin ; } ; .DE .PP These mechanisms are admittedly crude, but do allow for a simple, fairly effective recovery of the parser from many errors; moreover, the user can get control to deal with the error actions required by other portions of the program. p,c=getchar() ){ *cp = c; if( isdigit( c ) ) continue; if( c == \'.\' ){ if( dot++ || exp ) return( \'.\' ); /* doc/ps1/15.yacc/ss6 444 3 12 12465 3660051635 7136 .\" @(#)ss6 6.1 (Berkeley) 5/8/86 .\" .SH 6: Precedence .PP There is one common situation where the rules given above for resolving conflicts are not sufficient; this is in the parsing of arithmetic expressions. Most of the commonly used constructions for arithmetic expressions can be naturally described by the notion of .I precedence levels for operators, together with information about left or right associativity. It turns out that ambiguous grammars with appropriate disambiguating rules can be used to create parsers that are faster and easier to write than parsers constructed from unambiguous grammars. The basic notion is to write grammar rules of the form .DS expr : expr OP expr .DE and .DS expr : UNARY expr .DE for all binary and unary operators desired. This creates a very ambiguous grammar, with many parsing conflicts. As disambiguating rules, the user specifies the precedence, or binding strength, of all the operators, and the associativity of the binary operators. This information is sufficient to allow Yacc to resolve the parsing conflicts in accordance with these rules, and construct a parser that realizes the desired precedences and associativities. .PP The precedences and associativities are attached to tokens in the declarations section. This is done by a series of lines beginning with a Yacc keyword: %left, %right, or %nonassoc, followed by a list of tokens. All of the tokens on the same line are assumed to have the same precedence level and associativity; the lines are listed in order of increasing precedence or binding strength. Thus, .DS %left \'+\' \'\-\' %left \'*\' \'/\' .DE describes the precedence and associativity of the four arithmetic operators. Plus and minus are left associative, and have lower precedence than star and slash, which are also left associative. The keyword %right is used to describe right associative operators, and the keyword %nonassoc is used to describe operators, like the operator .LT. in Fortran, that may not associate with themselves; thus, .DS A .LT. B .LT. C .DE is illegal in Fortran, and such an operator would be described with the keyword %nonassoc in Yacc. As an example of the behavior of these declarations, the description .DS %right \'=\' %left \'+\' \'\-\' %left \'*\' \'/\' %% expr : expr \'=\' expr | expr \'+\' expr | expr \'\-\' expr | expr \'*\' expr | expr \'/\' expr | NAME ; .DE might be used to structure the input .DS a = b = c*d \- e \- f*g .DE as follows: .DS a = ( b = ( ((c*d)\-e) \- (f*g) ) ) .DE When this mechanism is used, unary operators must, in general, be given a precedence. Sometimes a unary operator and a binary operator have the same symbolic representation, but different precedences. An example is unary and binary \'\-\'; unary minus may be given the same strength as multiplication, or even higher, while binary minus has a lower strength than multiplication. The keyword, %prec, changes the precedence level associated with a particular grammar rule. %prec appears immediately after the body of the grammar rule, before the action or closing semicolon, and is followed by a token name or literal. It causes the precedence of the grammar rule to become that of the following token name or literal. For example, to make unary minus have the same precedence as multiplication the rules might resemble: .DS %left \'+\' \'\-\' %left \'*\' \'/\' %% expr : expr \'+\' expr | expr \'\-\' expr | expr \'*\' expr | expr \'/\' expr | \'\-\' expr %prec \'*\' | NAME ; .DE .PP A token declared by %left, %right, and %nonassoc need not be, but may be, declared by %token as well. .PP The precedences and associativities are used by Yacc to resolve parsing conflicts; they give rise to disambiguating rules. Formally, the rules work as follows: .IP 1. The precedences and associativities are recorded for those tokens and literals that have them. .IP 2. A precedence and associativity is associated with each grammar rule; it is the precedence and associativity of the last token or literal in the body of the rule. If the %prec construction is used, it overrides this default. Some grammar rules may have no precedence and associativity associated with them. .IP 3. When there is a reduce/reduce conflict, or there is a shift/reduce conflict and either the input symbol or the grammar rule has no precedence and associativity, then the two disambiguating rules given at the beginning of the section are used, and the conflicts are reported. .IP 4. If there is a shift/reduce conflict, and both the grammar rule and the input character have precedence and associativity associated with them, then the conflict is resolved in favor of the action (shift or reduce) associated with the higher precedence. If the precedences are the same, then the associativity is used; left associative implies reduce, right associative implies shift, and nonassociating implies error. .PP Conflicts resolved by precedence are not counted in the number of shift/reduce and reduce/reduce conflicts reported by Yacc. This means that mistakes in the specification of precedences may disguise errors in the input grammar; it is a good idea to be sparing with precedences, and use them in an essentially ``cookbook'' fashion, until some experience has been gained. The .I y.output file is very useful in deciding whether the parser is actually doing what was intended. c keyword: %left, %right, or %nonassoc, followed by a list of tokens. All of the tokens on the same line are assumed to have the same precedence level and associativity; the lines are listed in order of doc/ps1/15.yacc/ss5 444 3 12 20755 3660051604 7132 .\" @(#)ss5 6.1 (Berkeley) 5/8/86 .\" .SH 5: Ambiguity and Conflicts .PP A set of grammar rules is .I ambiguous if there is some input string that can be structured in two or more different ways. For example, the grammar rule .DS expr : expr \'\-\' expr .DE is a natural way of expressing the fact that one way of forming an arithmetic expression is to put two other expressions together with a minus sign between them. Unfortunately, this grammar rule does not completely specify the way that all complex inputs should be structured. For example, if the input is .DS expr \- expr \- expr .DE the rule allows this input to be structured as either .DS ( expr \- expr ) \- expr .DE or as .DS expr \- ( expr \- expr ) .DE (The first is called .I "left association" , the second .I "right association" ). .PP Yacc detects such ambiguities when it is attempting to build the parser. It is instructive to consider the problem that confronts the parser when it is given an input such as .DS expr \- expr \- expr .DE When the parser has read the second expr, the input that it has seen: .DS expr \- expr .DE matches the right side of the grammar rule above. The parser could .I reduce the input by applying this rule; after applying the rule; the input is reduced to .I expr (the left side of the rule). The parser would then read the final part of the input: .DS \- expr .DE and again reduce. The effect of this is to take the left associative interpretation. .PP Alternatively, when the parser has seen .DS expr \- expr .DE it could defer the immediate application of the rule, and continue reading the input until it had seen .DS expr \- expr \- expr .DE It could then apply the rule to the rightmost three symbols, reducing them to .I expr and leaving .DS expr \- expr .DE Now the rule can be reduced once more; the effect is to take the right associative interpretation. Thus, having read .DS expr \- expr .DE the parser can do two legal things, a shift or a reduction, and has no way of deciding between them. This is called a .I "shift / reduce conflict" . It may also happen that the parser has a choice of two legal reductions; this is called a .I "reduce / reduce conflict" . Note that there are never any ``Shift/shift'' conflicts. .PP When there are shift/reduce or reduce/reduce conflicts, Yacc still produces a parser. It does this by selecting one of the valid steps wherever it has a choice. A rule describing which choice to make in a given situation is called a .I "disambiguating rule" . .PP Yacc invokes two disambiguating rules by default: .IP 1. In a shift/reduce conflict, the default is to do the shift. .IP 2. In a reduce/reduce conflict, the default is to reduce by the .I earlier grammar rule (in the input sequence). .PP Rule 1 implies that reductions are deferred whenever there is a choice, in favor of shifts. Rule 2 gives the user rather crude control over the behavior of the parser in this situation, but reduce/reduce conflicts should be avoided whenever possible. .PP Conflicts may arise because of mistakes in input or logic, or because the grammar rules, while consistent, require a more complex parser than Yacc can construct. The use of actions within rules can also cause conflicts, if the action must be done before the parser can be sure which rule is being recognized. In these cases, the application of disambiguating rules is inappropriate, and leads to an incorrect parser. For this reason, Yacc always reports the number of shift/reduce and reduce/reduce conflicts resolved by Rule 1 and Rule 2. .PP In general, whenever it is possible to apply disambiguating rules to produce a correct parser, it is also possible to rewrite the grammar rules so that the same inputs are read but there are no conflicts. For this reason, most previous parser generators have considered conflicts to be fatal errors. Our experience has suggested that this rewriting is somewhat unnatural, and produces slower parsers; thus, Yacc will produce parsers even in the presence of conflicts. .PP As an example of the power of disambiguating rules, consider a fragment from a programming language involving an ``if-then-else'' construction: .DS stat : IF \'(\' cond \')\' stat | IF \'(\' cond \')\' stat ELSE stat ; .DE In these rules, .I IF and .I ELSE are tokens, .I cond is a nonterminal symbol describing conditional (logical) expressions, and .I stat is a nonterminal symbol describing statements. The first rule will be called the .ul simple-if rule, and the second the .ul if-else rule. .PP These two rules form an ambiguous construction, since input of the form .DS IF ( C1 ) IF ( C2 ) S1 ELSE S2 .DE can be structured according to these rules in two ways: .DS IF ( C1 ) { IF ( C2 ) S1 } ELSE S2 .DE or .DS IF ( C1 ) { IF ( C2 ) S1 ELSE S2 } .DE The second interpretation is the one given in most programming languages having this construct. Each .I ELSE is associated with the last preceding ``un-\fIELSE'\fRd'' .I IF . In this example, consider the situation where the parser has seen .DS IF ( C1 ) IF ( C2 ) S1 .DE and is looking at the .I ELSE . It can immediately reduce by the simple-if rule to get .DS IF ( C1 ) stat .DE and then read the remaining input, .DS ELSE S2 .DE and reduce .DS IF ( C1 ) stat ELSE S2 .DE by the if-else rule. This leads to the first of the above groupings of the input. .PP On the other hand, the .I ELSE may be shifted, .I S2 read, and then the right hand portion of .DS IF ( C1 ) IF ( C2 ) S1 ELSE S2 .DE can be reduced by the if-else rule to get .DS IF ( C1 ) stat .DE which can be reduced by the simple-if rule. This leads to the second of the above groupings of the input, which is usually desired. .PP Once again the parser can do two valid things \- there is a shift/reduce conflict. The application of disambiguating rule 1 tells the parser to shift in this case, which leads to the desired grouping. .PP This shift/reduce conflict arises only when there is a particular current input symbol, .I ELSE , and particular inputs already seen, such as .DS IF ( C1 ) IF ( C2 ) S1 .DE In general, there may be many conflicts, and each one will be associated with an input symbol and a set of previously read inputs. The previously read inputs are characterized by the state of the parser. .PP The conflict messages of Yacc are best understood by examining the verbose (\fB\-v\fR) option output file. For example, the output corresponding to the above conflict state might be: .DS L 23: shift/reduce conflict (shift 45, reduce 18) on ELSE state 23 stat : IF ( cond ) stat\_ (18) stat : IF ( cond ) stat\_ELSE stat ELSE shift 45 . reduce 18 .DE The first line describes the conflict, giving the state and the input symbol. The ordinary state description follows, giving the grammar rules active in the state, and the parser actions. Recall that the underline marks the portion of the grammar rules which has been seen. Thus in the example, in state 23 the parser has seen input corresponding to .DS IF ( cond ) stat .DE and the two grammar rules shown are active at this time. The parser can do two possible things. If the input symbol is .I ELSE , it is possible to shift into state 45. State 45 will have, as part of its description, the line .DS stat : IF ( cond ) stat ELSE\_stat .DE since the .I ELSE will have been shifted in this state. Back in state 23, the alternative action, described by ``\fB.\fR'', is to be done if the input symbol is not mentioned explicitly in the above actions; thus, in this case, if the input symbol is not .I ELSE , the parser reduces by grammar rule 18: .DS stat : IF \'(\' cond \')\' stat .DE Once again, notice that the numbers following ``shift'' commands refer to other states, while the numbers following ``reduce'' commands refer to grammar rule numbers. In the .I y.output file, the rule numbers are printed after those rules which can be reduced. In most one states, there will be at most reduce action possible in the state, and this will be the default command. The user who encounters unexpected shift/reduce conflicts will probably want to look at the verbose output to decide whether the default actions are appropriate. In really tough cases, the user might need to know more about the behavior and construction of the parser than can be covered here. In this case, one of the theoretical references .[ Aho Johnson Surveys Parsing .] .[ Aho Johnson Ullman Deterministic Ambiguous .] .[ Aho Ullman Principles Design .] might be consulted; the services of a local guru might also be appropriate. at all complex inpudoc/ps1/15.yacc/ss4 444 3 12 21760 3660051547 7134 .\" @(#)ss4 6.1 (Berkeley) 5/8/86 .\" .SH 4: How the Parser Works .PP Yacc turns the specification file into a C program, which parses the input according to the specification given. The algorithm used to go from the specification to the parser is complex, and will not be discussed here (see the references for more information). The parser itself, however, is relatively simple, and understanding how it works, while not strictly necessary, will nevertheless make treatment of error recovery and ambiguities much more comprehensible. .PP The parser produced by Yacc consists of a finite state machine with a stack. The parser is also capable of reading and remembering the next input token (called the .I lookahead token). The .I "current state" is always the one on the top of the stack. The states of the finite state machine are given small integer labels; initially, the machine is in state 0, the stack contains only state 0, and no lookahead token has been read. .PP The machine has only four actions available to it, called .I shift , .I reduce , .I accept , and .I error . A move of the parser is done as follows: .IP 1. Based on its current state, the parser decides whether it needs a lookahead token to decide what action should be done; if it needs one, and does not have one, it calls .I yylex to obtain the next token. .IP 2. Using the current state, and the lookahead token if needed, the parser decides on its next action, and carries it out. This may result in states being pushed onto the stack, or popped off of the stack, and in the lookahead token being processed or left alone. .PP The .I shift action is the most common action the parser takes. Whenever a shift action is taken, there is always a lookahead token. For example, in state 56 there may be an action: .DS IF shift 34 .DE which says, in state 56, if the lookahead token is IF, the current state (56) is pushed down on the stack, and state 34 becomes the current state (on the top of the stack). The lookahead token is cleared. .PP The .I reduce action keeps the stack from growing without bounds. Reduce actions are appropriate when the parser has seen the right hand side of a grammar rule, and is prepared to announce that it has seen an instance of the rule, replacing the right hand side by the left hand side. It may be necessary to consult the lookahead token to decide whether to reduce, but usually it is not; in fact, the default action (represented by a ``.'') is often a reduce action. .PP Reduce actions are associated with individual grammar rules. Grammar rules are also given small integer numbers, leading to some confusion. The action .DS \fB.\fR reduce 18 .DE refers to .I "grammar rule" 18, while the action .DS IF shift 34 .DE refers to .I state 34. .PP Suppose the rule being reduced is .DS A \fB:\fR x y z ; .DE The reduce action depends on the left hand symbol (A in this case), and the number of symbols on the right hand side (three in this case). To reduce, first pop off the top three states from the stack (In general, the number of states popped equals the number of symbols on the right side of the rule). In effect, these states were the ones put on the stack while recognizing .I x , .I y , and .I z , and no longer serve any useful purpose. After popping these states, a state is uncovered which was the state the parser was in before beginning to process the rule. Using this uncovered state, and the symbol on the left side of the rule, perform what is in effect a shift of A. A new state is obtained, pushed onto the stack, and parsing continues. There are significant differences between the processing of the left hand symbol and an ordinary shift of a token, however, so this action is called a .I goto action. In particular, the lookahead token is cleared by a shift, and is not affected by a goto. In any case, the uncovered state contains an entry such as: .DS A goto 20 .DE causing state 20 to be pushed onto the stack, and become the current state. .PP In effect, the reduce action ``turns back the clock'' in the parse, popping the states off the stack to go back to the state where the right hand side of the rule was first seen. The parser then behaves as if it had seen the left side at that time. If the right hand side of the rule is empty, no states are popped off of the stack: the uncovered state is in fact the current state. .PP The reduce action is also important in the treatment of user-supplied actions and values. When a rule is reduced, the code supplied with the rule is executed before the stack is adjusted. In addition to the stack holding the states, another stack, running in parallel with it, holds the values returned from the lexical analyzer and the actions. When a shift takes place, the external variable .I yylval is copied onto the value stack. After the return from the user code, the reduction is carried out. When the .I goto action is done, the external variable .I yyval is copied onto the value stack. The pseudo-variables $1, $2, etc., refer to the value stack. .PP The other two parser actions are conceptually much simpler. The .I accept action indicates that the entire input has been seen and that it matches the specification. This action appears only when the lookahead token is the endmarker, and indicates that the parser has successfully done its job. The .I error action, on the other hand, represents a place where the parser can no longer continue parsing according to the specification. The input tokens it has seen, together with the lookahead token, cannot be followed by anything that would result in a legal input. The parser reports an error, and attempts to recover the situation and resume parsing: the error recovery (as opposed to the detection of error) will be covered in Section 7. .PP It is time for an example! Consider the specification .DS %token DING DONG DELL %% rhyme : sound place ; sound : DING DONG ; place : DELL ; .DE .PP When Yacc is invoked with the .B \-v option, a file called .I y.output is produced, with a human-readable description of the parser. The .I y.output file corresponding to the above grammar (with some statistics stripped off the end) is: .DS state 0 $accept : \_rhyme $end DING shift 3 . error rhyme goto 1 sound goto 2 state 1 $accept : rhyme\_$end $end accept . error state 2 rhyme : sound\_place DELL shift 5 . error place goto 4 state 3 sound : DING\_DONG DONG shift 6 . error state 4 rhyme : sound place\_ (1) . reduce 1 state 5 place : DELL\_ (3) . reduce 3 state 6 sound : DING DONG\_ (2) . reduce 2 .DE Notice that, in addition to the actions for each state, there is a description of the parsing rules being processed in each state. The \_ character is used to indicate what has been seen, and what is yet to come, in each rule. Suppose the input is .DS DING DONG DELL .DE It is instructive to follow the steps of the parser while processing this input. .PP Initially, the current state is state 0. The parser needs to refer to the input in order to decide between the actions available in state 0, so the first token, .I DING , is read, becoming the lookahead token. The action in state 0 on .I DING is is ``shift 3'', so state 3 is pushed onto the stack, and the lookahead token is cleared. State 3 becomes the current state. The next token, .I DONG , is read, becoming the lookahead token. The action in state 3 on the token .I DONG is ``shift 6'', so state 6 is pushed onto the stack, and the lookahead is cleared. The stack now contains 0, 3, and 6. In state 6, without even consulting the lookahead, the parser reduces by rule 2. .DS sound : DING DONG .DE This rule has two symbols on the right hand side, so two states, 6 and 3, are popped off of the stack, uncovering state 0. Consulting the description of state 0, looking for a goto on .I sound , .DS sound goto 2 .DE is obtained; thus state 2 is pushed onto the stack, becoming the current state. .PP In state 2, the next token, .I DELL , must be read. The action is ``shift 5'', so state 5 is pushed onto the stack, which now has 0, 2, and 5 on it, and the lookahead token is cleared. In state 5, the only action is to reduce by rule 3. This has one symbol on the right hand side, so one state, 5, is popped off, and state 2 is uncovered. The goto in state 2 on .I place , the left side of rule 3, is state 4. Now, the stack contains 0, 2, and 4. In state 4, the only action is to reduce by rule 1. There are two symbols on the right, so the top two states are popped off, uncovering state 0 again. In state 0, there is a goto on .I rhyme causing the parser to enter state 1. In state 1, the input is read; the endmarker is obtained, indicated by ``$end'' in the .I y.output file. The action in state 1 when the endmarker is seen is to accept, successfully ending the parse. .PP The reader is urged to consider how the parser works when confronted with such incorrect strings as .I "DING DONG DONG" , .I "DING DONG" , .I "DING DONG DELL DELL" , etc. A few minutes spend with this and other simple examples will probably be repaid when problems arise in more complicated contexts. ersion to get. .doc/ps1/15.yacc/ss3 444 3 12 6504 3660051516 7106 .\" @(#)ss3 6.1 (Berkeley) 5/8/86 .\" .SH 3: Lexical Analysis .PP The user must supply a lexical analyzer to read the input stream and communicate tokens (with values, if desired) to the parser. The lexical analyzer is an integer-valued function called .I yylex . The function returns an integer, the .I "token number" , representing the kind of token read. If there is a value associated with that token, it should be assigned to the external variable .I yylval . .PP The parser and the lexical analyzer must agree on these token numbers in order for communication between them to take place. The numbers may be chosen by Yacc, or chosen by the user. In either case, the ``# define'' mechanism of C is used to allow the lexical analyzer to return these numbers symbolically. For example, suppose that the token name DIGIT has been defined in the declarations section of the Yacc specification file. The relevant portion of the lexical analyzer might look like: .DS yylex(){ extern int yylval; int c; . . . c = getchar(); . . . switch( c ) { . . . case \'0\': case \'1\': . . . case \'9\': yylval = c\-\'0\'; return( DIGIT ); . . . } . . . .DE .PP The intent is to return a token number of DIGIT, and a value equal to the numerical value of the digit. Provided that the lexical analyzer code is placed in the programs section of the specification file, the identifier DIGIT will be defined as the token number associated with the token DIGIT. .PP This mechanism leads to clear, easily modified lexical analyzers; the only pitfall is the need to avoid using any token names in the grammar that are reserved or significant in C or the parser; for example, the use of token names .I if or .I while will almost certainly cause severe difficulties when the lexical analyzer is compiled. The token name .I error is reserved for error handling, and should not be used naively (see Section 7). .PP As mentioned above, the token numbers may be chosen by Yacc or by the user. In the default situation, the numbers are chosen by Yacc. The default token number for a literal character is the numerical value of the character in the local character set. Other names are assigned token numbers starting at 257. .PP To assign a token number to a token (including literals), the first appearance of the token name or literal .I in the declarations section .R can be immediately followed by a nonnegative integer. This integer is taken to be the token number of the name or literal. Names and literals not defined by this mechanism retain their default definition. It is important that all token numbers be distinct. .PP For historical reasons, the endmarker must have token number 0 or negative. This token number cannot be redefined by the user; thus, all lexical analyzers should be prepared to return 0 or negative as a token number upon reaching the end of their input. .PP A very useful tool for constructing lexical analyzers is the .I Lex program developed by Mike Lesk. .[ Lesk Lex .] These lexical analyzers are designed to work in close harmony with Yacc parsers. The specifications for these lexical analyzers use regular expressions instead of grammar rules. Lex can be easily used to produce quite complicated lexical analyzers, but there remain some languages (such as FORTRAN) which do not fit any theoretical framework, and whose lexical analyzers must be crafted by hand. ng this uncovered state, and the symbol on the left side of the rule, perform what is in effect a shift of A. A new state is obtained, pushed onto the stack, and parsing continues. There adoc/ps1/15.yacc/ss2 444 3 12 10233 3660051470 7116 .\" @(#)ss2 6.1 (Berkeley) 5/8/86 .\" .SH 2: Actions .PP With each grammar rule, the user may associate actions to be performed each time the rule is recognized in the input process. These actions may return values, and may obtain the values returned by previous actions. Moreover, the lexical analyzer can return values for tokens, if desired. .PP An action is an arbitrary C statement, and as such can do input and output, call subprograms, and alter external vectors and variables. An action is specified by one or more statements, enclosed in curly braces ``{'' and ``}''. For example, .DS A : \'(\' B \')\' { hello( 1, "abc" ); } .DE and .DS XXX : YYY ZZZ { printf("a message\en"); flag = 25; } .DE are grammar rules with actions. .PP To facilitate easy communication between the actions and the parser, the action statements are altered slightly. The symbol ``dollar sign'' ``$'' is used as a signal to Yacc in this context. .PP To return a value, the action normally sets the pseudo-variable ``$$'' to some value. For example, an action that does nothing but return the value 1 is .DS { $$ = 1; } .DE .PP To obtain the values returned by previous actions and the lexical analyzer, the action may use the pseudo-variables $1, $2, . . ., which refer to the values returned by the components of the right side of a rule, reading from left to right. Thus, if the rule is .DS A : B C D ; .DE for example, then $2 has the value returned by C, and $3 the value returned by D. .PP As a more concrete example, consider the rule .DS expr : \'(\' expr \')\' ; .DE The value returned by this rule is usually the value of the .I expr in parentheses. This can be indicated by .DS expr : \'(\' expr \')\' { $$ = $2 ; } .DE .PP By default, the value of a rule is the value of the first element in it ($1). Thus, grammar rules of the form .DS A : B ; .DE frequently need not have an explicit action. .PP In the examples above, all the actions came at the end of their rules. Sometimes, it is desirable to get control before a rule is fully parsed. Yacc permits an action to be written in the middle of a rule as well as at the end. This rule is assumed to return a value, accessible through the usual \$ mechanism by the actions to the right of it. In turn, it may access the values returned by the symbols to its left. Thus, in the rule .DS A : B { $$ = 1; } C { x = $2; y = $3; } ; .DE the effect is to set .I x to 1, and .I y to the value returned by C. .PP Actions that do not terminate a rule are actually handled by Yacc by manufacturing a new nonterminal symbol name, and a new rule matching this name to the empty string. The interior action is the action triggered off by recognizing this added rule. Yacc actually treats the above example as if it had been written: .DS $ACT : /* empty */ { $$ = 1; } ; A : B $ACT C { x = $2; y = $3; } ; .DE .PP In many applications, output is not done directly by the actions; rather, a data structure, such as a parse tree, is constructed in memory, and transformations are applied to it before output is generated. Parse trees are particularly easy to construct, given routines to build and maintain the tree structure desired. For example, suppose there is a C function .I node , written so that the call .DS node( L, n1, n2 ) .DE creates a node with label L, and descendants n1 and n2, and returns the index of the newly created node. Then parse tree can be built by supplying actions such as: .DS expr : expr \'+\' expr { $$ = node( \'+\', $1, $3 ); } .DE in the specification. .PP The user may define other variables to be used by the actions. Declarations and definitions can appear in the declarations section, enclosed in the marks ``%{'' and ``%}''. These declarations and definitions have global scope, so they are known to the action statements and the lexical analyzer. For example, .DS %{ int variable = 0; %} .DE could be placed in the declarations section, making .I variable accessible to all of the actions. The Yacc parser uses only names beginning in ``yy''; the user should avoid such names. .PP In these examples, all the values are integers: a discussion of values of other types will be found in Section 10. ht hand side of the rule is empty, no states are popped off of the stack: the uncovered state is in fact the current state. .PP The reduce action is also important in the treatment of user-supplied actions and values. When a rule is reduced, the code supplied with the rule is executed before the stack is adjusted. In addition to the stack holding the statdoc/ps1/15.yacc/ss1 444 3 12 10305 3660051443 7115 .\" @(#)ss1 6.1 (Berkeley) 5/8/86 .\" .tr *\(** .tr |\(or .SH 1: Basic Specifications .PP Names refer to either tokens or nonterminal symbols. Yacc requires token names to be declared as such. In addition, for reasons discussed in Section 3, it is often desirable to include the lexical analyzer as part of the specification file; it may be useful to include other programs as well. Thus, every specification file consists of three sections: the .I declarations , .I "(grammar) rules" , and .I programs . The sections are separated by double percent ``%%'' marks. (The percent ``%'' is generally used in Yacc specifications as an escape character.) .PP In other words, a full specification file looks like .DS declarations %% rules %% programs .DE .PP The declaration section may be empty. Moreover, if the programs section is omitted, the second %% mark may be omitted also; thus, the smallest legal Yacc specification is .DS %% rules .DE .PP Blanks, tabs, and newlines are ignored except that they may not appear in names or multi-character reserved symbols. Comments may appear wherever a name is legal; they are enclosed in /* . . . */, as in C and PL/I. .PP The rules section is made up of one or more grammar rules. A grammar rule has the form: .DS A : BODY ; .DE A represents a nonterminal name, and BODY represents a sequence of zero or more names and literals. The colon and the semicolon are Yacc punctuation. .PP Names may be of arbitrary length, and may be made up of letters, dot ``.'', underscore ``\_'', and non-initial digits. Upper and lower case letters are distinct. The names used in the body of a grammar rule may represent tokens or nonterminal symbols. .PP A literal consists of a character enclosed in single quotes ``\'''. As in C, the backslash ``\e'' is an escape character within literals, and all the C escapes are recognized. Thus .DS \'\en\' newline \'\er\' return \'\e\'\' single quote ``\''' \'\e\e\' backslash ``\e'' \'\et\' tab \'\eb\' backspace \'\ef\' form feed \'\exxx\' ``xxx'' in octal .DE For a number of technical reasons, the \s-2NUL\s0 character (\'\e0\' or 0) should never be used in grammar rules. .PP If there are several grammar rules with the same left hand side, the vertical bar ``|'' can be used to avoid rewriting the left hand side. In addition, the semicolon at the end of a rule can be dropped before a vertical bar. Thus the grammar rules .DS A : B C D ; A : E F ; A : G ; .DE can be given to Yacc as .DS A : B C D | E F | G ; .DE It is not necessary that all grammar rules with the same left side appear together in the grammar rules section, although it makes the input much more readable, and easier to change. .PP If a nonterminal symbol matches the empty string, this can be indicated in the obvious way: .DS empty : ; .DE .PP Names representing tokens must be declared; this is most simply done by writing .DS %token name1 name2 . . . .DE in the declarations section. (See Sections 3 , 5, and 6 for much more discussion). Every name not defined in the declarations section is assumed to represent a nonterminal symbol. Every nonterminal symbol must appear on the left side of at least one rule. .PP Of all the nonterminal symbols, one, called the .I "start symbol" , has particular importance. The parser is designed to recognize the start symbol; thus, this symbol represents the largest, most general structure described by the grammar rules. By default, the start symbol is taken to be the left hand side of the first grammar rule in the rules section. It is possible, and in fact desirable, to declare the start symbol explicitly in the declarations section using the %start keyword: .DS %start symbol .DE .PP The end of the input to the parser is signaled by a special token, called the .I endmarker . If the tokens up to, but not including, the endmarker form a structure which matches the start symbol, the parser function returns to its caller after the endmarker is seen; it .I accepts the input. If the endmarker is seen in any other context, it is an error. .PP It is the job of the user-supplied lexical analyzer to return the endmarker when appropriate; see section 3, below. Usually the endmarker represents some reasonably obvious I/O status, such as ``end-of-file'' or ``end-of-record''. eclarations and definitions have global scope, so they are known to the action statements and the lexical analyzer. For example, .DS %{ int variable = 0; %} .DE could be placed in the declarations section, making .I variable accessible to all of the actions. The Yacc parser uses only names beginning in ``yy''doc/ps1/15.yacc/ss0 444 3 12 14515 3660051412 7117 .\" @(#)ss0 6.1 (Berkeley) 5/8/86 .\" .SH 0: Introduction .PP Yacc provides a general tool for imposing structure on the input to a computer program. The Yacc user prepares a specification of the input process; this includes rules describing the input structure, code to be invoked when these rules are recognized, and a low-level routine to do the basic input. Yacc then generates a function to control the input process. This function, called a .I parser , calls the user-supplied low-level input routine (the .I "lexical analyzer" ) to pick up the basic items (called .I tokens ) from the input stream. These tokens are organized according to the input structure rules, called .I "grammar rules" \|; when one of these rules has been recognized, then user code supplied for this rule, an .I action , is invoked; actions have the ability to return values and make use of the values of other actions. .PP Yacc is written in a portable dialect of C .[ Ritchie Kernighan Language Prentice .] and the actions, and output subroutine, are in C as well. Moreover, many of the syntactic conventions of Yacc follow C. .PP The heart of the input specification is a collection of grammar rules. Each rule describes an allowable structure and gives it a name. For example, one grammar rule might be .DS date : month\_name day \',\' year ; .DE Here, .I date , .I month\_name , .I day , and .I year represent structures of interest in the input process; presumably, .I month\_name , .I day , and .I year are defined elsewhere. The comma ``,'' is enclosed in single quotes; this implies that the comma is to appear literally in the input. The colon and semicolon merely serve as punctuation in the rule, and have no significance in controlling the input. Thus, with proper definitions, the input .DS July 4, 1776 .DE might be matched by the above rule. .PP An important part of the input process is carried out by the lexical analyzer. This user routine reads the input stream, recognizing the lower level structures, and communicates these tokens to the parser. For historical reasons, a structure recognized by the lexical analyzer is called a .I "terminal symbol" , while the structure recognized by the parser is called a .I "nonterminal symbol" . To avoid confusion, terminal symbols will usually be referred to as .I tokens . .PP There is considerable leeway in deciding whether to recognize structures using the lexical analyzer or grammar rules. For example, the rules .DS month\_name : \'J\' \'a\' \'n\' ; month\_name : \'F\' \'e\' \'b\' ; . . . month\_name : \'D\' \'e\' \'c\' ; .DE might be used in the above example. The lexical analyzer would only need to recognize individual letters, and .I month\_name would be a nonterminal symbol. Such low-level rules tend to waste time and space, and may complicate the specification beyond Yacc's ability to deal with it. Usually, the lexical analyzer would recognize the month names, and return an indication that a .I month\_name was seen; in this case, .I month\_name would be a token. .PP Literal characters such as ``,'' must also be passed through the lexical analyzer, and are also considered tokens. .PP Specification files are very flexible. It is realively easy to add to the above example the rule .DS date : month \'/\' day \'/\' year ; .DE allowing .DS 7 / 4 / 1776 .DE as a synonym for .DS July 4, 1776 .DE In most cases, this new rule could be ``slipped in'' to a working system with minimal effort, and little danger of disrupting existing input. .PP The input being read may not conform to the specifications. These input errors are detected as early as is theoretically possible with a left-to-right scan; thus, not only is the chance of reading and computing with bad input data substantially reduced, but the bad data can usually be quickly found. Error handling, provided as part of the input specifications, permits the reentry of bad data, or the continuation of the input process after skipping over the bad data. .PP In some cases, Yacc fails to produce a parser when given a set of specifications. For example, the specifications may be self contradictory, or they may require a more powerful recognition mechanism than that available to Yacc. The former cases represent design errors; the latter cases can often be corrected by making the lexical analyzer more powerful, or by rewriting some of the grammar rules. While Yacc cannot handle all possible specifications, its power compares favorably with similar systems; moreover, the constructions which are difficult for Yacc to handle are also frequently difficult for human beings to handle. Some users have reported that the discipline of formulating valid Yacc specifications for their input revealed errors of conception or design early in the program development. .PP The theory underlying Yacc has been described elsewhere. .[ Aho Johnson Surveys LR Parsing .] .[ Aho Johnson Ullman Ambiguous Grammars .] .[ Aho Ullman Principles Compiler Design .] Yacc has been extensively used in numerous practical applications, including .I lint , .[ Johnson Lint .] the Portable C Compiler, .[ Johnson Portable Compiler Theory .] and a system for typesetting mathematics. .[ Kernighan Cherry typesetting system CACM .] .PP The next several sections describe the basic process of preparing a Yacc specification; Section 1 describes the preparation of grammar rules, Section 2 the preparation of the user supplied actions associated with these rules, and Section 3 the preparation of lexical analyzers. Section 4 describes the operation of the parser. Section 5 discusses various reasons why Yacc may be unable to produce a parser from a specification, and what to do about it. Section 6 describes a simple mechanism for handling operator precedences in arithmetic expressions. Section 7 discusses error detection and recovery. Section 8 discusses the operating environment and special features of the parsers Yacc produces. Section 9 gives some suggestions which should improve the style and efficiency of the specifications. Section 10 discusses some advanced topics, and Section 11 gives acknowledgements. Appendix A has a brief example, and Appendix B gives a summary of the Yacc input syntax. Appendix C gives an example using some of the more advanced features of Yacc, and, finally, Appendix D describes mechanisms and syntax no longer actively supported, but provided for historical continuity with older versions of Yacc. urn values and make use of the values of other actions. .PP Yacc is written in a portable dialect of C .[ Ritchie Kernighan Language Prentice .] and the actions, and output subroudoc/ps1/15.yacc/ss.. 444 3 12 3700 3660051357 7155 .\" @(#)ss.. 6.1 (Berkeley) 5/8/86 .\" .EH 'PS1:15-%''Yacc: Yet Another Compiler-Compiler' .OH 'Yacc: Yet Another Compiler-Compiler''PS1:15-%' .\".RP .ND "July 31, 1978" .TL Yacc: Yet Another Compiler-Compiler .AU "MH 2C-559" 3968 Stephen C. Johnson .AI .MH .AB .PP Computer program input generally has some structure; in fact, every computer program that does input can be thought of as defining an ``input language'' which it accepts. An input language may be as complex as a programming language, or as simple as a sequence of numbers. Unfortunately, usual input facilities are limited, difficult to use, and often are lax about checking their inputs for validity. .PP Yacc provides a general tool for describing the input to a computer program. The Yacc user specifies the structures of his input, together with code to be invoked as each such structure is recognized. Yacc turns such a specification into a subroutine that handles the input process; frequently, it is convenient and appropriate to have most of the flow of control in the user's application handled by this subroutine. .PP The input subroutine produced by Yacc calls a user-supplied routine to return the next basic input item. Thus, the user can specify his input in terms of individual input characters, or in terms of higher level constructs such as names and numbers. The user-supplied routine may also handle idiomatic features such as comment and continuation conventions, which typically defy easy grammatical specification. .PP Yacc is written in portable C. The class of specifications accepted is a very general one: LALR(1) grammars with disambiguating rules. .PP In addition to compilers for C, APL, Pascal, RATFOR, etc., Yacc has also been used for less conventional languages, including a phototypesetter language, several desk calculator languages, a document retrieval system, and a Fortran debugging system. .AE .OK .\"Computer Languages .\"Compilers .\"Formal Language Theory .CS 23 11 34 0 0 8 the lower level structures, and communicates these tokens to thedoc/ps1/15.yacc/Makefile 444 3 12 1302 3660052474 10106 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 5/8/86 # SRCS= ss.. ss0 ss1 ss2 ss3 ss4 ss5 ss6 ss7 ss8 ss9 ssA ssB ssa ssb ssc ssd MACROS= -msU PRINTER=Pdp REFER= refer -e -p /usr/doc/run/Ind TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${REFER} ${SRCS} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done escribing the input to a computer program. The Yacc user specifies the structures of his input, together with code to be invoked as each such structure is recognized. Yacc turns such a specification into a subroutine that handles the input process; frequently, it is convenient and appropriate to have most of the flowdoc/ps1/16.lex/ 755 3 12 0 3655012332 6232 doc/ps1/16.lex/Makefile 444 3 12 1165 3655012060 7756 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 4/28/86 # SRCS= lex.ms MACROS= -msU PRINTER=Pdp TBL= dtbl -${PRINTER} TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done escribing the input to a computer program. The Yacc user specifies the structures of his input, together with code to be invoked as each such structure is recognized. Yacc turns such a specification into a subroutine that handles the input process; frequently, it is convenient and appropriate to have most of the flowdoc/ps1/16.lex/lex.ms 444 3 12 142521 3655012320 7510 .\" @(#)lex 6.1 (Berkeley) 4/28/86 .\" .EH 'PS1:16-%''Lex \- A Lexical Analyzer Generator' .OH 'Lex \- A Lexical Analyzer Generator''PS1:16-%' .hc ~ .bd I 2 .de TS .br .nf .SP 1v .ul 0 .. .de TE .SP 1v .fi .. .\".de PT .\".if \\n%>1 'tl ''\s7LEX\s0\s9\(mi%\s0'' .\".if \\n%>1 'sp .\".. .ND July 21, 1975 .\".RP .\".TM 75-1274-15 39199 39199-11 .TL Lex \- A Lexical Analyzer ~Generator~ .AU ``MH 2C-569'' 6377 M. E. Lesk and E. Schmidt .AI .MH .AB .sp .bd I 2 .\".nr PS 8 .\".nr VS 9 .\".ps 8 .\".vs 9p Lex helps write programs whose control flow is directed by instances of regular expressions in the input stream. It is well suited for editor-script type transformations and for segmenting input in preparation for a parsing routine. .PP Lex source is a table of regular expressions and corresponding program fragments. The table is translated to a program which reads an input stream, copying it to an output stream and partitioning the input into strings which match the given expressions. As each such string is recognized the corresponding program fragment is executed. The recognition of the expressions is performed by a deterministic finite automaton generated by Lex. The program fragments written by the user are executed in the order in which the corresponding regular expressions occur in the input stream. .if n .if \n(tm .ig .PP The lexical analysis programs written with Lex accept ambiguous specifications and choose the longest match possible at each input point. If necessary, substantial look~ahead is performed on the input, but the input stream will be backed up to the end of the current partition, so that the user has general freedom to manipulate it. .PP Lex can generate analyzers in either C or Ratfor, a language which can be translated automatically to portable Fortran. It is available on the PDP-11 UNIX, Honeywell GCOS, and IBM OS systems. This manual, however, will only discuss generating analyzers in C on the UNIX system, which is the only supported form of Lex under UNIX Version 7. Lex is designed to simplify interfacing with Yacc, for those with access to this compiler-compiler system. .. .\".nr PS 9 .\".nr VS 11 .AE .2C .NH Introduction. .PP Lex is a program generator designed for lexical processing of character input streams. It accepts a high-level, problem oriented specification for character string matching, and produces a program in a general purpose language which recognizes regular expressions. The regular expressions are specified by the user in the source specifications given to Lex. The Lex written code recognizes these expressions in an input stream and partitions the input stream into strings matching the expressions. At the bound~aries between strings program sections provided by the user are executed. The Lex source file associates the regular expressions and the program fragments. As each expression appears in the input to the program written by Lex, the corresponding fragment is executed. .PP .de MH Bell Laboratories, Murray Hill, NJ 07974. .. The user supplies the additional code beyond expression matching needed to complete his tasks, possibly including code written by other generators. The program that recognizes the expressions is generated in the general purpose programming language employed for the user's program fragments. Thus, a high level expression language is provided to write the string expressions to be matched while the user's freedom to write actions is unimpaired. This avoids forcing the user who wishes to use a string manipulation language for input analysis to write processing programs in the same and often inappropriate string handling language. .PP Lex is not a complete language, but rather a generator representing a new language feature which can be added to different programming languages, called ``host languages.'' Just as general purpose languages can produce code to run on different computer hardware, Lex can write code in different host languages. The host language is used for the output code generated by Lex and also for the program fragments added by the user. Compatible run-time libraries for the different host languages are also provided. This makes Lex adaptable to different environments and different users. Each application may be directed to the combination of hardware and host language appropriate to the task, the user's background, and the properties of local implementations. At present, the only supported host language is C, although Fortran (in the form of Ratfor [2] has been available in the past. Lex itself exists on UNIX, GCOS, and OS/370; but the code generated by Lex may be taken anywhere the appropriate compilers exist. .PP Lex turns the user's expressions and actions (called .ul source in this memo) into the host general-purpose language; the generated program is named .ul yylex. The .ul yylex program will recognize expressions in a stream (called .ul input in this memo) and perform the specified actions for each expression as it is detected. See Figure 1. .GS .TS center; l _ r l|c|r l _ r l _ r l|c|r l _ r c s s c s s. Source \(-> Lex \(-> yylex .sp 2 Input \(-> yylex \(-> Output .sp An overview of Lex Figure 1 .TE .GE .PP For a trivial example, consider a program to delete from the input all blanks or tabs at the ends of lines. .TS center; l l. %% [ \et]+$ ; .TE is all that is required. The program contains a %% delimiter to mark the beginning of the rules, and one rule. This rule contains a regular expression which matches one or more instances of the characters blank or tab (written \et for visibility, in accordance with the C language convention) just prior to the end of a line. The brackets indicate the character class made of blank and tab; the + indicates ``one or more ...''; and the $ indicates ``end of line,'' as in QED. No action is specified, so the program generated by Lex (yylex) will ignore these characters. Everything else will be copied. To change any remaining string of blanks or tabs to a single blank, add another rule: .TS center; l l. %% [ \et]+$ ; [ \et]+ printf(" "); .TE The finite automaton generated for this source will scan for both rules at once, observing at the termination of the string of blanks or tabs whether or not there is a newline character, and executing the desired rule action. The first rule matches all strings of blanks or tabs at the end of lines, and the second rule all remaining strings of blanks or tabs. .PP Lex can be used alone for simple transformations, or for analysis and statistics gathering on a lexical level. Lex can also be used with a parser generator to perform the lexical analysis phase; it is particularly easy to interface Lex and Yacc [3]. Lex programs recognize only regular expressions; Yacc writes parsers that accept a large class of context free grammars, but require a lower level analyzer to recognize input tokens. Thus, a combination of Lex and Yacc is often appropriate. When used as a preprocessor for a later parser generator, Lex is used to partition the input stream, and the parser generator assigns structure to the resulting pieces. The flow of control in such a case (which might be the first half of a compiler, for example) is shown in Figure 2. Additional programs, written by other generators or by hand, can be added easily to programs written by Lex. .BS 2 .ps 9 .vs 11 .TS center; l c c c l l c c c l l c c c l l _ c _ l l|c|c|c|l l _ c _ l l c c c l l _ c _ l l|c|c|c|l l _ c _ l l c s s l l c s s l. lexical grammar rules rules \(da \(da Lex Yacc \(da \(da Input \(-> yylex \(-> yyparse \(-> Parsed input .sp Lex with Yacc Figure 2 .TE .ps 10 .vs 12 .BE Yacc users will realize that the name .ul yylex is what Yacc expects its lexical analyzer to be named, so that the use of this name by Lex simplifies interfacing. .PP Lex generates a deterministic finite automaton from the regular expressions in the source [4]. The automaton is interpreted, rather than compiled, in order to save space. The result is still a fast analyzer. In particular, the time taken by a Lex program to recognize and partition an input stream is proportional to the length of the input. The number of Lex rules or the complexity of the rules is not important in determining speed, unless rules which include forward context require a significant amount of re~scanning. What does increase with the number and complexity of rules is the size of the finite automaton, and therefore the size of the program generated by Lex. .PP In the program written by Lex, the user's fragments (representing the .ul actions to be performed as each regular expression is found) are gathered as cases of a switch. The automaton interpreter directs the control flow. Opportunity is provided for the user to insert either declarations or additional statements in the routine containing the actions, or to add subroutines outside this action routine. .PP Lex is not limited to source which can be interpreted on the basis of one character look~ahead. For example, if there are two rules, one looking for .I ab and another for .I abcdefg , and the input stream is .I abcdefh , Lex will recognize .I ab and leave the input pointer just before .I "cd. . ." Such backup is more costly than the processing of simpler languages. .2C .NH Lex Source. .PP The general format of Lex source is: .TS center; l. {definitions} %% {rules} %% {user subroutines} .TE where the definitions and the user subroutines are often omitted. The second .I %% is optional, but the first is required to mark the beginning of the rules. The absolute minimum Lex program is thus .TS center; l. %% .TE (no definitions, no rules) which translates into a program which copies the input to the output unchanged. .PP In the outline of Lex programs shown above, the .I rules .R represent the user's control decisions; they are a table, in which the left column contains .I regular expressions .R (see section 3) and the right column contains .I actions, .R program fragments to be executed when the expressions are recognized. Thus an individual rule might appear .TS center; l l. integer printf("found keyword INT"); .TE to look for the string .I integer in the input stream and print the message ``found keyword INT'' whenever it appears. In this example the host procedural language is C and the C library function .I printf .R is used to print the string. The end of the expression is indicated by the first blank or tab character. If the action is merely a single C expression, it can just be given on the right side of the line; if it is compound, or takes more than a line, it should be enclosed in braces. As a slightly more useful example, suppose it is desired to change a number of words from British to American spelling. Lex rules such as .TS center; l l. colour printf("color"); mechanise printf("mechanize"); petrol printf("gas"); .TE would be a start. These rules are not quite enough, since the word .I petroleum would become .I gaseum ; a way of dealing with this will be described later. .2C .NH Lex Regular Expressions. .PP The definitions of regular expressions are very similar to those in QED [5]. A regular expression specifies a set of strings to be matched. It contains text characters (which match the corresponding characters in the strings being compared) and operator characters (which specify repetitions, choices, and other features). The letters of the alphabet and the digits are always text characters; thus the regular expression .TS center; l l. integer .TE matches the string .ul integer wherever it appears and the expression .TS center; l. a57D .TE looks for the string .ul a57D. .PP .I Operators. .R The operator characters are .TS center; l. " \e [ ] ^ \- ? . \(** + | ( ) $ / { } % < > .TE and if they are to be used as text characters, an escape should be used. The quotation mark operator (") indicates that whatever is contained between a pair of quotes is to be taken as text characters. Thus .TS center; l. xyz"++" .TE matches the string .I xyz++ when it appears. Note that a part of a string may be quoted. It is harmless but unnecessary to quote an ordinary text character; the expression .TS center; l. "xyz++" .TE is the same as the one above. Thus by quoting every non-alphanumeric character being used as a text character, the user can avoid remembering the list above of current operator characters, and is safe should further extensions to Lex lengthen the list. .PP An operator character may also be turned into a text character by preceding it with \e as in .TS center; l. xyz\e+\e+ .TE which is another, less readable, equivalent of the above expressions. Another use of the quoting mechanism is to get a blank into an expression; normally, as explained above, blanks or tabs end a rule. Any blank character not contained within [\|] (see below) must be quoted. Several normal C escapes with \e are recognized: \en is newline, \et is tab, and \eb is backspace. To enter \e itself, use \e\e. Since newline is illegal in an expression, \en must be used; it is not required to escape tab and backspace. Every character but blank, tab, newline and the list above is always a text character. .PP .I Character classes. .R Classes of characters can be specified using the operator pair [\|]. The construction .I [abc] matches a single character, which may be .I a , .I b , or .I c . Within square brackets, most operator meanings are ignored. Only three characters are special: these are \e \(mi and ^. The \(mi character indicates ranges. For example, .TS center; l. [a\(miz0\(mi9<>_] .TE indicates the character class containing all the lower case letters, the digits, the angle brackets, and underline. Ranges may be given in either order. Using \(mi between any pair of characters which are not both upper case letters, both lower case letters, or both digits is implementation dependent and will get a warning message. (E.g., [0\-z] in ASCII is many more characters than it is in EBCDIC). If it is desired to include the character \(mi in a character class, it should be first or last; thus .TS center; l. [\(mi+0\(mi9] .TE matches all the digits and the two signs. .PP In character classes, the ^ operator must appear as the first character after the left bracket; it indicates that the resulting string is to be complemented with respect to the computer character set. Thus .TS center; l. [^abc] .TE matches all characters except a, b, or c, including all special or control characters; or .TS center; l. [^a\-zA\-Z] .TE is any character which is not a letter. The \e character provides the usual escapes within character class brackets. .PP .I Arbitrary character. .R To match almost any character, the operator character .TS center; l. \&. .TE is the class of all characters except newline. Escaping into octal is possible although non-portable: .TS center; l. [\e40\-\e176] .TE matches all printable characters in the ASCII character set, from octal 40 (blank) to octal 176 (tilde). .PP .I Optional expressions. .R The operator .I ? indicates an optional element of an expression. Thus .TS center; l. ab?c .TE matches either .I ac or .I abc . .PP .I Repeated expressions. .R Repetitions of classes are indicated by the operators .I \(** and .I + . .TS center; l. \f2a\(**\f1 .TE is any number of consecutive .I a characters, including zero; while .TS center; l. a+ .TE is one or more instances of .I a. For example, .TS center; l. [a\-z]+ .TE is all strings of lower case letters. And .TS center; l. [A\(miZa\(miz][A\(miZa\(miz0\(mi9]\(** .TE indicates all alphanumeric strings with a leading alphabetic character. This is a typical expression for recognizing identifiers in computer languages. .PP .I Alternation and Grouping. .R The operator | indicates alternation: .TS center; l. (ab\||\|cd) .TE matches either .ul ab or .ul cd. Note that parentheses are used for grouping, although they are not necessary on the outside level; .TS center; l. ab\||\|cd .TE would have sufficed. Parentheses can be used for more complex expressions: .TS center; l. (ab\||\|cd+)?(ef)\(** .TE matches such strings as .I abefef , .I efefef , .I cdef , or .I cddd\| ; but not .I abc , .I abcd , or .I abcdef . .PP .I Context sensitivity. .R Lex will recognize a small amount of surrounding context. The two simplest operators for this are .I ^ and .I $ . If the first character of an expression is .I ^ , the expression will only be matched at the beginning of a line (after a newline character, or at the beginning of the input stream). This can never conflict with the other meaning of .I ^ , complementation of character classes, since that only applies within the [\|] operators. If the very last character is .I $ , the expression will only be matched at the end of a line (when immediately followed by newline). The latter operator is a special case of the .I / operator character, which indicates trailing context. The expression .TS center; l. ab/cd .TE matches the string .I ab , but only if followed by .ul cd. Thus .TS center; l. ab$ .TE is the same as .TS center; l. ab/\en .TE Left context is handled in Lex by .I start conditions .R as explained in section 10. If a rule is only to be executed when the Lex automaton interpreter is in start condition .I x, .R the rule should be prefixed by .TS center; l. .TE using the angle bracket operator characters. If we considered ``being at the beginning of a line'' to be start condition .I ONE , then the ^ operator would be equivalent to .TS center; l. .TE Start conditions are explained more fully later. .PP .I Repetitions and Definitions. .R The operators {} specify either repetitions (if they enclose numbers) or definition expansion (if they enclose a name). For example .TS center; l. {digit} .TE looks for a predefined string named .I digit and inserts it at that point in the expression. The definitions are given in the first part of the Lex input, before the rules. In contrast, .TS center; l. a{1,5} .TE looks for 1 to 5 occurrences of .I a . .PP Finally, initial .I % is special, being the separator for Lex source segments. .2C .NH Lex Actions. .PP When an expression written as above is matched, Lex executes the corresponding action. This section describes some features of Lex which aid in writing actions. Note that there is a default action, which consists of copying the input to the output. This is performed on all strings not otherwise matched. Thus the Lex user who wishes to absorb the entire input, without producing any output, must provide rules to match everything. When Lex is being used with Yacc, this is the normal situation. One may consider that actions are what is done instead of copying the input to the output; thus, in general, a rule which merely copies can be omitted. Also, a character combination which is omitted from the rules and which appears as input is likely to be printed on the output, thus calling attention to the gap in the rules. .PP One of the simplest things that can be done is to ignore the input. Specifying a C null statement, \fI;\fR as an action causes this result. A frequent rule is .TS center; l l. [ \et\en] ; .TE which causes the three spacing characters (blank, tab, and newline) to be ignored. .PP Another easy way to avoid writing actions is the action character |, which indicates that the action for this rule is the action for the next rule. The previous example could also have been written .TS center; l l. " " | "\et" | "\en" ; .TE with the same result, although in different style. The quotes around \en and \et are not required. .PP In more complex actions, the user will often want to know the actual text that matched some expression like .I [a\(miz]+ . Lex leaves this text in an external character array named .I yytext. .R Thus, to print the name found, a rule like .TS center; l l. [a\-z]+ printf("%s", yytext); .TE will print the string in .I yytext. .R The C function .I printf .R accepts a format argument and data to be printed; in this case, the format is ``print string'' (% indicating data conversion, and .I s indicating string type), and the data are the characters in .I yytext. .R So this just places the matched string on the output. This action is so common that it may be written as ECHO: .TS center; l l. [a\-z]+ ECHO; .TE is the same as the above. Since the default action is just to print the characters found, one might ask why give a rule, like this one, which merely specifies the default action? Such rules are often required to avoid matching some other rule which is not desired. For example, if there is a rule which matches .I read it will normally match the instances of .I read contained in .I bread or .I readjust ; to avoid this, a rule of the form .I [a\(miz]+ is needed. This is explained further below. .PP Sometimes it is more convenient to know the end of what has been found; hence Lex also provides a count .I yyleng .R of the number of characters matched. To count both the number of words and the number of characters in words in the input, the user might write .TS center; l l. [a\-zA\-Z]+ {words++; chars += yyleng;} .TE which accumulates in .ul chars the number of characters in the words recognized. The last character in the string matched can be accessed by .TS center; l. yytext[yyleng\-1] .TE .PP Occasionally, a Lex action may decide that a rule has not recognized the correct span of characters. Two routines are provided to aid with this situation. First, .I yymore() .R can be called to indicate that the next input expression recognized is to be tacked on to the end of this input. Normally, the next input string would overwrite the current entry in .I yytext. .R Second, .I yyless (n) .R may be called to indicate that not all the characters matched by the currently successful expression are wanted right now. The argument .I n .R indicates the number of characters in .I yytext .R to be retained. Further characters previously matched are returned to the input. This provides the same sort of look~ahead offered by the / operator, but in a different form. .PP .I Example: .R Consider a language which defines a string as a set of characters between quotation (") marks, and provides that to include a " in a string it must be preceded by a \e. The regular expression which matches that is somewhat confusing, so that it might be preferable to write .TS center; l l. \e"[^"]\(** { if (yytext[yyleng\-1] == \(fm\e\e\(fm) yymore(); else ... normal user processing } .TE which will, when faced with a string such as .I "abc\e"def\|" .R first match the five characters \fI"abc\e\|\fR; then the call to .I yymore() will cause the next part of the string, \fI"def\|\fR, to be tacked on the end. Note that the final quote terminating the string should be picked up in the code labeled ``normal processing''. .PP The function .I yyless() .R might be used to reprocess text in various circumstances. Consider the C problem of distinguishing the ambiguity of ``=\(mia''. Suppose it is desired to treat this as ``=\(mi a'' but print a message. A rule might be .ps 9 .vs 11 .TS center; l l. =\(mi[a\-zA\-Z] { printf("Op (=\(mi) ambiguous\en"); yyless(yyleng\-1); ... action for =\(mi ... } .TE .ps 10 .vs 12 which prints a message, returns the letter after the operator to the input stream, and treats the operator as ``=\(mi''. Alternatively it might be desired to treat this as ``= \(mia''. To do this, just return the minus sign as well as the letter to the input: .ps 9 .vs 11 .TS center; l l. =\(mi[a\-zA\-Z] { printf("Op (=\(mi) ambiguous\en"); yyless(yyleng\-2); ... action for = ... } .TE .ps 10 .vs 12 will perform the other interpretation. Note that the expressions for the two cases might more easily be written .TS center; l l. =\(mi/[A\-Za\-z] .TE in the first case and .TS center; l. =/\-[A\-Za\-z] .TE in the second; no backup would be required in the rule action. It is not necessary to recognize the whole identifier to observe the ambiguity. The possibility of ``=\(mi3'', however, makes .TS center; l. =\(mi/[^ \et\en] .TE a still better rule. .PP In addition to these routines, Lex also permits access to the I/O routines it uses. They are: .IP 1) .I input() .R which returns the next input character; .IP 2) .I output(c) .R which writes the character .I c .R on the output; and .IP 3) .I unput(c) .R pushes the character .I c .R back onto the input stream to be read later by .I input(). .R .LP By default these routines are provided as macro definitions, but the user can override them and supply private versions. These routines define the relationship between external files and internal characters, and must all be retained or modified consistently. They may be redefined, to cause input or output to be transmitted to or from strange places, including other programs or internal memory; but the character set used must be consistent in all routines; a value of zero returned by .I input .R must mean end of file; and the relationship between .I unput .R and .I input .R must be retained or the Lex look~ahead will not work. Lex does not look ahead at all if it does not have to, but every rule ending in .ft I + \(** ? .ft R or .ft I $ .ft R or containing .ft I / .ft R implies look~ahead. Look~ahead is also necessary to match an expression that is a prefix of another expression. See below for a discussion of the character set used by Lex. The standard Lex library imposes a 100 character limit on backup. .PP Another Lex library routine that the user will sometimes want to redefine is .I yywrap() .R which is called whenever Lex reaches an end-of-file. If .I yywrap .R returns a 1, Lex continues with the normal wrapup on end of input. Sometimes, however, it is convenient to arrange for more input to arrive from a new source. In this case, the user should provide a .I yywrap .R which arranges for new input and returns 0. This instructs Lex to continue processing. The default .I yywrap .R always returns 1. .PP This routine is also a convenient place to print tables, summaries, etc. at the end of a program. Note that it is not possible to write a normal rule which recognizes end-of-file; the only access to this condition is through .I yywrap. .R In fact, unless a private version of .I input() .R is supplied a file containing nulls cannot be handled, since a value of 0 returned by .I input .R is taken to be end-of-file. .PP .2C .NH Ambiguous Source Rules. .PP Lex can handle ambiguous specifications. When more than one expression can match the current input, Lex chooses as follows: .IP 1) The longest match is preferred. .IP 2) Among rules which matched the same number of characters, the rule given first is preferred. .LP Thus, suppose the rules .TS center; l l. integer keyword action ...; [a\-z]+ identifier action ...; .TE to be given in that order. If the input is .I integers , it is taken as an identifier, because .I [a\-z]+ matches 8 characters while .I integer matches only 7. If the input is .I integer , both rules match 7 characters, and the keyword rule is selected because it was given first. Anything shorter (e.g. \fIint\fR\|) will not match the expression .I integer and so the identifier interpretation is used. .PP The principle of preferring the longest match makes rules containing expressions like .I \&.\(** dangerous. For example, .TS center; l. \&\(fm.\(**\(fm .TE might seem a good way of recognizing a string in single quotes. But it is an invitation for the program to read far ahead, looking for a distant single quote. Presented with the input .TS center; l l. \&\(fmfirst\(fm quoted string here, \(fmsecond\(fm here .TE the above expression will match .TS center; l l. \&\(fmfirst\(fm quoted string here, \(fmsecond\(fm .TE which is probably not what was wanted. A better rule is of the form .TS center; l. \&\(fm[^\(fm\en]\(**\(fm .TE which, on the above input, will stop after .I \(fmfirst\(fm . The consequences of errors like this are mitigated by the fact that the .I \&. operator will not match newline. Thus expressions like .I \&.\(** stop on the current line. Don't try to defeat this with expressions like .I [.\en]+ or equivalents; the Lex generated program will try to read the entire input file, causing internal buffer overflows. .PP Note that Lex is normally partitioning the input stream, not searching for all possible matches of each expression. This means that each character is accounted for once and only once. For example, suppose it is desired to count occurrences of both \fIshe\fR and \fIhe\fR in an input text. Some Lex rules to do this might be .TS center; l l. she s++; he h++; \en | \&. ; .TE where the last two rules ignore everything besides \fIhe\fR and \fIshe\fR. Remember that . does not include newline. Since \fIshe\fR includes \fIhe\fR, Lex will normally .I not .R recognize the instances of \fIhe\fR included in \fIshe\fR, since once it has passed a \fIshe\fR those characters are gone. .PP Sometimes the user would like to override this choice. The action REJECT means ``go do the next alternative.'' It causes whatever rule was second choice after the current rule to be executed. The position of the input pointer is adjusted accordingly. Suppose the user really wants to count the included instances of \fIhe\fR: .TS center; l l. she {s++; REJECT;} he {h++; REJECT;} \en | \&. ; .TE these rules are one way of changing the previous example to do just that. After counting each expression, it is rejected; whenever appropriate, the other expression will then be counted. In this example, of course, the user could note that \fIshe\fR includes \fIhe\fR but not vice versa, and omit the REJECT action on \fIhe\fR; in other cases, however, it would not be possible a priori to tell which input characters were in both classes. .PP Consider the two rules .TS center; l l. a[bc]+ { ... ; REJECT;} a[cd]+ { ... ; REJECT;} .TE If the input is .I ab , only the first rule matches, and on .I ad only the second matches. The input string .I accb matches the first rule for four characters and then the second rule for three characters. In contrast, the input .I accd agrees with the second rule for four characters and then the first rule for three. .PP In general, REJECT is useful whenever the purpose of Lex is not to partition the input stream but to detect all examples of some items in the input, and the instances of these items may overlap or include each other. Suppose a digram table of the input is desired; normally the digrams overlap, that is the word .I the is considered to contain both .I th and .I he . Assuming a two-dimensional array named .ul digram to be incremented, the appropriate source is .TS center; l l. %% [a\-z][a\-z] { digram[yytext[0]][yytext[1]]++; REJECT; } \. ; \en ; .TE where the REJECT is necessary to pick up a letter pair beginning at every character, rather than at every other character. .2C .NH Lex Source Definitions. .PP Remember the format of the Lex source: .TS center; l. {definitions} %% {rules} %% {user routines} .TE So far only the rules have been described. The user needs additional options, though, to define variables for use in his program and for use by Lex. These can go either in the definitions section or in the rules section. .PP Remember that Lex is turning the rules into a program. Any source not intercepted by Lex is copied into the generated program. There are three classes of such things. .IP 1) Any line which is not part of a Lex rule or action which begins with a blank or tab is copied into the Lex generated program. Such source input prior to the first %% delimiter will be external to any function in the code; if it appears immediately after the first %%, it appears in an appropriate place for declarations in the function written by Lex which contains the actions. This material must look like program fragments, and should precede the first Lex rule. .IP As a side effect of the above, lines which begin with a blank or tab, and which contain a comment, are passed through to the generated program. This can be used to include comments in either the Lex source or the generated code. The comments should follow the host language convention. .IP 2) Anything included between lines containing only .I %{ and .I %} is copied out as above. The delimiters are discarded. This format permits entering text like preprocessor statements that must begin in column 1, or copying lines that do not look like programs. .IP 3) Anything after the third %% delimiter, regardless of formats, etc., is copied out after the Lex output. .PP Definitions intended for Lex are given before the first %% delimiter. Any line in this section not contained between %{ and %}, and begining in column 1, is assumed to define Lex substitution strings. The format of such lines is .TS center; l l. name translation .TE and it causes the string given as a translation to be associated with the name. The name and translation must be separated by at least one blank or tab, and the name must begin with a letter. The translation can then be called out by the {name} syntax in a rule. Using {D} for the digits and {E} for an exponent field, for example, might abbreviate rules to recognize numbers: .TS center; l l. D [0\-9] E [DEde][\-+]?{D}+ %% {D}+ printf("integer"); {D}+"."{D}\(**({E})? | {D}\(**"."{D}+({E})? | {D}+{E} printf("real"); .TE Note the first two rules for real numbers; both require a decimal point and contain an optional exponent field, but the first requires at least one digit before the decimal point and the second requires at least one digit after the decimal point. To correctly handle the problem posed by a Fortran expression such as .I 35.EQ.I , which does not contain a real number, a context-sensitive rule such as .TS center; l l. [0\-9]+/"."EQ printf("integer"); .TE could be used in addition to the normal rule for integers. .PP The definitions section may also contain other commands, including the selection of a host language, a character set table, a list of start conditions, or adjustments to the default size of arrays within Lex itself for larger source programs. These possibilities are discussed below under ``Summary of Source Format,'' section 12. .2C .NH Usage. .PP There are two steps in compiling a Lex source program. First, the Lex source must be turned into a generated program in the host general purpose language. Then this program must be compiled and loaded, usually with a library of Lex subroutines. The generated program is on a file named .I lex.yy.c . The I/O library is defined in terms of the C standard library [6]. .PP The C programs generated by Lex are slightly different on OS/370, because the OS compiler is less powerful than the UNIX or GCOS compilers, and does less at compile time. C programs generated on GCOS and UNIX are the same. .PP .I UNIX. .R The library is accessed by the loader flag .I \-ll . So an appropriate set of commands is .KS .in 5 lex source cc lex.yy.c \-ll .in 0 .KE The resulting program is placed on the usual file .I a.out .R for later execution. To use Lex with Yacc see below. Although the default Lex I/O routines use the C standard library, the Lex automata themselves do not do so; if private versions of .I input, output .R and .I unput are given, the library can be avoided. .PP .2C .NH Lex and Yacc. .PP If you want to use Lex with Yacc, note that what Lex writes is a program named .I yylex(), .R the name required by Yacc for its analyzer. Normally, the default main program on the Lex library calls this routine, but if Yacc is loaded, and its main program is used, Yacc will call .I yylex(). .R In this case each Lex rule should end with .TS center; l. return(token); .TE where the appropriate token value is returned. An easy way to get access to Yacc's names for tokens is to compile the Lex output file as part of the Yacc output file by placing the line .TS center; l. # include "lex.yy.c" .TE in the last section of Yacc input. Supposing the grammar to be named ``good'' and the lexical rules to be named ``better'' the UNIX command sequence can just be: .TS center; l. yacc good lex better cc y.tab.c \-ly \-ll .TE The Yacc library (\-ly) should be loaded before the Lex library, to obtain a main program which invokes the Yacc parser. The generations of Lex and Yacc programs can be done in either order. .2C .NH Examples. .PP As a trivial problem, consider copying an input file while adding 3 to every positive number divisible by 7. Here is a suitable Lex source program .TS center; l l. %% int k; [0\-9]+ { k = atoi(yytext); if (k%7 == 0) printf("%d", k+3); else printf("%d",k); } .TE to do just that. The rule [0\-9]+ recognizes strings of digits; .I atoi .R converts the digits to binary and stores the result in .ul k. The operator % (remainder) is used to check whether .ul k is divisible by 7; if it is, it is incremented by 3 as it is written out. It may be objected that this program will alter such input items as .I 49.63 or .I X7 . Furthermore, it increments the absolute value of all negative numbers divisible by 7. To avoid this, just add a few more rules after the active one, as here: .TS center; l l. %% int k; \-?[0\-9]+ { k = atoi(yytext); printf("%d", k%7 == 0 ? k+3 : k); } \-?[0\-9.]+ ECHO; [A-Za-z][A-Za-z0-9]+ ECHO; .TE Numerical strings containing a ``.'' or preceded by a letter will be picked up by one of the last two rules, and not changed. The .I if\-else has been replaced by a C conditional expression to save space; the form .ul a?b:c means ``if .I a then .I b else .I c ''. .PP For an example of statistics gathering, here is a program which histograms the lengths of words, where a word is defined as a string of letters. .TS center; l l. int lengs[100]; %% [a\-z]+ lengs[yyleng]++; \&. | \en ; %% .T& l s. yywrap() { int i; printf("Length No. words\en"); for(i=0; i<100; i++) if (lengs[i] > 0) printf("%5d%10d\en",i,lengs[i]); return(1); } .TE This program accumulates the histogram, while producing no output. At the end of the input it prints the table. The final statement .I return(1); .R indicates that Lex is to perform wrapup. If .I yywrap .R returns zero (false) it implies that further input is available and the program is to continue reading and processing. To provide a .I yywrap .R that never returns true causes an infinite loop. .PP As a larger example, here are some parts of a program written by N. L. Schryer to convert double precision Fortran to single precision Fortran. Because Fortran does not distinguish upper and lower case letters, this routine begins by defining a set of classes including both cases of each letter: .TS center; l l. a [aA] b [bB] c [cC] \&... z [zZ] .TE An additional class recognizes white space: .TS center; l l. W [ \et]\(** .TE The first rule changes ``double precision'' to ``real'', or ``DOUBLE PRECISION'' to ``REAL''. .TS center; l. {d}{o}{u}{b}{l}{e}{W}{p}{r}{e}{c}{i}{s}{i}{o}{n} { printf(yytext[0]==\(fmd\(fm? "real" : "REAL"); } .TE Care is taken throughout this program to preserve the case (upper or lower) of the original program. The conditional operator is used to select the proper form of the keyword. The next rule copies continuation card indications to avoid confusing them with constants: .TS center; l l. ^" "[^ 0] ECHO; .TE In the regular expression, the quotes surround the blanks. It is interpreted as ``beginning of line, then five blanks, then anything but blank or zero.'' Note the two different meanings of .I ^ . There follow some rules to change double precision constants to ordinary floating constants. .TS center; l. [0\-9]+{W}{d}{W}[+\-]?{W}[0\-9]+ | [0\-9]+{W}"."{W}{d}{W}[+\-]?{W}[0\-9]+ | "."{W}[0\-9]+{W}{d}{W}[+\-]?{W}[0\-9]+ { /\(** convert constants \(**/ for(p=yytext; \(**p != 0; p++) { if (\(**p == \(fmd\(fm || \(**p == \(fmD\(fm) \(**p=+ \(fme\(fm\- \(fmd\(fm; ECHO; } .TE After the floating point constant is recognized, it is scanned by the .ul for loop to find the letter .I d or .I D . The program than adds .c .I \(fme\(fm\-\(fmd\(fm , which converts it to the next letter of the alphabet. The modified constant, now single-precision, is written out again. There follow a series of names which must be respelled to remove their initial \fId\fR. By using the array .I yytext .R the same action suffices for all the names (only a sample of a rather long list is given here). .TS center; l l. {d}{s}{i}{n} | {d}{c}{o}{s} | {d}{s}{q}{r}{t} | {d}{a}{t}{a}{n} | \&... {d}{f}{l}{o}{a}{t} printf("%s",yytext+1); .TE Another list of names must have initial \fId\fR changed to initial \fIa\fR: .TS center; l l. {d}{l}{o}{g} | {d}{l}{o}{g}10 | {d}{m}{i}{n}1 | {d}{m}{a}{x}1 { yytext[0] =+ \(fma\(fm \- \(fmd\(fm; ECHO; } .TE And one routine must have initial \fId\fR changed to initial \fIr\fR: .TS center; l l. {d}1{m}{a}{c}{h} {yytext[0] =+ \(fmr\(fm \- \(fmd\(fm; ECHO; } .TE To avoid such names as \fIdsinx\fR being detected as instances of \fIdsin\fR, some final rules pick up longer words as identifiers and copy some surviving characters: .TS center; l l. [A\-Za\-z][A\-Za\-z0\-9]\(** | [0\-9]+ | \en | \&. ECHO; .TE Note that this program is not complete; it does not deal with the spacing problems in Fortran or with the use of keywords as identifiers. .br .2C .NH Left Context Sensitivity. .PP Sometimes it is desirable to have several sets of lexical rules to be applied at different times in the input. For example, a compiler preprocessor might distinguish preprocessor statements and analyze them differently from ordinary statements. This requires sensitivity to prior context, and there are several ways of handling such problems. The \fI^\fR operator, for example, is a prior context operator, recognizing immediately preceding left context just as \fI$\fR recognizes immediately following right context. Adjacent left context could be extended, to produce a facility similar to that for adjacent right context, but it is unlikely to be as useful, since often the relevant left context appeared some time earlier, such as at the beginning of a line. .PP This section describes three means of dealing with different environments: a simple use of flags, when only a few rules change from one environment to another, the use of .I start conditions .R on rules, and the possibility of making multiple lexical analyzers all run together. In each case, there are rules which recognize the need to change the environment in which the following input text is analyzed, and set some parameter to reflect the change. This may be a flag explicitly tested by the user's action code; such a flag is the simplest way of dealing with the problem, since Lex is not involved at all. It may be more convenient, however, to have Lex remember the flags as initial conditions on the rules. Any rule may be associated with a start condition. It will only be recognized when Lex is in that start condition. The current start condition may be changed at any time. Finally, if the sets of rules for the different environments are very dissimilar, clarity may be best achieved by writing several distinct lexical analyzers, and switching from one to another as desired. .PP Consider the following problem: copy the input to the output, changing the word \fImagic\fR to \fIfirst\fR on every line which began with the letter \fIa\fR, changing \fImagic\fR to \fIsecond\fR on every line which began with the letter \fIb\fR, and changing \fImagic\fR to \fIthird\fR on every line which began with the letter \fIc\fR. All other words and all other lines are left unchanged. .PP These rules are so simple that the easiest way to do this job is with a flag: .TS center; l l. int flag; %% ^a {flag = \(fma\(fm; ECHO;} ^b {flag = \(fmb\(fm; ECHO;} ^c {flag = \(fmc\(fm; ECHO;} \en {flag = 0 ; ECHO;} magic { switch (flag) { case \(fma\(fm: printf("first"); break; case \(fmb\(fm: printf("second"); break;  case \(fmc\(fm: printf("third"); break; default: ECHO; break; } } .TE should be adequate. .PP To handle the same problem with start conditions, each start condition must be introduced to Lex in the definitions section with a line reading .TS center; l l. %Start name1 name2 ... .TE where the conditions may be named in any order. The word \fIStart\fR may be abbreviated to \fIs\fR or \fIS\fR. The conditions may be referenced at the head of a rule with the <> brackets: .TS center; l. expression .TE is a rule which is only recognized when Lex is in the start condition \fIname1\fR. To enter a start condition, execute the action statement .TS center; l. BEGIN name1; .TE which changes the start condition to \fIname1\fR. To resume the normal state, .TS center; l. BEGIN 0; .TE resets the initial condition of the Lex automaton interpreter. A rule may be active in several start conditions: .TS center; l. .TE is a legal prefix. Any rule not beginning with the <> prefix operator is always active. .PP The same example as before can be written: .TS center; l l. %START AA BB CC %% ^a {ECHO; BEGIN AA;} ^b {ECHO; BEGIN BB;} ^c {ECHO; BEGIN CC;} \en {ECHO; BEGIN 0;} magic printf("first"); magic printf("second"); magic printf("third"); .TE where the logic is exactly the same as in the previous method of handling the problem, but Lex does the work rather than the user's code. .2C .NH Character Set. .PP The programs generated by Lex handle character I/O only through the routines .I input, output, .R and .I unput. .R Thus the character representation provided in these routines is accepted by Lex and employed to return values in .I yytext. .R For internal use a character is represented as a small integer which, if the standard library is used, has a value equal to the integer value of the bit pattern representing the character on the host computer. Normally, the letter .I a is represented as the same form as the character constant .I \(fma\(fm . If this interpretation is changed, by providing I/O routines which translate the characters, Lex must be told about it, by giving a translation table. This table must be in the definitions section, and must be bracketed by lines containing only ``%T''. The table contains lines of the form .TS center; l. {integer} {character string} .TE which indicate the value associated with each character. Thus the next example .GS 2 .TS center; l l. %T 1 Aa 2 Bb \&... 26 Zz 27 \en 28 + 29 \- 30 0 31 1 \&... 39 9 %T .TE .sp .ce 1 Sample character table. .GE maps the lower and upper case letters together into the integers 1 through 26, newline into 27, + and \- into 28 and 29, and the digits into 30 through 39. Note the escape for newline. If a table is supplied, every character that is to appear either in the rules or in any valid input must be included in the table. No character may be assigned the number 0, and no character may be assigned a bigger number than the size of the hardware character set. .2C .NH Summary of Source Format. .PP The general form of a Lex source file is: .TS center; l. {definitions} %% {rules} %% {user subroutines} .TE The definitions section contains a combination of .IP 1) Definitions, in the form ``name space translation''. .IP 2) Included code, in the form ``space code''. .IP 3) Included code, in the form .TS center; l. %{ code %} .TE .ns .IP 4) Start conditions, given in the form .TS center; l. %S name1 name2 ... .TE .ns .IP 5) Character set tables, in the form .TS center; l. %T number space character-string \&... %T .TE .ns .IP 6) Changes to internal array sizes, in the form .TS center; l. %\fIx\fR\0\0\fInnn\fR .TE where \fInnn\fR is a decimal integer representing an array size and \fIx\fR selects the parameter as follows: .TS center; c c c l. Letter Parameter p positions n states e tree nodes a transitions k packed character classes o output array size .TE .LP Lines in the rules section have the form ``expression action'' where the action may be continued on succeeding lines by using braces to delimit it. .PP Regular expressions in Lex use the following operators: .br .TS center; l l. x the character "x" "x" an "x", even if x is an operator. \ex an "x", even if x is an operator. [xy] the character x or y. [x\-z] the characters x, y or z. [^x] any character but x. \&. any character but newline. ^x an x at the beginning of a line. x an x when Lex is in start condition y. x$ an x at the end of a line. x? an optional x. x\(** 0,1,2, ... instances of x. x+ 1,2,3, ... instances of x. x|y an x or a y. (x) an x. x/y an x but only if followed by y. {xx} the translation of xx from the definitions section. x{m,n} \fIm\fR through \fIn\fR occurrences of x .TE .NH Caveats and Bugs. .PP There are pathological expressions which produce exponential growth of the tables when converted to deterministic machines; fortunately, they are rare. .PP REJECT does not rescan the input; instead it remembers the results of the previous scan. This means that if a rule with trailing context is found, and REJECT executed, the user must not have used .ul unput to change the characters forthcoming from the input stream. This is the only restriction on the user's ability to manipulate the not-yet-processed input. .PP .2C .NH Acknowledgments. .PP As should be obvious from the above, the outside of Lex is patterned on Yacc and the inside on Aho's string matching routines. Therefore, both S. C. Johnson and A. V. Aho are really originators of much of Lex, as well as debuggers of it. Many thanks are due to both. .PP The code of the current version of Lex was designed, written, and debugged by Eric Schmidt. .SG MH-1274-MEL-unix .sp 1 .2C .NH References. .SP 1v .IP 1. B. W. Kernighan and D. M. Ritchie, .I The C Programming Language, .R Prentice-Hall, N. J. (1978). .IP 2. B. W. Kernighan, .I Ratfor: A Preprocessor for a Rational Fortran, .R Software \- Practice and Experience, \fB5\fR, pp. 395-496 (1975). .IP 3. S. C. Johnson, .I Yacc: Yet Another Compiler Compiler, .R Computing Science Technical Report No. 32, 1975, .MH .if \n(tm (also TM 75-1273-6) .IP 4. A. V. Aho and M. J. Corasick, .I Efficient String Matching: An Aid to Bibliographic Search, .R Comm. ACM .B 18, .R 333-340 (1975). .IP 5. B. W. Kernighan, D. M. Ritchie and K. L. Thompson, .I QED Text Editor, .R Computing Science Technical Report No. 5, 1972, .MH .IP 6. D. M. Ritchie, private communication. See also M. E. Lesk, .I The Portable C Library, .R Computing Science Technical Report No. 31, .MH .if \n(tm (also TM 75-1274-11) lled to remove their initial \fId\fR. By using the array .I yytext .R the same action suffices for all the names (only a sample of a rather long list is given here). .TS centedoc/ps1/17.m4/ 755 3 12 0 3660051143 5762 doc/ps1/17.m4/Makefile 444 3 12 1124 3660051140 7500 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 5/8/86 # SRCS= m4.ms MACROS= -msU PRINTER=Pdp TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TROFF} ${MACROS} -t ${SRCS} > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done t condition must be introduced to Lex in the definitions section with a line reading .TS center; l l. %Start name1 name2 ... .TE where the conditions may be named in any order. The word \fIStart\fR may be abbreviated to \fIs\fR or \fIS\fR. The conditions may be referenced at the head of a rule with the <> brackets: .TS center; l. expression .TE is a rule which is only recognized when Lex is in the start condition \fIndoc/ps1/17.m4/m4.ms 444 3 12 43731 3660051120 6751 .\" @(#)m4 6.1 (Berkeley) 5/8/86 .\" .EH 'PS1:17-%''The M4 Macro Processor' .OH 'The M4 Macro Processor''PS1:17-%' .if n .ls 2 .tr _\(em .tr *\(** .de UC \&\\$3\s-1\\$1\\s0\&\\$2 .. .de IT .if n .ul \&\\$3\f2\\$1\fP\&\\$2 .. .de UL .if n .ul \&\\$3\f3\\$1\fP\&\\$2 .. .de P1 .DS I 3n .if n .ls 2 .nf .if n .ta 5 10 15 20 25 30 35 40 45 50 55 60 .if t .ta .4i .8i 1.2i 1.6i 2i 2.4i 2.8i 3.2i 3.6i 4i 4.4i 4.8i 5.2i 5.6i .if t .tr -\(mi|\(bv'\(fm^\(no*\(** .tr `\(ga'\(aa .if t .tr _\(ul .ft 3 .lg 0 .. .de P2 .ps \\n(PS .vs \\n(VSp .ft R .if n .ls 2 .tr --||''^^!! .if t .tr _\(em .fi .lg .DE .if t .tr _\(em .. .hw semi-colon .hw estab-lished .hy 14 . \"2=not last lines; 4= no -xx; 8=no xx- . \"special chars in programs . \" start of text .\".RP .....TR 59 .....TM 77-1273-6 39199 39199-11 .ND "July 1, 1977" .TL The M4 Macro Processor .AU "MH 2C-518" 6021 Brian W. Kernighan .AU "MH 2C-517" 3770 Dennis M. Ritchie .AI .MH .AB .PP M4 is a macro processor available on .UX and .UC GCOS . Its primary use has been as a front end for Ratfor for those cases where parameterless macros are not adequately powerful. It has also been used for languages as disparate as C and Cobol. M4 is particularly suited for functional languages like Fortran, PL/I and C since macros are specified in a functional notation. .PP M4 provides features seldom found even in much larger macro processors, including .IP " \(bu" arguments .IP " \(bu" condition testing .IP " \(bu" arithmetic capabilities .IP " \(bu" string and substring functions .IP " \(bu" file manipulation .LP .PP This paper is a user's manual for M4. .AE .CS 6 0 6 0 0 1 .if t .2C .SH Introduction .PP A macro processor is a useful way to enhance a programming language, to make it more palatable or more readable, or to tailor it to a particular application. The .UL #define statement in C and the analogous .UL define in Ratfor are examples of the basic facility provided by any macro processor _ replacement of text by other text. .PP The M4 macro processor is an extension of a macro processor called M3 which was written by D. M. Ritchie for the AP-3 minicomputer; M3 was in turn based on a macro processor implemented for [1]. Readers unfamiliar with the basic ideas of macro processing may wish to read some of the discussion there. .PP M4 is a suitable front end for Ratfor and C, and has also been used successfully with Cobol. Besides the straightforward replacement of one string of text by another, it provides macros with arguments, conditional macro expansion, arithmetic, file manipulation, and some specialized string processing functions. .PP The basic operation of M4 is to copy its input to its output. As the input is read, however, each alphanumeric ``token'' (that is, string of letters and digits) is checked. If it is the name of a macro, then the name of the macro is replaced by its defining text, and the resulting string is pushed back onto the input to be rescanned. Macros may be called with arguments, in which case the arguments are collected and substituted into the right places in the defining text before it is rescanned. .PP M4 provides a collection of about twenty built-in macros which perform various useful operations; in addition, the user can define new macros. Built-ins and user-defined macros work exactly the same way, except that some of the built-in macros have side effects on the state of the process. .SH Usage .PP On .UC UNIX , use .P1 m4 [files] .P2 Each argument file is processed in order; if there are no arguments, or if an argument is `\-', the standard input is read at that point. The processed text is written on the standard output, which may be captured for subsequent processing with .P1 m4 [files] >outputfile .P2 On .UC GCOS , usage is identical, but the program is called .UL \&./m4 . .SH Defining Macros .PP The primary built-in function of M4 is .UL define , which is used to define new macros. The input .P1 define(name, stuff) .P2 causes the string .UL name to be defined as .UL stuff . All subsequent occurrences of .UL name will be replaced by .UL stuff . .UL name must be alphanumeric and must begin with a letter (the underscore \(ul counts as a letter). .UL stuff is any text that contains balanced parentheses; it may stretch over multiple lines. .PP Thus, as a typical example, .P1 define(N, 100) ... if (i > N) .P2 defines .UL N to be 100, and uses this ``symbolic constant'' in a later .UL if statement. .PP The left parenthesis must immediately follow the word .UL define , to signal that .UL define has arguments. If a macro or built-in name is not followed immediately by `(', it is assumed to have no arguments. This is the situation for .UL N above; it is actually a macro with no arguments, and thus when it is used there need be no (...) following it. .PP You should also notice that a macro name is only recognized as such if it appears surrounded by non-alphanumerics. For example, in .P1 define(N, 100) ... if (NNN > 100) .P2 the variable .UL NNN is absolutely unrelated to the defined macro .UL N , even though it contains a lot of .UL N 's. .PP Things may be defined in terms of other things. For example, .P1 define(N, 100) define(M, N) .P2 defines both M and N to be 100. .PP What happens if .UL N is redefined? Or, to say it another way, is .UL M defined as .UL N or as 100? In M4, the latter is true _ .UL M is 100, so even if .UL N subsequently changes, .UL M does not. .PP This behavior arises because M4 expands macro names into their defining text as soon as it possibly can. Here, that means that when the string .UL N is seen as the arguments of .UL define are being collected, it is immediately replaced by 100; it's just as if you had said .P1 define(M, 100) .P2 in the first place. .PP If this isn't what you really want, there are two ways out of it. The first, which is specific to this situation, is to interchange the order of the definitions: .P1 define(M, N) define(N, 100) .P2 Now .UL M is defined to be the string .UL N , so when you ask for .UL M later, you'll always get the value of .UL N at that time (because the .UL M will be replaced by .UL N which will be replaced by 100). .SH Quoting .PP The more general solution is to delay the expansion of the arguments of .UL define by .ul quoting them. Any text surrounded by the single quotes \(ga and \(aa is not expanded immediately, but has the quotes stripped off. If you say .P1 define(N, 100) define(M, `N') .P2 the quotes around the .UL N are stripped off as the argument is being collected, but they have served their purpose, and .UL M is defined as the string .UL N , not 100. The general rule is that M4 always strips off one level of single quotes whenever it evaluates something. This is true even outside of macros. If you want the word .UL define to appear in the output, you have to quote it in the input, as in .P1 `define' = 1; .P2 .PP As another instance of the same thing, which is a bit more surprising, consider redefining .UL N : .P1 define(N, 100) ... define(N, 200) .P2 Perhaps regrettably, the .UL N in the second definition is evaluated as soon as it's seen; that is, it is replaced by 100, so it's as if you had written .P1 define(100, 200) .P2 This statement is ignored by M4, since you can only define things that look like names, but it obviously doesn't have the effect you wanted. To really redefine .UL N , you must delay the evaluation by quoting: .P1 define(N, 100) ... define(`N', 200) .P2 In M4, it is often wise to quote the first argument of a macro. .PP If \` and \' are not convenient for some reason, the quote characters can be changed with the built-in .UL changequote : .P1 changequote([, ]) .P2 makes the new quote characters the left and right brackets. You can restore the original characters with just .P1 changequote .P2 .PP There are two additional built-ins related to .UL define . .UL undefine removes the definition of some macro or built-in: .P1 undefine(`N') .P2 removes the definition of .UL N . (Why are the quotes absolutely necessary?) Built-ins can be removed with .UL undefine , as in .P1 undefine(`define') .P2 but once you remove one, you can never get it back. .PP The built-in .UL ifdef provides a way to determine if a macro is currently defined. In particular, M4 has pre-defined the names .UL unix and .UL gcos on the corresponding systems, so you can tell which one you're using: .P1 ifdef(`unix', `define(wordsize,16)' ) ifdef(`gcos', `define(wordsize,36)' ) .P2 makes a definition appropriate for the particular machine. Don't forget the quotes! .PP .UL ifdef actually permits three arguments; if the name is undefined, the value of .UL ifdef is then the third argument, as in .P1 ifdef(`unix', on UNIX, not on UNIX) .P2 .SH Arguments .PP So far we have discussed the simplest form of macro processing _ replacing one string by another (fixed) string. User-defined macros may also have arguments, so different invocations can have different results. Within the replacement text for a macro (the second argument of its .UL define ) any occurrence of .UL $n will be replaced by the .UL n th argument when the macro is actually used. Thus, the macro .UL bump , defined as .P1 define(bump, $1 = $1 + 1) .P2 generates code to increment its argument by 1: .P1 bump(x) .P2 is .P1 x = x + 1 .P2 .PP A macro can have as many arguments as you want, but only the first nine are accessible, through .UL $1 to .UL $9 . (The macro name itself is .UL $0 , although that is less commonly used.) Arguments that are not supplied are replaced by null strings, so we can define a macro .UL cat which simply concatenates its arguments, like this: .P1 define(cat, $1$2$3$4$5$6$7$8$9) .P2 Thus .P1 cat(x, y, z) .P2 is equivalent to .P1 xyz .P2 .UL $4 through .UL $9 are null, since no corresponding arguments were provided. .PP .PP Leading unquoted blanks, tabs, or newlines that occur during argument collection are discarded. All other white space is retained. Thus .P1 define(a, b c) .P2 defines .UL a to be .UL b\ \ \ c . .PP Arguments are separated by commas, but parentheses are counted properly, so a comma ``protected'' by parentheses does not terminate an argument. That is, in .P1 define(a, (b,c)) .P2 there are only two arguments; the second is literally .UL (b,c) . And of course a bare comma or parenthesis can be inserted by quoting it. .SH Arithmetic Built-ins .PP M4 provides two built-in functions for doing arithmetic on integers (only). The simplest is .UL incr , which increments its numeric argument by 1. Thus to handle the common programming situation where you want a variable to be defined as ``one more than N'', write .P1 define(N, 100) define(N1, `incr(N)') .P2 Then .UL N1 is defined as one more than the current value of .UL N . .PP The more general mechanism for arithmetic is a built-in called .UL eval , which is capable of arbitrary arithmetic on integers. It provides the operators (in decreasing order of precedence) .DS unary + and \(mi ** or ^ (exponentiation) * / % (modulus) + \(mi == != < <= > >= ! (not) & or && (logical and) \(or or \(or\(or (logical or) .DE Parentheses may be used to group operations where needed. All the operands of an expression given to .UL eval must ultimately be numeric. The numeric value of a true relation (like 1>0) is 1, and false is 0. The precision in .UL eval is 32 bits on .UC UNIX and 36 bits on .UC GCOS . .PP As a simple example, suppose we want .UL M to be .UL 2**N+1 . Then .P1 define(N, 3) define(M, `eval(2**N+1)') .P2 As a matter of principle, it is advisable to quote the defining text for a macro unless it is very simple indeed (say just a number); it usually gives the result you want, and is a good habit to get into. .SH File Manipulation .PP You can include a new file in the input at any time by the built-in function .UL include : .P1 include(filename) .P2 inserts the contents of .UL filename in place of the .UL include command. The contents of the file is often a set of definitions. The value of .UL include (that is, its replacement text) is the contents of the file; this can be captured in definitions, etc. .PP It is a fatal error if the file named in .UL include cannot be accessed. To get some control over this situation, the alternate form .UL sinclude can be used; .UL sinclude (``silent include'') says nothing and continues if it can't access the file. .PP It is also possible to divert the output of M4 to temporary files during processing, and output the collected material upon command. M4 maintains nine of these diversions, numbered 1 through 9. If you say .P1 divert(n) .P2 all subsequent output is put onto the end of a temporary file referred to as .UL n . Diverting to this file is stopped by another .UL divert command; in particular, .UL divert or .UL divert(0) resumes the normal output process. .PP Diverted text is normally output all at once at the end of processing, with the diversions output in numeric order. It is possible, however, to bring back diversions at any time, that is, to append them to the current diversion. .P1 undivert .P2 brings back all diversions in numeric order, and .UL undivert with arguments brings back the selected diversions in the order given. The act of undiverting discards the diverted stuff, as does diverting into a diversion whose number is not between 0 and 9 inclusive. .PP The value of .UL undivert is .ul not the diverted stuff. Furthermore, the diverted material is .ul not rescanned for macros. .PP The built-in .UL divnum returns the number of the currently active diversion. This is zero during normal processing. .SH System Command .PP You can run any program in the local operating system with the .UL syscmd built-in. For example, .P1 syscmd(date) .P2 on .UC UNIX runs the .UL date command. Normally .UL syscmd would be used to create a file for a subsequent .UL include . .PP To facilitate making unique file names, the built-in .UL maketemp is provided, with specifications identical to the system function .ul mktemp: a string of XXXXX in the argument is replaced by the process id of the current process. .SH Conditionals .PP There is a built-in called .UL ifelse which enables you to perform arbitrary conditional testing. In the simplest form, .P1 ifelse(a, b, c, d) .P2 compares the two strings .UL a and .UL b . If these are identical, .UL ifelse returns the string .UL c ; otherwise it returns .UL d . Thus we might define a macro called .UL compare which compares two strings and returns ``yes'' or ``no'' if they are the same or different. .P1 define(compare, `ifelse($1, $2, yes, no)') .P2 Note the quotes, which prevent too-early evaluation of .UL ifelse . .PP If the fourth argument is missing, it is treated as empty. .PP .UL ifelse can actually have any number of arguments, and thus provides a limited form of multi-way decision capability. In the input .P1 ifelse(a, b, c, d, e, f, g) .P2 if the string .UL a matches the string .UL b , the result is .UL c . Otherwise, if .UL d is the same as .UL e , the result is .UL f . Otherwise the result is .UL g . If the final argument is omitted, the result is null, so .P1 ifelse(a, b, c) .P2 is .UL c if .UL a matches .UL b , and null otherwise. .SH String Manipulation .PP The built-in .UL len returns the length of the string that makes up its argument. Thus .P1 len(abcdef) .P2 is 6, and .UL len((a,b)) is 5. .PP The built-in .UL substr can be used to produce substrings of strings. .UL substr(s,\ i,\ n) returns the substring of .UL s that starts at the .UL i th position (origin zero), and is .UL n characters long. If .UL n is omitted, the rest of the string is returned, so .P1 substr(`now is the time', 1) .P2 is .P1 ow is the time .P2 If .UL i or .UL n are out of range, various sensible things happen. .PP .UL index(s1,\ s2) returns the index (position) in .UL s1 where the string .UL s2 occurs, or \-1 if it doesn't occur. As with .UL substr , the origin for strings is 0. .PP The built-in .UL translit performs character transliteration. .P1 translit(s, f, t) .P2 modifies .UL s by replacing any character found in .UL f by the corresponding character of .UL t . That is, .P1 translit(s, aeiou, 12345) .P2 replaces the vowels by the corresponding digits. If .UL t is shorter than .UL f , characters which don't have an entry in .UL t are deleted; as a limiting case, if .UL t is not present at all, characters from .UL f are deleted from .UL s . So .P1 translit(s, aeiou) .P2 deletes vowels from .UL s . .PP There is also a built-in called .UL dnl which deletes all characters that follow it up to and including the next newline; it is useful mainly for throwing away empty lines that otherwise tend to clutter up M4 output. For example, if you say .P1 define(N, 100) define(M, 200) define(L, 300) .P2 the newline at the end of each line is not part of the definition, so it is copied into the output, where it may not be wanted. If you add .UL dnl to each of these lines, the newlines will disappear. .PP Another way to achieve this, due to J. E. Weythman, is .P1 divert(-1) define(...) ... divert .P2 .SH Printing .PP The built-in .UL errprint writes its arguments out on the standard error file. Thus you can say .P1 errprint(`fatal error') .P2 .PP .UL dumpdef is a debugging aid which dumps the current definitions of defined terms. If there are no arguments, you get everything; otherwise you get the ones you name as arguments. Don't forget to quote the names! .SH Summary of Built-ins .PP Each entry is preceded by the page number where it is described. .DS .tr '\'`\` .ta .25i 3 changequote(L, R) 1 define(name, replacement) 4 divert(number) 4 divnum 5 dnl 5 dumpdef(`name', `name', ...) 5 errprint(s, s, ...) 4 eval(numeric expression) 3 ifdef(`name', this if true, this if false) 5 ifelse(a, b, c, d) 4 include(file) 3 incr(number) 5 index(s1, s2) 5 len(string) 4 maketemp(...XXXXX...) 4 sinclude(file) 5 substr(string, position, number) 4 syscmd(s) 5 translit(str, from, to) 3 undefine(`name') 4 undivert(number,number,...) .DE .SH Acknowledgements .PP We are indebted to Rick Becker, John Chambers, Doug McIlroy, and especially Jim Weythman, whose pioneering use of M4 has led to several valuable improvements. We are also deeply grateful to Weythman for several substantial contributions to the code. .SG .SH References .LP .IP [1] B. W. Kernighan and P. J. Plauger, .ul Software Tools, Addison-Wesley, Inc., 1976. it back. .PP The built-in .UL ifdef prdoc/ps1/18.curses/ 755 3 12 0 3655013666 6763 doc/ps1/18.curses/appen.A 444 3 12 7717 3653364351 10265 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)appen.A 6.1 (Berkeley) 4/23/86 .\" .ie t .oh '\*(Ln Appendix A''PS1:18-%' .eh 'PS1:18-%''\*(Ln Appendix A' .el .he ''\fIAppendix A\fR'' .bp .(x .sp 2 .in 0 .bi Appendixes .sp .b "Appendix A" .)x .nr * 1 .sh 1 "Capabilities from termcap" 1 .sh 2 Disclaimer .pp The description of terminals is a difficult business, and we only attempt to summarize the capabilities here: for a full description see .b termcap (5). .sh 2 Overview .pp Capabilities from .b termcap are of three kinds: string valued options, numeric valued options, and boolean options. The string valued options are the most complicated, since they may include padding information, which we describe now. .pp Intelligent terminals often require padding on intelligent operations at high (and sometimes even low) speed. This is specified by a number before the string in the capability, and has meaning for the capabilities which have a .b P at the front of their comment. This normally is a number of milliseconds to pad the operation. In the current system which has no true programmable delays, we do this by sending a sequence of pad characters (normally nulls, but can be changed (specified by .i PC )). In some cases, the pad is better computed as some number of milliseconds times the number of affected lines (to the bottom of the screen usually, except when terminals have insert modes which will shift several lines.) This is specified as, i e.g. , .b 12* . before the capability, to say 12 milliseconds per affected whatever (currently always line). Capabilities where this makes sense say .b P* . .sp .sh 2 "Variables Set By setterm()" .TS H c s s s l l l l. variables set by \fIsetterm()\fR Type Name Pad Description _ .TH char * AL P* Add new blank Line bool AM Automatic Margins char * BC Back Cursor movement bool BS BackSpace works char * BT P Back Tab bool CA Cursor Addressable char * CD P* Clear to end of Display char * CE P Clear to End of line char * CL P* CLear screen char * CM P Cursor Motion char * DC P* Delete Character char * DL P* Delete Line sequence char * DM Delete Mode (enter) char * DO DOwn line sequence char * ED End Delete mode bool EO can Erase Overstrikes with \' \' char * EI End Insert mode char * HO HOme cursor bool HZ HaZeltine ~ braindamage char * IC P Insert Character bool IN Insert-Null blessing char * IM enter Insert Mode (IC usually set, too) char * IP P* Pad after char Inserted using IM+IE char * LL quick to Last Line, column 0 char * MA ctrl character MAp for cmd mode bool MI can Move in Insert mode bool NC No Cr: \er sends \er\en then eats \en char * ND Non-Destructive space bool OS OverStrike works char PC Pad Character char * SE Standout End (may leave space) char * SF P Scroll Forwards char * SO Stand Out begin (may leave space) char * SR P Scroll in Reverse char * TA P TAb (not ^I or with padding) char * TE Terminal address enable Ending sequence char * TI Terminal address enable Initialization char * UC Underline a single Character char * UE Underline Ending sequence bool UL UnderLining works even though !OS char * UP UPline char * US Underline Starting sequence char * VB Visible Bell char * VE Visual End sequence char * VS Visual Start sequence bool XN a Newline gets eaten after wrap .TE Names starting with .bi X are reserved for severely nauseous glitches .pp For purposes of .Fn standout , if .Fn SG is not 0, .Fn SO is set to .Fn NULL , and if .Fn UG is not .Fn 0 , .Fn US is set to .Fn NULL . If, after this, .Fn SO is .Fn NULL , and .Fn US is not, .Fn SO is set to be .Fn US , and .Fn SE is set to be .Fn UE . .sh 2 "Variables Set By gettmode()" .TS H c s s l l l. variables set by \fIgettmode()\fR type name description _ .TH bool NONL Term can't hack linefeeds doing a CR bool GT Gtty indicates Tabs bool UPPERCASE Terminal generates only uppercase letters .TE oes diverting into a diversion whose number is ndoc/ps1/18.curses/appen.B 444 3 12 7056 3653364352 10263 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)appen.B 6.1 (Berkeley) 4/23/86 .\" .ie t .oh '\*(Ln Appendix B''PS1:18-%' .eh 'PS1:18-%''\*(Ln Appendix B' .el .he ''\fIAppendix B\fR'' .bp .(x .ti 0 .b "Appendix B" .)x .nr $1 0 .sh 1 "The WINDOW structure" .pp The WINDOW structure is defined as follows: .(l I .so win_st.gr .)l .pp .Vn \*_cury \\* .(f \** All variables not normally accessed directly by the user are named with an initial .Bq \*_ to avoid conflicts with the user's variables. .)f and .Vn \*_curx are the current \*y for the window. New characters added to the screen are added at this point. .Vn \*_maxy and .Vn \*_maxx are the maximum values allowed for .Vn \*_cury\*,\*_curx ). ( .Vn \*_begy and .Vn \*_begx are the starting \*y on the terminal for the window, .i i.e. , the window's home. .Vn \*_cury , .Vn \*_curx , .Vn \*_maxy , and .Vn \*_maxx are measured relative to .Vn \*_begy\*,\*_begx ), ( not the terminal's home. .pp .Vn \*_clear tells if a clear-screen sequence is to be generated on the next .Fn refresh call. This is only meaningful for screens. The initial clear-screen for the first .Fn refresh call is generated by initially setting clear to be TRUE for .Vn curscr , which always generates a clear-screen if set, irrelevant of the dimensions of the window involved. .Vn \*_leave is TRUE if the current \*y and the cursor are to be left after the last character changed on the terminal, or not moved if there is no change. .Vn \*_scroll is TRUE if scrolling is allowed. .pp .Vn \*_y is a pointer to an array of lines which describe the terminal. Thus: .(l \*_y[i] .)l .lp is a pointer to the .Vn i th line, and .(l \*_y[i][j] .)l .lp is the .Vn j th character on the .Vn i th line. .Vn \*_flags can have one or more values or'd into it. .pp For windows that are not subwindows, .Vn \*_orig is NULL . For subwindows, it points to the main window to which the window is subsidiary. .Vn \*_nextp is a pointer in a circularly linked list of all the windows which are subwindows of the same main window, plus the main window itself. .pp .Vn \*_firstch and .Vn \*_lastch are .Fn malloc ed arrays which contain the index of the first and last changed characters on the line. .Vn \*_ch\*_off is the x offset for the window in the .Vn \*_firstch and .Vn \*_lastch arrays for this window. For main windows, this is always 0; for subwindows it is the difference between the starting point of the main window and that of the subindow, so that change markers can be set relative to the main window. This makes these markers global in scope. .pp All subwindows share the appropriate portions of .Vn _y , .Vn _firstch , .Vn _lastch , and .Vn _insdel with their main window. .pp .b \*_ENDLINE says that the end of the line for this window is also the end of a screen. .b \*_FULLWIN says that this window is a screen. .b \*_SCROLLWIN indicates that the last character of this screen is at the lower right-hand corner of the terminal; .i i.e. , if a character was put there, the terminal would scroll. .b \*_FULLLINE says that the width of a line is the same as the width of the terminal. If .b \*_FLUSH is set, it says that .Fn fflush "" "" stdout should be called at the end of each .Fn refresh .b \*_STANDOUT says that all characters added to the screen are in standout mode. .b \*_INSDEL is reserved for future use, and is set by .Fn idlok . .Vn \*_firstch is set to .b \*_NOCHANGE for lines on which there has been no change since the last .Fn refresh . ns .UL d . Thus we might define a macro called .UL compare which compares two strings and returns ``yes'' or ``no'' if they are the same or different. .P1 define(compare, `ifelse($1, $2, yes, no)') .P2 Note the quotes, which prevent too-early evaluation of .UL ifelse . .PP If the fourth argument is missing, it is treated as empty. .PP .UL ifelse can actually have any number of arguments, and thus provides a limited form of multi-way decision capability. In the idoc/ps1/18.curses/appen.C 444 3 12 4651 3653364352 10262 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)appen.C 6.1 (Berkeley) 4/23/86 .\" .ie t .oh '\*(Ln Appendix C''PS1:18-%' .eh 'PS1:18-%''\*(Ln Appendix C' .el .he ''\fIAppendix C\fR'' .bp .(x .ti 0 .b "Appendix C" .)x .sh 1 "Examples" 1 .pp Here we present a few examples of how to use the package. They attempt to be representative, though not comprehensive. .sh 1 "Screen Updating" .pp The following examples are intended to demonstrate the basic structure of a program using the screen updating sections of the package. Several of the programs require calculational sections which are irrelevant of to the example, and are therefore usually not included. It is hoped that the data structure definitions give enough of an idea to allow understanding of what the relevant portions do. The rest is left as an exercise to the reader, and will not be on the final. .sh 2 "Twinkle" .pp This is a moderately simple program which prints pretty patterns on the screen that might even hold your interest for 30 seconds or more. It switches between patterns of asterisks, putting them on one by one in random order, and then taking them off in the same fashion. It is more efficient to write this using only the motion optimization, as is demonstrated below. .(l I .so twinkle1.gr .)l .sh 2 "Life" .pp This program fragment models the famous computer pattern game of life (Scientific American, May, 1974). The calculational routines create a linked list of structures defining where each piece is. Nothing here claims to be optimal, merely demonstrative. This code, however, is a very good place to use the screen updating routines, as it allows them to worry about what the last position looked like, so you don't have to. It also demonstrates some of the input routines. .(l I .so life.gr .)l .sh 1 "Motion optimization" .pp The following example shows how motion optimization is written on its own. Programs which flit from one place to another without regard for what is already there usually do not need the overhead of both space and time associated with screen updating. They should instead use motion optimization. .sh 2 "Twinkle" .pp The .b twinkle program is a good candidate for simple motion optimization. Here is how it could be written (only the routines that have been changed are shown): .(l .so twinkle2.gr .)l ain windows, this is always 0; for subwindows it is the difference between the startingdoc/ps1/18.curses/doc.I 444 3 12 13563 3653364353 7755 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)doc.I 6.1 (Berkeley) 4/23/86 .\" .Ds .Fd addch ch \*m char ch; .Fd waddch win\*,ch WINDOW *win; char ch; .De Add the character .Vn ch on the window at the current \*y. If the character is a newline (\'\en\') the line will be cleared to the end, and the current \*y will be changed to the beginning off the next line if newline mapping is on, or to the next line at the same x co-ordinate if it is off. A return (\'\er\') will move to the beginning of the line on the window. Tabs (\'\et\') will be expanded into spaces in the normal tabstop positions of every eight characters. \*(Es .Ds .Fd addstr str \*m char *str; .Fd waddstr win\*,str WINDOW *win; char *str; .De Add the string pointed to by .Vn str on the window at the current \*y. \*(Es In this case, it will put on as much as it can. .Ds .Fd box win\*,vert\*,hor WINDOW *win; char vert\*,hor; .De .Pp Draws a box around the window using .Vn vert as the character for drawing the vertical sides, and .Vn hor for drawing the horizontal lines. If scrolling is not allowed, and the window encompasses the lower right-hand corner of the terminal, the corners are left blank to avoid a scroll. .Ds .Fd clear "" \*m .Fd wclear win WINDOW *win; .De Resets the entire window to blanks. If .Vn win is a screen, this sets the clear flag, which will cause a clear-screen sequence to be sent on the next .Fn refresh call. This also moves the current \*y to (0\*,0). .Ds .Fd clearok scr\*,boolf \*m WINDOW *scr; bool boolf; .De Sets the clear flag for the screen .Vn scr . If .Vn boolf is TRUE, this will force a clear-screen to be printed on the next .Fn refresh , or stop it from doing so if .Vn boolf is FALSE. This only works on screens, and, unlike .Fn clear , does not alter the contents of the screen. If .Vn scr is .Vn curscr , the next .Fn refresh call will cause a clear-screen, even if the window passed to .Fn refresh is not a screen. .Ds .Fd clrtobot "" \*m .Fd wclrtobot win WINDOW *win; .De Wipes the window clear from the current \*y to the bottom. This does not force a clear-screen sequence on the next refresh under any circumstances. \*(Nm .Ds .Fd clrtoeol "" \*m .Fd wclrtoeol win WINDOW *win; .De Wipes the window clear from the current \*y to the end of the line. \*(Nm .Ds .Fd delch .Fd wdelch win WINDOW *win; .De Delete the character at the current \*y. Each character after it on the line shifts to the left, and the last character becomes blank. .Ds .Fd deleteln .Fd wdeleteln win WINDOW *win; .De Delete the current line. Every line below the current one will move up, and the bottom line will become blank. The current \*y will remain unchanged. .Ds .Fd erase "" \*m .Fd werase win WINDOW *win; .De Erases the window to blanks without setting the clear flag. This is analagous to .Fn clear , except that it never causes a clear-screen sequence to be generated on a .Fn refresh . \*(Nm .Ds .Fd flushok win\*,boolf \*m WINDOW *win; bool boolf; .De Normally, .Fn refresh .Fn fflush 's .Vn stdout when it is finished. .Fn flushok allows you to control this. if .Vn boolf is TRUE (\c .i i.e. , non-zero) it will do the .Fn fflush ; if it is FALSE. it will not. .Ds .Fd idlok win\*,boolf WINDOW *win; bool boolf; .De Reserved for future use. This will eventually signal to .Fn refresh that it is all right to use the insert and delete line sequences when updating the window. .Ds .Fd insch c char c; .Fd winsch win\*,c WINDOW *win; char c; .De Insert .Vn c at the current \*y Each character after it shifts to the right, and the last character disappears. \*(Es .Ds .Fd insertln .Fd winsertln win WINDOW *win; .De Insert a line above the current one. Every line below the current line will be shifted down, and the bottom line will disappear. The current line will become blank, and the current \*y will remain unchanged. .Ds .Fd move y\*,x \*m int y\*,x; .Fd wmove win\*,y\*,x WINDOW *win; int y\*,x; .De Change the current \*y of the window to .Vn y\*,x ). ( \*(Es .Ds .Fd overlay win1\*,win2 WINDOW *win1\*,*win2; .De Overlay .Vn win1 on .Vn win2 . The contents of .Vn win1 , insofar as they fit, are placed on .Vn win2 at their starting \*y. This is done non-destructively, i.e., blanks on .Vn win1 leave the contents of the space on .Vn win2 untouched. .Ds .Fd overwrite win1\*,win2 WINDOW *win1\*,*win2; .De Overwrite .Vn win1 on .Vn win2 . The contents of .Vn win1 , insofar as they fit, are placed on .Vn win2 at their starting \*y. This is done destructively, .i i.e. , blanks on .Vn win1 become blank on .Vn win2 . .Ds .Fd printw fmt\*,arg1\*,arg2\*,... char *fmt; .Fd wprintw win\*,fmt\*,arg1\*,arg2\*,... WINDOW *win; char *fmt; .De Performs a .Fn printf on the window starting at the current \*y. It uses .Fn addstr to add the string on the window. It is often advisable to use the field width options of .Fn printf to avoid leaving things on the window from earlier calls. \*(Es .Ds .Fd refresh "" \*m .Fd wrefresh win WINDOW *win; .De Synchronize the terminal screen with the desired window. If the window is not a screen, only that part covered by it is updated. \*(Es In this case, it will update whatever it can without causing the scroll. .sp As a special case, if .Fn wrefresh is called with the window .Vn curscr the screen is cleared and repainted as it is currently. This is very useful for allowing the redrawing of the screen when the user has garbage dumped on his terminal. .Ds .Fd standout "" \*m .Fd wstandout win WINDOW *win; .Fd standend "" \*m .Fd wstandend win WINDOW *win; .De Start and stop putting characters onto .i win in standout mode. .Fn standout causes any characters added to the window to be put in standout mode on the terminal (if it has that capability). .Fn standend stops this. The sequences .Vn SO and .Vn SE (or .Vn US and .Vn UE if they are not defined) are used (see Appendix A). 300) .P2 the newline at the end of each line is not part of the definition, so it is copied into the output, where it may not be wanted. If doc/ps1/18.curses/doc.II 444 3 12 4431 3653364354 10041 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)doc.II 6.1 (Berkeley) 4/23/86 .\" .Ds .Fd cbreak "" \*m .Fd nocbreak "" \*m .Fd crmode "" \*m .Fd nocrmode "" \*m .De Set or unset the terminal to/from cbreak mode. The misnamed macros .Fn crmode and .Fn nocrmode are retained for backwards compatibility with ealier versions of the library. .Ds .Fd echo "" \*m .Fd noecho "" \*m .De Sets the terminal to echo or not echo characters. .Ds .Fd getch "" \*m .Fd wgetch win WINDOW *win; .De Gets a character from the terminal and (if necessary) echos it on the window. \*(Es Otherwise, the character gotten is returned. If .i noecho has been set, then the window is left unaltered. In order to retain control of the terminal, it is necessary to have one of .i noecho , .i cbreak , or .i rawmode set. If you do not set one, whatever routine you call to read characters will set .i cbreak for you, and then reset to the original mode when finished. .Ds .Fd getstr str \*m char *str; .Fd wgetstr win\*,str WINDOW *win; char *str; .De Get a string through the window and put it in the location pointed to by .Vn str , which is assumed to be large enough to handle it. It sets tty modes if necessary, and then calls .Fn getch (or .Fn wgetch ) "" win to get the characters needed to fill in the string until a newline or EOF is encountered. The newline stripped off the string. \*(Es .Ds .Fd \*_putchar c char c; .De Put out a character using the .Fn putchar macro. This function is used to output every character that .b curses generates. Thus, it can be redefined by the user who wants to do non-standard things with the output. It is named with an initial \*(lq\*_\*(rq because it usually should be invisible to the programmer. .Ds .Fd raw "" \*m .Fd noraw "" \*m .De Set or unset the terminal to/from raw mode. On version 7 .Un \** .(f \** .Un is a trademark of Bell Laboratories. .)f this also turns of newline mapping (see .Fn nl ). .Ds .Fd scanw fmt\*,arg1\*,arg2\*,... char *fmt; .Fd wscanw win\*,fmt\*,arg1\*,arg2\*,... WINDOW *win; char *fmt; .De Perform a .Fn scanf through the window using .Vn fmt . It does this using consecutive .Fn getch 's (or .Fn wgetch 's). "" win \*(Es .Fd wclrtoeol win WINDOW *win; .De Wipes the window clear from the current \*y to the end of the line. \*(Nm .Ds .Fd delch .Fd wdelch win WINDOW *win; .De Delete the character at the current \*y. Each character after it on the lindoc/ps1/18.curses/doc.III 444 3 12 14763 3653364355 10204 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)doc.III 6.1 (Berkeley) 4/23/86 .\" .Ds .Fd baudrate "" \*m .De Returns the output baud rate of the terminal. This is a system dependent constant (defined in .b on BSD systems, which is included by .b ). .Ds .Fd delwin win WINDOW *win; .De Deletes the window from existence. All resources are freed for future use by .b calloc (3). If a window has a .Fn subwin allocated window inside of it, deleting the outer window the subwindow is not affected, even though this does invalidate it. Therefore, subwindows should be deleted before their outer windows are. .Ds .Fd endwin .De Finish up window routines before exit. This restores the terminal to the state it was before .Fn initscr (or .Fn gettmode and .Fn setterm ) was called. It should always be called before exiting. It does not exit. This is especially useful for resetting tty stats when trapping rubouts via .b signal (2). .Ds .Fd erasechar "" \*m .De Returns the erase character for the terminal, .i i.e. , the character used by the user to erase a single character from the input. .Ds .Fd getcap str "" "char *" char *str; .De Return a pointer to the .b termcap capability described by .Vn str (see .b termcap (5) for details). .Ds .Fd getyx win\*,y\*,x \*m WINDOW *win; int y\*,x; .De Puts the current \*y of .Vn win in the variables .Vn y and .Vn x . Since it is a macro, not a function, you do not pass the address of .Vn y and .Vn x . .Ds .Fd inch "" \*m .Fd winch win \*m WINDOW *win; .De Returns the character at the current \*(y on the given window. This does not make any changes to the window. .Ds .Fd initscr .De Initialize the screen routines. This must be called before any of the screen routines are used. It initializes the terminal-type data and such, and without it none of the routines can operate. If standard input is not a tty, it sets the specifications to the terminal whose name is pointed to by .Vn Def\*_term (initialy "dumb"). If the boolean .Vn My\*_term is true, .Vn Def\*_term is always used. If the system supports the .b TIOCGWINSZ .Fn ioctl "" "" 2 call, it is used to get the number of lines and columns for the terminal, otherwise it is taken from the .b termcap description. .Ds .Fd killchar "" \*m .De Returns the line kill character for the terminal, .i i.e. , the character used by the user to erase an entire line from the input. .Ds .Fd leaveok win\*,boolf \*m WINDOW *win; bool boolf; .De Sets the boolean flag for leaving the cursor after the last change. If .Vn boolf is TRUE, the cursor will be left after the last update on the terminal, and the current \*y for .Vn win will be changed accordingly. If it is FALSE, it will be moved to the current \*y. This flag (initialy FALSE) retains its value until changed by the user. .Ds .Fd longname termbuf\*,name char *termbuf\*,*name; .Fd fullname termbuf\*,name char *termbuf\*,*name; .De .Fn longname fills in .Vn name with the long name of the terminal described by the .b termcap entry in .Vn termbuf . It is generally of little use, but is nice for telling the user in a readable format what terminal we think he has. This is available in the global variable .Vn ttytype . .Vn termbuf is usually set via the termlib routine .Fn tgetent . .Fn fullname is the same as .Fn longname , except that it gives the fullest name given in the entry, which can be quite verbose. .Ds .Fd mvwin win\*,y\*,x WINDOW *win; int y, x; .De Move the home position of the window .Vn win from its current starting coordinates to .Vn y\*,x ). ( If that would put part or all of the window off the edge of the terminal screen, .Fn mvwin returns ERR and does not change anything. For subwindows, .Fn mvwin also returns ERR if you attempt to move it off its main window. If you move a main window, all subwindows are moved along with it. .Ds .Fd newwin lines\*,cols\*,begin\*_y\*,begin\*_x "" "WINDOW *" int lines\*,cols\*,begin\*_y\*,begin\*_x; .De Create a new window with .Vn lines lines and .Vn cols columns starting at position .Vn begin\*_y\*,begin\*_x ). ( If either .Vn lines or .Vn cols is 0 (zero), that dimension will be set to .Vn "LINES \- begin\*_y" ) ( or .Vn "COLS \- begin\*_x" ) ( respectively. Thus, to get a new window of dimensions .Vn LINES \(mu .Vn COLS , use .Fn newwin . "" 0\*,0\*,0\*,0 .Ds .Fd nl "" \*m .Fd nonl "" \*m .De Set or unset the terminal to/from nl mode, .i i.e. , start/stop the system from mapping .b to .b . If the mapping is not done, .Fn refresh can do more optimization, so it is recommended, but not required, to turn it off. .Ds .Fd scrollok win\*,boolf \*m WINDOW *win; bool boolf; .De Set the scroll flag for the given window. If .Vn boolf is FALSE, scrolling is not allowed. This is its default setting. .Ds .Fd touchline win\*,y\*,startx\*,endx WINDOW *win; int y\*,startx\*,endx; .De This function performs a function similar to .Fn touchwin on a single line. It marks the first change for the given line to be .Vn startx , if it is before the current first change mark, and the last change mark is set to be .Vn endx if it is currently less than .Vn endx . .Ds .Fd touchoverlap win1\*,win2 WINDOW *win1, *win2; .De Touch the window .Vn win2 in the area which overlaps with .Vn win1 . If they do not overlap, no changes are made. .Ds .Fd touchwin win WINDOW *win; .De Make it appear that the every location on the window has been changed. This is usually only needed for refreshes with overlapping windows. .Ds .Fd subwin win\*,lines\*,cols\*,begin\*_y\*,begin\*_x "" "WINDOW *" WINDOW *win; int lines\*,cols\*,begin\*_y\*,begin\*_x; .De Create a new window with .Vn lines lines and .Vn cols columns starting at position .Vn begin\*_y\*,begin\*_x ) ( inside the window .i win . This means that any change made to either window in the area covered by the subwindow will be made on both windows. .Vn begin\*_y\*,begin\*_x are specified relative to the overall screen, not the relative (0\*,0) of .Vn win . If either .Vn lines or .Vn cols is 0 (zero), that dimension will be set to .Vn "LINES \- begin\*_y" ) ( or .Vn "COLS \- begin\*_x" ) ( respectively. .Ds .Fd unctrl ch \*m char ch; .De This is actually a debug function for the library, but it is of general usefulness. It returns a string which is a representation of .Vn ch . Control characters become their upper-case equivalents preceded by a "^". Other letters stay just as they are. To use .Fn unctrl , you may have to have .b #include\ in your file. ts. Don't fordoc/ps1/18.curses/doc.IV 444 3 12 3353 3653364356 10062 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)doc.IV 6.1 (Berkeley) 4/23/86 .\" .Ds .Fd gettmode .De Get the tty stats. This is normally called by .Fn initscr . .Ds .Fd mvcur lasty\*,lastx\*,newy\*,newx int lasty\*,lastx\*,newy\*,newx; .De Moves the terminal's cursor from .Vn lasty\*,lastx ) ( to .Vn newy\*,newx ) ( in an approximation of optimal fashion. This routine uses the functions borrowed from .i ex version 2.6. It is possible to use this optimization without the benefit of the screen routines. With the screen routines, this should not be called by the user. .Fn move and .Fn refresh should be used to move the cursor position, so that the routines know what's going on. .Ds .Fd scroll win WINDOW *win; .De Scroll the window upward one line. This is normally not used by the user. .Ds .Fd savetty "" \*m .Fd resetty "" \*m .De .Fn savetty saves the current tty characteristic flags. .Fn resetty restores them to what .Fn savetty stored. These functions are performed automatically by .Fn initscr and .Fn endwin . .Ds .Fd setterm name char *name; .De Set the terminal characteristics to be those of the terminal named .Vn name , getting the terminal size from the .b TIOCGWINSZ .Fn ioctl "" "" 2 if it exists, otherwise from the environment. This is normally called by .Fn initscr . .Ds .Fd tstp .De If the new .b tty (4) driver is in use, this function will save the current tty state and then put the process to sleep. When the process gets restarted, it restores the tty state and then calls .Fn wrefresh "" "" curscr to redraw the screen. .Fn initscr sets the signal SIGTSTP to trap to this routine. to the window. .Ds .Fd initscr .De Initialize the screen routines. This must be called before any of the screen routines are used. It initializes the terminal-type data and such, and without it none of the routines can operate. If standard input is not a tty, it sets the specidoc/ps1/18.curses/intro.0 444 3 12 3126 3653364356 10267 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)intro.0 6.1 (Berkeley) 4/23/86 .\" .tp .(l C .ps 12 .ft B Screen Updating and Cursor Movement Optimization: .fl A Library Package .ft .ps .sp .i "Kenneth C. R. C. Arnold" .sp Computer Science Division Department of Electrical Engineering and Computer Science University of California, Berkeley Berkeley, California 94720 .sp 3 .bi ABSTRACT .sp 2 .)l .(q .pp This document describes a package of C library functions which allow the user to: .ie t .ip \ \ \ \(bu .el .ip 1) update a screen with reasonable optimization, .ie t .ip \ \ \ \(bu .el .ip 2) get input from the terminal in a screen-oriented fashion, and .ie t .ip \ \ \ \(bu .el .ip 3) independent from the above, move the cursor optimally from one point to another. .pp These routines all use the \*(tc \*(db to describe the capabilities of the terminal. .)q .b Acknowledgements .pp This package would not exist without the work of Bill Joy, who, in writing his editor, created the capability to generally describe terminals, wrote the routines which read this \*(db, and, most importantly, those which implement optimal cursor movement, which routines I have simply lifted nearly intact. Doug Merritt and Kurt Shoens also were extremely important, as were both willing to waste time listening to me rant and rave. The help and/or support of Ken Abrams, Alan Char, Mark Horton, and Joe Kalash, was, and is, also greatly appreciated. .sp 2 Revised 16 April 1986 functions are performed automatically by .Fn initscr and .Fn endwin . .Ds .Fd setterm name char *name; .De Set the terminal characteristics to be those of the terminal named .Vn name , getting the terminal size from the .b TIOCGWINSZ .Fn ioctl "" "" 2 if it exists, otherwise from the environment. This is normally called by .Fn initscr . .Ds .Fd tstp .De If the new .b tty (4) driver is in use, this function will save the cdoc/ps1/18.curses/intro.1 444 3 12 14103 3653364357 10306 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)intro.1 6.1 (Berkeley) 4/23/86 .\" .bp .sh 1 Overview .pp In making available the generalized terminal descriptions in \*(tc, much information was made available to the programmer, but little work was taken out of one's hands. The purpose of this package is to allow the C programmer to do the most common type of terminal dependent functions, those of movement optimization and optimal screen updating, without doing any of the dirty work, and (hopefully) with nearly as much ease as is necessary to simply print or read things. .pp The package is split into three parts: (1) Screen updating; (2) Screen updating with user input; and (3) Cursor motion optimization. .pp It is possible to use the motion optimization without using either of the other two, and screen updating and input can be done without any programmer knowledge of the motion optimization, or indeed the \*(et \*(db itself. .sh 2 "Terminology (or, Words You Can Say to Sound Brilliant)" .pp In this document, the following terminology is kept to with reasonable consistency: .de Ip .sp .in 5n .ti 0n .bi "\\$1" : .. .Ip window An internal representation containing an image of what a section of the terminal screen may look like at some point in time. This subsection can either encompass the entire terminal screen, or any smaller portion down to a single character within that screen. .Ip "terminal" Sometimes called .bi terminal .bi screen . The package's idea of what the terminal's screen currently looks like, .i i.e. , what the user sees now. This is a special .i screen : .Ip screen This is a subset of windows which are as large as the terminal screen, .i i.e. , they start at the upper left hand corner and encompass the lower right hand corner. One of these, .Vn stdscr , is automatically provided for the programmer. .rm Ip .sh 2 "Compiling Things" .pp In order to use the library, it is necessary to have certain types and variables defined. Therefore, the programmer must have a line: .(l .b "#include " .)l at the top of the program source. The header file .b needs to include .b , so the one should not do so oneself\**. .(f \** The screen package also uses the Standard I/O library, so .b includes .b . It is redundant (but harmless) for the programmer to do it, too. .)f Also, compilations should have the following form: .(l .ie t \fBcc\fR [ \fIflags\fR ] file ... \fB\-lcurses \-ltermcap\fR .el \fIcc\fR [ flags ] file ... \fI\-lcurses \-ltermcap\fR .)l .sh 2 "Screen Updating" .pp In order to update the screen optimally, it is necessary for the routines to know what the screen currently looks like and what the programmer wants it to look like next. For this purpose, a data type (structure) named .Vn WINDOW is defined which describes a window image to the routines, including its starting position on the screen (the \*y of the upper left hand corner) and its size. One of these (called .Vn curscr for .i "current screen" ) is a screen image of what the terminal currently looks like. Another screen (called .Vn stdscr , for .i "standard screen" ) is provided by default to make changes on. .pp A window is a purely internal representation. It is used to build and store a potential image of a portion of the terminal. It doesn't bear any necessary relation to what is really on the terminal screen. It is more like an array of characters on which to make changes. .pp When one has a window which describes what some part the terminal should look like, the routine .Fn refresh (or .Fn wrefresh if the window is not .Vn stdscr ) is called. .Fn refresh makes the terminal, in the area covered by the window, look like that window. Note, therefore, that changing something on a window .i does .bi not .i "change the terminal" . Actual updates to the terminal screen are made only by calling .Fn refresh or .Fn wrefresh . This allows the programmer to maintain several different ideas of what a portion of the terminal screen should look like. Also, changes can be made to windows in any order, without regard to motion efficiency. Then, at will, the programmer can effectively say .q "make it look like this" , and let the package worry about the best way to do this. .sh 2 "Naming Conventions" .pp As hinted above, the routines can use several windows, but two are automatically given: .Vn curscr , which knows what the terminal looks like, and .Vn stdscr , which is what the programmer wants the terminal to look like next. The user should never really access .Vn curscr directly. Changes should be made to the appropriate screen, and then the routine .Fn refresh (or .Fn wrefresh ) should be called. .pp Many functions are set up to deal with .Vn stdscr as a default screen. For example, to add a character to .Vn stdscr , one calls .Fn addch with the desired character. If a different window is to be used, the routine .Fn waddch (for .b w indow-specific .Fn addch ) is provided\**. .(f \** Actually, .Fn addch is really a .q #define macro with arguments, as are most of the "functions" which deal with .Vn stdscr as a default. .)f This convention of prepending function names with a .Bq w when they are to be applied to specific windows is consistent. The only routines which do .i not do this are those to which a window must always be specified. .pp In order to move the current \*y from one point to another, the routines .Fn move and .Fn wmove are provided. However, it is often desirable to first move and then perform some I/O operation. In order to avoid clumsyness, most I/O routines can be preceded by the prefix .Bq mv and the desired \*y then can be added to the arguments to the function. For example, the calls .(l move(y\*,x); addch(ch); .)l can be replaced by .(l mvaddch(y\*,x\*,ch); .)l and .(l wmove(win\*,y\*,x); waddch(win\*,ch); .)l can be replaced by .(l mvwaddch(win\*,y\*,x\*,ch); .)l Note that the window description pointer .Vn win ) ( comes before the added \*y. If such pointers are need, they are always the first parameters passed. S \- begin\*_y" ) ( or .Vn "COLS \- begin\*_x" ) ( respectively. .Ds .Fd unctrl ch \*m char ch; .De This is actually a debug function for the library, but it is of general usefulness. It returns a string which is a representation of .Vn ch . Control characters become their upper-case equivalents preceded by a "^". Other letters stay just as they are. To use .Fn unctrl , you may have to have .b #include\ in your file. ts. Don't fordoc/ps1/18.curses/intro.2 444 3 12 2555 3653364360 10271 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)intro.2 6.1 (Berkeley) 4/23/86 .\" .sh 1 Variables .pp Many variables which are used to describe the terminal environment are available to the programmer. They are: .TS expand; lw(6m) lw(8n) lw(50n). type name description _ WINDOW * curscr T{ .fi current version of the screen (terminal screen). T} WINDOW * stdscr T{ standard screen. Most updates are usually done here. T} char * Def\*_term T{ default terminal type if type cannot be determined T} bool My\*_term T{ use the terminal specification in \fIDef\*_term\fR as terminal, irrelevant of real terminal type T} char * ttytype T{ full name of the current terminal. T} int LINES T{ number of lines on the terminal T} int COLS T{ number of columns on the terminal T} int ERR T{ error flag returned by routines on a fail. T} int OK T{ error flag returned by routines when things go right. T} .TE .pp There are also several .q #define constants and types which are of general usefulness: .sp .ev 1 .ta 11n .(b L .nf reg storage class ``register'' (\fIe.g.\fP, \fIreg int i;\fR\|) bool boolean type, actually a ``char'' (\fIe.g.\fP, \fIbool doneit;\fR\|) TRUE boolean ``true'' flag (1). FALSE boolean ``false'' flag (0). .fi .ev .)b .lp .TS expand; lw(6m) lw(8n) lw(50n). type name description _ WINDOW * curscr T{ .fi current version of the screen (terminal screen). T} WINDOW * stddoc/ps1/18.curses/intro.3 444 3 12 11526 3653364361 10311 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)intro.3 6.1 (Berkeley) 4/23/86 .\" .sh 1 Usage .pp This is a description of how to actually use the screen package. In it, we assume all updating, reading, etc. is applied to .Vn stdscr . All instructions will work on any window, with changing the function name and parameters as mentioned above. .sh 2 "Starting up" .pp In order to use the screen package, the routines must know about terminal characteristics, and the space for .Vn curscr and .Vn stdscr must be allocated. These functions are performed by .Fn initscr . Since it must allocate space for the windows, it can overflow core when attempting to do so. On this rather rare occasion, .Fn initscr returns ERR. .Fn initscr must .bi always be called before any of the routines which affect windows are used. If it is not, the program will core dump as soon as either .Vn curscr or .Vn stdscr are referenced. However, it is usually best to wait to call it until after you are sure you will need it, like after checking for startup errors. Terminal status changing routines like .Fn nl and .Fn cbreak should be called after .Fn initscr . .pp Now that the screen windows have been allocated, you can set them up for the run. If you want to, say, allow the window to scroll, use .Fn scrollok . If you want the cursor to be left after the last change, use .Fn leaveok . If this isn't done, .Fn refresh will move the cursor to the window's current \*y after updating it. New windows of your own can be created, too, by using the functions .Fn newwin and .Fn subwin . .Fn delwin will allow you to get rid of old windows. If you wish to change the official size of the terminal by hand, just set the variables .Vn LINES and .Vn COLS to be what you want, and then call .Fn initscr . This is best done before, but can be done either before or after, the first call to .Fn initscr , as it will always delete any existing .Vn stdscr and/or .Vn curscr before creating new ones. .pp .sh 2 "The Nitty-Gritty" .sh 3 Output .pp Now that we have set things up, we will want to actually update the terminal. The basic functions used to change what will go on a window are .Fn addch and .Fn move . .Fn addch adds a character at the current \*y, returning ERR if it would cause the window to illegally scroll, .i i.e. , printing a character in the lower right-hand corner of a terminal which automatically scrolls if scrolling is not allowed. .Fn move changes the current \*y to whatever you want them to be. It returns ERR if you try to move off the window when scrolling is not allowed. As mentioned above, you can combine the two into .Fn mvaddch to do both things in one fell swoop. .pp The other output functions, such as .Fn addstr and .Fn printw , all call .Fn addch to add characters to the window. .pp After you have put on the window what you want there, when you want the portion of the terminal covered by the window to be made to look like it, you must call .Fn refresh . In order to optimize finding changes, .Fn refresh assumes that any part of the window not changed since the last .Fn refresh of that window has not been changed on the terminal, .i i.e. , that you have not refreshed a portion of the terminal with an overlapping window. If this is not the case, the routines .Fn touchwin , .Fn touchline , and .Fn touchoverlap are provided to make it look like a desired part of window has been changed, thus forcing .Fn refresh check that whole subsection of the terminal for changes. .pp If you call .Fn wrefresh with .Vn curscr , it will make the screen look like .Vn curscr thinks it looks like. This is useful for implementing a command which would redraw the screen in case it get messed up. .sh 3 Input .pp Input is essentially a mirror image of output. The complementary function to .Fn addch is .Fn getch which, if echo is set, will call .Fn addch to echo the character. Since the screen package needs to know what is on the terminal at all times, if characters are to be echoed, the tty must be in raw or cbreak mode. If it is not, .Fn getch sets it to be cbreak, and then reads in the character. .sh 3 Miscellaneous .pp All sorts of fun functions exists for maintaining and changing information about the windows. For the most part, the descriptions in section 5.4. should suffice. .sh 2 "Finishing up" .pp In order to do certain optimizations, and, on some terminals, to work at all, some things must be done before the screen routines start up. These functions are performed in .Fn getttmode and .Fn setterm , which are called by .Fn initscr . In order to clean up after the routines, the routine .Fn endwin is provided. It restores tty modes to what they were when .Fn initscr was first called. Thus, anytime after the call to initscr, .Fn endwin should be called before exiting. ter to .Vn stdscr , one calls .Fn addch with the desired character. If a different window is to be used, the routine .Fn waddch (for .b w indow-specific .Fn addch ) is prdoc/ps1/18.curses/intro.4 444 3 12 12545 3653364362 10315 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)intro.4 6.1 (Berkeley) 4/23/86 .\" .sh 1 "Cursor Motion Optimization: Standing Alone" .pp It is possible to use the cursor optimization functions of this screen package without the overhead and additional size of the screen updating functions. The screen updating functions are designed for uses where parts of the screen are changed, but the overall image remains the same. This includes such programs as .b rogue and .b vi \**. .(f \** .b rogue actually uses these functions, .b vi does not. .)f Certain other programs will find it difficult to use these functions in this manner without considerable unnecessary program overhead. For such applications, such as some .q "\fIcrt hacks\fR\|" \** .(f \** Graphics programs designed to run on character-oriented terminals. I could name many, but they come and go, so the list would be quickly out of date. Recently, there have been programs such as .b rain , .b rocket , and .b gun . .)f and optimizing .b more (1)-type programs, all that is needed is the motion optimizations. This, therefore, is a description of what some of what goes on at the lower levels of this screen package. The descriptions assume a certain amount of familiarity with programming problems and some finer points of C. None of it is terribly difficult, but you should be forewarned. .sh 2 "Terminal Information" .pp In order to use a terminal's features to the best of a program's abilities, it must first know what they are\**. .(f \** If this comes as any surprise to you, there's this tower in Paris they're thinking of junking that I can let you have for a song. .)f The \*(tc \*(db describes these, but a certain amount of decoding is necessary, and there are, of course, both efficient and inefficient ways of reading them in. The algorithm that the uses is taken from .b vi and is hideously efficient. It reads them in a tight loop into a set of variables whose names are two uppercase letters with some mnemonic value. For example, .Vn HO is a string which moves the cursor to the "home" position\**. .(f \** These names are identical to those variables used in the .b termcap (5) \*(db to describe each capability. See Appendix A for a complete list of those read, and the .b termcap (5) manual page for a full description. .)f As there are two types of variables involving ttys, there are two routines. The first, .Fn gettmode , sets some variables based upon the tty modes accessed by .b gtty (2) and .b stty (2) . The second, .Fn setterm , a larger task by reading in the descriptions from the \*(tc \*(db. This is the way these routines are used by .Fn initscr : .(b .(l I \*fif\fP (isatty(0)) { gettmode(); \*fif\fP ((sp=getenv("TERM")) != NULL) setterm(sp); \*felse\fP setterm(Def\*_term); } \*felse\fP setterm(Def\*_term); \*_puts(TI); \*_puts(VS); .)l .)b .pp .Fn isatty checks to see if file descriptor 0 is a terminal\**. .(f \** .Fn isatty is defined in the default C library function routines. It does a .b gtty (2) on the descriptor and checks the return value. .)f If it is, .Fn gettmode sets the terminal description modes from a .b gtty (2) . .Fn getenv is then called to get the name of the terminal, and that value (if there is one) is passed to .Fn setterm , which reads in the variables from \*(tc associated with that terminal. .Fn getenv "" ( returns a pointer to a string containing the name of the terminal, which we save in the character pointer .Vn sp .) If .Fn isatty returns false, the default terminal .Vn Def\*_term is used. The .Vn TI and .Vn VS sequences initialize the terminal .Fn \*_puts "" ( is a macro which uses .Fn tputs (see .b termcap (3)) and .Fn \*_putchar "" to put out a string). .Fn endwin undoes these things. .sh 2 "Movement Optimizations, or, Getting Over Yonder" .pp Now that we have all this useful information, it would be nice to do something with it\**. .(f \** Actually, it .i can be emotionally fulfilling just to get the information. This is usually only true, however, if you have the social life of a kumquat. .)f The most difficult thing to do properly is motion optimization. When you consider how many different features various terminals have (tabs, backtabs, non-destructive space, home sequences, absolute tabs, .....) you can see that deciding how to get from here to there can be a decidedly non-trivial task. The editor .b vi uses many of these features, and the routines it uses to do this take up many pages of code. Fortunately, I was able to liberate them with the author's permission, and use them here. .pp After using .Fn gettmode and .Fn setterm to get the terminal descriptions, the function .Fn mvcur deals with this task. It usage is simple: you simply tell it where you are now and where you want to go. For example .(l mvcur(0\*,0\*,LINES/2\*,COLS/2) .)l .lp would move the cursor from the home position (0\*,0) to the middle of the screen. If you wish to force absolute addressing, you can use the function .Fn tgoto from the .b termlib (7) routines, or you can tell .Fn mvcur that you are impossibly far away, like Cleveland. For example, to absolutely address the lower left hand corner of the screen from anywhere just claim that you are in the upper right hand corner: .(l mvcur(0\*,COLS\-1\*,LINES\-1\*,0) .)l course, both efficient and inefficient ways of reading them in. The algorithm that the uses is taken from .b vi and is hideously efficient. It reads them doc/ps1/18.curses/intro.5 444 3 12 1463 3653364362 10273 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)intro.5 6.1 (Berkeley) 4/23/86 .\" .sh 1 "The Functions" .pp In the following definitions, .q \*m means that the .q function is really a .q #define macro with arguments. This means that it will not show up in stack traces in the debugger, or, in the case of such functions as .Fn addch , it will show up as it's .Bq w counterpart. The arguments are given to show the order and type of each. Their names are not mandatory, just suggestive. .ta 11m,17m,25m,33m,41m,49m,57m,65m,73m .sh 2 "Output Functions" .so doc.I .sh 2 "Input Functions" .so doc.II .sh 2 "Miscellaneous Functions" .so doc.III .sh 2 Details .so doc.IV non-destructive space, home sequences, absolute tabs, .....) you can see that deciding how to get from here to there can be a decidedly non-trivial task. The editor .b vi uses many of these features, and tdoc/ps1/18.curses/macros 444 3 12 2164 3653364363 10261 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)macros 6.1 (Berkeley) 4/23/86 .\" .\" this is the uncommented version. The commented one is in "macros.coms" .ie t .ds _ \d\(mi\u .el .ds _ _ .ds , ,\ .ds y (y\*,x) co-ordinates .ds db database .ie n .ds f \fI .el .ds f \fB .ds tc \*ftermcap\fP(5) .ds Es This returns ERR if it would cause the screen to scroll illegally. .ds Nm This has no associated \*(lq\fBmv\fP\*(rq command. .ie t .ds m \fB\s-2\(dg\s+2\fP .el .ds m [*] .hy WINDOW .\".he ''\*(Ln'' .\".fo ''\- % \-'' .oh '\*(Ln''PS1:18-%' .eh 'PS1:18-%''\*(Ln' .de Un .b \s-2\\$2UNIX\\$1\s+2 .ft .. .de Ds .sp .lp .ev 1 .nf .ft I .in 0 .di Df .. .de De .di .ne \n(dn+2 .Df .ev .ip .. .de Fd .br \&\\$4 .fi .b \&\\$1(\\$2) .ft \&\\$3 .br .nf .. .de Vn \&\\$3\c .i "\\$1" \\$2 .. .de Fn \&\\$3\c .i "\\$1(\\$4)" \\$2 .. .de Bq .ie t \&\*(lq\fB\\$1\fP\*(rq .el \&\*(lq\fI\\$1\fP\*(rq .. .de $0 .(x .in \\n(Xs \\*($n \\$1 .)x .. .de $1 .nr Xs 0 .. .de $2 .nr Xs 3 .. .de $3 .nr Xs 6 .. s permission, and use them here. .pp After using .Fn gettmode and .Fn setterm to get the terminal descriptions, the function .Fn mvcur deals with this task. It usage is simple: you simply tell it where you are now and where you want to go. For example .(l mvcur(0\*,0\*,LINES/2\*,COLS/2) .)l .lp would move the cursor from the home position (0\*,0) to the middle of the screen. If you wish to fordoc/ps1/18.curses/c_macros 444 3 12 1037 3653364364 10562 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)c_macros 6.1 (Berkeley) 4/23/86 .\" 'ie t 'ds _ \d\(mi\u 'el 'ds _ _ 'tr *\(** 'ps 9p 'vs 10p 'ds - \(mi 'ds /* \\h'\\w' 'u-\\w'/'u'/* 'bd B 3 'bd S B 3 'nr cm 0 'nf 'de () 'pn 1 .. 'de +C 'nr cm 1 'ft 2 'ds +K 'ds -K .. 'de -C 'nr cm 0 'ft 1 .ie t 'ds +K \f3 .el 'ds +K \fI 'ds -K \fP .. '+C '-C 'am +C 'ne 3 .. 'de -F 'rm =f .. 'ft 1 'lg 0 associated \*(lq\fBmv\fP\*(rq command. .ie t .ds \fB\s-2\(dg\s+2\fP .el .ds m [*] .hy WINDOW .\".he ''\*(Ln'' .\".fo ''\- % \-'' .oh '\*(Ln''PS1:18-%' .eh 'PS1:18-%''\*(Ln' .de Un .b \s-2\\$2UNIX\\$1\s+2 .ft .. .de Ds .sp .lp .ev 1 .nf .ft I .in 0 .di Df .. .de De .di .ne \n(dn+2 .Df .ev .ip .. .de Fd .br \&\\$4 .fi .b \&\\$1(\\$2) .ft \&\\$3 .br .nf .. .de Vn \&\\$3\c .i "\\$1" \\$2 .. .de Fn \&\\$3\c .i "\\$1(\\$4)" \\$2 .. .de Bq .ie t \&\*(lq\fB\\$1\fP\*(rq .el \&\*(lq\doc/ps1/18.curses/Master 444 3 12 742 3655013264 10201 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)Master 6.2 (Berkeley) 4/28/86 .\" .ds Ln Screen Package .so macros .so intro.0 .pn 3 .bp .so intro.1 .so intro.2.tbl .so intro.3 .so intro.4 .so intro.5 .so appen.A.tbl .so c_macros .so appen.B .so appen.C .pn 2 .oh '\*(Ln''PS1:18-%' .eh 'PS1:18-%''\*(Ln' .bp .bi Contents .sp .xp doc/ps1/18.curses/Makefile 444 3 12 3410 3655013633 10476 # # Copyright (c) 1980 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.2 (Berkeley) 4/28/86 # # makefile for screen package documentation # NROFF= nroff TROFF= ditroff TBL= dtbl -Pdp VFONT= /usr/lib/vfontedpr NFLAGS= -Tcrt TFLAGS= -Pdp CFLAGS= -O -n -s BINDIR= /usr/doc/ps1/18.curses DOCS= doc.I doc.II doc.III doc.IV RAW= macros c_macros appen.B appen.A appen.C intro.0 intro.1 \ intro.2 intro.3 intro.4 intro.5 ${DOCS} curses.3x CRAW= win_st.c twinkle1.c twinkle2.c life.c CSOURCE=win_st.gr twinkle1.gr twinkle2.gr life.gr SOURCE= macros appen.A.tbl appen.B appen.C intro.0 intro.1 \ intro.2.tbl intro.3 intro.4 intro.5 .SUFFIXES: .SUFFIXES: .c .gr # # this section formats C input source into nice troffable (or nroffable) # versions. It uses the capabilites of "vgrind", which sets keywords in # bold font, and comments in italics. # # Don't re-run vgrind unless you want to patch the output files. .c.gr: ${VFONT} $*.c | grep -v "^'wh" > $*.gr troff: Master macros ${SOURCE} ${TROFF} -me ${TFLAGS} Master ; Curses.doc: ${VFONT} Master macros ${SOURCE} ${NROFF} -me ${NFLAGS} Master > Curses.doc ${CSOURCE}: ${VFONT} intro.5: ${DOCS} appen.B: win_st.gr appen.C: twinkle1.gr life.gr twinkle2.gr intro.2.tbl: intro.2 ${TBL} intro.2 > intro.2.tbl appen.A.tbl: appen.A ${TBL} appen.A > appen.A.tbl vfontedpr: vfontedpr.c ${CC} ${CFLAGS} -o vfontedpr vfontedpr.c spell: ${SOURCE} /bin/csh ./Spellit ${SOURCE} ${DOCS} install: cp Makefile ${RAW} ${BINDIR} ar: ar crv curdoc.ar Master ${RAW} ${CRAW} Makefile lpr: Curses -lpr Curses ; lpq -lpq clean: rm -f ${CSOURCE} appen.A.tbl intro.2.tbl curses.tar vfontedpr \ Curses.doc errs Errs tation # NROFF= nroff TROFF= ditroff TBL= dtbl -Pdp VFONT= /usr/lib/vfontedpr NFLAGS= -Tcrt TFLAGS= -Pdp CFLAGS= -O -n -s BINDIR= /usr/doc/ps1/18.curses DOCS= doc.I doc.II doc.III doc.IV RAW= macros c_macros appen.B appen.A appen.C intro.0 intro.1doc/ps1/18.curses/life.c 444 3 12 6004 3653364366 10135 /* * Copyright (c) 1980 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ #ifndef lint static char sccsid[] = "@(#)life.c 6.1 (Berkeley) 4/23/86"; #endif not lint # include # include /* * Run a life game. This is a demonstration program for * the Screen Updating section of the -lcurses cursor package. */ typedef struct lst_st { /* linked list element */ int y, x; /* (y, x) position of piece */ struct lst_st *next, *last; /* doubly linked */ } LIST; LIST *Head; /* head of linked list */ int die(); main(ac, av) int ac; char *av[]; { evalargs(ac, av); /* evaluate arguments */ initscr(); /* initialize screen package */ signal(SIGINT, die); /* set to restore tty stats */ cbreak(); /* set for char-by-char */ noecho(); /* input */ nonl(); /* for optimization */ getstart(); /* get starting position */ for (;;) { prboard(); /* print out current board */ update(); /* update board position */ } } /* * This is the routine which is called when rubout is hit. * It resets the tty stats to their original values. This * is the normal way of leaving the program. */ die() { signal(SIGINT, SIG_IGN); /* ignore rubouts */ mvcur(0, COLS - 1, LINES - 1, 0); /* go to bottom of screen */ endwin(); /* set terminal to good state */ exit(0); } /* * Get the starting position from the user. They keys u, i, o, j, l, * m, ,, and . are used for moving their relative directions from the * k key. Thus, u move diagonally up to the left, , moves directly down, * etc. x places a piece at the current position, " " takes it away. * The input can also be from a file. The list is built after the * board setup is ready. */ getstart() { reg char c; reg int x, y; auto char buf[100]; box(stdscr, '|', '_'); /* box in the screen */ move(1, 1); /* move to upper left corner */ for (;;) { refresh(); /* print current position */ if ((c = getch()) == 'q') break; switch (c) { case 'u': case 'i': case 'o': case 'j': case 'l': case 'm': case ',': case '.': adjustyx(c); break; case 'f': mvaddstr(0, 0, "File name: "); getstr(buf); readfile(buf); break; case 'x': addch('X'); break; case ' ': addch(' '); break; } } if (Head != NULL) /* start new list */ dellist(Head); Head = malloc(sizeof (LIST)); /* * loop through the screen looking for 'x's, and add a list * element for each one */ for (y = 1; y < LINES - 1; y++) for (x = 1; x < COLS - 1; x++) { move(y, x); if (inch() == 'x') addlist(y, x); } } /* * Print out the current board position from the linked list */ prboard() { reg LIST *hp; erase(); /* clear out last position */ box(stdscr, '|', '_'); /* box in the screen */ /* * go through the list adding each piece to the newly * blank board */ for (hp = Head; hp; hp = hp->next) mvaddch(hp->y, hp->x, 'X'); refresh(); } ile descriptor 0 is a terminal\**. .(f \** .Fn isatty is defined in the default C library function routines. It does a .b gtty (2) on the descriptor and checks the return value. .)f If it is, .Fn gettmode sets the terminal description modes from a .b gtty (2) . .Fn getenv is then called to get the name of the terminal, and that value (if there is one) is passed to .Fn setterm , which reads in the variables from \*(tc associated with that terminal. .Fn getenv "" ( returns a pointer to a string containingdoc/ps1/18.curses/twinkle1.c 444 3 12 4741 3653364366 10762 /* * Copyright (c) 1980 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ #ifndef lint static char sccsid[] = "@(#)twinkle1.c 6.1 (Berkeley) 4/24/86"; #endif not lint # include # include /* * the idea for this program was a product of the imagination of * Kurt Schoens. Not responsible for minds lost or stolen. */ # define NCOLS 80 # define NLINES 24 # define MAXPATTERNS 4 typedef struct { int y, x; } LOCS; LOCS Layout[NCOLS * NLINES]; /* current board layout */ int Pattern, /* current pattern number */ Numstars; /* number of stars in pattern */ char *getenv(); int die(); main() { srand(getpid()); /* initialize random sequence */ initscr(); signal(SIGINT, die); noecho(); nonl(); leaveok(stdscr, TRUE); scrollok(stdscr, FALSE); for (;;) { makeboard(); /* make the board setup */ puton('*'); /* put on '*'s */ puton(' '); /* cover up with ' 's */ } } /* * On program exit, move the cursor to the lower left corner by * direct addressing, since current location is not guaranteed. * We lie and say we used to be at the upper right corner to guarantee * absolute addressing. */ die() { signal(SIGINT, SIG_IGN); mvcur(0, COLS - 1, LINES - 1, 0); endwin(); exit(0); } /* * Make the current board setup. It picks a random pattern and * calls ison() to determine if the character is on that pattern * or not. */ makeboard() { reg int y, x; reg LOCS *lp; Pattern = rand() % MAXPATTERNS; lp = Layout; for (y = 0; y < NLINES; y++) for (x = 0; x < NCOLS; x++) if (ison(y, x)) { lp->y = y; lp->x = x; lp++; } Numstars = lp - Layout; } /* * Return TRUE if (y, x) is on the current pattern. */ ison(y, x) reg int y, x; { switch (Pattern) { case 0: /* alternating lines */ return !(y & 01); case 1: /* box */ if (x >= LINES && y >= NCOLS) return FALSE; if (y < 3 || y >= NLINES - 3) return TRUE; return (x < 3 || x >= NCOLS - 3); case 2: /* holy pattern! */ return ((x + y) & 01); case 3: /* bar across center */ return (y >= 9 && y <= 15); } /* NOTREACHED */ } puton(ch) reg char ch; { reg LOCS *lp; reg int r; reg LOCS *end; LOCS temp; end = &Layout[Numstars]; for (lp = Layout; lp < end; lp++) { r = rand() % Numstars; temp = *lp; *lp = Layout[r]; Layout[r] = temp; } for (lp = Layout; lp < end; lp++) { mvaddch(lp->y, lp->x, ch); refresh(); } } en looking for 'x's, and add a doc/ps1/18.curses/twinkle2.c 444 3 12 2524 3653364367 10761 /* * Copyright (c) 1980 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. */ #ifndef lint static char sccsid[] = "@(#)twinkle2.c 6.1 (Berkeley) 4/24/86"; #endif not lint extern int _putchar(); main() { reg char *sp; srand(getpid()); /* initialize random sequence */ if (isatty(0)) { gettmode(); if ((sp = getenv("TERM")) != NULL) setterm(sp); signal(SIGINT, die); } else { printf("Need a terminal on %d\n", _tty_ch); exit(1); } _puts(TI); _puts(VS); noecho(); nonl(); tputs(CL, NLINES, _putchar); for (;;) { makeboard(); /* make the board setup */ puton('*'); /* put on '*'s */ puton(' '); /* cover up with ' 's */ } } puton(ch) char ch; { reg LOCS *lp; reg int r; reg LOCS *end; LOCS temp; static int lasty, lastx; end = &Layout[Numstars]; for (lp = Layout; lp < end; lp++) { r = rand() % Numstars; temp = *lp; *lp = Layout[r]; Layout[r] = temp; } for (lp = Layout; lp < end; lp++) /* prevent scrolling */ if (!AM || (lp->y < NLINES - 1 || lp->x < NCOLS - 1)) { mvcur(lasty, lastx, lp->y, lp->x); putchar(ch); lasty = lp->y; if ((lastx = lp->x + 1) >= NCOLS) if (AM) { lastx = 0; lasty++; } else lastx = NCOLS - 1; } } * Make the current board setup. It picks a random pattern and * calls ison() to determine if the character is on that pattern * or not. */ makeboard() { reg int y, doc/ps1/18.curses/win_st.c 444 3 12 1273 3653364367 10525 /* * Copyright (c) 1980 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * * @(#)win_st.c 6.1 (Berkeley) 4/24/86"; */ # define WINDOW struct _win_st struct _win_st { short _cury, _curx; short _maxy, _maxx; short _begy, _begx; short _flags; short _ch_off; bool _clear; bool _leave; bool _scroll; char **_y; short *_firstch; short *_lastch; struct _win_st *_nextp, *_orig; }; # define _ENDLINE 001 # define _FULLWIN 002 # define _SCROLLWIN 004 # define _FLUSH 010 # define _FULLLINE 020 # define _IDLINE 040 # define _STANDOUT 0200 # define _NOCHANGE -1 he board setup */ puton('*'); /* put on '*'s */ puton(' '); /* cover up with ' 's */ } } puton(ch) char ch; { reg LOCS *lp; reg int r; reg LOCS *end; LOCS temp; static int lasty, lastx; end = &Layout[Numstars]; for (lp = Layout; lp < end; lp++) { r = rand() % Numstars; temp = *lp; *lp = Layout[r]; doc/ps1/03.f77io/ 755 3 12 0 3655011235 6372 doc/ps1/03.f77io/f77IO.ms 444 3 12 66506 3655011240 7702 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)f77IO.ms 5.4 (Berkeley) 4/28/86 .\" .EH 'PS1:3-%''Introduction to the f77 I/O Library' .OH 'Introduction to the f77 I/O Library''PS1:3-%' .de Fo Fortran\\$1 .. .de Sm \s-1\\$1\s0 .. .\" .\" Nh macro - same as NH but also saves heading for table of contents .\" Nh usage: Nh level string, e.g.: .Nh 2 "Calculator Sample" .de Nh .NH \\$1 \\$2 .XS .if '2'\\$1' .ti .25i .if '3'\\$1' .ti .5i \\*(SN \\$2 .XE .PP .. .ND "" .\" .nr ll 7.0i .\" .nr LL 7.0i .\" .po 0.0i .\" .rm PT .\" .rm BT .\".RP .TL Introduction to the f77 I/O Library .AU David L. Wasley .AU J. Berkman .AI University of California, Berkeley Berkeley, California 94720 .AB The f77 I/O library, libI77.a, includes routines to perform all of the standard types of .Fo input and output specified in the .Sm ANSI 1978 .Fo standard. The I/O Library was written originally by Peter J. Weinberger at Bell Labs. Where the original implementation was incomplete, it has been rewritten to more closely implement the standard. Where the standard is vague, we have tried to provide flexibility within the constraints of the .UX operating system. A number of logical extensions and enhancements have been provided such as the use of the C stdio library routines to provide efficient buffering for file I/O. .sp 2 .LP Revised September, 1985 .AE .LP .\" page 2 is allocated to the table of contents .pn 3 .bp .Nh 1 "Fortran I/O" The requirements of the .Sm ANSI standard impose significant overhead on programs that do large amounts of I/O. Formatted I/O can be very ``expensive'' while direct access binary I/O is usually very efficient. Because of the complexity of .Fo I/O, some general concepts deserve clarification. .Nh 2 "Types of I/O and logical records" There are four forms of I/O: .B formatted, .B unformatted, .B list\ directed, and .B namelist. The last two are related to formatted but do not obey all the rules for formatted I/O. There are two types of ``files'': .B external and .B internal and two modes of access to files: .B direct and .B sequential. The definition of a logical record depends upon the combination of I/O form, file type, and access mode specified by the .Fo I/O statement. .Nh 3 "Direct access external I/O" A logical record in a .B direct access .B external file is a string of bytes of a length specified when the file is opened. Read and write statements must not specify logical records longer than the original record size definition. Shorter logical records are allowed. .B Unformatted direct writes leave the unfilled part of the record undefined. .B Formatted direct writes cause the unfilled record to be padded with blanks. .Nh 3 "Sequential access external I/O" Logical records in .B sequentially accessed .B external files may be of arbitrary and variable length. Logical record length for .B unformatted sequential files is determined by the size of items in the iolist. The requirements of this form of I/O cause the external physical record size to be somewhat larger than the logical record size. For .B formatted write statements, logical record length is determined by the format statement interacting with the iolist at execution time. The ``newline'' character is the logical record delimiter. Formatted sequential access causes one or more logical records ending with ``newline'' characters to be read or written. .Nh 3 "List directed and namelist sequential external I/O" Logical record length for .B list\ directed and .B namelist I/O is relatively meaningless. On output, the record length is dependent on the magnitude of the data items. On input, the record length is determined by the data types and the file contents. By ANSI definition, a slash, ``/'', terminates execution of a list directed input operation. Namelist input is terminated by ``&end'' or ``$end'' (depending on whether the character before the namelist name was ``&'' or ``$''). .Nh 3 "Internal I/O" The logical record length for an .B internal read or write is the length of the character variable or array element. Thus a simple character variable is a single logical record. A character variable array is similar to a fixed length direct access file, and obeys the same rules. .B Unformatted and .B namelist I/O are not allowed on ``internal'' files. .Nh 2 "I/O execution" Note that each execution of a .Fo .B unformatted I/O statement causes a single logical record to be read or written. Each execution of a .Fo .B formatted I/O statement causes one or more logical records to be read or written. .PP A slash, ``/'', will terminate assignment of values to the input list during .B list\ directed input and the remainder of the current input line is skipped. The standard is rather vague on this point but seems to require that a new external logical record be found at the start of any formatted input. Therefore data following the slash is ignored and may be used to comment the data file. .PP .B "Direct access list directed" I/O is not allowed. .B "Unformatted internal" I/O is not allowed. .B Namelist I/O is allowed only with .B "external sequential" files. All other flavors of I/O are allowed, although some are not part of the .Sm ANSI standard. .PP Any I/O statement may include an .B err= clause to specify an alternative branch to be taken on errors and/or an .B iostat= clause to return the specific error code. Any error detected during I/O processing will cause the program to abort unless either .B err= or .B iostat= has been specificed in the program. Read statements may include .B end= to branch on end-of-file. The end-of-file indication for that logical unit may be reset with a \fBbackspace\fP statement. File position and the value of I/O list items is undefined following an error. .sp 1 .Nh 1 "Implementation details" Some details of the current implementation may be useful in understanding constraints on .Fo I/O. .Nh 2 "Number of logical units" Unit numbers must be in the range 0 \- 99. The maximum number of logical units that a program may have open at one time is the same as the .UX system limit, currently 48. .Nh 2 "Standard logical units" By default, logical units 0, 5, and 6 are opened to ``stderr'', ``stdin'', and ``stdout'' respectively. However they can be re-defined with an .B open statement. To preserve error reporting, it is an error to close logical unit 0 although it may be reopened to another file. .PP If you want to open the default file name for any preconnected logical unit, remember to .B close the unit first. Redefining the standard units may impair normal console I/O. An alternative is to use shell re-direction to externally re-define the above units. To re-define default blank control or format of the standard input or output files, use the .B open statement specifying the unit number and no file name (see \(sc\|2.4). .PP The standard units, 0, 5, and 6, are named internally ``stderr'', ``stdin'', and ``stdout'' respectively. These are not actual file names and can not be used for opening these units. .B Inquire will not return these names and will indicate that the above units are not named unless they have been opened to real files. The names are meant to make error reporting more meaningful. .Nh 2 "Vertical format control" Simple vertical format control is implemented. The logical unit must be opened for sequential access with .B "form = \(fmprint\(fm" (see \(sc\|3.2). Control codes ``0'' and ``1'' are replaced in the output file with ``\\n'' and ``\\f'' respectively. The control character ``+'' is not implemented and, like any other character in the first position of a record written to a ``print'' file, is dropped. The .B "form = \(fmprint\(fm" mode does not recognize vertical format control for .B "direct formatted, list directed," or .B "namelist" output. .PP An alternative is to use the filter \fIfpr\fP(1) for vertical format control. It replaces ``0'' and ``1'' by ``\\n'' and ``\\f'' respectively, and implements the ``+'' control code. Unlike .B "form = \(fmprint\(fm" which drops unrecognized form control characters, \fIfpr\fP copies those characters to the output file. .Nh 2 "File names and the open statement" A file name may be specified in an \fBopen\fP statement for the logical unit. If a logical unit is opened by an \fBopen\fP statement which does not specify a file name, or it is opened implicitly by the execution of a \fBread\fP, \fBwrite\fP, or \fBendfile\fP statement, then the default file name is .I fort.N where .I N is the logical unit number. Before opening the file, the library checks for an environment variable with a name identical to the tail of the file name with periods removed.\(dg .FS \(dgPeriods are deleted because they can not be part of environment variable names in the Bourne shell. .FE If it finds such an environment variable, it uses its value as the actual name of the file. For example, a program containing: .DS open(32,file=\(fm/usr/guest/census/data.d\(fm) read(32,100) vec write(44) vec .DE normally will read from \fI/usr/guest/census/data.d\fP and write to \fIfort.44\fP in the current directory. If the environment variables \fIdatad\fP and \fIfort44\fP are set, e.g.: .DS % setenv datad mydata % setenv fort44 myout .DE in the C shell or: .DS $ datad=mydata $ fort44=myout $ export datad fort44 .DE in the Bourne shell, then the program will read from \fImydata\fP and write to \fImyout\fP. .PP An .B open statement need not specify a file name. If it refers to a logical unit that is already open, the .B blank= and .B form= specifiers may be redefined without affecting the current file position. Otherwise, if .B "status = \(fmscratch\(fm" is specified, a temporary file with a name of the form .I tmp.FXXXXXX will be opened, and, by default, will be deleted when closed or during termination of program execution. .PP It is an error to try to open an existing file with .B "status = \(fmnew\(fm" \&. It is an error to try to open a nonexistent file with .B "status = \(fmold\(fm" \&. By default, .B "status = \(fmunknown\(fm" will be assumed, and a file will be created if necessary. .PP By default, files are positioned at their beginning upon opening, but see \fIfseek\fP(3f) and \fIioinit\fP(3f) for alternatives. Existing files are never truncated on opening. Sequentially accessed external files are truncated to the current file position on \fBclose\fP, \fBbackspace\fP, or \fBrewind\fP only if the last access to the file was a write. An .B endfile always causes such files to be truncated to the current file position. .Nh 2 "Format interpretation" Formats which are in format statements are parsed by the compiler; formats in \fBread\fP, \fBwrite\fP, and \fBprint\fP statements are parsed during execution by the .Sm I/O library. Upper as well as lower case characters are recognized in format statements and all the alphabetic arguments to the I/O library routines. .PP If the external representation of a datum is too large for the field width specified, the specified field is filled with asterisks (\(**). On \fBE\fPw.d\fBE\fPe output, the exponent field will be filled with asterisks if the exponent representation is too large. This will only happen if ``e'' is zero (see appendix B). .PP On output, a real value that is truly zero will display as ``0.'' to distinguish it from a very small non-zero value. If this causes problems for other input systems, the \fBBZ\fP edit descriptor may be used to cause the field following the decimal point to be filled with zero's. .PP Non-destructive tabbing is implemented for both internal and external formatted I/O. Tabbing left or right on output does not affect previously written portions of a record. Tabbing right on output causes unwritten portions of a record to be filled with blanks. Tabbing right off the end of an input logical record is an error. Tabbing left beyond the beginning of an input logical record leaves the input pointer at the beginning of the record. The format specifier .B T must be followed by a positive non-zero number. If it is not, it will have a different meaning (see \(sc\|3.1). .PP Tabbing left requires seek ability on the logical unit. Therefore it is not allowed in I/O to a terminal or pipe. Likewise, nondestructive tabbing in either direction is possible only on a unit that can seek. Otherwise tabbing right or spacing with .B X will write blanks on the output. .Nh 2 "List directed output" In formatting list directed output, the I/O system tries to prevent output lines longer than 80 characters. Each external datum will be separated by two spaces. List directed output of .B complex values includes an appropriate comma. List directed output distinguishes between .B real and .B "double precision" values and formats them differently. Output of a character string that includes ``\\n'' is interpreted reasonably by the output system. .Nh 2 "I/O errors" If I/O errors are not trapped by the user's program an appropriate error message will be written to ``stderr'' before aborting. An error number will be printed in ``[ ]'' along with a brief error message showing the logical unit and I/O state. Error numbers < 100 refer to .UX errors, and are described in the introduction to chapter 2 of the .UX Programmer's Manual. Error numbers \(>= 100 come from the I/O library, and are described further in the appendix to this writeup\(dd. .FS \(dd On many systems, these are also available in \fIhelp f77 io_err_msgs\fP. .FE For internal I/O, part of the string will be printed with ``|'' at the current position in the string. For external I/O, part of the current record will be displayed if the error was caused during reading from a file that can backspace. .sp 1 .Nh 1 "Non-``ANSI Standard'' extensions" Several extensions have been added to the I/O system to provide for functions omitted or poorly defined in the standard. Programmers should be aware that these are non-portable. .Nh 2 "Format specifiers" .B B is an acceptable edit control specifier. It causes return to the logical unit's default mode of blank interpretation. This is consistent with .B S which returns to default sign control. .PP .B P by itself is equivalent to .B 0P \&. It resets the scale factor to the default value, 0. .PP The form of the \fBE\fPw.d\fBE\fPe format specifier has been extended to .B D also. The form \fBE\fPw.d.e is allowed but is not standard. The ``e'' field specifies the minimum number of digits or spaces in the exponent field on output. If the value of the exponent is too large, the exponent notation .B e or .B d will be dropped from the output to allow one more character position. If this is still not adequate, the ``e'' field will be filled with asterisks (\(**). The default value for ``e'' is 2. .PP An additional form of tab control specification has been added. The .Sm ANSI standard forms \fBTR\fPn, \fBTL\fPn, and \fBT\fPn are supported where .I n is a positive non-zero number. If .B T or n\fBT\fP is specified, tabbing will be to the next (or n-th) 8-column tab stop. Thus columns of alphanumerics can be lined up without counting. .PP A format control specifier has been added to suppress the newline at the end of the last record of a formatted sequential write. The specifier is a dollar sign ($). It is constrained by the same rules as the colon (:). It is used typically for console prompts. For example: .DS write (\(**, "(\(fmenter value for x: \(fm,$)") read (\(**,\(**) x .DE .PP Radices other than 10 can be specified for formatted integer I/O conversion. The specifier is patterned after .B P, the scale factor for floating point conversion. It remains in effect until another radix is specified or format interpretation is complete. The specifier is defined as [n]\fBR\fP where 2 \(<= \fIn\fP \(<= 36. If .I n is omitted, the default decimal radix is restored. .PP The format specifier \fBO\fPm.n may be used for an octal conversion; it is equivalent to 8\fBR,I\fPm.n,10\fBR\fP. Similarly, \fBZ\fPm.n is equivalent to 16\fBR,I\fPm.n,10\fBR\fP and may be used for an hexadecimal conversion; .PP In conjunction with the above, a sign control specifier has been added to cause integer values to be interpreted as unsigned during output conversion. The specifier is .B SU and remains in effect until another sign control specifier is encountered, or format interpretation is complete.\(dg .FS \(dgNote: Unsigned integer values greater than (2\(**\(**31 - 1), can be read and written using \fBSU\fP. However they can not be used in computations because .Fo uses signed arithmetic and such values appear to the arithmetic unit as negative numbers. .FE Radix and ``unsigned'' specifiers could be used to format a hexadecimal dump, as follows: .DS 2000 format ( SU, 8Z10.8 ) .DE .Nh 2 "Print files" The .Sm ANSI standard is ambiguous regarding the definition of a ``print'' file. Since .UX has no default ``print'' file, an additional .B form= specifier is now recognized in the .B open statement. Specifying .B "form = \(fmprint\(fm" implies .B formatted and enables vertical format control for that logical unit (see \(sc\|2.3). Vertical format control is interpreted only on sequential formatted writes to a ``print'' file. .PP The .B inquire statement will return .B print in the .B form= string variable for logical units opened as ``print'' files. It will return -1 for the unit number of an unconnected file. .PP If a logical unit is already open, an .B open statement including the .B form= option or the .B blank= option will do nothing but re-define those options. This instance of the .B open statement need not include the file name, and must not include a file name if .B unit= refers to a standard input or output. Therefore, to re-define the standard output as a ``print'' file, use: .DS open (unit=6, form=\(fmprint\(fm) .DE .Nh 2 "Scratch files" A .B close statement with .B "status = \(fmkeep\(fm" may be specified for temporary files. This is the default for all other files. Remember to get the scratch file's real name, using .B inquire \&, if you want to re-open it later. .Nh 2 "List directed I/O" List directed read has been modified to allow tab characters wherever blanks are allowed. It also allows input of a string not enclosed in quotes. The string must not start with a digit or quote, and can not contain any separators ( ``,'', ``/'', blank or tab ). A newline will terminate the string unless escaped with \\. Any string not meeting the above restrictions must be enclosed in quotes (`` " '' or `` \(fm ''). .PP Internal list directed I/O has been implemented. During internal list reads, bytes are consumed until the iolist is satisfied, or the ``end-of-file'' is reached. During internal list writes, records are filled until the iolist is satisfied. The length of an internal array element should be at least 20 bytes to avoid logical record overflow when writing double precision values. Internal list read was implemented to make command line decoding easier. Internal list write should be avoided. .Nh 2 "Namelist I/O" Namelist I/O is a common extension in Fortran systems. The \fBf77\fP version was designed to be compatible with other vendors versions; it is described in ``A Portable Fortran 77 Compiler'', by Feldman and Weinberger, August, 1985. .sp 1 .Nh 1 "Running older programs" Traditional .Fo environments usually assume carriage control on all logical units, usually interpret blank spaces on input as ``0''s, and often provide attachment of global file names to logical units at run time. There are several routines in the I/O library to provide these functions. .Nh 2 "Traditional unit control parameters" If a program reads and writes only units 5 and 6, then including .B \-lI66 in the f77 command will cause carriage control to be interpreted on output and cause blanks to be zeros on input without further modification of the program. If this is not adequate, the routine \fIioinit\fP(3f) can be called to specify control parameters separately, including whether files should be positioned at their beginning or end upon opening. .Nh 2 "Ioinit()" \fIIoinit\fP(3f) can be used to attach logical units to specific files at run time, and to set global parameters for the .Sm I/O system. It will look for names of a user specified form in the environment and open the corresponding logical unit for .B "sequential formatted" I/O. Names must be of the form \fB\s-1PREFIX\s0\fP\fInn\fP where .B \\s-1PREFIX\\s0 is specified in the call to .I ioinit and .I nn is the logical unit to be opened. Unit numbers < 10 must include the leading ``0''. .PP .I Ioinit should prove adequate for most programs as written. However, it is written in .Fo \-77 specifically so that it may serve as an example for similar user-supplied routines. A copy may be retrieved by ``ar x /usr/lib/libU77.a ioinit.f''. See \(sc\|2.4 for another way to override program file names through environment variables. .sp 1 .Nh 1 "Magnetic tape I/O" Because the I/O library uses stdio buffering, reading or writing magnetic tapes should be done with great caution, or avoided if possible. A set of routines has been provided to read and write arbitrary sized buffers to or from tape directly. The buffer must be a .B character object. .B Internal I/O can be used to fill or interpret the buffer. These routines do not use normal .Fo I/O processing and do not obey .Fo I/O rules. See \fItopen\fP(3f). .sp 1 .Nh 1 "Caveat Programmer" The I/O library is extremely complex yet we believe there are few bugs left. We've tried to make the system as correct as possible according to the .Sm ANSI X3.9\-1978 document and keep it compatible with the .UX file system. Exceptions to the standard are noted in appendix B. .bp .DS C .B "Appendix A" .B "I/O Library Error Messages" .DE .XS Appendix A: I/O Library Error Messages .XE .sp 1 .PP The following error messages are generated by the I/O library. The error numbers are returned in the \fBiostat=\fP variable. Error numbers < 100 are generated by the .UX kernel. See the introduction to chapter 2 of the .UX Programmers Manual for their description. .nr PD 0 .de Er .ne 4v .IP \\$1 \fI\\$2\fP .br .. .RS .Er 100 "error in format" See error message output for the location of the error in the format. Can be caused by more than 10 levels of nested parentheses, or an extremely long format statement. .Er 101 "illegal unit number" It is illegal to close logical unit 0. Unit numbers must be between 0 and 99 inclusive. .Er 102 "formatted i/o not allowed" The logical unit was opened for unformatted I/O. .Er 103 "unformatted i/o not allowed" The logical unit was opened for formatted I/O. .Er 104 "direct i/o not allowed" The logical unit was opened for sequential access, or the logical record length was specified as 0. .Er 105 "sequential i/o not allowed" The logical unit was opened for direct access I/O. .Er 106 "can't backspace file" The file associated with the logical unit can't seek. May be a device or a pipe. .Er 107 "off beginning of record" The format specified a left tab beyond the beginning of an internal input record. .Er 108 "can't stat file" The system can't return status information about the file. Perhaps the directory is unreadable. .Er 109 "no \(** after repeat count" Repeat counts in list directed I/O must be followed by an \(** with no blank spaces. .Er 110 "off end of record" A formatted write tried to go beyond the logical end-of-record. An unformatted read or write will also cause this. .Er 111 "truncation failed" The truncation of an external sequential file on .B close , .B backspace , .B rewind , or .B endfile failed. .Er 112 "incomprehensible list input" List input has to be just right. .Er 113 "out of free space" The library dynamically creates buffers for internal use. You ran out of memory for this. Your program is too big! .Er 114 "unit not connected" The logical unit was not open. .Er 115 "invalid data for integer format term" Only spaces, a leading sign and digits are allowed. .Er 116 "invalid data for logical format term" Legal input consists of spaces (optional), a period (optional), and then a ``t'', ``T'', ``f'', or ``F''. .Er 117 "\|\(fmnew\|\(fm file exists" You tried to open an existing file with ``status=\|\(fmnew\|\(fm''. .Er 118 "can't find \|\(fmold\|\(fm file" You tried to open a non-existent file with ``status=\|\(fmold\|\(fm''. .Er 119 "opening too many files or unknown system error" Either you are trying to open too many files simultaneously or there has been an undetected system error. .Er 120 "requires seek ability" Direct access requires seek ability. Sequential unformatted I/O requires seek ability on the file due to the special data structure required. Tabbing left also requires seek ability. .Er 121 "illegal argument" Certain arguments to .B open , etc. will be checked for legitimacy. Often only non-default forms are looked for. .Er 122 "negative repeat count" The repeat count for list directed input must be a positive integer. .Er 123 "illegal operation for unit" An operation was requested for a device associated with the logical unit which was not possible. This error is returned by the tape I/O routines if attempting to read past end-of-tape, etc. .Er 124 "invalid data for d, e, f or g format term" Input data must be legal. .Er 125 "illegal input for namelist" Column one of input is ignored, the namelist name must match, the variables must be in the namelist, and the data must be of the right type. .if n .nr PD 1v .if t .nr PD 0.3v .RE .bp .LP .DS C .B "Appendix B" .B "Exceptions to the ANSI Standard" .DE .XS Appendix B: Exceptions to the ANSI Standard .XE .sp 1 .PP A few exceptions to the .Sm ANSI standard remain. .sp 1 .LP .B "Vertical format control" .PP The ``+'' carriage control specifier is not fully implemented (see \(sc\|2.3). It would be difficult to implement it correctly and still provide .UX -like file I/O. .PP Furthermore, the carriage control implementation is asymmetrical. A file written with carriage control interpretation can not be read again with the same characters in column 1. .PP An alternative to interpreting carriage control internally is to run the output file through a ``Fortran output filter'' before printing. This filter could recognize a much broader range of carriage control and include terminal dependent processing. One such filter is \fIfpr\fP(1). .sp 1 .LP .B "Default files" .PP Files created by default use of .B endfile statements are opened for .B "sequential formatted" access. There is no way to redefine such a file to allow .B direct or .B unformatted access. .sp 1 .LP .B "Lower case strings" .PP It is not clear if the .Sm ANSI standard requires internally generated strings to be upper case or not. As currently written, the .B inquire statement will return lower case strings for any alphanumeric data. .sp 1 .LP .B "Exponent representation on Ew.dEe output" .PP If the field width for the exponent is too small, the standard allows dropping the exponent character but only if the exponent is > 99. This system does not enforce that restriction. Further, the standard implies that the entire field, ``w'', should be filled with asterisks if the exponent can not be displayed. This system fills only the exponent field in the above case since that is more diagnostic. .sp 1 .LP .B "Pre-connection of files" .PP The standard says units must be pre-connected to files before the program starts or must be explicitly opened. Instead, the I/O library connects the unit to a file on its first use in a \fBread\fP, \fBwrite\fP, \fBprint\fP, or \fBendfile\fP statement. Thus \fBinquire\fP by unit can not tell prior to a unit number use the characteristics or name of the file corresponding to a unit. .\" want Table of Contents to begin on page 2 hence must expand body .\" of .TC macro to enable us to get handle on page number. .pn 2 .bp .PX include a file name if .B unit= refers to a standard input or output. Therefore, to re-define the standard output as a ``print'' file, use: .DS open (unit=6, form=\(fmprint\(fm) .DE .Ndoc/ps1/03.f77io/Makefile 444 3 12 1130 3652574247 10126 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 5.1 (Berkeley) 4/21/86 # SRCS= f77IO.ms MACROS= -msU PRINTER=Pdp TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TROFF} ${MACROS} -t ${SRCS} > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done ented to make command line decoding easier. Internal list write should be avoided. .Nh 2 "Namelist I/O" Namelist I/O is a common extension in Fortran systems. The \fBf77\fP version was designed to be compatible with other vendors versions; it is described in ``A Portable Fortran 77 Compiler'', by Feldman and Weinberger, August, 1985. .sp 1 .Nh 1 "Running older programs" Traditional .Fo environments usually assume carriagdoc/ps1/01.Clang/ 755 3 12 0 3666373421 6473 doc/ps1/01.Clang/Makefile 444 3 12 1215 3666163354 10217 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 5/26/86 # SRCS= Clang.ms MACROS= -msU PRINTER=Pdp EQN= deqn -${PRINTER} TBL= dtbl -${PRINTER} TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done list write should be avoided. .Nh 2 "Namelist I/O" Namelist I/O is a common extension in Fortran systems. The \fBf77\fP version was designed to be compatible with other vendors versions; it is described in ``A Portable Fortran 77 Compiler'', by Feldman and Weinberger, August, 1985. .sp 1 .Nh 1 "Running older programs" Traditional .Fo environments usually assume carriagdoc/ps1/01.Clang/Clang.ms 444 3 12 300521 3666355455 10213 .\" @(#)Clang.ms 6.2 (Berkeley) 5/27/86 .\" .nr Cl 2 .TL The C Programming Language - Reference Manual .AU Dennis M. Ritchie .AI .MH .PP This manual is a reprint, with updates to the current C standard, from \fIThe C Programming Language\fR, by Brian W. Kernighan and Dennis M. Richie, Prentice-Hall, Inc., 1978. .EH 'PS1:1-%''The C Programming Language - Reference Manual' .OH 'The C Programming Language - Reference Manual''PS1:1-%' .NH 1 Introduction .PP This manual describes the C language on the DEC PDP-11\(dg, the DEC VAX-11, .FS .LP \(dg DEC PDP-11, and DEC VAX-11 are trademarks of Digital Equipment Corporation. .LP \(dd 3B 20 is a trademark of AT&T. .FE and the AT&T 3B 20\(dd. Where differences exist, it concentrates on the VAX, but tries to point out implementation-dependent details. With few execptions, these dependencies follow directly from the underlying properties of the hardware; the various compilers are generally quite compatible. .NH 1 Lexical Conventions .PP There are six classes of tokens\ -\ identifiers, keywords, constants, strings, operators, and other separators. Blanks, tabs, new\(hylines, and comments (collectively, ``white space'') as described below are ignored except as they serve to separate tokens. Some white space is required to separate otherwise adjacent identifiers, keywords, and constants. .PP If the input stream has been parsed into tokens up to a given character, the next token is taken to include the longest string of characters which could possibly constitute a token. .NH 2 Comments .PP The characters .B /* .R introduce a comment which terminates with the characters \fB\(**/\fR. Comments do not nest. .NH 2 Identifiers (Names) .PP An identifier is a sequence of letters and digits. The first character must be a letter. The underscore (\fB_\fR) counts as a letter. Uppercase and lowercase letters are different. Although there is no limit on the length of a name, only initial characters are significant: at least eight characters of a non-external name, and perhaps fewer for external names. Moreover, some implementations may collapse case distinctions for external names. The external name sizes include: .DS .TS l l. PDP-11 7 characters, 2 cases VAX-11 >100 characters, 2 cases AT&T 3B 20 >100 characters, 2 cases .TE .fi .DE .NH 2 Keywords .PP The following identifiers are reserved for use as keywords and may not be used otherwise: .DS .ta 0.8i 1.6i 2.4i 3.2i 4.0i \fBauto do for return typedef break double goto short union case else if sizeof unsigned char enum int static void continue external long struct while default float register switch\fR .ta 0.5i .DE .PP Some implementations also reserve the words .B fortran, asm, gfloat, hfloat .R and .B quad .R .NH 2 Constants .PP There are several kinds of constants. Each has a type; an introduction to types is given in ``NAMES.'' Hardware characteristics that affect sizes are summarized in ``Hardware Characteristics'' under ``LEXICAL CONVENTIONS.'' .NH 3 Integer Constants .br .PP An integer constant consisting of a sequence of digits is taken to be octal if it begins with .B 0 .R (digit zero). An octal constant consists of the digits \fB0\fR through \fB7\fR only. A sequence of digits preceded by .B 0x .R or .B 0X .R (digit zero) is taken to be a hexadecimal integer. The hexadecimal digits include .B a .R or .B A .R through .B f .R or .B F .R with values 10 through 15. Otherwise, the integer constant is taken to be decimal. A decimal constant whose value exceeds the largest signed machine integer is taken to be \fBlong\fR; an octal or hex constant which exceeds the largest unsigned machine integer is likewise taken to be .B long\fR. .R Otherwise, integer constants are \fBint\fR. .NH 3 Explicit Long Constants .br .PP A decimal, octal, or hexadecimal integer constant immediately followed by .B l .R (letter ell) or .B L .R is a long constant. As discussed below, on some machines integer and long values may be considered identical. .NH 3 Character Constants .br .PP A character constant is a character enclosed in single quotes, as in '\fBx\fR'. The value of a character constant is the numerical value of the character in the machine's character set. .PP Certain nongraphic characters, the single quote (\fB'\fR) and the backslash (\fB\e\fR), may be represented according to the following table of escape sequences: .DS .TS l l l. new\(hyline NL (LF) \en horizontal tab HT \et vertical tab VT \ev backspace BS \eb carriage return CR \er form feed FF \ef backslash \e \e\e single quote ' \e' bit pattern \fIddd\fR\^ \e\fIddd\fR\^ .TE .DE .PP The escape \e\fIddd\fR consists of the backslash followed by 1, 2, or 3 octal digits which are taken to specify the value of the desired character. A special case of this construction is .B \e0 .R (not followed by a digit), which indicates the character .B NUL\fR. .R If the character following a backslash is not one of those specified, the behavior is undefined. A new-line character is illegal in a character constant. The type of a character constant is \fBint\fR. .NH 3 Floating Constants .br .PP A floating constant consists of an integer part, a decimal point, a fraction part, an .B e .R or \fBE\fR, and an optionally signed integer exponent. The integer and fraction parts both consist of a sequence of digits. Either the integer part or the fraction part (not both) may be missing. Either the decimal point or the .B e .R and the exponent (not both) may be missing. Every floating constant has type \fBdouble\fR. .NH 3 Enumeration Constants .br .PP Names declared as enumerators (see ``Structure, Union, and Enumeration Declarations'' under ``DECLARATIONS'') have type \fBint\fR. .NH 2 Strings .PP A string is a sequence of characters surrounded by double quotes, as in \fB"..."\fR. A string has type ``array of \fBchar\fR'' and storage class \fBstatic\fR (see ``NAMES'') and is initialized with the given characters. The compiler places a null byte (\fB\e0\fR) at the end of each string so that programs which scan the string can find its end. In a string, the double quote character (\fB"\fR) must be preceded by a \fB\e\fR; in addition, the same escapes as described for character constants may be used. .PP A .B \e .R and the immediately following new\(hyline are ignored. All strings, even when written identically, are distinct. .NH 2 Hardware Characteristics .PP The following figure summarize certain hardware properties that vary from machine to machine. .DS .TS center box; c cfB s cfB s cfB s c c s c s c s l | l1 lp8 | l1 lp8 | l1 lp8. DEC PDP\-11 DEC VAX-11 AT&T 3B (ASCII) (ASCII) (ASCII) .sp _ char 8 bits 8 bits 8bits int 16 32 32 short 16 16 16 long 32 32 32 float 32 32 32 double 64 64 64 float range \(+-10 \(+-38 \(+-10 \(+-38 \(+-10 \(+-38 \^ \^ \^ \^ double range \(+-10 \(+-38 \(+-10 \(+-38 \(+-10 \(+-308 \^ \^ \^ \^ .TE .FG 4 4 1 "DEC PDP-11 HARDWARE CHARACTERISTICS" .DE .PP .NH 1 Syntax Notation .PP Syntactic categories are indicated by .I italic .R type and literal words and characters in \fBbold\fR type. Alternative categories are listed on separate lines. An optional terminal or nonterminal symbol is indicated by the subscript ``opt,'' so that .DS { \fIexpression\v'0.5'\s-2opt\s0\v'-0.5'\fR } .DE .LP indicates an optional expression enclosed in braces. The syntax is summarized in ``SYNTAX SUMMARY''. .NH 1 Names .PP The C language bases the interpretation of an identifier upon two attributes of the identifier \(mi its .I storage class .R and its .I type\fR. The storage class determines the location and lifetime of the storage associated with an identifier; the type determines the meaning of the values found in the identifier's storage. .NH 2 Storage Class .PP There are four declarable storage classes: .BL 6 1 .LI Automatic .LI Static .LI External .LI Register. .LE .PP Automatic variables are local to each invocation of a block (see ``Compound Statement or Block'' in ``STATEMENTS'') and are discarded upon exit from the block. Static variables are local to a block but retain their values upon reentry to a block even after control has left the block. External variables exist and retain their values throughout the execution of the entire program and may be used for communication between functions, even separately compiled functions. Register variables are (if possible) stored in the fast registers of the machine; like automatic variables, they are local to each block and disappear on exit from the block. .NH 2 Type .PP The C language supports several fundamental types of objects. Objects declared as characters (\fBchar\fR) are large enough to store any member of the implementation's character set. If a genuine character from that character set is stored in a \fBchar\fR variable, its value is equivalent to the integer code for that character. Other quantities may be stored into character variables, but the implementation is machine dependent. In particular, \fBchar\fR may be signed or unsigned by default. .PP Up to three sizes of integer, declared .B short .R \fBint\fR, \fBint\fR, and .B long .R \fBint\fR, are available. Longer integers provide no less storage than shorter ones, but the implementation may make either short integers or long integers, or both, equivalent to plain integers. ``Plain'' integers have the natural size suggested by the host machine architecture. The other sizes are provided to meet special needs. .PP The properties of \fBenum\fR types (see ``Structure, Union, and Enumeration Declarations'' under ``DECLARATIONS'') are identical to those of some integer types. The implementation may use the range of values to determine how to allocate storage. .PP Unsigned integers, declared .B unsigned, .R obey the laws of arithmetic modulo 2\v'-0.5'\fIn\fR\v'0.5' where \fIn\fR is the number of bits in the representation. (On the PDP-11, unsigned long quantities are not supported.) .PP Single-precision floating point (\fBfloat\fR) and double precision floating point (\fBdouble\fR) may be synonymous in some implementations. .PP Because objects of the foregoing types can usefully be interpreted as numbers, they will be referred to as .I arithmetic .R types. \fBChar\fR, .B int .R of all sizes whether \fBunsigned\fR or not, and .B enum .R will collectively be called .I integral .R types. The .B float .R and .B double .R types will collectively be called .I floating .R types. .PP The .B void .R type specifies an empty set of values. It is used as the type returned by functions that generate no value. .PP Besides the fundamental arithmetic types, there is a conceptually infinite class of derived types constructed from the fundamental types in the following ways: .BL 6 1 .LI \fIArrays\fR of objects of most types .LI \fIFunctions\fR which return objects of a given type .LI \fIPointers\fR to objects of a given type .LI \fIStructures\fR containing a sequence of objects of various types .LI \fIUnions\fR capable of containing any one of several objects of various types. .LE .PP In general these methods of constructing objects can be applied recursively. .NH 1 Objects and Lvalues .PP An .I object .R is a manipulatable region of storage. An .I lvalue .R is an expression referring to an object. An obvious example of an lvalue expression is an identifier. There are operators which yield lvalues: for example, if .B E .R is an expression of pointer type, then .B \(**E .R is an lvalue expression referring to the object to which .B E .R points. The name ``lvalue'' comes from the assignment expression .B E1\ =\ E2 .R in which the left operand .B E1 .R must be an lvalue expression. The discussion of each operator below indicates whether it expects lvalue operands and whether it yields an lvalue. .NH 1 Conversions .PP A number of operators may, depending on their operands, cause conversion of the value of an operand from one type to another. This part explains the result to be expected from such conversions. The conversions demanded by most ordinary operators are summarized under ``Arithmetic Conversions.'' The summary will be supplemented as required by the discussion of each operator. .NH 2 Characters and Integers .PP A character or a short integer may be used wherever an integer may be used. In all cases the value is converted to an integer. Conversion of a shorter integer to a longer preserves sign. Whether or not sign-extension occurs for characters is machine dependent, but it is guaranteed that a member of the standard character set is non-negative. Of the machines treated here, only the PDP-11 and VAX-11 sign-extend. On these machines, .B char .R variables range in value from \(mi128 to 127. The more explicit type .B unsigned .R .B char .R forces the values to range from 0 to 255. .PP On machines that treat characters as signed, the characters of the ASCII set are all non-negative. However, a character constant specified with an octal escape suffers sign extension and may appear negative; for example, \fB\'\e377\'\fR \fRhas the value .B \(mi1\fR. .PP When a longer integer is converted to a shorter integer or to a .B char, .R it is truncated on the left. Excess bits are simply discarded. .NH 2 Float and Double .PP All floating arithmetic in C is carried out in double precision. Whenever a .B float .R appears in an expression it is lengthened to .B double .R by zero padding its fraction. When a .B double .R must be converted to \fBfloat\fR, for example by an assignment, the .B double .R is rounded before truncation to .B float .R length. This result is undefined if it cannot be represented as a float. On the VAX, the compiler can be directed to use single percision for expressions containing only float and interger operands. .NH 2 Floating and Integral .PP Conversions of floating values to integral type are rather machine dependent. In particular, the direction of truncation of negative numbers varies. The result is undefined if it will not fit in the space provided. .PP Conversions of integral values to floating type are well behaved. Some loss of accuracy occurs if the destination lacks sufficient bits. .NH 2 Pointers and Integers .PP An expression of integral type may be added to or subtracted from a pointer; in such a case, the first is converted as specified in the discussion of the addition operator. Two pointers to objects of the same type may be subtracted; in this case, the result is converted to an integer as specified in the discussion of the subtraction operator. .NH 2 Unsigned .PP Whenever an unsigned integer and a plain integer are combined, the plain integer is converted to unsigned and the result is unsigned. The value is the least unsigned integer congruent to the signed integer (modulo 2\v'-0.3'\s-2wordsize\s+2\v'0.3'). In a 2's complement representation, this conversion is conceptual; and there is no actual change in the bit pattern. .PP When an unsigned \fBshort\fR integer is converted to \fBlong\fR, the value of the result is the same numerically as that of the unsigned integer. Thus the conversion amounts to padding with zeros on the left. .NH 2 Arithmetic Conversions .PP A great many operators cause conversions and yield result types in a similar way. This pattern will be called the ``usual arithmetic conversions.'' .AL 1 6 .LI First, any operands of type .B char .R or .B short .R are converted to \fBint\fR, and any operands of type \fBunsigned char\fR or \fBunsigned short\fR are converted to \fBunsigned int\fR. .LI Then, if either operand is .B double, .R the other is converted to .B double .R and that is the type of the result. .LI Otherwise, if either operand is \fBunsigned long\fR, the other is converted to \fBunsigned long\fR and that is the type of the result. .LI Otherwise, if either operand is \fBlong\fR, the other is converted to .B long .R and that is the type of the result. .LI Otherwise, if one operand is \fBlong\fR, and the other is \fBunsigned int\fR, they are both converted to \fBunsigned long\fR and that is the type of the result. .LI Otherwise, if either operand is .B unsigned, .R the other is converted to .B unsigned .R and that is the type of the result. .LI Otherwise, both operands must be \fBint\fR, and that is the type of the result. .LE .NH 2 Void .PP The (nonexistent) value of a .B void .R object may not be used in any way, and neither explicit nor implicit conversion may be applied. Because a void expression denotes a nonexistent value, such an expression may be used only as an expression statement (see ``Expression Statement'' under ``STATEMENTS'') or as the left operand of a comma expression (see ``Comma Operator'' under ``EXPRESSIONS''). .PP An expression may be converted to type .B void .R by use of a cast. For example, this makes explicit the discarding of the value of a function call used as an expression statement. .NH 1 Expressions .PP The precedence of expression operators is the same as the order of the major subsections of this section, highest precedence first. Thus, for example, the expressions referred to as the operands of .B \(pl .R (see ``Additive Operators'') are those expressions defined under ``Primary Expressions'', ``Unary Operators'', and ``Multiplicative Operators''. Within each subpart, the operators have the same precedence. Left- or right-associativity is specified in each subsection for the operators discussed therein. The precedence and associativity of all the expression operators are summarized in the grammar of ``SYNTAX SUMMARY''. .PP Otherwise, the order of evaluation of expressions is undefined. In particular, the compiler considers itself free to compute subexpressions in the order it believes most efficient even if the subexpressions involve side effects. The order in which subexpression evaluation takes place is unspecified. Expressions involving a commutative and associative operator (\fB\(**,\fR \fB\(pl\fR, \fB&\fR, \fB|\fR, \fB^\fR) may be rearranged arbitrarily even in the presence of parentheses; to force a particular order of evaluation, an explicit temporary must be used. .PP The handling of overflow and divide check in expression evaluation is undefined. Most existing implementations of C ignore integer overflows; treatment of division by 0 and all floating-point exceptions varies between machines and is usually adjustable by a library function. .NH 2 Primary Expressions .PP Primary expressions involving \fB\.\fR, \fB\(mi>\fR, subscripting, and function calls group left to right. .DS \fIprimary-expression: identifier constant string ( expression ) primary-expression [ expression ] primary-expression ( expression-list\v'0.5'\s-2opt\s0\v'-0.5' ) primary-expression . identifier primary-expression \(mi> identifier\fR .DE .DS \fIexpression-list: expression expression-list , expression\fR .DE .PP An identifier is a primary expression provided it has been suitably declared as discussed below. Its type is specified by its declaration. If the type of the identifier is ``array of .\|.\|.'', then the value of the identifier expression is a pointer to the first object in the array; and the type of the expression is ``pointer to .\|.\|.''. Moreover, an array identifier is not an lvalue expression. Likewise, an identifier which is declared ``function returning .\|.\|.'', when used except in the function-name position of a call, is converted to ``pointer to function returning .\|.\|.''. .PP A constant is a primary expression. Its type may be \fBint\fR, \fBlong\fR, or .B double .R depending on its form. Character constants have type .B int .R and floating constants have type .B double\fR. .R .PP A string is a primary expression. Its type is originally ``array of \fBchar\fR'', but following the same rule given above for identifiers, this is modified to ``pointer to \fBchar\fR'' and the result is a pointer to the first character in the string. (There is an exception in certain initializers; see ``Initialization'' under ``DECLARATIONS.'') .PP A parenthesized expression is a primary expression whose type and value are identical to those of the unadorned expression. The presence of parentheses does not affect whether the expression is an lvalue. .PP A primary expression followed by an expression in square brackets is a primary expression. The intuitive meaning is that of a subscript. Usually, the primary expression has type ``pointer to .\|.\|.'', the subscript expression is \fBint\fR, and the type of the result is ``\|.\|.\|.\|''. The expression .B E1[E2] .R is identical (by definition) to .B \(**((E1)\(plE2))\fR. All the clues needed to understand this notation are contained in this subpart together with the discussions in ``Unary Operators'' and ``Additive Operators'' on identifiers, .B \(** .R and .B \(pl .R respectively. The implications are summarized under ``Arrays, Pointers, and Subscripting'' under ``TYPES REVISITED.'' .PP A function call is a primary expression followed by parentheses containing a possibly empty, comma-separated list of expressions which constitute the actual arguments to the function. The primary expression must be of type ``function returning .\|.\|.,'' and the result of the function call is of type ``\|.\|.\|.\|''. As indicated below, a hitherto unseen identifier followed immediately by a left parenthesis is contextually declared to represent a function returning an integer; thus in the most common case, integer-valued functions need not be declared. .PP Any actual arguments of type .B float .R are converted to .B double .R before the call. Any of type .B char .R or .B short .R are converted to .B int\fR. .R Array names are converted to pointers. No other conversions are performed automatically; in particular, the compiler does not compare the types of actual arguments with those of formal arguments. If conversion is needed, use a cast; see ``Unary Operators'' and ``Type Names'' under ``DECLARATIONS.'' .PP In preparing for the call to a function, a copy is made of each actual parameter. Thus, all argument passing in C is strictly by value. A function may change the values of its formal parameters, but these changes cannot affect the values of the actual parameters. It is possible to pass a pointer on the understanding that the function may change the value of the object to which the pointer points. An array name is a pointer expression. The order of evaluation of arguments is undefined by the language; take note that the various compilers differ. Recursive calls to any function are permitted. .PP A primary expression followed by a dot followed by an identifier is an expression. The first expression must be a structure or a union, and the identifier must name a member of the structure or union. The value is the named member of the structure or union, and it is an lvalue if the first expression is an lvalue. .PP A primary expression followed by an arrow (built from .B \(mi .R and .B > .R ) followed by an identifier is an expression. The first expression must be a pointer to a structure or a union and the identifier must name a member of that structure or union. The result is an lvalue referring to the named member of the structure or union to which the pointer expression points. Thus the expression .B E1\(mi>MOS .R is the same as .B (\(**E1).MOS\fR. .R Structures and unions are discussed in ``Structure, Union, and Enumeration Declarations'' under ``DECLARATIONS.'' .NH 2 Unary Operators .PP Expressions with unary operators group right to left. .tr ~~ .DS \fIunary-expression: \(** expression & lvalue \(mi expression ! expression \s+2~\s0 expression \(pl\(pl lvalue \(mi\(milvalue lvalue \(pl\(pl lvalue \(mi\(mi ( type-name ) expression\fR sizeof\fI expression\fR sizeof\fI ( type-name )\fR .DE .PP The unary .B \(** .R operator means .I indirection .R ; the expression must be a pointer, and the result is an lvalue referring to the object to which the expression points. If the type of the expression is ``pointer to .\|.\|.,'' the type of the result is ``\|.\|.\|.\|''. .PP The result of the unary .B & .R operator is a pointer to the object referred to by the lvalue. If the type of the lvalue is ``\|.\|.\|.\|'', the type of the result is ``pointer to .\|.\|.''. .PP The result of the unary .B \(mi .R operator is the negative of its operand. The usual arithmetic conversions are performed. The negative of an unsigned quantity is computed by subtracting its value from 2\v'-0.5'\fIn\fR\^\v'0.5' where \fIn\fR\^ is the number of bits in the corresponding signed type. .sp .tr ~~ There is no unary .B \(pl .R operator. .PP The result of the logical negation operator .B ! .R is one if the value of its operand is zero, zero if the value of its operand is nonzero. The type of the result is .B int\fR. .R It is applicable to any arithmetic type or to pointers. .PP The .B \s+2~\s0 .R operator yields the one's complement of its operand. The usual arithmetic conversions are performed. The type of the operand must be integral. .PP The object referred to by the lvalue operand of prefix .B \(pl\(pl .R is incremented. The value is the new value of the operand but is not an lvalue. The expression .B \(pl\(plx .R is equivalent to \fBx=x\(pl1\fR. See the discussions ``Additive Operators'' and ``Assignment Operators'' for information on conversions. .PP The lvalue operand of prefix .B \(mi\(mi .R is decremented analogously to the prefix .B \(pl\(pl .R operator. .PP When postfix .B \(pl\(pl .R is applied to an lvalue, the result is the value of the object referred to by the lvalue. After the result is noted, the object is incremented in the same manner as for the prefix .B \(pl\(pl .R operator. The type of the result is the same as the type of the lvalue expression. .PP When postfix .B \(mi\(mi .R is applied to an lvalue, the result is the value of the object referred to by the lvalue. After the result is noted, the object is decremented in the manner as for the prefix .B \(mi\(mi .R operator. The type of the result is the same as the type of the lvalue expression. .PP An expression preceded by the parenthesized name of a data type causes conversion of the value of the expression to the named type. This construction is called a .I cast\fR. .R Type names are described in ``Type Names'' under ``Declarations.'' .PP The .B sizeof .R operator yields the size in bytes of its operand. (A .I byte .R is undefined by the language except in terms of the value of .B sizeof\fR. .R However, in all existing implementations, a byte is the space required to hold a \fBchar.\fR) When applied to an array, the result is the total number of bytes in the array. The size is determined from the declarations of the objects in the expression. This expression is semantically an .B unsigned .R constant and may be used anywhere a constant is required. Its major use is in communication with routines like storage allocators and I/O systems. .PP The .B sizeof .R operator may also be applied to a parenthesized type name. In that case it yields the size in bytes of an object of the indicated type. .PP The construction \fBsizeof(\fItype\|\fR\^)\fR\^ is taken to be a unit, so the expression \fBsizeof(\fItype\|\fB)-2\fR is the same as \fB(sizeof(\fItype\|\fB))-2\fR. .NH 2 Multiplicative Operators .PP The multiplicative operators \fB\(**\fR, \fB/\fR, and .B % .R group left to right. The usual arithmetic conversions are performed. .DS \fImultiplicative expression: expression \(** expression expression / expression expression % expression\fR .DE .PP The binary .B \(** .R operator indicates multiplication. The .B \(** .R operator is associative, and expressions with several multiplications at the same level may be rearranged by the compiler. The binary .B / .R operator indicates division. .PP The binary .B % .R operator yields the remainder from the division of the first expression by the second. The operands must be integral. .PP When positive integers are divided, truncation is toward 0; but the form of truncation is machine-dependent if either operand is negative. On all machines covered by this manual, the remainder has the same sign as the dividend. It is always true that .B (a/b)\(**b\ \(pl a%b .R is equal to .B a .R (if .B b .R is not 0). .NH 2 Additive Operators .PP The additive operators .B \(pl .R and .B \(mi .R group left to right. The usual arithmetic conversions are performed. There are some additional type possibilities for each operator. .DS \fIadditive-expression: expression \(pl expression expression \(mi expression\fR .DE .PP The result of the .B \(pl .R operator is the sum of the operands. A pointer to an object in an array and a value of any integral type may be added. The latter is in all cases converted to an address offset by multiplying it by the length of the object to which the pointer points. The result is a pointer of the same type as the original pointer which points to another object in the same array, appropriately offset from the original object. Thus if .B P .R is a pointer to an object in an array, the expression .B P\(pl1 .R is a pointer to the next object in the array. No further type combinations are allowed for pointers. .PP The .B \(pl .R operator is associative, and expressions with several additions at the same level may be rearranged by the compiler. .PP The result of the .B \(mi .R operator is the difference of the operands. The usual arithmetic conversions are performed. Additionally, a value of any integral type may be subtracted from a pointer, and then the same conversions for addition apply. .PP If two pointers to objects of the same type are subtracted, the result is converted (by division by the length of the object) to an .B int .R representing the number of objects separating the pointed-to objects. This conversion will in general give unexpected results unless the pointers point to objects in the same array, since pointers, even to objects of the same type, do not necessarily differ by a multiple of the object length. .NH 2 Shift Operators .PP The shift operators .B << .R and .B >> .R group left to right. Both perform the usual arithmetic conversions on their operands, each of which must be integral. Then the right operand is converted to \fBint\fR; the type of the result is that of the left operand. The result is undefined if the right operand is negative or greater than or equal to the length of the object in bits. On the VAX a negative right operand is interpreted as reversing the direction of the shift. .DS \fIshift-expression: expression << expression expression >> expression\fR .DE .PP The value of .B E1<>E2 .R is .B E1 .R right-shifted .B E2 .R bit positions. The right shift is guaranteed to be logical (0 fill) if .B E1 .R is \fBunsigned\fR; otherwise, it may be arithmetic. .NH 2 Relational Operators .PP The relational operators group left to right. .DS \fIrelational-expression: expression < expression expression > expression expression <= expression expression >= expression\fR .DE .PP The operators .B < .R (less than), .B > .R (greater than), \fB<=\fR (less than or equal to), and .B >= .R (greater than or equal to) all yield 0 if the specified relation is false and 1 if it is true. The type of the result is .B int\fR. The usual arithmetic conversions are performed. Two pointers may be compared; the result depends on the relative locations in the address space of the pointed-to objects. Pointer comparison is portable only when the pointers point to objects in the same array. .NH 2 Equality Operators .PP .DS \fIequality-expression: expression == expression expression != expression\fR .DE .PP The .B == .R (equal to) and the .B != .R (not equal to) operators are exactly analogous to the relational operators except for their lower precedence. (Thus .B a>= expression lvalue <<= expression lvalue &= expression lvalue ^= expression lvalue |= expression\fR .DE .PP In the simple assignment with \fB=\fR, the value of the expression replaces that of the object referred to by the lvalue. If both operands have arithmetic type, the right operand is converted to the type of the left preparatory to the assignment. Second, both operands may be structures or unions of the same type. Finally, if the left operand is a pointer, the right operand must in general be a pointer of the same type. However, the constant 0 may be assigned to a pointer; it is guaranteed that this value will produce a null pointer distinguishable from a pointer to any object. .PP The behavior of an expression of the form \fBE1\fR\^ \fIop\fR\^ = \fBE2\fR\^ may be inferred by taking it as equivalent to \fBE1 = E1 \fIop\fR\^ (\fBE2\fR\^); however, .B E1 .R is evaluated only once. In .B \(pl= .R and \fB\(mi=\fR, the left operand may be a pointer; in which case, the (integral) right operand is converted as explained in ``Additive Operators.'' All right operands and all nonpointer left operands must have arithmetic type. .NH 2 Comma Operator .DS \fIcomma-expression: expression , expression\fR .DE .PP A pair of expressions separated by a comma is evaluated left to right, and the value of the left expression is discarded. The type and value of the result are the type and value of the right operand. This operator groups left to right. In contexts where comma is given a special meaning, e.g., in lists of actual arguments to functions (see ``Primary Expressions'') and lists of initializers (see ``Initialization'' under ``DECLARATIONS''), the comma operator as described in this subpart can only appear in parentheses. For example, .DS \fBf(a, (t=3, t\(pl2), c)\fR .DE .LP has three arguments, the second of which has the value 5. .NH 1 Declarations .PP Declarations are used to specify the interpretation which C gives to each identifier; they do not necessarily reserve storage associated with the identifier. Declarations have the form .DS \fIdeclaration: decl-specifiers declarator-list\v'0.5'\s-2opt\s0\v'-0.5' ;\fR .DE .PP The declarators in the declarator-list contain the identifiers being declared. The decl-specifiers consist of a sequence of type and storage class specifiers. .DS \fIdecl-specifiers: type-specifier decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5' sc-specifier decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5'\fR .DE .PP The list must be self-consistent in a way described below. .NH 2 Storage Class Specifiers .PP The sc-specifiers are: .DS \fIsc-specifier:\fB auto static extern register typedef\fR .DE .PP The .B typedef .R specifier does not reserve storage and is called a ``storage class specifier'' only for syntactic convenience. See ``Typedef'' for more information. The meanings of the various storage classes were discussed in ``Names.'' .PP The \fBauto\fR, \fBstatic\fR, and .B register .R declarations also serve as definitions in that they cause an appropriate amount of storage to be reserved. In the .B extern .R case, there must be an external definition (see ``External Definitions'') for the given identifiers somewhere outside the function in which they are declared. .PP A .B register .R declaration is best thought of as an .B auto .R declaration, together with a hint to the compiler that the variables declared will be heavily used. Only the first few such declarations in each function are effective. Moreover, only variables of certain types will be stored in registers; on the PDP-11, they are .B int .R or pointer. One other restriction applies to register variables: the address-of operator .B & .R cannot be applied to them. Smaller, faster programs can be expected if register declarations are used appropriately, but future improvements in code generation may render them unnecessary. .PP At most, one sc-specifier may be given in a declaration. If the sc-specifier is missing from a declaration, it is taken to be .B auto .R inside a function, .B extern .R outside. Exception: functions are never automatic. .NH 2 Type Specifiers .PP The type-specifiers are .DS \fItype-specifier: struct-or-union-specifier typedef-name enum-specifier basic-type-specifier: basic-type basic-type basic-type-specifiers basic-type:\fB char short int long unsigned float double void\fR .DE .PP At most one of the words \fBlong\fR or \fBshort\fR may be specified in conjunction with \fBint\fR; the meaning is the same as if \fBint\fR were not mentioned. The word \fBlong\fR may be specified in conjunction with \fBfloat\fR; the meaning is the same as \fBdouble\fR. The word \fBunsigned\fR may be specified alone, or in conjunction with \fBint\fR or any of its short or long varieties, or with \fBchar\fR. .PP Otherwise, at most on type-specifier may be given in a declaration. In particular, adjectival use of \fBlong\fR, \fBshort\fR, or \fBunsigned\fR is not permitted with \fBtypedef\fR names. If the type-specifier is missing from a declaration, it is taken to be \fBint\fR. .PP Specifiers for structures, unions, and enumerations are discussed in ``Structure, Union, and Enumeration Declarations.'' Declarations with .B typedef .R names are discussed in ``Typedef.'' .NH 2 Declarators .PP The declarator-list appearing in a declaration is a comma-separated sequence of declarators, each of which may have an initializer. .DS \fIdeclarator-list: init-declarator init-declarator , declarator-list .DE .DS \fIinit-declarator: declarator initializer\v'0.5'\s-2opt\s0\v'-0.5'\fR .DE .PP Initializers are discussed in ``Initialization''. The specifiers in the declaration indicate the type and storage class of the objects to which the declarators refer. Declarators have the syntax: .DS \fIdeclarator: identifier ( declarator ) \(** declarator declarator () declarator [ constant-expression\v'0.5'\s-2opt\s0\v'-0.5' ]\fR .DE .PP The grouping is the same as in expressions. .NH 2 Meaning of Declarators .PP Each declarator is taken to be an assertion that when a construction of the same form as the declarator appears in an expression, it yields an object of the indicated type and storage class. .PP Each declarator contains exactly one identifier; it is this identifier that is declared. If an unadorned identifier appears as a declarator, then it has the type indicated by the specifier heading the declaration. .PP A declarator in parentheses is identical to the unadorned declarator, but the binding of complex declarators may be altered by parentheses. See the examples below. .PP Now imagine a declaration .DS \fBT D1\fR .DE .LP where .B T .R is a type-specifier (like \fBint\fR, etc.) and .B D1 .R is a declarator. Suppose this declaration makes the identifier have type ``\|.\|.\|.\| .B T .R ,'' where the ``\|.\|.\|.\|'' is empty if .B D1 .R is just a plain identifier (so that the type of .B x .R in \fB`int x''\fR is just \fBint\fR). Then if .B D1 .R has the form .DS \fB\(**D\fR .DE .LP the type of the contained identifier is ``\|.\|.\|.\| pointer to .B T .R \&.'' .PP If .B D1 .R has the form .DS \fBD\|(\|\|)\|\fR .DE .LP then the contained identifier has the type ``\|.\|.\|. function returning \fBT\fR.'' .LP If .B D1 .R has the form .DS \fBD\|[\|\fIconstant-expression\fB\|]\fR .DE .LP or .DS \fBD\|[\|]\|\fR .DE .LP then the contained identifier has type ``\|.\|.\|.\| array of \fBT\fR.'' In the first case, the constant expression is an expression whose value is determinable at compile time , whose type is .B int\fR, and whose value is positive. (Constant expressions are defined precisely in ``Constant Expressions.'') When several ``array of'' specifications are adjacent, a multidimensional array is created; the constant expressions which specify the bounds of the arrays may be missing only for the first member of the sequence. This elision is useful when the array is external and the actual definition, which allocates storage, is given elsewhere. The first constant expression may also be omitted when the declarator is followed by initialization. In this case the size is calculated from the number of initial elements supplied. .PP An array may be constructed from one of the basic types, from a pointer, from a structure or union, or from another array (to generate a multidimensional array). .PP Not all the possibilities allowed by the syntax above are actually permitted. The restrictions are as follows: functions may not return arrays or functions although they may return pointers; there are no arrays of functions although there may be arrays of pointers to functions. Likewise, a structure or union may not contain a function; but it may contain a pointer to a function. .PP As an example, the declaration .DS \fBint i, \(**ip, f(), \(**fip(), (\(**pfi)();\fR .DE .LP declares an integer \fBi\fR, a pointer .B ip .R to an integer, a function .B f .R returning an integer, a function .B fip .R returning a pointer to an integer, and a pointer .B pfi .R to a function which returns an integer. It is especially useful to compare the last two. The binding of .B \(**fip() .R is .B \(**(fip())\fR. .R The declaration suggests, and the same construction in an expression requires, the calling of a function .B fip\fR. .R Using indirection through the (pointer) result to yield an integer. In the declarator \fB(\(**pfi)()\fR, the extra parentheses are necessary, as they are also in an expression, to indicate that indirection through a pointer to a function yields a function, which is then called; it returns an integer. .PP As another example, .DS \fBfloat fa[17], \(**afp[17];\fR .DE .LP declares an array of .B float .R numbers and an array of pointers to .B float .R numbers. Finally, .DS \fBstatic int x3d[3][5][7];\fR .DE .LP declares a static 3-dimensional array of integers, with rank 3\(mu5\(mu7. In complete detail, .B x3d .R is an array of three items; each item is an array of five arrays; each of the latter arrays is an array of seven integers. Any of the expressions \fBx3d\fR, \fBx3d[i]\fR, \fBx3d[i][j]\fR, .B x3d[i][j][k] .R may reasonably appear in an expression. The first three have type ``array'' and the last has type .B int\fR. .R .NH 2 Structure and Union Declarations .PP A structure is an object consisting of a sequence of named members. Each member may have any type. A union is an object which may, at a given time, contain any one of several members. Structure and union specifiers have the same form. .DS \fIstruct-or-union-specifier: struct-or-union { struct-decl-list } struct-or-union identifier { struct-decl-list } struct-or-union identifier .DE .DS \fIstruct-or-union:\fB struct union\fR .DE .PP The struct-decl-list .ne 4 is a sequence of declarations for the members of the structure or union: .DS \fIstruct-decl-list: struct-declaration struct-declaration struct-decl-list .DE .DS \fIstruct-declaration: type-specifier struct-declarator-list ; .DE .DS \fIstruct-declarator-list: struct-declarator struct-declarator , struct-declarator-list\fR .DE .PP In the usual case, a struct-declarator is just a declarator for a member of a structure or union. A structure member may also consist of a specified number of bits. Such a member is also called a .I field ; .R its length, a non-negative constant expression, is set off from the field name by a colon. .DS \fIstruct-declarator: declarator declarator : constant-expression : constant-expression\fR .DE .PP Within a structure, the objects declared have addresses which increase as the declarations are read left to right. Each nonfield member of a structure begins on an addressing boundary appropriate to its type; therefore, there may be unnamed holes in a structure. Field members are packed into machine integers; they do not straddle words. A field which does not fit into the space remaining in a word is put into the next word. No field may be wider than a word. .PP Fields are assigned right to left on the PDP-11 and VAX-11, left to right on the 3B 20. .PP A struct-declarator with no declarator, only a colon and a width, indicates an unnamed field useful for padding to conform to externally-imposed layouts. As a special case, a field with a width of 0 specifies alignment of the next field at an implementation dependant boundary. .PP The language does not restrict the types of things that are declared as fields, but implementations are not required to support any but integer fields. Moreover, even .B int .R fields may be considered to be unsigned. On the PDP-11, fields are not signed and have only integer values; on the VAX-11, fields declared with .B int .R are treated as containing a sign. For these reasons, it is strongly recommended that fields be declared as .B unsigned\fR. .R In all implementations, there are no arrays of fields, and the address-of operator .B & .R may not be applied to them, so that there are no pointers to fields. .PP A union may be thought of as a structure all of whose members begin at offset 0 and whose size is sufficient to contain any of its members. At most, one of the members can be stored in a union at any time. .PP A structure or union specifier of the second form, that is, one of .DS \fBstruct \fIidentifier { struct-decl-list \fR} \fBunion \fIidentifier { struct-decl-list \fR} .DE .LP declares the identifier to be the .I structure tag .R (or union tag) of the structure specified by the list. A subsequent declaration may then use the third form of specifier, one of .DS \fBstruct \fIidentifier\fR \fBunion \fIidentifier\fR .DE .PP Structure tags allow definition of self-referential structures. Structure tags also permit the long part of the declaration to be given once and used several times. It is illegal to declare a structure or union which contains an instance of itself, but a structure or union may contain a pointer to an instance of itself. .PP The third form of a structure or union specifier may be used prior to a declaration which gives the complete specification of the structure or union in situations in which the size of the structure or union is unnecessary. The size is unnecessary in two situations: when a pointer to a structure or union is being declared and when a \fBtypedef\fR name is declared to be a synonym for a structure or union. This, for example, allows the declaration of a pair of structures which contain pointers to each other. .PP The names of members and tags do not conflict with each other or with ordinary variables. A particular name may not be used twice in the same structure, but the same name may be used in several different structures in the same scope. .PP A simple but important example of a structure declaration is the following binary tree structure: .DS \fBstruct tnode { char tword[20]; int count; struct tnode \(**left; struct tnode \(**right; };\fR .DE .LP which contains an array of 20 characters, an integer, and two pointers to similar structures. Once this declaration has been given, the declaration .DS \fBstruct tnode s, \(**sp;\fR .DE .LP declares .B s .R to be a structure of the given sort and .B sp .R to be a pointer to a structure of the given sort. With these declarations, the expression .DS \fBsp->count\fR .DE .LP refers to the .B count .R field of the structure to which .B sp .R points; .DS \fBs.left\fR .DE .LP refers to the left subtree pointer of the structure \fBs\fR; and .DS \fBs.right->tword[0]\fR .DE .LP refers to the first character of the .B tword .R member of the right subtree of .B s\fR. .R .PP .NH 2 Enumeration Declarations .PP Enumeration variables and constants have integral type. .DS \fIenum-specifier:\fB enum\fI { enum-list \fR}\fB enum \fIidentifier { enum-list \fR}\fB enum \fIidentifier .sp enum-list: enumerator enum-list , enumerator .sp enumerator: identifier identifier = constant-expression\fR .DE .PP The identifiers in an enum-list are declared as constants and may appear wherever constants are required. If no enumerators with .B = .R appear, then the values of the corresponding constants begin at 0 and increase by 1 as the declaration is read from left to right. An enumerator with .B = .R gives the associated identifier the value indicated; subsequent identifiers continue the progression from the assigned value. .PP The names of enumerators in the same scope must all be distinct from each other and from those of ordinary variables. .PP The role of the identifier in the enum-specifier is entirely analogous to that of the structure tag in a struct-specifier; it names a particular enumeration. For example, .DS L \fBenum color { chartreuse, burgundy, claret=20, winedark }; \&... enum color \(\(**\(**cp, col; \&... col = claret; cp = &col; \&... if (\(\(**\(**cp == burgundy) ...\fR .DE .LP makes .B color .R the enumeration-tag of a type describing various colors, and then declares .B cp .R as a pointer to an object of that type, and .B col .R as an object of that type. The possible values are drawn from the set {0,1,20,21}. .NH 2 Initialization .PP A declarator may specify an initial value for the identifier being declared. The initializer is preceded by .B = .R and consists of an expression or a list of values nested in braces. .DS \fIinitializer: = expression = { initializer-list } = { initializer-list , } .DE .DS \fIinitializer-list: expression initializer-list , initializer-list\fR { \fIinitializer-list \fR} { \fIinitializer-list\fR , } .DE .PP All the expressions in an initializer for a static or external variable must be constant expressions, which are described in ``CONSTANT EXPRESSIONS'', or expressions which reduce to the address of a previously declared variable, possibly offset by a constant expression. Automatic or register variables may be initialized by arbitrary expressions involving constants and previously declared variables and functions. .PP Static and external variables that are not initialized are guaranteed to start off as zero. Automatic and register variables that are not initialized are guaranteed to start off as garbage. .PP When an initializer applies to a .I scalar .R (a pointer or an object of arithmetic type), it consists of a single expression, perhaps in braces. The initial value of the object is taken from the expression; the same conversions as for assignment are performed. .PP When the declared variable is an .I aggregate .R (a structure or array), the initializer consists of a brace-enclosed, comma-separated list of initializers for the members of the aggregate written in increasing subscript or member order. If the aggregate contains subaggregates, this rule applies recursively to the members of the aggregate. If there are fewer initializers in the list than there are members of the aggregate, then the aggregate is padded with zeros. It is not permitted to initialize unions or automatic aggregates. .PP Braces may in some cases be omitted. If the initializer begins with a left brace, then the succeeding comma-separated list of initializers initializes the members of the aggregate; it is erroneous for there to be more initializers than members. If, however, the initializer does not begin with a left brace, then only enough elements from the list are taken to account for the members of the aggregate; any remaining members are left to initialize the next member of the aggregate of which the current aggregate is a part. .PP A final abbreviation allows a .B char .R array to be initialized by a string. In this case successive characters of the string initialize the members of the array. .PP For example, .DS \fBint x[] = { 1, 3, 5 };\fR .DE .LP declares and initializes .B x .R as a one-dimensional array which has three members, since no size was specified and there are three initializers. .DS \fBfloat y[4][3] = { { 1, 3, 5 }, { 2, 4, 6 }, { 3, 5, 7 }, };\fR .DE .LP is a completely-bracketed initialization: 1, 3, and 5 initialize the first row of the array \fBy[0]\fR, namely \fBy[0][0]\fR, \fBy[0][1]\fR, and .B y[0][2]\fR. .R Likewise, the next two lines initialize .B y[1] .R and .B y[2]\fR. .R The initializer ends early and therefore .B y[3] .R is initialized with 0. Precisely, the same effect could have been achieved by .DS \fBfloat y[4][3] = { 1, 3, 5, 2, 4, 6, 3, 5, 7 };\fR .DE .PP The initializer for .B y .R begins with a left brace but that for .B y[0] .R does not; therefore, three elements from the list are used. Likewise, the next three are taken successively for .B y[1] .R and .B y[2]\fR. .R Also, .DS \fBfloat y[4][3] = { { 1 }, { 2 }, { 3 }, { 4 } };\fR .DE .LP initializes the first column of .B y .R (regarded as a two-dimensional array) and leaves the rest 0. .PP Finally, .DS \fBchar msg[] = "Syntax error on line %s\en";\fR .DE .LP shows a character array whose members are initialized with a string. .NH 2 Type Names .PP In two contexts (to specify type conversions explicitly by means of a cast and as an argument of \fBsizeof\fR), it is desired to supply the name of a data type. This is accomplished using a ``type name'', which in essence is a declaration for an object of that type which omits the name of the object. .DS \fItype-name: type-specifier abstract-declarator .DE .DS \fIabstract-declarator: empty ( abstract-declarator ) \(** abstract-declarator abstract-declarator () abstract-declarator\fR\^ [ \fIconstant-expression\v'0.5'\s-2opt\s0\v'-0.5' \fR\^] .DE .PP To avoid ambiguity, in the construction .DS \fI( abstract-declarator \fR) .DE .LP the abstract-declarator is required to be nonempty. Under this restriction, it is possible to identify uniquely the location in the abstract-declarator where the identifier would appear if the construction were a declarator in a declaration. The named type is then the same as the type of the hypothetical identifier. For example, .DS \fBint int \(** int \(**[3] int (\(**)[3] int \(**() int (\(**)() int (\(**[3])()\fR .DE .LP name respectively the types ``integer,'' ``pointer to integer,'' ``array of three pointers to integers,'' ``pointer to an array of three integers,'' ``function returning pointer to integer,'' ``pointer to function returning an integer,'' and ``array of three pointers to functions returning an integer.'' .NH 2 Typedef .PP Declarations whose ``storage class'' is .B typedef .R do not define storage but instead define identifiers which can be used later as if they were type keywords naming fundamental or derived types. .DS \fItypedef-name:\fR \fIidentifier\fR .DE .PP Within the scope of a declaration involving \fBtypedef\fR, each identifier appearing as part of any declarator therein becomes syntactically equivalent to the type keyword naming the type associated with the identifier in the way described in ``Meaning of Declarators.'' For example, after .DS \fBtypedef int MILES, \(**KLICKSP; typedef struct { double re, im; } complex;\fR .DE .LP the constructions .DS \fBMILES distance; extern KLICKSP metricp; complex z, \(**zp;\fR .DE .LP are all legal declarations; the type of .B distance .R is \fBint\fR, that of .B metricp .R is ``pointer to \fBint\fR, '' and that of .B z .R is the specified structure. The .B zp .R is a pointer to such a structure. .PP The .B typedef .R does not introduce brand-new types, only synonyms for types which could be specified in another way. Thus in the example above .B distance .R is considered to have exactly the same type as any other .B int .R object. .NH 1 Statements .PP Except as indicated, statements are executed in sequence. .NH 2 Expression Statement .PP Most statements are expression statements, which have the form .DS \fIexpression \fR; .DE .PP Usually expression statements are assignments or function calls. .NH 2 Compound Statement or Block .PP So that several statements can be used where one is expected, the compound statement (also, and equivalently, called ``block'') is provided: .DS \fIcompound-statement: { declaration-list\v'0.5'\s-2opt\s0\v'-0.5' statement-list\v'0.5'\s-2opt\s0\v'-0.5' } .DE .DS \fIdeclaration-list: declaration declaration declaration-list .DE .DS \fIstatement-list: statement statement statement-list\fR .DE .PP If any of the identifiers in the declaration-list were previously declared, the outer declaration is pushed down for the duration of the block, after which it resumes its force. .PP Any initializations of .B auto .R or .B register .R variables are performed each time the block is entered at the top. It is currently possible (but a bad practice) to transfer into a block; in that case the initializations are not performed. Initializations of .B static .R variables are performed only once when the program begins execution. Inside a block, .B extern .R declarations do not reserve storage so initialization is not permitted. .NH 2 Conditional Statement .PP The two forms of the conditional statement are .DS \fBif\fR\^ ( \fIexpression\fR\^ ) \fIstatement\fR\^ \fBif\fR\^ ( \fIexpression\fR\^ ) \fIstatement \fBelse \fIstatement\fR\^ .DE .PP In both cases, the expression is evaluated; and if it is nonzero, the first substatement is executed. In the second case, the second substatement is executed if the expression is 0. The ``else'' ambiguity is resolved by connecting an .B else .R with the last encountered \fBelse\fR-less .B if\fR. .R .NH 2 While Statement .PP The .B while .R statement has the form .DS \fBwhile\fR\^ ( \fIexpression\fR\^ ) \fIstatement\fR\^ .DE .PP The substatement is executed repeatedly so long as the value of the expression remains nonzero. The test takes place before each execution of the statement. .NH 2 Do Statement .PP The .B do .R statement has the form .DS \fBdo \fIstatement \fBwhile\fR\^ ( \fIexpression \fR\^) ; .DE .PP The substatement is executed repeatedly until the value of the expression becomes 0. The test takes place after each execution of the statement. .NH 2 For Statement .PP The .B for .R statement has the form: .DS \fBfor\fI ( exp-1\v'0.5'\s-2opt\s0\v'-0.5' ; exp-2\v'0.5'\s-2opt\s0\v'-0.5' ; exp-3\v'0.5'\s-2opt\s0\v'-0.5' ) statement\fR .DE .PP .sp Except for the behavior of \fBcontinue\fR, this statement is equivalent to .DS \fIexp-1 \fR; \fBwhile\fR\^ ( \fIexp-2\ ) \fR\^ { \fIstatement exp-3 ;\fR } .DE .PP Thus the first expression specifies initialization for the loop; the second specifies a test, made before each iteration, such that the loop is exited when the expression becomes 0. The third expression often specifies an incrementing that is performed after each iteration. .PP Any or all of the expressions may be dropped. A missing .I exp-2 .R makes the implied .B while .R clause equivalent to \fBwhile(1)\fR; other missing expressions are simply dropped from the expansion above. .NH 2 Switch Statement .PP The .B switch .R statement causes control to be transferred to one of several statements depending on the value of an expression. It has the form .DS \fBswitch\fR\^ ( \fIexpression\fR\^ ) \fIstatement\fR\^ .DE .PP The usual arithmetic conversion is performed on the expression, but the result must be .B int\fR. .R The statement is typically compound. Any statement within the statement may be labeled with one or more case prefixes as follows: .DS \fBcase \fIconstant-expression \fR: .DE .LP where the constant expression must be .B int\fR. .R No two of the case constants in the same switch may have the same value. Constant expressions are precisely defined in ``CONSTANT EXPRESSIONS.'' .PP There may also be at most one statement prefix of the form .DS \fBdefault :\fR .DE .PP When the .B switch .R statement is executed, its expression is evaluated and compared with each case constant. If one of the case constants is equal to the value of the expression, control is passed to the statement following the matched case prefix. If no case constant matches the expression and if there is a \fBdefault\fR, prefix, control passes to the prefixed statement. If no case matches and if there is no \fBdefault\fR, then none of the statements in the switch is executed. .PP The prefixes .B case .R and .B default .R do not alter the flow of control, which continues unimpeded across such prefixes. To exit from a switch, see ``Break Statement.'' .PP Usually, the statement that is the subject of a switch is compound. Declarations may appear at the head of this statement, but initializations of automatic or register variables are ineffective. .NH 2 Break Statement .PP The statement .DS \fBbreak ;\fR .DE .LP causes termination of the smallest enclosing \fBwhile\fR, \fBdo\fR, \fBfor\fR, or \fBswitch\fR statement; control passes to the statement following the terminated statement. .NH 2 Continue Statement .PP The statement .DS \fBcontinue ;\fR .DE .LP causes control to pass to the loop-continuation portion of the smallest enclosing \fBwhile\fR, \fBdo\fR, or \fBfor\fR statement; that is to the end of the loop. More precisely, in each of the statements .DS .TS lw(2i) lw(2i) lw(2i). \fBwhile (\|.\|.\|.\|) { do { for (\|.\|.\|.\|) {\fR \fIstatement ; statement ; statement ;\fR \fBcontin: ; contin: ; contin: ; } } while (...); }\fR .TE .DE .LP a .B continue .R is equivalent to .B goto\ contin\fR. .R (Following the .B contin: .R is a null statement, see ``Null Statement''.) .NH 2 Return Statement .PP A function returns to its caller by means of the .B return .R statement which has one of the forms .DS \fBreturn ; return \fIexpression \fR; .DE .PP In the first case, the returned value is undefined. In the second case, the value of the expression is returned to the caller of the function. If required, the expression is converted, as if by assignment, to the type of function in which it appears. Flowing off the end of a function is equivalent to a return with no returned value. The expression may be parenthesized. .NH 2 Goto Statement .PP Control may be transferred unconditionally by means of the statement .DS \fBgoto \fIidentifier \fR; .DE .PP The identifier must be a label (see ``Labeled Statement'') located in the current function. .NH 2 Labeled Statement .PP Any statement may be preceded by label prefixes of the form .DS \fIidentifier \fR: .DE .LP which serve to declare the identifier as a label. The only use of a label is as a target of a .B goto\fR. .R The scope of a label is the current function, excluding any subblocks in which the same identifier has been redeclared. See ``SCOPE RULES.'' .NH 2 Null Statement .PP The null statement has the form .DS \fB;\fR .DE .PP A null statement is useful to carry a label just before the .B } .R of a compound statement or to supply a null body to a looping statement such as .B while\fR. .R .NH 1 External Definitions .PP A C program consists of a sequence of external definitions. An external definition declares an identifier to have storage class .B extern .R (by default) or perhaps \fBstatic\fR, and a specified type. The type-specifier (see ``Type Specifiers'' in ``DECLARATIONS'') may also be empty, in which case the type is taken to be .B int\fR. .R The scope of external definitions persists to the end of the file in which they are declared just as the effect of declarations persists to the end of a block. The syntax of external definitions is the same as that of all declarations except that only at this level may the code for functions be given. .NH 2 External Function Definitions .PP Function definitions have the form .DS \fIfunction-definition: decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5' function-declarator function-body\fR .DE .PP The only sc-specifiers allowed among the decl-specifiers are .B extern .R or \fBstatic\fR; see ``Scope of Externals'' in ``SCOPE RULES'' for the distinction between them. A function declarator is similar to a declarator for a ``function returning .\|.\|.\|'' except that it lists the formal parameters of the function being defined. .DS \fIfunction-declarator: declarator ( parameter-list\v'0.5'\s-2opt\s0\v'-0.5' ) .DE .DS \fIparameter-list: identifier identifier , parameter-list\fR .DE .PP The function-body has the form .DS \fIfunction-body: declaration-list\v'0.5'\s-2opt\s0\v'-0.5' compound-statement\fR .DE .PP The identifiers in the parameter list, and only those identifiers, may be declared in the declaration list. Any identifiers whose type is not given are taken to be .B int\fR. .R The only storage class which may be specified is \fBregister\fR; if it is specified, the corresponding actual parameter will be copied, if possible, into a register at the outset of the function. .PP A simple example of a complete function definition is .DS \fBint max(a, b, c) int a, b, c; { int m; .sp m = (a > b) ? a : b; return((m > c) ? m : c); }\fR .DE .PP Here .B int .R is the type-specifier; .B max(a,\ b,\ c) .R is the function-declarator; .B int\ a,\ b,\ c; .R is the declaration-list for the formal parameters; \fB{\ ...\ }\fR is the block giving the code for the statement. .PP The C program converts all .B float .R actual parameters to \fBdouble\fR, so formal parameters declared .B float .R have their declaration adjusted to read .B double\fR. .R All \fBchar\fR and \fBshort\fR formal parameter declarations are similarly adjusted to read \fBint\fR. Also, since a reference to an array in any context (in particular as an actual parameter) is taken to mean a pointer to the first element of the array, declarations of formal parameters declared ``array of .\|.\|.\|'' are adjusted to read ``pointer to .\|.\|.\|.'' .NH 2 External Data Definitions .PP An external data definition has the form .DS \fIdata-definition: declaration\fR .DE .PP The storage class of such data may be .B extern .R (which is the default) or .B static .R but not .B auto .R or \fBregister\fR. .NH 1 Scope Rules .PP A C program need not all be compiled at the same time. The source text of the program may be kept in several files, and precompiled routines may be loaded from libraries. Communication among the functions of a program may be carried out both through explicit calls and through manipulation of external data. .PP Therefore, there are two kinds of scopes to consider: first, what may be called the .UL lexical .UL scope of an identifier, which is essentially the region of a program during which it may be used without drawing ``undefined identifier'' diagnostics; and second, the scope associated with external identifiers, which is characterized by the rule that references to the same external identifier are references to the same object. .NH 2 Lexical Scope .PP The lexical scope of identifiers declared in external definitions persists from the definition through the end of the source file in which they appear. The lexical scope of identifiers which are formal parameters persists through the function with which they are associated. The lexical scope of identifiers declared at the head of a block persists until the end of the block. The lexical scope of labels is the whole of the function in which they appear. .PP In all cases, however, if an identifier is explicitly declared at the head of a block, including the block constituting a function, any declaration of that identifier outside the block is suspended until the end of the block. .PP Remember also (see ``Structure, Union, and Enumeration Declarations'' in ``DECLARATIONS'') that tags, identifiers associated with ordinary variables, and identities associated with structure and union members form three disjoint classes which do not conflict. Members and tags follow the same scope rules as other identifiers. The \fBenum\fR constants are in the same class as ordinary variables and follow the same scope rules. The .B typedef .R names are in the same class as ordinary identifiers. They may be redeclared in inner blocks, but an explicit type must be given in the inner declaration: .DS \fBtypedef float distance; \&... { auto int distance; ...\fR } .DE .PP The .B int .R must be present in the second declaration, or it would be taken to be a declaration with no declarators and type .B distance\fR. .R .NH 2 Scope of Externals .PP If a function refers to an identifier declared to be \fBextern\fR, then somewhere among the files or libraries constituting the complete program there must be at least one external definition for the identifier. All functions in a given program which refer to the same external identifier refer to the same object, so care must be taken that the type and size specified in the definition are compatible with those specified by each function which references the data. .PP It is illegal to explicitly initialize any external identifier more than once in the set of files and libraries comprising a multi-file program. It is legal to have more than one data definition for any external non-function identifier; explicit use of \fBextern\fR does not change the meaning of an external declaration. .PP In restricted environments, the use of the \fBextern\fR storage class takes on an additional meaning. In these environments, the explicit appearance of the \fBextern\fR keyword in external data declarations of identities without initialization indicates that the storage for the identifiers is allocated elsewhere, either in this file or another file. It is required that there be exactly one definition of each external identifier (without \fBextern\fR) in the set of files and libraries comprising a mult-file program. .PP Identifiers declared .B static .R at the top level in external definitions are not visible in other files. Functions may be declared .B static\fR. .R .nr Hu 1 .NH 1 Compiler Control Lines .PP The C compiler contains a preprocessor capable of macro substitution, conditional compilation, and inclusion of named files. Lines beginning with .B # .R communicate with this preprocessor. There may be any number of blanks and horizontal tabs between the \fB#\fR and the directive. These lines have syntax independent of the rest of the language; they may appear anywhere and have effect which lasts (independent of scope) until the end of the source program file. .nr Hu 1 .NH 2 Token Replacement .PP A compiler-control line of the form .DS \fB#define \fIidentifier token-string\v'0.5'\s-2opt\s0\v'-0.5'\fR .DE .LP causes the preprocessor to replace subsequent instances of the identifier with the given string of tokens. Semicolons in or at the end of the token-string are part of that string. A line of the form .DS \fB#define \fIidentifier(identifier, ... )token-string\v'0.5'\s-2opt\s0\v'-0.5'\fR .DE .LP where there is no space between the first identifier and the \fB(\fR, is a macro definition with arguments. There may be zero or more formal parameters. Subsequent instances of the first identifier followed by a \fB(\fR, a sequence of tokens delimited by commas, and a \fB)\fR are replaced by the token string in the definition. Each occurrence of an identifier mentioned in the formal parameter list of the definition is replaced by the corresponding token string from the call. The actual arguments in the call are token strings separated by commas; however, commas in quoted strings or protected by parentheses do not separate arguments. The number of formal and actual parameters must be the same. Strings and character constants in the token-string are scanned for formal parameters, but strings and character constants in the rest of the program are not scanned for defined identifiers to replacement. .PP In both forms the replacement string is rescanned for more defined identifiers. In both forms a long definition may be continued on another line by writing .B \e .R at the end of the line to be continued. .PP This facility is most valuable for definition of ``manifest constants,'' as in .DS \fB#define TABSIZE 100 .sp int table\|[\|TABSIZE\|]\|;\fR .DE .PP A control line of the form .DS \fB#undef \fIidentifier\fR .DE .LP causes the identifier's preprocessor definition (if any) to be forgotten. .PP If a \fB#define\fRd identifier is the subject of a subsequent \fB#define\fR with no intervening \fB#undef\fR, then the two token-strings are compared textually. If the two token-strings are not identical (all white space is considered as equivalent), then the identifier is considered to be redefined. .nr Hu 1 .NH 2 File Inclusion .PP A compiler control line of the form .DS \fB#include\fI "filename\|\fR" .DE .LP causes the replacement of that line by the entire contents of the file .I filename\fR. .R The named file is searched for first in the directory of the file containing the \fB#include\fR, and then in a sequence of specified or standard places. Alternatively, a control line of the form .DS \fB#include\fI .DE .LP searches only the specified or standard places and not the directory of the \fB#include\fR. (How the places are specified is not part of the language.) .PP \fB#include\fRs may be nested. .nr Hu 1 .NH 2 Conditional Compilation .PP A compiler control line of the form .DS \fB#if \fIrestricted-constant-expression\fR .DE .LP checks whether the restricted-constant expression evaluates to nonzero. (Constant expressions are discussed in ``CONSTANT EXPRESSIONS''; the following additional restrictions apply here: the constant expression may not contain .B sizeof .R casts, or an enumeration constant.) .PP A restricted constant expression may also contain the additional unary expression .PP \fBdefined \fIidentifier\fR .LP or .PP \fBdefined( \fIidentifier )\fR .LP which evaluates to one if the identifier is currently defined in the preprocessor and zero if it is not. .PP All currently defined identifiers in restricted-constant-expressions are replaced by their token-strings (except those identifiers modified by \fBdefined\fR) just as in normal text. The restricted constant expression will be evaluated only after all expressions have finished. During this evaluation, all undefined (to the procedure) identifiers evaluate to zero. .PP A control line of the form .DS \fB#ifdef \fIidentifier\fR .DE .LP checks whether the identifier is currently defined in the preprocessor; i.e., whether it has been the subject of a .B #define .R control line. It is equivalent to \fB#ifdef(\fIidentifier\fB)\fR. A control line of the form .DS \fB#ifndef \fIidentifier\fR .DE .LP checks whether the identifier is currently undefined in the preprocessor. It is equivalent to .DS \fB#if !\|defined(\fIidentifier\fB)\fR. .DE .PP All three forms are followed by an arbitrary number of lines, possibly containing a control line .DS \fB#else\fR .DE .LP and then by a control line .DS \fB#endif\fR .DE .PP If the checked condition is true, then any lines between .B #else .R and .B #endif .R are ignored. If the checked condition is false, then any lines between the test and a .B #else .R or, lacking a \fB#else\fR, the .B #endif .R are ignored. .PP These constructions may be nested. .nr Hu 1 .NH 2 Line Control .PP For the benefit of other preprocessors which generate C programs, a line of the form .DS \fB#line \fIconstant "filename\fR" .DE .LP causes the compiler to believe, for purposes of error diagnostics, that the line number of the next source line is given by the constant and the current input file is named by "\fIfilename\fR". If "\fIfilename\fR" is absent, the remembered file name does not change. .nr Hu 1 .NH 1 Implicit Declarations .PP It is not always necessary to specify both the storage class and the type of identifiers in a declaration. The storage class is supplied by the context in external definitions and in declarations of formal parameters and structure members. In a declaration inside a function, if a storage class but no type is given, the identifier is assumed to be \fBint\fR; if a type but no storage class is indicated, the identifier is assumed to be .B auto\fR. .R An exception to the latter rule is made for functions because .B auto .R functions do not exist. If the type of an identifier is ``function returning .\|.\|.\|,'' it is implicitly declared to be .B extern\fR. .R .PP In an expression, an identifier followed by .B ( .R and not already declared is contextually declared to be ``function returning .B int\fR.'' .nr Hu 1 .NH 1 Types Revisited .PP This part summarizes the operations which can be performed on objects of certain types. .nr Hu 1 .NH 2 Structures and Unions .PP Structures and unions may be assigned, passed as arguments to functions, and returned by functions. Other plausible operators, such as equality comparison and structure casts, are not implemented. .PP In a reference to a structure or union member, the name on the right of the \fB->\fR or the \fB.\fR must specify a member of the aggregate named or pointed to by the expression on the left. In general, a member of a union may not be inspected unless the value of the union has been assigned using that same member. However, one special guarantee is made by the language in order to simplify the use of unions: if a union contains several structures that share a common initial sequence and if the union currently contains one of these structures, it is permitted to inspect the common initial part of any of the contained structures. For example, the following is a legal fragment: .DS \fBunion { struct { int type; } n; struct { int type; int intnode; } ni; struct { int type; float floatnode; } nf; } u; \&... u.nf.type = FLOAT; u.nf.floatnode = 3.14; \&... if (u.n.type == FLOAT) ... sin(u.nf.floatnode) ...\fR .DE .PP .nr Hu 1 .NH 2 Functions .PP There are only two things that can be done with a function \fBm\fR, call it or take its address. If the name of a function appears in an expression not in the function-name position of a call, a pointer to the function is generated. Thus, to pass one function to another, one might say .DS \fBint f(); \&... g(f);\fR .DE .PP .ne 8 Then the definition of .B g .R might read .DS \fBg(funcp) int (\(**funcp)(); { ... (\(**funcp)(); ... }\fR .DE .PP Notice that .B f .R must be declared explicitly in the calling routine since its appearance in .B g(f) .R was not followed by .B (. .R .nr Hu 1 .NH 2 Arrays, Pointers, and Subscripting .PP Every time an identifier of array type appears in an expression, it is converted into a pointer to the first member of the array. Because of this conversion, arrays are not lvalues. By definition, the subscript operator .B [] .R is interpreted in such a way that .B E1[E2] .R is identical to .B \(**((E1)\(plE2))\fR. .R Because of the conversion rules which apply to \fB\(pl\fR, if .B E1 .R is an array and .B E2 .R an integer, then .B E1[E2] .R refers to the .B E2-th .R member of .B E1\fR. .R Therefore, despite its asymmetric appearance, subscripting is a commutative operation. .PP A consistent rule is followed in the case of multidimensional arrays. If .B E .R is an \fIn\fR-dimensional array of rank i\(muj\(mu...\(muk, then .B E .R appearing in an expression is converted to a pointer to an (n-1)-dimensional array with rank j\(mu...\(muk. If the .B \(** .R operator, either explicitly or implicitly as a result of subscripting, is applied to this pointer, the result is the pointed-to (n-1)-dimensional array, which itself is immediately converted into a pointer. .PP For example, consider .DS \fBint x[3][5];\fR .DE .PP Here .B x .R is a 3\(mu5 array of integers. When .B x .R appears in an expression, it is converted to a pointer to (the first of three) 5-membered arrays of integers. In the expression \fBx[i]\fR, which is equivalent to \fB\(**(x\(pli)\fR, .B x .R is first converted to a pointer as described; then .B i .R is converted to the type of \fBx\fR, which involves multiplying .B i .R by the length the object to which the pointer points, namely 5-integer objects. The results are added and indirection applied to yield an array (of five integers) which in turn is converted to a pointer to the first of the integers. If there is another subscript, the same argument applies again; this time the result is an integer. .PP Arrays in C are stored row-wise (last subscript varies fastest) and the first subscript in the declaration helps determine the amount of storage consumed by an array. Arrays play no other part in subscript calculations. .nr Hu 1 .NH 2 Explicit Pointer Conversions .PP Certain conversions involving pointers are permitted but have implementation-dependent aspects. They are all specified by means of an explicit type-conversion operator, see ``Unary Operators'' under``EXPRESSIONS'' and ``Type Names''under ``DECLARATIONS.'' .PP A pointer may be converted to any of the integral types large enough to hold it. Whether an .B int .R or .B long .R is required is machine dependent. The mapping function is also machine dependent but is intended to be unsurprising to those who know the addressing structure of the machine. Details for some particular machines are given below. .PP An object of integral type may be explicitly converted to a pointer. The mapping always carries an integer converted from a pointer back to the same pointer but is otherwise machine dependent. .PP A pointer to one type may be converted to a pointer to another type. The resulting pointer may cause addressing exceptions upon use if the subject pointer does not refer to an object suitably aligned in storage. It is guaranteed that a pointer to an object of a given size may be converted to a pointer to an object of a smaller size and back again without change. .PP For example, a storage-allocation routine might accept a size (in bytes) of an object to allocate, and return a .B char .R pointer; it might be used in this way. .DS \fBextern char \(**malloc(); double \(**dp; .sp dp = (double \(**) malloc(sizeof(double)); \(**dp = 22.0 / 7.0;\fR .DE .PP The .B alloc .R must ensure (in a machine-dependent way) that its return value is suitable for conversion to a pointer to \fBdouble\fR; then the .I use .R of the function is portable. .PP The pointer representation on the PDP-11 corresponds to a 16-bit integer and measures bytes. The .B char\fR's have no alignment requirements; everything else must have an even address. .PP On the VAX-11, pointers are 32 bits long and measure bytes. Elementary objects are aligned on a boundary equal to their length, except that .B double .R quantities need be aligned only on even 4-byte boundaries. Aggregates are aligned on the strictest boundary required by any of their constituents. .PP The 3B 20 computer has 24-bit pointers placed into 32-bit quantities. Most objects are aligned on 4-byte boundaries. \fBShort\fRs are aligned in all cases on 2-byte boundaries. Arrays of characters, all structures, \fBint\fR\^s, \fBlong\fR\^s, \fBfloat\fR\^s, and \fBdouble\fR\^s are aligned on 4-byte boundries; but structure members may be packed tighter. .nr Hu 1 .NH 2 CONSTANT EXPRESSIONS .PP In several places C requires expressions that evaluate to a constant: after \fBcase\fR, as array bounds, and in initializers. In the first two cases, the expression can involve only integer constants, character constants, casts to integral types, enumeration constants, and .B sizeof .R expressions, possibly connected by the binary operators .ne 10 .DS \(pl \(mi \(** / % & | ^ << >> == != < > <= >= && || .DE .LP or by the unary operators .DS \(mi \s+2~\s0 .DE .LP or by the ternary operator .DS ?: .DE .PP Parentheses can be used for grouping but not for function calls. .PP More latitude is permitted for initializers; besides constant expressions as discussed above, one can also use floating constants and arbitrary casts and can also apply the unary .B & .R operator to external or static objects and to external or static arrays subscripted with a constant expression. The unary .B & .R can also be applied implicitly by appearance of unsubscripted arrays and functions. The basic rule is that initializers must evaluate either to a constant or to the address of a previously declared external or static object plus or minus a constant. .nr Hu 1 .NH 1 Portability Considerations .PP Certain parts of C are inherently machine dependent. The following list of potential trouble spots is not meant to be all-inclusive but to point out the main ones. .PP Purely hardware issues like word size and the properties of floating point arithmetic and integer division have proven in practice to be not much of a problem. Other facets of the hardware are reflected in differing implementations. Some of these, particularly sign extension (converting a negative character into a negative integer) and the order in which bytes are placed in a word, are nuisances that must be carefully watched. Most of the others are only minor problems. .PP The number of .B register .R variables that can actually be placed in registers varies from machine to machine as does the set of valid types. Nonetheless, the compilers all do things properly for their own machine; excess or invalid .B register .R declarations are ignored. .PP Some difficulties arise only when dubious coding practices are used. It is exceedingly unwise to write programs that depend on any of these properties. .PP The order of evaluation of function arguments is not specified by the language. The order in which side effects take place is also unspecified. .PP Since character constants are really objects of type \fBint\fR, multicharacter character constants may be permitted. The specific implementation is very machine dependent because the order in which characters are assigned to a word varies from one machine to another. .PP Fields are assigned to words and characters to integers right to left on some machines and left to right on other machines. These differences are invisible to isolated programs that do not indulge in type punning (e.g., by converting an .B int .R pointer to a .B char .R pointer and inspecting the pointed-to storage) but must be accounted for when conforming to externally-imposed storage layouts. .nr Hu 1 .NH 1 Syntax Summary .PP This summary of C syntax is intended more for aiding comprehension than as an exact statement of the language. .nr Hu 1 .ne 18 .NH 2 Expressions .PP The basic expressions are: .tr ~~ .DS \fIexpression: primary \(** expression\fR &\fIlvalue \(mi expression ! expression \s+2~\s0 expression \(pl\(pl lvalue \(mi\(milvalue lvalue \(pl\(pl lvalue \(mi\(mi \fBsizeof\fI expression \fBsizeof (\fItype-name\fB)\fI ( type-name ) expression expression binop expression expression ? expression : expression lvalue asgnop expression expression , expression .DE .DS \fIprimary: identifier constant string ( expression ) primary ( expression-list\v'0.5'\s-2opt\s0\v'-0.5' ) primary [ expression ] primary . identifier primary \(mi identifier .DE .DS \fIlvalue: identifier primary [ expression ] lvalue . identifier primary \(mi identifier \(** expression ( lvalue )\fR .DE .PP .PP The primary-expression operators .DS () [] . \(mi .tr ~~ .DE .LP have highest priority and group left to right. The unary operators .DS \(** & \(mi ! \s+2~\s0 \(pl\(pl \(mi\(mi \fBsizeof\fI ( type-name \fR) .DE .LP have priority below the primary operators but higher than any binary operator and group right to left. Binary operators group left to right; they have priority decreasing as indicated below. .DS \fIbinop:\fR \(** / % \(pl \(mi >> << < > <= >= == != & ^ | && || .DE The conditional operator groups right to left. .PP Assignment operators all have the same priority and all group right to left. .DS \fIasgnop:\fR = \(pl= \(mi= \(**= /= %= >>= <<= &= ^= |= .DE .PP The comma operator has the lowest priority and groups left to right. .nr Hu 1 .NH 2 Declarations .PP .DS \fIdeclaration: decl-specifiers init-declarator-list\v'0.5'\s-2opt\s0\v'-0.5' ; .DE .DS \fIdecl-specifiers: type-specifier decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5' sc-specifier decl-specifiers\v'0.5'\s-2opt\s0\v'-0.5' .DE .DS \fIsc-specifier:\fB auto static extern register typedef .DE .DS \fItype-specifier: struct-or-union-specifier typedef-name enum-specifier basic-type-specifier: basic-type basic-type basic-type-specifiers basic-type:\fB char short int long unsigned float double void\fR .DE .DS \fIenum-specifier:\fB enum\fI { enum-list }\fB enum \fIidentifier { enum-list }\fB enum \fIidentifier .DE .DS \fIenum-list: enumerator enum-list , enumerator .DE .DS \fIenumerator: identifier identifier = constant-expression .DE .DS \fIinit-declarator-list: init-declarator init-declarator , init-declarator-list .DE .DS \fIinit-declarator: declarator initializer\v'0.5'\s-2opt\s0\v'-0.5' .DE .DS \fIdeclarator: identifier ( declarator ) \(** declarator declarator () declarator [ constant-expression\v'0.5'\s-2opt\s0\v'-0.5' ] .DE .DS \fIstruct-or-union-specifier:\fB struct\fI { struct-decl-list }\fB struct \fIidentifier { struct-decl-list }\fB struct \fIidentifier\fB union { \fIstruct-decl-list }\fB union \fIidentifier { struct-decl-list }\fB union \fIidentifier .DE .DS \fIstruct-decl-list: struct-declaration struct-declaration struct-decl-list .DE .DS \fIstruct-declaration: type-specifier struct-declarator-list ; .DE .DS \fIstruct-declarator-list: struct-declarator struct-declarator , struct-declarator-list .DE .DS \fIstruct-declarator: declarator declarator : constant-expression : constant-expression .DE .DS \fIinitializer: = expression = { initializer-list } = { initializer-list , } .DE .DS \fIinitializer-list: expression initializer-list , initializer-list { initializer-list } { initializer-list , } .DE .DS \fItype-name: type-specifier abstract-declarator .DE .DS \fIabstract-declarator: empty ( abstract-declarator ) \(** abstract-declarator abstract-declarator () abstract-declarator [ constant-expression\v'0.5'\s-2opt\s0\v'-0.5' ] .DE .DS \fItypedef-name: identifier .nr Hu 1 .DE .NH 2 Statements .PP .DS \fIcompound-statement: { declaration-list\v'0.5'\s-2opt\s0\v'-0.5' statement-list\v'0.5'\s-2opt\s0\v'-0.5' } .DE .DS \fIdeclaration-list: declaration declaration declaration-list .DE .DS \fIstatement-list: statement statement statement-list .DE .DS \fIstatement: compound-statement expression ; \fBif\fI ( expression ) statement \fBif\fI ( expression ) statement \fBelse\fI statement \fBwhile\fI ( expression ) statement \fBdo\fI statement \fBwhile\fI ( expression ) ; \fBfor\fI (exp\v'0.3'\s-2opt\s0\v'-0.3'\fB;\fIexp\v'0.3'\s-2opt\s0\v'-0.3'\fB;\fIexp\v'0.3'\s-2opt\s0\v'-0.3'\fI) statement \fBswitch\fI ( expression ) statement \fBcase\fI constant-expression : statement \fBdefault\fI : statement \fBbreak ; continue ; return ; return\fI expression ; \fBgoto\fI identifier ; identifier : statement ;\fR .nr Hu 1 .DE .NH 2 External definitions .PP .DS \fIprogram: external-definition external-definition program .DE .DS \fIexternal-definition: function-definition data-definition .DE .DS \fIfunction-definition: decl-specifier\v'0.5'\s-2opt\s0\v'-0.5' function-declarator function-body .DE .DS \fIfunction-declarator: declarator ( parameter-list\v'0.5'\s-2opt\s0\v'-0.5' ) .DE .DS \fIparameter-list: identifier identifier , parameter-list .DE .DS \fIfunction-body: declaration-list\v'0.5'\s-2opt\s0\v'-0.5' compound-statement .DE .DS \fIdata-definition: \fBextern\fI declaration\fB ; \fBstatic\fI declaration\fB ; .DE .NH Preprocessor .DS \fB#define\fI identifier token-string\v'0.3'\s-2opt\s0\v'-0.3'\fB \fB#define\fI identifier\fB(\fIidentifier\fB,...)\fItoken-string\v'0.5'\s-2opt\s0\v'-0.5'\fB \fB#undef\fI identifier\fB \fB#include "\fIfilename\|\fB" #include <\fIfilename\|\fB> \fB#if\fI restricted-constant-expression\fB \fB#ifdef\fI identifier\fB \fB#ifndef\fI identifier\fB \fB#else \fB#endif \fB#line\fI constant \fB"\fIfilename\|\fB" .sp 5 .DE .TC 2 1 3 0 erator to external or static objects and to external or static arrays subscripted with a constant expression. The unary .B & .R can also be applied implicitly by appearance ofdoc/ps1/00.contents 444 3 12 7722 3660732521 7313 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)00.contents 5.2 (Berkeley) 5/10/86 .\" .OH '''PS1 Contents' .EH 'PS1 Contents''' .TL UNIX Programmer's Supplementary Documents, Volume 1 (PS1) .sp \s-24.3 Berkeley Software Distribution, Virtual \s-2VAX\s+2\-11 Version\s+2 .sp \fRApril, 1986\fR .PP These two volumes contain documents which supplement the manual pages in .I The .UX Programmer's Reference Manual .R for the Virtual \s-2VAX\s0-11 version of the system as distributed by U.C. Berkeley. .SH Languages in common use (other languages in Programmer's Supplement, volume 2) .IP .tl 'The C Programming Language \- Reference Manual''PS1:1' .QP Official statement of the syntax of C. Should be supplemented by ``The C Programming Language,'' B.W. Kernighan and D.M. Ritchie, Prentice-Hall, 1978, that contains a tutorial introduction and many examples. .IP .tl 'A Portable Fortran 77 Compiler''PS1:2' .QP A revised version of the document which originally appeared in Volume 2b of the Bell Labs documentation; this version reflects the ongoing work at Berkeley. .IP .tl 'Introduction to the f77 I/O Library''PS1:3' .QP A description of the revised input/output library for Fortran 77, reflecting work carried out at Berkeley. .IP .tl 'Berkeley Pascal User\'s Manual''PS1:4' .QP An implementation of this language popular for learning to program. .IP .tl 'Berkeley Vax/UNIX Assembler Reference Manual''PS1:5' .QP The usage and syntax of the assembler; useful mostly by compiler writers. .IP .SH General Reference .IP .tl 'Berkeley Software Architecture Manual (4.3 Edition)''PS1:6' .QP A concise and terse description of the system call interface provided in Berkeley Unix, as revised for 4.3BSD. This will never be a best seller. .IP .tl 'An Introductory 4.3BSD Interprocess Communication Tutorial''PS1:7' .QP How to write programs that use the Interprocess Communication Facilities of 4.3BSD. .IP .tl 'An Advanced 4.3BSD Interprocess Communication Tutorial''PS1:8' .QP The reference document (with some examples) for the Interprocess Communication Facilities of 4.3BSD. .SH Programming Tools .IP .tl 'Lint, A C Program Checker''PS1:9' .QP Checks C programs for syntax errors, type violations, portability problems, and a variety of probable errors. .IP .tl 'A Tutorial Introduction to ADB''PS1:10' .QP How to debug programs using the \fIadb\fP debugger. For hints on the use of ADB for debugging the .UX kernel, see ``Using ADB to Debug the Kernel'', SMM:3 .IP .tl 'Debugging with dbx''PS1:11' .QP How to debug programs without having to know much about machine language. .IP .tl 'Make \- A Program for Maintaining Computer Programs''PS1:12' .QP Indispensable tool for making sure large programs are properly compiled with minimal effort. .IP .tl 'An Introduction to the Revision Control System''PS1:13' .QP RCS is a user-contributed tool for working together with other people without stepping on each other's toes. An alternative to \fIsccs\fR for controlling software changes. .IP .tl 'An Introduction to the Source Code Control System''PS1:14' .QP A useful introductory article for those users with installations licensed for SCCS. .IP .tl 'YACC: Yet Another Compiler-Compiler''PS1:15' .QP Converts a BNF specification of a language and semantic actions written in C into a compiler for that language. .IP .tl 'LEX \- A Lexical Analyzer Generator''PS1:16' .QP Creates a recognizer for a set of regular expressions: each regular expression can be followed by arbitrary C code to be executed upon finding the regular expression. .IP .tl 'The M4 Macro Processor''PS1:17' .QP M4 is a macro processor useful in its own right and as a front-end for C, Ratfor, and Cobol. .SH Programming Libraries .IP .tl 'Screen Updating and Cursor Movement Optimization''PS1:18' .QP Describes the \fIcurses\fP package, an aid for writing screen-oriented, terminal-independent programs. != & ^ doc/ps1/Title 444 3 12 4366 3662147112 6320 .\" Copyright (c) 1986 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)Title 6.1 (Berkeley) 5/14/86 .\" .ps 18 .vs 22 .sp 2.75i .ft B .ce 3 UNIX Programmer's Supplementary Documents Volume 1 (PS1) .ps 14 .vs 16 .sp |4i .ce 2 4.3 Berkeley Software Distribution Virtual VAX\-11 Version .sp |5.75i .ft R .pt 12 .vs 16 .ce April, 1986 .sp |8.2i .ce 5 Computer Systems Research Group Computer Science Division Department of Electrical Engineering and Computer Science University of California Berkeley, California 94720 .bp .ll 5.3i .in 1.25i .hy 0 .ps 10 .vs 12p .sp |2.5i Copyright 1979, 1980, 1983, 1986 Regents of the University of California. Permission to copy these documents or any portion thereof as necessary for licensed use of the software is granted to licensees of this software, provided this copyright notice and statement of permission are included. .sp 2 Documents PS1:1, 9, 10, 12, 15, 16, and 17 are copyright 1979, AT&T Bell Laboratories, Incorporated. Documents PS1:2, and 5 are modifications of earlier documents that are copyrighted 1979 by AT&T Bell Laboratories, Incorporated. Holders of \x'-1p'UNIX\v'-4p'\s-3TM\s0\v'4p'/32V, System III, or System V software licenses are permitted to copy these documents, or any portion of them, as necessary for licensed use of the software, provided this copyright notice and statement of permission are included. .sp 2 Document PS1:13 is part of the user contributed software and is copyright 1983 by Walter F. Tichy. Permission to copy the RCS documentation or any portion thereof as necessary for licensed use of the software is granted to licensees of this software, provided this copyright notice is included. .sp 2 This manual reflects system enhancements made at Berkeley and sponsored in part by the Defense Advanced Research Projects Agency (DoD), Arpa Order No. 4871 monitored by the Naval Electronics Systems Command under contract No. N00039-84-C-0089. The views and conclusions contained in these documents are those of the authors and should not be interpreted as representing official policies, either expressed or implied, of the Defense Research Projects Agency or of the US Government. er''PS1:9' .QP Checks C programs for syntax errors, type violations, portability problems, and a variety of probable errors. .IP .tl 'A Tutorial Introduction to ADB''PS1:10' .QP How to debug programs using the \fIadb\fP debugger. For hints on the use of ADB for debdoc/ps2/ 755 3 12 0 4017005717 5220 doc/ps2/02.summary/ 755 3 12 0 3660732031 7134 doc/ps2/02.summary/Makefile 444 3 12 1244 3660571372 10671 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 4/25/86 # SRCS= vhel.mac vhel0 vhel1 vhel2 vhel3 \ vhel4 vhel5 vhel6 MACROS= -msU PRINTER=Pdp EQN= deqn -${PRINTER} TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${EQN} ${SRCS} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done ps 10 .vs 12p .sp |2.5i Copyright 1979, 1980, 1983, 1986 Regents of the University of California. Permission to copy these documents or any portion thereof as necessary for licensed use of the software is granted to licensees of this software, provided this copyright notice and statement of permission are included. .sp 2 Documents PS1:1, 9, 10, 1doc/ps2/02.summary/vhel2 444 3 12 7775 3654613355 10214 .\" @(#)vhel2 6.1 (Berkeley) 4/25/86 .\" .NH Languages .NH 2 The C Language .LP .sh CC Compile and/or link edit programs in the C language. The .UC "UNIX/32V" operating system, most of the subsystems and C itself are written in C. For a full description of C, read .ul The C Programming Language, Brian W. Kernighan and Dennis M. Ritchie, Prentice-Hall, 1978. .op General purpose language designed for structured programming. .op Data types include character, integer, float, double, pointers to all types, functions returning above types, arrays of all types, structures and unions of all types. .op Operations intended to give machine-independent control of full machine facility, including to-memory operations and pointer arithmetic. .op Macro preprocessor for parameterized code and inclusion of standard files. .op All procedures recursive, with parameters by value. .op Machine-independent pointer manipulation. .op Object code uses full addressing capability of the VAX-11. .op Runtime library gives access to all system facilities. .OP Definable data types. .OP Block structure .sh LINT Verifier for C programs. Reports questionable or nonportable usage such as: .nf .in +2 Mismatched data declarations and procedure interfaces. .br Nonportable type conversions. .br Unused variables, unreachable code, no-effect operations. .br Mistyped pointers. .br Obsolete syntax. .in -2 .OP Full cross-module checking of separately compiled programs. .sh CB A beautifier for C programs. Does proper indentation and placement of braces. .NH 2 Fortran .LP .sh F77 A full compiler for ANSI Standard Fortran 77. .OP Compatible with C and supporting tools at object level. .OP Optional source compatibility with Fortran 66. .OP Free format source. .op Optional subscript-range checking, detection of uninitialized variables. .OP All widths of arithmetic: 2- and 4-byte integer; 4- and 8-byte real; 8- and 16-byte complex. .sh RATFOR Ratfor adds rational control structure \o'a\(ga' la C to Fortran. .op Compound statements. .op If-else, do, for, while, repeat-until, break, next statements. .op Symbolic constants. .op File insertion. .op Free format source .op Translation of relationals like >, >=. .op Produces genuine Fortran to carry away. .op May be used with F77. .sh STRUCT Converts ordinary ugly Fortran into structured Fortran (i.e., Ratfor), using statement grouping, if-else, while, for, repeat-until. .NH 2 Other Algorithmic Languages .sh DC Interactive programmable desk calculator. Has named storage locations as well as conventional stack for holding integers or programs. .op Unlimited precision decimal arithmetic. .op Appropriate treatment of decimal fractions. .op Arbitrary input and output radices, in particular binary, octal, decimal and hexadecimal. .op Reverse Polish operators: .in+2 .nf + \- * / remainder, power, square root, load, store, duplicate, clear, print, enter program text, execute. .in-2 .fi .sh BC A C-like interactive interface to the desk calculator DC. .op All the capabilities of DC with a high-level syntax. .op Arrays and recursive functions. .op Immediate evaluation of expressions and evaluation of functions upon call. .op Arbitrary precision elementary functions: exp, sin, cos, atan. .op Go-to-less programming. .NH 2 Macroprocessing .LP .nr c 0 1 .sh M4 A general purpose macroprocessor. .OP Stream-oriented, recognizes macros anywhere in text. .OP Syntax fits with functional syntax of most higher-level languages. .OP Can evaluate integer arithmetic expressions. .NH 2 Compiler-compilers .LP .sh YACC An LR(1)-based compiler writing system. During execution of resulting parsers, arbitrary C functions may be called to do code generation or semantic actions. .op BNF syntax specifications. .op Precedence relations. .op Accepts formally ambiguous grammars with non-BNF resolution rules. .sh LEX Generator of lexical analyzers. Arbitrary C functions may be called upon isolation of each lexical token. .OP Full regular expression, plus left and right context dependence. .OP Resulting lexical analysers interface cleanly with YACC parsers. doc/ps2/02.summary/vhel3 444 3 12 13034 3654613360 10212 .\" @(#)vhel3 6.1 (Berkeley) 4/25/86 .\" .NH Text Processing .NH 2 Document Preparation .LP .sh ED Interactive context editor. Random access to all lines of a file. .op Find lines by number or pattern. Patterns may include: specified characters, don't care characters, choices among characters, repetitions of these constructs, beginning of line, end of line. .op Add, delete, change, copy, move or join lines. .op Permute or split contents of a line. .op Replace one or all instances of a pattern within a line. .op Combine or split files. .op Escape to Shell (command language) during editing. .ne3 .op Do any of above operations on every pattern-selected line in a given range. .OP Optional encryption for extra security. .sh PTX Make a permuted (key word in context) index. .sh SPELL Look for spelling errors by comparing each word in a document against a word list. .OP 25,000-word list includes proper names. .OP Handles common prefixes and suffixes. .OP Collects words to help tailor local spelling lists. .sh LOOK Search for words in dictionary that begin with specified prefix. .sh CRYPT Encrypt and decrypt files for security. .NH 2 Document Formatting .LP .sh TROFF .sh NROFF Advanced typesetting. TROFF drives a Graphic Systems phototypesetter; NROFF drives ascii terminals of all types. This summary was typeset using TROFF. TROFF and NROFF are capable of elaborate feats of formatting, when appropriately programmed. TROFF and NROFF accept the same input language. .op Completely definable page format keyed to dynamically planted ``interrupts'' at specified lines. .op Maintains several separately definable typesetting environments (e.g., one for body text, one for footnotes, and one for unusually elaborate headings). .op Arbitrary number of output pools can be combined at will. .op Macros with substitutable arguments, and macros invocable in mid-line. .op Computation and printing of numerical quantities. .op Conditional execution of macros. .op Tabular layout facility. .op Positions expressible in inches, centimeters, ems, points, machine units or arithmetic combinations thereof. .op Access to character-width computation for unusually difficult layout problems. .op Overstrikes, built-up brackets, horizontal and vertical line drawing. .op Dynamic relative or absolute positioning and size selection, globally or at the character level. .op Can exploit the characteristics of the terminal being used, for approximating special characters, reverse motions, proportional spacing, etc. .LP The Graphic Systems typesetter has a vocabulary of several 102-character fonts (4 simultaneously) in 15 sizes. TROFF provides terminal output for rough sampling of the product. .LP NROFF will produce multicolumn output on terminals capable of reverse line feed, or through the postprocessor COL. .LP High programming skill is required to exploit the formatting capabilities of TROFF and NROFF, although unskilled personnel can easily be trained to enter documents according to canned formats such as those provided by MS, below. TROFF and EQN are essentially identical to NROFF and NEQN so it is usually possible to define interchangeable formats to produce approximate proof copy on terminals before actual typesetting. The preprocessors MS, TBL, and REFER are fully compatible with TROFF and NROFF. .sh MS A standardized manuscript layout package for use with NROFF/TROFF. This document was formatted with MS. .op Page numbers and draft dates. .op Automatically numbered subheads. .op Footnotes. .op Single or double column. .op Paragraphing, display and indentation. .op Numbered equations. .sh EQN A mathematical typesetting preprocessor for TROFF. Translates easily readable formulas, either in-line or displayed, into detailed typesetting instructions. Formulas are written in a style like this: .DS sigma sup 2 ~=~ 1 over N sum from i=1 to N ( x sub i \- x bar ) sup 2 .DE which produces: .EQ sigma sup 2 ~=~ 1 over N sum from i=1 to N ( x sub i - x bar ) sup 2 .EN .op Automatic calculation of size changes for subscripts, sub-subscripts, etc. .op Full vocabulary of Greek letters and special symbols, such as `gamma', `GAMMA', `integral'. .op Automatic calculation of large bracket sizes. .op Vertical ``piling'' of formulae for matrices, conditional alternatives, etc. .op Integrals, sums, etc., with arbitrarily complex limits. .op Diacriticals: dots, double dots, hats, bars, etc. .op Easily learned by nonprogrammers and mathematical typists. .sh NEQN A version of EQN for NROFF; accepts the same input language. Prepares formulas for display on any terminal that NROFF knows about, for example, those based on Diablo printing mechanism. .op Same facilities as EQN within graphical capability of terminal. .sh TBL A preprocessor for NROFF/TROFF that translates simple descriptions of table layouts and contents into detailed typesetting instructions. .op Computes column widths. .op Handles left- and right-justified columns, centered columns and decimal-point alignment. .op Places column titles. .op Table entries can be text, which is adjusted to fit. .op Can box all or parts of table. .sh REFER Fills in bibliographic citations in a document from a data base (not supplied). .op References may be printed in any style, as they occur or collected at the end. .op May be numbered sequentially, by name of author, etc. .sh TC Simulate Graphic Systems typesetter on Tektronix 4014 scope. Useful for checking TROFF page layout before typesetting. .sh COL Canonicalize files with reverse line feeds for one-pass printing. .sh DEROFF Remove all TROFF commands from input. .sh CHECKEQ Check document for possible errors in EQN usage. .op Escape to Shell (command language) during editing. .ne3 .op Do any of above operations on every pattern-selected line in a given range. .OP Optional encryption for extra security. .sh PTX Make a permuted (key word in context) index. .sh SPELL Look for spelling errors by comparing each word in a document against a word list. .OP 25,000-word list includes proper names. .OP Handles common prefixes and suffixes. .OP Collects words to help tailor local spelling lists. .sh LOOK Sedoc/ps2/02.summary/vhel4 444 3 12 4735 3654613361 10204 .\" @(#)vhel4 6.1 (Berkeley) 4/25/86 .\" .NH Information Handling .LP .sh SORT Sort or merge ASCII files line-by-line. No limit on input size. .op Sort up or down. .op Sort lexicographically or on numeric key. .op Multiple keys located by delimiters or by character position. .op May sort upper case together with lower into dictionary order. .OP Optionally suppress duplicate data. .sh TSORT Topological sort \(em converts a partial order into a total order. .sh UNIQ Collapse successive duplicate lines in a file into one line. .op Publish lines that were originally unique, duplicated, or both. .op May give redundancy count for each line. .sh TR Do one-to-one character translation according to an arbitrary code. .op May coalesce selected repeated characters. .op May delete selected characters. .sh DIFF Report line changes, additions and deletions necessary to bring two files into agreement. .op May produce an editor script to convert one file into another. .op A variant compares two new versions against one old one. .sh COMM Identify common lines in two sorted files. Output in up to 3 columns shows lines present in first file only, present in both, and/or present in second only. .sh JOIN Combine two files by joining records that have identical keys. .sh GREP Print all lines in a file that satisfy a pattern as used in the editor ED. .op May print all lines that fail to match. .op May print count of hits. .op May print first hit in each file. .sh LOOK Binary search in sorted file for lines with specified prefix. .sh WC Count the lines, ``words'' (blank-separated strings) and characters in a file. .sh SED Stream-oriented version of ED. Can perform a sequence of editing operations on each line of an input stream of unbounded length. .op Lines may be selected by address or range of addresses. .op Control flow and conditional testing. .op Multiple output streams. .op Multi-line capability. .sh AWK Pattern scanning and processing language. Searches input for patterns, and performs actions on each line of input that satisfies the pattern. .op Patterns include regular expressions, arithmetic and lexicographic conditions, boolean combinations and ranges of these. .op Data treated as string or numeric as appropriate. .op Can break input into fields; fields are variables. .op Variables and arrays (with non-numeric subscripts). .op Full set of arithmetic operators and control flow. .op Multiple output streams to files and pipes. .op Output can be formatted as desired. .op Multi-line capabilities. Systems typesetter has a vocabulardoc/ps2/02.summary/vhel5 444 3 12 1211 3654613362 10170 .\" @(#)vhel5 6.1 (Berkeley) 4/25/86 .\" .NH Graphics .LP The programs in this section are predominantly intended for use with Tektronix 4014 storage scopes. .sh GRAPH Prepares a graph of a set of input numbers. .op Input scaled to fit standard plotting area. .op Abscissae may be supplied automatically. .op Graph may be labeled. .op Control over grid style, line style, graph orientation, etc. .sh SPLINE Provides a smooth curve through a set of points intended for GRAPH. .sh PLOT A set of filters for printing graphs produced by GRAPH and other programs on various terminals. Filters provided for 4014, DASI terminals, Versatec printer/plotter. Do one-to-one character translation according to an arbitrary code. .op May coalesce selected repeated characters. .op May delete selected characters. .sh DIFF Report line changes, additions and deletions necessary to bring two files into agreement. .op May produce an editor script to convert one file into another. .op A variant compares two new versions against one old odoc/ps2/02.summary/vhel6 444 3 12 1560 3654613363 10201 .\" @(#)vhel6 6.1 (Berkeley) 4/25/86 .\" .NH Novelties, Games, and Things That Didn't Fit Anywhere Else .LP .sh BACKGAMMON .br A player of modest accomplishment. .sh BCD Converts ascii to card-image form. .sh CAL Print a calendar of specified month and year. .sh CHING The .ul I Ching. Place your own interpretation on the output. .sh FORTUNE Presents a random fortune cookie on each invocation. Limited jar of cookies included. .sh UNITS Convert amounts between different scales of measurement. Knows hundreds of units. For example, how many km/sec is a parsec/megayear? .sh ARITHMETIC .br Speed and accuracy test for number facts. .sh QUIZ Test your knowledge of Shakespeare, Presidents, capitals, etc. .sh WUMP Hunt the wumpus, thrilling search in a dangerous cave. .sh HANGMAN Word-guessing game. Uses a dictionary supplied with SPELL. .sh FISH Children's card-guessing game. les into agreement. .op May produce an editor script to convert one file into another. .op A variant compares two new versions against one old odoc/ps2/02.summary/vhel.mac 444 3 12 303 3654615317 10625 .\" @(#)vhel.mac 6.1 (Berkeley) 4/25/86 .\" .hy 9 .de op .nr PD 0 .IP \h'1i'\(ci 1i+2 .nr PD .5v .. .de sh .IP "\(sq\ \\$1" 1i .. .de OP .op \\$1 \\$2 \\$3 .. .de UC \&\\$3\\s-1\\$1\\s0\\$2\& .. doc/ps2/02.summary/vhel0 444 3 12 5334 3660571122 10167 .\" @(#)vhel0 6.1 (Berkeley) 4/25/86 .\" .OH 'UNIX 32/V \(em Summary''PS2:2-%' .EH 'PS2:2-%''UNIX 32/V \(em Summary' .TL UNIX/32V \(em Summary .AU March 9, 1979 .AI .HO .SH A. What's new: highlights of the UNIX\(dg/32V System .FS \(dg .UC UNIX is a Trademark of Bell Laboratories. .FE .LP .B "32-bit world." UNIX/32V handles 32-bit addresses and 32-bit data. Devices are addressable to 2\u\s-231\s+2\d bytes, files to 2\u\s-230\s+2\d bytes. .LP .B "Portability." Code of the operating system and most utilities has been extensively revised to minimize its dependence on particular hardware. UNIX/32V is highly compatible with UNIX version 7. .LP .B "Fortran 77." F77 compiler for the new standard language is compatible with C at the object level. A Fortran structurer, STRUCT, converts old, ugly Fortran into RATFOR, a structured dialect usable with F77. .LP .B "Shell." Completely new SH program supports string variables, trap handling, structured programming, user profiles, settable search path, multilevel file name generation, etc. .LP .B "Document preparation." TROFF phototypesetter utility is standard. NROFF (for terminals) is now highly compatible with TROFF. MS macro package provides canned commands for many common formatting and layout situations. TBL provides an easy to learn language for preparing complicated tabular material. REFER fills in bibliographic citations from a data base. .LP .B "UNIX-to-UNIX file copy." UUCP performs spooled file transfers between any two machines. .LP .B "Data processing." SED stream editor does multiple editing functions in parallel on a data stream of indefinite length. AWK report generator does free-field pattern selection and arithmetic operations. .LP .B "Program development." MAKE controls re-creation of complicated software, arranging for minimal recompilation. .LP .B "Debugging." ADB does postmortem and breakpoint debugging. .LP .B "C language." The language now supports definable data types, generalized initialization, block structure, long integers, unions, explicit type conversions. The LINT verifier does strong type checking and detection of probable errors and portability problems even across separately compiled functions. .LP .B "Lexical analyzer generator." LEX converts specification of regular expressions and semantic actions into a recognizing subroutine. Analogous to YACC. .LP .B "Graphics." Simple graph-drawing utility, graphic subroutines, and generalized plotting filters adapted to various devices are now standard. .LP .B "Standard input-output package." Highly efficient buffered stream I/O is integrated with formatted input and output. .LP .B "Other." The operating system and utilities have been enhanced and freed of restrictions in many other ways too numerous to relate. .sp 100 d layout situations. TBL provides an easy to learn language for preparing complicated tabular material. REFER fills in bibliographic citations from a data base. .LP .B "UNIX-to-UNIX file copy." UUCP performs spooled file transfers between any two machines. .LP .B "Data processing." SED streadoc/ps2/02.summary/vhel1 444 3 12 40751 3660571122 10212 .\" @(#)vhel1 6.1 (Berkeley) 4/25/86 .\" .\" @(#)vhel1 6.1 (Berkeley) 4/25/86 .\" .SH B. Hardware .PP The .UC "UNIX/32V" operating system runs on a DEC VAX-11/780* .FS *VAX is a Trademark of Digital Equipment Corporation. .FE with at least the following equipment: .IP memory: 256K bytes or more. .IP disk: RP06, RM03, or equivalent. .IP tape: any 9-track MASSBUS-compatible tape drive. .LP The following equipment is strongly recommended: .IP communications controller such as DZ11 or DL11. .IP full duplex 96-character ASCII terminals. .IP extra disk for system backup. .LP The system is normally distributed on 9-track tape. The minimum memory and disk space specified is enough to run and maintain .UC "UNIX/32V," and to keep all source on line. More memory will be needed to handle a large number of users, big data bases, diversified complements of devices, or large programs. The resident code occupies 40-55K bytes depending on configuration; system data also occupies 30-55K bytes. .SH C. Software .PP Most of the programs available as .UC "UNIX/32V" commands are listed. Source code and printed manuals are distributed for all of the listed software except games. Almost all of the code is written in C. Commands are self-contained and do not require extra setup information, unless specifically noted as ``interactive.'' Interactive programs can be made to run from a prepared script simply by redirecting input. Most programs intended for interactive use (e.g., the editor) allow for an escape to command level (the Shell). Most file processing commands can also go from standard input to standard output (``filters''). The piping facility of the Shell may be used to connect such filters directly to the input or output of other programs. .NH Basic Software .PP This includes the time-sharing operating system with utilities, and a compiler for the programming language C\(emenough software to write and run new applications and to maintain or modify .UC "UNIX/32V" itself. .NH 2 Operating System .sh UNIX The basic resident code on which everything else depends. Supports the system calls, and maintains the file system. A general description of .UC UNIX design philosophy and system facilities appeared in the Communications of the ACM, July, 1974. A more extensive survey is in the Bell System Technical Journal for July-August 1978. Capabilities include: .op Reentrant code for user processes. .op ``Group'' access permissions for cooperative projects, with overlapping memberships. .op Alarm-clock timeouts. .op Timer-interrupt sampling and interprocess monitoring for debugging and measurement. .OP Multiplexed I/O for machine-to-machine communication. .sh DEVICES All I/O is logically synchronous. I/O devices are simply files in the file system. Normally, invisible buffering makes all physical record structure and device characteristics transparent and exploits the hardware's ability to do overlapped I/O. Unbuffered physical record I/O is available for unusual applications. Drivers for these devices are available: .op Asynchronous interfaces: DZ11, DL11. Support for most common ASCII terminals. .op Automatic calling unit interface: DN11. .op Printer/plotter: Versatek. .op Magnetic tape: TE16. .op Pack type disk: RP06, RM03; minimum-latency seek scheduling. .op Physical memory of VAX-11, or mapped memory in resident system. .op Null device. .op Recipies are supplied to aid the construction of drivers for: .nf .in +2 Asynchronous interface: DH11. Synchronous interface: DU11. DECtape: TC11. Fixed head disk: RS11, RS03 and RS04. Cartridge-type disk: RK05. Phototypesetter: Graphic Systems System/1 through DR11C. .in -2 .fi .sh BOOT Procedures to get .UC "UNIX/32V" started. .NH 2 User Access Control .LP .sh LOGIN Sign on as a new user. .op Verify password and establish user's individual and group (project) identity. .op Adapt to characteristics of terminal. .op Establish working directory. .op Announce presence of mail (from MAIL). .op Publish message of the day. .op Execute user-specified profile. .op Start command interpreter or other initial program. .sh PASSWD Change a password. .op User can change his own password. .op Passwords are kept encrypted for security. .sh NEWGRP Change working group (project). Protects against unauthorized changes to projects. .NH 2 Terminal Handling .LP .sh TABS Set tab stops appropriately for specified terminal type. .sh STTY Set up options for optimal control of a terminal. In so far as they are deducible from the input, these options are set automatically by LOGIN. .op Half vs. full duplex. .op Carriage return+line feed vs. newline. .op Interpretation of tabs. .op Parity. .op Mapping of upper case to lower. .op Raw vs. edited input. .op Delays for tabs, newlines and carriage returns. .NH 2 File Manipulation .LP .sh CAT Concatenate one or more files onto standard output. Particularly used for unadorned printing, for inserting data into a pipeline, and for buffering output that comes in dribs and drabs. Works on any file regardless of contents. .sh CP Copy one file to another, or a set of files to a directory. Works on any file regardless of contents. .sh PR Print files with title, date, and page number on every page. .op Multicolumn output. .op Parallel column merge of several files. .sh LPR Off-line print. Spools arbitrary files to the line printer. .sh CMP Compare two files and report if different. .sh TAIL Print last .I n lines of input .op May print last .I n characters, or from .I n lines or characters to end. .sh SPLIT Split a large file into more manageable pieces. Occasionally necessary for editing (ED). .sh DD Physical file format translator, for exchanging data with foreign systems, especially IBM 370's. .sh SUM Sum the words of a file. .NH 2 Manipulation of Directories and File Names .LP .sh RM Remove a file. Only the name goes away if any other names are linked to the file. .OP Step through a directory deleting files interactively. .OP Delete entire directory hierarchies. .sh LN ``Link'' another name (alias) to an existing file. .sh MV Move a file or files. Used for renaming files. .sh CHMOD Change permissions on one or more files. Executable by files' owner. .sh CHOWN Change owner of one or more files. .sh CHGRP Change group (project) to which a file belongs. .sh MKDIR Make a new directory. .sh RMDIR Remove a directory. .sh CD Change working directory. .sh FIND Prowl the directory hierarchy finding every file that meets specified criteria. .op Criteria include: .in +2 .nf name matches a given pattern, creation date in given range, date of last use in given range, given permissions, given owner, given special file characteristics, boolean combinations of above. .in -2 .fi .op Any directory may be considered to be the root. .op Perform specified command on each file found. .NH 2 Running of Programs .LP .sh SH The Shell, or command language interpreter. .op Supply arguments to and run any executable program. .op Redirect standard input, standard output, and standard error files. .op Pipes: simultaneous execution with output of one process connected to the input of another. .OP Compose compound commands using: .in+2 if ... then ... else, .br case switches, .br while loops, .br for loops over lists, .br break, continue and exit, .br parentheses for grouping. .in -2 .op Initiate background processes. .op Perform Shell programs, i.e., command scripts with substitutable arguments. .op Construct argument lists from all file names satisfying specified patterns. .OP Take special action on traps and interrupts. .OP User-settable search path for finding commands. .OP Executes user-settable profile upon login. .OP Optionally announces presence of mail as it arrives. .op Provides variables and parameters with default setting. .sh TEST Tests for use in Shell conditionals. .op String comparison. .op File nature and accessibility. .op Boolean combinations of the above. .sh EXPR String computations for calculating command arguments. .OP Integer arithmetic .OP Pattern matching .sh WAIT Wait for termination of asynchronously running processes. .sh READ Read a line from terminal, for interactive Shell procedure. .sh ECHO Print remainder of command line. Useful for diagnostics or prompts in Shell programs, or for inserting data into a pipeline. .sh SLEEP Suspend execution for a specified time. .sh NOHUP Run a command immune to hanging up the terminal. .sh NICE Run a command in low (or high) priority. .sh KILL Terminate named processes. .sh CRON Schedule regular actions at specified times. .op Actions are arbitrary programs. .op Times are conjunctions of month, day of month, day of week, hour and minute. Ranges are specifiable for each. .sh AT Schedule a one-shot action for an arbitrary time. .sh TEE Pass data between processes and divert a copy into one or more files. .NH 2 Status Inquiries .LP .sh LS List the names of one, several, or all files in one or more directories. .op Alphabetic or temporal sorting, up or down. .op Optional information: size, owner, group, date last modified, date last accessed, permissions, i-node number. .sh FILE Try to determine what kind of information is in a file by consulting the file system index and by reading the file itself. .sh DATE Print today's date and time. Has considerable knowledge of calendric and horological peculiarities. .op May set .UC "UNIX/32V" 's idea of date and time. .sh DF Report amount of free space on file system devices. .sh DU Print a summary of total space occupied by all files in a hierarchy. .sh QUOT Print summary of file space usage by user id. .sh WHO Tell who's on the system. .op List of presently logged in users, ports and times on. .op Optional history of all logins and logouts. .sh PS Report on active processes. .op List your own or everybody's processes. .op Tell what commands are being executed. .op Optional status information: state and scheduling info, priority, attached terminal, what it's waiting for, size. .sh IOSTAT Print statistics about system I/O activity. .sh TTY Print name of your terminal. .sh PWD Print name of your working directory. .NH 2 Backup and Maintenance .LP .sh MOUNT Attach a device containing a file system to the tree of directories. Protects against nonsense arrangements. .sh UMOUNT Remove the file system contained on a device from the tree of directories. Protects against removing a busy device. .sh MKFS Make a new file system on a device. .sh MKNOD Make an i-node (file system entry) for a special file. Special files are physical devices, virtual devices, physical memory, etc. .sh TP .sh TAR Manage file archives on magnetic tape or DECtape. TAR is newer. .op Collect files into an archive. .op Update DECtape archive by date. .op Replace or delete DECtape files. .op Print table of contents. .op Retrieve from archive. .sh DUMP Dump the file system stored on a specified device, selectively by date, or indiscriminately. .sh RESTOR Restore a dumped file system, or selectively retrieve parts thereof. .sh SU Temporarily become the super user with all the rights and privileges thereof. Requires a password. .sh DCHECK .sh ICHECK .sh NCHECK Check consistency of file system. .op Print gross statistics: number of files, number of directories, number of special files, space used, space free. .op Report duplicate use of space. .op Retrieve lost space. .op Report inaccessible files. .op Check consistency of directories. .op List names of all files. .sh CLRI Peremptorily expunge a file and its space from a file system. Used to repair damaged file systems. .sh SYNC Force all outstanding I/O on the system to completion. Used to shut down gracefully. .NH 2 Accounting .LP The timing information on which the reports are based can be manually cleared or shut off completely. .sh AC Publish cumulative connect time report. .op Connect time by user or by day. .op For all users or for selected users. .sh SA Publish Shell accounting report. Gives usage information on each command executed. .op Number of times used. .op Total system time, user time and elapsed time. .op Optional averages and percentages. .op Sorting on various fields. .NH 2 Communication .LP .sh MAIL Mail a message to one or more users. Also used to read and dispose of incoming mail. The presence of mail is announced by LOGIN and optionally by SH. .op Each message can be disposed of individually. .op Messages can be saved in files or forwarded. .sh CALENDAR Automatic reminder service for events of today and tomorrow. .sh WRITE Establish direct terminal communication with another user. .sh WALL Write to all users. .sh MESG Inhibit receipt of messages from WRITE and WALL. .sh CU Call up another time-sharing system. .OP Transparent interface to remote machine. .OP File transmission. .OP Take remote input from local file or put remote output into local file. .OP Remote system need not be .UC "UNIX/32V" . .sh UUCP .UC UNIX to .UC UNIX copy. .OP Automatic queuing until line becomes available and remote machine is up. .OP Copy between two remote machines. .op Differences, mail, etc., between two machines. .NH 2 Basic Program Development Tools .LP Some of these utilities are used as integral parts of the higher level languages described in section 2. .sh AR Maintain archives and libraries. Combines several files into one for housekeeping efficiency. .op Create new archive. .op Update archive by date. .op Replace or delete files. .op Print table of contents. .op Retrieve from archive. .sh AS Assembler. .op Creates object program consisting of .in+2 .nf code, normally read-only and sharable, initialized data or read-write code, uninitialized data. .in -2 .fi .op Relocatable object code is directly executable without further transformation. .op Object code normally includes a symbol table. .op ``Conditional jump'' instructions become branches or branches plus jumps depending on distance. .sh Library The basic run-time library. These routines are used freely by all software. .op Buffered character-by-character I/O. .op Formatted input and output conversion (SCANF and PRINTF) for standard input and output, files, in-memory conversion. .op Storage allocator. .op Time conversions. .op Number conversions. .op Password encryption. .op Quicksort. .op Random number generator. .op Mathematical function library, including trigonometric functions and inverses, exponential, logarithm, square root, bessel functions. .sh ADB Interactive debugger. .op Postmortem dumping. .OP Examination of arbitrary files, with no limit on size. .op Interactive breakpoint debugging with the debugger as a separate process. .OP Symbolic reference to local and global variables. .op Stack trace for C programs. .OP Output formats: .in+2 .nf 1-, 2-, or 4-byte integers in octal, decimal, or hex .br single and double floating point .br character and string .br disassembled machine instructions .br .fi .in-2 .op Patching. .OP Searching for integer, character, or floating patterns. .sh OD Dump any file. Output options include any combination of octal or decimal or hex by words, octal by bytes, ASCII, opcodes, hexadecimal. .op Range of dumping is controllable. .sh LD Link edit. Combine relocatable object files. Insert required routines from specified libraries. .op Resulting code is sharable by default. .sh LORDER Places object file names in proper order for loading, so that files depending on others come after them. .sh NM Print the namelist (symbol table) of an object program. Provides control over the style and order of names that are printed. .sh SIZE Report the memory requirements of one or more object files. .sh STRIP Remove the relocation and symbol table information from an object file to save space. .sh TIME Run a command and report timing information on it. .sh PROF Construct a profile of time spent per routine from statistics gathered by time-sampling the execution of a program. .op Subroutine call frequency and average times for C programs. .sh MAKE Controls creation of large programs. Uses a control file specifying source file dependencies to make new version; uses time last changed to deduce minimum amount of work necessary. .op Knows about CC, YACC, LEX, etc. .NH 2 UNIX/32V Programmer's Manual .LP .sh Manual Machine-readable version of the .UC "UNIX/32V" Programmer's Manual. .op System overview. .op All commands. .op All system calls. .op All subroutines in C and assembler libraries. .op All devices and other special files. .op Formats of file system and kinds of files known to system software. .op Boot and maintenance procedures. .sh MAN Print specified manual section on your terminal. .NH 2 Computer-Aided Instruction .LP .sh LEARN A program for interpreting CAI scripts, plus scripts for learning about .UC "UNIX/32V" by using it. .op Scripts for basic files and commands, editor, advanced files and commands, .UC EQN , .UC MS macros, C programming language. r Hu 1 .DE .NH 2 Exterdoc/ps2/03.uprog/ 755 3 12 0 3660735312 6601 doc/ps2/03.uprog/p3 444 3 12 21024 3660734620 7151 .\" @(#)p3 6.3 (Berkeley) 5/10/86 .\" .NH THE STANDARD I/O LIBRARY .PP The ``Standard I/O Library'' is a collection of routines intended to provide efficient and portable I/O services for most C programs. The standard I/O library is available on each system that supports C, so programs that confine their system interactions to its facilities can be transported from one system to another essentially without change. .PP In this section, we will discuss the basics of the standard I/O library. The appendix contains a more complete description of its capabilities. .NH 2 File Access .PP The programs written so far have all read the standard input and written the standard output, which we have assumed are magically pre-defined. The next step is to write a program that accesses a file that is .ul not already connected to the program. One simple example is .IT wc , which counts the lines, words and characters in a set of files. For instance, the command .P1 wc x.c y.c .P2 prints the number of lines, words and characters in .UL x.c and .UL y.c and the totals. .PP The question is how to arrange for the named files to be read \(em that is, how to connect the file system names to the I/O statements which actually read the data. .PP The rules are simple. Before it can be read or written a file has to be .ul opened by the standard library function .UL fopen . .UL fopen takes an external name (like .UL x.c or .UL y.c ), does some housekeeping and negotiation with the operating system, and returns an internal name which must be used in subsequent reads or writes of the file. .PP This internal name is actually a pointer, called a .IT file .IT pointer , to a structure which contains information about the file, such as the location of a buffer, the current character position in the buffer, whether the file is being read or written, and the like. Users don't need to know the details, because part of the standard I/O definitions obtained by including .UL stdio.h is a structure definition called .UL FILE . The only declaration needed for a file pointer is exemplified by .P1 FILE *fp, *fopen(); .P2 This says that .UL fp is a pointer to a .UL FILE , and .UL fopen returns a pointer to a .UL FILE . .UL FILE \& ( is a type name, like .UL int , not a structure tag. .PP The actual call to .UL fopen in a program is .P1 fp = fopen(name, mode); .P2 The first argument of .UL fopen is the name of the file, as a character string. The second argument is the mode, also as a character string, which indicates how you intend to use the file. The only allowable modes are read .UL \&"r" ), ( write .UL \&"w" ), ( or append .UL \&"a" ). ( .PP If a file that you open for writing or appending does not exist, it is created (if possible). Opening an existing file for writing causes the old contents to be discarded. Trying to read a file that does not exist is an error, and there may be other causes of error as well (like trying to read a file when you don't have permission). If there is any error, .UL fopen will return the null pointer value .UL NULL (which is defined as zero in .UL stdio.h ). .PP The next thing needed is a way to read or write the file once it is open. There are several possibilities, of which .UL getc and .UL putc are the simplest. .UL getc returns the next character from a file; it needs the file pointer to tell it what file. Thus .P1 c = getc(fp) .P2 places in .UL c the next character from the file referred to by .UL fp ; it returns .UL EOF when it reaches end of file. .UL putc is the inverse of .UL getc : .P1 putc(c, fp) .P2 puts the character .UL c on the file .UL fp and returns .UL c . .UL getc and .UL putc return .UL EOF on error. .PP When a program is started, three files are opened automatically, and file pointers are provided for them. These files are the standard input, the standard output, and the standard error output; the corresponding file pointers are called .UL stdin , .UL stdout , and .UL stderr . Normally these are all connected to the terminal, but may be redirected to files or pipes as described in Section 2.2. .UL stdin , .UL stdout and .UL stderr are pre-defined in the I/O library as the standard input, output and error files; they may be used anywhere an object of type .UL FILE\ * can be. They are constants, however, .ul not variables, so don't try to assign to them. .PP With some of the preliminaries out of the way, we can now write .IT wc . The basic design is one that has been found convenient for many programs: if there are command-line arguments, they are processed in order. If there are no arguments, the standard input is processed. This way the program can be used stand-alone or as part of a larger process. .P1 #include main(argc, argv) /* wc: count lines, words, chars */ int argc; char *argv[]; { int c, i, inword; FILE *fp, *fopen(); long linect, wordct, charct; long tlinect = 0, twordct = 0, tcharct = 0; i = 1; fp = stdin; do { if (argc > 1 && (fp=fopen(argv[i], "r")) == NULL) { fprintf(stderr, "wc: can't open %s\en", argv[i]); continue; } linect = wordct = charct = inword = 0; while ((c = getc(fp)) != EOF) { charct++; if (c == '\en') linect++; if (c == ' ' || c == '\et' || c == '\en') inword = 0; else if (inword == 0) { inword = 1; wordct++; } } printf("%7ld %7ld %7ld", linect, wordct, charct); printf(argc > 1 ? " %s\en" : "\en", argv[i]); fclose(fp); tlinect += linect; twordct += wordct; tcharct += charct; } while (++i < argc); if (argc > 2) printf("%7ld %7ld %7ld total\en", tlinect, twordct, tcharct); exit(0); } .P2 The function .UL fprintf is identical to .UL printf , save that the first argument is a file pointer that specifies the file to be written. .PP The function .UL fclose is the inverse of .UL fopen ; it breaks the connection between the file pointer and the external name that was established by .UL fopen , freeing the file pointer for another file. Since there is a limit on the number of files that a program may have open simultaneously, it's a good idea to free things when they are no longer needed. There is also another reason to call .UL fclose on an output file \(em it flushes the buffer in which .UL putc is collecting output. .UL fclose \& ( is called automatically for each open file when a program terminates normally.) .NH 2 Error Handling \(em Stderr and Exit .PP .UL stderr is assigned to a program in the same way that .UL stdin and .UL stdout are. Output written on .UL stderr appears on the user's terminal even if the standard output is redirected. .IT wc writes its diagnostics on .UL stderr instead of .UL stdout so that if one of the files can't be accessed for some reason, the message finds its way to the user's terminal instead of disappearing down a pipeline or into an output file. .PP The program actually signals errors in another way, using the function .UL exit to terminate program execution. The argument of .UL exit is available to whatever process called it (see Section 6), so the success or failure of the program can be tested by another program that uses this one as a sub-process. By convention, a return value of 0 signals that all is well; non-zero values signal abnormal situations. .PP .UL exit itself calls .UL fclose for each open output file, to flush out any buffered output, then calls a routine named .UL _exit . The function .UL _exit causes immediate termination without any buffer flushing; it may be called directly if desired. .NH 2 Miscellaneous I/O Functions .PP The standard I/O library provides several other I/O functions besides those we have illustrated above. .PP Normally output with .UL putc , etc., is buffered (except to .UL stderr ); to force it out immediately, use .UL fflush(fp) . .PP .UL fscanf is identical to .UL scanf , except that its first argument is a file pointer (as with .UL fprintf ) that specifies the file from which the input comes; it returns .UL EOF at end of file. .PP The functions .UL sscanf and .UL sprintf are identical to .UL fscanf and .UL fprintf , except that the first argument names a character string instead of a file pointer. The conversion is done from the string for .UL sscanf and into it for .UL sprintf . .PP .UL fgets(buf,\ size,\ fp) copies the next line from .UL fp , up to and including a newline, into .UL buf ; at most .UL size-1 characters are copied; it returns .UL NULL at end of file. .UL fputs(buf,\ fp) writes the string in .UL buf onto file .UL fp . .PP The function .UL ungetc(c,\ fp) ``pushes back'' the character .UL c onto the input stream .UL fp ; a subsequent call to .UL getc , .UL fscanf , etc., will encounter .UL c . Only one character of pushback per file is permitted. s and other special files. .op Formats of file system and kinds of files known to system software. .op Boot and maintenance procedures. .sh MAN Print specified manual section on your terminal. .NH 2 Computer-Aided Instruction .LP .sh LEARN A program for interpreting CAI scripts, plus scripts for learning about .UC "UNIX/32V" by using it. .op Scripts for basic files and commands, editor, advanced files and commands, .UC EQN , .UC MS macros, C programming language. r Hu 1 .DE .NH 2 Exterdoc/ps2/03.uprog/p5 444 3 12 30445 3660734622 7164 .\" @(#)p5 6.3 (Berkeley) 5/10/86 .\" .NH PROCESSES .PP It is often easier to use a program written by someone else than to invent one's own. This section describes how to execute a program from within another. .NH 2 The ``System'' Function .PP The easiest way to execute a program from another is to use the standard library routine .UL system . .UL system takes one argument, a command string exactly as typed at the terminal (except for the newline at the end) and executes it. For instance, to time-stamp the output of a program, .P1 main() { system("date"); /* rest of processing */ } .P2 If the command string has to be built from pieces, the in-memory formatting capabilities of .UL sprintf may be useful. .PP Remember than .UL getc and .UL putc normally buffer their input; terminal I/O will not be properly synchronized unless this buffering is defeated. For output, use .UL fflush ; for input, see .UL setbuf in the appendix. .NH 2 Low-Level Process Creation \(em Execl and Execv .PP If you're not using the standard library, or if you need finer control over what happens, you will have to construct calls to other programs using the more primitive routines that the standard library's .UL system routine is based on. .PP The most basic operation is to execute another program .ul without .IT returning , by using the routine .UL execl . To print the date as the last action of a running program, use .P1 execl("/bin/date", "date", NULL); .P2 The first argument to .UL execl is the .ul file name of the command; you have to know where it is found in the file system. The second argument is conventionally the program name (that is, the last component of the file name), but this is seldom used except as a place-holder. If the command takes arguments, they are strung out after this; the end of the list is marked by a .UL NULL argument. .PP The .UL execl call overlays the existing program with the new one, runs that, then exits. There is .ul no return to the original program. .PP More realistically, a program might fall into two or more phases that communicate only through temporary files. Here it is natural to make the second pass simply an .UL execl call from the first. .PP The one exception to the rule that the original program never gets control back occurs when there is an error, for example if the file can't be found or is not executable. If you don't know where .UL date is located, say .P1 execl("/bin/date", "date", NULL); execl("/usr/bin/date", "date", NULL); fprintf(stderr, "Someone stole 'date'\en"); .P2 .PP A variant of .UL execl called .UL execv is useful when you don't know in advance how many arguments there are going to be. The call is .P1 execv(filename, argp); .P2 where .UL argp is an array of pointers to the arguments; the last pointer in the array must be .UL NULL so .UL execv can tell where the list ends. As with .UL execl , .UL filename is the file in which the program is found, and .UL argp[0] is the name of the program. (This arrangement is identical to the .UL argv array for program arguments.) .PP Neither of these routines provides the niceties of normal command execution. There is no automatic search of multiple directories \(em you have to know precisely where the command is located. Nor do you get the expansion of metacharacters like .UL < , .UL > , .UL * , .UL ? , and .UL [] in the argument list. If you want these, use .UL execl to invoke the shell .UL sh , which then does all the work. Construct a string .UL commandline that contains the complete command as it would have been typed at the terminal, then say .P1 execl("/bin/sh", "sh", "-c", commandline, NULL); .P2 The shell is assumed to be at a fixed place, .UL /bin/sh . Its argument .UL -c says to treat the next argument as a whole command line, so it does just what you want. The only problem is in constructing the right information in .UL commandline . .NH 2 Control of Processes \(em Fork and Wait .PP So far what we've talked about isn't really all that useful by itself. Now we will show how to regain control after running a program with .UL execl or .UL execv . Since these routines simply overlay the new program on the old one, to save the old one requires that it first be split into two copies; one of these can be overlaid, while the other waits for the new, overlaying program to finish. The splitting is done by a routine called .UL fork : .P1 proc_id = fork(); .P2 splits the program into two copies, both of which continue to run. The only difference between the two is the value of .UL proc_id , the ``process id.'' In one of these processes (the ``child''), .UL proc_id is zero. In the other (the ``parent''), .UL proc_id is non-zero; it is the process number of the child. Thus the basic way to call, and return from, another program is .P1 if (fork() == 0) execl("/bin/sh", "sh", "-c", cmd, NULL); /* in child */ .P2 And in fact, except for handling errors, this is sufficient. The .UL fork makes two copies of the program. In the child, the value returned by .UL fork is zero, so it calls .UL execl which does the .UL command and then dies. In the parent, .UL fork returns non-zero so it skips the .UL execl. (If there is any error, .UL fork returns .UL -1 ). .PP More often, the parent wants to wait for the child to terminate before continuing itself. This can be done with the function .UL wait : .P1 int status; if (fork() == 0) execl(...); wait(&status); .P2 This still doesn't handle any abnormal conditions, such as a failure of the .UL execl or .UL fork , or the possibility that there might be more than one child running simultaneously. (The .UL wait returns the process id of the terminated child, if you want to check it against the value returned by .UL fork .) Finally, this fragment doesn't deal with any funny behavior on the part of the child (which is reported in .UL status ). Still, these three lines are the heart of the standard library's .UL system routine, which we'll show in a moment. .PP The .UL status returned by .UL wait encodes in its low-order eight bits the system's idea of the child's termination status; it is 0 for normal termination and non-zero to indicate various kinds of problems. The next higher eight bits are taken from the argument of the call to .UL exit which caused a normal termination of the child process. It is good coding practice for all programs to return meaningful status. .PP When a program is called by the shell, the three file descriptors 0, 1, and 2 are set up pointing at the right files, and all other possible file descriptors are available for use. When this program calls another one, correct etiquette suggests making sure the same conditions hold. Neither .UL fork nor the .UL exec calls affects open files in any way. If the parent is buffering output that must come out before output from the child, the parent must flush its buffers before the .UL execl . Conversely, if a caller buffers an input stream, the called program will lose any information that has been read by the caller. .NH 2 Pipes .PP A .ul pipe is an I/O channel intended for use between two cooperating processes: one process writes into the pipe, while the other reads. The system looks after buffering the data and synchronizing the two processes. Most pipes are created by the shell, as in .P1 ls | pr .P2 which connects the standard output of .UL ls to the standard input of .UL pr . Sometimes, however, it is most convenient for a process to set up its own plumbing; in this section, we will illustrate how the pipe connection is established and used. .PP The system call .UL pipe creates a pipe. Since a pipe is used for both reading and writing, two file descriptors are returned; the actual usage is like this: .P1 int fd[2]; stat = pipe(fd); if (stat == -1) /* there was an error ... */ .P2 .UL fd is an array of two file descriptors, where .UL fd[0] is the read side of the pipe and .UL fd[1] is for writing. These may be used in .UL read , .UL write and .UL close calls just like any other file descriptors. .PP If a process reads a pipe which is empty, it will wait until data arrives; if a process writes into a pipe which is too full, it will wait until the pipe empties somewhat. If the write side of the pipe is closed, a subsequent .UL read will encounter end of file. .PP To illustrate the use of pipes in a realistic setting, let us write a function called .UL popen(cmd,\ mode) , which creates a process .UL cmd (just as .UL system does), and returns a file descriptor that will either read or write that process, according to .UL mode . That is, the call .P1 fout = popen("pr", WRITE); .P2 creates a process that executes the .UL pr command; subsequent .UL write calls using the file descriptor .UL fout will send their data to that process through the pipe. .PP .UL popen first creates the the pipe with a .UL pipe system call; it then .UL fork s to create two copies of itself. The child decides whether it is supposed to read or write, closes the other side of the pipe, then calls the shell (via .UL execl ) to run the desired process. The parent likewise closes the end of the pipe it does not use. These closes are necessary to make end-of-file tests work properly. For example, if a child that intends to read fails to close the write end of the pipe, it will never see the end of the pipe file, just because there is one writer potentially active. .P1 #include #define READ 0 #define WRITE 1 #define tst(a, b) (mode == READ ? (b) : (a)) static int popen_pid; popen(cmd, mode) char *cmd; int mode; { int p[2]; if (pipe(p) < 0) return(NULL); if ((popen_pid = fork()) == 0) { close(tst(p[WRITE], p[READ])); close(tst(0, 1)); dup(tst(p[READ], p[WRITE])); close(tst(p[READ], p[WRITE])); execl("/bin/sh", "sh", "-c", cmd, 0); _exit(1); /* disaster has occurred if we get here */ } if (popen_pid == -1) return(NULL); close(tst(p[READ], p[WRITE])); return(tst(p[WRITE], p[READ])); } .P2 The sequence of .UL close s in the child is a bit tricky. Suppose that the task is to create a child process that will read data from the parent. Then the first .UL close closes the write side of the pipe, leaving the read side open. The lines .P1 close(tst(0, 1)); dup(tst(p[READ], p[WRITE])); .P2 are the conventional way to associate the pipe descriptor with the standard input of the child. The .UL close closes file descriptor 0, that is, the standard input. .UL dup is a system call that returns a duplicate of an already open file descriptor. File descriptors are assigned in increasing order and the first available one is returned, so the effect of the .UL dup is to copy the file descriptor for the pipe (read side) to file descriptor 0; thus the read side of the pipe becomes the standard input. (Yes, this is a bit tricky, but it's a standard idiom.) Finally, the old read side of the pipe is closed. .PP A similar sequence of operations takes place when the child process is supposed to write from the parent instead of reading. You may find it a useful exercise to step through that case. .PP The job is not quite done, for we still need a function .UL pclose to close the pipe created by .UL popen . The main reason for using a separate function rather than .UL close is that it is desirable to wait for the termination of the child process. First, the return value from .UL pclose indicates whether the process succeeded. Equally important when a process creates several children is that only a bounded number of unwaited-for children can exist, even if some of them have terminated; performing the .UL wait lays the child to rest. Thus: .P1 #include pclose(fd) /* close pipe fd */ int fd; { register r, (*hstat)(), (*istat)(), (*qstat)(); int status; extern int popen_pid; close(fd); istat = signal(SIGINT, SIG_IGN); qstat = signal(SIGQUIT, SIG_IGN); hstat = signal(SIGHUP, SIG_IGN); while ((r = wait(&status)) != popen_pid && r != -1); if (r == -1) status = -1; signal(SIGINT, istat); signal(SIGQUIT, qstat); signal(SIGHUP, hstat); return(status); } .P2 The calls to .UL signal make sure that no interrupts, etc., interfere with the waiting process; this is the topic of the next section. .PP The routine as written has the limitation that only one pipe may be open at once, because of the single shared variable .UL popen_pid ; it really should be an array indexed by file descriptor. A .UL popen function, with slightly different arguments and return value is available as part of the standard I/O library discussed below. As currently written, it shares the same limitation. be found or is not executable. If you don't know where .UL date is located, say .P1 execl("/bin/date", "date", NULL); execl("/usr/bin/date", "date", NULL); fprintf(stderr, "Someone stole 'date'\en"); .P2 .PP A variant doc/ps2/03.uprog/p1 444 3 12 1712 3653655156 7141 .\" @(#)p1 6.1 (Berkeley) 4/25/86 .\" .if n .ls 2 .if t .tr |\(or .NH INTRODUCTION .PP This paper describes how to write programs that interface with the .UC UNIX operating system in a non-trivial way. This includes programs that use files by name, that use pipes, that invoke other commands as they run, or that attempt to catch interrupts and other signals during execution. .PP The document collects material which is scattered throughout several sections of .I The .UC UNIX Programmer's Manual .R [1] for Version 7 .UC UNIX . There is no attempt to be complete; only generally useful material is dealt with. It is assumed that you will be programming in C, so you must be able to read the language roughly up to the level of .I The C Programming Language .R [2]. Some of the material in sections 2 through 4 is based on topics covered more carefully there. You should also be familiar with .UC UNIX itself at least to the level of .I .UC UNIX for Beginners .R [3]. ion that only one pipe may be open at once, because ofdoc/ps2/03.uprog/p0 444 3 12 1765 3660734021 7133 .\" @(#)p0 6.3 (Berkeley) 5/9/86 .\" .if n .ls 1 ...TM 78-1273-9 39199 39199-11 ...ND October 2, 1978 ...old TM 75-1273-11 October 22, 1975 .OH 'UNIX Programming \(em Second Edition''PS2:3-%' .EH 'PS2:3-%''UNIX Programming \(em Second Edition' .TL UNIX Programming \(em Second Edition .AU "MH 2C-518" 6021 Brian W. Kernighan .AU "MH 2C-517" 3770 Dennis M. Ritchie .AI .MH .AB .PP This paper is an introduction to programming on the .UX system. The emphasis is on how to write programs that interface to the operating system, either directly or through the standard I/O library. The topics discussed include .IP " \(bu" handling command arguments .IP " \(bu" rudimentary I/O; the standard input and output .IP " \(bu" the standard I/O library; file system access .IP " \(bu" low-level I/O: open, read, write, close, seek .IP " \(bu" processes: exec, fork, pipes .IP " \(bu" signals \(em interrupts, etc. .PP There is also an appendix which describes the standard I/O library in detail. .AE .CS 17 0 17 0 0 4 because ofdoc/ps2/03.uprog/p.mac 444 3 12 606 3660735312 7567 .\" @(#)p.mac 6.2 (Berkeley) 5/10/86 .\" .\" @(#)p.mac 6.1 (Berkeley) 4/25/86 .\" .de UC \&\\$3\s-1\\$1\\s0\&\\$2 .. .de IT \&\\$3\fI\\$1\fR\^\&\\$2 .. .de UL \%\&\\$3\f(CW\s-1\\$1\s0\fR\&\\$2 .. .de P1 .DS I .5i .nf .ft CW .ps \\n(PS-1 .vs \\n(VS-1 .. .de P2 .ps \\n(PS .vs \\n(VS .ft R .DE .. .hy 14 \"2=not last lines; 4= no -xx; 8=no xx- .am SH .ft R .. .am NH .ft R .. .am TL .ft R .. doc/ps2/03.uprog/p2 444 3 12 11037 3660734022 7147 .\" @(#)p2 6.2 (Berkeley) 5/9/86 .\" .NH BASICS .NH 2 Program Arguments .PP When a C program is run as a command, the arguments on the command line are made available to the function .UL main as an argument count .UL argc and an array .UL argv of pointers to character strings that contain the arguments. By convention, .UL argv[0] is the command name itself, so .UL argc is always greater than 0. .PP The following program illustrates the mechanism: it simply echoes its arguments back to the terminal. (This is essentially the .UL echo command.) .P1 main(argc, argv) /* echo arguments */ int argc; char *argv[]; { int i; for (i = 1; i < argc; i++) printf("%s%c", argv[i], (i : if .UL prog uses .UL putchar , .P1 prog >outfile .P2 writes the standard output on .UL outfile instead of the terminal. .UL outfile is created if it doesn't exist; if it already exists, its previous contents are overwritten. And a pipe can be used: .P1 prog | otherprog .P2 puts the standard output of .UL prog into the standard input of .UL otherprog. .PP The function .UL printf , which formats output in various ways, uses the same mechanism as .UL putchar does, so calls to .UL printf and .UL putchar may be intermixed in any order; the output will appear in the order of the calls. .PP Similarly, the function .UL scanf provides for formatted input conversion; it will read the standard input and break it up into strings, numbers, etc., as desired. .UL scanf uses the same mechanism as .UL getchar , so calls to them may also be intermixed. .PP Many programs read only one input and write one output; for such programs I/O with .UL getchar , .UL putchar , .UL scanf , and .UL printf may be entirely adequate, and it is almost always enough to get started. This is particularly true if the .UC UNIX pipe facility is used to connect the output of one program to the input of the next. For example, the following program strips out all ascii control characters from its input (except for newline and tab). .P1 #include main() /* ccstrip: strip non-graphic characters */ { int c; while ((c = getchar()) != EOF) if ((c >= ' ' && c < 0177) || c == '\et' || c == '\en') putchar(c); exit(0); } .P2 The line .P1 #include .P2 should appear at the beginning of each source file. It causes the C compiler to read a file .IT /usr/include/stdio.h ) ( of standard routines and symbols that includes the definition of .UL EOF . .PP If it is necessary to treat multiple files, you can use .UL cat to collect the files for you: .P1 cat file1 file2 ... | ccstrip >output .P2 and thus avoid learning how to access files from a program. By the way, the call to .UL exit at the end is not necessary to make the program work properly, but it assures that any caller of the program will see a normal termination status (conventionally 0) from the program when it completes. Section 6 discusses status returns in more detail. nd.) .P1 main(argc, argv) /* echo arguments */ int argc; char *argv[]; { int i; for (i = 1; i < argc; i++) printf("%s%c", argv[i], (i .P2 which defines certain macros and variables. The routines are in the normal C library, so no special library argument is needed for loading. All names in the include file intended only for internal use begin with an underscore .UL _ to reduce the possibility of collision with a user name. The names intended to be visible outside the package are .IP \f3stdin\f1 10 The name of the standard input file .IP \f3stdout\f1 10 The name of the standard output file .IP \f3stderr\f1 10 The name of the standard error file .IP \f3EOF\f1 10 is actually \-1, and is the value returned by the read routines on end-of-file or error. .IP \f3NULL\f1 10 is a notation for the null pointer, returned by pointer-valued functions to indicate an error .IP \f3FILE\f1 10 expands to .UL struct .UL _iob and is a useful shorthand when declaring pointers to streams. .IP \f3BUFSIZ\f1 10 is a number (viz. 512) of the size suitable for an I/O buffer supplied by the user. See .UL setbuf , below. .IP \f3getc,\ getchar,\ putc,\ putchar,\ feof,\ ferror,\ f\&ileno\f1 10 .br are defined as macros. Their actions are described below; they are mentioned here to point out that it is not possible to redeclare them and that they are not actually functions; thus, for example, they may not have breakpoints set on them. .PP The routines in this package offer the convenience of automatic buffer allocation and output flushing where appropriate. The names .UL stdin , .UL stdout , and .UL stderr are in effect constants and may not be assigned to. .SH 2. Calls .nr PD .4v .LP .UL FILE\ *fopen(filename,\ type)\ char\ *filename,\ *type; .nr PD 0 .IP .br opens the file and, if needed, allocates a buffer for it. .UL filename is a character string specifying the name. .UL type is a character string (not a single character). It may be .UL \&"r" , .UL \&"w" , or .UL \&"a" to indicate intent to read, write, or append. The value returned is a file pointer. If it is .UL NULL the attempt to open failed. .ne 3 .nr PD .4v .LP .UL FILE\ *freopen(filename,\ type,\ ioptr)\ char\ *filename,\ *type;\ FILE\ *ioptr; .nr PD 0 .IP .br The stream named by .UL ioptr is closed, if necessary, and then reopened as if by .UL fopen . If the attempt to open fails, .UL NULL is returned, otherwise .UL ioptr , which will now refer to the new file. Often the reopened stream is .UL stdin or .UL stdout . .nr PD .4v .LP .UL int\ getc(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP returns the next character from the stream named by .UL ioptr , which is a pointer to a file such as returned by .UL fopen , or the name .UL stdin . The integer .UL EOF is returned on end-of-file or when an error occurs. The null character .UL \e0 is a legal character. .nr PD .4v .LP .UL int\ fgetc(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br acts like .UL getc but is a genuine function, not a macro, so it can be pointed to, passed as an argument, etc. .nr PD .4v .LP .UL putc(c,\ ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br .UL putc writes the character .UL c on the output stream named by .UL ioptr , which is a value returned from .UL fopen or perhaps .UL stdout or .UL stderr . The character is returned as value, but .UL EOF is returned on error. .nr PD .4v .LP .UL fputc(c,\ ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br acts like .UL putc but is a genuine function, not a macro. .nr PD .4v .LP .UL fclose(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br The file corresponding to .UL ioptr is closed after any buffers are emptied. A buffer allocated by the I/O system is freed. .UL fclose is automatic on normal termination of the program. .nr PD .4v .LP .UL fflush(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br Any buffered information on the (output) stream named by .UL ioptr is written out. Output files are normally buffered if and only if they are not directed to the terminal; however, .UL stderr always starts off unbuffered and remains so unless .UL setbuf is used, or unless it is reopened. .nr PD .4v .LP .UL exit(errcode); .nr PD 0 .IP .br terminates the process and returns its argument as status to the parent. This is a special version of the routine which calls .UL fflush for each output file. To terminate without flushing, use .UL _exit . .nr PD .4v .LP .UL feof(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br returns non-zero when end-of-file has occurred on the specified input stream. .nr PD .4v .LP .UL ferror(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br returns non-zero when an error has occurred while reading or writing the named stream. The error indication lasts until the file has been closed. .nr PD .4v .LP .UL getchar(); .nr PD 0 .IP .br is identical to .UL getc(stdin) . .nr PD .4v .LP .UL putchar(c); .nr PD 0 .IP .br is identical to .UL putc(c,\ stdout) . .nr PD .4v .nr PD .4v .ne 2 .LP .UL char\ *fgets(s,\ n,\ ioptr)\ char\ *s;\ FILE\ *ioptr; .nr PD 0 .IP .br reads up to .UL n-1 characters from the stream .UL ioptr into the character pointer .UL s . The read terminates with a newline character. The newline character is placed in the buffer followed by a null character. .UL fgets returns the first argument, or .UL NULL if error or end-of-file occurred. .nr PD .4v .nr PD .4v .LP .UL fputs(s,\ ioptr)\ char\ *s;\ FILE\ *ioptr; .nr PD 0 .IP .br writes the null-terminated string (character array) .UL s on the stream .UL ioptr . No newline is appended. No value is returned. .nr PD .4v .LP .UL ungetc(c,\ ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br The argument character .UL c is pushed back on the input stream named by .UL ioptr . Only one character may be pushed back. .ne 5 .nr PD .4v .LP .UL printf(format,\ a1,\ ...)\ char\ *format; .br .UL fprintf(ioptr,\ format,\ a1,\ ...)\ FILE\ *ioptr;\ char\ *format; .br .UL sprintf(s,\ format,\ a1,\ ...)char\ *s,\ *format; .br .nr PD 0 .IP .UL printf writes on the standard output. .UL fprintf writes on the named output stream. .UL sprintf puts characters in the character array (string) named by .UL s . The specifications are as described in section .UL printf (3) of the .ul .UC UNIX .ul Programmer's Manual. .nr PD .4v .LP .UL scanf(format,\ a1,\ ...)\ char\ *format; .br .UL fscanf(ioptr,\ format,\ a1,\ ...)\ FILE\ *ioptr;\ char\ *format; .br .UL sscanf(s,\ format,\ a1,\ ...)\ char\ *s,\ *format; .nr PD 0 .IP .br .UL scanf reads from the standard input. .UL fscanf reads from the named input stream. .UL sscanf reads from the character string supplied as .UL s . .UL scanf reads characters, interprets them according to a format, and stores the results in its arguments. Each routine expects as arguments a control string .UL format , and a set of arguments, .I each of which must be a pointer, .R indicating where the converted input should be stored. .if t .sp .4v .UL scanf returns as its value the number of successfully matched and assigned input items. This can be used to decide how many input items were found. On end of file, .UL EOF is returned; note that this is different from 0, which means that the next input character does not match what was called for in the control string. .RE .nr PD .4v .LP .UL fread(ptr,\ sizeof(*ptr),\ nitems,\ ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br reads .UL nitems of data beginning at .UL ptr from file .UL ioptr . No advance notification that binary I/O is being done is required; when, for portability reasons, it becomes required, it will be done by adding an additional character to the mode-string on the .UL fopen call. .nr PD .4v .LP .UL fwrite(ptr,\ sizeof(*ptr),\ nitems,\ ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br Like .UL fread , but in the other direction. .nr PD .4v .LP .UL rewind(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br rewinds the stream named by .UL ioptr . It is not very useful except on input, since a rewound output file is still open only for output. .nr PD .4v .LP .UL system(string)\ char\ *string; .nr PD 0 .IP .br The .UL string is executed by the shell as if typed at the terminal. .nr PD .4v .LP .UL getw(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br returns the next word from the input stream named by .UL ioptr . .UL EOF is returned on end-of-file or error, but since this a perfectly good integer .UL feof and .UL ferror should be used. A ``word'' is 16 bits on the .UC PDP-11. .nr PD .4v .LP .UL putw(w,\ ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br writes the integer .UL w on the named output stream. .nr PD .4v .LP .UL setbuf(ioptr,\ buf)\ FILE\ *ioptr;\ char\ *buf; .nr PD 0 .IP .br .UL setbuf may be used after a stream has been opened but before I/O has started. If .UL buf is .UL NULL , the stream will be unbuffered. Otherwise the buffer supplied will be used. It must be a character array of sufficient size: .P1 char buf[BUFSIZ]; .P2 .nr PD .4v .LP .UL fileno(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br returns the integer file descriptor associated with the file. .nr PD .4v .LP .UL fseek(ioptr,\ offset,\ ptrname)\ FILE\ *ioptr;\ long\ offset; .nr PD 0 .IP .br The location of the next byte in the stream named by .UL ioptr is adjusted. .UL offset is a long integer. If .UL ptrname is 0, the offset is measured from the beginning of the file; if .UL ptrname is 1, the offset is measured from the current read or write pointer; if .UL ptrname is 2, the offset is measured from the end of the file. The routine accounts properly for any buffering. (When this routine is used on .UC UNIX \& non- systems, the offset must be a value returned from .UL ftell and the ptrname must be 0). .ne 3 .nr PD .4v .LP .UL long\ ftell(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br The byte offset, measured from the beginning of the file, associated with the named stream is returned. Any buffering is properly accounted for. (On .UC UNIX \& non- systems the value of this call is useful only for handing to .UL fseek , so as to position the file to the same place it was when .UL ftell was called.) .nr PD .4v .LP .UL getpw(uid,\ buf)\ char\ *buf; .nr PD 0 .IP .br The password file is searched for the given integer user ID. If an appropriate line is found, it is copied into the character array .UL buf , and 0 is returned. If no line is found corresponding to the user ID then 1 is returned. .nr PD .4v .LP .UL char\ *malloc(num); .nr PD 0 .IP .br allocates .UL num bytes. The pointer returned is sufficiently well aligned to be usable for any purpose. .UL NULL is returned if no space is available. .nr PD .4v .LP .UL char\ *calloc(num,\ size); .nr PD 0 .IP .br allocates space for .UL num items each of size .UL size . The space is guaranteed to be set to 0 and the pointer is sufficiently well aligned to be usable for any purpose. .UL NULL is returned if no space is available . .nr PD .4v .LP .UL cfree(ptr)\ char\ *ptr; .nr PD 0 .IP .br Space is returned to the pool used by .UL calloc . Disorder can be expected if the pointer was not obtained from .UL calloc . .nr PD .4v .LP The following are macros whose definitions may be obtained by including .UL . .nr PD .4v .LP .UL isalpha(c) returns non-zero if the argument is alphabetic. .nr PD .4v .LP .UL isupper(c) returns non-zero if the argument is upper-case alphabetic. .nr PD .4v .LP .UL islower(c) returns non-zero if the argument is lower-case alphabetic. .nr PD .4v .LP .UL isdigit(c) returns non-zero if the argument is a digit. .nr PD .4v .LP .UL isspace(c) returns non-zero if the argument is a spacing character: tab, newline, carriage return, vertical tab, form feed, space. .nr PD .4v .LP .UL ispunct(c) returns non-zero if the argument is any punctuation character, i.e., not a space, letter, digit or control character. .nr PD .4v .LP .UL isalnum(c) returns non-zero if the argument is a letter or a digit. .nr PD .4v .LP .UL isprint(c) returns non-zero if the argument is printable \(em a letter, digit, or punctuation character. .nr PD .4v .LP .UL iscntrl(c) returns non-zero if the argument is a control character. .nr PD .4v .LP .UL isascii(c) returns non-zero if the argument is an ascii character, i.e., less than octal 0200. .nr PD .4v .LP .UL toupper(c) returns the upper-case character corresponding to the lower-case letter .UL c. .nr PD .4v .LP .UL tolower(c) returns the lower-case character corresponding to the upper-case letter .UL c . .br The file corresponding to .UL ioptr is closed after any buffers are emptied. A buffer allocated by the I/O system is freed. .UL fclose is automatic on normal termination of the program. .nr PD .4v .LP .UL fflush(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br Any buffered information on the (output) stream named by .UL ioptr is written out. Output files are normally buffered if and only if doc/ps2/03.uprog/p8 444 3 12 566 3653655411 7130 .\" @(#)p8 6.1 (Berkeley) 4/25/86 .\" .SH References .LP .IP [1] K. L. Thompson and D. M. Ritchie, .ul The .ul .UC UNIX .ul Programmer's Manual, Bell Laboratories, 1978. .IP [2] B. W. Kernighan and D. M. Ritchie, .ul The C Programming Language, Prentice-Hall, Inc., 1978. .IP [3] B. W. Kernighan, .UC UNIX \& `` for Beginners \(em Second Edition.'' Bell Laboratories, 1978. doc/ps2/03.uprog/p4 444 3 12 30037 3660734026 7156 .\" @(#)p4 6.2 (Berkeley) 5/9/86 .\" .NH LOW-LEVEL I/O .PP This section describes the bottom level of I/O on the .UC UNIX system. The lowest level of I/O in .UC UNIX provides no buffering or any other services; it is in fact a direct entry into the operating system. You are entirely on your own, but on the other hand, you have the most control over what happens. And since the calls and usage are quite simple, this isn't as bad as it sounds. .NH 2 File Descriptors .PP In the .UC UNIX operating system, all input and output is done by reading or writing files, because all peripheral devices, even the user's terminal, are files in the file system. This means that a single, homogeneous interface handles all communication between a program and peripheral devices. .PP In the most general case, before reading or writing a file, it is necessary to inform the system of your intent to do so, a process called ``opening'' the file. If you are going to write on a file, it may also be necessary to create it. The system checks your right to do so (Does the file exist? Do you have permission to access it?), and if all is well, returns a small positive integer called a .ul file descriptor. Whenever I/O is to be done on the file, the file descriptor is used instead of the name to identify the file. (This is roughly analogous to the use of .UC READ(5,...) and .UC WRITE(6,...) in Fortran.) All information about an open file is maintained by the system; the user program refers to the file only by the file descriptor. .PP The file pointers discussed in section 3 are similar in spirit to file descriptors, but file descriptors are more fundamental. A file pointer is a pointer to a structure that contains, among other things, the file descriptor for the file in question. .PP Since input and output involving the user's terminal are so common, special arrangements exist to make this convenient. When the command interpreter (the ``shell'') runs a program, it opens three files, with file descriptors 0, 1, and 2, called the standard input, the standard output, and the standard error output. All of these are normally connected to the terminal, so if a program reads file descriptor 0 and writes file descriptors 1 and 2, it can do terminal I/O without worrying about opening the files. .PP If I/O is redirected to and from files with .UL < and .UL > , as in .P1 prog outfile .P2 the shell changes the default assignments for file descriptors 0 and 1 from the terminal to the named files. Similar observations hold if the input or output is associated with a pipe. Normally file descriptor 2 remains attached to the terminal, so error messages can go there. In all cases, the file assignments are changed by the shell, not by the program. The program does not need to know where its input comes from nor where its output goes, so long as it uses file 0 for input and 1 and 2 for output. .NH 2 Read and Write .PP All input and output is done by two functions called .UL read and .UL write . For both, the first argument is a file descriptor. The second argument is a buffer in your program where the data is to come from or go to. The third argument is the number of bytes to be transferred. The calls are .P1 n_read = read(fd, buf, n); n_written = write(fd, buf, n); .P2 Each call returns a byte count which is the number of bytes actually transferred. On reading, the number of bytes returned may be less than the number asked for, because fewer than .UL n bytes remained to be read. (When the file is a terminal, .UL read normally reads only up to the next newline, which is generally less than what was requested.) A return value of zero bytes implies end of file, and .UL -1 indicates an error of some sort. For writing, the returned value is the number of bytes actually written; it is generally an error if this isn't equal to the number supposed to be written. .PP The number of bytes to be read or written is quite arbitrary. The two most common values are 1, which means one character at a time (``unbuffered''), and 512, which corresponds to a physical blocksize on many peripheral devices. This latter size will be most efficient, but even character at a time I/O is not inordinately expensive. .PP Putting these facts together, we can write a simple program to copy its input to its output. This program will copy anything to anything, since the input and output can be redirected to any file or device. .P1 #define BUFSIZE 512 /* best size for PDP-11 UNIX */ main() /* copy input to output */ { char buf[BUFSIZE]; int n; while ((n = read(0, buf, BUFSIZE)) > 0) write(1, buf, n); exit(0); } .P2 If the file size is not a multiple of .UL BUFSIZE , some .UL read will return a smaller number of bytes to be written by .UL write ; the next call to .UL read after that will return zero. .PP It is instructive to see how .UL read and .UL write can be used to construct higher level routines like .UL getchar , .UL putchar , etc. For example, here is a version of .UL getchar which does unbuffered input. .P1 #define CMASK 0377 /* for making char's > 0 */ getchar() /* unbuffered single character input */ { char c; return((read(0, &c, 1) > 0) ? c & CMASK : EOF); } .P2 .UL c .ul must be declared .UL char , because .UL read accepts a character pointer. The character being returned must be masked with .UL 0377 to ensure that it is positive; otherwise sign extension may make it negative. (The constant .UL 0377 is appropriate for the .UC PDP -11 but not necessarily for other machines.) .PP The second version of .UL getchar does input in big chunks, and hands out the characters one at a time. .P1 #define CMASK 0377 /* for making char's > 0 */ #define BUFSIZE 512 getchar() /* buffered version */ { static char buf[BUFSIZE]; static char *bufp = buf; static int n = 0; if (n == 0) { /* buffer is empty */ n = read(0, buf, BUFSIZE); bufp = buf; } return((--n >= 0) ? *bufp++ & CMASK : EOF); } .P2 .NH 2 Open, Creat, Close, Unlink .PP Other than the default standard input, output and error files, you must explicitly open files in order to read or write them. There are two system entry points for this, .UL open and .UL creat [sic]. .PP .UL open is rather like the .UL fopen discussed in the previous section, except that instead of returning a file pointer, it returns a file descriptor, which is just an .UL int . .P1 int fd; fd = open(name, rwmode); .P2 As with .UL fopen , the .UL name argument is a character string corresponding to the external file name. The access mode argument is different, however: .UL rwmode is 0 for read, 1 for write, and 2 for read and write access. .UL open returns .UL -1 if any error occurs; otherwise it returns a valid file descriptor. .PP It is an error to try to .UL open a file that does not exist. The entry point .UL creat is provided to create new files, or to re-write old ones. .P1 fd = creat(name, pmode); .P2 returns a file descriptor if it was able to create the file called .UL name , and .UL -1 if not. If the file already exists, .UL creat will truncate it to zero length; it is not an error to .UL creat a file that already exists. .PP If the file is brand new, .UL creat creates it with the .ul protection mode specified by the .UL pmode argument. In the .UC UNIX file system, there are nine bits of protection information associated with a file, controlling read, write and execute permission for the owner of the file, for the owner's group, and for all others. Thus a three-digit octal number is most convenient for specifying the permissions. For example, 0755 specifies read, write and execute permission for the owner, and read and execute permission for the group and everyone else. .PP To illustrate, here is a simplified version of the .UC UNIX utility .IT cp , a program which copies one file to another. (The main simplification is that our version copies only one file, and does not permit the second argument to be a directory.) .P1 #define NULL 0 #define BUFSIZE 512 #define PMODE 0644 /* RW for owner, R for group, others */ main(argc, argv) /* cp: copy f1 to f2 */ int argc; char *argv[]; { int f1, f2, n; char buf[BUFSIZE]; if (argc != 3) error("Usage: cp from to", NULL); if ((f1 = open(argv[1], 0)) == -1) error("cp: can't open %s", argv[1]); if ((f2 = creat(argv[2], PMODE)) == -1) error("cp: can't create %s", argv[2]); while ((n = read(f1, buf, BUFSIZE)) > 0) if (write(f2, buf, n) != n) error("cp: write error", NULL); exit(0); } .P2 .P1 error(s1, s2) /* print error message and die */ char *s1, *s2; { printf(s1, s2); printf("\en"); exit(1); } .P2 .PP As we said earlier, there is a limit (typically 15-25) on the number of files which a program may have open simultaneously. Accordingly, any program which intends to process many files must be prepared to re-use file descriptors. The routine .UL close breaks the connection between a file descriptor and an open file, and frees the file descriptor for use with some other file. Termination of a program via .UL exit or return from the main program closes all open files. .PP The function .UL unlink(filename) removes the file .UL filename from the file system. .NH 2 Random Access \(em Seek and Lseek .PP File I/O is normally sequential: each .UL read or .UL write takes place at a position in the file right after the previous one. When necessary, however, a file can be read or written in any arbitrary order. The system call .UL lseek provides a way to move around in a file without actually reading or writing: .P1 lseek(fd, offset, origin); .P2 forces the current position in the file whose descriptor is .UL fd to move to position .UL offset , which is taken relative to the location specified by .UL origin . Subsequent reading or writing will begin at that position. .UL offset is a .UL long ; .UL fd and .UL origin are .UL int 's. .UL origin can be 0, 1, or 2 to specify that .UL offset is to be measured from the beginning, from the current position, or from the end of the file respectively. For example, to append to a file, seek to the end before writing: .P1 lseek(fd, 0L, 2); .P2 To get back to the beginning (``rewind''), .P1 lseek(fd, 0L, 0); .P2 Notice the .UL 0L argument; it could also be written as .UL (long)\ 0 . .PP With .UL lseek , it is possible to treat files more or less like large arrays, at the price of slower access. For example, the following simple function reads any number of bytes from any arbitrary place in a file. .P1 get(fd, pos, buf, n) /* read n bytes from position pos */ int fd, n; long pos; char *buf; { lseek(fd, pos, 0); /* get to pos */ return(read(fd, buf, n)); } .P2 .PP In pre-version 7 .UC UNIX , the basic entry point to the I/O system is called .UL seek . .UL seek is identical to .UL lseek , except that its .UL offset argument is an .UL int rather than a .UL long . Accordingly, since .UC PDP -11 integers have only 16 bits, the .UL offset specified for .UL seek is limited to 65,535; for this reason, .UL origin values of 3, 4, 5 cause .UL seek to multiply the given offset by 512 (the number of bytes in one physical block) and then interpret .UL origin as if it were 0, 1, or 2 respectively. Thus to get to an arbitrary place in a large file requires two seeks, first one which selects the block, then one which has .UL origin equal to 1 and moves to the desired byte within the block. .NH 2 Error Processing .PP The routines discussed in this section, and in fact all the routines which are direct entries into the system can incur errors. Usually they indicate an error by returning a value of \-1. Sometimes it is nice to know what sort of error occurred; for this purpose all these routines, when appropriate, leave an error number in the external cell .UL errno . The meanings of the various error numbers are listed in the introduction to Section II of the .I .UC UNIX Programmer's Manual, .R so your program can, for example, determine if an attempt to open a file failed because it did not exist or because the user lacked permission to read it. Perhaps more commonly, you may want to print out the reason for failure. The routine .UL perror will print a message associated with the value of .UL errno ; more generally, .UL sys\_errno is an array of character strings which can be indexed by .UL errno and printed by your program. v .LP .UL fwrite(ptr,\ sizeof(*ptr),\ nitems,\ ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br Like .UL fread , but in the other direction. .nr PD .4v .LP .UL rewind(ioptr)\ FILE\ *ioptr; .nr PD 0 .IP .br rewinds the stream named by .UL ioptr . It is not very useful except on input, since a rewound output file is still open only for output. .nr PD .4v .LP .UL system(string)\ char\ *string; .nr PD 0 .IP .br The .UL string is executed by the shell as if typed at the terminal. .nr PD .4v doc/ps2/03.uprog/Makefile 444 3 12 1175 3660735057 10336 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.2 (Berkeley) 5/10/86 # SRCS= p0 p1 p2 p3 p4 p5 p6 p8 p9 MAC = p.mac MACROS= -msU PRINTER=Pdp TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TROFF} -t ${MACROS} ${MAC} ${SRCS} > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done bytes to be written by .UL write ; the next call to .UL read after that will return zero. .PP It is instructive to see how .UL read and .UL write can be used to construct higher level routines like .UL getchar , .UL putchar , etc. For example, here is a version of .UL getchar which does unbuffered input. .P1 #define CMASK 0377 /* for making char's > 0 */ getchar() /* unbuffered singdoc/ps2/03.uprog/p6 444 3 12 20423 3660734032 7153 .\" @(#)p6 6.2 (Berkeley) 5/9/86 .\" .NH SIGNALS \(em INTERRUPTS AND ALL THAT .PP This section is concerned with how to deal gracefully with signals from the outside world (like interrupts), and with program faults. Since there's nothing very useful that can be done from within C about program faults, which arise mainly from illegal memory references or from execution of peculiar instructions, we'll discuss only the outside-world signals: .IT interrupt , which is sent when the .UC DEL character is typed; .IT quit , generated by the .UC FS character; .IT hangup , caused by hanging up the phone; and .IT terminate , generated by the .IT kill command. When one of these events occurs, the signal is sent to .IT all processes which were started from the corresponding terminal; unless other arrangements have been made, the signal terminates the process. In the .IT quit case, a core image file is written for debugging purposes. .PP The routine which alters the default action is called .UL signal . It has two arguments: the first specifies the signal, and the second specifies how to treat it. The first argument is just a number code, but the second is the address is either a function, or a somewhat strange code that requests that the signal either be ignored, or that it be given the default action. The include file .UL signal.h gives names for the various arguments, and should always be included when signals are used. Thus .P1 #include ... signal(SIGINT, SIG_IGN); .P2 causes interrupts to be ignored, while .P1 signal(SIGINT, SIG_DFL); .P2 restores the default action of process termination. In all cases, .UL signal returns the previous value of the signal. The second argument to .UL signal may instead be the name of a function (which has to be declared explicitly if the compiler hasn't seen it already). In this case, the named routine will be called when the signal occurs. Most commonly this facility is used to allow the program to clean up unfinished business before terminating, for example to delete a temporary file: .P1 #include main() { int onintr(); if (signal(SIGINT, SIG_IGN) != SIG_IGN) signal(SIGINT, onintr); /* Process ... */ exit(0); } onintr() { unlink(tempfile); exit(1); } .P2 .PP Why the test and the double call to .UL signal ? Recall that signals like interrupt are sent to .ul all processes started from a particular terminal. Accordingly, when a program is to be run non-interactively (started by .UL & ), the shell turns off interrupts for it so it won't be stopped by interrupts intended for foreground processes. If this program began by announcing that all interrupts were to be sent to the .UL onintr routine regardless, that would undo the shell's effort to protect it when run in the background. .PP The solution, shown above, is to test the state of interrupt handling, and to continue to ignore interrupts if they are already being ignored. The code as written depends on the fact that .UL signal returns the previous state of a particular signal. If signals were already being ignored, the process should continue to ignore them; otherwise, they should be caught. .PP A more sophisticated program may wish to intercept an interrupt and interpret it as a request to stop what it is doing and return to its own command-processing loop. Think of a text editor: interrupting a long printout should not cause it to terminate and lose the work already done. The outline of the code for this case is probably best written like this: .P1 #include #include jmp_buf sjbuf; main() { int (*istat)(), onintr(); istat = signal(SIGINT, SIG_IGN); /* save original status */ setjmp(sjbuf); /* save current stack position */ if (istat != SIG_IGN) signal(SIGINT, onintr); /* main processing loop */ } .P2 .P1 onintr() { printf("\enInterrupt\en"); longjmp(sjbuf); /* return to saved state */ } .P2 The include file .UL setjmp.h declares the type .UL jmp_buf an object in which the state can be saved. .UL sjbuf is such an object; it is an array of some sort. The .UL setjmp routine then saves the state of things. When an interrupt occurs, a call is forced to the .UL onintr routine, which can print a message, set flags, or whatever. .UL longjmp takes as argument an object stored into by .UL setjmp , and restores control to the location after the call to .UL setjmp , so control (and the stack level) will pop back to the place in the main routine where the signal is set up and the main loop entered. Notice, by the way, that the signal gets set again after an interrupt occurs. This is necessary; most signals are automatically reset to their default action when they occur. .PP Some programs that want to detect signals simply can't be stopped at an arbitrary point, for example in the middle of updating a linked list. If the routine called on occurrence of a signal sets a flag and then returns instead of calling .UL exit or .UL longjmp , execution will continue at the exact point it was interrupted. The interrupt flag can then be tested later. .PP There is one difficulty associated with this approach. Suppose the program is reading the terminal when the interrupt is sent. The specified routine is duly called; it sets its flag and returns. If it were really true, as we said above, that ``execution resumes at the exact point it was interrupted,'' the program would continue reading the terminal until the user typed another line. This behavior might well be confusing, since the user might not know that the program is reading; he presumably would prefer to have the signal take effect instantly. The method chosen to resolve this difficulty is to terminate the terminal read when execution resumes after the signal, returning an error code which indicates what happened. .PP Thus programs which catch and resume execution after signals should be prepared for ``errors'' which are caused by interrupted system calls. (The ones to watch out for are reads from a terminal, .UL wait , and .UL pause .) A program whose .UL onintr program just sets .UL intflag , resets the interrupt signal, and returns, should usually include code like the following when it reads the standard input: .P1 if (getchar() == EOF) if (intflag) /* EOF caused by interrupt */ else /* true end-of-file */ .P2 .PP A final subtlety to keep in mind becomes important when signal-catching is combined with execution of other programs. Suppose a program catches interrupts, and also includes a method (like ``!'' in the editor) whereby other programs can be executed. Then the code should look something like this: .P1 if (fork() == 0) execl(...); signal(SIGINT, SIG_IGN); /* ignore interrupts */ wait(&status); /* until the child is done */ signal(SIGINT, onintr); /* restore interrupts */ .P2 Why is this? Again, it's not obvious but not really difficult. Suppose the program you call catches its own interrupts. If you interrupt the subprogram, it will get the signal and return to its main loop, and probably read your terminal. But the calling program will also pop out of its wait for the subprogram and read your terminal. Having two processes reading your terminal is very unfortunate, since the system figuratively flips a coin to decide who should get each line of input. A simple way out is to have the parent program ignore interrupts until the child is done. This reasoning is reflected in the standard I/O library function .UL system : .P1 #include system(s) /* run command string s */ char *s; { int status, pid, w; register int (*istat)(), (*qstat)(); if ((pid = fork()) == 0) { execl("/bin/sh", "sh", "-c", s, 0); _exit(127); } istat = signal(SIGINT, SIG_IGN); qstat = signal(SIGQUIT, SIG_IGN); while ((w = wait(&status)) != pid && w != -1) ; if (w == -1) status = -1; signal(SIGINT, istat); signal(SIGQUIT, qstat); return(status); } .P2 .PP As an aside on declarations, the function .UL signal obviously has a rather strange second argument. It is in fact a pointer to a function delivering an integer, and this is also the type of the signal routine itself. The two values .UL SIG_IGN and .UL SIG_DFL have the right type, but are chosen so they coincide with no possible actual functions. For the enthusiast, here is how they are defined for the PDP-11; the definitions should be sufficiently ugly and nonportable to encourage use of the include file. .P1 #define SIG_DFL (int (*)())0 #define SIG_IGN (int (*)())1 .P2 t very useful except on input, since a rewound output file is still open only for output. .nr PD .4v .LP .UL system(string)\ char\ *string; .nr PD 0 .IP .br The .UL string is executed by the shell as if typed at the terminal. .nr PD .4v doc/ps2/04.implement/ 755 3 12 0 3660731777 7453 doc/ps2/04.implement/Makefile 444 3 12 1332 3660571613 11164 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 4/29/86 # SRCS= implement PICFILES= fig1.pic fig2.pic MACROS= -msU PRINTER=Pdp TROFF= ditroff -${PRINTER} REFER= refer -e PIC= pic -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${PICFILES} soelim ${SRCS} > paper.pic ${REFER} paper.pic | ${PIC} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done which were started from the corresponding terminal; unless other arrangements have been made, the signal terminates the process. In the .IT quit case, a core image file is written for debugging purposes. .PP The routine which alters the default action is called .UL signal . It has two argumendoc/ps2/04.implement/fig1.pic 444 3 12 3162 3660571613 11052 .PS .ps 9 [ PT: [ T: box invis ht .2i "Process Table"; move down .125i A: box ht .25i; down PTE: box "Process" "Table" "Entry"; down C: box ht .25i ] move right 1.5i TT: [ T: box invis ht .2i "Text Table"; move down .125i A: box ht .25i; down TTE: box "Text" "Table" "Entry"; down C: box ht .25i ] move down 1i from TT.C.s move right 0.5i UTS: [ box ht 0.75i wid 0.75i "User" "Text" "Segment" ] move left 1.5i from UTS.w DS: [ SDS: box "System" "Data" "Segment" ; move down .5i from SDS.n ; UDS: box ht 0.75i "User" "Data" "Segment" ] move left 1i from DS.UDS.w move down 0.25i UAS: [ box invis "User" "Address" "Space" ] line from UAS.ne to UAS.se line from UAS.nw to UAS.sw line right 0.15i from UAS.nw line right 0.15i from UAS.sw line left 0.15i from UAS.ne line left 0.15i from UAS.se arrow from 1/4 of the way between PT.PTE.ne and PT.PTE.se right 1.875i arrow from TT.TTE.e right .5i then down to UTS.n arrow from PT.PTE.e right .875i then down to DS.SDS.n arrow from 3/4 of the way between PT.PTE.ne and PT.PTE.se right .25i then down 1.5i then right .25i arrow from 1/4 of the way between UAS.ne and UAS.se right .375i then up .25i then right .25i arrow from 3/4 of the way between UAS.ne and UAS.se right 2.375i then up .875i then right .5i move up 1.3175i from UAS.nw move left .75i line right 5.625i move left 5.25i move up .3125i RS: [ box invis ht 0.2i "Resident" ] move down .8i SW: [ box invis ht 0.2i "Swapped" ] arrow <-> from RS.s to SW.n ] .PE rns the previous value of the signal. The second argument to .UL signal may instead be the name of a function (which has to be declared explicitly if the compiler hasn't seen it already). In this case, the named routine will be called when the signal occurs. Most commonly this facility is used to allow the program to clean up unfinished business before terminating, for example to delete a tempordoc/ps2/04.implement/fig2.pic 444 3 12 4135 3660571613 11054 .PS .ps 9 [ PUOFT: [ A: box invis ht .4i wid 1i "Per-User Open" "File Table" B: box ht .25i with .n at A.s C: box with .n at B.s D: box ht .25i with .n at C.s ] move down 1.0625i left 1.25i from PUOFT.D.s OFT: [ A: box invis ht .4i wid 1i "Open File" "Table" B: box ht .25i with .n at A.s C: box with .n at B.s D: box ht .25i with .n at C.s ] move down 1.0625i right 1.25i from PUOFT.D.s AIT: [ A: box invis ht .4i wid 1i "Active I-node" "Table" B: box ht .25i with .n at A.s C: box with .n at B.s D: box ht .25i with .n at C.s ] move down 2.5i from PUOFT.D.s IF: [ A: box ht .25i B: box ht .25i "I-node" with .n at A.s C: box ht .25i with .n at B.s D: box ht .25i "File" with .n at C.s E: box ht .25i with .n at D.s ] move right 1.5i from IF.D.w FMA: [ box invis "File" "Mapping" "Algorithms" ] line from FMA.ne to FMA.se line from FMA.nw to FMA.sw line left .15i from FMA.se line left .15i from FMA.ne line right .15i from FMA.nw line right .15i from FMA.sw arrow from FMA.w to IF.D.e arrow from AIT.C.e right .25i then down 2.125i then left .5i arrow from OFT.C.e to AIT.C.w arrow from PUOFT.C.w left .5i then down 1.625i then left .5i arrow <-> from IF.B.e right .5i then up 1.5i then right .5i move up .1875i from OFT.A.nw line right 5i move left 5i down 1.9375i line right 5i move up 1.63475i right 2.75i from PUOFT.D.s line right .1i down .1i then down .6i then right .1i down .1i then left .1i down .1i then down .6i then left .1i down .1i move down .34375i right 2.75i from PUOFT.D.s line right .1i down .1i then down .6i then right .1i down .1i then left .1i down .1i then down .6i then left .1i down .1i move down 2.34375i right 2.75i from PUOFT.D.s line right .1i down .1i then down .6i then right .1i down .1i then left .1i down .1i then down .6i then left .1i down .1i move up 0.817375i right 2.9i from PUOFT.D.s box invis "Swapped" "Per User" move down 1.15625i right 2.9i from PUOFT.D.s box invis wid 1i "Resident" "Per System" move down 3.15675i right 2.9i from PUOFT.D.s box invis ht 1i wid 1i "Secondary" "Storage" "Per" "File System" ] .PE IG_IGN) signal(SIGINT, onintr); /* Process ... */ exit(0); } onintr() { unlink(tempfile); exit(1); } .P2 .PP Why the test and the double call to .UL signal ? Recall that signals like interrupt are sent to .ul all processes started from a particular terminal. Accordingly, when a program is to be run non-interactively (started by .UL & ), the shell turns off interrupts for it so it won't be stopped by interrudoc/ps2/04.implement/implement 444 3 12 104022 3660571615 11503 .\" @(#)implement 6.1 (Berkeley) 4/29/86 .\" .EH 'PS2:4-%''UNIX Implementation' .OH 'UNIX Implementation''PS2:4-%' .de P1 .DS .. .de P2 .DE .. .de UL .lg 0 .if n .ul \%\&\\$3\f3\\$1\fR\&\\$2 .lg .. .de UC \&\\$3\s-1\\$1\\s0\&\\$2 .. .de IT .lg 0 .if n .ul \%\&\\$3\f2\\$1\fR\&\\$2 .lg .. .de SP .sp \\$1 .. .hw device .TL UNIX Implementation .AU "MH 2C-523" 2394 K. Thompson .AI .MH .AB This paper describes in high-level terms the implementation of the resident .UX kernel. This discussion is broken into three parts. The first part describes how the .UX system views processes, users, and programs. The second part describes the I/O system. The last part describes the .UX file system. .AE .NH INTRODUCTION .PP The .UX kernel consists of about 10,000 lines of C code and about 1,000 lines of assembly code. The assembly code can be further broken down into 200 lines included for the sake of efficiency (they could have been written in C) and 800 lines to perform hardware functions not possible in C. .PP This code represents 5 to 10 percent of what has been lumped into the broad expression ``the .UX operating system.'' The kernel is the only .UX code that cannot be substituted by a user to his own liking. For this reason, the kernel should make as few real decisions as possible. This does not mean to allow the user a million options to do the same thing. Rather, it means to allow only one way to do one thing, but have that way be the least-common divisor of all the options that might have been provided. .PP What is or is not implemented in the kernel represents both a great responsibility and a great power. It is a soap-box platform on ``the way things should be done.'' Even so, if ``the way'' is too radical, no one will follow it. Every important decision was weighed carefully. Throughout, simplicity has been substituted for efficiency. Complex algorithms are used only if their complexity can be localized. .NH PROCESS CONTROL .PP In the .UX system, a user executes programs in an environment called a user process. When a system function is required, the user process calls the system as a subroutine. At some point in this call, there is a distinct switch of environments. After this, the process is said to be a system process. In the normal definition of processes, the user and system processes are different phases of the same process (they never execute simultaneously). For protection, each system process has its own stack. .PP The user process may execute from a read-only text segment, which is shared by all processes executing the same code. There is no .IT functional benefit from shared-text segments. An .IT efficiency benefit comes from the fact that there is no need to swap read-only segments out because the original copy on secondary memory is still current. This is a great benefit to interactive programs that tend to be swapped while waiting for terminal input. Furthermore, if two processes are executing simultaneously from the same copy of a read-only segment, only one copy needs to reside in primary memory. This is a secondary effect, because simultaneous execution of a program is not common. It is ironic that this effect, which reduces the use of primary memory, only comes into play when there is an overabundance of primary memory, that is, when there is enough memory to keep waiting processes loaded. .PP All current read-only text segments in the system are maintained from the .IT "text table" . A text table entry holds the location of the text segment on secondary memory. If the segment is loaded, that table also holds the primary memory location and the count of the number of processes sharing this entry. When this count is reduced to zero, the entry is freed along with any primary and secondary memory holding the segment. When a process first executes a shared-text segment, a text table entry is allocated and the segment is loaded onto secondary memory. If a second process executes a text segment that is already allocated, the entry reference count is simply incremented. .PP A user process has some strictly private read-write data contained in its data segment. As far as possible, the system does not use the user's data segment to hold system data. In particular, there are no I/O buffers in the user address space. .PP The user data segment has two growing boundaries. One, increased automatically by the system as a result of memory faults, is used for a stack. The second boundary is only grown (or shrunk) by explicit requests. The contents of newly allocated primary memory is initialized to zero. .PP Also associated and swapped with a process is a small fixed-size system data segment. This segment contains all the data about the process that the system needs only when the process is active. Examples of the kind of data contained in the system data segment are: saved central processor registers, open file descriptors, accounting information, scratch data area, and the stack for the system phase of the process. The system data segment is not addressable from the user process and is therefore protected. .PP Last, there is a process table with one entry per process. This entry contains all the data needed by the system when the process is .IT not active. Examples are the process's name, the location of the other segments, and scheduling information. The process table entry is allocated when the process is created, and freed when the process terminates. This process entry is always directly addressable by the kernel. .PP Figure 1 shows the relationships between the various process control data. In a sense, the process table is the definition of all processes, because all the data associated with a process may be accessed starting from the process table entry. .KF .in .375i .so fig1.pic .in -.375i .sp 2v .ce Fig. 1\(emProcess control data structure. .KE .NH 2 Process creation and program execution .PP Processes are created by the system primitive .UL fork . The newly created process (child) is a copy of the original process (parent). There is no detectable sharing of primary memory between the two processes. (Of course, if the parent process was executing from a read-only text segment, the child will share the text segment.) Copies of all writable data segments are made for the child process. Files that were open before the .UL fork are truly shared after the .UL fork . The processes are informed as to their part in the relationship to allow them to select their own (usually non-identical) destiny. The parent may .UL wait for the termination of any of its children. .PP A process may .UL exec a file. This consists of exchanging the current text and data segments of the process for new text and data segments specified in the file. The old segments are lost. Doing an .UL exec does .IT not change processes; the process that did the .UL exec persists, but after the .UL exec it is executing a different program. Files that were open before the .UL exec remain open after the .UL exec . .PP If a program, say the first pass of a compiler, wishes to overlay itself with another program, say the second pass, then it simply .UL exec s the second program. This is analogous to a ``goto.'' If a program wishes to regain control after .UL exec ing a second program, it should .UL fork a child process, have the child .UL exec the second program, and have the parent .UL wait for the child. This is analogous to a ``call.'' Breaking up the call into a binding followed by a transfer is similar to the subroutine linkage in SL-5. .[ griswold hanson sl5 overview .] .NH 2 Swapping .PP The major data associated with a process (the user data segment, the system data segment, and the text segment) are swapped to and from secondary memory, as needed. The user data segment and the system data segment are kept in contiguous primary memory to reduce swapping latency. (When low-latency devices, such as bubbles, .UC CCD s, or scatter/gather devices, are used, this decision will have to be reconsidered.) Allocation of both primary and secondary memory is performed by the same simple first-fit algorithm. When a process grows, a new piece of primary memory is allocated. The contents of the old memory is copied to the new memory. The old memory is freed and the tables are updated. If there is not enough primary memory, secondary memory is allocated instead. The process is swapped out onto the secondary memory, ready to be swapped in with its new size. .PP One separate process in the kernel, the swapping process, simply swaps the other processes in and out of primary memory. It examines the process table looking for a process that is swapped out and is ready to run. It allocates primary memory for that process and reads its segments into primary memory, where that process competes for the central processor with other loaded processes. If no primary memory is available, the swapping process makes memory available by examining the process table for processes that can be swapped out. It selects a process to swap out, writes it to secondary memory, frees the primary memory, and then goes back to look for a process to swap in. .PP Thus there are two specific algorithms to the swapping process. Which of the possibly many processes that are swapped out is to be swapped in? This is decided by secondary storage residence time. The one with the longest time out is swapped in first. There is a slight penalty for larger processes. Which of the possibly many processes that are loaded is to be swapped out? Processes that are waiting for slow events (i.e., not currently running or waiting for disk I/O) are picked first, by age in primary memory, again with size penalties. The other processes are examined by the same age algorithm, but are not taken out unless they are at least of some age. This adds hysteresis to the swapping and prevents total thrashing. .PP These swapping algorithms are the most suspect in the system. With limited primary memory, these algorithms cause total swapping. This is not bad in itself, because the swapping does not impact the execution of the resident processes. However, if the swapping device must also be used for file storage, the swapping traffic severely impacts the file system traffic. It is exactly these small systems that tend to double usage of limited disk resources. .NH 2 Synchronization and scheduling .PP Process synchronization is accomplished by having processes wait for events. Events are represented by arbitrary integers. By convention, events are chosen to be addresses of tables associated with those events. For example, a process that is waiting for any of its children to terminate will wait for an event that is the address of its own process table entry. When a process terminates, it signals the event represented by its parent's process table entry. Signaling an event on which no process is waiting has no effect. Similarly, signaling an event on which many processes are waiting will wake all of them up. This differs considerably from Dijkstra's P and V synchronization operations, .[ dijkstra sequential processes 1968 .] in that no memory is associated with events. Thus there need be no allocation of events prior to their use. Events exist simply by being used. .PP On the negative side, because there is no memory associated with events, no notion of ``how much'' can be signaled via the event mechanism. For example, processes that want memory might wait on an event associated with memory allocation. When any amount of memory becomes available, the event would be signaled. All the competing processes would then wake up to fight over the new memory. (In reality, the swapping process is the only process that waits for primary memory to become available.) .PP If an event occurs between the time a process decides to wait for that event and the time that process enters the wait state, then the process will wait on an event that has already happened (and may never happen again). This race condition happens because there is no memory associated with the event to indicate that the event has occurred; the only action of an event is to change a set of processes from wait state to run state. This problem is relieved largely by the fact that process switching can only occur in the kernel by explicit calls to the event-wait mechanism. If the event in question is signaled by another process, then there is no problem. But if the event is signaled by a hardware interrupt, then special care must be taken. These synchronization races pose the biggest problem when .UX is adapted to multiple-processor configurations. .[ hawley meyer multiprocessing unix .] .PP The event-wait code in the kernel is like a co-routine linkage. At any time, all but one of the processes has called event-wait. The remaining process is the one currently executing. When it calls event-wait, a process whose event has been signaled is selected and that process returns from its call to event-wait. .PP Which of the runable processes is to run next? Associated with each process is a priority. The priority of a system process is assigned by the code issuing the wait on an event. This is roughly equivalent to the response that one would expect on such an event. Disk events have high priority, teletype events are low, and time-of-day events are very low. (From observation, the difference in system process priorities has little or no performance impact.) All user-process priorities are lower than the lowest system priority. User-process priorities are assigned by an algorithm based on the recent ratio of the amount of compute time to real time consumed by the process. A process that has used a lot of compute time in the last real-time unit is assigned a low user priority. Because interactive processes are characterized by low ratios of compute to real time, interactive response is maintained without any special arrangements. .PP The scheduling algorithm simply picks the process with the highest priority, thus picking all system processes first and user processes second. The compute-to-real-time ratio is updated every second. Thus, all other things being equal, looping user processes will be scheduled round-robin with a 1-second quantum. A high-priority process waking up will preempt a running, low-priority process. The scheduling algorithm has a very desirable negative feedback character. If a process uses its high priority to hog the computer, its priority will drop. At the same time, if a low-priority process is ignored for a long time, its priority will rise. .NH I/O SYSTEM .PP The I/O system is broken into two completely separate systems: the block I/O system and the character I/O system. In retrospect, the names should have been ``structured I/O'' and ``unstructured I/O,'' respectively; while the term ``block I/O'' has some meaning, ``character I/O'' is a complete misnomer. .PP Devices are characterized by a major device number, a minor device number, and a class (block or character). For each class, there is an array of entry points into the device drivers. The major device number is used to index the array when calling the code for a particular device driver. The minor device number is passed to the device driver as an argument. The minor number has no significance other than that attributed to it by the driver. Usually, the driver uses the minor number to access one of several identical physical devices. .PP The use of the array of entry points (configuration table) as the only connection between the system code and the device drivers is very important. Early versions of the system had a much less formal connection with the drivers, so that it was extremely hard to handcraft differently configured systems. Now it is possible to create new device drivers in an average of a few hours. The configuration table in most cases is created automatically by a program that reads the system's parts list. .NH 2 Block I/O system .PP The model block I/O device consists of randomly addressed, secondary memory blocks of 512 bytes each. The blocks are uniformly addressed 0, 1, .\|.\|. up to the size of the device. The block device driver has the job of emulating this model on a physical device. .PP The block I/O devices are accessed through a layer of buffering software. The system maintains a list of buffers (typically between 10 and 70) each assigned a device name and a device address. This buffer pool constitutes a data cache for the block devices. On a read request, the cache is searched for the desired block. If the block is found, the data are made available to the requester without any physical I/O. If the block is not in the cache, the least recently used block in the cache is renamed, the correct device driver is called to fill up the renamed buffer, and then the data are made available. Write requests are handled in an analogous manner. The correct buffer is found and relabeled if necessary. The write is performed simply by marking the buffer as ``dirty.'' The physical I/O is then deferred until the buffer is renamed. .PP The benefits in reduction of physical I/O of this scheme are substantial, especially considering the file system implementation. There are, however, some drawbacks. The asynchronous nature of the algorithm makes error reporting and meaningful user error handling almost impossible. The cavalier approach to I/O error handling in the .UX system is partly due to the asynchronous nature of the block I/O system. A second problem is in the delayed writes. If the system stops unexpectedly, it is almost certain that there is a lot of logically complete, but physically incomplete, I/O in the buffers. There is a system primitive to flush all outstanding I/O activity from the buffers. Periodic use of this primitive helps, but does not solve, the problem. Finally, the associativity in the buffers can alter the physical I/O sequence from that of the logical I/O sequence. This means that there are times when data structures on disk are inconsistent, even though the software is careful to perform I/O in the correct order. On non-random devices, notably magnetic tape, the inversions of writes can be disastrous. The problem with magnetic tapes is ``cured'' by allowing only one outstanding write request per drive. .NH 2 Character I/O system .PP The character I/O system consists of all devices that do not fall into the block I/O model. This includes the ``classical'' character devices such as communications lines, paper tape, and line printers. It also includes magnetic tape and disks when they are not used in a stereotyped way, for example, 80-byte physical records on tape and track-at-a-time disk copies. In short, the character I/O interface means ``everything other than block.'' I/O requests from the user are sent to the device driver essentially unaltered. The implementation of these requests is, of course, up to the device driver. There are guidelines and conventions to help the implementation of certain types of device drivers. .NH 3 Disk drivers .PP Disk drivers are implemented with a queue of transaction records. Each record holds a read/write flag, a primary memory address, a secondary memory address, and a transfer byte count. Swapping is accomplished by passing such a record to the swapping device driver. The block I/O interface is implemented by passing such records with requests to fill and empty system buffers. The character I/O interface to the disk drivers create a transaction record that points directly into the user area. The routine that creates this record also insures that the user is not swapped during this I/O transaction. Thus by implementing the general disk driver, it is possible to use the disk as a block device, a character device, and a swap device. The only really disk-specific code in normal disk drivers is the pre-sort of transactions to minimize latency for a particular device, and the actual issuing of the I/O request. .NH 3 Character lists .PP Real character-oriented devices may be implemented using the common code to handle character lists. A character list is a queue of characters. One routine puts a character on a queue. Another gets a character from a queue. It is also possible to ask how many characters are currently on a queue. Storage for all queues in the system comes from a single common pool. Putting a character on a queue will allocate space from the common pool and link the character onto the data structure defining the queue. Getting a character from a queue returns the corresponding space to the pool. .PP A typical character-output device (paper tape punch, for example) is implemented by passing characters from the user onto a character queue until some maximum number of characters is on the queue. The I/O is prodded to start as soon as there is anything on the queue and, once started, it is sustained by hardware completion interrupts. Each time there is a completion interrupt, the driver gets the next character from the queue and sends it to the hardware. The number of characters on the queue is checked and, as the count falls through some intermediate level, an event (the queue address) is signaled. The process that is passing characters from the user to the queue can be waiting on the event, and refill the queue to its maximum when the event occurs. .PP A typical character input device (for example, a paper tape reader) is handled in a very similar manner. .PP Another class of character devices is the terminals. A terminal is represented by three character queues. There are two input queues (raw and canonical) and an output queue. Characters going to the output of a terminal are handled by common code exactly as described above. The main difference is that there is also code to interpret the output stream as .UC ASCII characters and to perform some translations, e.g., escapes for deficient terminals. Another common aspect of terminals is code to insert real-time delay after certain control characters. .PP Input on terminals is a little different. Characters are collected from the terminal and placed on a raw input queue. Some device-dependent code conversion and escape interpretation is handled here. When a line is complete in the raw queue, an event is signaled. The code catching this signal then copies a line from the raw queue to a canonical queue performing the character erase and line kill editing. User read requests on terminals can be directed at either the raw or canonical queues. .NH 3 Other character devices .PP Finally, there are devices that fit no general category. These devices are set up as character I/O drivers. An example is a driver that reads and writes unmapped primary memory as an I/O device. Some devices are too fast to be treated a character at time, but do not fit the disk I/O mold. Examples are fast communications lines and fast line printers. These devices either have their own buffers or ``borrow'' block I/O buffers for a while and then give them back. .NH THE FILE SYSTEM .PP In the .UX system, a file is a (one-dimensional) array of bytes. No other structure of files is implied by the system. Files are attached anywhere (and possibly multiply) onto a hierarchy of directories. Directories are simply files that users cannot write. For a further discussion of the external view of files and directories, see Ref.\0 .[ ritchie thompson unix bstj 1978 %Q This issue .]. .PP The .UX file system is a disk data structure accessed completely through the block I/O system. As stated before, the canonical view of a ``disk'' is a randomly addressable array of 512-byte blocks. A file system breaks the disk into four self-identifying regions. The first block (address 0) is unused by the file system. It is left aside for booting procedures. The second block (address 1) contains the so-called ``super-block.'' This block, among other things, contains the size of the disk and the boundaries of the other regions. Next comes the i-list, a list of file definitions. Each file definition is a 64-byte structure, called an i-node. The offset of a particular i-node within the i-list is called its i-number. The combination of device name (major and minor numbers) and i-number serves to uniquely name a particular file. After the i-list, and to the end of the disk, come free storage blocks that are available for the contents of files. .PP The free space on a disk is maintained by a linked list of available disk blocks. Every block in this chain contains a disk address of the next block in the chain. The remaining space contains the address of up to 50 disk blocks that are also free. Thus with one I/O operation, the system obtains 50 free blocks and a pointer where to find more. The disk allocation algorithms are very straightforward. Since all allocation is in fixed-size blocks and there is strict accounting of space, there is no need to compact or garbage collect. However, as disk space becomes dispersed, latency gradually increases. Some installations choose to occasionally compact disk space to reduce latency. .PP An i-node contains 13 disk addresses. The first 10 of these addresses point directly at the first 10 blocks of a file. If a file is larger than 10 blocks (5,120 bytes), then the eleventh address points at a block that contains the addresses of the next 128 blocks of the file. If the file is still larger than this (70,656 bytes), then the twelfth block points at up to 128 blocks, each pointing to 128 blocks of the file. Files yet larger (8,459,264 bytes) use the thirteenth address for a ``triple indirect'' address. The algorithm ends here with the maximum file size of 1,082,201,087 bytes. .PP A logical directory hierarchy is added to this flat physical structure simply by adding a new type of file, the directory. A directory is accessed exactly as an ordinary file. It contains 16-byte entries consisting of a 14-byte name and an i-number. The root of the hierarchy is at a known i-number (\fIviz.,\fR 2). The file system structure allows an arbitrary, directed graph of directories with regular files linked in at arbitrary places in this graph. In fact, very early .UX systems used such a structure. Administration of such a structure became so chaotic that later systems were restricted to a directory tree. Even now, with regular files linked multiply into arbitrary places in the tree, accounting for space has become a problem. It may become necessary to restrict the entire structure to a tree, and allow a new form of linking that is subservient to the tree structure. .PP The file system allows easy creation, easy removal, easy random accessing, and very easy space allocation. With most physical addresses confined to a small contiguous section of disk, it is also easy to dump, restore, and check the consistency of the file system. Large files suffer from indirect addressing, but the cache prevents most of the implied physical I/O without adding much execution. The space overhead properties of this scheme are quite good. For example, on one particular file system, there are 25,000 files containing 130M bytes of data-file content. The overhead (i-node, indirect blocks, and last block breakage) is about 11.5M bytes. The directory structure to support these files has about 1,500 directories containing 0.6M bytes of directory content and about 0.5M bytes of overhead in accessing the directories. Added up any way, this comes out to less than a 10 percent overhead for actual stored data. Most systems have this much overhead in padded trailing blanks alone. .NH 2 File system implementation .PP Because the i-node defines a file, the implementation of the file system centers around access to the i-node. The system maintains a table of all active i-nodes. As a new file is accessed, the system locates the corresponding i-node, allocates an i-node table entry, and reads the i-node into primary memory. As in the buffer cache, the table entry is considered to be the current version of the i-node. Modifications to the i-node are made to the table entry. When the last access to the i-node goes away, the table entry is copied back to the secondary store i-list and the table entry is freed. .KF .in .25i .so fig2.pic .in -.25i .sp 2v .ce Fig. 2\(emFile system data structure. .sp .KE .PP All I/O operations on files are carried out with the aid of the corresponding i-node table entry. The accessing of a file is a straightforward implementation of the algorithms mentioned previously. The user is not aware of i-nodes and i-numbers. References to the file system are made in terms of path names of the directory tree. Converting a path name into an i-node table entry is also straightforward. Starting at some known i-node (the root or the current directory of some process), the next component of the path name is searched by reading the directory. This gives an i-number and an implied device (that of the directory). Thus the next i-node table entry can be accessed. If that was the last component of the path name, then this i-node is the result. If not, this i-node is the directory needed to look up the next component of the path name, and the algorithm is repeated. .PP The user process accesses the file system with certain primitives. The most common of these are .UL open , .UL create , .UL read , .UL write , .UL seek , and .UL close . The data structures maintained are shown in Fig. 2. In the system data segment associated with a user, there is room for some (usually between 10 and 50) open files. This open file table consists of pointers that can be used to access corresponding i-node table entries. Associated with each of these open files is a current I/O pointer. This is a byte offset of the next read/write operation on the file. The system treats each read/write request as random with an implied seek to the I/O pointer. The user usually thinks of the file as sequential with the I/O pointer automatically counting the number of bytes that have been read/written from the file. The user may, of course, perform random I/O by setting the I/O pointer before reads/writes. .PP With file sharing, it is necessary to allow related processes to share a common I/O pointer and yet have separate I/O pointers for independent processes that access the same file. With these two conditions, the I/O pointer cannot reside in the i-node table nor can it reside in the list of open files for the process. A new table (the open file table) was invented for the sole purpose of holding the I/O pointer. Processes that share the same open file (the result of .UL fork s) share a common open file table entry. A separate open of the same file will only share the i-node table entry, but will have distinct open file table entries. .PP The main file system primitives are implemented as follows. .UL \&open converts a file system path name into an i-node table entry. A pointer to the i-node table entry is placed in a newly created open file table entry. A pointer to the file table entry is placed in the system data segment for the process. .UL \&create first creates a new i-node entry, writes the i-number into a directory, and then builds the same structure as for an .UL open . .UL \&read and .UL write just access the i-node entry as described above. .UL \&seek simply manipulates the I/O pointer. No physical seeking is done. .UL \&close just frees the structures built by .UL open and .UL create . Reference counts are kept on the open file table entries and the i-node table entries to free these structures after the last reference goes away. .UL \&unlink simply decrements the count of the number of directories pointing at the given i-node. When the last reference to an i-node table entry goes away, if the i-node has no directories pointing to it, then the file is removed and the i-node is freed. This delayed removal of files prevents problems arising from removing active files. A file may be removed while still open. The resulting unnamed file vanishes when the file is closed. This is a method of obtaining temporary files. .PP There is a type of unnamed .UC FIFO file called a .UL pipe. Implementation of .UL pipe s consists of implied .UL seek s before each .UL read or .UL write in order to implement first-in-first-out. There are also checks and synchronization to prevent the writer from grossly outproducing the reader and to prevent the reader from overtaking the writer. .NH 2 Mounted file systems .PP The file system of a .UX system starts with some designated block device formatted as described above to contain a hierarchy. The root of this structure is the root of the .UX file system. A second formatted block device may be mounted at any leaf of the current hierarchy. This logically extends the current hierarchy. The implementation of mounting is trivial. A mount table is maintained containing pairs of designated leaf i-nodes and block devices. When converting a path name into an i-node, a check is made to see if the new i-node is a designated leaf. If it is, the i-node of the root of the block device replaces it. .PP Allocation of space for a file is taken from the free pool on the device on which the file lives. Thus a file system consisting of many mounted devices does not have a common pool of free secondary storage space. This separation of space on different devices is necessary to allow easy unmounting of a device. .NH 2 Other system functions .PP There are some other things that the system does for the user\-a little accounting, a little tracing/debugging, and a little access protection. Most of these things are not very well developed because our use of the system in computing science research does not need them. There are some features that are missed in some applications, for example, better inter-process communication. .PP The .UX kernel is an I/O multiplexer more than a complete operating system. This is as it should be. Because of this outlook, many features are found in most other operating systems that are missing from the .UX kernel. For example, the .UX kernel does not support file access methods, file disposition, file formats, file maximum size, spooling, command language, logical records, physical records, assignment of logical file names, logical file names, more than one character set, an operator's console, an operator, log-in, or log-out. Many of these things are symptoms rather than features. Many of these things are implemented in user software using the kernel as a tool. A good example of this is the command language. .[ bourne shell 1978 bstj %Q This issue .] Each user may have his own command language. Maintenance of such code is as easy as maintaining user code. The idea of implementing ``system'' code with general user primitives comes directly from .UC MULTICS . .[ organick multics 1972 .] .LP .[ $LIST$ .] o 50 disk blocks that are also free. Thus with one I/O operation, the system obtains 50 free blocks and a pointer where to find more. The disk allocation algorithms are very straightforward. Since all allocation is in fixed-size blocks and there is strict accounting of space, there is no need to compact or garbage collect. However, as disk space becomes dispersed, latency gradually increases. Some installations choose to occasionally compact disk space to reduce latency. .PP An i-node contdoc/ps2/05.iosys/ 755 3 12 0 3660731750 6617 doc/ps2/05.iosys/iosys 444 3 12 67161 3655214142 10021 .\" @(#)iosys 6.1 (Berkeley) 4/29/86 .\" .EH 'PS2:5-%''The UNIX I/O System' .OH 'The UNIX I/O System''PS2:5-%' .TL The UNIX I/O System .AU Dennis M. Ritchie .AI .MH .PP This paper gives an overview of the workings of the UNIX\(dg .FS \(dgUNIX is a Trademark of Bell Laboratories. .FE I/O system. It was written with an eye toward providing guidance to writers of device driver routines, and is oriented more toward describing the environment and nature of device drivers than the implementation of that part of the file system which deals with ordinary files. .PP It is assumed that the reader has a good knowledge of the overall structure of the file system as discussed in the paper ``The UNIX Time-sharing System.'' A more detailed discussion appears in ``UNIX Implementation;'' the current document restates parts of that one, but is still more detailed. It is most useful in conjunction with a copy of the system code, since it is basically an exegesis of that code. .SH Device Classes .PP There are two classes of device: .I block and .I character. The block interface is suitable for devices like disks, tapes, and DECtape which work, or can work, with addressible 512-byte blocks. Ordinary magnetic tape just barely fits in this category, since by use of forward and backward spacing any block can be read, even though blocks can be written only at the end of the tape. Block devices can at least potentially contain a mounted file system. The interface to block devices is very highly structured; the drivers for these devices share a great many routines as well as a pool of buffers. .PP Character-type devices have a much more straightforward interface, although more work must be done by the driver itself. .PP Devices of both types are named by a .I major and a .I minor device number. These numbers are generally stored as an integer with the minor device number in the low-order 8 bits and the major device number in the next-higher 8 bits; macros .I major and .I minor are available to access these numbers. The major device number selects which driver will deal with the device; the minor device number is not used by the rest of the system but is passed to the driver at appropriate times. Typically the minor number selects a subdevice attached to a given controller, or one of several similar hardware interfaces. .PP The major device numbers for block and character devices are used as indices in separate tables; they both start at 0 and therefore overlap. .SH Overview of I/O .PP The purpose of the .I open and .I creat system calls is to set up entries in three separate system tables. The first of these is the .I u_ofile table, which is stored in the system's per-process data area .I u. This table is indexed by the file descriptor returned by the .I open or .I creat, and is accessed during a .I read, .I write, or other operation on the open file. An entry contains only a pointer to the corresponding entry of the .I file table, which is a per-system data base. There is one entry in the .I file table for each instance of .I open or .I creat. This table is per-system because the same instance of an open file must be shared among the several processes which can result from .I forks after the file is opened. A .I file table entry contains flags which indicate whether the file was open for reading or writing or is a pipe, and a count which is used to decide when all processes using the entry have terminated or closed the file (so the entry can be abandoned). There is also a 32-bit file offset which is used to indicate where in the file the next read or write will take place. Finally, there is a pointer to the entry for the file in the .I inode table, which contains a copy of the file's i-node. .PP Certain open files can be designated ``multiplexed'' files, and several other flags apply to such channels. In such a case, instead of an offset, there is a pointer to an associated multiplex channel table. Multiplex channels will not be discussed here. .PP An entry in the .I file table corresponds precisely to an instance of .I open or .I creat; if the same file is opened several times, it will have several entries in this table. However, there is at most one entry in the .I inode table for a given file. Also, a file may enter the .I inode table not only because it is open, but also because it is the current directory of some process or because it is a special file containing a currently-mounted file system. .PP An entry in the .I inode table differs somewhat from the corresponding i-node as stored on the disk; the modified and accessed times are not stored, and the entry is augmented by a flag word containing information about the entry, a count used to determine when it may be allowed to disappear, and the device and i-number whence the entry came. Also, the several block numbers that give addressing information for the file are expanded from the 3-byte, compressed format used on the disk to full .I long quantities. .PP During the processing of an .I open or .I creat call for a special file, the system always calls the device's .I open routine to allow for any special processing required (rewinding a tape, turning on the data-terminal-ready lead of a modem, etc.). However, the .I close routine is called only when the last process closes a file, that is, when the i-node table entry is being deallocated. Thus it is not feasible for a device to maintain, or depend on, a count of its users, although it is quite possible to implement an exclusive-use device which cannot be reopened until it has been closed. .PP When a .I read or .I write takes place, the user's arguments and the .I file table entry are used to set up the variables .I u.u_base, .I u.u_count, and .I u.u_offset which respectively contain the (user) address of the I/O target area, the byte-count for the transfer, and the current location in the file. If the file referred to is a character-type special file, the appropriate read or write routine is called; it is responsible for transferring data and updating the count and current location appropriately as discussed below. Otherwise, the current location is used to calculate a logical block number in the file. If the file is an ordinary file the logical block number must be mapped (possibly using indirect blocks) to a physical block number; a block-type special file need not be mapped. This mapping is performed by the .I bmap routine. In any event, the resulting physical block number is used, as discussed below, to read or write the appropriate device. .SH Character Device Drivers .PP The .I cdevsw table specifies the interface routines present for character devices. Each device provides five routines: open, close, read, write, and special-function (to implement the .I ioctl system call). Any of these may be missing. If a call on the routine should be ignored, (e.g. .I open on non-exclusive devices that require no setup) the .I cdevsw entry can be given as .I nulldev; if it should be considered an error, (e.g. .I write on read-only devices) .I nodev is used. For terminals, the .I cdevsw structure also contains a pointer to the .I tty structure associated with the terminal. .PP The .I open routine is called each time the file is opened with the full device number as argument. The second argument is a flag which is non-zero only if the device is to be written upon. .PP The .I close routine is called only when the file is closed for the last time, that is when the very last process in which the file is open closes it. This means it is not possible for the driver to maintain its own count of its users. The first argument is the device number; the second is a flag which is non-zero if the file was open for writing in the process which performs the final .I close. .PP When .I write is called, it is supplied the device as argument. The per-user variable .I u.u_count has been set to the number of characters indicated by the user; for character devices, this number may be 0 initially. .I u.u_base is the address supplied by the user from which to start taking characters. The system may call the routine internally, so the flag .I u.u_segflg is supplied that indicates, if .I on, that .I u.u_base refers to the system address space instead of the user's. .PP The .I write routine should copy up to .I u.u_count characters from the user's buffer to the device, decrementing .I u.u_count for each character passed. For most drivers, which work one character at a time, the routine .I "cpass( )" is used to pick up characters from the user's buffer. Successive calls on it return the characters to be written until .I u.u_count goes to 0 or an error occurs, when it returns \(mi1. .I Cpass takes care of interrogating .I u.u_segflg and updating .I u.u_count. .PP Write routines which want to transfer a probably large number of characters into an internal buffer may also use the routine .I "iomove(buffer, offset, count, flag)" which is faster when many characters must be moved. .I Iomove transfers up to .I count characters into the .I buffer starting .I offset bytes from the start of the buffer; .I flag should be .I B_WRITE (which is 0) in the write case. Caution: the caller is responsible for making sure the count is not too large and is non-zero. As an efficiency note, .I iomove is much slower if any of .I "buffer+offset, count" or .I u.u_base is odd. .PP The device's .I read routine is called under conditions similar to .I write, except that .I u.u_count is guaranteed to be non-zero. To return characters to the user, the routine .I "passc(c)" is available; it takes care of housekeeping like .I cpass and returns \(mi1 as the last character specified by .I u.u_count is returned to the user; before that time, 0 is returned. .I Iomove is also usable as with .I write; the flag should be .I B_READ but the same cautions apply. .PP The ``special-functions'' routine is invoked by the .I stty and .I gtty system calls as follows: .I "(*p) (dev, v)" where .I p is a pointer to the device's routine, .I dev is the device number, and .I v is a vector. In the .I gtty case, the device is supposed to place up to 3 words of status information into the vector; this will be returned to the caller. In the .I stty case, .I v is 0; the device should take up to 3 words of control information from the array .I "u.u_arg[0...2]." .PP Finally, each device should have appropriate interrupt-time routines. When an interrupt occurs, it is turned into a C-compatible call on the devices's interrupt routine. The interrupt-catching mechanism makes the low-order four bits of the ``new PS'' word in the trap vector for the interrupt available to the interrupt handler. This is conventionally used by drivers which deal with multiple similar devices to encode the minor device number. After the interrupt has been processed, a return from the interrupt handler will return from the interrupt itself. .PP A number of subroutines are available which are useful to character device drivers. Most of these handlers, for example, need a place to buffer characters in the internal interface between their ``top half'' (read/write) and ``bottom half'' (interrupt) routines. For relatively low data-rate devices, the best mechanism is the character queue maintained by the routines .I getc and .I putc. A queue header has the structure .DS struct { int c_cc; /* character count */ char *c_cf; /* first character */ char *c_cl; /* last character */ } queue; .DE A character is placed on the end of a queue by .I "putc(c, &queue)" where .I c is the character and .I queue is the queue header. The routine returns \(mi1 if there is no space to put the character, 0 otherwise. The first character on the queue may be retrieved by .I "getc(&queue)" which returns either the (non-negative) character or \(mi1 if the queue is empty. .PP Notice that the space for characters in queues is shared among all devices in the system and in the standard system there are only some 600 character slots available. Thus device handlers, especially write routines, must take care to avoid gobbling up excessive numbers of characters. .PP The other major help available to device handlers is the sleep-wakeup mechanism. The call .I "sleep(event, priority)" causes the process to wait (allowing other processes to run) until the .I event occurs; at that time, the process is marked ready-to-run and the call will return when there is no process with higher .I priority. .PP The call .I "wakeup(event)" indicates that the .I event has happened, that is, causes processes sleeping on the event to be awakened. The .I event is an arbitrary quantity agreed upon by the sleeper and the waker-up. By convention, it is the address of some data area used by the driver, which guarantees that events are unique. .PP Processes sleeping on an event should not assume that the event has really happened; they should check that the conditions which caused them to sleep no longer hold. .PP Priorities can range from 0 to 127; a higher numerical value indicates a less-favored scheduling situation. A distinction is made between processes sleeping at priority less than the parameter .I PZERO and those at numerically larger priorities. The former cannot be interrupted by signals, although it is conceivable that it may be swapped out. Thus it is a bad idea to sleep with priority less than PZERO on an event which might never occur. On the other hand, calls to .I sleep with larger priority may never return if the process is terminated by some signal in the meantime. Incidentally, it is a gross error to call .I sleep in a routine called at interrupt time, since the process which is running is almost certainly not the process which should go to sleep. Likewise, none of the variables in the user area ``\fIu\fB.\fR'' should be touched, let alone changed, by an interrupt routine. .PP If a device driver wishes to wait for some event for which it is inconvenient or impossible to supply a .I wakeup, (for example, a device going on-line, which does not generally cause an interrupt), the call .I "sleep(&lbolt, priority) may be given. .I Lbolt is an external cell whose address is awakened once every 4 seconds by the clock interrupt routine. .PP The routines .I "spl4( ), spl5( ), spl6( ), spl7( )" are available to set the processor priority level as indicated to avoid inconvenient interrupts from the device. .PP If a device needs to know about real-time intervals, then .I "timeout(func, arg, interval) will be useful. This routine arranges that after .I interval sixtieths of a second, the .I func will be called with .I arg as argument, in the style .I "(*func)(arg). Timeouts are used, for example, to provide real-time delays after function characters like new-line and tab in typewriter output, and to terminate an attempt to read the 201 Dataphone .I dp if there is no response within a specified number of seconds. Notice that the number of sixtieths of a second is limited to 32767, since it must appear to be positive, and that only a bounded number of timeouts can be going on at once. Also, the specified .I func is called at clock-interrupt time, so it should conform to the requirements of interrupt routines in general. .SH The Block-device Interface .PP Handling of block devices is mediated by a collection of routines that manage a set of buffers containing the images of blocks of data on the various devices. The most important purpose of these routines is to assure that several processes that access the same block of the same device in multiprogrammed fashion maintain a consistent view of the data in the block. A secondary but still important purpose is to increase the efficiency of the system by keeping in-core copies of blocks that are being accessed frequently. The main data base for this mechanism is the table of buffers .I buf. Each buffer header contains a pair of pointers .I "(b_forw, b_back)" which maintain a doubly-linked list of the buffers associated with a particular block device, and a pair of pointers .I "(av_forw, av_back)" which generally maintain a doubly-linked list of blocks which are ``free,'' that is, eligible to be reallocated for another transaction. Buffers that have I/O in progress or are busy for other purposes do not appear in this list. The buffer header also contains the device and block number to which the buffer refers, and a pointer to the actual storage associated with the buffer. There is a word count which is the negative of the number of words to be transferred to or from the buffer; there is also an error byte and a residual word count used to communicate information from an I/O routine to its caller. Finally, there is a flag word with bits indicating the status of the buffer. These flags will be discussed below. .PP Seven routines constitute the most important part of the interface with the rest of the system. Given a device and block number, both .I bread and .I getblk return a pointer to a buffer header for the block; the difference is that .I bread is guaranteed to return a buffer actually containing the current data for the block, while .I getblk returns a buffer which contains the data in the block only if it is already in core (whether it is or not is indicated by the .I B_DONE bit; see below). In either case the buffer, and the corresponding device block, is made ``busy,'' so that other processes referring to it are obliged to wait until it becomes free. .I Getblk is used, for example, when a block is about to be totally rewritten, so that its previous contents are not useful; still, no other process can be allowed to refer to the block until the new data is placed into it. .PP The .I breada routine is used to implement read-ahead. it is logically similar to .I bread, but takes as an additional argument the number of a block (on the same device) to be read asynchronously after the specifically requested block is available. .PP Given a pointer to a buffer, the .I brelse routine makes the buffer again available to other processes. It is called, for example, after data has been extracted following a .I bread. There are three subtly-different write routines, all of which take a buffer pointer as argument, and all of which logically release the buffer for use by others and place it on the free list. .I Bwrite puts the buffer on the appropriate device queue, waits for the write to be done, and sets the user's error flag if required. .I Bawrite places the buffer on the device's queue, but does not wait for completion, so that errors cannot be reflected directly to the user. .I Bdwrite does not start any I/O operation at all, but merely marks the buffer so that if it happens to be grabbed from the free list to contain data from some other block, the data in it will first be written out. .PP .I Bwrite is used when one wants to be sure that I/O takes place correctly, and that errors are reflected to the proper user; it is used, for example, when updating i-nodes. .I Bawrite is useful when more overlap is desired (because no wait is required for I/O to finish) but when it is reasonably certain that the write is really required. .I Bdwrite is used when there is doubt that the write is needed at the moment. For example, .I bdwrite is called when the last byte of a .I write system call falls short of the end of a block, on the assumption that another .I write will be given soon which will re-use the same block. On the other hand, as the end of a block is passed, .I bawrite is called, since probably the block will not be accessed again soon and one might as well start the writing process as soon as possible. .PP In any event, notice that the routines .I "getblk" and .I bread dedicate the given block exclusively to the use of the caller, and make others wait, while one of .I "brelse, bwrite, bawrite," or .I bdwrite must eventually be called to free the block for use by others. .PP As mentioned, each buffer header contains a flag word which indicates the status of the buffer. Since they provide one important channel for information between the drivers and the block I/O system, it is important to understand these flags. The following names are manifest constants which select the associated flag bits. .IP B_READ 10 This bit is set when the buffer is handed to the device strategy routine (see below) to indicate a read operation. The symbol .I B_WRITE is defined as 0 and does not define a flag; it is provided as a mnemonic convenience to callers of routines like .I swap which have a separate argument which indicates read or write. .IP B_DONE 10 This bit is set to 0 when a block is handed to the the device strategy routine and is turned on when the operation completes, whether normally as the result of an error. It is also used as part of the return argument of .I getblk to indicate if 1 that the returned buffer actually contains the data in the requested block. .IP B_ERROR 10 This bit may be set to 1 when .I B_DONE is set to indicate that an I/O or other error occurred. If it is set the .I b_error byte of the buffer header may contain an error code if it is non-zero. If .I b_error is 0 the nature of the error is not specified. Actually no driver at present sets .I b_error; the latter is provided for a future improvement whereby a more detailed error-reporting scheme may be implemented. .IP B_BUSY 10 This bit indicates that the buffer header is not on the free list, i.e. is dedicated to someone's exclusive use. The buffer still remains attached to the list of blocks associated with its device, however. When .I getblk (or .I bread, which calls it) searches the buffer list for a given device and finds the requested block with this bit on, it sleeps until the bit clears. .IP B_PHYS 10 This bit is set for raw I/O transactions that need to allocate the Unibus map on an 11/70. .IP B_MAP 10 This bit is set on buffers that have the Unibus map allocated, so that the .I iodone routine knows to deallocate the map. .IP B_WANTED 10 This flag is used in conjunction with the .I B_BUSY bit. Before sleeping as described just above, .I getblk sets this flag. Conversely, when the block is freed and the busy bit goes down (in .I brelse) a .I wakeup is given for the block header whenever .I B_WANTED is on. This strategem avoids the overhead of having to call .I wakeup every time a buffer is freed on the chance that someone might want it. .IP B_AGE This bit may be set on buffers just before releasing them; if it is on, the buffer is placed at the head of the free list, rather than at the tail. It is a performance heuristic used when the caller judges that the same block will not soon be used again. .IP B_ASYNC 10 This bit is set by .I bawrite to indicate to the appropriate device driver that the buffer should be released when the write has been finished, usually at interrupt time. The difference between .I bwrite and .I bawrite is that the former starts I/O, waits until it is done, and frees the buffer. The latter merely sets this bit and starts I/O. The bit indicates that .I relse should be called for the buffer on completion. .IP B_DELWRI 10 This bit is set by .I bdwrite before releasing the buffer. When .I getblk, while searching for a free block, discovers the bit is 1 in a buffer it would otherwise grab, it causes the block to be written out before reusing it. .SH Block Device Drivers .PP The .I bdevsw table contains the names of the interface routines and that of a table for each block device. .PP Just as for character devices, block device drivers may supply an .I open and a .I close routine called respectively on each open and on the final close of the device. Instead of separate read and write routines, each block device driver has a .I strategy routine which is called with a pointer to a buffer header as argument. As discussed, the buffer header contains a read/write flag, the core address, the block number, a (negative) word count, and the major and minor device number. The role of the strategy routine is to carry out the operation as requested by the information in the buffer header. When the transaction is complete the .I B_DONE (and possibly the .I B_ERROR) bits should be set. Then if the .I B_ASYNC bit is set, .I brelse should be called; otherwise, .I wakeup. In cases where the device is capable, under error-free operation, of transferring fewer words than requested, the device's word-count register should be placed in the residual count slot of the buffer header; otherwise, the residual count should be set to 0. This particular mechanism is really for the benefit of the magtape driver; when reading this device records shorter than requested are quite normal, and the user should be told the actual length of the record. .PP Although the most usual argument to the strategy routines is a genuine buffer header allocated as discussed above, all that is actually required is that the argument be a pointer to a place containing the appropriate information. For example the .I swap routine, which manages movement of core images to and from the swapping device, uses the strategy routine for this device. Care has to be taken that no extraneous bits get turned on in the flag word. .PP The device's table specified by .I bdevsw has a byte to contain an active flag and an error count, a pair of links which constitute the head of the chain of buffers for the device .I "(b_forw, b_back)," and a first and last pointer for a device queue. Of these things, all are used solely by the device driver itself except for the buffer-chain pointers. Typically the flag encodes the state of the device, and is used at a minimum to indicate that the device is currently engaged in transferring information and no new command should be issued. The error count is useful for counting retries when errors occur. The device queue is used to remember stacked requests; in the simplest case it may be maintained as a first-in first-out list. Since buffers which have been handed over to the strategy routines are never on the list of free buffers, the pointers in the buffer which maintain the free list .I "(av_forw, av_back)" are also used to contain the pointers which maintain the device queues. .PP A couple of routines are provided which are useful to block device drivers. .I "iodone(bp)" arranges that the buffer to which .I bp points be released or awakened, as appropriate, when the strategy module has finished with the buffer, either normally or after an error. (In the latter case the .I B_ERROR bit has presumably been set.) .PP The routine .I "geterror(bp)" can be used to examine the error bit in a buffer header and arrange that any error indication found therein is reflected to the user. It may be called only in the non-interrupt part of a driver when I/O has completed .I (B_DONE has been set). .SH Raw Block-device I/O .PP A scheme has been set up whereby block device drivers may provide the ability to transfer information directly between the user's core image and the device without the use of buffers and in blocks as large as the caller requests. The method involves setting up a character-type special file corresponding to the raw device and providing .I read and .I write routines which set up what is usually a private, non-shared buffer header with the appropriate information and call the device's strategy routine. If desired, separate .I open and .I close routines may be provided but this is usually unnecessary. A special-function routine might come in handy, especially for magtape. .PP A great deal of work has to be done to generate the ``appropriate information'' to put in the argument buffer for the strategy module; the worst part is to map relocated user addresses to physical addresses. Most of this work is done by .I "physio(strat, bp, dev, rw) whose arguments are the name of the strategy routine .I strat, the buffer pointer .I bp, the device number .I dev, and a read-write flag .I rw whose value is either .I B_READ or .I B_WRITE. .I Physio makes sure that the user's base address and count are even (because most devices work in words) and that the core area affected is contiguous in physical space; it delays until the buffer is not busy, and makes it busy while the operation is in progress; and it sets up user error return information. alled, for example, after data has been extracted following a .I bread. There are three subtly-different write routines, all of which take a buffer pointer as argument, and all of which logically release the buffer for use by others and place it on the free list. .I Bwrite puts the buffer on the appropriate device queue, waits for the write to be done, and sets the user's error flag if required. doc/ps2/05.iosys/Makefile 444 3 12 1104 3660571771 10343 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # %W% (Berkeley) %G% # SRCS= iosys MACROS= -msU PRINTER=Pdp TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TROFF} ${MACROS} -t ${SRCS} > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done t for compleon, so that errors cannot be reflected directly to the user. .I Bdwrite does not start any I/O operation at all, but merely marks the buffer so that if it happens to be grabbed from the free list to contain data from some other block, the data in it will first be written out. .PP .I Bwrite is used when one wants to be sure that I/O takes place correctly, and that errors are reflected to the proper user; it is used, for exampledoc/ps2/06.efl/ 755 3 12 0 3660731634 6221 doc/ps2/06.efl/efl 444 3 12 223717 3660572212 7044 .\" @(#)efl 6.1 (Berkeley) 4/29/86 .\" .EH 'PS2:6-%''The Programming Language EFL' .OH 'The Programming Language EFL''PS2:6-%' .\".ds [[ \fR\z[\h'.15m'[\fP .\".ds ]] \fR\z]\h'.15m']\fP .ND "4 June 1979" .\". .TM 79-1273-6 39199 39199-11 .TL The Programming Language EFL .AU "MH 2C-570" 2059 Stuart I. Feldman .AI .MH .OK Fortran Preprocessors Ratfor .AB .PP EFL is a clean, general purpose computer language intended to encourage portable programming. It has a uniform and readable syntax and good data and control flow structuring. EFL programs can be translated into efficient Fortran code, so the EFL programmer can take advantage of the ubiquity of Fortran, the valuable libraries of software written in that language, and the portability that comes with the use of a standardized language, without suffering from Fortran's many failings as a language. It is especially useful for numeric programs. The EFL language permits the programmer to express complicated ideas in a comprehensible way, while permitting access to the power of the Fortran environment. EFL can be viewed as a descendant of B. W. Kernighan's Ratfor [1]; the name originally stood for `Extended Fortran Language'. The current version of the EFL compiler is written in portable C. .AE .CS 35 0 35 0 0 1 .SH .ds ~ \\v'.25m'\\s+2~\\s-2\\v'-.25m' .if n .ls 2 .EQ delim @@ .EN .NH 1 INTRODUCTION .NH 2 Purpose .PP EFL is a clean, general purpose computer language intended to encourage portable programming. It has a uniform and readable syntax and good data and control flow structuring. EFL programs can be translated into efficient Fortran code, so the EFL programmer can take advantage of the ubiquity of Fortran, the valuable libraries of software written in that language, and the portability that comes with the use of a standardized language, without suffering from Fortran's many failings as a language. It is especially useful for numeric programs. Thus, the EFL language permits the programmer to express complicated ideas in a comprehensible way, while permitting access to the power of the Fortran environment. .NH 2 History .PP EFL can be viewed as a descendant of B. W. Kernighan's Ratfor [1]; the name originally stood for `Extended Fortran Language'. A. D. Hall designed the initial version of the language and wrote a preliminary version of a compiler. I extended and modified the language and wrote a full compiler (in C) for it. The current compiler is much more than a simple preprocessor: it attempts to diagnose all syntax errors, to provide readable Fortran output, and to avoid a number of niggling restrictions. To achieve this goal, a sizable two-pass translator is needed. .NH 2 Notation .PP In examples and syntax specifications, .B boldface type is used to indicate literal words and punctuation, such as \fBwhile\fR. Words in .I italic type indicate an item in a category, such as an .I expression. A construct surrounded by double brackets represents a list of one or more of those items, separated by commas. Thus, the notation .DS C \fI\*([[ item \*(]]\fR .DE could refer to any of the following: .DS B .I item item\fB, \fIitem \fIitem\fB, \fIitem\fB, \fIitem\fR .DE .PP The reader should have a fair degree of familiarity with some procedural language. There will be occasional references to Ratfor and to Fortran which may be ignored if the reader is unfamiliar with those languages. .bp .NH 1 LEXICAL FORM .NH 2 Character Set .PP The following characters are legal in an EFL program: .KS .TS center; ll. \fIletters \fBa b c d e f g h i j k l m\fI \fBn o p q r s t u v w x y z\fI digits \fB0 1 2 3 4 5 6 7 8 9\fI white space \fIblank tab\fI quotes \fB\' "\fI sharp \fB#\fI continuation \fB\(ru\fI braces \fB{ }\fI parentheses \fB( )\fI other \fB, ; : . + \- \(** /\fI \fB= < > & \*~ | $\fI .TE .KE Letter case (upper or lower) is ignored except within strings, so `\fBa\fR' and `\fBA\fR' are treated as the same character. All of the examples below are printed in lower case. An exclamation mark (`\fB!\fR') may be used in place of a tilde (`\fB\*~\fR'). Square brackets (`[' and `]') may be used in place of braces (`{' and `}'). .NH 2 Lines .PP EFL is a line-oriented language. Except in special cases (discussed below), the end of a line marks the end of a token and the end of a statement. The trailing portion of a line may be used for a comment. There is a mechanism for diverting input from one source file to another, so a single line in the program may be replaced by a number of lines from the other file. Diagnostic messages are labeled with the line number of the file on which they are detected. .NH 3 White Space .PP Outside of a character string or comment, any sequence of one or more spaces or tab characters acts as a single space. Such a space terminates a token. .NH 3 Comments .PP A comment may appear at the end of any line. It is introduced by a sharp (#) character, and continues to the end of the line. (A sharp inside of a quoted string does not mark a comment.) The sharp and succeeding characters on the line are discarded. A blank line is also a comment. Comments have no effect on execution. .NH 3 Include Files .PP It is possible to insert the contents of a file at a point in the source text, by referencing it in a line like .DS C .B include joe .R .DE No statement or comment may follow an .B include on a line. In effect, the .B include line is replaced by the lines in the named file, but diagnostics refer to the line number in the included file. \fBInclude\fRs may be nested at least ten deep. .NH 3 Continuation .PP Lines may be continued explicitly by using the underscore (\fB_\fR) character. If the last character of a line (after comments and trailing white space have been stripped) is an underscore, the end of line and the initial blanks on the next line are ignored. Underscores are ignored in other contexts (except inside of quoted strings). Thus .DS B 1_000_000_ 000 .DE equals @10 sup 9@. .PP There are also rules for continuing lines automatically: the end of line is ignored whenever it is obvious that the statement is not complete. To be specific, a statement is continued if the last token on a line is an operator, comma, left brace, or left parenthesis. (A statement is not continued just because of unbalanced braces or parentheses.) Some compound statements are also continued automatically; these points are noted in the sections on executable statements. .NH 3 Multiple Statements on a Line .PP A semicolon terminates the current statement. Thus, it is possible to write more than one statement on a line. A line consisting only of a semicolon, or a semicolon following a semicolon, forms a null statement. .NH 2 Tokens .PP A program is made up of a sequence of tokens. Each token is a sequence of characters. A blank terminates any token other than a quoted string. End of line also terminates a token unless explicit continuation (see above) is signaled by an underscore. .NH 3 Identifiers .PP An identifier is a letter or a letter followed by letters or digits. The following is a list of the reserved words that have special meaning in EFL. They will be discussed later. .KF .TS center; lll . .B array exit precision automatic external procedure break false read call field readbin case for real character function repeat common go return complex goto select continue if short debug implicit sizeof default include static define initial struct dimension integer subroutine do internal true double lengthof until doubleprecision logical value else long while end next write equivalence option writebin .R .TE .KE The use of these words is discussed below. These words may not be used for any other purpose. .NH 3 Strings .PP A character string is a sequence of characters surrounded by quotation marks. If the string is bounded by single-quote marks ( \fB\'\fR ), it may contain double quote marks ( \fB"\fR ), and vice versa. A quoted string may not be broken across a line boundary. .DS .B \'hello there\' "ain\'t misbehavin\'" .R .DE .NH 3 Integer Constants .PP An integer constant is a sequence of one or more digits. .DS B .B 0 57 123456 .R .DE .NH 3 Floating Point Constants .PP A floating point constant contains a dot and/or an exponent field. An .I "exponent field" is a letter .B d or .B e followed by an optionally signed integer constant. If @I@ and @J@ are integer constants and @E@ is an exponent field, then a floating constant has one of the following forms: .DS B .I \fB.\fPI I\fB.\fP I\fB.\fPJ IE I\fB.\fPE \fB.\fPIE I\fB.\fPJE .R .DE .NH 3 Punctuation .PP Certain characters are used to group or separate objects in the language. These are .TS center; ll. parentheses ( ) braces { } comma , semicolon ; colon : end-of-line .TE The end-of-line is a token (statement separator) when the line is neither blank nor continued. .NH 3 Operators .PP The EFL operators are written as sequences of one or more non-alphanumeric characters. .DS B + \- \(** / \(**\(** < <= > >= == \*~= && |\|| & | += \-= \(*= /= \(**\(**= &&= |\||= &= |= \-> . $ .DE A dot (`\fB.\fR') is an operator when it qualifies a structure element name, but not when it acts as a decimal point in a numeric constant. There is a special mode (see the Atavisms section) in which some of the operators may be represented by a string consisting of a dot, an identifier, and a dot (\fIe.g., \fB.lt.\fR ). .NH 2 Macros .PP EFL has a simple macro substitution facility. An identifier may be defined to be equal to a string of tokens; whenever that name appears as a token in the program, the string replaces it. A macro name is given a value in a .B define statement like .DS define count n += 1 .DE Any time the name .B count appears in the program, it is replaced by the statement .DS C .B n += 1 .R .DE A .B define statement must appear alone on a line; the form is .DS C \fBdefine \fIname \fIrest-of-line\fR .DE Trailing comments are part of the string. .NH 1 PROGRAM FORM .NH 2 Files .PP A .I file is a sequence of lines. A file is compiled as a single unit. It may contain one or more procedures. Declarations and options that appear outside of a procedure affect the succeeding procedures on that file. .NH 2 Procedures .PP Procedures are the largest grouping of statements in EFL. Each procedure has a name by which it is invoked. (The first procedure invoked during execution, known as the .I main procedure, has the null name.) Procedure calls and argument passing are discussed in Section 8. .NH 2 Blocks .PP Statements may be formed into groups inside of a procedure. To describe the scope of names, it is convenient to introduce the ideas of .I block and of .I "nesting level." The beginning of a program file is at nesting level zero. Any options, macro definitions, or variable declarations there are also at level zero. The text immediately following a .B procedure statement is at level 1. After the declarations, a left brace marks the beginning of a new block and increases the nesting level by 1; a right brace drops the level by 1. (Braces inside declarations do not mark blocks.) (See Section 7.2). An .B end statement marks the end of the procedure, level 1, and the return to level 0. A name (variable or macro) that is defined at level @k@ is defined throughout that block and in all deeper nested levels in which that name is not redefined or redeclared. Thus, a procedure might look like the following: .DS B .ta .7i 1.4i 2.1i 2.8i .B # block 0 procedure george real x x = 2 . . . if(x > 2) { # new block integer x # a different variable do x = 1,7 write(,x) . . . } # end of block end # end of procedure, return to block 0 .DE .NH 2 Statements .PP A statement is terminated by end of line or by a semicolon. Statements are of the following types: .DS B Option Include Define .sp .3 Procedure End .sp .3 Declarative Executable .DE The .B option statement is described in Section 10. The .B include, .B define, and .B end statements have been described above; they may not be followed by another statement on a line. Each procedure begins with a .B procedure statements and finishes with an .B end statement; these are discussed in Section 8. Declarations describe types and values of variables and procedures. Executable statements cause specific actions to be taken. A block is an example of an executable statement; it is made up of declarative and executable statements. .NH 2 Labels .PP An executable statement may have a .I label which may be used in a branch statement. A label is an identifier followed by a colon, as in .DS B .B .ta 1i read(, x) if(x < 3) goto error . . . error: fatal("bad input") .R .DE .NH 1 DATA TYPES AND VARIABLES .PP EFL supports a small number of basic (scalar) types. The programmer may define objects made up of variables of basic type; other aggregates may then be defined in terms of previously defined aggregates. .NH 2 Basic Types .PP The basic types are .DS B \fBlogical \fBinteger \fBfield(\fIm\|\fB:\fIn\|\fB) \fBreal \fBcomplex \fBlong real \fBlong complex \fBcharacter(\fIn\|\fB) .R .DE A logical quantity may take on the two values true and false. An integer may take on any whole number value in some machine-dependent range. A field quantity is an integer restricted to a particular closed interval @([m:n])@. A `real' quantity is a floating point approximation to a real or rational number. A long real is a more precise approximation to a rational. (Real quantities are represented as single precision floating point numbers; long reals are double precision floating point numbers.) A complex quantity is an approximation to a complex number, and is represented as a pair of reals. A character quantity is a fixed-length string of @n@ characters. .NH 2 Constants .PP There is a notation for a constant of each basic type. .LP A logical may take on the two values .DS B .B true false .R .DE An integer or field constant is a fixed point constant, optionally preceded by a plus or minus sign, as in .DS B .B 17 \-94 +6 0 .R .DE A long real (`double precision') constant is a floating point constant containing an exponent field that begins with the letter .B d. A real (`single precision') constant is any other floating point constant. A real or long real constant may be preceded by a plus or minus sign. The following are valid .B real constants: .DS B .B 17.3 \-.4 7.9e\-6 @(~=~7.9 times 10 sup -6 )@ 14e9 @(~=~1.4 times 10 sup 10 )@ .R .DE The following are valid .B "long real" constants .DS B .B 7.9d\-6 @(~=~7.9 times 10 sup -6 )@ 5d3 .R .DE .LP A character constant is a quoted string. .NH 2 Variables .PP A variable is a quantity with a name and a location. At any particular time the variable may also have a value. (A variable is said to be .I undefined before it is initialized or assigned its first value, and after certain indefinite operations are performed.) Each variable has certain attributes: .NH 3 Storage Class .PP The association of a name and a location is either transitory or permanent. Transitory association is achieved when arguments are passed to procedures. Other associations are permanent (static). (A future extension of EFL may include dynamically allocated variables.) .NH 3 Scope of Names .PP The names of common areas are global, as are procedure names: these names may be used anywhere in the program. All other names are local to the block in which they are declared. .NH 3 Precision .PP Floating point variables are either of normal or .B long precision. This attribute may be stated independently of the basic type. .NH 2 Arrays .PP It is possible to declare rectangular arrays (of any dimension) of values of the same type. The index set is always a cross-product of intervals of integers. The lower and upper bounds of the intervals must be constants for arrays that are local or .B common. A formal argument array may have intervals that are of length equal to one of the other formal arguments. An element of an array is denoted by the array name followed by a parenthesized comma-separated list of integer values, each of which must lie within the corresponding interval. (The intervals may include negative numbers.) Entire arrays may be passed as procedure arguments or in input/output lists, or they may be initialized; all other array references must be to individual elements. .NH 2 Structures .PP It is possible to define new types which are made up of elements of other types. The compound object is known as a .I structure; its constituents are called .I members of the structure. The structure may be given a name, which acts as a type name in the remaining statements within the scope of its declaration. The elements of a structure may be of any type (including previously defined structures), or they may be arrays of such objects. Entire structures may be passed to procedures or be used in input/output lists; individual elements of structures may be referenced. The uses of structures will be detailed below. The following structure might represent a symbol table: .DS B .B .ta .7i 1.4i 2.1i struct tableentry { character(8) name integer hashvalue integer numberofelements field(0:1) initialized, used, set field(0:10) type } .DE .NH 1 EXPRESSIONS .PP Expressions are syntactic forms that yield a value. An expression may have any of the following forms, recursively applied: .DS B .I primary \fB(\fI expression \fB)\fI unary-operator expression expression binary-operator expression .DE In the following table of operators, all operators on a line have equal precedence and have higher precedence than operators on later lines. The meanings of these operators are described in sections 5.3 and 5.4. .DS B .B \-> . \(**\(** \(** / \fIunary\fB + \- ++ \-\- + \- < <= > >= == \*~= & && | |\|| $ = += \-= \(**= /= \(**\(**= &= |= &&= |\||= .R .DE Examples of expressions are .DS B .B a > greater than >= @>=@ greater than or equal .TE .KE Since the complex numbers are not ordered, the only relational operators that may take complex operands are \fB==\fR and \fB\*~=\fR . The character collating sequence is not defined. .NH 3 Assignment Operators .PP All of the assignment operators are right associative. The simple form of assignment is .DS C \fIbasic-left-side \fB= \fIexpression\fR .DE A .I basic-left-side is a scalar variable name, array element, or structure member of basic type. This statement computes the expression on the right side, and stores that value (possibly after coercing the value to the type of the left side) in the location named by the left side. The value of the assignment expression is the value assigned to the left side after coercion. .PP There is also an assignment operator corresponding to each binary arithmetic and logical operator. In each case, @a ~op = ~ b@ is equivalent to @a ~=~ a ~ op~ b@. (The operator and equal sign must not be separated by blanks.) Thus, .B n+=2 adds 2 to n. The location of the left side is evaluated only once. .NH 2 Dynamic Structures .PP EFL does not have an address (pointer, reference) type. However, there is a notation for dynamic structures, .DS B \fIleftside \fB\-> \fIstructurename\fR .DE This expression is a structure with the shape implied by .I structurename but starting at the location of .I leftside. In effect, this overlays the structure template at the specified location. The .I leftside must be a variable, array, array element, or structure member. The type of the .I leftside must be one of the types in the structure declaration. An element of such a structure is denoted in the usual way using the dot operator. Thus, .DS C .B place(i) \-> st.elt .R .DE refers to the .B elt member of the .B st structure starting at the @i sup th@ element of the array .B place. .NH 2 Repetition Operator .PP Inside of a list, an element of the form .DS C \fIinteger-constant-expression \fB$\fI constant-expression\fR .DE is equivalent to the appearance of the .I expression a number of times equal to the first expression. Thus, .DS C .B (3, 3$4, 5) .R .DE is equivalent to .DS C .B (3, 4, 4, 4, 5) .R .DE .NH 2 Constant Expressions .PP If an expression is built up out of operators (other than functions) and constants, the value of the expression is a constant, and may be used anywhere a constant is required. .NH 1 DECLARATIONS .PP Declarations statement describe the meaning, shape, and size of named objects in the EFL language. .NH 2 Syntax .PP A declaration statement is made up of attributes and variables. Declaration statements are of two form: .DS B .I attributes variable-list attributes { declarations } .R .DE In the first case, each name in the .I variable-list has the specified attributes. In the second, each name in the declarations also has the specified attributes. A variable name may appear in more than one variable list, so long as the attributes are not contradictory. Each name of a nonargument variable may be accompanied by an initial value specification. The .I declarations inside the braces are one or more declaration statements. Examples of declarations are .DS B .B integer k=2 .sp .5 long real b(7,3) .sp .5 common(cname) { integer i long real array(5,0:3) x, y character(7) ch } .R .DE .ne 1i .NH 2 Attributes .NH 3 Basic Types .PP The following are basic types in declarations .DS .B logical integer field(@m:n@) character(@k@) real complex .R .DE In the above, the quantities @k@, @m@, and @n@ denote integer constant expressions with the properties @k>0@ and @n>m@. .NH 3 Arrays .PP The dimensionality may be declared by an .B array attribute .EQ C bold array( b sub 1 , ..., b sub n bold ) .EN Each of the @b sub i@ may either be a single integer expression or a pair of integer expressions separated by a colon. The pair of expressions form a lower and an upper bound; the single expression is an upper bound with an implied lower bound of 1. The number of dimensions is equal to @n,@ the number of bounds. All of the integer expressions must be constants. An exception is permitted only if all of the variables associated with an array declarator are formal arguments of the procedure; in this case, each bound must have the property that @upper - lower + 1@ is equal to a formal argument of the procedure. (The compiler has limited ability to simplify expressions, but it will recognize important cases such as .B "(0:n\-1)". The upper bound for the last dimension @(b sub n )@ may be marked by an asterisk ( \fB\(**\fR ) if the size of the array is not known. The following are legal @bold array@ attributes: .DS B .B array(5) array(5, 1:5, \-3:0) array(5, \(**) array(0:m\-1, m) .R .DE .NH 3 Structures .PP A structure declaration is of the form .DS B \fBstruct \fIstructname \fB{ \fI declaration statements \fB}\fR .DE The .I structname is optional; if it is present, it acts as if it were the name of a type in the rest of its scope. Each name that appears inside the .I declarations is a .I member of the structure, and has a special meaning when used to qualify any variable declared with the structure type. A name may appear as a member of any number of structures, and may also be the name of an ordinary variable, since a structure member name is used only in contexts where the parent type is known. The following are valid structure attributes .DS B .B struct xx { integer a, b real x(5) } struct { xx z(3); character(5) y } .R .DE The last line defines a structure containing an array of three @bold xx 's@ and a character string. .NH 3 Precision .PP Variables of floating point (@bold real@ or @bold complex@) type may be declared to be @bold long@ to ensure they have higher precision than ordinary floating point variables. The default precision is \fBshort\fR. .NH 3 Common .PP Certain objects called .I common\ areas have external scope, and may be referenced by any procedure that has a declaration for the name using a .DS C \fBcommon ( \fI commonareaname \fB)\fR .DE attribute. All of the variables declared with a particular \fBcommon\fR attribute are in the same block; the order in which they are declared is significant. Declarations for the same block in differing procedures must have the variables in the same order and with the same types, precision, and shapes, though not necessarily with the same names. .NH 3 External .PP If a name is used as the procedure name in a procedure invocation, it is implicitly declared to have the .B external attribute. If a procedure name is to be passed as an argument, it is necessary to declare it in a statement of the form .DS B \fBexternal \*([[ \fIname \fB\*(]]\fR .DE If a name has the external attribute and it is a formal argument of the procedure, then it is associated with a procedure identifier passed as an actual argument at each call. If the name is not a formal argument, then that name is the actual name of a procedure, as it appears in the corresponding .B procedure statement. .NH 2 Variable List .PP The elements of a variable list in a declaration consist of a name, an optional dimension specification, and an optional initial value specification. The name follows the usual rules. The dimension specification is the same form and meaning as the parenthesized list in an .B array attribute. The initial value specification is an equal sign (\fB=\fR) followed by a constant expression. If the name is an array, the right side of the equal sign may be a parenthesized list of constant expressions, or repeated elements or lists; the total number of elements in the list must not exceed the number of elements of the array, which are filled in column-major order. .NH 2 The Initial Statement .PP An initial value may also be specified for a simple variable, array, array element, or member of a structure using a statement of the form .DS B \fBinitial \*([[ \fIvar \fB= \fIval \*(]]\fR .DE The @var@ may be a variable name, array element specification, or member of structure. The right side follows the same rules as for an initial value specification in other declaration statements. .NH 1 EXECUTABLE STATEMENTS .PP Every useful EFL program contains executable statements \(em otherwise it would not do anything and would not need to be run. Statements are frequently made up of other statements. Blocks are the most obvious case, but many other forms contain statements as constituents. .PP To increase the legibility of EFL programs, some of the statement forms can be broken without an explicit continuation. A square (\fR\(sq\fP) in the syntax represents a point where the end of a line will be ignored. .NH 2 Expression Statements .NH 3 Subroutine Call .PP A procedure invocation that returns no value is known as a subroutine call. Such an invocation is a statement. Examples are .DS B .B work(in, out) run(\|) .R .DE .PP Input/output statements (see Section 7.7) resemble procedure invocations but do not yield a value. If an error occurs the program stops. .NH 3 Assignment Statements .PP An expression that is a simple assignment (\fB=\fR) or a compound assignment (\fB+=\fR etc.) is a statement: .DS B .B a = b a = sin(x)/6 x \(**= y .R .DE .NH 2 Blocks .PP A block is a compound statement that acts as a statement. A block begins with a left brace, optionally followed by declarations, optionally followed by executable statements, followed by a right brace. A block may be used anywhere a statement is permitted. A block is not an expression and does not have a value. An example of a block is .DS B .B { integer i # this variable is unknown outside the braces .sp .3 big = 0 do i = 1,n if(big < a(i)) big = a(i) } .R .DE .NH 2 Test Statements .PP Test statements permit execution of certain statements conditional on the truth of a predicate. .NH 3 If Statement .PP The simplest of the test statements is the .B if statement, of form .DS C \fBif ( \fIlogical-expression\fB ) \fR\(sq\fP \fIstatement\fR .DE The logical expression is evaluated; if it is true, then the .I statement is executed. .NH 3 If-Else .PP A more general statement is of the form .DS B \fBif ( \fIlogical-expression \fB) \fR\(sq\fP \fI statement-1 \fR\(sq\fP \fBelse \fR\(sq\fP \fI statement-2 \fR .DE If the expression is .B true then .I statement-1 is executed, otherwise .I statement-2 is executed. Either of the consequent statements may itself be an .B if-else so a completely nested test sequence is possible: .DS B .B if(x .gt. >= .ge. == .eq. \*~= .ne. & .and. | .or. && .andand. |\|| .oror. \*~ .not. true .true. false .false. .TE .R .DE In this mode, no structure element may be named .B lt, .B le, etc. The readable forms in the left column are always recognized. .NH 2 Complex Constants .PP A complex constant may be written as a parenthesized list of real quantities, such as .DS C .B (1.5, 3.0) .R .DE The preferred notation is by a type coercion, .DS C .B complex(1.5, 3.0) .R .DE .NH 2 Function Values .PP The preferred way to return a value from a function in EFL is the @bold return ( value )@ construct. However, the name of the function acts as a variable to which values may be assigned; an ordinary @bold return@ statement returns the last value assigned to that name as the function value. .NH 2 Equivalence .PP A statement of the form .EQ C bold equivalence ~ v sub 1 ,~ v sub 2 ,~ ...,~ v sub n .EN declares that each of the @v sub i@ starts at the same memory location. Each of the @v sub i@ may be a variable name, array element name, or structure member. .NH 2 Minimum and Maximum Functions .PP There are a number of non-generic functions in this category, which differ in the required types of the arguments and the type of the return value. They may also have variable numbers of arguments, but all the arguments must have the same type. .DS .TS center; ccc lll . Function Argument Type Result Type _ .B amin0 integer real amin1 real real min0 integer integer min1 real integer dmin1 long real long real amax0 integer real amax1 real real max0 integer integer max1 real integer dmax1 long real long real .R .TE .DE .NH 1 COMPILER OPTIONS .PP A number of options can be used to control the output and to tailor it for various compilers and systems. The defaults chosen are conservative, but it is sometimes necessary to change the output to match peculiarities of the target environment. .PP Options are set with statements of the form .DS C \fBoption \fI\*([[ \fIopt \fI\*(]]\fR .DE where each .I opt is of one of the forms .DS B .I optionname optionname \fB= \fIoptionvalue .R .DE The .I optionvalue is either a constant (numeric or string) or a name associated with that option. The two names .B yes and .B no apply to a number of options. .NH 2 Default Options .PP Each option has a default setting. It is possible to change the whole set of defaults to those appropriate for a particular environment by using the .B system option. At present, the only valid values are .B system=unix and .B system=gcos. .NH 2 Input Language Options .PP The .B dots option determines whether the compiler recognizes .B .lt. and similar forms. The default setting is .B no. .NH 2 Input/Output Error Handling .PP The .B ioerror option can be given three values: .B none means that none of the I/O statements may be used in expressions, since there is no way to detect errors. The implementation of the .B ibm form uses ERR= and END= clauses. The implementation of the .B fortran77 form uses IOSTAT= clauses. .NH 2 Continuation Conventions .PP By default, continued Fortran statements are indicated by a character in column 6 (Standard Fortran). The option .B "continue=column1" puts an ampersand (\fB&\fR) in the first column of the continued lines instead. .NH 2 Default Formats .PP If no format is specified for a datum in an iolist for a .B read or .B write statement, a default is provided. The default formats can be changed by setting certain options .DS .TS center; cc ll. Option Type _ \fBiformat\fR integer \fBrformat\fR real \fBdformat\fR long real \fBzformat\fR complex \fBzdformat\fR long complex \fBlformat\fR logical .TE .DE The associated value must be a Fortran format, such as .DS C .B option rformat=f22.6 .R .DE .NH 2 Alignments and Sizes .PP In order to implement .B character variables, structures, and the .B sizeof and .B lengthof operators, it is necessary to know how much space various Fortran data types require, and what boundary alignment properties they demand. The relevant options are .DS .B .TS center; ccc lll. Fortran Type Size Option Alignment Option _ integer isize ialign real rsize ralign long real dsize dalign complex zsize zalign logical lsize lalign .R .TE .DE The sizes are given in terms of an arbitrary unit; the alignment is given in the same units. The option .B charperint gives the number of characters per .B integer variable. .NH 2 Default Input/Output Units .PP The options .B ftnin and .B ftnout are the numbers of the standard input and output units. The default values are .B ftnin=5 and .B ftnout=6. .NH 2 Miscellaneous Output Control Options .PP Each Fortran procedure generated by the compiler will be preceded by the value of the .B procheader option. .PP No Hollerith strings will be passed as subroutine arguments if .B hollincall=no is specified. .PP The Fortran statement numbers normally start at 1 and increase by 1. It is possible to change the increment value by using the .B deltastno option. .ta .5i 1i 1.5i 2i 2.5i 3.0i .NH 1 EXAMPLES .PP In order to show the flavor or programming in EFL, we present a few examples. They are short, but show some of the convenience of the language. .NH 2 File Copying .PP The following short program copies the standard input to the standard output, provided that the input is a formatted file containing lines no longer than a hundred characters. .DS .B procedure # main program character(100) line while( read( , line) == 0 ) write( , line) end .R .DE Since .B read returns zero until the end of file (or a read error), this program keeps reading and writing until the input is exhausted. .NH 2 Matrix Multiplication .PP The following procedure multiplies the @m times n@ matrix a by the @n times p@ matrix b to give the @m times p@ matrix c. The calculation obeys the formula @c sub ij ~=~ sum a sub ik b sub kj@. .DS .ta .7i 1.4i 2.1i 2.8i .B procedure matmul(a,b,c, m,n,p) integer i, j, k, m, n, p long real a(m,n), b(n,p), c(m,p) .sp .3 do i = 1,m do j = 1,p { c(i,j) = 0 do k = 1,n c(i,j) += a(i,k) \(** b(k,j) } end .R .DE .NH 2 Searching a Linked List .PP Assume we have a list of pairs of numbers @(x,y)@. The list is stored as a linked list sorted in ascending order of @x@ values. The following procedure searches this list for a particular value of @x@ and returns the corresponding @y@ value. .DS .B .ta .7i 1.4i 2.1i 2.8i define LAST 0 define NOTFOUND \-1 integer procedure val(list, first, x) # list is an array of structures. # Each structure contains a thread index value, an x, and a y value. .sp .3 struct { integer nextindex integer x, y } list(\(**) .sp .3 integer first, p, arg for(p = first , p\*~=LAST && list(p).x<=x , p = list(p).nextindex) if(list(p).x == x) return( list(p).y ) return(NOTFOUND) end .R .DE The search is a single .B for loop that begins with the head of the list and examines items until either the list is exhausted (p==LAST) or until it is known that the specified value is not on the list (list(p).x > x). The two tests in the conjunction must be performed in the specified order to avoid using an invalid subscript in the .B list(p) reference. Therefore, the .B && operator is used. The next element in the chain is found by the iteration statement .B "p=list(p).nextindex". .NH 2 Walking a Tree .PP As an example of a more complicated problem, let us imagine we have an expression tree stored in a common area, and that we want to print out an infix form of the tree. Each node is either a leaf (containing a numeric value) or it is a binary operator, pointing to a left and a right descendant. In a recursive language, such a tree walk would be implement by the following simple pseudocode: .DS .I if this node is a leaf print its value otherwise print a left parenthesis print the left node print the operator print the right node print a right parenthesis .R .DE In a nonrecursive language like EFL, it is necessary to maintain an explicit stack to keep track of the current state of the computation. The following procedure calls a procedure .B outch to print a single character and a procedure .B outval to print a value. .DS .ta .7i 1.4i 2.1i 2.8i .B procedure walk(first) # print out an expression tree .sp .5 integer first # index of root node integer currentnode integer stackdepth common(nodes) struct { character(1) op integer leftp, rightp real val } tree(100) # array of structures .sp .5 struct { integer nextstate integer nodep } stackframe(100) .sp .5 define NODE tree(currentnode) define STACK stackframe(stackdepth) .sp .5 # nextstate values define DOWN 1 define LEFT 2 define RIGHT 3 .DE .DS .B # initialize stack with root node stackdepth = 1 STACK.nextstate = DOWN STACK.nodep = first .DE .DS .B while( stackdepth > 0 ) { currentnode = STACK.nodep select(STACK.nextstate) { case DOWN: if(NODE.op == " ") # a leaf { outval( NODE.val ) stackdepth \-= 1 } else { # a binary operator node outch( "(" ) STACK.nextstate = LEFT stackdepth += 1 STACK.nextstate = DOWN STACK.nodep = NODE.leftp } .sp .5 case LEFT: outch( NODE.op ) STACK.nextstate = RIGHT stackdepth += 1 STACK.nextstate = DOWN STACK.nodep = NODE.rightp .sp .5 case RIGHT: outch( ")" ) stackdepth \-= 1 } } end .DE .NH 1 PORTABILITY .PP One of the major goals of the EFL language is to make it easy to write portable programs. The output of the EFL compiler is intended to be acceptable to any Standard Fortran compiler (unless the .B fortran77 option is specified). .NH 2 Primitives .PP Certain EFL operations cannot be implemented in portable Fortran, so a few machine-dependent procedures must be provided in each environment. .NH 3 Character String Copying .PP The subroutine .B ef1asc is called to copy one character string to another. If the target string is shorter than the source, the final characters are not copied. If the target string is longer, its end is padded with blanks. The calling sequence is .DS B subroutine ef1asc(a, la, b, lb) integer a(\(**), la, b(\(**), lb .DE and it must copy the first .B lb characters from .B b to the first .B la characters of .B a. .NH 3 Character String Comparisons .PP The function .B ef1cmc is invoked to determine the order of two character strings. The declaration is .DS B integer function ef1cmc(a, la, b, lb) integer a(\(**), la, b(\(**), lb .DE The function returns a negative value if the string .B a of length .B la precedes the string .B b of length .B lb. It returns zero if the strings are equal, and a positive value otherwise. If the strings are of differing length, the comparison is carried out as if the end of the shorter string were padded with blanks. .NH 1 ACKNOWLEDGMENTS .PP A. D. Hall originated the EFL language and wrote the first compiler for it; he also gave inestimable aid when I took up the project. B. W. Kernighan and W. S. Brown made a number of useful suggestions about the language and about this report. N. L. Schryer has acted as willing, cheerful, and severe first user and helpful critic of each new version and facility. J. L. Blue, L. C. Kaufman, and D. D. Warner made very useful contributions by making serious use of the compiler, and noting and tolerating its misbehaviors. .NH 1 REFERENCE .IP 1. B. W. Kernighan, ``Ratfor \(em A Preprocessor for a Rational Fortran'', Bell Laboratories Computing Science Technical Report #55 .bp .SH APPENDIX A. Relation Between EFL and Ratfor .PP There are a number of differences between Ratfor and EFL, since EFL is a defined language while Ratfor is the union of the special control structures and the language accepted by the underlying Fortran compiler. Ratfor running over Standard Fortran is almost a subset of EFL. Most of the features described in the Atavisms section are present to ease the conversion of Ratfor programs to EFL. .PP There are a few incompatibilities: The syntax of the .B for statement is slightly different in the two languages: the three clauses are separated by semicolons in Ratfor, but by commas in EFL. (The initial and iteration statements may be compound statements in EFL because of this change). The input/output syntax is quite different in the two languages, and there is no FORMAT statement in EFL. There are no ASSIGN or assigned GOTO statements in EFL. .PP The major linguistic additions are character data, factored declaration syntax, block structure, assignment and sequential test operators, generic functions, and data structures. EFL permits more general forms for expressions, and provides a more uniform syntax. (One need not worry about the Fortran/Ratfor restrictions on subscript or DO expression forms, for example.) .SH APPENDIX B. COMPILER .SH B.1. Current Version .PP The current version of the EFL compiler is a two-pass translator written in portable C. It implements all of the features of the language described above except for .B "long complex" numbers. Versions of this compiler run under the .SM GCOS and .UX operating systems. .SH B.2. Diagnostics .PP The EFL compiler diagnoses all syntax errors. It gives the line and file name (if known) on which the error was detected. Warnings are given for variables that are used but not explicitly declared. .SH B.3. Quality of Fortran Produced .PP The Fortran produced by EFL is quite clean and readable. To the extent possible, the variable names that appear in the EFL program are used in the Fortran code. The bodies of loops and test constructs are indented. Statement numbers are consecutive. Few unneeded GOTO and CONTINUE statements are used. It is considered a compiler bug if incorrect Fortran is produced (except for escaped lines). The following is the Fortran procedure produced by the EFL compiler for the matrix multiplication example (Section 11.2): .DS B .B \0\0\0\0\0\0subroutine\0matmul(a,\0b,\0c,\0m,\0n,\0p) \0\0\0\0\0\0integer\0m,\0n,\0p \0\0\0\0\0\0double\0precision\0a(m,\0n),\0b(n,\0p),\0c(m,\0p) \0\0\0\0\0\0integer\0i,\0j,\0k \0\0\0\0\0\0do\0\03\0i\0=\01,\0m \0\0\0\0\0\0\0\0\0do\0\02\0j\0=\01,\0p \0\0\0\0\0\0\0\0\0\0\0\0c(i,\0j)\0=\00 \0\0\0\0\0\0\0\0\0\0\0\0do\0\01\0k\0=\01,\0n \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0c(i,\0j)\0=\0c(i,\0j)+a(i,\0k)*b(k,\0j) \0\0\01\0\0\0\0\0\0\0\0\0\0\0continue \0\0\02\0\0\0\0\0\0\0\0continue \0\0\03\0\0\0\0\0continue \0\0\0\0\0\0end .R .DE The following is the procedure for the tree walk (Section 11.4): .DS B .B \0\0\0\0\0\0subroutine\0walk(first) \0\0\0\0\0\0integer\0first \0\0\0\0\0\0common\0/nodes/\0tree \0\0\0\0\0\0integer\0tree(4,\0100) \0\0\0\0\0\0real\0tree1(4,\0100) \0\0\0\0\0\0integer\0staame(2,\0100),\0stapth,\0curode \0\0\0\0\0\0integer\0const1(1) \0\0\0\0\0\0equivalence\0(tree(1,1),\0tree1(1,1)) \0\0\0\0\0\0data\0const1(1)/4h\0\0\0\0/ c\0print\0out\0an\0expression\0tree c\0index\0of\0root\0node c\0array\0of\0structures c\0\0\0nextstate\0values c\0\0\0initialize\0stack\0with\0root\0node \0\0\0\0\0\0stapth\0=\01 \0\0\0\0\0\0staame(1,\0stapth)\0=\01 \0\0\0\0\0\0staame(2,\0stapth)\0=\0first \0\0\01\0\0if\0(stapth\0.le.\00)\0goto\0\09 \0\0\0\0\0\0\0\0\0curode\0=\0staame(2,\0stapth) \0\0\0\0\0\0\0\0\0goto\0\07 \0\0\02\0\0\0\0\0\0\0\0if\0(tree(1,\0curode)\0.ne.\0const1(1))\0goto\03 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0call\0outval(tree1(4,\0curode)) c\0a\0leaf \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0stapth\0=\0stapth-1 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0goto\0\04 \0\0\03\0\0\0\0\0\0\0\0\0\0\0call\0outch(1h() c\0a\0binary\0operator\0node \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0staame(1,\0stapth)\0=\02 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0stapth\0=\0stapth+1 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0staame(1,\0stapth)\0=\01 \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0staame(2,\0stapth)\0=\0tree(2,\0curode) \0\0\04\0\0\0\0\0\0\0\0goto\0\08 \0\0\05\0\0\0\0\0\0\0\0call\0outch(tree(1,\0curode)) \0\0\0\0\0\0\0\0\0\0\0\0staame(1,\0stapth)\0=\03 \0\0\0\0\0\0\0\0\0\0\0\0stapth\0=\0stapth+1 \0\0\0\0\0\0\0\0\0\0\0\0staame(1,\0stapth)\0=\01 \0\0\0\0\0\0\0\0\0\0\0\0staame(2,\0stapth)\0=\0tree(3,\0curode) \0\0\0\0\0\0\0\0\0\0\0\0goto\0\08 \0\0\06\0\0\0\0\0\0\0\0call\0outch(1h)) \0\0\0\0\0\0\0\0\0\0\0\0stapth\0=\0stapth-1 \0\0\0\0\0\0\0\0\0\0\0\0goto\0\08 \0\0\07\0\0\0\0\0\0\0\0if\0(staame(1,\0stapth)\0.eq.\03)\0goto\0\06 \0\0\0\0\0\0\0\0\0\0\0\0if\0(staame(1,\0stapth)\0.eq.\02)\0goto\0\05 \0\0\0\0\0\0\0\0\0\0\0\0if\0(staame(1,\0stapth)\0.eq.\01)\0goto\0\02 \0\0\08\0\0\0\0\0continue \0\0\0\0\0\0\0\0\0goto\0\01 \0\0\09\0\0continue \0\0\0\0\0\0end .R .DE .SH APPENDIX C. CONSTRAINTS ON THE DESIGN OF THE EFL LANGUAGE .PP Although Fortran can be used to simulate any finite computation, there are realistic limits on the generality of a language that can be translated into Fortran. The design of EFL was constrained by the implementation strategy. Certain of the restrictions are petty (six character external names), but others are sweeping (lack of pointer variables). The following paragraphs describe the major limitations imposed by Fortran. .SH C.1. External Names .PP External names (procedure and COMMON block names) must be no longer than six characters in Fortran. Further, an external name is global to the entire program. Therefore, EFL can support block structure within a procedure, but it can have only one level of external name if the EFL procedures are to be compilable separately, as are Fortran procedures. .SH C.2. Procedure Interface .PP The Fortran standards, in effect, permit arguments to be passed between Fortran procedures either by reference or by copy-in/copy-out. This indeterminacy of specification shows through into EFL. A program that depends on the method of argument transmission is illegal in either language. .PP There are no procedure-valued variables in Fortran: a procedure name may only be passed as an argument or be invoked; it cannot be stored. Fortran (and EFL) would be noticeably simpler if a procedure variable mechanism were available. .SH C.3. Pointers .PP The most grievous problem with Fortran is its lack of a pointer-like data type. The implementation of the compiler would have been far easier if certain hard cases could have been handled by pointers. Further, the language could have been simplified considerably if pointers were accessible in Fortran. (There are several ways of simulating pointers by using subscripts, but they founder on the problems of external variables and initialization.) .SH C.4. Recursion .PP Fortran procedures are not recursive, so it was not practical to permit EFL procedures to be recursive. (Recursive procedures with arguments can be simulated only with great pain.) .SH C.5. Storage Allocation .PP The definition of Fortran does not specify the lifetime of variables. It would be possible but cumbersome to implement stack or heap storage disciplines by using COMMON blocks. ine NODE tree(currentnode) define STACK stackframdoc/ps2/06.efl/Makefile 444 3 12 1221 3655214630 7734 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 4/29/86 # SRCS= efl MACROS= -msU PRINTER=Pdp EQN= deqn -${PRINTER} TBL= dtbl -${PRINTER} TROFF= ditroff -${PRINTER} paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${EQN} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done e no ASSIGN or assigned GOTO statements in EFL. .PP The major linguistic additions are character data, factored declaration syntax, block structure, assignment and sequential test operators, generic functions, and data structures. EFL permits more general forms for expressions, and provides a more uniform syntax. (One need not worry about the Fortran/Ratfor restricdoc/ps2/07.fp/ 755 3 12 0 3662145742 6062 doc/ps2/07.fp/refs.rno 444 3 12 2356 3655220113 7616 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)refs.rno 6.1 (Berkeley) 4/29/86 .\" .NS 1 "References" .sp .ip "[Bac78]" John Backus, \*(lqCan Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs,\*(rq \fICACM\fP, Turing Award Lecture, 21, 8 (August 1978), 613-641. .sp 6p .ip "[Fod80]" John K. Foderaro, \*(lqThe \s-2FRANZ LISP\s+2 Manual,\*(rq University of California, Berkeley, California, 1980. .sp 6p .ip "[Joy79]" W.N. Joy, O. Babaoglu, \*(lqUNIX Programmer's Manual,\*(rq November 7, 1979, Computer Science Division, University of California, Berkeley, California. .sp 6p .ip "[Mc60]" J. McCarthy, \*(lqRecursive Functions of Symbolic expressions and their Computation by Machine,\*(rq Part I, \fICACM\fP 3, 4 (April 1960), 184-195. .sp 6p .ip "[Pat80]" Dorab Ratan Patel, \*(lqA System Organization for Applicative Programming,\*(rq M.S Thesis, University of California, Los Angeles, California, 1980. .sp 6p .ip "[Pat81]" Dorab Patel, \*(lqFunctional Language Interpreter User Manual,\*(rq University of California, Los Angeles, California, 1981. .bp ter data, factored declaration syntax, block structure, assignment and sequential test operators, generic functions, and data structures. EFL permits more general forms for expressions, and provides a more uniform syntax. (One need not worry about the Fortran/Ratfor restricdoc/ps2/07.fp/manApp.rno 444 3 12 16172 3660724644 10132 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manApp.rno 6.2 (Berkeley) 5/10/86 .\" .sx 0 .AP "Appendix A: Local Modifications" .NS 1 "Character Set Changes" .sp .pp Backus [Ba78] used some characters that do not appear on our ASCII terminals, so we have made the following substitutions: .sp 2 .TS center box; l|c|c. \fBconstant\fP $x bar$ %\fIx\fP \fBinsert\fP \(sl ! \fBapply-to-all\fP \(*a & \fBcomposition\fP \*(cm @ \fBarrow\fP $->$ -> \fBempty set\fP \(*f <> \fBbottom\fP \*(bt ? \fBdivide\fP \(di \(sl \fBmultiply\fP \(mu \(** .TE .sp .NS 1 "Syntactic Modifications" .NS 2 "While and Conditional" .pp \fBWhile\fP and conditional functional expressions \fImust\fP be enclosed in parenthesis, \*(EG .sp .(c (\fBwhile\fP \fIf g\fP) .sp (\fIp\fP \fB->\fP \fIf\fP \fB;\fP \fIg\fP) .)c .sp .NS 2 "Function Definitions" .pp Function definitions are enclosed by curly braces; they consist of a name-definition pair, separated by blanks. For example: .sp .ce 1 .b "{fact$~$ !\(** @ iota}" .sp defines the function \fBfact\fP (the reader should recognize this as the non-recursive factorial function). .sp .NS 2 "Sequence Construction" .pp It is not necessary to separate elements of a sequences with a comma; a blank will suffice: .sp .nf .ce 1 <1,2,3> $==$ <1 2 3> .sp .fi .pp For nested sequences, the terminating right angle bracket acts as the delimiter: .sp .nf .ce 1 <<1,2,3>,<4,5,6>> $==$ <<1 2 3><4 5 6>> .sp .fi .sp 2 .NS 1 "User Interface" .sp .pp We have provided a rich set of commands that allow the user to catalog, print, and delete functions, to load them from a file and to save them away. The user may generate script files, dynamically trace and measure functional expression execution, generate debugging output, and, temporarily exit to the \s-2FRANZ LISP\s+2 system. A command must begin with a right parenthesis. Consult Appendix C for a complete description of the command syntax. .pp Debugging in FP is difficult; all undefined results map to a single atom \- \fIbottom\fP (\*(lq?\*(rq). To pinpoint the cause of an error the user can use the special debugging output function, \fBout\fP, or the tracer. .sp .NS 1 "Additions and Ommissions" .sp .pp Many relational functions have been added: $<,~~>,~~=,~~ \(!=, ~~<=,~~>=$; their syntax is: <, >, =, ~=, <=, >=. Also added are the \fBiota\fP function (This is the \s-2APL\s+2 iota function an n-element sequence of natural numbers) and the exclusive OR (\z\(ci\(pl) function. .pp Several new structural functions have been added: \fBpair\fP pairs up successive elements of a sequence, \fBsplit\fP splits a sequence into two (roughly) equal halves, \fBlast\fP returns the last element of the sequence (<> if the sequence is empty), \fBfirst\fP returns the first element of the sequence (<> if it is empty), and \fBconcat\fP concatenates all subsequences of a sequence, squeezing out null sequences (<>). \fBFront\fP is equivalent to \fBtlr\fP. \fBPick\fP is a parameterized form of the selector function; the first component of the argument selects a single element from the second component. \fBOut\fP is the only side-effect function; it is equivalent to the \fBid\fP function but it also prints its argument out at the terminal. This function is intended to be used only for debugging. .pp One new functional form has been added, tree insert. This functional form breaks up the the argument into two roughly equal pieces applying itself recursively to the two halves. The functional parameter is applied to the result. .pp The binary-to-unary functions ('\fBbu\fP') has been omitted. .pp Seven mathematical library functions have been added: sin, cos, asin ($sin sup {-1}$), acos ($cos sup {-1}$), log, exp, and mod (the remainder function) .bp .sx .nf .nr ii 18 .AP "Appendix B: FP Grammar" \fII. BNF Syntax\fP .sp .ip "fpInput $->$" (fnDef | application | fpCmd\*(sa)\(** | '^D' .ip "fnDef $->$" \&'{' name funForm '}' .ip "application $->$" funForm ':' object .ip "name $->$" letter (letter | digit | '_')\(** .ip "nameList $->$" (name)\(** .ip "object $->$" atom | fpSequence | '?' .ip "fpSequence $->$" \&'<' (\(*e | object ((',' | ' ') object)\(**) '>' .ip "atom $->$" \&'T' | 'F' | '<>' | '"' (ascii-char)\(** '"' | (letter | digit)\(** | number .ip "funForm $->$" simpFn | composition | construction | conditional | .br constantFn | insertion | alpha | while | '(' funForm ')' .ip "simpFn $->$" fpDefined | fpBuiltin .ip "fpDefined $->$" name .ip "fpBuiltin $->$" selectFn | 'tl' | 'id' | 'atom' | 'not' | 'eq' | relFn | 'null' | 'reverse' | .br \&'distl' | 'distr' | 'length' | binaryFn | 'trans' | 'apndl' | 'apndr' | .br \&'tlr' | 'rotl' | 'rotr' | 'iota' | 'pair' | 'split' | 'concat' | 'last' | 'libFn' .ip "selectFn $->$" (\(*e | '+' | '-') unsignedInteger .ip "relFn $->$" \&'<=' | '<' | '=' | '~=' | '>' | '>=' .ip "binaryFn $->$" \&'+' | '-' | '\(**' | '/' | 'or' | 'and' | 'xor' .ip "libFn $->$" \&'sin' | 'cos' | 'asin' | 'acos' | 'log' | 'exp' | 'mod' .ip "composition $->$" funForm '@' funForm .ip "construction $->$" \&'[' formList ']' .ip "formList $->$" \(*e | funForm (',' funForm)\(** .ip "conditional $->$" \&'(' funForm '->' funForm ';' funForm ')' .ip "constantFn $->$" \&'%' object .ip "insertion $->$" \&'!' funForm | '\fB|\fP' funForm .ip "alpha $->$" \&'&' funForm .ip "while $->$" \&'(' 'while' funForm funForm ')' .sp .lp .nf \fIII. Precedences\fP .sp 1. %, !, & (highest) 2. @ 3. [$...$] 4. -> $...$ ; $...$ 5. while (least) .(q .sp 2 \*(sa Command Syntax is listed in Appendix C. .)q .fi .AP "Appendix C: Command Syntax" .pp All commands begin with a right parenthesis (\*(lq)\*(rq). .sp 2 .nf )fns )pfn )load )cload )save )csave )fsave )delete )stats on )stats off )stats reset )stats print [UNIX file name] )trace on )trace off )timer on )timer off )debug on )debug off )script open )script close )script append )help )lisp .EQ delim `' .EN .AP "Appendix D: Token-Name Correspondences" .TS center box; c|c c|l. Token Name = \&[ lbrack$$ \&] rbrack$$ \&{ lbrace$$ \&} rbrace$$ \&( lparen$$ \&) rparen$$ \&@ compos$$ \&! insert$$ \&\fB|\fP ti$$ \&& alpha$$ \&; semi$$ \&: colon$$ \&, comma$$ \&+ builtin$$ \&+ `mu sup a' select$$ \&\(** builtin$$ \&/ builtin$$ \&= builtin$$ \&- builtin$$ \&-> arrow$$ \&- `mu' select$$ \&> builtin$$ \&>= builtin$$ \&< builtin$$ \&<= builtin$$ \&~= builtin$$ \&%`omicron sup b' constant$$ .TE .sp 2 .(q \*(sa \(*m is an optionally signed integer constant. .sp \*(sb \(*o is any FP object. .)q .AP "Appendix E: Symbolic Primitive Function Names" .pp The scanner assigns names to the alphabetic primitive functions by appending the string \*(lq$fp\*(rq to the end of the function name. The following table designates the naming assignments to the non-alphabetic primitive function names. .sp .TS center box; c|c c|l. Function Name = \&+ plus$fp \&- minus$fp \&\(** times$fp \&/ div$fp \&= eq$fp \&> gt$fp \&>= ge$fp \&< lt$fp \&<= le$fp \&~= ne$fp .TE .\" want Table of Contents to begin on page 2 .pn 2 .TC root node stackdepth = 1 STACK.nextstate = DOWN STACK.nodep = first .DE .DS .B while( stackdepth > 0 ) { currentnode = STACK.nodep select(STACK.nextstate) { case DOWN: if(NODE.op == " ") # a leaf { outval( NODE.val ) stackdepth \-= 1 } else { # a binary operator node outch( "(" ) STACK.nextstate = LEFT stackdepth += 1 STACK.nextstate = DOWdoc/ps2/07.fp/manCh0.rno 444 3 12 1642 3660724645 10001 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manCh0.rno 6.2 (Berkeley) 5/10/86 .\" .eh 'PS2:7-%''Berkeley FP User\'s Manual, Rev. 4.1' .oh 'Berkeley FP User\'s Manual, Rev. 4.1''PS2:7-%' .ef '''' .of '''' .tp .sp 1.5i .ce 1 .sz +8 .b "Berkeley FP User's Manual, Rev. 4.1" .sz -6 .sp 0.3i .ce 1 .b "by" .sp 0.5i .ce 1 \fIScott Baden\fP .sp 1 .sp 2.0i .ce 1 .sz -2 .i "ABSTRACT" .sp .ll -2.0i .po +1.0i .ft I This manual describes the Berkeley implementation of Backus' Functional Programming Language, FP. Since this implementation differs from Backus' original description of the language, those familiar with the literature will need to read about the system commands and the local modifications. .sp 0.6i .ft R .po -1.0i .ll +2.0i .ce 1 .sz +2 .b "\*(td" .sz -2 .pn 4 .bp Rev. 4.1" .sz -6 .sp 0.3i .ce 1 .b "by" .sp 0.5i .ce 1 \fIScott Baden\fP .sp 1 .sp 2.0i .ce 1 doc/ps2/07.fp/manCh1.rno 444 3 12 11350 3655217752 10017 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manCh1.rno 6.1 (Berkeley) 4/29/86 .\" .sp .NS 1 "Background" .sp .pp \fBFP\fP stands for a \fIFunctional Programming\fP language. Functional programs deal with \fIfunctions\fP instead of \fIvalues\fP. There is no explicit representation of state, there are no assignment statments, and hence, no variables. Owing to the lack of state, FP functions are free from side-effects; so we say the FP is \fIapplicative\fP. .pp All functions take one argument and they are evaluated using the single FP operation, \fIapplication\fP (the colon ':' is the apply operator). For example, we read $~+^:^<3~4>~$ as \*(lqapply the function '+' to its argument <3 4>\*(rq. .pp Functional programs express a functional-level combination of their components instead of describing state changes using value-oriented expressions. For example, we write the function returning the \fIsin\fP of the \fIcos\fP of its input, \*(IE $sin(cos(x))$, as: $sin^@^cos$. This is a \fIfunctional expression\fP, consisting of the single \fIcombining form\fP called \fIcompose\fP ('@' is the compose operator) and its \fIfunctional arguments\fP \fIsin\fP and \fIcos\fP. .pp All combining forms take functions as arguments and return functions as results; functions may either be applied, \*(EG $sin @ cos^:^3$, or used as a functional argument in another functional expression, \*(EG \fItan @ sin @ cos\fP. .pp As we have seen, FP's combining forms allow us to express control abstractions without the use of variables. The \fIapply to all\fP functional form (&) is another case in point. The function '& exp' exponentiates all the elements of its argument: .sp 4p .EQ I (1.1) "&exp : <1.0 2.0>" ~==~ "<2.718 7.389>" .EN .sp 4p In (1.1) there are no induction variables, nor a loop bounds specification. Moreover, the code is useful for any size argument, so long as the sub-elements of its argument conform to the domain of the \fIexp\fP function. .pp We must change our view of the programming process to adapt to the functional style. Instead of writing down a set of steps that manipulate and assign values, we compose functional expressions using the higher-level functional forms. For example, the function that adds a scalar to all elements of a vector will be written in two steps. First, the function that distributes the scalar amongst each element of the vector: .sp 4p .EQ I (1.2) "distl : <3 <4 6>>" ~==~ "<<3 4> <3 6>>" .EN .sp 4p Next, the function that adds the pairs of elements that make up a sequence: .sp 4p .EQ I (1.3) "&+ : <<3 4> <3 6>>" ~==~ "<7 9>" .EN .sp 4p .pp In a value-oriented programming language the computation would be expressed as: .sp 4p .EQ I (1.4) "&+ : distl : <3 <4 6>>," .EN .sp 4p which means to apply 'distl' to the input and then to apply '+' to every element of the result. In FP we write (1.4) as: .sp 4p .EQ I (1.5) "&+ @ distl : <3 <4 6>>." .EN .sp 4p The functional expression of (1.5) replaces the two step value expression of (1.4). .pp Often, functional expressions are built from the inside out, as in LISP. In the next example we derive a function that scales then shifts a vector, \*(IE for scalars $a,~b^$ and a vector $v vec$, compute $a~+~b v vec$. This FP function will have three arguments, namely $a,~b~$ and $~v vec$. Of course, FP does not use formal parameter names, so they will be designated by the function symbols 1, 2, 3. The first code segment scales $v vec~$ by $b$ (defintions are delimited with curly braces '{}'): .sp 4p .EQ I (1.6) "{scaleVec &\(** @ distl @ [2,3]}" .EN .sp 4p The code segment in (1.5) shifts the vector. The completed function is: .sp 4p .EQ I (1.7) "{changeVec &+ @ distl @ [1 , scaleVec]}" .EN .pp In the derivation of the program we wrote from right to left, first doing the \fIdistl\fP's and then composing with the \fIapply-to-all\fP functional form. Using an imperative language, such as Pascal, we would write the program from the outside in, writing the loop before inserting the arithmetic operators. .pp Although FP encourages a recursive programming style, it provides combining forms to avoid explicit recursion. For example, the right insert combining form (!) can be used to write a function that adds up a list of numbers: .sp 4p .EQ I (1.8) "!+ : <1 2 3>" ~==~ 6 .EN .pp The equivalent, recursive function is much longer: .sp 4p .EQ I (1.9) "{addNumbers (null -> %0 ; + @ [1, addNumbers @ tl])}" .EN .pp The generality of the combining forms encourages hierarchical program development. Unlike APL, which restricts the use of combining forms to certain builtin functions, FP allows combining forms to take any functional expression as an argument. .bp | 'last' | 'libFn' .ip "selectFn $->$" (\(*e | '+' | '-') unsignedInteger .ip "relFn $->$" \&'<=' | '<' | '=' | '~=' | '>' | '>=' .ip "binaryFn $->$" \&'+' | '-' | '\(**' | '/' | 'or' | 'and' | 'xor' .ip "libFn $->$" \&'sin' | 'cos' | 'asin' | 'acos' | 'log' | 'exp' | 'mod' .ip "doc/ps2/07.fp/manCh2.rno 444 3 12 31603 3655217715 10022 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manCh2.rno 6.1 (Berkeley) 4/29/86 .\" .NS 1 "System Description" .sp .NS 2 "Objects" .sp .pp The set of objects \(*W consists of the atoms and sequences $fs$ (where the $x sub i memberOf OMEGA$). (Lisp users should note the similarity to the list structure syntax, just replace the parenthesis by angle brackets and commas by blanks. There are no 'quoted' objects, \*(IE 'abc). The atoms uniquely determine the set of valid objects and consist of the numbers (of the type found in \s-2FRANZ LISP\s+2 [Fod80]), quoted ascii strings ("abcd"), and unquoted alphanumeric strings (abc3). There are three predefined atoms, $T$ and $F$, that correspond to the logical values 'true' and 'false', and the undefined atom $bold "?"$, \fIbottom\fP. \fIBottom\fP denotes the value returned as the result of an undefined operation, \*(EG division by zero. The empty sequence, $<>$ is also an atom. The following are examples of valid FP objects: .sp 2 .(b C .TS center; l l l. $?$ $1.47$ $3888888888888$ $ab$ "$CD$" $<1,<2,3>>$ $<>$ $T$ $>$ .TE .)b .sp 2 There is one restriction on object construction: no object may contain the undefined atom, such an object is itself undefined, \*(EG $<1,?>~==~?$. This property is the so-called \*(lqbottom preserving property\*(rq [Ba78]. .sp .NS 2 "Application" .sp .pp This is the single FP operation and is designated by the colon (":"). For a function $sigma$ and an object $x$, $sigma : x$ is an application and its meaning is the object that results from applying $sigma$ to $x$ (\*(IE evaluating $sigma (x)$). We say that $sigma$ is the \fIoperator\fP and that $x$ is the \fIoperand\fP. The following are examples of applications: .sp 2 .TS center; l c l l c l. $bold + : <7,8>$ $==$ $15$ $bold tl :<1,2,3>$ $==$ $<2,3>$ \fB1\fP $: $ $==$ $a$ \fB2\fP $: $ $==$ $b$ .TE .sp 2 .nr ii 0.35i .NS 2 "Functions" .sp .pp All functions (\fIF\fP) map objects into objects, moreover, they are \fIstrict\fP: .sp 6p .EQ I (2.1) sigma^:^? equiv ?,~~ forAll ^sigma^ memberOf F .EN .sp 6p To formally characterize the primitive functions, we use a modification of McCarthy's conditional expressions [Mc60]: .sp 6p .EQ I (2.2) p sub 1~->~ e sub 1~; ... ;~p sub n~->~ e sub n~;~e sub {n + 1} .EN .sp 6p This statement is interpreted as follows: return function $e sub 1$ if the predicate '$p sub 1$' is true $,...,~e sub n$ if '$p sub n$' is true. If none of the predicates are satisfied then default to $e sub {n + 1}$. It is assumed that $x ,~x sub i ,~y ,~y sub i ,~z sub i memberOf OMEGA$. .sp .NS 3 "Structural" .sp .b "Selector Functions" .(b M F .sp For a nonzero integer $mu$, .sp .nf .ip "$bold mu~ : ~x~ ==$" .sp 4p \&$x = fs ~ andsign ~0~<~mu~<=~k ~->~ x sub mu ;$ .sp 4p \&$x = fs ~ andsign ~-k <= mu < 0 ~ -> ~ x sub {k + mu + 1}; ~ ?$ .fi .)b .sp .(b .nf .ip "$bold pick~ : ~~ ==$" .sp 4p \&$x = fs ~ andsign ~0~<~n~<=~k ~->~ x sub n ;$ .sp 4p \&$x = fs ~ andsign ~-k <= n < 0 ~ -> ~ x sub {k + n + 1}; ~ ?$ .fi .)b .sp 2 .pp The user should note that the function symbols \fB1\fP,\fB2\fP,\fB3\fP$,...$ are to be distinguished from the atoms $1,2,3,...$. .(b M F .sp .ip "$bold last ~ : ~x~ ==$" .sp 4p \&$x = <> ~ -> ~ <> ~ ;$ .sp 4p \&$x = fs ~ andsign ~ k >= 1 ~ -> ~ x sub k ;~?$ .)b .(b M F .sp .ip "$bold first ~ : ~x~ ==$" .sp 4p \&$x = <> ~ -> ~ <> ~ ;$ .sp 4p \&$x = fs ~ andsign ~ k >= 1 ~ -> ~ x sub 1 ;~?$ .)b .sp .(b M F .b "Tail Functions" .sp .ip "$bold tl ~:~x ~==$" .sp 4p \&$x = ~ -> ~ <> ~ ;$ .sp 4p \&$x = fs ~ andsign ~ k >= ~ 2 ~ -> ~ ~ ;~ ?$ .)b .sp 6p .(b M F .ip "$bold tlr ~ : ~ x~==$" .sp 4p \&$x = ~ -> ~ <> ~ ;$ .sp 4p \&$x = fs ~ andsign ~ k >= ~ 2 ~ -> ~ ~ ; ~ ?$ .)b .sp .pp Note: There is also a function \fBfront\fP that is equivalent to \fBtlr\fP. .sp .(b M F .b "Distribute from left and right" .sp .ip "$bold distl ~:~x~==$" .sp 4p \&$x = >~->~<>;$ .sp 4p \&$x = ~->~<,...,>;~?$ .)b .sp 6p .(b M F .ip "$bold distr ~:~x~==$" .sp 4p \&$x = <<>,y>~->~<>;$ .sp 4p \&$x = < qy , z >~->~<,...,>;~?$ .)b .sp 6p .(b M F .b "Identity" .sp 6p $bold id ~:~x~==~x$ .)b .sp 6p $bold out ~:~x~==~x$ .pp \fBOut\fP is similar to \fPid\fP. Like \fBid\fP it returns its argument as the result, unlike \fPid\fP it prints its result on \fIstdout\fP \(mi It is the only function with a side effect. \fPOut\fP is intended to be used for debugging only. .sp .(b M F .b "Append left and right" .sp .nf .ip "$bold apndl ~:~x~==$" .sp 4p \&$x = >~->~;$ .sp 4p \&$x = ~->~;~?$ .)b .sp 6p .(b M F .ip "$bold apndr ~:~x~==$" .sp 4p \&$x = <<>,z>~->~;$ .sp 4p \&$x = < qy , z >~->~< y sub 1 ,~ y sub 2 ,...,~ y sub k ,~z >;~?$ .fi .)b .sp .(b M F .b "Transpose" .sp .nf .ip "$bold trans~:~x~==$" .sp 4p \&$x = <<>,...,<>>~->~<>;$ .sp 4p \&$x = fs ~->~;~?$ .sp 8p \&where $x sub i ~=~~andsign ~ y sub j ~=~,$ .sp 4p \&$1<=i<=k ~,~ 1<=j<=m.$ .)b .sp .fi .(b M F .ip "$bold reverse~:~x~==~$" .sp 4p \&$x =<>~ ->;$ .sp 4p \&$x = fs ~->~ ;~?$ .)b .sp .(b M F .b "Rotate Left and Right" .sp .nf .ip "$bold rotl~:~x~==$" .sp 4p \&$x = <>~ -> ~ <>;~x = ~->~;$ .sp 4p \&$x = fs ~ andsign ~k >= 2~ -> ~ ;~?$ .)b .sp .(b M F .ip "$bold rotr~:x~==$" .sp 4p \&$x = <>~ -> ~ <>;~x = ~->~;$ .sp 4p \&$x = fs ~ andsign ~k >= 2~ -> ~ ;~?$ .)b .fi .sp 2 .(b M F .nf .ip "$bold concat~:~x~==$" .sp 4p \&$x = <, ,...,> ~ andsign ~ k, ~m, ~n, ~p ~>~ 0 ~->$ \&$; ?$ .)b .sp .(b M F .pp Concatenate removes all occurrences of the null sequence: .sp .EQ I (2.3) bold concat ~ :~ <<1,3>,<>,<2,4>,<>,<5>> ~==~ <1,3,2,4,5> .EN .)b .sp .(b M F .ip "$bold pair~:~x~==$" .sp 4p \&$x = fs ~ andsign ~ k >0 ~ andsign ~ k~is~even~->~ < ,..., >;$ .sp 4p \&$x = fs ~ andsign ~ k >0 ~ andsign ~ k~is~odd~->~ < ,..., >;~?$ .)b .sp .(b M F .ip "$bold split~:~x~==$" .sp 4p \&$x = ~->~< , <>>;$ .sp 4p \&$x = fs ~ andsign ~ k > 1 ~ -> ~<, >; ?$ .)b .sp .(b M F .ip "\fBiota\fP$~:x~==$" .sp 4p \&$x = 0 ~->~ <>;$ .sp 4p \&$x memberOf bold {N sup +} ~ ->~<1,2,...,x>;~?$ .)b .sp .NS 3 "Predicate (Test) Functions" .sp $bold atom~:~x~==~x~ memberOf atoms~-> ~ T ; ~ x$\(!=$? -> ~ F ;~ ?$ .sp $bold eq ~:~x~==~x~= ~ andsign ~ y=z ~ -> ~ T ;~x= ~ andsign ~y$ \(!= $z ~->~ F ;~?$ .sp .pp Also less than ($bold <$), greater than ($bold >$), greater than or equal (\fB>=\fP), less than or equal (\fB<=\fP), not equal (\fB~=\fP); \&'$bold =$' is a synonym for \fBeq\fP. .sp $bold null ~ : x~==~x = <> ~ -> ~ T ;~x$\(!=$?~ -> ~ F ;~?$ .sp 6p $bold length ~ :~ x~==~x~= ~ fs ~ -> ~ k; ~ x = <> ~ -> ~0; ~ ?$ .sp .NS 3 "Arithmetic/Logical" .sp $bold +~:~ x ~ ==~ x = ~ andsign ~y,z ~ are ~ numbers ~ ->~ y+z; ~ ?$ $bold -~:~ x ~ ==~ x = ~ andsign ~y,z ~ are ~ numbers ~ -> ~y-z; ~ ?$ $bold *~:~ x ~ ==~ x = ~ andsign ~y,z ~ are ~ numbers ~ -> ~y$\(mu$z; ~ ?$ \fB/\fP$~:~ x ~ ==~ x = ~ andsign ~y,z ~ are ~ numbers ~ andsign ~z$\(!= $0 ~ ->~y$\(di$z ;~?$ .sp .b "And, or, not, xor" .sp $nd~:~~==~x = T ~->~ y;~x= F ~->~ F ;~?$ .sp 8p $rr~:~~==~x = F ~->~ y;~x= T ~->~ T ;~?$ .sp 8p .(b M F .nf .ip "$bold xor~:~~==$" .sp 4p \&$x = T ~ andsign ~ y = T ~->~ F ;~ x = F ~ andsign ~ y = F ~->~ F ;$ .sp 4p \&$x = T ~ andsign ~ y = F ~->~ T ;~ x = F ~ andsign ~ y = T ~->~ T ;~?$ .fi .)b .sp 6p $bold not~:~x~==~x= T ~->~F;~x= F~->~T ;~?$ .NS 3 "Library Routines" .sp $bold "sin"~:~x~==~x roman {~is~a~number} ~->~sin(x);~?$ .sp 8p $bold "asin"~:~x~==~x roman {~is~a~number} ~andsign~|x|~<=~1 ~->~sin sup {-1} (x);~?$ .sp 8p $bold "cos"~:~x~==~x roman {~is~a~number} ~->~cos(x);~?$ .sp 8p $bold "acos"~:~x~==~x roman {~is~a~number} ~andsign~|x|~<=~1 ~->~cos sup {-1} (x);~?$ .sp 8p $bold "exp"~:~x~==~x roman {~is~a~number} ~->~ e sup x;~?$ .sp 8p $bold "log"~:~x~==~x roman {~is~a~positive~number} ~->~ ln(x);~?$ .sp 8p $bold "mod"~:~~==~ x nd y roman {~are~numbers} ~->~ x ~-~ y times left floor x over y right floor ~;~?$ .sx 2 .sp .NS 2 "Functional Forms" .pp Functional forms define new \fIfunctions\fP by operating on function and object \fIparameters\fP of the form. The resultant expressions can be compared and contrasted to the \fIvalue\fP-oriented expressions of traditional programming languages. The distinction lies in the domain of the operators; functional forms manipulate functions, while traditional operators manipulate values. .pp One functional form is \fIcomposition\fP. For two functions $phi$ and $psi$ the form $phi ~ @ ~psi$ denotes their composition $phi ~$\*(cm$~ psi$: .sp 4p .EQ I (2.4) ( phi ~@~ psi )~:~x~==~phi :( psi :x),~~ forAll ~~x memberOf OMEGA .EN .sp The \fIconstant\fP function takes an object parameter: .sp .EQ I (2.5) %x:y~==~y=?~->~?;~x,~~~ forAll ~~x,y~ memberOf OMEGA .EN .sp The function $%?$ always returns ?. .pp In the following description of the functional forms, we assume that $xi , ~xi sub i ,~sigma , ~sigma sub i ,~tau ,$ and $tau sub i$ are functions and that $x,~x sub i ,~ y$ are objects. .sp 2 .b "Composition" .sp $( sigma ~@~ tau ):x~==~sigma : ( tau : x)$ .sp 2 .b "Construction" .sp $[ sigma sub 1 ,..., sigma sub n ]:x~==~< sigma sub 1 : x,..., sigma sub n : x>$ .sp Note that construction is also bottom-preserving, \*(EG .sp 6p .EQ I (2.6) [ bold +, bold /]^:^<3,0>~=~<3,?>~=~? .EN .sp 2 .(b M F .b "Condition" .sp .ip "$( xi~"->" ~sigma ;~tau ):x~==~$" .sp 4p \&$( xi : x) = T~->~sigma : x;$ .sp 4p \&$~ ( xi : x)= F~ ->~tau :x;~?$ .)b .sp 8p .pp The reader should be aware of the distinction between \fIfunctional expressions\fP, in the variant of McCarthy's conditional expression, and the \fIfunctional form\fP introduced here. In the former case the result is a \fIvalue\fP, while in the latter case the result is a \fIfunction\fP. Unlike Backus' FP, the conditional form \fImust\fP be enclosed in parenthesis, \*(EG .sp 6p .EQ I (2.7) roman {"(isNegative -> - @ [%0,id] ; id")} .EN .sp .(b M F .b "Constant" .sp $%x:y~==~y=?~->~?;~x,~~~~~~ forAll ~x memberOf OMEGA$ .sp .)b This function returns its object parameter as its result. .sp .(b M F .b "Right Insert" .sp 6p .nf .ip "$! bold sigma~:x~==$" .sp 4p \&$x = <>~->~e sub f : x;$ .sp 4p \&$x=~->~x sub 1 ;$ .sp 4p \&$x= fs ~ andsign ~k>2~->~ sigma :>;~?$ .sp 10p \&\*(EG $!+:<4,5,6> =15$. .)b .pp If $sigma$ has a right identity element $e sub f$, then $! sigma :<>~=~ e sub f$, \*(EG .sp 6p .EQ I (2.8) !+^:^<> =0 ~roman "and" ~!*^:^<> =1 .EN .sp Currently, identity functions are defined for $+ \ (0),\ - \ (0), \ * \ (1), \ / \ (1)$, also for \fBand\fP (T), \fBor\fP (F), \fBxor\fP (F). All other unit functions default to bottom (?). .sp .(b M F .b "Tree Insert" .sp 6p .ip " \fB|\fP $sigma~:~x~==$" .sp 4p \&$x = <>~->~e sub f : x;$ .sp 4p \&$x=~->~x sub 1 ;$ .sp 4p .nf \&$x= fs ~ andsign ~k>1~->$ .sp 4p \&$bold sigma ~:~< $\fB|\fP$~ sigma~:~ ~,~ "\fB|\fP" ~ sigma ~:~>; ?$ .sp 10p \&\*(EG .EQ I (2.9) "\fB|\fP" +:<4,5,6,7> ~==~ +:<+:<4,5> , +:<6,7>> ~==~ 15 .EN .sp .fi .)b .sp .pp Tree insert uses the same identity functions as right insert. .sp .b "Apply to All" .sp .ip "\fB&\fP$^sigma :~x~==$" .sp 4p \&$x=<>~-><>;$ .sp 4p \&$x= fs~->~< sigma : x sub 1 ,...,~sigma : x sub k >;~?$ .sp .(b M F .b "While" .sp .ip "(\fBwhile\fP$ ~xi~sigma ):x~==$" \&$xi : x= T~->~($\fBwhile\fP$ ~xi~sigma ):( sigma : x);$ .sp 4p \&$xi : x= F~->~x;~?$ .)b .sp .NS 2 "User Defined Functions" .pp An FP definition is entered as follows: .sp 6p .EQ I (2.10) "{fn-name fn-form}," .EN .sp where \fIfn-name\fP is an ascii string consisting of letters, numbers and the underline symbol, and \fIfn-form\fP is any valid functional form, including a single primitive or defined function. For example the function .sp .EQ I (2.11) "{factorial !* @ iota}" .EN .sp .pp is the non-recursive definition of the factorial function. Since FP systems are applicative it is permissible to substitute the actual definition of a function for any reference to it in a functional form: if $f ~==~ 1 @ 2$ then $f~:~x~==~1@2~:~x,~~~ forAll ~x memberOf OMEGA$. .pp References to undefined functions bottom out: .sp .EQ I (2.12) f:x~==~? forAll x memberOf OMEGA ,~f^ notmemberof F .EN .sx 1 .bp ort. N. L. Schryer has acted as willing, cheerful, and severe first user and helpful critic of each new version and facility.doc/ps2/07.fp/manCh3.rno 444 3 12 2241 3655217654 10001 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manCh3.rno 6.1 (Berkeley) 4/29/86 .\" .NS 1 "Getting on and off the System" .sp .pp Startup FP from the shell by entering the command: .sp .ce .b "/usr/local/fp". .sp .pp The system will prompt you for input by indenting over six character positions. Exit from FP (back to the shell) with a control/D (\fB^D\fP). .NS 2 "Comments" .pp A user may end any line (including a command) with a comment; the comment character is '#'. The interpreter will ignore any character after the '#' until it encounters a newline character or end-of-file, whichever comes first. .sp 4p .NS 2 "Breaks" .pp Breaks interrupt any work in progress causing the system to do a \s-2FRANZ\s+2 reset before returning control back to the user. .sp 4p .NS 2 "Non-Termination" .pp LISP's namestack may, on occasion, overflow. FP responds by printing \*(lqnon-terminating\*(rq and returning bottom as the result of the application. It does a \s-2FRANZ\s+2 reset before returning control to the user. .sx 1 .sp .sp 4p \&$x = >~->~;$ .sp 4p \&$x = ~->~;~?$ .)b .sp 6p .(b M F .ip "$bold apndr ~:~x~==$" .sp 4p \&$x = <<>,z>~->~;$ .sp 4p \&$x = < qy , z >~->~< y sub 1 ,~ y sub 2 ,...,~ y sub k ,~z >;~?$ .fi .)b .sp .(b M F .b "Transpose" .sp .nf .ip "$bold trans~:~x~==$" .sp 4p \&$x = <<>,...,<>>~->~\fP 7 \fB!* @ iota :3\fP 6 \fB)stats print\fP plus: times 1 times: times 2 iota: times 1 insert: times 1 size 3 Functional Args Name Times times 1 compos: times 1 size 1 Functional Args Name Times insert 1 iota 1 .fi .sp 4p .hl .sp 4p .)b .NS 3 "On" .pp Enable statistics collection. .sp 4p .NS 3 "Off" .pp Disable statistics collection. The user may selectively collect statistics using the on and off commands. .sp 4p .NS 3 "Print" .pp Print the dynamic statistics at the terminal, or, output them to a file. The latter option requires an additional argument, \*(EG \*(lq)stats print fooBar\*(rq prints the stats to the file \*(lqfooBar\*(rq. .sp 4p .NS 3 "Reset" .pp Reset the dynamic statistics counters. To prevent accidental loss of collected statistics, the system will query the user if he tries to reset the counters without first outputting the data (the system will also query the user if he tries to log out without outputting the data). .sp 4p .NS 2 "Trace" .pp Enable or disable the tracing and the dynamic measurement of the user defined functions named by the argument(s). The first argument tells whether to turn tracing off or on and the others give the name of the functions affected. The tracing and untracing commands are independent of the dynamic statistics commands. This command is cumulative \*(EG \&')trace\ on\ f1', followed by ')trace\ on\ f2' is equivalent to ')trace\ on\ f1\ f2'. .pp FP tracer output is similar to the \s-2FRANZ\s+2 tracer output: function entries and exits, call level, the functional argument (remember that FP functions have only one argument!), and the result, are printed at the terminal: .(b .sp .hl .sp 4p .nf )pfn fact {fact\ (eq0\ ->\ %1\ ;\ *\ @\ [id,\ fact\ @\ s1])} )fns eq0 fact s1 )trace on fact )fns eq0 fact@ s1 fact : 2 1 >Enter> fact [2] |2 >Enter> fact [1] | 3 >Enter> fact [0] | 3 Redirect input from save Save defined fns in pfn ... Print source text of ... delete ... Delete ... fns List all functions stats on/off/reset/print [file] Collect and print dynamic stats trace on/off ... Start/Stop exec trace of ... timer on/of Turn timer on/off script open/close/append Open or close a script-file lisp Exit to the lisp system (return with '^D') debug on/off Turn debugger output on/off csave Output Lisp code for all user-defined fns cload Load Lisp code from a file (may be compiled) fsave Same as csave except without pretty-printing .TE .sp .)b .NS 2 "Special System Functions" .pp There are two system functions that are not generally meant to be used by average users. .NS 3 "Lisp" .pp This exits to the lisp system. Use "^D" to return to FP. .NS 3 "Debug" .pp Turns the 'debug' flag on or off. The command \*(lq)debug on\*(rq turns the flag on, \*(lq)debug off\*(rq turns the flag off. The main purpose of the command is to print out the parse tree. .bp .sx 1 t .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manCh4.rno 6.1 (Berkeley) 4/29/86 .\" .NS 1 "System Commands" .pp System commands start with a right parenthesis and they are followed by the command-name and possibly one or more arguments. All this information \fImust be typed on a single line\fP, and any number of spaces or tabs may be used to separate thedoc/ps2/07.fp/manCh5.rno 444 3 12 14711 3655217547 10031 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manCh5.rno 6.1 (Berkeley) 4/29/86 .\" .NS 1 "Programming Examples" .pp We will start off by developing a larger FP program, \fImergeSort\fP. We measure \fImergeSort\fP using the trace package, and then we comment on the measurements. Following \fImergeSort\fP we show an actual session at the terminal. .NS 2 "MergeSort" .pp The source code for \fImergeSort\fP is: .(b .sp 4p .hl .sp 4p .(c # Use a divide and conquer strategy .sp 3p {mergeSort $^"\fB|\fP"^$ merge} .sp 6p {merge atEnd @ mergeHelp @ [[], fixLists]} .sp 6p # Must convert atomic arguments into sequences # Atomic arguments occur at the leaves of the execution tree .sp 3p {fixLists &(atom -> [id] ; id)} .sp 6p # Merge until one or both input lists are empty .sp 3p {mergeHelp (while \kxand @ &(not@null) @ 2 \h'\nxu'(firstIsSmaller -> \kytakeFirst ; \h'\nyu'takeSecond))} .sp 6p # Find the list with the smaller first element .sp 3p {firstIsSmaller < @ [1@1@2, 1@2@2]} .sp 6p # Take the first element of the first list .sp 3p {takeFirst [apndr@[1,1@1@2], [tl@1@2, 2@2]]} .sp 6p # Take the first element of the second list .sp 3p {takeSecond [apndr@[1,1@2@2], [1@2, tl@2@2]]} .sp 6p # If one list isn't null, then append it to the # end of the merged list .sp 3p {atEnd (firstIsNull -> \kzconcat@[1,2@2] ; \h'\nzu'concat@[1,1@2])} .sp 6p {firstIsNull null@1@2} .)c .sp 4p .hl .sp 4p .)b .pp The merge sort algorithm uses a divide and conquer strategy; it splits the input in half, recursively sorts each half, and then merges the sorted lists. Of course, all these sub-sorts can execute in parallel, and the tree-insert ($"\fB|\fP" $) functional form expresses this concurrency. \fIMerge\fP removes successively larger elements from the heads of the two lists (either \fItakeFirst\fP or \fItakeSecond\fP) and appends these elements to the end of the merged sequence. \fIMerge\fP terminates when one sequence is empty, and then \fIatEnd\fP appends any remaining non-empty sequence to the end of the merged one. .CH "Dynamic Statistics" .pp On the next page we give the trace of the function \fImerge\fP, which information we can use to determine the structure of \fImerge\fP's execution tree. Since the tree is well-balanced, many of the \fImerge\fP's could be executed in parallel. Using this trace we can also calculate the average length of the arguments passed to \fImerge\fP, or a distribution of argument lengths. This information is useful for determining communication costs. .(b .nf .sp 4p .nf .hl .sp 4p .(c )trace on merge mergeSort\ :\ <0\ 3\ -2\ 1\ 11\ 8\ -22\ -33> |\ 3\ >Enter>\ merge\ [<0\ 3>] |\ 3\ |\ 3\ >Enter>\ merge\ [<-2\ 1>] |\ 3\ |2\ >Enter>\ merge\ [<<0\ 3>\ <-2\ 1>>] |2\ |\ 3\ >Enter>\ merge\ [<11\ 8>] |\ 3\ |\ 3\ >Enter>\ merge\ [<-22\ -33>] |\ 3\ |2\ >Enter>\ merge\ [<<8\ 11>\ <-33\ -22>>] |2\ 1\ >Enter>\ merge\ [<<-2\ 0\ 1\ 3>\ <-33\ -22\ 8\ 11>>] 1\ <-33\ -22\ -2\ 0\ 1\ 3\ 8\ 11> .)c .sp 4p .hl .fi .)b .bp .NS 2 "FP Session" .pp User input is \fBemboldened\fP, terminal output in Roman script. .sp 0.5i .nf \fBfp\fP FP, v. 4.1 11/31/82 \fB )load ex_man\fP {all_le} {sort} {abs_val} {find} {ip} {mm} {eq0} {fact} {sub1} {alt_fnd} {alt_fact} \fB )fns\fP .TS l l l l l l l. abs_val all_le alt_fact alt_fnd eq0 fact find ip mm sort sub1 \& \& \& .TE \fB abs_val : 3\fP 3 \fB abs_val : -3\fP 3 \fB abs_val : 0\fP 0 \fB abs_val : <-5 0 66>\fP ? \fB &abs_val : <-5 0 66>\fP <5 0 66> \fB )pfn abs_val\fP {abs_val ((> @ [id,%0]) -> id ; (- @ [%0,id]))} \fB [id,%0] : -3\fP <-3 0> \fB [%0,id] : -3\fP <0 -3> \fB - @ [%0,id] : -3\fP 3 \fB all_le : <1 3 5 7>\fP T \fB all_le : <1 0 5 7>\fP F \fB )pfn all_le\fP {all_le ! and @ &<= @ distl @ [1,tl]} \fB distl @ [1,tl] : <1 2 3 4>\fP <<1 2> <1 3> <1 4>> \fB &<= @ distl @ [1,tl] : <1 2 3 4>\fP \fB ! and : \fP F \fB ! and : \fP T \fB sort : <3 1 2 4>\fP <1 2 3 4> \fB sort : <1>\fP <1> \fB sort : <>\fP ? \fB sort : 4\fP ? \fB )pfn sort\fP {sort (null @ tl -> [1] ; (all_le -> apndl @ [1,sort@tl]; sort@rotl))} \fB fact : 3\fP 6 \fB )pfn fact sub1 eq0\fP {fact (eq0 -> %1 ; *@[id , fact@sub1])} {sub1 -@[id,%1]} {eq0 = @ [id,%0]} \fB &fact : <1 2 3 4 5>\fP <1 2 6 24 120> \fB eq0 : 3\fP F \fB eq0 : <>\fP F \fB eq0 : 0\fP T \fB sub1 : 3\fP 2 \fB %1 : 3\fP 1 \fB alt_fact : 3\fP 6 \fB )pfn alt_fact\fP {alt_fact !* @ iota} \fB iota : 3\fP <1 2 3> \fB !* @ iota : 3\fP 6 \fB !+ : <1 2 3>\fP 6 \fB find : <3 <3 4 5>>\fP T \fB find : <<> <3 4 <>>>\fP T \fB find : <3 <4 5>>\fP F \fB )pfn find\fP {find (null@2 -> %F ; (=@[1,1@2] -> %T ; find@[1,tl@2]))} \fB [1,tl@2] : <3 <3 4 5>>\fP <3 <4 5>> \fB [1,1@2] : <3 <3 4 5>>\fP <3 3> \fB alt_fnd : <3 <3 4 5>>\fP T \fB )pfn alt_fnd\fP {alt_fnd ! or @ &eq @ distl } \fB distl : <3 <3 4 5>>\fP <<3 3> <3 4> <3 5>> \fB &eq @ distl : <3 <3 4 5>>\fP \fB !or : \fP T \fB !or : \fP F \fB )delete alt_fnd\fP \fB )fns\fP .TS l l l l l l l. abs_val all_le alt_fact eq0 fact find ip mm sort sub1 \& \& \& \& .TE \fB alt_fnd : <3 <3 4 5>>\fP alt_fnd not defined ? \fB {g g}\fP {g} \fB g : 3\fP non-terminating ? [Return to top level] FP, v. 4.0 10/8/82 \fB [+,*] : <3 4>\fP <7 12> .(b \fB [+,* : <3 4>\fP syntax error: [+,* \kx: <3 4> \h'\nxu'^ .)b \fB ip : <<3 4 5> <5 6 7>>\fP 74 \fB )pfn ip\fP {ip !+ @ &* @ trans} \fB trans : <<3 4 5> <5 6 7>>\fP <<3 5> <4 6> <5 7>> \fB &* @ trans : <<3 4 5> <5 6 7>>\fP <15 24 35> \fB mm : <<<1 0> <0 1>> <<3 4> <5 6>>>\fP <<3 4> <5 6>> \fB )pfn mm\fP {mm &&ip @ &distl @ distr @[1,trans@2]} \fB [1,trans@2] : <<<1 0> <0 1>> <<3 4> <5 6>>>\fP <<<1 0> <0 1>> <<3 4> <5 6>>> \fB distr : <<<1 0> <0 1>> <<3 4> <5 6>>>\fP <<<1 0> <<3 4> <5 6>>> <<0 1> <<3 4> <5 6>>>> \fB &distl : <<<1 0> <<3 4> <5 6>>> <<0 1> <<3 4> <5 6>>>>\fP <<<<1 0> <3 4>> <<1 0> <5 6>>> <<<0 1> <3 4>> <<0 1> <5 6>>>> .(b \fB &ip @ &dist & distr @ [1,trans @ 2] : <<<1 0> <0 1>> <<3 4> <5 6>>>\fP syntax error: [+,* \kx: <3 4> \h'\nxu'^ &ip @ &distl \kx& distr @ [1,trans @ 2] : <<<1 0> <0 1>> <<3 4> <5 6>>> \h'\nxu'^ .)b \fB &ip @ &distl @ distr @ [1,trans@2] : <<<1 0> <0 1>> <<3 4> <5 6>>>\fP ? .sp 2 .fi .bp pt" .pp Open or close a script file. The first argumendoc/ps2/07.fp/manCh6.rno 444 3 12 23061 3655217512 10020 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manCh6.rno 6.1 (Berkeley) 4/29/86 .\" .NS 1 "Implementation Notes" .pp FP was written in 3000 lines of \s-2FRANZ LISP\s+2 [Fod 80]. Table 1 breaks down the distribution of the code by functionality. .(b .sp .TS center box; c|c l|n. Functionality % (bytes) = compiler 34 user interface 32 dynamic stats 16 primitives 14 miscellaneous 3 .TE .sp 4p .ce .b "Table 1" .sp 4p .)b .NS 2 "The Top Level" .pp The top-level function $runFp$ starts up the subsystem by calling the routine \fIfpMain\fP, that takes three arguments: .BB .np A boolean argument that says whether debugging output will be enabled. .np A Font identifier. Currently the only one is supported \fB'asc\fP (ASCII). .np A boolean argument that identifies whether the interpreter was invoked from the shell. If so then all exits from FP return the user back to the shell. .EB .pp The compiler converts the FP functions into LISP equivalents in two stages: first it forms the parse tree, and then it does the code generation. .sp .NS 2 "The Scanner" .sp .pp The scanner consists of a main routine, \fIget_tkn\fP, and a set of action functions. There exists one set of action functions for each character font (currently only ASCII is supported). All the action functions are named $scan dl ""$, where $""$ is the specified font, and each is keyed on a particular character (or sometimes a particular character-type \- \*(EG a letter or a number). \fIget_tkn\fP returns the token type, and any ancillary information, \*(EG for the token "name" the name itself will also be provided. (See Appendix C for the font-token name correspondences). When a character has been read the scanner finds the action function by doing a .sp .ce 1 $(get ~ 'scan dl~ " ")$ .sp A syntax error message will be generated if no action exists for the particular character read. .sp .NS 2 "The Parser" .sp The main parsing function, \fIparse\fP, accepts a single argument, that identifies the parsing context, or type of construct being handled. Table 2 shows the valid parsing contexts. .(b .sp 2 .TS center box; c|c l|l. \fBid\fP \fBconstruct\fP = top_lev initial call constr$dd$ construction compos$dd$ composition alpha$dd$ apply-to-all insert$dd$ insert ti$dd$ tree insert arrow$dd$ T{ .nf affirmative clause of conditional .fi T} semi$dd$ T{ .nf negative clause of conditional .fi T} lparen$dd$ parenthetic expr. while$dd$ while .TE .sp .ce 1 .b "Table 2, Valid Parsing Contexts" .)b .sp .EQ delim off .EN .pp For each type of token there exists a set of parse action functions, of the name \fIp$\fP. Each parse-action function is keyed on a valid context, and it is looked up in the same manner as scan action functions are looked up. If an action function cannot be found, then there is a syntax error in the source code. .EQ delim $$ .EN Parsing proceeds as follows: initially $parse$ is called from the top-level, with the context argument set to \fI\*(lqtop_lev\*(rq\fP. Certain tokens cause parse to be recursively invoked using that token as a context. The result is the parse tree. .sp .NS 2 "The Code Generator" .pp The system compiles FP source into LISP source. Normally, this code is interpreted by the \s-2FRANZ LISP\s+2 system. To speed up the implementation, there is an option to compile into machine code using the \fIliszt\fP compiler [Joy 79]. This feature improves performance tenfold, for some programs. .pp The compiler expands all functional forms into their LISP equivalents instead of inserting calls to functions that generate the code at run-time. Otherwise, \fIliszt\fP would be ineffective in speeding up execution since all the functional forms would be executed interpretively. Although the amount of code generated by an expanding compiler is 3 or 4 times greater than would be generated by a non-expanding compiler, even in interpreted mode the code runs twice as quickly as unexpanded code. With \fIliszt\fP compilation this performance advantage increases to more than tenfold. .pp A parse tree is either an atom or a hunk of parse trees. An atomic parse-tree identifies either an fp built-in function or a user defined function. The hunk-type parse tree represents functional forms, \*(EG compose or construct. The first element identifies the functional form and the other elements are its functional parameters (they may in turn be functional forms). Table 3 shows the parse-tree formats. .(b .sp 2 .TS center box; c|c l|l. Form Format = user-defined fp builtin apply-to-all $"{" "alpha" dd~~PHI"}"$ insert $"{"insert dd ~~PHI"}"$ tree insert $"{"ti dd ~~PHI"}"$ select $"{"select dd ~mu"}"$ constant $"{"constant dd ~mu"}"$ conditional $"{"condit dd ~~PHI sub 1 ~~PHI sub 2 ~~PHI sub 3"}"$ while $"{"while dd ~~PHI sub 1 ~~PHI sub 2"}"$ compose $"{"compos dd ~~PHI sub 1 ~~PHI sub 2"}"$ construct $"{"constr dd ~~PHI sub 1~~PHI sub 2~~,...,~~PHI sub n ~nil"}"$ .TE .sp Note: $PHI$ and the $PHI sub k$ are parse-trees and $mu$ is an optionally signed integer constant. .sp .ce 1 .b "Table 3, Parse-Tree Formats" .sp .)b .NS 2 "Function Definition and Application" .sp .pp Once the code has been generated, then the system defines the function via \fIputd\fP. The source code is placed onto a property list, $'sources$, to permit later access by the system commands. .pp For an application, the indicated function is compiled and then defined, only temporarily, as $tmp dd$. The single argument is read and $tmp dd$ is applied to it. .NS 2 "Function Naming Conventions" .pp When the parser detects a named primitive function, it returns the name $"<"name">" df$, where \fI\fP is the name that was parsed (all primitive function-names end in $df$). See Appendix D for the symbolic (\*(EG compose, $+$) function names. .pp Any name that isn't found in the list of builtin functions is assumed to represent a user-defined function; hence, it isn't possible to redefine FP primitive functions. FP protects itself from accidental or malicious internal destruction by appending the suffix \*(lq$_fp$\*(rq to all user-defined function names, before they are defined. .NS 2 "Measurement Impelementation" .pp This work was done by Dorab Patel at UCLA. Most of the measurement code is in the file 'fpMeasures.l'. Many of the remaining changes were effected in \&'primFp.l', to add calls on the measurement package at run-time; to 'codeGen.l', to add tracing of user defined functions; to 'utils.l', to add the new system commands; and to 'fpMain.l', to protect the user from forgetting to output statistics when he leaves FP. .NS 3 "Data Structures" .pp All the statistics are in the property list of the global symbol \fIMeasures\fP. Associated with each each function (primitive or user-defined, or functional form) is an indicator; the statistics gathered for each function are the corresponding values. The names corresponding to primitive functions and functional forms end in '$dl$fp' and the names corresponding to user-defined functions end in '_fp'. Each of the property values is an association list: .sp .(l I (get 'Measures 'rotl$dl$fp) ==> ((times . 0) (size . 0)) .)l .sp .pp The car of the pair is the name of the statistic (\*(IE times, size) and the cdr is the value. There is one exception. Functional forms have a statistic called funargtyp. Instead of being a dotted pair, it is a list of two elements: .sp .(l I (get 'Measures 'compose$dl$fp) ==> ((times . 2) (size . 4) (funargtyp ((select$dl$fp . 2) (sub$dl$fp . 2)))) .)l .sp .pp The car is the atom 'funargtyp' and the cdr is an alist. Each element of the alist consists of a functional argument-frequency dotted pair. .pp The statistic packages uses two other global symbols. The symbol DynTraceFlg is non-nil if dynamic statistics are being collected and is nil otherwise. The symbol TracedFns is a list (initially nil) of the names of the user functions being traced. .NS 3 "Interpretation of Data Structures" .NS 4 "Times" .pp The number of times this function has been called. All functions and functional forms have this statistic. .NS 4 "Size" .pp The sum of the sizes of the arguments passed to this function. This could be divided by the times statistic to give the average size of argument this function was passed. With few exceptions, the size of an object is its top-level length (note: version 4.0 defined the size as the total number of \fIatoms\fP in the object); the empty sequence, \*(lq<>\*(rq, has a size of 0 and all other atoms have size of one. The exceptions are: \fIapndl, distl\fP (top-level length of the second element), \fIapndr, distr\fP (top-level length of the first element), and \fItranspose\fP (top level length of each top level element). .pp This statistic is not collected for some primitive functions (mainly binary operators like +,-,\(**). .NS 4 "Funargno" .pp The number of functional arguments supplied to a functional form. .pp Currently this statistic is gatherered only for the construction functional form. .NS 4 "Funargtyp" .pp How many times the named function was used as a functional parameter to the particular functional form. .NS 2 "Trace Information" .pp The level number of a call shows the number of steps required to execute the function on an ideal machine (\*(IE one with unbounded resources). The level number is calculated under an assumption of infinite resources, and the system evaluates the condition of a conditional before evaluating either of its clauses. The number of functions executed at each level can give an idea of the distribution of parallelism in the given FP program. Output Lisp code for all user-defined fns cload Load Lisp code from a file (may be compiled) fsave Same as csave except without pretty-printing .TE .sp .)b .NS 2 "Special System Functions" .pp There are two system functions that are not generally meant to be used by average users. .NS 3 "Lisp" .pp This exits to the lisp system. Use "^D" to return to FP. .NS 3 "Debug" .pp Turns the 'debug' flag on or off. The command \*(lq)debug on\*(rq turns tdoc/ps2/07.fp/manCh7.rno 444 3 12 1510 3655217425 7777 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manCh7.rno 6.1 (Berkeley) 4/29/86 .\" .sp .NS 1 "Acknowledgements" .pp Steve Muchnick proposed the initial construction of this system. Bob Ballance added some of is own insights, and John Foderaro provided helpful hints regarding effective use of the \s-2FRANZ LISP\s+2 system [Fod80]. Dorab Patel [Pat81] wrote the dynamic trace and statistics package and made general improvements to the user interface. Portions of this manual were excerpted from the \fICOMPCON-83 Digest of Papers\fP\**. .(f \** Scott B. Baden and Dorab R. Patel, \*(lqBerkeley FP \- Experiences With a Functional Programming Language\*(rq, \(co 1982, IEEE. .)f .sp action functions are looked up. If an action function cannot be found, then there is a syntax error in the source code. .EQ delim $$ .EN Parsing proceeds as follows: initially $parse$doc/ps2/07.fp/Makefile 444 3 12 1410 3660727063 7601 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.1 (Berkeley) 4/29/86 # SRCS = manDefs.rno manCh0.rno manCh1.rno\ manCh2.rno manCh3.rno manCh4.rno manCh5.rno\ manCh6.rno manCh7.rno refs.rno manApp.rno PRINTER=Pdp TBL=dtbl -${PRINTER} EQN=deqn -${PRINTER} TROFF= ditroff -${PRINTER} MACROS= -me paper: paper.${PRINTER} lpr -${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${SRCS} ${TBL} ${SRCS} | ${EQN} | ${TROFF} ${MACROS} -t > paper.${PRINTER} clean: rm -f paper.[PT]* *.spell errs Errs make.out spell: ${SRCS} @for i in ${SRCS}; do \ echo $$i; spell $$i | sort | comm -23 - spell.ok > $$i.spell; \ done Functional Programming Language\*(rq, \(co 1982, IEEE. .)f .sp action functions are looked up. If an action function cannot be found, then there is a syntax error in the source code. .EQ delim $$ .EN Parsing proceeds as follows: initially $parse$doc/ps2/07.fp/manDefs.rno 444 3 12 3260 3660724646 10247 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)manDefs.rno 6.3 (Berkeley) 5/10/86 .\" .sc .ta 1.0i 2.0i 3.0i 4.0i 5.0i 6.0i .m1 3 .m2 2 .m3 2 .m4 3 .fo''-%-'' .de NS \" New section heading: enter in the table of contents .sh \\$1 "\\$2" .(x \\*($n.\\ \\ \\$2 .)x .. .de AP \" Appendix heading: enter in the table of contents .bp .sz +2 .ce 1 .b "\\$1" .sz -2 .sp 2 .(x \\$1\\ \\ .)x .. .de TC \" Dump out table of contents .br .fi .bp .ls 1 .ce 1 .b "Table of Contents" .sp 2 .xp .br .ls .bp .. .de BB .sp 0.1i .ls 1 .in +0.8i .xl -0.8i .ba +0.8i .. .de EB .sp 0.3i .ls .xl +0.8i .br .in 0 .ba -0.8i .lp .. .ds bt \fB\s7\l'1.10m'\h'-0.55m'\L'-0.80m'\h'0.55m'\v'0.80m'\s0\fP .ds cm \h'-0.10m'\v'0.30m'\(de\h'0.10m'\v'-0.30m' .ds sa \s-4\v'-0.4m'a\v'0.4m'\s+4 .ds sb \s-4\v'-0.4m'b\v'0.4m'\s+4 .ds IE i.e., .ds EG e.g., .EQ delim $$ define bottom "\*(bt" define compose "\*(cm" define equiv '~==~' define dd '"$$"' define df '"$fp"' define dl '"$"' define fs '' define qy '' define qz '' define T 'bold "T"' define F 'bold "F"' define nd '~ bold "and" ~' define rr '~ bold "or"~' define orsign % "\s-2\ \h'.05m'\ \v'.15m'\ \z\ \e\ \e\ \h'-.08m'\ \z\(sl\ \(sl\ \h'-.1m'\ \v'-.15m'\ \s+2" % define andsign % "\s-2\ \v'.15m'\ \z\(sl\ \(sl\ \h'-.3m'\ \z\e\ \e\ \v'-.15m'\ \s+2" % define notmemberof ` \(mo back 80 size +2 / ` define memberOf "^\(mo^" tdefine forAll % "\z\e\h'0.5m'\z\(sl\h'-.2m'\v'-0.3m'\s-4\(em\s0\v'0.3m'\h'0.25m'" ~% .EN .nr di \n(ii e. Otherwise, \fIliszt\fP would be ineffective in speeding up execution since all the functional forms would be executed interpretively. Although the amount of code generated by an expanding compiler is 3 or 4 times greater than would be generated by a non-expanding compiler, even in interpreted mode the code runs twice as quickly adoc/ps2/09.lisp/ 755 3 12 0 3662237241 6422 doc/ps2/09.lisp/Makefile 444 3 12 15312 3662217154 10170 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)Makefile 6.3 (Berkeley) 5/14/86 # # $Header: Makefile 1.4 83/07/21 21:27:16 sklower Exp $ # makefile for the franz lisp manual # # sources: ${MacroSrc}: macros for the franz documents # ${TMacSrc}: macros for typesetting franz documents # ch1.n intro and description of types # ch2.n data structure access # ch3.n on arithmetic functions. # ch4.n special functions. # ch5.n i/o # ch6.n system functions # ch7.n reader # ch8.n functions and macros # ch9.n arrays # ch10.n exception handling # ch11.n trace package # ch12.n liszt # ch13.n cmu top level # ch14.n stepper # ch15.n fixit package # ch16.n lisp editor # ch17.n hash tables # chb.n special symbols # chc.n short subjects .SUFFIXES: .n .t .x .v .r .rx .q .qx .sp # the syntax's have this meaning: # .n nroff/troff source file # .t troff output file, can be vpr -t 'ed # .x index file from a troff run, when collected and run through troff # again, an index is produced. # .v this file never exists, but asking for it will cause a .t file to # be created and then vpr'ed. the .t file will not be deleted. # .p this file also never exists, but asking for it will cause TROFF # (usually vtroff or itroff) to be run directly on the file, leaving # no .t around. This is used in /usr/doc for people who want to # run off a manual and are too lazy to read this makefile. # .r nroff output file. # .rx special index output from nroff run. These files should be catted # together and then left around for lisp to read when given the help # command. # # .q nroff output file compatible with model 37 # .qx index file for .q files. # # .sp spell errors # # make install will install the nroff versions of the manual in the # directory (LibDir/manual) where the auxfns0.l help command can find them. # LibDir = /usr/lib/lisp CcodeDir = ../franz CopyTo = /dev/null TROFF= ditroff TBL= dtbl NROFF= nroff PRINTER = -Pdp O = Append = ${LibDir}/append # Rmt = is unecessary; you can say, make rall NROFF="'dali nroff'". # better to just copy the doc directory to the remote machine and # run it all there. #--- Sources: # We use the suffixes to tell make how to make a file. Thus # we only specify the root and let the append function add the # appropriate suffix. MacroSrc = lmacs TMacSrc = tmacs RootGenSrc = ch0 ch1 ch2 ch3 ch4 ch5 ch6 ch61 ch7 ch8 \ ch9 ch10 ch11 ch12 ch13 ch14 ch15 ch16 ch17 chb chc DocSrc= ch0.n ch1.n ch2.n ch3.n ch4.n ch5.n ch6.n ch7.n ch8.n \ ch9.n ch10.n ch11.n ch12.n ch13.n ch14.n ch15.n ch16.n ch17.n DocApp= chb.n chc.n UtilSrc = Makefile indexsed mantags extrnames.awk fixmks.sed \ franz.n #-- can't get a expression for all source at make read time. must use # append to add .n to RootGenSrc doc: paper app paper: paper.${PRINTER} lpr ${PRINTER} -n paper.${PRINTER} paper.${PRINTER}: ${DocSrc} ${TMacSrc} ${TBL} ${PRINTER} ${TMacSrc} ${DocSrc} | \ ${TROFF} -t -me 1> paper.${PRINTER} 2> tindex app: app.${PRINTER} lpr ${PRINTER} -n app.${PRINTER} app.${PRINTER}: tindex ${TMacSrc} ${DocApp} echo ".Ib" | sort +2 tindex - | sed -f indexsed | \ ${TROFF} -t -me ${TMacSrc} - ${DocApp} > app.${PRINTER} all: make rall rall: ${Append} make NROFF=${NROFF} O=${O} `${Append} .r ${RootGenSrc}` helpindex vall: ${Append} make TROFF=${TROFF} O=${O} `${Append} .v ${RootGenSrc}` index.v tall: ${Append} make TROFF=${TROFF} O=${O} `${Append} .t ${RootGenSrc}` index.t cctall: make TROFF="troff -s12" tall pall: ${Append} make TROFF=${TROFF} O=${O} `${Append} .p ${RootGenSrc}` pindex troff: pall qall: ${Append} make NROFF=${NROFF} O=${O} `${Append} .q ${RootGenSrc}` index.t spall: ${Append} make TROFF=${TROFF} O=${O} `${Append} .q ${RootGenSrc}` index.t # only a few files describe functions which are indexed. .t.v: lpr ${PRINTER} -n $*.t .n.t: ${TBL} ${PRINTER} ${MacroSrc} $*.n | \ ${TROFF} -me ${O} ${PRINTER} -t 1> $*.t 2> $*.x .n.p: ${TBL} ${PRINTER} ${MacroSrc} $*.n | ${TROFF} -me ${O} ${PRINTER} 2> $*.x .n.x: ${TBL} ${PRINTER} ${MacroSrc} $*.n | ${TROFF} -me ${O} ${PRINTER} -z 2> $*.x .n.r: tbl ${MacroSrc} $*.n | ${NROFF} -rb3 -me ${O} 1> $*.r 2> $*.rx rm -f helpindex .n.rx: tbl ${MacroSrc} $*.n | ${NROFF} -rb3 -me ${O} 1> $*.r 2> $*.rx rm -f helpindex .n.q: tbl ${MacroSrc} $*.n | ${NROFF} -me -T37 ${O} 2> $*.qx | col > $*.q .n.sp: spell $*.n > $*.sp install: make O=${O} rall cp `${Append} .r ${RootGenSrc}` helpindex ${LibDir}/manual clean: -rm -f paper.-[PT]* app.-[PT]* errs Errs make.out -rm -f *.r -rm -f *.rx -rm -f helpindex -rm -f tindex -rm -f *.t -rm -f *.q -rm -f *.x findex: ${Append} make `${Append} .x ${RootGenSrc}` echo ".Ib" > index sort +3 -o index index `${Append} .x ${RootGenSrc}` sed -f indexsed index > indexx ${Rmt} ${TROFF} -me ${MacroSrc} indexx index.t: make `${Append} .x ${RootGenSrc}` echo ".Ib" > index sort +3 -o index index `${Append} .x ${RootGenSrc}` sed -f indexsed index > indexx ${TROFF} -me -x -t ${MacroSrc} indexx > index.t pindex: ${Append} make `${Append} .x ${RootGenSrc}` echo ".Ib" > index sort +3 -o index index `${Append} .x ${RootGenSrc}` sed -f indexsed index > indexx ${TROFF} -me ${MacroSrc} indexx helpindex: ${Append} make `${Append} .rx ${RootGenSrc}` cat `${Append} .rx ${RootGenSrc}` | tr '\227' ' ' > helpindex tags: /dev/tty ${Append} awk -f mantags `${Append} .n ${RootGenSrc}` | sort > tags ${Append}: (cd ../utils ; make LibDir=${LibDir} ${Append}) # to create a database for lxref to use: C-database: ${CcodeDir}/sysat.c grep "^ MK" ${CcodeDir}/sysat.c > mks sed -f fixmks.sed < mks > mks.fixed (echo "(Chome)" ; cat mks.fixed ) > C-database rm -f mks mks.fixed doc-database: awk -f extrnames.awk `${Append} .n ${RootGenSrc}`\ | sed -f fixmks.sed > doc-database bigxref: C-database doc-database ${Append} -p ${LibDir}/ `(cd ${LibDir} ; make echorequired)` | \ sed 's/\.l/.x/g' > lisplibfiles lxref doc-database C-database `cat lisplibfiles` > bigxref # simple table of contents, just a listing of which function is # documented in which chapter tofc: egrep "^.Lc|^.Lf|^.Lx|^.sh" `${Append} .n ${RootGenSrc}` > tofc copysource: (tar cf - ${MacroSrc} ${TMacSrc} `${Append} .n ${RootGenSrc}` \ ${UtilSrc} | (cd ${CopyTo} ; tar xf -)) scriptcatall: ${AllSrc} ${Append} @(cd .. ; scriptcat doc doc ${MacroSrc} `${Append} .n ${RootGenSrc}` ${UtilSrc}) @(cd .. ; scriptcat doc lisplib/manual \ `${Append} .r ${RootGenSrc}` helpindex) copymanual: ${Append} ( cd ${FromDir}/manual ; \ cp `${Append} .r ${RootGenSrc}` helpindex ${CopyTo}) ver exists, but asking for it will cause a .t file to # be created and then vpr'ed. the .t file will not be deleted. # .p this file also never exists, but asking for it will cause TROFF # (usually vtroff or itroff) to be run directly on the file, leaving # no .t around. This is used in /usr/doc for peopledoc/ps2/09.lisp/ch0.n 444 3 12 12477 3661001012 7351 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch0.n 6.2 (Berkeley) 5/10/86 .\" .\" $Header: ch0.n,v 1.3 83/07/27 15:10:52 layer Exp $ .pp \ \ .sp 2i .tl ''\s14The\ \s16F\s14RANZ\ \s16L\s14ISP\ \s14Manual'' .ps 10 .sp 1v .tl ''by'' .sp 2v .tl ''\fIJohn\ K.\ Foderaro\fP'' .sp 2v .tl ''\fIKeith\ L.\ Sklower\fP'' .sp 2v .tl ''\fIKevin\ Layer\fP'' .sp 2i .tl ''June 1983'' .sp 2i .tl '''A document in' .tl '''four movements' .He .bp .sp 1i .ft I .ll 5.5i .in .5i .tl ''Overture'' .sp 2v A chorus of students under the direction of Richard Fateman have contributed to building .Fr from a mere melody into a full symphony . The major contributors to the initial system were Mike Curry, John Breedlove and Jeff Levinsky. Bill Rowan added the garbage collector and array package. Tom London worked on an early compiler and helped in overall system design. Keith Sklower has contributed much to .Fr , adding the bignum package and rewriting most of the code to increase its efficiency and clarity. Kipp Hickman and Charles Koester added hunks. Mitch Marcus added *rset, evalhook and evalframe. Don Cohen and others at Carnegie-Mellon made some improvements to evalframe and provided various features modelled after UCI/CMU PDP-10 Lisp and Interlisp environments (editor, debugger, top-level). John Foderaro wrote the compiler, added a few functions, and wrote much of this manual. Of course, other authors have contributed specific chapters as indicated. Kevin Layer modified the compiler to produce code for the Motorola 68000, and helped make .Fr pass ``Lint''. .br This manual may be supplemented or supplanted by local chapters representing alterations, additions and deletions. We at U.C. Berkeley are pleased to learn of generally useful system features, bug fixes, or useful program packages, and we will attempt to redistribute such contributions. .sp 1.75i .ft R .ll 6.0i .in 0 \(co 1980, 1981, 1983 by the Regents of the University of California. (exceptions: Chapters 13, 14 (first half), 15 and 16 have separate copyrights, as indicated. These are reproduced by permission of the copyright holders.) .br Permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, and the copyright notice of the Regents, University of California, is given. All rights reserved. .br .sp 2v Work reported herein was supported in part by the U. S. Department of Energy, Contract DE-AT03-76SF00034, Project Agreement DE-AS03-79ER10358, and the National Science Foundation under Grant No. MCS 7807291 .sp 2v UNIX is a trademark of Bell Laboratories. VAX and PDP are trademarks of Digital Equiptment Coporation. MC68000 is a trademark of Motorola Semiconductor Products, Inc. .bp .ps 16 .sp 1i .tl ''Score'' .sp .5i .ps 12 .in 1i. .ti 2i \fBFirst Movement \fI(allegro non troppo)\fR .ps 10 .sp 1v .de CH .ti -.5i \fR\\$1 \\$2\fP .br .. .ft I .CH 1. F\s-2RANZ\s0\ L\s-2ISP\s0 Introduction to .Fr , details of data types, and description of notation .CH 2. Data\ Structure\ Access Functions for the creation, destruction and manipulation of lisp data objects. .CH 3. Arithmetic\ Functions Functions to perform arithmetic operations. .CH 4. Special\ Functions Functions for altering flow of control. Functions for mapping other functions over lists. .CH 5. I/O\ Functions Functions for reading and writing from ports. Functions for the modification of the reader's syntax. .CH 6. System\ Functions Functions for storage management, debugging, and for the reading and setting of global Lisp status variables. Functions for doing UNIX-specific tasks such as process control. .ft R .sp 2v .ps 12 .ti 2i \fBSecond Movement \fI(Largo)\fR .ps 10 .sp 1v .ft I .CH 7. The\ Reader A description of the syntax codes used by the reader. An explanation of character macros. .CH 8. Functions,\ Fclosures,\ and\ Macros A description of various types of functional objects. An example of the use of foreign functions. .CH 9. Arrays\ and\ Vectors A detailed description of the parts of an array and of Maclisp compatible arrays. .CH 10. Exception\ Handling A description of the error handling sequence and of autoloading. .ft R .bp .ps 12 .ti 2i \fBThird Movement \fI(Scherzo)\fR .ps 10 .sp 1v .ft I .CH 11. The\ Joseph\ Lister\ Trace\ Package A description of a very useful debugging aid. .CH 12. Liszt,\ the\ lisp\ compiler A description of the operation of the compiler and hints for making functions compilable. .CH 13. CMU\ Top\ Level\ and\ File\ Package A description of a top level with a history mechanism and a package which helps you keep track of files of lisp functions. .CH 14 Stepper A description of a program which permits you to put breakpoints in lisp code and to single step it. A description of the evalhook and funcallhook mechanism. .CH 15 Fixit A program which permits you to examine and modify evaluation stack in order to fix bugs on the fly. .CH 16 Lisp\ Editor A structure editor for interactive modification of lisp code. .ft R .sp 2v .ps 12 .ti 2i \fBFinal Movement \fI(allegro)\fR .ps 10 .sp 1v .ft I .CH Appendix\ A -\ Function\ Index .CH Appendix\ B -\ List\ of\ Special\ Symbols .CH Appendix\ C -\ Short\ Subjects Garbage collector, Debugging, Default Top Level ${MacroSrc} indexx helpindex: ${Append} make `${Append} .rx ${RootGenSrc}` cat `${Append} .rx ${RootGenSrc}` | tr '\227' ' ' > helpindex tags: /dev/tty ${Append} awk -f mantags `${Append}doc/ps2/09.lisp/ch1.n 444 3 12 34056 3662146464 7375 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch1.n 6.3 (Berkeley) 5/14/86 .\" .\" $Header: ch1.n,v 1.3 83/07/27 15:11:17 layer Exp $ .Lc \s+2F\s-2RANZ\s0\ L\s-2ISP\s0\s-2 1 .sh 2 .Fr \*[\(dg\*] was created as a tool to further research in symbolic and algebraic manipulation, artificial intelligence, and programming languages at the University of California at Berkeley. .(f \*[\(dg\*]It is rumored that this name has something to do with Franz Liszt [F\fIr\fPa\*:nts List] (1811-1886) a Hungarian composer and keyboard virtuoso. These allegations have never been proven. .)f Its roots are in a PDP-11 Lisp system which originally came from Harvard. As it grew it adopted features of Maclisp and Lisp Machine Lisp. Substantial compatibility with other Lisp dialects (Interlisp, UCILisp, CMULisp) is achieved by means of support packages and compiler switches. The heart of .Fr is written almost entirely in the programming language C. Of course, it has been greatly extended by additions written in Lisp. A small part is written in the assembly language for the current host machines, VAXen and a couple of flavors of 68000. Because .Fr is written in C, it is relatively portable and easy to comprehend. .pp .Fr is capable of running large lisp programs in a timesharing environment, has facilities for arrays and user defined structures, has a user controlled reader with character and word macro capabilities, and can interact directly with compiled Lisp, C, Fortran, and Pascal code. .pp This document is a reference manual for the .Fr system. It is not a Lisp primer or introduction to the language. Some parts will be of interest primarily to those maintaining .Fr at their computer site. There is an additional document entitled \fIThe Franz Lisp System,\fP by John Foderaro, which partially describes the system implementation. .Fr , as delivered by Berkeley, includes all source code and machine readable version of this manual and system document. The system document is in a single file named "franz.n" in the "doc" subdirectory. .pp This document is divided into four Movements. In the first one we will attempt to describe the language of .Fr precisely and completely as it now stands (Opus 38.69, June 1983). In the second Movement we will look at the reader, function types, arrays and exception handling. In the third Movement we will look at several large support packages written to help the .Fr user, namely the trace package, compiler, fixit and stepping package. Finally the fourth movement contains an index into the other movements. In the rest of this chapter we shall examine the data types of .Fr . The conventions used in the description of the .Fr functions will be given in \(sc1.3 -- it is very important that these conventions are understood. .sh 2 Data\ Types .Fr has fourteen data types. In this section we shall look in detail at each type and if a type is divisible we shall look inside it. There is a Lisp function .i type which will return the type name of a lisp object. This is the official .Fr name for that type and we will use this name and this name only in the manual to avoid confusing the reader. The types are listed in terms of importance rather than alphabetically. .sh 3 lispval - - 0 This is the name we use to describe any Lisp object. The function .i type will never return `lispval'. .sh 3 symbol This object corresponds to a variable in most other programming languages. It may have a value or may be `unbound'. A symbol may be .i lambda .i bound meaning that its current value is stored away somewhere and the symbol is given a new value for the duration of a certain context. When the Lisp processor leaves that context, the symbol's current value is thrown away and its old value is restored. .sp .5v A symbol may also have a .i function .i binding . This function binding is static; it cannot be lambda bound. Whenever the symbol is used in the functional position of a Lisp expression the function binding of the symbol is examined (see Chapter 4 for more details on evaluation). .sp .5v A symbol may also have a .i property .i list , another static data structure. The property list consists of a list of an even number of elements, considered to be grouped as pairs. The first element of the pair is the .i indicator the second the .i value of that indicator. .sp .5v Each symbol has a print name .i (pname) which is how this symbol is accessed from input and referred to on (printed) output. .sp .5v A symbol also has a hashlink used to link symbols together in the oblist -- this field is inaccessible to the lisp user. .sp .5v Symbols are created by the reader and by the functions .i concat , .i maknam and their derivatives. Most symbols live on .Fr 's sole .i oblist , and therefore two symbols with the same print name are usually the exact same object (they are .i eq ). Symbols which are not on the oblist are said to be .i uninterned. The function .i maknam creates uninterned symbols while .i concat creates .i interned ones. .(b .TS box center ; c | c | c | c . Subpart name Get value Set value Type = value eval set lispval setq _ property plist setplist list or nil list get putprop defprop _ function getd putd array, binary, list binding def or nil _ print name get_pname string _ hash link .TE .)b .sh 3 list A list cell has two parts, called the car and cdr. List cells are created by the function .i cons . .(b .TS box center ; c | c | c | c . Subpart name Get value Set value Type = car car rplaca lispval _ cdr cdr rplacd lispval .TE .)b .sh 3 binary This type acts as a function header for machine coded functions. It has two parts, a pointer to the start of the function and a symbol whose print name describes the argument .i discipline . The discipline (if .i lambda , .i macro or .i nlambda ) determines whether the arguments to this function will be evaluated by the caller before this function is called. If the discipline is a string (specifically "\fIsubroutine\fP", "\fIfunction\fP", "\fIinteger-function\fP", "\fIreal-function\fP", "\fIc-function\fP", "\fIdouble-c-function\fP", or "\fIvector-c-function\fP" ) then this function is a foreign subroutine or function (see \(sc8.5 for more details on this). Although the type of the .i entry field of a binary type object is usually \fBstring\fP or \fBother\fP, the object pointed to is actually a sequence of machine instructions. .br Objects of type binary are created by .i mfunction, .i cfasl, and .i getaddress. .(b .TS box center ; c | c | c | c . Subpart name Get value Set value Type = entry getentry string or fixnum _ discipline getdisc putdisc symbol or fixnum .TE .)b .sh 3 fixnum A fixnum is an integer constant in the range \(mi2\*[31\*] to 2\*[31\*]\(mi1. Small fixnums (-1024 to 1023) are stored in a special table so they needn't be allocated each time one is needed. In principle, the range for fixnums is machine dependent, although all current implementations for franz have this range. .sh 3 flonum A flonum is a double precision real number. On the VAX, the range is \(+-2.9\(mu10\*[-37\*] to \(+-1.7\(mu10\*[38\*]. There are approximately sixteen decimal digits of precision. Other machines may have other ranges. .sh 3 bignum A bignum is an integer of potentially unbounded size. When integer arithmetic exceeds the limits of fixnums mentioned above, the calculation is automatically done with bignums. Should calculation with bignums give a result which can be represented as a fixnum, then the fixnum representation will be used\*[\(dg\*]. .(f \*[\(dg\*]The current algorithms for integer arithmetic operations will return (in certain cases) a result between \(+-2\*[30\*] and 2\*[31\*] as a bignum although this could be represented as a fixnum. .)f This contraction is known as .i integer .i normalization . Many Lisp functions assume that integers are normalized. Bignums are composed of a sequence of .b list cells and a cell known as an .b sdot. The user should consider a .b bignum structure indivisible and use functions such as .i haipart , and .i bignum-leftshift to extract parts of it. .sh 3 string A string is a null terminated sequence of characters. Most functions of symbols which operate on the symbol's print name will also work on strings. The default reader syntax is set so that a sequence of characters surrounded by double quotes is a string. .sh 3 port A port is a structure which the system I/O routines can reference to transfer data between the Lisp system and external media. Unlike other Lisp objects there are a very limited number of ports (20). Ports are allocated by .i infile and .i outfile and deallocated by .i close and .i resetio . The .i print function prints a port as a percent sign followed by the name of the file it is connected to (if the port was opened by \fIfileopen, infile, or outfile\fP). During initialization, .Fr binds the symbol \fBpiport\fP to a port attached to the standard input stream. This port prints as %$stdin. There are ports connected to the standard output and error streams, which print as %$stdout and %$stderr. This is discussed in more detail at the beginning of Chapter 5. .sh 3 vector Vectors are indexed sequences of data. They can be used to implement a notion of user-defined types via their associated property list. They make \fBhunks\fP (see below) logically unnecessary, although hunks are very efficiently garbage collected. There is a second kind of vector, called an immediate-vector, which stores binary data. The name that the function \fItype\fP returns for immediate-vectors is \fBvectori\fP. Immediate-vectors could be used to implement strings and block-flonum arrays, for example. Vectors are discussed in chapter 9. The functions \fInew-vector\fP, and \fIvector\fP, can be used to create vectors. .(b .TS box center ; c | c | c | c . Subpart name Get value Set value Type = datum[\fIi\fP] vref vset lispval _ property vprop vsetprop lispval vputprop _ size vsize \- fixnum .TE .)b .sh 3 array Arrays are rather complicated types and are fully described in Chapter 9. An array consists of a block of contiguous data, a function to access that data, and auxiliary fields for use by the accessing function. Since an array's accessing function is created by the user, an array can have any form the user chooses (e.g. n-dimensional, triangular, or hash table). .br Arrays are created by the function .i marray . .(b .TS box center ; c | c | c | c . Subpart name Get value Set value Type = access function getaccess putaccess binary, list or symbol _ auxiliary getaux putaux lispval _ data arrayref replace block of contiguous set lispval _ length getlength putlength fixnum _ delta getdelta putdelta fixnum .TE .)b .sh 3 value A value cell contains a pointer to a lispval. This type is used mainly by arrays of general lisp objects. Value cells are created with the .i ptr function. A value cell containing a pointer to the symbol `foo' is printed as `(ptr\ to)foo' .sh 3 hunk A hunk is a vector of from 1 to 128 lispvals. Once a hunk is created (by .i hunk or .i makhunk ) it cannot grow or shrink. The access time for an element of a hunk is slower than a list cell element but faster than an array. Hunks are really only allocated in sizes which are powers of two, but can appear to the user to be any size in the 1 to 128 range. Users of hunks must realize that \fI(not\ (atom\ 'lispval))\fP will return true if .i lispval is a hunk. Most lisp systems do not have a direct test for a list cell and instead use the above test and assume that a true result means .i lispval is a list cell. In .Fr you can use .i dtpr to check for a list cell. Although hunks are not list cells, you can still access the first two hunk elements with .i cdr and .i car and you can access any hunk element with .i cxr \*[\(dg\*]. .(f \*[\(dg\*]In a hunk, the function .i cdr references the first element and .i car the second. .)f You can set the value of the first two elements of a hunk with .i rplacd and .i rplaca and you can set the value of any element of the hunk with .i rplacx . A hunk is printed by printing its contents surrounded by { and }. However a hunk cannot be read in in this way in the standard lisp system. It is easy to write a reader macro to do this if desired. .sh 3 other Occasionally, you can obtain a pointer to storage not allocated by the lisp system. One example of this is the entry field of those .Fr functions written in C. Such objects are classified as of type \fBother\fP. Foreign functions which call malloc to allocate their own space, may also inadvertantly create such objects. The garbage collector is supposed to ignore such objects. .sh 2 Documentation Conventions. The conventions used in the following chapters were designed to give a great deal of information in a brief space. The first line of a function description contains the function name in \fBbold\ face\fP and then lists the arguments, if any. The arguments all have names which begin with a letter or letters and an underscore. The letter(s) gives the allowable type(s) for that argument according to this table. .(b .TS box center ; c | c l | l . Letter Allowable type(s) = g any type _ s symbol (although nil may not be allowed) _ t string _ l list (although nil may be allowed) _ n number (fixnum, flonum, bignum) _ i integer (fixnum, bignum) _ x fixnum _ b bignum _ f flonum _ u function type (either binary or lambda body) _ y binary _ v vector _ V vectori _ a array _ e value _ p port (or nil) _ h hunk .TE .)b In the first line of a function description, those arguments preceded by a quote mark are evaluated (usually before the function is called). The quoting convention is used so that we can give a name to the result of evaluating the argument and we can describe the allowable types. If an argument is not quoted it does not mean that that argument will not be evaluated, but rather that if it is evaluated, the time at which it is evaluated will be specifically mentioned in the function description. Optional arguments are surrounded by square brackets. An ellipsis (...) means zero or more occurrences of an argument of the directly preceding type. nding of the symbol is examined (see Chapter 4 for more details on evaluation). .sp .5v A symbol may also have a .i property .i list , another static data structure. The property list consists of a list of an even number of elements, considered to be grouped as pairs. The first element of the pair is the .i indicator the second the .i value of that indicator. .sp .5v Each symbol has a print name .i (pname) which is how this symbol is accessed from inpudoc/ps2/09.lisp/ch10.n 444 3 12 20233 3662147506 7443 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch10.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: /na/franz/doc/RCS/ch10.n,v 1.1 83/01/31 07:08:20 jkf Exp $ .Lc Exception\ Handling 10 .sh 2 Errset\ and\ Error\ Handler\ Functions \n(ch 1 .pp .Fr allows the user to handle in a number of ways the errors which arise during computation. One way is through the use of the .i errset function. If an error occurs during the evaluation of the .i errset 's first argument, then the locus of control will return to the errset which will return nil (except in special cases, such as .i err ). The other method of error handling is through an error handler function. When an error occurs, the error handler is called and is given as an argument a description of the error which just occurred. The error handler may take one of the following actions: .nr $p 0 .np it could take some drastic action like a .i reset or a .i throw . .np it could, assuming that the error is continuable, return to the function which noticed the error. The error handler indicates that it wants to return a value from the error by returning a list whose .i car is the value it wants to return. .np it could decide not to handle the error and return a non-list to indicate this fact. .sh 2 "The Anatomy of an error" .pp Each error is described by a list of these items: .nr $p 0 .np error type - This is a symbol which indicates the general classification of the error. This classification may determine which function handles this error. .np unique id - This is a fixnum unique to this error. .np continuable - If this is non-nil then this error is continuable. There are some who feel that every error should be continuable and the reason that some (in fact most) errors in .Fr are not continuable is due to the laziness of the programmers. .np message string - This is a symbol whose print name is a message describing the error. .np data - There may be from zero to three lisp values which help describe this particular error. For example, the unbound variable error contains one datum value, the symbol whose value is unbound. The list describing that error might look like: .br .ce (ER%misc 0 t |Unbound Variable:| foobar) .sh 2 "Error handling algorithm" .pp This is the sequence of operations which is done when an error occurs: .nr $p 0 .np If the symbol .b ER%all has a non nil value then this value is the name of an error handler function. That function is called with a description of the error. If that function returns (and of course it may choose not to) and the value is a list and this error is continuable, then we return the .i car of the list to the function which called the error. Presumably the function will use this value to retry the operation. On the other hand, if the error handler returns a non list, then it has chosen not to handle this error, so we go on to step (2). Something special happens before we call the .b ER%all error handler which does not happen in any of the other cases we will describe below. To help insure that we don't get infinitely recursive errors if .b ER%all is set to a bad value, the value of .b ER%all is set to nil before the handler is called. Thus it is the responsibility of the .b ER%all handler to `reenable' itself by storing its name in .b ER%all. .np Next the specific error handler for the type of error which just occurred is called (if one exists) to see if it wants to handle the error. The names of the handlers for the specific types of errors are stored as the values of the symbols whose names are the types. For example the handler for miscellaneous errors is stored as the value of .b ER%misc. Of course, if .b ER%misc has a value of nil, then there is no error handler for this type of error. Appendix B contains list of all error types. The process of classifying the errors is not complete and thus most errors are lumped into the \fBER%misc\fP category. Just as in step (1), the error handler function may choose not to handle the error by returning a non-list, and then we go to step (3). .np Next a check is made to see if there is an .i errset surrounding this error. If so the second argument to the .i errset call is examined. If the second argument was not given or is non nil then the error message associated with this error is printed. Finally the stack is popped to the context of the .i errset and then the .i errset returns nil. If there was no .i errset we go to step (4). .np If the symbol .b ER%tpl has a value then it is the name of an error handler which is called in a manner similar to that discussed above. If it chooses not to handle the error, we go to step (5). .np At this point it has been determined that the user doesn't want to handle this error. Thus the error message is printed out and a .i reset is done to send the flow of control to the top-level. .pp To summarize the error handling system: When an error occurs, you have two chances to handle it before the search for an .i errset is done. Then, if there is no .i errset , you have one more chance to handle the error before control jumps to the top level. Every error handler works in the same way: It is given a description of the error (as described in the previous section). It may or may not return. If it returns, then it returns either a list or a non-list. If it returns a list and the error is continuable, then the .i car of the list is returned to the function which noticed the error. Otherwise the error handler has decided not to handle the error and we go on to something else. .sh 2 "Default aids" .pp There are two standard error handlers which will probably handle the needs of most users. One of these is the lisp coded function .i break-err-handler which is the default value of .b ER%tpl. Thus when all other handlers have ignored an error, .i break-err-handler will take over. It will print out the error message and go into a read-eval-print loop. The other standard error handler is .i debug-err-handler . This handler is designed to be connected to .b ER%all and is useful if your program uses .i errset and you want to look at the error before it is thrown up to the .i errset . .sh +0 Autoloading .pp When .i eval , .i apply or .i funcall are told to call an undefined function, an \fBER%undef\fP error is signaled. The default handler for this error is .i undef-func-handler . This function checks the property list of the undefined function for the indicator autoload. If present, the value of that indicator should be the name of the file which contains the definition of the undefined function. .i Undef-func-handler will load the file and check if it has defined the function which caused the error. If it has, the error handler will return and the computation will continue as if the error did not occur. This provides a way for the user to tell the lisp system about the location of commonly used functions. The trace package sets up an autoload property to point to /usr/lib/lisp/trace. .sh +0 Interrupt\ processing .pp The UNIX operating system provides one user interrupt character which defaults to ^C.\*[\(dg\*] .(f \*[\(dg\*]Actually there are two but the lisp system does not allow you to catch the QUIT interrupt. .)f The user may select a lisp function to run when an interrupt occurs. Since this interrupt could occur at any time, and in particular could occur at a time when the internal stack pointers were in an inconsistent state, the processing of the interrupt may be delayed until a safe time. When the first ^C is typed, the lisp system sets a flag that an interrupt has been requested. This flag is checked at safe places within the interpreter and in the .i qlinker function. If the lisp system doesn't respond to the first ^C, another ^C should be typed. This will cause all of the transfer tables to be cleared forcing all calls from compiled code to go through the .i qlinker function where the interrupt flag will be checked. If the lisp system still doesn't respond, a third ^C will cause an immediate interrupt. This interrupt will not necessarily be in a safe place so the user should .i reset the lisp system as soon as possible. e error handler indicates that it wants to return a value from the error by returning a list whose .i car is the value it wants to return. .np it could decide not to handle the error and return a non-list to indicate this fact. .sh 2 "The Anatomy of an error" .pp Each error is described by a list of these items: .nr $p 0 .np error type - This is a symboldoc/ps2/09.lisp/ch11.n 444 3 12 21341 3655276542 7452 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch11.n 6.1 (Berkeley) 4/29/86 .\" ." $Header: ch11.n 1.1 83/01/31 07:08:25 jkf Exp $ .Lc The\ Joseph\ Lister\ Trace\ Package 11 .de Tf .sp 2v .ti -.5i \fB\\$1\fP - .. .pp The Joseph Lister\*[\(dg\*] Trace package is an important tool for the interactive debugging of a Lisp program. .(f \*[\(dg\*]\fILister, Joseph\fP\ \ \ \ 1st Baron Lister of Lyme Regis, 1827-1912; English surgeon: introduced antiseptic surgery. .)f It allows you to examine selected calls to a function or functions, and optionally to stop execution of the Lisp program to examine the values of variables. .pp The trace package is a set of Lisp programs located in the Lisp program library (usually in the file /usr/lib/lisp/trace.l). Although not normally loaded in the Lisp system, the package will be loaded in when the first call to \fItrace\fP is made. .Lf trace "[ls_arg1 ...]" .Wh the form of the ls_arg\fIi\fP is described below. .Re a list of the function sucessfully modified for tracing. If no arguments are given to .i trace , a list of all functions currently being traced is returned. .Se The function definitions of the functions to trace are modified. .sp 2v .in 0 The ls_arg\fIi\fP can have one of the following forms: .in .75i .Tf "foo" when foo is entered and exited, the trace information will be printed. .Tf "(foo break)" when foo is entered and exited the trace information will be printed. Also, just after the trace information for foo is printed upon entry, you will be put in a special break loop. The prompt is `T>' and you may type any Lisp expression, and see its value printed. The .i i th argument to the function just called can be accessed as (arg \fIi\fP). To leave the trace loop, just type ^D or (tracereturn) and execution will continue. Note that ^D will work only on UNIX systems. .Tf "(foo if expression)" when foo is entered and the expression evaluates to non-nil, then the trace information will be printed for both exit and entry. If expression evaluates to nil, then no trace information will be printed. .Tf "(foo ifnot expression)" when foo is entered and the expression evaluates to nil, then the trace information will be printed for both entry and exit. If both \fBif\fP and .b ifnot are specified, then the .b if expression must evaluate to non nil AND the .b ifnot expression must evaluate to nil for the trace information to be printed out. .Tf "(foo evalin expression)" when foo is entered and after the entry trace information is printed, expression will be evaluated. Exit trace information will be printed when foo exits. .Tf "(foo evalout expression)" when foo is entered, entry trace information will be printed. When foo exits, and before the exit trace information is printed, expression will be evaluated. .Tf "(foo evalinout expression)" this has the same effect as (trace (foo evalin expression evalout expression)). .Tf "(foo lprint)" this tells .i trace to use the level printer when printing the arguments to and the result of a call to foo. The level printer prints only the top levels of list structure. Any structure below three levels is printed as a &. This allows you to trace functions with massive arguments or results. .sp 2v .pp The following trace options permit one to have greater control over each action which takes place when a function is traced. These options are only meant to be used by people who need special hooks into the trace package. Most people should skip reading this section. .in .75i .Tf "(foo traceenter tefunc)" this tells .i trace that the function to be called when foo is entered is tefunc. tefunc should be a lambda of two arguments, the first argument will be bound to the name of the function being traced, foo in this case. The second argument will be bound to the list of arguments to which foo should be applied. The function tefunc should print some sort of "entering foo" message. It should not apply foo to the arguments, however. That is done later on. .Tf "(foo traceexit txfunc)" this tells .i trace that the function to be called when foo is exited is txfunc. txfunc should be a lambda of two arguments, the first argument will be bound to the name of the function being traced, foo in this case. The second argument will be bound to the result of the call to foo. The function txfunc should print some sort of "exiting foo" message. .Tf "(foo evfcn evfunc)" this tells .i trace that the form evfunc should be evaluated to get the value of foo applied to its arguments. This option is a bit different from the other special options since evfunc will usually be an expression, not just the name of a function, and that expression will be specific to the evaluation of function foo. The argument list to be applied will be available as T-arglist. .Tf "(foo printargs prfunc)" this tells .i trace to used prfunc to print the arguments to be applied to the function foo. prfunc should be a lambda of one argument. You might want to use this option if you wanted a print function which could handle circular lists. This option will work only if you do not specify your own .b traceenter function. Specifying the option .b lprint is just a simple way of changing the printargs function to the level printer. .Tf "(foo printres prfunc)" this tells .i trace to use prfunc to print the result of evaluating foo. prfunc should be a lambda of one argument. This option will work only if you do not specify your own .b traceexit function. Specifying the option .b lprint changes printres to the level printer. .sp 2v .pp You may specify more than one option for each function traced. For example: .sp 1v .ti .5i \fI(trace (foo if\ (eq 3 (arg 1)) break lprint) (bar evalin (print xyzzy)))\fP .sp 1v This tells .i trace to trace two more functions, foo and bar. Should foo be called with the first argument .i eq to 3, then the entering foo message will be printed with the level printer. Next it will enter a trace break loop, allowing you to evaluate any lisp expressions. When you exit the trace break loop, foo will be applied to its arguments and the resulting value will be printed, again using the level printer. Bar is also traced, and each time bar is entered, an entering bar message will be printed and then the value of xyzzy will be printed. Next bar will be applied to its arguments and the result will be printed. If you tell .i trace to trace a function which is already traced, it will first .i untrace it. Thus if you want to specify more than one trace option for a function, you must do it all at once. The following is .i not equivalent to the preceding call to .i trace for foo: .sp 1v \fI(trace (foo if (eq 3 (arg 1))) (foo break) (foo lprint))\fP .sp 1v. In this example, only the last option, lprint, will be in effect. .pp If the symbol $tracemute is given a non nil value, printing of the function name and arguments on entry and exit will be surpressed. This is particularly useful if the function you are tracing fails after many calls to it. In this case you would tell .i trace to trace the function, set $tracemute to t, and begin the computation. When an error occurs you can use .i tracedump to print out the current trace frames. .pp Generally the trace package has its own internal names for the the lisp functions it uses, so that you can feel free to trace system functions like .i cond and not worry about adverse interaction with the actions of the trace package. You can trace any type of function: lambda, nlambda, lexpr or macro whether compiled or interpreted and you can even trace array references (however you should not attempt to store in an array which has been traced). .pp When tracing compiled code keep in mind that many function calls are translated directly to machine language or other equivalent function calls. A full list of open coded functions is listed at the beginning of the liszt compiler source. .i Trace will do a \fI(sstatus\ translink\ nil)\fP to insure that the new traced definitions it defines are called instead of the old untraced ones. You may notice that compiled code will run slower after this is done. .Lf traceargs "s_func [x_level]" .Wh if x_level is missing it is assumed to be 1. .Re the arguments to the x_level\fIth\fP call to traced function s_func are returned. .Lf tracedump "" .Se the currently active trace frames are printed on the terminal. returns a list of functions untraced. .Lf untrace "[s_arg1 ...]" .Re a list of the functions which were untraced. .No if no arguments are given, all functions are untraced. .Se the old function definitions of all traced functions are restored except in the case where it appears that the current definition of a function was not created by trace. program to examine the values of variables. .pp The trace package is a set of Lisp programs located in the Lisp program library (usually in the file /usr/lib/lisp/trace.l). Although not normally loaded in the Lisp system, the package will be loaded in when the first call to \fItrace\fdoc/ps2/09.lisp/ch12.n 444 3 12 53605 3655276617 7466 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch12.n 6.1 (Berkeley) 4/29/86 .\" ." $Header: ch12.n 1.2 83/07/23 12:41:32 layer Exp $ .Lc Liszt\ -\ the\ lisp\ compiler 12 .sh 2 "General strategy of the compiler" \n(ch 1 .pp The purpose of the lisp compiler, Liszt, is to create an object module which when brought into the lisp system using .i fasl will have the same effect as bringing in the corresponding lisp coded source module with .i load with one important exception, functions will be defined as sequences of machine language instructions, instead of lisp S-expressions. Liszt is not a function compiler, it is a .i file compiler. Such a file can contain more than function definitions; it can contain other lisp S-expressions which are evaluated at load time. These other S-expressions will also be stored in the object module produced by Liszt and will be evaluated at fasl time. .pp As is almost universally true of Lisp compilers, the main pass of Liszt is written in Lisp. A subsequent pass is the assembler, for which we use the standard UNIX assembler. .sh 2 "Running the compiler" .pp The compiler is normally run in this manner: .br % \fBliszt foo\fP .br will compile the file foo.l or foo (the preferred way to indicate a lisp source file is to end the file name with `.l'). The result of the compilation will be placed in the file foo.o if no fatal errors were detected. All messages which Liszt generates go to the standard output. Normally each function name is printed before it is compiled (the \-q option suppresses this). .sh 2 "Special forms" .pp Liszt makes one pass over the source file. It processes each form in this way: .sh 3 macro\ expansion .pp If the form is a macro invocation (i.e it is a list whose car is a symbol whose function binding is a macro), then that macro invocation is expanded. This is repeated until the top level form is not a macro invocation. When Liszt begins, there are already some macros defined, in fact some functions (such as defun) are actually macros. The user may define his own macros as well. For a macro to be used it must be defined in the Lisp system in which Liszt runs. .sh +0 classification .pp After all macro expansion is done, the form is classified according to its .i car (if the form is not a list, then it is classified as an .i other ). .sh +1 "eval-when" .pp The form of eval-when is \fI(eval-when\ (time1\ time2\ ...)\ form1\ form2\ ...)\fP where the time\fIi\fP are one of .i eval , .i compile , or .i load . The compiler examines the form\fIi\fP in sequence and the action taken depends on what is in the time list. If .i compile is in the list then the compiler will invoke .i eval on each form\fIi\fP as it examines it. If .i load is in the list then the compile will recursively call itself to compile each form\fIi\fP as it examines it. Note that if .i compile and .i load are in the time list, then the compiler will both evaluate and compile each form. This is useful if you need a function to be defined in the compiler at both compile time (perhaps to aid macro expansion) and at run time (after the file is .i fasl ed in). .sh +0 "declare" .pp Declare is used to provide information about functions and variables to the compiler. It is (almost) equivalent to \fI(eval-when\ (compile)\ ...)\fP. You may declare functions to be one of three types: lambda (*expr), nlambda (*fexpr), lexpr (*lexpr). The names in parenthesis are the Maclisp names and are accepted by the compiler as well (and not just when the compiler is in Maclisp mode). Functions are assumed to be lambdas until they are declared otherwise or are defined differently. The compiler treats calls to lambdas and lexprs equivalently, so you needn't worry about declaring lexprs either. It is important to declare nlambdas or define them before calling them. Another attribute you can declare for a function is localf which makes the function `local'. A local function's name is known only to the functions defined within the file itself. The advantage of a local function is that is can be entered and exited very quickly and it can have the same name as a function in another file and there will be no name conflict. .pp Variables may be declared special or unspecial. When a special variable is lambda bound (either in a lambda, prog or do expression), its old value is stored away on a stack for the duration of the lambda, prog or do expression. This takes time and is often not necessary. Therefore the default classification for variables is unspecial. Space for unspecial variables is dynamically allocated on a stack. An unspecial variable can only be accessed from within the function where it is created by its presence in a lambda, prog or do expression variable list. It is possible to declare that all variables are special as will be shown below. .pp You may declare any number of things in each declare statement. A sample declaration is .ft I .nf (declare \ \ \ \ \ (lambda func1 func2) \ \ \ \ \ (*fexpr func3) \ \ \ \ \ (*lexpr func4) \ \ \ \ \ (localf func5) \ \ \ \ \ (special var1 var2 var3) \ \ \ \ \ (unspecial var4)) .fi .ft R .pp You may also declare all variables to be special with \fI(declare\ (specials\ t))\fP. You may declare that macro definitions should be compiled as well as evaluated at compile time by \fI(declare\ (macros\ t))\fP. In fact, as was mentioned above, declare is much like \fI(eval-when\ (compile)\ ...)\fP. Thus if the compiler sees \fI(declare\ (foo\ bar))\fP and foo is defined, then it will evaluate \fI(foo\ bar)\fP. If foo is not defined then an undefined declare attribute warning will be issued. .sh +0 "(progn 'compile \fRform1 form2 ... formn\fB)\fP" .pp When the compiler sees this it simply compiles form1 through formn as if they too were seen at top level. One use for this is to allow a macro at top-level to expand into more than one function definition for the compiler to compile. .sh +0 "include/includef" .pp .i Include and .i includef cause another file to be read and compiled by the compiler. The result is the same as if the included file were textually inserted into the original file. The only difference between .i include and .i includef is that include doesn't evaluate its argument and includef does. Nested includes are allowed. .sh +0 "def" .pp A def form is used to define a function. The macros .i defun and .i defmacro expand to a def form. If the function being defined is a lambda, nlambda or lexpr then the compiler converts the lisp definition to a sequence of machine language instructions. If the function being defined is a macro, then the compiler will evaluate the definition, thus defining the macro withing the running Lisp compiler. Furthermore, if the variable .i macros is set to a non nil value, then the macro definition will also be translated to machine language and thus will be defined when the object file is fasled in. The variable .i macros is set to t by \fI(declare\ (macros\ t))\fP. .pp When a function or macro definition is compiled, macro expansion is done whenever possible. If the compiler can determine that a form would be evaluated if this function were interpreted then it will macro expand it. It will not macro expand arguments to a nlambda unless the characteristics of the nlambda is known (as is the case with .i cond). The map functions ( .i map , .i mapc , .i mapcar , and so on) are expanded to a .i do statement. This allows the first argument to the map function to be a lambda expression which references local variables of the function being defined. .sh +0 "other forms" .pp All other forms are simply stored in the object file and are evaluated when the file is .i fasl ed in. .sh 2 "Using the compiler" .pp The previous section describes exactly what the compiler does with its input. Generally you won't have to worry about all that detail as files which work interpreted will work compiled. Following is a list of steps you should follow to insure that a file will compile correctly. .ip [1] Make sure all macro definitions precede their use in functions or other macro definitions. If you want the macros to be around when you .i fasl in the object file you should include this statement at the beginning of the file: \fI(declare\ (macros\ t))\fP .ip [2] Make sure all nlambdas are defined or declared before they are used. If the compiler comes across a call to a function which has not been defined in the current file, which does not currently have a function binding, and whose type has not been declared then it will assume that the function needs its arguments evaluated (i.e. it is a lambda or lexpr) and will generate code accordingly. This means that you do not have to declare nlambda functions like .i status since they have an nlambda function binding. .ip [3] Locate all variables which are used for communicating values between functions. These variables must be declared special at the beginning of a file. In most cases there won't be many special declarations but if you fail to declare a variable special that should be, the compiled code could fail in mysterious ways. Let's look at a common problem, assume that a file contains just these three lines: .sp 2v .ft I (def aaa (lambda (glob loc) (bbb loc))) .br (def bbb (lambda (myloc) (add glob myloc))) .br (def ccc (lambda (glob loc) (bbb loc))) .sp 2v .ft R We can see that if we load in these two definitions then (aaa 3 4) is the same as (add 3 4) and will give us 7. Suppose we compile the file containing these definitions. When Liszt compiles aaa, it will assume that both glob and loc are local variables and will allocate space on the temporary stack for their values when aaa is called. Thus the values of the local variables glob and loc will not affect the values of the symbols glob and loc in the Lisp system. Now Liszt moves on to function bbb. Myloc is assumed to be local. When it sees the add statement, it find a reference to a variable called glob. This variable is not a local variable to this function and therefore glob must refer to the value of the symbol glob. Liszt will automatically declare glob to be special and it will print a warning to that effect. Thus subsequent uses of glob will always refer to the symbol glob. Next Liszt compiles ccc and treats glob as a special and loc as a local. When the object file is .i fasl 'ed in, and (ccc 3 4) is evaluated, the symbol glob will be lambda bound to 3 bbb will be called and will return 7. However (aaa 3 4) will fail since when bbb is called, glob will be unbound. What should be done here is to put \fI(declare\ (special\ glob)\fP at the beginning of the file. .ip [4] Make sure that all calls to .i arg are within the lexpr whose arguments they reference. If \fIfoo\fP is a compiled lexpr and it calls \fIbar\fP then \fIbar\fP cannot use \fIarg\fP to get at \fIfoo\fP's arguments. If both .i foo and .i bar are interpreted this will work however. The macro .i listify can be used to put all of some of a lexprs arguments in a list which then can be passed to other functions. .sh 2 "Compiler options" .pp The compiler recognizes a number of options which are described below. The options are typed anywhere on the command line preceded by a minus sign. The entire command line is scanned and all options recorded before any action is taken. Thus .br % liszt -mx foo .br % liszt -m -x foo .br % liszt foo -mx .br are all equivalent. Before scanning the command line for options, liszt looks for in the environment for the variable LISZT, and if found scans its value as if it was a string of options. The meaning of the options are: .ip \fBC\fP The assembler language output of the compiler is commented. This is useful when debugging the compiler and is not normally done since it slows down compilation. .ip \fBI\fP The next command line argument is taken as a filename, and loaded prior to compilation. .ip \fBe\fP Evaluate the next argument on the command line before starting compilation. For example .br % liszt -e '(setq foobar "foo string")' foo .br will evaluate the above s-expression. Note that the shell requires that the arguments be surrounded by single quotes. .ip \fBi\fP Compile this program in interlisp compatibility mode. This is not implemented yet. .ip \fBm\fP Compile this program in Maclisp mode. The reader syntax will be changed to the Maclisp syntax and a file of macro definitions will be loaded in (usually named /usr/lib/lisp/machacks). This switch brings us sufficiently close to Maclisp to allow us to compile Macsyma, a large Maclisp program. However Maclisp is a moving target and we can't guarantee that this switch will allow you to compile any given program. .ip \fBo\fP Select a different object or assembler language file name. For example .br % liszt foo -o xxx.o .br will compile foo and into xxx.o instead of the default foo.o, and .br % liszt bar -S -o xxx.s .br will compile to assembler language into xxx.s instead of bar.s. .ip \fBp\fP place profiling code at the beginning of each non-local function. If the lisp system is also created with profiling in it, this allows function calling frequency to be determined (see \fIprof(1)\fP) .ip \fBq\fP Run in quiet mode. The names of functions being compiled and various "Note"'s are not printed. .ip \fBQ\fP print compilation statistics and warn of strange constructs. This is the inverse of the \fBq\fP switch and is the default. .ip \fBr\fP place bootstrap code at the beginning of the object file, which when the object file is executed will cause a lisp system to be invoked and the object file \fIfasl\fPed in. This is known as `autorun' and is described below. .ip \fBS\fP Create an assembler language file only. .br % liszt -S foo .br will create the file assembler language file foo.s and will not attempt to assemble it. If this option is not specified, the assembler language file will be put in the temporary disk area under a automatically generated name based on the lisp compiler's process id. Then if there are no compilation errors, the assembler will be invoked to assemble the file. .ip \fBT\fP Print the assembler language output on the standard output file. This is useful when debugging the compiler. .ip \fBu\fP Run in UCI-Lisp mode. The character syntax is changed to that of UCI-Lisp and a UCI-Lisp compatibility package of macros is read in. .ip \fBw\fP Suppress warning messages. .ip \fBx\fP Create an cross reference file. .br % liszt -x foo .br not only compiles foo into foo.o but also generates the file foo.x\ . The file foo.x is lisp readable and lists for each function all functions which that function could call. The program lxref reads one or more of these ".x" files and produces a human readable cross reference listing. .sh 2 autorun .pp The object file which liszt writes does not contain all the functions necessary to run the lisp program which was compiled. In order to use the object file, a lisp system must be started and the object file .i fasl ed in. When the -r switch is given to liszt, the object file created will contain a small piece of bootstrap code at the beginning, and the object file will be made executable. Now, when the name of the object file is given to the UNIX command interpreter (shell) to run, the bootstrap code at the beginning of the object file will cause a lisp system to be started and the first action the lisp system will take is to .i fasl in the object file which started it. In effect the object file has created an environment in which it can run. .pp Autorun is an alternative to .i dumplisp . The advantage of autorun is that the object file which starts the whole process is typically small, whereas the minimum .i dumplisp ed file is very large (one half megabyte). The disadvantage of autorun is that the file must be .i fasl ed into a lisp each time it is used whereas the file which .i dumplisp creates can be run as is. liszt itself is a .i dumplisp ed file since it is used so often and is large enough that too much time would be wasted .i fasl ing it in each time it was used. The lisp cross reference program, lxref, uses .i autorun since it is a small and rarely used program. .pp In order to have the program .i fasl ed in begin execution (rather than starting a lisp top level), the value of the symbol user-top-level should be set to the name of the function to get control. An example of this is shown next. .Eb \fIwe want to replace the unix date program with one written in lisp.\fP % \fBcat lispdate.l\fP (de\kBfun mydate nil \h'|\nBu'\kA(patom "The date is ") \h'|\nAu'\kB(patom (status ctime)) \h'|\nBu'\kA(terpr) \h'|\nAu'(exit 0)) (se\kAtq user-top-level 'mydate) % \fBliszt -r lispdate\fP Compilation begins with Lisp Compiler 5.2 source: lispdate.l, result: lispdate.o mydate %Note: lispdate.l: Compilation complete %Note: lispdate.l: Time: Real: 0:3, CPU: 0:0.28, GC: 0:0.00 for 0 gcs %Note: lispdate.l: Assembly begins %Note: lispdate.l: Assembly completed successfully 3.0u 2.0s 0:17 29% \fI We change the name to remove the ".o", (this isn't necessary) \fP % \fBmv lispdate.o lispdate\fP \fI Now we test it out \fP % \fBlispdate\fP The date is Sat Aug 1 16:58:33 1981 % .Ee .sh 2 "pure literals" .pp Normally the quoted lisp objects (literals) which appear in functions are treated as constants. Consider this function: .br .ft I (de\kCf foo \h'|\nCu'(lambda nil (cond \kA(\kB(not (eq 'a (car (setq x '(a b))))) \h'|\nBu'(print 'impossible!!)) \h'|\nAu'(t (rplaca x 'd))))) .ft P .br At first glance it seems that the first cond clause will never be true, since the \fIcar\fP of \fI(a\ b)\fP should always be .i a . However if you run this function twice, it will print 'impossible!!' the second time. This is because the following clause modifies the 'constant' list \fI(a\ b)\fP with the \fIrplaca\fP function. Such modification of literal lisp objects can cause programs to behave strangely as the above example shows, but more importantly it can cause garbage collection problems if done to compiled code. When a file is \fIfasl\fPed in, if the symbol $purcopylits is non nil, the literal lisp data is put in 'pure' space, that is it put in space which needn't be looked at by the garabage collector. This reduces the work the garbage collector must do but it is dangerous since if the literals are modified to point to non pure objects, the marker may not mark the non pure objects. If the symbol $purcopylits is nil then the literal lisp data is put in impure space and the compiled code will act like the interpreted code when literal data is modified. The default value for $purcopylits is t. .sh 2 "transfer tables" .pp A transfer table is setup by .i fasl when the object file is loaded in. There is one entry in the transfer table for each function which is called in that object file. The entry for a call to the function .i foo has two parts whose contents are: .ip [1] function address \- This will initially point to the internal function .i qlinker . It may some time in the future point to the function .i foo if certain conditions are satisfied (more on this below). .ip [2] function name \- This is a pointer to the symbol .i foo . This will be used by .i qlinker. .sp 2v .lp When a call is made to the function .i foo the call will actually be made to the address in the transfer table entry and will end up in the .i qlinker function. .i Qlinker will determine that .i foo was the function being called by locating the function name entry in the transfer table\*[\(dg\*]. .(f \*[\(dg\*]\fIQlinker\fP does this by tracing back the call stack until it finds the \fIcalls\fP machine instruction which called it. The address field of the \fIcalls\fP contains the address of the transfer table entry. .)f If the function being called is not compiled then .i qlinker just calls .i funcall to perform the function call. If .i foo is compiled and if \fI(status\ translink)\fP is non nil, then .i qlinker will modify the function address part of the transfer table to point directly to the function .i foo . Finally .i qlinker will call .i foo directly . The next time a call is made to .i foo the call will go directly to .i foo and not through .i qlinker . This will result in a substantial speedup in compiled code to compiled code transfers. A disadvantage is that no debugging information is left on the stack, so .i showstack and .i baktrace are useless. Another disadvantage is that if you redefine a compiled function either through loading in a new version or interactively defining it, then the old version may still be called from compiled code if the fast linking described above has already been done. The solution to these problems is to use \fI(sstatus\ translink\ value)\fP. If value is .ip \fInil\fP All transfer tables will be cleared, i.e. all function addresses will be set to point to .i qlinker . This means that the next time a function is called .i qlinker will be called and will look at the current definition. Also, no fast links will be set up since \fI(status\ translink)\fP will be nil. The end result is that .i showstack and .i baktrace will work and the function definition at the time of call will always be used. .ip \fIon\fP This causes the lisp system to go through all transfer tables and set up fast links wherever possible. This is normally used after you have .i fasl ed in all of your files. Furthermore since \fI(status\ translink)\fP is not nil, .i qlinker will make new fast links if the situation arises (which isn't likely unless you .i fasl in another file). .ip \fIt\fP This or any other value not previously mentioned will just make \fI(status\ translink)\fP be non nil, and as a result fast links will be made by .i qlinker if the called function is compiled. .sh +0 "Fixnum functions" .pp The compiler will generate inline arithmetic code for fixnum only functions. Such functions include \(pl, \(mi, *, /, \\, 1\(pl and 1\-. The code generated will be much faster than using \fIadd\fP, \fIdifference\fP, etc. However it will only work if the arguments to and results of the functions are fixnums. No type checking is done. n. For example .br % liszt -e '(setq foobar "foo string")' foo .br will evaluate the above s-expression. Note that the shedoc/ps2/09.lisp/ch13.n 444 3 12 26655 3662147511 7460 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch13.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: /na/franz/doc/RCS/ch13.n,v 1.1 83/01/31 07:08:37 jkf Exp $ .Lc The\ CMU\ User\ Toplevel\ and\ the\ File\ Package 13 .ch 2 Introduction This documentation was written by Don Cohen, and the functions described below were imported from PDP-10 CMULisp. .sp 1v \fINon CMU users note:\fP this is not the default top level for your Lisp system. In order to start up this top level, you should type \fI(load\ 'cmuenv)\fP. .sh 2 User\ Command\ Input\ Top\ Level \n(ch 1 The top-level is the function that reads what you type, evaluates it and prints the result. The \fInewlisp\fP top-level was inspired by the CMULisp top-level (which was inspired by interlisp) but is much simpler. The top-level is a function (of zero arguments) that can be called by your program. If you prefer another top-level, just redefine the top-level function and type "(reset)" to start running it. The current top-level simply calls the functions tlread, tleval and tlprint to read, evaluate and print. These are supposed to be replaceable by the user. The only one that would make sense to replace is tlprint, which currently uses a function that refuses to go below a certain level and prints "...]" when it finds itself printing a circular list. One might want to prettyprint the results instead. The current top-level numbers the lines that you type to it, and remembers the last n "events" (where n can be set but is defaulted to 25). One can refer to these events in the following "top-level commands": .Eb \fITOPLEVEL COMMAND SUMMARY\fP ?? prints events - both the input and the result. If you just type "??" you will see all of the recorded events. "?? 3" will show only event 3, and "?? 3 6" will show events 3 through 6. redo pretends that you typed the same thing that was typed before. If you type "redo 3" event number 3 is redone. "redo -3" redoes the thing 3 events ago. "redo" is the same as "redo -1". ed calls the editor and then does whatever the editor returns. Thus if you want to do event 5 again except for some small change, you can type "ed 5", make the change and leave the editor. "ed -3" and "ed" are analogous to redo. .Ee Finally, you can get the value of event 7 with the function (valueof 7). The other interesting feature of the top-level is that it makes outermost parentheses superfluous for the most part. This works the same way as in CMULisp, so you can use the help for an explanation. If you're not sure and don't want to risk it you can always just include the parentheses. .Lf top-level .Se .i top-level is the LISP top level function. As well as being the top level function with which the user interacts, it can be called recursively by the user or any function. Thus, the top level can be invoked from inside the editor, break package, or a user function to make its commands available to the user. .No The CMU .Fr top-level uses .i lineread rather than .i read. The difference will not usually be noticeable. The principal thing to be careful about is that input to the function or system being called cannot appear on the same line as the top-level call. For example, typing \fI(editf foo)fP on one line will edit .i foo and evaluate P, not edit .i foo and execute the p command in the editor. .i top-level specially recognizes the following commands: .Lf valueof "'g_eventspec" .Re the value(s) of the event(s) specified by g_eventspec. If a single event is specified, its value will be returned. If more than one event is specified, or an event has more than one subevent (as for .i redo, etc), a list of vlaues will be returned. .sh 2 The\ File\ Package Users typically define functions in lisp and then want to save them for the next session. If you do \fI(changes)\fP, a list of the functions that are newly defined or changed will be printed. When you type \fI(dskouts)\fP, the functions associated with files will be saved in the new versions of those files. In order to associate functions with files you can either add them to the \fIfilefns\fP list of an existing file or create a new file to hold them. This is done with the .i file function. If you type \fI(file new)\fP the system will create a variable called .i newfns. You may add the names of the functions to go into that file to .i newfns. After you do \fI(changes)\fP, the functions which are in no other file are stored in the value of the atom .i changes. To put these all in the new file, \fI(setq newfns (append newfns changes))\fP. Now if you do \fI(changes)\fP, all of the changed functions should be associated with files. In order to save the changes on the files, do \fI(dskouts)\fP. All of the changed files (such as NEW) will be written. To recover the new functions the next time you run .Fr , do \fI(dskin new)\fP. .Eb Script started on Sat Mar 14 11:50:32 1981 $ newlisp Welcome to newlisp... 1.(defun square (x) (* x x)) ; define a new function square 2.(changes) ; See, this function is associated ; with no file. (square)nil 3.(file 'new) ; So let's declare file NEW. new 4.newfns ; It doesn't have anything on it yet. nil 5.(setq newfns '(square)) ; Add the function associated (square) ; with no file to file NEW. 6.(changes) ; CHANGES magically notices this fact. new (square)nil 7.(dskouts) ; We write the file. creating new (new) 8.(dskin new) ; We read it in! (new) 14.Bye $ script done on Sat Mar 14 11:51:48 1981 .Ee .Lf changes "s_flag" .Re Changes computes a list containing an entry for each file which defines atoms that have been marked changed. The entry contains the file name and the changed atoms defined therein. There is also a special entry for changes to atoms which are not defined in any known file. The global variable .i filelst contains the list of "known" files. If no flag is passed this result is printed in human readable form and the value returned is t if there were any changes and nil if not. Otherwise nothing is printed and the computer list is returned. The global variable .i changes contains the atoms which are marked changed but not yet associated with any file. The .i changes function attempts to associate these names with files, and any that are not found are considered to belong to no file. The .i changes property is the means by which changed functions are associated with files. When a file is read in or written out its .i changes property is removed. .Lf dc "s_word s_id [ g_descriptor1 ... ] " .Re .i dc defines comments. It is exceptional in that its behavior is very context dependent. When .i dc is executed from .i dskin it simply records the fact that the comment exists. It is expected that in interactive mode comments will be found via .i getdef - this allows large comments which do not take up space in your core image. When .i dc is executed from the terminal it expects you to type a comment. .i dskout will write out the comments that you define and also copy the comments on the old version of the file, so that the new version will keep the old comments even though they were never actually brought into core. The optional id is a mechanism for distinguishing among several comments associated with the same word. It defaults to nil. However if you define two comments with the same id, the second is considered to be a replacement for the first. The behavior of .i dc is determined by the value of the global variable .i def-comment. .i def-comment contains the name of a function that is run. Its arguments are the word, id and attribute list. .i def-comment is initially .i dc-define. Other functions rebind it to .i dc-help, .i dc-userhelp, and the value of .i dskin-comment. The comment property of an atom is a list of entries, each representing one comment. Atomic entries are assumed to be identifiers of comments on a file but not in core. In-core comments are represented by a list of the id, the attribute list and the comment text. The comment text is an uninterned atom. Comments may be deleted or reordered by editing the comment property. .Lf dskin "l_filenames" .Se READ-EVAL-PRINTs the contents of the given files. This is the function to use to read files created by .i dskout. .i dskin also declares the files that it reads (if a .i file-fns list is defined and the file is otherwise declarable by .i file ), so that changes to it can be recorded. .Lf dskout "s_file1 ..." .Se For each file specified, .i dskout assumes the list named filenameFNS (i.e., the file name, excluding extension, concatenated with .i fns ) contains a list of function names, etc., to be loaded Any previous version of the file will be renamed to have extension ".back". .Lf dskouts "s_file1 ..." .Se applies .i dskout to and prints the name of each s_filei (with no additional arguments, assuming filenameFNS to be a list to be loaded) for which s_file\fIi\fP is either not in \fIfilelst\fP (meaning it is a new file not previously declared by \fIfile\fP or given as an argument to \fIdskin\fP, \fIdskouts\fP, or \fIdskouts\fP) or is in \fIfilelst\fP and has some recorded changes to definitions of atoms in filenameFNS, as recorded by \fImark!changed\fP and noted by changes. If \fIfile\fPi is not specified, \fIfilelst\fP will be used. This is the most common way of using dskouts. Typing \fI(dskouts)\fP will save every file reported by \fI(changes)\fP to have changed definitions. .Lf dv "s_atom g_value" .Eq \fI(setq atom 'value)\fP. .i dv calls .i mark!changed. .Lf file "'s_file" .Se declares its argument to be a file to be used for reporting and saving changes to functions by adding the file name to a list of files, .i filelst. .i file is called for each file argument of .i dskin, .i dskout, and .i dskouts. .Lf file-fns "'s_file" .Re the name of the fileFNS list for its file argument s_file. .Lf getdef "'s_file ['s_i1 ...]" .Se selectively executes definitions for atoms s_i1 ... from the specified file. Any of the words to be defined which end with "@" will be treated as patterns in which the @ matchs any suffix (just like the editor). .i getdef is driven by .i getdeftable (and thus may be programmed). It looks for lines in the file that start with a word in the table. The first character must be a "(" or "[" followed by the word, followed by a space, return or something else that will not be considered as part of the identifier by .i read, e.g., "(" is unacceptable. When one is found the next word is read. If it matches one of the identifiers in the call to .i getdef then the table entry is executed. The table entry is a function of the expression starting in this line. Output from .i dskout is in acceptable format for .i getdef. .i getdef .Re a list of the words which match the ones it looked for, for which it found (but, depending on the table, perhaps did not execute) in the file. .No .i getdeftable is the table that drives .i getdef. It is in the form of an association list. Each element is a dotted pair consisting of the name of a function for which .i getdef searches and a function of one argument to be executed when it is found. .Lf mark!changed "'s_f" .Se records the fact that the definition of s_f has been changed. It is automatically called by .i def, .i defun, .i de, .i df, .i defprop, .i dm, .i dv, and the editor when a definition is altered. new (square)nil 7.(dskouts) ; We write the file. creating new (new) doc/ps2/09.lisp/ch14.n 444 3 12 15406 3662147514 7454 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch14.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: /na/franz/doc/RCS/ch14.n,v 1.1 83/01/31 07:08:43 jkf Exp $ .Lc The\ LISP\ Stepper 14 .sh 2 Simple\ Use\ Of\ Stepping \n(ch 1 .Lf step "s_arg1..." .No The LISP "stepping" package is intended to give the LISP programmer a facility analogous to the Instruction Step mode of running a machine language program. The user interface is through the function (fexpr) step, which sets switches to put the LISP interpreter in and out of "stepping" mode. The most common \fIstep\fP invocations follow. These invocations are usually typed at the top-level, and will take effect immediately (i.e. the next S-expression typed in will be evaluated in stepping mode). .Eb \fI(step t)\fP ; Turn on stepping mode. \fI(step nil)\fP ; Turn off stepping mode. .Ee .Se In stepping mode, the LISP evaluator will print out each S-exp to be evaluated before evaluation, and the returned value after evaluation, calling itself recursively to display the stepped evaluation of each argument, if the S-exp is a function call. In stepping mode, the evaluator will wait after displaying each S-exp before evaluation for a command character from the console. .Eb \fISTEP COMMAND SUMMARY\fP Continue stepping recursively. c Show returned value from this level only, and continue stepping upward. e Only step interpreted code. g Turn off stepping mode. (but continue evaluation without stepping). n Step through evaluations without stopping p Redisplay current form in full (i.e. rebind prinlevel and prinlength to nil) b Get breakpoint q Quit d Call debug .Ee .sh 2 Advanced\ Features .sh 3 Selectively\ Turning\ On\ Stepping. If \fI(step foo1 foo2 ...)\fP is typed at top level, stepping will not commence immediately, but rather when the evaluator first encounters an S-expression whose car is one of \fIfoo1, foo2\fP, etc. This form will then display at the console, and the evaluator will be in stepping mode waiting for a command character. .pp Normally the stepper intercepts calls to \fIfuncall\fP and \fIeval\fP. When \fIfuncall\fP is intercepted, the arguments to the function have already been evaluated but when \fIeval\fP is intercepted, the arguments have not been evaluated. To differentiate the two cases, when printing the form in evaluation, the stepper preceded intercepted calls to .i funcall with "f:". Calls to \fIfuncall\fP are normally caused by compiled lisp code calling other functions, whereas calls to \fIeval\fP usually occur when lisp code is interpreted. To step only calls to eval use: \fI(step e)\fP .sh 3 Stepping\ With\ Breakpoints. .pp For the moment, step is turned off inside of error breaks, but not by the break function. Upon exiting the error, step is reenabled. However, executing \fI(step nil)\fP inside a error loop will turn off stepping globally, i.e. within the error loop, and after return has be made from the loop. .sh 2 Overhead\ of\ Stepping. .pp If stepping mode has been turned off by \fI(step nil)\fP, the execution overhead of having the stepping packing in your LISP is identically nil. If one stops stepping by typing "g", every call to eval incurs a small overhead--several machine instructions, corresponding to the compiled code for a simple cond and one function pushdown. Running with \fI(step foo1 foo2 ...)\fP can be more expensive, since a member of the car of the current form into the list \fI(foo1 foo2 ...)\fP is required at each call to eval. .sh 2 Evalhook\ and\ Funcallhook .pp There are hooks in the .Fr interpreter to permit a user written function to gain control of the evaluation process. These hooks are used by the Step package just described. There are two hooks and they have been strategically placed in the two key functions in the interpreter: .i eval (which all interpreted code goes through) and .i funcall (which all compiled code goes through if \fI(sstatus\ translink\ nil)\fP has been done). The hook in .i eval is compatible with Maclisp, but there is no Maclisp equivalent of the hook in .i funcall . .pp To arm the hooks two forms must be evaluated: \fI(*rset\ t)\fP and \fI(sstatus\ evalhook\ t)\fP. Once that is done, .i eval and .i funcall do a special check when they enter. .pp If .i eval is given a form to evaluate, say \fI(foo\ bar)\fP, and the symbol `evalhook' is non nil, say its value is `ehook', then .i eval will lambda bind the symbols `evalhook' and `funcallhook' to nil and will call ehook passing \fI(foo\ bar)\fP as the argument. It is ehook's responsibility to evaluate \fI(foo\ bar)\fP and return its value. Typically ehook will call the function `evalhook' to evaluate \fI(foo\ bar)\fP. Note that `evalhook' is a symbol whose function binding is a system function described in Chapter 4, and whose value binding, if non nil, is the name of a user written function (or a lambda expression, or a binary object) which will gain control whenever eval is called. `evalhook' is also the name of the .i status tag which must be set for all of this to work. .pp If .i funcall is given a function, say foo, and a set of already evaluated arguments, say barv and bazv, and if the symbol `funcallhook' has a non nil value, say `fhook', then .i funcall will lambda bind `evalhook' and `funcallhook' to nil and will call fhook with arguments barv, bazv and foo. Thus fhook must be a lexpr since it may be given any number of arguments. The function to call, foo in this case, will be the .i last of the arguments given to fhook. It is fhooks responsibility to do the function call and return the value. Typically fhook will call the function .i funcallhook to do the funcall. This is an example of a funcallhook function which just prints the arguments on each entry to funcall and the return value. .Eb -> \fI(defun fhook n (let ((form (cons (arg n) (listify (1- n)))) (retval)) (patom "calling ")(print form)(terpr) (setq retval (funcallhook form 'fhook)) (patom "returns ")(print retval)(terpr) retval))\fP fhook -> \fI(*rset t) (sstatus evalhook t) (sstatus translink nil)\fP -> \fI(setq funcallhook 'fhook)\fP calling (print fhook) ;; now all compiled code is traced fhookreturns nil calling (terpr) returns nil calling (patom "-> ") -> returns "-> " calling (read nil Q00000) \fI(array foo t 10)\fP ;; to test it, we see what happens when returns (array foo t 10) ;; we make an array calling (eval (array foo t 10)) calling (append (10) nil) returns (10) calling (lessp 1 1) returns nil calling (apply times (10)) returns 10 calling (small-segment value 10) calling (boole 4 137 127) returns 128 ... there is plenty more ... .Ee o eval use: \fI(step e)\fP .sh 3 Stepping\ With\ Breakpoints. .pp For the moment, step is turned off inside of error breaks, but not by the break function. Upon exiting the error, step is reenabled. However, executing \fI(step nil)\fP inside a errdoc/ps2/09.lisp/ch15.n 444 3 12 14720 3662147516 7455 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch15.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: /na/franz/doc/RCS/ch15.n,v 1.1 83/01/31 07:08:47 jkf Exp $ .Lc The\ FIXIT\ Debugger 15 .sh 2 Introduction \n(ch 1 FIXIT is a debugging environment for .Fr users doing program development. This documentation and FIXIT were written by David S. Touretzky of Carnegie-Mellon University for MACLisp, and adapted to .Fr by Mitch Marcus of Bell Labs. One of FIXIT's goals is to get the program running again as quickly as possible. The user is assisted in making changes to his functions "on the fly", i.e. in the midst of execution, and then computation is resumed. .pp To enter the debugger type \fI(debug)\fP. The debugger goes into its own read-eval-print loop. Like the top-level, the debugger understands certain special commands. One of these is help, which prints a list of the available commands. The basic idea is that you are somewhere in a stack of calls to eval. The command "bka" is probably the most appropriate for looking at the stack. There are commands to move up and down. If you want to know the value of "x" as of some place in the stack, move to that place and type "x" (or (cdr x) or anything else that you might want to evaluate). All evaluation is done as of the current stack position. You can fix the problem by changing the values of variables, editing functions or expressions in the stack etc. Then you can continue from the current stack position (or anywhere else) with the "redo" command. Or you can simply return the right answer with the "return" command. .pp When it is not immediately obvious why an error has occurred or how the program got itself into its current state, FIXIT comes to the rescue by providing a powerful debugging loop in which the user can: - examine the stack - evaluate expressions in context - enter stepping mode - restart the computation at any point The result is that program errors can be located and fixed extremely rapidly, and with a minimum of frustration. .pp The debugger can only work effectively when extra information is kept about forms in evaluation by the lisp system. Evaluating \fI(*rset\ t)\fP tells the lisp system to maintain this information. If you are debugging compiled code you should also be sure that the compiled code to compiled code linkage tables are unlinked, i.e do \fI(sstatus\ translink\ nil)\fP. .Lf debug "[ s_msg ]" .No Within a program, you may enter a debug loop directly by putting in a call to .i debug where you would normally put a call to .i break. Also, within a break loop you may enter FIXIT by typing .i debug. If an argument is given to DEBUG, it is treated as a message to be printed before the debug loop is entered. Thus you can put \fI(debug |just before loop|)\fP into a program to indicate what part of the program is being debugged. .Eb \fIFIXIT Command Summary\fP TOP go to top of stack (latest expression) BOT go to bottom of stack (first expression) P show current expression (with ellipsis) PP show current expression in full WHERE give current stack position HELP types the abbreviated command summary found in /usr/lisp/doc/fixit.help. H and ? work too. U go up one stack frame U n go up n stack frames U f go up to the next occurrence of function f U n f go up n occurrences of function f UP go up to the next user-written function UP n go up n user-written functions ...the DN and DNFN commands are similar, but go down ...instead of up. OK resume processing; continue after an error or debug loop REDO restart the computation with the current stack frame. The OK command is equivalent to TOP followed by REDO. REDO f restart the computation with the last call to function f. (The stack is searched downward from the current position.) STEP restart the computation at the current stack frame, but first turn on stepping mode. (Assumes Rich stepper is loaded.) RETURN e return from the current position in the computation with the value of expression e. BK.. print a backtrace. There are many backtrace commands, formed by adding suffixes to the BK command. "BK" gives a backtrace showing only user-written functions, and uses ellipsis. The BK command may be suffixed by one or more of the following modifiers: ..F.. show function names instead of expressions ..A.. show all functions/expressions, not just user-written ones ..V.. show variable bindings as well as functions/expressions ..E.. show everything in the expression, i.e. don't use ellipsis ..C.. go no further than the current position on the stack Some of the more useful combinations are BKFV, BKFA, and BKFAV. BK.. n show only n levels of the stack (starting at the top). (BK n counts only user functions; BKA n counts all functions.) BK.. f show stack down to first call of function f BK.. n f show stack down to nth call of function f .Ee .sh 2 Interaction\ with\ \fItrace\fP FIXIT knows about the standard Franz trace package, and tries to make tracing invisible while in the debug loop. However, because of the way .i trace works, it may sometimes be the case that the functions on the stack are really un\fIintern\fPed atoms that have the same name as a traced function. (This only happens when a function is traced WHEREIN another one.) FIXIT will call attention to .i trace's hackery by printing an appropriate tag next to these stack entries. .sh 2 Interaction\ with\ \fIstep\fP The .i step function may be invoked from within FIXIT via the STEP command. FIXIT initially turns off stepping when the debug loop is entered. If you step through a function and get an error, FIXIT will still be invoked normally. At any time during stepping, you may explicitly enter FIXIT via the "D" (debug) command. .sh 2 Multiple\ error\ levels FIXIT will evaluate arbitrary LISP expressions in its debug loop. The evaluation is not done within an .i errset, so, if an error occurs, another invocation of the debugger can be made. When there are multiple errors on the stack, FIXIT displays a barrier symbol between each level that looks something like <------------UDF-->. The UDF in this case stands for UnDefined Function. Thus, the upper level debug loop was invoked by an undefined function error that occurred while in the lower loop. e object file will be made executable. Now, whendoc/ps2/09.lisp/ch16.n 444 3 12 107541 3662147521 7476 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch16.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: /na/franz/doc/RCS/ch16.n,v 1.1 83/01/31 07:08:55 jkf Exp $ .Lc The\ LISP\ Editor 16 .sh 2 The\ Editors \n(ch 1 It is quite possible to use VI, Emacs or other standard editors to edit your lisp programs, and many people do just that. However there is a lisp structure editor which is particularly good for the editing of lisp programs, and operates in a rather different fashion, namely within a lisp environment. application. It is handy to know how to use it for fixing problems without exiting from the lisp system (e.g. from the debugger so you can continue to execute rather than having to start over.) The editor is not quite like the top-level and debugger, in that it expects you to type editor commands to it. It will not evaluate whatever you happen to type. (There is an editor command to evaluate things, though.) The editor is available (assuming your system is set up correctly with a lisp library) by typing (load 'cmufncs) and (load 'cmuedit). The most frequent use of the editor is to change function definitions by starting the editor with one of the commands described in section 16.14. (see \fIeditf\fP), values (\fIeditv\fP), properties (\fIeditp\fP), and expressions (\fIedite\fP). The beginner is advised to start with the following (very basic) commands: \fIok, undo, p, #\fP, under which are explained two different basic commands which start with numbers, and f. This documentation, and the editor, were imported from PDP-10 CMULisp by Don Cohen. PDP-10 CMULisp is based on UCILisp, and the editor itself was derived from an early version of Interlisp. Lars Ericson, the author of this section, has provided this very concise summary. Tutorial examples and implementation details may be found in the Interlisp Reference Manual, where a similar editor is described. .sh 2 Scope\ of\ Attention Attention-changing commands allow you to look at a different part of a Lisp expression you are editing. The sub-structure upon which the editor's attention is centered is called "the current expression". Changing the current expression means shifting attention and not actually modifying any structure. .Fb .fi \fISCOPE OF ATTENTION COMMAND SUMMARY\fP \fIn (n>0) \fP. Makes the nth element of the current expression be the new current expression. \fI-n (n>0)\fP. Makes the nth element from the end of the current expression be the new current expression. \fI0\fP. Makes the next higher expression be the new correct expression. If the intention is to go back to the next higher left parenthesis, use the command !0. \fIup\ \fP. If a p command would cause the editor to type ... before typing the current expression, (the current expression is a tail of the next higher expression) then has no effect; else, up makes the old current expression the first element in the new current expression. \fI!0 \fP. Goes back to the next higher left parenthesis. \fI^\ \fP. Makes the top level expression be the current expression. \fInx\ \fP. Makes the current expression be the next expression. \fI(nx n)\fP equivalent to n nx commands. \fI!nx \fP. Makes current expression be the next expression at a higher level. Goes through any number of right parentheses to get to the next expression. \fI bk\ \fP. Makes the current expression be the previous expression in the next higher expression. \fI(nth n) n>0 \fP. Makes the list starting with the nth element of the current expression be the current expression. \fI(nth $) - generalized nth command.\fP nth locates $, and then backs up to the current level, where the new current expression is the tail whose first element contains, however deeply, the expression that was the terminus of the location operation. \fI:: \fP. (pattern :: . $) e.g., (cond :: return). finds a cond that contains a return, at any depth. \fI(below com x) \fP. The below command is useful for locating a substructure by specifying something it contains. (below cond) will cause the cond clause containing the current expression to become the new current expression. Suppose you are editing a list of lists, and want to find a sublist that contains a foo (at any depth). Then simply executes f foo (below \). \fI(nex x) \fP. same as \fI(below x)\fP followed by nx. For example, if you are deep inside of a selectq clause, you can advance to the next clause with \fI(nex selectq)\fP. \fInex\fP. The atomic form of \fInex\fP is useful if you will be performing repeated executions of \fI(nex x)\fP. By simply marking the chain corresponding to x, you can use \fInex\fP to step through the sublists. .Fe .br .sh 2 Pattern\ Matching\ Commands Many editor commands that search take patterns. A pattern \fIpat\fP matches with x if: .Fb .fi \fIPATTERN SPECIFICATION SUMMARY\fP - \fIpat\fP is \fIeq\fP to x. - \fIpat\fP is &. - \fIpat\fP is a number and equal to x. - if (car \fIpat\fP) is the atom *any*, (cdr \fIpat\fP) is a list of patterns, and \fIpat\fP matches x if and only if one of the patterns on (cdr \fIpat\fP) matches x. - if \fIpat\fP is a literal atom or string, and (nthchar \fIpat\fP -1) is @, then \fIpat\fP matches with any literal atom or string which has the same initial characters as \fIpat\fP, e.g. ver@ matches with verylongatom, as well as "verylongstring". - if (car \fIpat\fP) is the atom --, \fIpat\fP matches x if (a) (cdr \fIpat\fP)=nil, i.e. \fIpat\fP=(--), e.g., (a --) matches (a) (a b c) and (a . b) in other words, -- can match any tail of a list. (b) (cdr \fIpat\fP) matches with some tail of x, e.g. (a -- (&)) will match with (a b c (d)), but not (a b c d), or (a b c (d) e). however, note that (a -- (&) --) will match with (a b c (d) e). in other words, -- will match any interior segment of a list. - if (car \fIpat\fP) is the atom ==, \fIpat\fP matches x if and only if (cdr \fIpat\fP) is \fIeq\fP to x. (this pattern is for use by programs that call the editor as a subroutine, since any non-atomic expression in a command typed in by the user obviously cannot be \fIeq\fP to existing structure.) - otherwise if x is a list, \fIpat\fP matches x if (car \fIpat\fP) matches (car x), and (cdr \fIpat\fP) matches (cdr x). - when searching, the pattern matching routine is called only to match with elements in the structure, unless the pattern begins with :::, in which case cdr of the pattern is matched against tails in the structure. (in this case, the tail does not have to be a proper tail, e.g. (::: a --) will match with the element (a b c) as well as with cdr of (x a b c), since (a b c) is a tail of (a b c).) .Fe .sh 3 Commands\ That\ Search .Fb .fi \fISEARCH COMMAND SUMMARY\fP \fIf pattern \fP. f informs the editor that the next command is to be interpreted as a pattern. If no pattern is given on the same line as the f then the last pattern is used. f pattern means find the next instance of pattern. \fI(f pattern n)\fP. Finds the next instance of pattern. \fI(f pattern t)\fP. similar to f pattern, except, for example, if the current expression is (cond ..), f cond will look for the next cond, but (f cond t) will 'stay here'. \fI(f pattern n) n>0\fP. Finds the nth place that pattern matches. If the current expression is (foo1 foo2 foo3), (f f00@ 3) will find foo3. \fI(f pattern) or (f pattern nil)\fP. only matches with elements at the top level of the current expression. If the current expression is \fI(prog nil (setq x (cond & &)) (cond &) ...)\fP f (cond --) will find the cond inside the setq, whereas (f (cond --)) will find the top level cond, i.e., the second one. \fI(second . $) \fP. same as (lc . $) followed by another (lc . $) except that if the first succeeds and second fails, no change is made to the edit chain. \fI(third . $) \fP. Similar to second. \fI(fs pattern1 ... patternn) \fP. equivalent to f pattern1 followed by f pattern2 ... followed by f pattern n, so that if f pattern m fails, edit chain is left at place pattern m-1 matched. \fI(f= expression x) \fP. Searches for a structure eq to expression. \fI(orf pattern1 ... patternn) \fP. Searches for an expression that is matched by either pattern1 or ... patternn. \fIbf pattern \fP. backwards find. If the current expression is \fI(prog nil (setq x (setq y (list z))) (cond ((setq w --) --)) --)\fP f list followed by bf setq will leave the current expression as (setq y (list z)), as will f cond followed by bf setq \fI(bf pattern t)\fP. backwards find. Search always includes current expression, i.e., starts at end of current expression and works backward, then ascends and backs up, etc. .Fe .sh 4 Location\ Specifications . Many editor commands use a method of specifying position called a location specification. The meta-symbol $ is used to denote a location specification. $ is a list of commands interpreted as described above. $ can also be atomic, in which case it is interpreted as (list $). a location specification is a list of edit commands that are executed in the normal fashion with two exceptions. first, all commands not recognized by the editor are interpreted as though they had been preceded by f. The location specification (cond 2 3) specifies the 3rd element in the first clause of the next cond. the if command and the ## function provide a way of using in location specifications arbitrary predicates applied to elements in the current expression. In insert, delete, replace and change, if $ is nil (empty), the corresponding operation is performed on the current edit chain, i.e. (replace with (car x)) is equivalent to (:(car x)). for added readability, here is also permitted, e.g., (insert (print x) before here) will insert (print x) before the current expression (but not change the edit chain). It is perfectly legal to ascend to insert, replace, or delete. for example (insert (\fIreturn\fP) after ^ prog -1) will go to the top, find the first prog, and insert a (\fIreturn\fP) at its end, and not change the current edit chain. The a, b, and : commands all make special checks in e1 thru em for expressions of the form (## . coms). In this case, the expression used for inserting or replacing is a copy of the current expression after executing coms, a list of edit commands. (insert (## f cond -1 -1) after3) will make a copy of the last form in the last clause of the next cond, and insert it after the third element of the current expression. \fI$\fP. In descriptions of the editor, the meta-symbol $ is used to denote a location specification. $ is a list of commands interpreted as described above. $ can also be atomic. .Fb .fi \fILOCATION COMMAND SUMMARY\fP \fI(lc . $) \fP. Provides a way of explicitly invoking the location operation. (lc cond 2 3) will perform search. \fI(lcl . $) \fP. Same as lc except search is confined to current expression. To find a cond containing a \fIreturn\fP, one might use the location specification (cond (lcl \fIreturn\fP) \) where the \ would reverse the effects of the lcl command, and make the final current expression be the cond. .Fe .sh 3 The\ Edit\ Chain The edit-chain is a list of which the first element is the the one you are now editing ("current expression"), the next element is what would become the current expression if you were to do a 0, etc., until the last element which is the expression that was passed to the editor. .Fb .fi \fIEDIT CHAIN COMMAND SUMMARY\fP \fImark \fP. Adds the current edit chain to the front of the list marklst. \fI_ \fP. Makes the new edit chain be (car marklst). \fI(_ pattern) \fP. Ascends the edit chain looking for a link which matches pattern. for example: \fI__ \fP. Similar to _ but also erases the mark. \fI\\ \fP. Makes the edit chain be the value of unfind. unfind is set to the current edit chain by each command that makes a "big jump", i.e., a command that usually performs more than a single ascent or descent, namely ^, _, __, !nx, all commands that involve a search, e.g., f, lc, ::, below, et al and \ and \p themselves. if the user types f cond, and then f car, \ would take him back to the cond. another \ would take him back to the car, etc. \fI\\p \fP. Restores the edit chain to its state as of the last print operation. If the edit chain has not changed since the last printing, \\p restores it to its state as of the printing before that one. If the user types p followed by 3 2 1 p, \\p will return to the first p, i.e., would be equivalent to 0 0 0. Another \\p would then take him back to the second p. .Fe .sh 2 Printing\ Commands .Fb .fi \fIPRINTING COMMAND SUMMARY\fP \fIp \fP Prints current expression in abbreviated form. (p m) prints mth element of current expression in abbreviated form. (p m n) prints mth element of current expression as though printlev were given a depth of n. (p 0 n) prints current expression as though printlev were given a depth of n. (p cond 3) will work. \fI? \fP. prints the current expression as though printlev were given a depth of 100. \fIpp \fP. pretty-prints the current expression. \fIpp*\fP. is like pp, but forces comments to be shown. .Fe .sh 2 Structure\ Modification\ Commands All structure modification commands are undoable. See \fIundo\fP. .Fb .fi \fISTRUCTURE MODIFICATION COMMAND SUMMARY\fP \fI# [editor commands]\fP (n) n>1 deletes the corresponding element from the current expression. \fI(n e1 ... em) n,m>1\fP replaces the nth element in the current expression with e1 ... em. \fI(-n e1 ... em) n,m>1\fP inserts e1 ... em before the n element in the current expression. \fI(n e1 ... em)\fP (the letter "n" for "next" or "nconc", not a number) m>1 attaches e1 ... em at the end of the current expression. \fI(a e1 ... em) \fP. inserts e1 ... em after the current expression (or after its first element if it is a tail). \fI(b e1 ... em) \fP. inserts e1 ... em before the current expression. to insert foo before the last element in the current expression, perform -1 and then (b foo). \fI(: e1 ... em) \fP. replaces the current expression by e1 ... em. If the current expression is a tail then replace its first element. \fIdelete or (:) \fP. deletes the current expression, or if the current expression is a tail, deletes its first element. \fI(delete . $)\fP. does a (lc . $) followed by delete. current edit chain is not changed. \fI(insert e1 ... em before . $) \fP. similar to (lc. $) followed by (b e1 ... em). \fI(insert e1 ... em after . $)\fP. similar to insert before except uses a instead of b. \fI(insert e1 ... em for . $)\fP. similar to insert before except uses : for b. \fI(replace $ with e1 ... em) \fP. here $ is the segment of the command between replace and with. \fI(change $ to e1 ... em) \fP. same as replace with. .Fe .sh 2 Extraction\ and\ Embedding\ Commands .Fb .fi \fIEXTRACTION AND EMBEDDING COMMAND SUMMARY\fP \fI(xtr . $) \fP. replaces the original current expression with the expression that is current after performing (lcl . $). \fI(mbd x) \fP. x is a list, substitutes the current expression for all instances of the atom * in x, and replaces the current expression with the result of that substitution. (mbd x) : x atomic, same as (mbd (x *)). \fI(extract $1 from $2) \fP. extract is an editor command which replaces the current expression with one of its subexpressions (from any depth). ($1 is the segment between extract and from.) example: if the current expression is (print (cond ((null x) y) (t z))) then following (extract y from cond), the current expression will be (print y). (extract 2 -1 from cond), (extract y from 2), (extract 2 -1 from 2) will all produce the same result. \fI(embed $ in . x) \fP. embed replaces the current expression with a new expression which contains it as a subexpression. ($ is the segment between embed and in.) example: (embed print in setq x), (embed 3 2 in \fIreturn\fP), (embed cond 3 1 in (or * (null x))). .Fe .sh 2 Move\ and\ Copy\ Commands .Fb .fi \fIMOVE AND COPY COMMAND SUMMARY\fP \fI(move $1 to com . $2) \fP. ($1 is the segment between move and to.) where com is before, after, or the name of a list command, e.g., :, n, etc. If $2 is nil, or (here), the current position specifies where the operation is to take place. If $1 is nil, the move command allows the user to specify some place the current expression is to be moved to. if the current expression is (a b d c), (move 2 to after 4) will make the new current expression be (a c d b). \fI(mv com . $) \fP. is the same as (move here to com . $). \fI(copy $1 to com . $2)\fP is like move except that the source expression is not deleted. \fI(cp com . $)\fP. is like mv except that the source expression is not deleted. .Fe .sh 2 Parentheses\ Moving\ Commands The commands presented in this section permit modification of the list structure itself, as opposed to modifying components thereof. their effect can be described as inserting or removing a single left or right parenthesis, or pair of left and right parentheses. .Fb .fi \fIPARENTHESES MOVING COMMAND SUMMARY\fP \fI(bi n m) \fP. both in. inserts parentheses before the nth element and after the mth element in the current expression. example: if the current expression is (a b (c d e) f g), then (bi 2 4) will modify it to be (a (b (c d e) f) g). (bi n) : same as (bi n n). example: if the current expression is (a b (c d e) f g), then (bi -2) will modify it to be (a b (c d e) (f) g). \fI(bo n) \fP. both out. removes both parentheses from the nth element. example: if the current expression is (a b (c d e) f g), then (bo d) will modify it to be (a b c d e f g). \fI(li n) \fP. left in. inserts a left parenthesis before the nth element (and a matching right parenthesis at the end of the current expression). example: if the current expression is (a b (c d e) f g), then (li 2) will modify it to be (a (b (c d e) f g)). \fI(lo n) \fP. left out. removes a left parenthesis from the nth element. all elements following the nth element are deleted. example: if the current expression is (a b (c d e) f g), then (lo 3) will modify it to be (a b c d e). \fI(ri n m) \fP. right in. move the right parenthesis at the end of the nth element in to after the mth element. inserts a right parenthesis after the mth element of the nth element. The rest of the nth element is brought up to the level of the current expression. example: if the current expression is (a (b c d e) f g), (ri 2 2) will modify it to be (a (b c) d e f g). \fI(ro n) \fP. right out. move the right parenthesis at the end of the nth element out to the end of the current expression. removes the right parenthesis from the nth element, moving it to the end of the current expression. all elements following the nth element are moved inside of the nth element. example: if the current expression is (a b (c d e) f g), (ro 3) will modify it to be (a b (c d e f g)). \fI(r x y) \fP replaces all instances of x by y in the current expression, e.g., (r caadr cadar). x can be the s-expression (or atom) to be substituted for, or can be a pattern which specifies that s-expression (or atom). \fI(sw n m) \fP switches the nth and mth elements of the current expression. for example, if the current expression is (list (cons (car x) (car y)) (cons (cdr y))), (sw 2 3) will modify it to be (list (cons (cdr x) (cdr y)) (cons (car x) (car y))). (sw car cdr) would produce the same result. .Fe .sh 3 Using\ to\ and\ thru to, thru, extract, embed, delete, replace, and move can be made to operate on several contiguous elements, i.e., a segment of a list, by using the to or thru command in their respective location specifications. thru and to are intended to be used in conjunction with extract, embed, delete, replace, and move. to and thru can also be used directly with xtr (which takes after a location specification), as in (xtr (2 thru 4)) (from the current expression). .Fb .fi \fITO AND THRU COMMAND SUMMARY\fP \fI($1 to $2) \fP. same as thru except last element not included. \fI($1 to)\fP. same as ($1 thru -1) \fI($1 thru $2) \fP. If the current expression is (a (b (c d) (e) (f g h) i) j k), following (c thru g), the current expression will be ((c d) (e) (f g h)). If both $1 and $2 are numbers, and $2 is greater than $1, then $2 counts from the beginning of the current expression, the same as $1. in other words, if the current expression is (a b c d e f g), (3 thru 4) means (c thru d), not (c thru f). in this case, the corresponding bi command is (bi 1 $2-$1+1). \fI($1 thru)\fP. same as \fI($1 thru -1)\fP. .Fe .sh 2 Undoing\ Commands each command that causes structure modification automatically adds an entry to the front of undolst containing the information required to restore all pointers that were changed by the command. The undo command undoes the last, i.e., most recent such command. .Fb .fi \fIUNDO COMMAND SUMMARY\fP \fIundo \fP. the undo command undoes most recent, structure modification command that has not yet been undone, and prints the name of that command, e.g., mbd undone. The edit chain is then exactly what it was before the 'undone' command had been performed. \fI!undo \fP. undoes all modifications performed during this editing session, i.e., this call to the editor. \fIunblock \fP. removes an undo-block. If executed at a non-blocked state, i.e., if undo or !undo could operate, types not blocked. \fItest \fP. adds an undo-block at the front of undolst. note that test together with !undo provide a 'tentative' mode for editing, i.e., the user can perform a number of changes, and then undo all of them with a single !undo command. \fIundolst [value]\fP. each editor command that causes structure modification automatically adds an entry to the front of undolst containing the information required to restore all pointers that were changed by the command. \fI?? \fP prints the entries on undolst. The entries are listed most recent entry first. .Fe .sh 2 \Commands\ that\ Evaluate .Fb .fi \fIEVALUATION COMMAND SUMMARY\fP \fIe \fP. only when typed in, (i.e., (insert d before e) will treat e as a pattern) causes the editor to call the lisp interpreter giving it the next input as argument. \fI(e x)\fP evaluates x, and prints the result. (e x t) same as (e x) but does not print. \fI(i c x1 ... xn) \fP same as (c y1 ... yn) where yi=(eval xi). example: (i 3 (cdr foo)) will replace the 3rd element of the current expression with the cdr of the value of foo. (i n foo (car fie)) will attach the value of foo and car of the value of fie to the end of the current expression. (i f= foo t) will search for an expression eq to the value of foo. If c is not an atom, it is evaluated as well. \fI(coms x1 ... xn) \fP. each xi is evaluated and its value executed as a command. The i command is not very convenient for computing an entire edit command for execution, since it computes the command name and its arguments separately. also, the i command cannot be used to compute an atomic command. The coms and comsq commands provide more general ways of computing commands. (coms (cond (x (list 1 x)))) will replace the first element of the current expression with the value of x if non-nil, otherwise do nothing. (nil as a command is a nop.) \fI(comsq com1 ... comn) \fP. executes com1 ... comn. comsq is mainly useful in conjunction with the coms command. for example, suppose the user wishes to compute an entire list of commands for evaluation, as opposed to computing each command one at a time as does the coms command. he would then write (coms (cons (quote comsq) x)) where x computed the list of commands, e.g., (coms (cons (quote comsq) (get foo (quote commands)))) .Fe .sh 2 Commands\ that\ Test .Fb .fi \fITESTING COMMAND SUMMARY\fP \fI(if x) \fP generates an error unless the value of (eval x) is non-nil, i.e., if (eval x) causes an error or (eval x)=nil, if will cause an error. (if x coms1 coms2) if (eval x) is non-nil, execute coms1; if (eval x) causes an error or is equal to nil, execute coms2. (if x coms1) if (eval x) is non-nil, execute coms1; otherwise generate an error. \fI(lp . coms) \fP. repeatedly executes coms, a list of commands, until an error occurs. (lp f print (n t)) will attach a t at the end of every print expression. (lp f print (if (## 3) nil ((n t)))) will attach a t at the end of each print expression which does not already have a second argument. (i.e. the form (## 3) will cause an error if the edit command 3 causes an error, thereby selecting ((n t)) as the list of commands to be executed. The if could also be written as (if (cddr (##)) nil ((n t))).). \fI(lpq . coms) \fP same as lp but does not print n occurrences. \fI(orr coms1 ... comsn) \fP. orr begins by executing coms1, a list of commands. If no error occurs, orr is finished. otherwise, orr restores the edit chain to its original value, and continues by executing coms2, etc. If none of the command lists execute without errors, i.e., the orr "drops off the end", orr generates an error. otherwise, the edit chain is left as of the completion of the first command list which executes without error. .Fe .sh 2 Editor\ Macros Many of the more sophisticated branching commands in the editor, such as orr, if, etc., are most often used in conjunction with edit macros. The macro feature permits the user to define new commands and thereby expand the editor's repertoire. (however, built in commands always take precedence over macros, i.e., the editor's repertoire can be expanded, but not modified.) macros are defined by using the m command. \fI(m c . coms) \fP for c an atom, m defines c as an atomic command. (if a macro is redefined, its new definition replaces its old.) executing c is then the same as executing the list of commands coms. macros can also define list commands, i.e., commands that take arguments. (m (c) (arg[1] ... arg[n]) . coms) c an atom. m defines c as a list command. executing (c e1 ... en) is then performed by substituting e1 for arg[1], ... en for arg[n] throughout coms, and then executing coms. a list command can be defined via a macro so as to take a fixed or indefinite number of 'arguments'. The form given above specified a macro with a fixed number of arguments, as indicated by its argument list. if the 'argument list' is atomic, the command takes an indefinite number of arguments. (m (c) args . coms) c, args both atoms, defines c as a list command. executing (c e1 ... en) is performed by substituting (e1 ... en), i.e., cdr of the command, for args throughout coms, and then executing coms. (m bp bk up p) will define bp as an atomic command which does three things, a bk, an up, and a p. note that macros can use commands defined by macros as well as built in commands in their definitions. for example, suppose z is defined by (m z -1 (if (null (##)) nil (p))), i.e. z does a -1, and then if the current expression is not nil, a p. now we can define zz by (m zz -1 z), and zzz by (m zzz -1 -1 z) or (m zzz -1 zz). we could define a more general bp by (m (bp) (n) (bk n) up p). (bp 3) would perform (bk 3), followed by an up, followed by a p. The command second can be defined as a macro by (m (2nd) x (orr ((lc . x) (lc . x)))). Note that for all editor commands, 'built in' commands as well as commands defined by macros, atomic definitions and list definitions are completely independent. in other words, the existence of an atomic definition for c in no way affects the treatment of c when it appears as car of a list command, and the existence of a list definition for c in no way affects the treatment of c when it appears as an atom. in particular, c can be used as the name of either an atomic command, or a list command, or both. in the latter case, two entirely different definitions can be used. note also that once c is defined as an atomic command via a macro definition, it will not be searched for when used in a location specification, unless c is preceded by an f. (insert -- before bp) would not search for bp, but instead perform a bk, an up, and a p, and then do the insertion. The corresponding also holds true for list commands. \fI(bind . coms) \fP bind is an edit command which is useful mainly in macros. it binds three dummy variables #1, #2, #3, (initialized to nil), and then executes the edit commands coms. note that these bindings are only in effect while the commands are being executed, and that bind can be used recursively; it will rebind #1, #2, and #3 each time it is invoked. \fIusermacros [value]\fP. this variable contains the users editing macros . if you want to save your macros then you should save usermacros. you should probably also save editcomsl. \fIeditcomsl [value]\fP. editcomsl is the list of "list commands" recognized by the editor. (these are the ones of the form (command arg1 arg2 ...).) .sh 2 Miscellaneous\ Editor\ Commands .Fb .fi \fIMISCELLANEOUS EDITOR COMMAND SUMMARY\fP \fIok \fP. Exits from the editor. \fInil \fP. Unless preceded by f or bf, is always a null operation. \fItty: \fP. Calls the editor recursively. The user can then type in commands, and have them executed. The tty: command is completed when the user exits from the lower editor (with ok or stop). the tty: command is extremely useful. it enables the user to set up a complex operation, and perform interactive attention-changing commands part way through it. for example the command (move 3 to after cond 3 p tty:) allows the user to interact, in effect, within the move command. he can verify for himself that the correct location has been found, or complete the specification "by hand". in effect, tty: says "I'll tell you what you should do when you get there." \fIstop \fP. exits from the editor with an error. mainly for use in conjunction with tty: commands that the user wants to abort. since all of the commands in the editor are errset protected, the user must exit from the editor via a command. stop provides a way of distinguishing between a successful and unsuccessful (from the user's standpoint) editing session. \fItl \fP. tl calls (top-level). to return to the editor just use the \fIreturn\fP top-level command. \fIrepack \fP. permits the 'editing' of an atom or string. \fI(repack $)\fP does (lc . $) followed by repack, e.g. (repack this@). \fI(makefn form args n m) \fP. makes (car form) an expr with the nth through mth elements of the current expression with each occurrence of an element of (cdr form) replaced by the corresponding element of args. The nth through mth elements are replaced by form. \fI(makefn form args n)\fP. same as (makefn form args n n). \fI(s var . $) \fP. sets var (using setq) to the current expression after performing (lc . $). (s foo) will set foo to the current expression, (s foo -1 1) will set foo to the first element in the last element of the current expression. .Fe .sh 2 Editor\ Functions .Lf editf "s_x1 ..." .Se edits a function. s_x1 is the name of the function, any additional arguments are an optional list of commands. .Re s_x1. .No if s_x1 is not an editable function, editf generates an fn not editable error. .Lf edite "l_expr l_coms s_atm)" edits an expression. its value is the last element of (editl (list l_expr) l_coms s_atm nil nil). .Lf editracefn "s_com" is available to help the user debug complex edit macros, or subroutine calls to the editor. editracefn is to be defined by the user. whenever the value of editracefn is non-nil, the editor calls the function editracefn before executing each command (at any level), giving it that command as its argument. editracefn is initially equal to nil, and undefined. .Lf editv "s_var [ g_com1 ... ]" .Se similar to editf, for editing values. editv sets the variable to the value returned. .Re the name of the variable whose value was edited. .Lf editp "s_x" .Se similar to editf for editing property lists. used if x is nil. .Re the atom whose property list was edited. .Lf editl "coms atm marklst mess" .Se editl is the editor. its first argument is the edit chain, and its value is an edit chain, namely the value of l at the time editl is exited. (l is a special variable, and so can be examined or set by edit commands. ^ is equivalent to (e (setq l(last l)) t).) coms is an optional list of commands. for interactive editing, coms is nil. in this case, editl types edit and then waits for input from the teletype. (if mess is not nil editl types it instead of edit. for example, the tty: command is essentially (setq l (editl l nil nil nil (quote tty:))).) exit occurs only via an ok, stop, or save command. If coms is not nil, no message is typed, and each member of coms is treated as a command and executed. If an error occurs in the execution of one of the commands, no error message is printed , the rest of the commands are ignored, and editl exits with an error, i.e., the effect is the same as though a stop command had been executed. If all commands execute successfully, editl returns the current value of l. marklst is the list of marks. on calls from editf, atm is the name of the function being edited; on calls from editv, the name of the variable, and calls from editp, the atom of which some property of its property list is being edited. The property list of atm is used by the save command for saving the state of the edit. save will not save anything if atm=nil i.e., when editing arbitrary expressions via edite or editl directly. .Lf editfns "s_x [ g_coms1 ... ]" fsubr function, used to perform the same editing operations on several functions. editfns maps down the list of functions, prints the name of each function, and calls the editor (via editf) on that function. .Ex editfns foofns (r fie fum)) will change every fie to fum in each of the functions on foofns. .No the call to the editor is errset protected, so that if the editing of one function causes an error, editfns will proceed to the next function. in the above example, if one of the functions did not contain a fie, the r command would cause an error, but editing would continue with the next function. The value of editfns is nil. .Lf edit4e "pat y" .Se is the pattern match routine. .Re t if pat matches y. see edit-match for definition of 'match'. .No before each search operation in the editor begins, the entire pattern is scanned for atoms or strings that end in at-signs. These are replaced by patterns of the form (cons (quote /@) (explodec atom)). from the standpoint of edit4e, pattern type 5, atoms or strings ending in at-signs, is really "if car[pat] is the atom @ (at-sign), pat will match with any literal atom or string whose initial character codes (up to the @) are the same as those in cdr[pat]." if the user wishes to call edit4e directly, he must therefore convert any patterns which contain atoms or strings ending in at-signs to the form recognized by edit4e. this can be done via the function editfpat. .Lf editfpat "pat flg" makes a copy of pat with all patterns of type 5 (see edit-match) converted to the form expected by edit4e. flg should be passed as nil (flg=t is for internal use by the editor). .Lf editfindp "x pat flg" .No Allows a program to use the edit find command as a pure predicate from outside the editor. x is an expression, pat a pattern. The value of editfindp is t if the command f pat would succeed, nil otherwise. editfindp calls editfpat to convert pat to the form expected by edit4e, unless flg=t. if the program is applying editfindp to several different expressions using the same pattern, it will be more efficient to call editfpat once, and then call editfindp with the converted pattern and flg=t. .Lf ## "g_com1 ..." .Re what the current expression would be after executing the edit commands com1 ... starting from the present edit chain. generates an error if any of comi cause errors. The current edit chain is never changed. example: (i r (quote x) (## (cons ..z))) replaces all x's in the current expression by the first cons containing a z. r arg[n] throughout coms, and then executing coms. a list command can be defined via a macro so as to take a fixed or indefinite number of 'arguments'doc/ps2/09.lisp/ch17.n 444 3 12 10130 3662147522 7443 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch17.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: ch17.n,v 40.1 84/08/08 21:36:08 layer Exp $ ." (c) Copyright 1984, Franz Inc., Berkeley California .Lc Hash\ Tables 17 .sh 2 Overview \n(ch 1 .pp A hash table is an object that can efficiently map a given object to another. Each hash table is a collection of entries, each of which associates a unique \fIkey\fP with a \fIvalue\fP. There are elemental functions to add, delete, and find entries based on a particular key. Finding a value in a hash table is relatively fast compared to looking up values in, for example, an assoc list or property list. .pp Adding a key to a hash table modifies the hash table, and so it is a descructive operation. .pp There are two different kinds of hash tables: those that use the function \fIequal\fP for the comparing of keys, and those that use \fIeq\fP, the default. If a key is "eq" to another object, then a match is assumed. Likewise with "equal". .sh 2 Functions .Lf makeht "'x_size ['s_test]" .Re A hash table of x_size hash buckets. If present, s_test is used as the test to compare keys in the hash table, the default being \fBeq\fP. \fIEqual\fP might be used to create a hash table where the keys are to be lists (or any lisp object). .No At this time, hash tables are implemented on top of vectors. .Lf hash-table-p "'H_arg" .Re t if H_arg is a hash table. .No Since hash tables are really vectors, the lisp type of a hash table is a vector, so that given a vector, this function will return t. .Lf gethash "'g_key 'H_htable ['g_default]" .Re the value associated the key g_key in hash table H_htable. If there is not an entry given by the key and g_default is specified, then g_default is returned, otherwise, a symbol that is unbound is returned. This is so that \fBnil\fP can be a associated with a key. .No \fIsetf\fP may be used to set the value assocaited with a key. .Lf remhash "'g_key 'H_htable" .Re t if there was an entry for g_key in the hash table H_htable, nil otherwise. In the case of a match, the entry and associated object are removed from the hash table. .Lf maphash "'u_func 'H_htable" .Re nil. .No The function u_func is applied to every element in the hash table H_htable. The function is called with two arguments: the key and value of an element. The mapped function should not add or delete object from the table because the results would be unpredicable. .Lf clrhash "'H_htable" .Re the hash table cleared of all entries. .Lf hash-table-count "'H_htable" .Re the number of entries in H_htable. Given a new hash table with no entries, this function returns zero. .Eb ; make a vanilla hash table using "eq" to compare items... \-> (setq black-box (makeht 20)) hash-table[26] \-> (hash-table-p black-box) t \-> (hash-table-count black-box) 0 \-> (setf (gethash 'key black-box) '(the value associated with the key)) key \-> (gethash 'key black-box) (the value associated with the key) \-> (hash-table-count black-box) 1 \-> (addhash 'composer black-box 'franz) composer \-> (gethash 'composer black-box) franz \-> (maphash '(lambda (key val) (msg "key " key " value " val N)) black-box) key composer value franz key key value (the value associated with the key) nil \-> (clrhash black-box) hash-table[26] \-> (hash-table-count black-box) 0 \-> (maphash '(lambda (key val) (msg "key " key " value " val N)) black-box) nil ; here is an example using "equal" as the comparator \-> (setq ht (makeht 10 'equal)) hash-table[16] \-> (setf (gethash '(this is a key) ht) '(and this is the value)) (this is a key) \-> (gethash '(this is a key) ht) (and this is the value) ; the reader makes a new list each time you type it... \-> (setq x '(this is a key)) (this is a key) \-> (setq y '(this is a key)) (this is a key) ; so these two lists are really different lists that compare "equal" ; not "eq" \-> (eq x y) nil ; but since we are using "equal" to compare keys, we are OK... \-> (gethash x ht) (and this is the value) \-> (gethash y ht) (and this is the value) .Ee ed. Likewise with "equal". .sh 2 Functions .Lf makeht "'x_size ['s_test]" .Re A hash table of x_size hash buckets. If present, s_test is used as the test to compare keys in the hash table, the default being \fBeq\fP. \fIEqual\fP might be used to create a hash table where the keys are to be lists (or any lisp object). .No At this time, hash tables are implemented on top of vectors. .Lf hash-table-p "'H_arg" .Re t if H_ardoc/ps2/09.lisp/ch2.n 444 3 12 123125 3662146572 7412 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch2.n 6.2 (Berkeley) 5/14/86 .\" .\" $Header: ch2.n,v 1.7 83/07/30 14:42:38 layer Exp $ .Lc Data\ Structure\ Access 2 .pp The following functions allow one to create and manipulate the various types of lisp data structures. Refer to \(sc1.2 for details of the data structures known to .Fr . .sh 2 Lists \n(ch 1 .pp The following functions exist for the creation and manipulating of lists. Lists are composed of a linked list of objects called either 'list cells', 'cons cells' or 'dtpr cells'. Lists are normally terminated with the special symbol .b nil . .b nil is both a symbol and a representation for the empty list (). .sh 3 list\ creation .Lf cons "'g_arg1 'g_arg2" .Re a new list cell whose car is g_arg1 and whose cdr is g_arg2. .Lf xcons "'g_arg1 'g_arg2" .Eq \fI(cons 'g_arg2 'g_arg1)\fP .Lf ncons "'g_arg" .Eq \fI(cons 'g_arg nil)\fP .Lf list "['g_arg1 ... ]" .Re a list whose elements are the g_arg\fIi\fP. .Lf append "'l_arg1 'l_arg2" .Re a list containing the elements of l_arg1 followed by l_arg2. .No To generate the result, the top level list cells of l_arg1 are duplicated and the cdr of the last list cell is set to point to l_arg2. Thus this is an expensive operation if l_arg1 is large. See the descriptions of .i nconc and .i tconc for cheaper ways of doing the .i append if the list l_arg1 can be altered. .Lf append1 "'l_arg1 'g_arg2" .Re a list like l_arg1 with g_arg2 as the last element. .No this is equivalent to (append 'l_arg1 (list 'g_arg2)). .Eb ; A common mistake is using append to add one element to the end of a list \-> \fI(append '(a b c d) 'e)\fP (a b c d . e) ; The user intended to say: \-> \fI(append '(a b c d) '(e)) (a b c d e) ; better is append1 \-> \fI(append1 '(a b c d) 'e)\fP (a b c d e) .Ee .Lf quote! "[g_qform\fIi\fP] ...[! 'g_eform\fIi\fP] ... [!! 'l_form\fIi\fP] ..." .Re The list resulting from the splicing and insertion process described below. .No .i quote! is the complement of the .i list function. .i list forms a list by evaluating each for in the argument list; evaluation is suppressed if the form is \fIquote\fPed. In .i quote!, each form is implicitly \fIquote\fPed. To be evaluated, a form must be preceded by one of the evaluate operations ! and !!. ! g_eform evaluates g_form and the value is inserted in the place of the call; !! l_form evaluates l_form and the value is spliced into the place of the call. .br .sp `Splicing in' means that the parentheses surrounding the list are removed as the example below shows. Use of the evaluate operators can occur at any level in a form argument. .br .sp Another way to get the effect of the \fIquote!\fP function is to use the backquote character macro (see \(sc 8.3.3). .Eb \fI(quote! cons ! (cons 1 2) 3) = (cons (1 . 2) 3)\fP \fI(quote! 1 !! (list 2 3 4) 5) = (1 2 3 4 5)\fP \fI(setq quoted 'evaled)(quote! ! ((I am ! quoted))) = ((I am evaled))\fP \fI(quote! try ! '(this ! one)) = (try (this ! one))\fP .Ee .Lf bignum-to-list "'b_arg" .Re A list of the fixnums which are used to represent the bignum. .No the inverse of this function is .i list-to-bignum. .Lf list-to-bignum "'l_ints" .Wh l_ints is a list of fixnums. .Re a bignum constructed of the given fixnums. .No the inverse of this function is .i bignum-to-list. .sh 3 list\ predicates .Lf dtpr "'g_arg" .Re t iff g_arg is a list cell. .No that (dtpr '()) is nil. The name \fBdtpr\fP is a contraction for ``dotted pair''. .Lf listp "'g_arg" .Re t iff g_arg is a list object or nil. .Lf tailp "'l_x 'l_y" .Re l_x, if a list cell .i eq to l_x is found by .i cdr ing down l_y zero or more times, nil otherwise. .Eb \-> \fI(setq x '(a b c d) y (cddr x))\fP (c d) \-> \fI(and (dtpr x) (listp x))\fP ; x and y are dtprs and lists t \-> \fI(dtpr '())\fP ; () is the same as nil and is not a dtpr nil \-> \fI(listp '())\fP ; however it is a list t \-> \fI(tailp y x)\fP (c d) .Ee .Lf length "'l_arg" .Re the number of elements in the top level of list l_arg. .sh 3 list\ accessing .Lf car "'l_arg" .Lx cdr "'l_arg" .Re the appropriate part of .i cons cell. (\fIcar\fP (\fIcons\fP x y)) is always x, (\fIcdr\fP (\fIcons\fP x y)) is always y. In .Fr , the cdr portion is located first in memory. This is hardly noticeable, and we mention it primarily as a curiosity. .Lf c\.\.r "'lh_arg" .Wh the .. represents any positive number of \fBa\fP's and \fBd\fP's. .Re the result of accessing the list structure in the way determined by the function name. The \fBa\fP's and \fBd\fP's are read from right to left, a .b d directing the access down the cdr part of the list cell and an .b a down the car part. .No lh_arg may also be nil, and it is guaranteed that the car and cdr of nil is nil. If lh_arg is a hunk, then \fI(car\ 'lh_arg)\fP is the same as \fI(cxr\ 1\ 'lh_arg)\fP and \fI(cdr\ 'lh_arg)\fP is the same as \fI(cxr\ 0\ 'lh_arg)\fP. .br It is generally hard to read and understand the context of functions with large strings of .b a 's and .b d 's, but these functions are supported by rapid accessing and open-compiling (see Chapter 12). .Lf nth "'x_index 'l_list" .Re the nth element of l_list, assuming zero-based index. Thus (nth 0 l_list) is the same as (car l_list). .i nth is both a function, and a compiler macro, so that more efficient code might be generated than for .i nthelem (described below). .No If x_arg1 is non-positive or greater than the length of the list, nil is returned. .Lf nthcdr "'x_index 'l_list" .Re the result of \fIcdr\fPing down the list l_list x_index times. .No If x_index is less than 0, then \fI(cons\ nil\ 'l_list)\fP is returned. .Lf nthelem "'x_arg1 'l_arg2" .Re The x_arg1'\fIst\fP element of the list l_arg2. .No This function comes from the PDP-11 Lisp system. .Lf last "'l_arg" .Re the last list cell in the list l_arg. .Ex \fIlast\fP does NOT return the last element of a list! .br \fI(last '(a b))\fP = (b) .Lf ldiff "'l_x 'l_y" .Re a list of all elements in l_x but not in l_y , i.e., the list difference of l_x and l_y. .No l_y must be a tail of l_x, i.e., .i eq to the result of applying some number of \fIcdr\fP's to l_x. Note that the value of \fIldiff\fP is always new list structure unless l_y is nil, in which case \fI(ldiff l_x nil)\fP is l_x itself. If l_y is not a tail of l_x, \fIldiff\fP generates an error. .Ex \fI(ldiff 'l_x (member 'g_foo 'l_x))\fP gives all elements in l_x up to the first g_foo. .sh 3 list\ manipulation .Lf rplaca "'lh_arg1 'g_arg2" .Re the modified lh_arg1. .Se the car of lh_arg1 is set to g_arg2. If lh_arg1 is a hunk then the second element of the hunk is set to g_arg2. .Lf rplacd "'lh_arg1 'g_arg2" .Re the modified lh_arg1. .Se the cdr of lh_arg2 is set to g_arg2. If lh_arg1 is a hunk then the first element of the hunk is set to g_arg2. .Lf attach "'g_x 'l_l" .Re l_l whose .i car is now g_x, whose .i cadr is the original \fI(car\ l_l)\fP, and whose .i cddr is the original \fI(cdr\ l_l)\fP. .No what happens is that g_x is added to the beginning of list l_l yet maintaining the same list cell at the beginning of the list. .Lf delete "'g_val 'l_list ['x_count]" .Re the result of splicing g_val from the top level of l_list no more than x_count times. .No x_count defaults to a very large number, thus if x_count is not given, all occurrences of g_val are removed from the top level of l_list. g_val is compared with successive .i car 's of l_list using the function .i equal . .Se l_list is modified using rplacd, no new list cells are used. .Lf delq "'g_val 'l_list ['x_count]" .Lx dremove "'g_val 'l_list ['x_count]" .Re the result of splicing g_val from the top level of l_list no more than x_count times. .No .i delq (and .i dremove ) are the same as .i delete except that .i eq is used for comparison instead of .i equal . .Eb ; note that you should use the value returned by \fIdelete\fP or \fIdelq\fP ; and not assume that g_val will always show the deletions. ; For example \-> \fI(setq test '(a b c a d e))\fP (a b c a d e) \-> \fI(delete 'a test)\fP (b c d e) ; the value returned is what we would expect \-> \fItest\fP (a b c d e) ; but test still has the first a in the list! .Ee .Lf remq "'g_x 'l_l ['x_count]" .Lx remove "'g_x 'l_l" .Re a .i copy of l_l with all top level elements .i equal to g_x removed. .i remq uses .i eq instead of .i equal for comparisons. .No remove does not modify its arguments like .i delete , and .i delq do. .Lf insert "'g_object 'l_list 'u_comparefn 'g_nodups" .Re a list consisting of l_list with g_object destructively inserted in a place determined by the ordering function u_comparefn. .No \fI(comparefn 'g_x 'g_y)\fP should return something non-nil if g_x can precede g_y in sorted order, nil if g_y must precede g_x. If u_comparefn is nil, alphabetical order will be used. If g_nodups is non-nil, an element will not be inserted if an equal element is already in the list. .i insert does binary search to determine where to insert the new element. .Lf merge "'l_data1 'l_data2 'u_comparefn" .Re the merged list of the two input sorted lists l_data1 and l_data1 using binary comparison function u_comparefn. .No \fI(comparefn 'g_x 'g_y)\fP should return something non-nil if g_x can precede g_y in sorted order, nil if g_y must precede g_x. If u_comparefn is nil, alphabetical order will be used. u_comparefn should be thought of as "less than or equal". .i merge changes both of its data arguments. .Lf subst "'g_x 'g_y 'l_s" .Lx dsubst "'g_x 'g_y 'l_s" .Re the result of substituting g_x for all .i equal occurrences of g_y at all levels in l_s. .No If g_y is a symbol, .i eq will be used for comparisons. The function .i subst does not modify l_s but the function .i dsubst (destructive substitution) does. .Lf lsubst "'l_x 'g_y 'l_s" .Re a copy of l_s with l_x spliced in for every occurrence of of g_y at all levels. Splicing in means that the parentheses surrounding the list l_x are removed as the example below shows. .Eb \-> \fI(subst '(a b c) 'x '(x y z (x y z) (x y z)))\fP ((a b c) y z ((a b c) y z) ((a b c) y z)) \-> \fI(lsubst '(a b c) 'x '(x y z (x y z) (x y z)))\fP (a b c y z (a b c y z) (a b c y z)) .Ee .Lf subpair "'l_old 'l_new 'l_expr" .Wh there are the same number of elements in l_old as l_new. .Re the list l_expr with all occurrences of a object in l_old replaced by the corresponding one in l_new. When a substitution is made, a copy of the value to substitute in is not made. .Ex \fI(subpair '(a c)' (x y) '(a b c d)) = (x b y d)\fP .Lf nconc "'l_arg1 'l_arg2 ['l_arg3 ...]" .Re A list consisting of the elements of l_arg1 followed by the elements of l_arg2 followed by l_arg3 and so on. .No The .i cdr of the last list cell of l_arg\fIi\fP is changed to point to l_arg\fIi+1\fP. .Eb ; \fInconc\fP is faster than \fIappend\fP because it doesn't allocate new list cells. \-> \fI(setq lis1 '(a b c))\fP (a b c) \-> \fI(setq lis2 '(d e f))\fP (d e f) \-> \fI(append lis1 lis2)\fP (a b c d e f) \-> \fIlis1\fP (a b c) ; note that lis1 has not been changed by \fIappend\fP \-> \fI(nconc lis1 lis2)\fP (a b c d e f) ; \fInconc\fP returns the same value as \fIappend\fP \-> \fIlis1\fP (a b c d e f) ; but in doing so alters lis1 .Ee .Lf reverse "'l_arg" .Lx nreverse "'l_arg" .Re the list l_arg with the elements at the top level in reverse order. .No The function .i nreverse does the reversal in place, that is the list structure is modified. .Lf nreconc "'l_arg 'g_arg" .Eq \fI(nconc (nreverse 'l_arg) 'g_arg)\fP .sh 2 Predicates .pp The following functions test for properties of data objects. When the result of the test is either 'false' or 'true', then \fBnil\fP will be returned for 'false' and something other than \fBnil\fP (often \fBt\fP) will be returned for 'true'. .Lf arrayp "'g_arg" .Re t iff g_arg is of type array. .Lf atom "'g_arg" .Re t iff g_arg is not a list or hunk object. .No \fI(atom '())\fP returns t. .Lf bcdp "'g_arg" .Re t iff g_arg is a data object of type binary. .No This function is a throwback to the PDP-11 Lisp system. The name stands for binary code predicate. .Lf bigp "'g_arg" .Re t iff g_arg is a bignum. .Lf dtpr "'g_arg" .Re t iff g_arg is a list cell. .No that (dtpr '()) is nil. .Lf hunkp "'g_arg" .Re t iff g_arg is a hunk. .Lf listp "'g_arg" .Re t iff g_arg is a list object or nil. .Lf stringp "'g_arg" .Re t iff g_arg is a string. .Lf symbolp "'g_arg" .Re t iff g_arg is a symbol. .Lf valuep "'g_arg" .Re t iff g_arg is a value cell .Lf vectorp 'v_vector .Re \fBt\fP iff the argument is a vector. .Lf vectorip 'v_vector .Re \fBt\fP iff the argument is an immediate-vector. .Lf type "'g_arg" .Lx typep "'g_arg" .Re a symbol whose pname describes the type of g_arg. .Lf signp "s_test 'g_val" .Re t iff g_val is a number and the given test s_test on g_val returns true. .No The fact that .i signp simply returns nil if g_val is not a number is probably the most important reason that .i signp is used. The permitted values for s_test and what they mean are given in this table. .(b .TS center box; l l . s_test tested = l g_val < 0 le g_val \(<= 0 e g_val = 0 n g_val \(!= 0 ge g_val \(>= 0 g g_val > 0 .TE .)b .Lf eq "'g_arg1 'g_arg2" .Re t if g_arg1 and g_arg2 are the exact same lisp object. .No .i Eq simply tests if g_arg1 and g_arg2 are located in the exact same place in memory. Lisp objects which print the same are not necessarily .i eq . The only objects guaranteed to be .i eq are interned symbols with the same print name. [Unless a symbol is created in a special way (such as with .i uconcat or .i maknam ) it will be interned.] .Lf neq "'g_x 'g_y" .Re t if g_x is not .i eq to g_y, otherwise nil. .Lf equal "'g_arg1 'g_arg2" .Lx eqstr "'g_arg1 'g_arg2" .Re t iff g_arg1 and g_arg2 have the same structure as described below. .No g_arg and g_arg2 are .i equal if .np they are \fIeq\fP. .np they are both fixnums with the same value .np they are both flonums with the same value .np they are both bignums with the same value .np they are both strings and are identical. .np they are both lists and their cars and cdrs are .i equal . .Eb ; \fIeq\fP is much faster than \fIequal\fP, especially in compiled code, ; however you cannot use \fIeq\fP to test for equality of numbers outside ; of the range -1024 to 1023. \fIequal\fP will always work. \-> \fI(eq 1023 1023)\fP t \-> \fI(eq 1024 1024)\fP nil \-> \fI(equal 1024 1024)\fP t .Ee .Lf not "'g_arg" .Lx null "'g_arg" .Re t iff g_arg is nil. .Lf member "'g_arg1 'l_arg2" .Lx memq "'g_arg1 'l_arg2" .Re that part of the l_arg2 beginning with the first occurrence of g_arg1. If g_arg1 is not in the top level of l_arg2, nil is returned. .No .i member tests for equality with .i equal , .i memq tests for equality with .i eq . .sh 2 Symbols\ and\ Strings .pp In many of the following functions the distinction between symbols and strings is somewhat blurred. To remind ourselves of the difference, a string is a null terminated sequence of characters, stored as compactly as possible. Strings are used as constants in .Fr . They .i eval to themselves. A symbol has additional structure: a value, property list, function binding, as well as its external representation (or print-name). If a symbol is given to one of the string manipulation functions below, its print name will be used as the string. .pp Another popular way to represent strings in Lisp is as a list of fixnums which represent characters. The suffix 'n' to a string manipulation function indicates that it returns a string in this form. .sh 3 symbol\ and\ string\ creation .Lf concat "['stn_arg1 ... ]" .Lx uconcat "['stn_arg1 ... ]" .Re a symbol whose print name is the result of concatenating the print names, string characters or numerical representations of the sn_arg\fIi\fP. .No If no arguments are given, a symbol with a null pname is returned. \fIconcat\fP places the symbol created on the oblist, the function .i uconcat does the same thing but does not place the new symbol on the oblist. .Ex \fI(concat 'abc (add 3 4) "def")\fP = abc7def .Lf concatl "'l_arg" .Eq \fI(apply 'concat 'l_arg)\fP .Lf implode "'l_arg" .Lx maknam "'l_arg" .Wh l_arg is a list of symbols, strings and small fixnums. .Re The symbol whose print name is the result of concatenating the first characters of the print names of the symbols and strings in the list. Any fixnums are converted to the equivalent ascii character. In order to concatenate entire strings or print names, use the function .i concat . .No .i implode interns the symbol it creates, .i maknam does not. .Lf gensym "['s_leader]" .Re a new uninterned atom beginning with the first character of s_leader's pname, or beginning with g if s_leader is not given. .No The symbol looks like x0nnnnn where x is s_leader's first character and nnnnn is the number of times you have called gensym. .Lf copysymbol "'s_arg 'g_pred" .Re an uninterned symbol with the same print name as s_arg. If g_pred is non nil, then the value, function binding and property list of the new symbol are made .i eq to those of s_arg. .Lf ascii "'x_charnum" .Wh x_charnum is between 0 and 255. .Re a symbol whose print name is the single character whose fixnum representation is x_charnum. .Lf intern "'s_arg" .Re s_arg .Se s_arg is put on the oblist if it is not already there. .Lf remob "'s_symbol" .Re s_symbol .Se s_symbol is removed from the oblist. .Lf rematom "'s_arg" .Re t if s_arg is indeed an atom. .Se s_arg is put on the free atoms list, effectively reclaiming an atom cell. .No This function does .i not check to see if s_arg is on the oblist or is referenced anywhere. Thus calling .i rematom on an atom in the oblist may result in disaster when that atom cell is reused! .sh 3 string\ and\ symbol\ predicates .Lf boundp "'s_name" .Re nil if s_name is unbound: that is, it has never been given a value. If x_name has the value g_val, then (nil\ .\ g_val) is returned. See also .i makunbound . .Lf alphalessp "'st_arg1 'st_arg2" .Re t iff the `name' of st_arg1 is alphabetically less than the name of st_arg2. If st_arg is a symbol then its `name' is its print name. If st_arg is a string, then its `name' is the string itself. .sh 3 symbol\ and\ string\ accessing .Lf symeval "'s_arg" .Re the value of symbol s_arg. .No It is illegal to ask for the value of an unbound symbol. This function has the same effect as .i eval , but compiles into much more efficient code. .Lf get_pname "'s_arg" .Re the string which is the print name of s_arg. .Lf plist "'s_arg" .Re the property list of s_arg. .Lf getd "'s_arg" .Re the function definition of s_arg or nil if there is no function definition. .No the function definition may turn out to be an array header. .Lf getchar "'s_arg 'x_index" .Lx nthchar "'s_arg 'x_index" .Lx getcharn "'s_arg 'x_index" .Re the x_index\fIth\fP character of the print name of s_arg or nil if x_index is less than 1 or greater than the length of s_arg's print name. .No .i getchar and .i nthchar return a symbol with a single character print name, .i getcharn returns the fixnum representation of the character. .Lf substring "'st_string 'x_index ['x_length]" .Lx substringn "'st_string 'x_index ['x_length]" .Re a string of length at most x_length starting at x_index\fIth\fP character in the string. .No If x_length is not given, all of the characters for x_index to the end of the string are returned. If x_index is negative the string begins at the x_index\fIth\fP character from the end. If x_index is out of bounds, nil is returned. .No .i substring returns a list of symbols, .i substringn returns a list of fixnums. If .i substringn is given a 0 x_length argument then a single fixnum which is the x_index\fIth\fP character is returned. .sh 3 symbol\ and\ string\ manipulation .Lf set "'s_arg1 'g_arg2" .Re g_arg2. .Se the value of s_arg1 is set to g_arg2. .Lf setq "s_atm1 'g_val1 [ s_atm2 'g_val2 ... ... ]" .Wh the arguments are pairs of atom names and expressions. .Re the last g_val\fIi\fP. .Se each s_atm\fIi\fP is set to have the value g_val\fIi\fP. .No .i set evaluates all of its arguments, .i setq does not evaluate the s_atm\fIi\fP. .Lf desetq "sl_pattern1 'g_exp1 [... ...]" .Re g_expn .Se This acts just like \fIsetq\fP if all the sl_pattern\fIi\fP are symbols. If sl_pattern\fIi\fP is a list then it is a template which should have the same structure as g_exp\fIi\fP The symbols in sl_pattern are assigned to the corresponding parts of g_exp. (See also .i setf ) .Ex \fI(desetq (a b (c . d)) '(1 2 (3 4 5)))\fP .br sets a to 1, b to 2, c to 3, and d to (4 5). .Lf setplist "'s_atm 'l_plist" .Re l_plist. .Se the property list of s_atm is set to l_plist. .Lf makunbound "'s_arg" .Re s_arg .Se the value of s_arg is made `unbound'. If the interpreter attempts to evaluate s_arg before it is again given a value, an unbound variable error will occur. .Lf aexplode "'s_arg" .Lx explode "'g_arg" .Lx aexplodec "'s_arg" .Lx explodec "'g_arg" .Lx aexploden "'s_arg" .Lx exploden "'g_arg" .Re a list of the characters used to print out s_arg or g_arg. .No The functions beginning with 'a' are internal functions which are limited to symbol arguments. The functions .i aexplode and .i explode return a list of characters which .i print would use to print the argument. These characters include all necessary escape characters. Functions .i aexplodec and .i explodec return a list of characters which .i patom would use to print the argument (i.e. no escape characters). Functions .i aexploden and .i exploden are similar to .i aexplodec and .i explodec except that a list of fixnum equivalents of characters are returned. .Eb \-> \fI(setq x '|quote this \e| ok?|)\fP |quote this \e| ok?| \-> \fI(explode x)\fP (q u o t e |\e\e| | | t h i s |\e\e| | | |\e\e| |\e|| |\e\e| | | o k ?) ; note that |\e\e| just means the single character: backslash. ; and |\e|| just means the single character: vertical bar ; and | | means the single character: space \-> \fI(explodec x)\fP (q u o t e | | t h i s | | |\e|| | | o k ?) \-> \fI(exploden x)\fP (113 117 111 116 101 32 116 104 105 115 32 124 32 111 107 63) .Ee .sh 2 Vectors .pp See Chapter 9 for a discussion of vectors. They are less efficient that hunks but more efficient than arrays. .sh 3 vector\ creation .Lf new-vector "'x_size ['g_fill ['g_prop]]" .Re A \fBvector\fP of length x_size. Each data entry is initialized to g_fill, or to nil, if the argument g_fill is not present. The vector's property is set to g_prop, or to nil, by default. .Lf new-vectori-byte "'x_size ['g_fill ['g_prop]]" .Lx new-vectori-word "'x_size ['g_fill ['g_prop]]" .Lx new-vectori-long "'x_size ['g_fill ['g_prop]]" .Re A \fBvectori\fP with x_size elements in it. The actual memory requirement is two long words + x_size*(n bytes), where n is 1 for new-vector-byte, 2 for new-vector-word, or 4 for new-vectori-long. Each data entry is initialized to g_fill, or to zero, if the argument g_fill is not present. The vector's property is set to g_prop, or nil, by default. .sp 2v .lp Vectors may be created by specifying multiple initial values: .Lf vector "['g_val0 'g_val1 ...]" .Re a \fBvector\fP, with as many data elements as there are arguments. It is quite possible to have a vector with no data elements. The vector's property will be a null list. .Lf vectori-byte "['x_val0 'x_val2 ...]" .Lx vectori-word "['x_val0 'x_val2 ...]" .Lx vectori-long "['x_val0 'x_val2 ...]" .Re a \fBvectori\fP, with as many data elements as there are arguments. The arguments are required to be fixnums. Only the low order byte or word is used in the case of vectori-byte and vectori-word. The vector's property will be null. .sh 3 vector\ reference .Lf vref "'v_vect 'x_index" .Lx vrefi-byte "'V_vect 'x_bindex" .Lx vrefi-word "'V_vect 'x_windex" .Lx vrefi-long "'V_vect 'x_lindex" .Re the desired data element from a vector. The indices must be fixnums. Indexing is zero-based. The vrefi functions sign extend the data. .Lf vprop 'Vv_vect .Re The Lisp property associated with a vector. .Lf vget "'Vv_vect 'g_ind" .Re The value stored under g_ind if the Lisp property associated with 'Vv_vect is a disembodied property list. .Lf vsize 'Vv_vect .Lx vsize-byte 'V_vect .Lx vsize-word 'V_vect .Re the number of data elements in the vector. For immediate-vectors, the functions vsize-byte and vsize-word return the number of data elements, if one thinks of the binary data as being comprised of bytes or words. .sh 3 vector\ modfication .Lf vset "'v_vect 'x_index 'g_val" .Lx vseti-byte "'V_vect 'x_bindex 'x_val" .Lx vseti-word "'V_vect 'x_windex 'x_val" .Lx vseti-long "'V_vect 'x_lindex 'x_val" .Re the datum. .Se The indexed element of the vector is set to the value. As noted above, for vseti-word and vseti-byte, the index is construed as the number of the data element within the vector. It is not a byte address. Also, for those two functions, the low order byte or word of x_val is what is stored. .Lf vsetprop "'Vv_vect 'g_value" .Re g_value. This should be either a symbol or a disembodied property list whose .i car is a symbol identifying the type of the vector. .Se the property list of Vv_vect is set to g_value. .Lf vputprop "'Vv_vect 'g_value 'g_ind" .Re g_value. .Se If the vector property of Vv_vect is a disembodied property list, then vputprop adds the value g_value under the indicator g_ind. Otherwise, the old vector property is made the first element of the list. .sh 2 Arrays .pp See Chapter 9 for a complete description of arrays. Some of these functions are part of a Maclisp array compatibility package representing only one simple way of using the array structure of .Fr . .sh 3 array\ creation .Lf marray "'g_data 's_access 'g_aux 'x_length 'x_delta" .Re an array type with the fields set up from the above arguments in the obvious way (see \(sc 1.2.10). .Lf *array "'s_name 's_type 'x_dim1 ... 'x_dim\fIn\fP" .Lx array "s_name s_type x_dim1 ... x_dim\fIn\fP" .Wh s_type may be one of t, nil, fixnum, flonum, fixnum-block and flonum-block. .Re an array of type s_type with n dimensions of extents given by the x_dim\fIi\fP. .Se If s_name is non nil, the function definition of s_name is set to the array structure returned. .No These functions create a Maclisp compatible array. In .Fr arrays of type t, nil, fixnum and flonum are equivalent and the elements of these arrays can be any type of lisp object. Fixnum-block and flonum-block arrays are restricted to fixnums and flonums respectively and are used mainly to communicate with foreign functions (see \(sc8.5). .No .i *array evaluates its arguments, .i array does not. .sh 3 array\ predicate .Lf arrayp "'g_arg" .Re t iff g_arg is of type array. .sh 3 array\ accessors .Lf getaccess "'a_array" .Lx getaux "'a_array" .Lx getdelta "'a_array" .Lx getdata "'a_array" .Lx getlength "'a_array" .Re the field of the array object a_array given by the function name. .Lf arrayref "'a_name 'x_ind" .Re the x_ind\fIth\fP element of the array object a_name. x_ind of zero accesses the first element. .No .i arrayref uses the data, length and delta fields of a_name to determine which object to return. .Lf arraycall "s_type 'as_array 'x_ind1 ... " .Re the element selected by the indices from the array a_array of type s_type. .No If as_array is a symbol then the function binding of this symbol should contain an array object. .br s_type is ignored by .i arraycall but is included for compatibility with Maclisp. .Lf arraydims "'s_name" .Re a list of the type and bounds of the array s_name. .Lf listarray "'sa_array ['x_elements]" .Re a list of all of the elements in array sa_array. If x_elements is given, then only the first x_elements are returned. .Eb ; We will create a 3 by 4 array of general lisp objects \-> \fI(array ernie t 3 4)\fP array[12] ; the array header is stored in the function definition slot of the ; symbol ernie \-> \fI(arrayp (getd 'ernie))\fP t \-> \fI(arraydims (getd 'ernie))\fP (t 3 4) ; store in ernie[2][2] the list (test list) \-> \fI(store (ernie 2 2) '(test list))\fP (test list) ; check to see if it is there \-> \fI(ernie 2 2)\fP (test list) ; now use the low level function \fIarrayref\fP to find the same element ; arrays are 0 based and row-major (the last subscript varies the fastest) ; thus element [2][2] is the 10th element , (starting at 0). \-> \fI(arrayref (getd 'ernie) 10)\fP (ptr to)(test list) ; the result is a value cell (thus the (ptr to)) .Ee .sh 3 array\ manipulation .Lf putaccess "'a_array 'su_func" .Lx putaux "'a_array 'g_aux" .Lx putdata "'a_array 'g_arg" .Lx putdelta "'a_array 'x_delta" .Lx putlength "'a_array 'x_length" .Re the second argument to the function. .Se The field of the array object given by the function name is replaced by the second argument to the function. .Lf store "'l_arexp 'g_val" .Wh l_arexp is an expression which references an array element. .Re g_val .Se the array location which contains the element which l_arexp references is changed to contain g_val. .Lf fillarray "'s_array 'l_itms" .Re s_array .Se the array s_array is filled with elements from l_itms. If there are not enough elements in l_itms to fill the entire array, then the last element of l_itms is used to fill the remaining parts of the array. .sh 2 Hunks .pp Hunks are vector-like objects whose size can range from 1 to 128 elements. Internally, hunks are allocated in sizes which are powers of 2. In order to create hunks of a given size, a hunk with at least that many elements is allocated and a distinguished symbol \s-2EMPTY\s0 is placed in those elements not requested. Most hunk functions respect those distinguished symbols, but there are two .i (*makhunk and .i *rplacx ) which will overwrite the distinguished symbol. .sh 3 hunk\ creation .Lf hunk "'g_val1 ['g_val2 ... 'g_val\fIn\fP]" .Re a hunk of length n whose elements are initialized to the g_val\fIi\fP. .No the maximum size of a hunk is 128. .Ex \fI(hunk 4 'sharp 'keys)\fP = {4 sharp keys} .Lf makhunk "'xl_arg" .Re a hunk of length xl_arg initialized to all nils if xl_arg is a fixnum. If xl_arg is a list, then we return a hunk of size \fI(length\ 'xl_arg)\fP initialized to the elements in xl_arg. .No \fI(makhunk\ '(a\ b\ c))\fP is equivalent to \fI(hunk\ 'a\ 'b\ 'c)\fP. .Ex \fI(makhunk 4)\fP = \fI{nil nil nil nil}\fP .Lf *makhunk "'x_arg" .Re a hunk of size 2\*[x_arg\*] initialized to \s-2EMPTY\s0. .No This is only to be used by such functions as \fIhunk\fP and \fImakhunk\fP which create and initialize hunks for users. .sh 3 hunk\ accessor .Lf cxr "'x_ind 'h_hunk" .Re element x_ind (starting at 0) of hunk h_hunk. .Lf hunk-to-list 'h_hunk .Re a list consisting of the elements of h_hunk. .sh 3 hunk\ manipulators .Lf rplacx "'x_ind 'h_hunk 'g_val" .Lx *rplacx "'x_ind 'h_hunk 'g_val" .Re h_hunk .Se Element x_ind (starting at 0) of h_hunk is set to g_val. .No .i rplacx will not modify one of the distinguished (EMPTY) elements whereas .i *rplacx will. .Lf hunksize "'h_arg" .Re the size of the hunk h_arg. .Ex \fI(hunksize (hunk 1 2 3))\fP = 3 .sh 2 Bcds .pp A bcd object contains a pointer to compiled code and to the type of function object the compiled code represents. .Lf getdisc "'y_bcd" .Lx getentry "'y_bcd" .Re the field of the bcd object given by the function name. .Lf putdisc "'y_func 's_discipline" .Re s_discipline .Se Sets the discipline field of y_func to s_discipline. .sh 2 Structures .pp There are three common structures constructed out of list cells: the assoc list, the property list and the tconc list. The functions below manipulate these structures. .sh 3 assoc\ list .pp An `assoc list' (or alist) is a common lisp data structure. It has the form .br .ce 1 ((key1 . value1) (key2 . value2) (key3 . value3) ... (keyn . valuen)) .Lf assoc "'g_arg1 'l_arg2" .Lx assq "'g_arg1 'l_arg2" .Re the first top level element of l_arg2 whose .i car is .i equal (with .i assoc ) or .i eq (with .i assq ) to g_arg1. .No Usually l_arg2 has an .i a-list structure and g_arg1 acts as key. .Lf sassoc "'g_arg1 'l_arg2 'sl_func" .Re the result of \fI(cond\ ((assoc\ 'g_arg\ 'l_arg2)\ (apply\ 'sl_func\ nil)))\fP .No sassoc is written as a macro. .Lf sassq "'g_arg1 'l_arg2 'sl_func" .Re the result of \fI(cond\ ((assq\ 'g_arg\ 'l_arg2)\ (apply\ 'sl_func\ nil)))\fP .No sassq is written as a macro. .Eb ; \fIassoc\fP or \fIassq\fP is given a key and an assoc list and returns ; the key and value item if it exists, they differ only in how they test ; for equality of the keys. \-> \fI(setq alist '((alpha . a) ( (complex key) . b) (junk . x)))\fP ((alpha . a) ((complex key) . b) (junk . x)) ; we should use \fIassq\fP when the key is an atom \-> \fI(assq 'alpha alist)\fP (alpha . a) ; but it may not work when the key is a list \-> \fI(assq '(complex key) alist)\fP nil ; however \fIassoc\fP will always work \-> \fI(assoc '(complex key) alist)\fP ((complex key) . b) .Ee .Lf sublis "'l_alst 'l_exp" .Wh l_alst is an .i a-list . .Re the list l_exp with every occurrence of key\fIi\fP replaced by val\fIi\fP. .No new list structure is returned to prevent modification of l_exp. When a substitution is made, a copy of the value to substitute in is not made. .sh 3 property\ list .pp A property list consists of an alternating sequence of keys and values. Normally a property list is stored on a symbol. A list is a 'disembodied' property list if it contains an odd number of elements, the first of which is ignored. .Lf plist "'s_name" .Re the property list of s_name. .Lf setplist "'s_atm 'l_plist" .Re l_plist. .Se the property list of s_atm is set to l_plist. .Lf get "'ls_name 'g_ind" .Re the value under indicator g_ind in ls_name's property list if ls_name is a symbol. .No If there is no indicator g_ind in ls_name's property list nil is returned. If ls_name is a list of an odd number of elements then it is a disembodied property list. \fIget\fP searches a disembodied property list by starting at its \fIcdr\fP, and comparing every other element with g_ind, using \fIeq\fP. .Lf getl "'ls_name 'l_indicators" .Re the property list ls_name beginning at the first indicator which is a member of the list l_indicators, or nil if none of the indicators in l_indicators are on ls_name's property list. .No If ls_name is a list, then it is assumed to be a disembodied property list. .Lf putprop "'ls_name 'g_val 'g_ind" .Lx defprop "ls_name g_val g_ind" .Re g_val. .Se Adds to the property list of ls_name the value g_val under the indicator g_ind. .No .i putprop evaluates it arguments, .i defprop does not. ls_name may be a disembodied property list, see \fIget\fP. .Lf remprop "'ls_name 'g_ind" .Re the portion of ls_name's property list beginning with the property under the indicator g_ind. If there is no g_ind indicator in ls_name's plist, nil is returned. .Se the value under indicator g_ind and g_ind itself is removed from the property list of ls_name. .No ls_name may be a disembodied property list, see \fIget\fP. .Eb \-> \fI(putprop 'xlate 'a 'alpha)\fP a \-> \fI(putprop 'xlate 'b 'beta)\fP b \-> \fI(plist 'xlate)\fP (alpha a beta b) \-> \fI(get 'xlate 'alpha)\fP a ; use of a disembodied property list: \-> \fI(get '(nil fateman rjf sklower kls foderaro jkf) 'sklower)\fP kls .Ee .sh 3 tconc\ structure .pp A tconc structure is a special type of list designed to make it easy to add objects to the end. It consists of a list cell whose .i car points to a list of the elements added with .i tconc or .i lconc and whose .i cdr points to the last list cell of the list pointed to by the .i car. .Lf tconc "'l_ptr 'g_x" .Wh l_ptr is a tconc structure. .Re l_ptr with g_x added to the end. .Lf lconc "'l_ptr 'l_x" .Wh l_ptr is a tconc structure. .Re l_ptr with the list l_x spliced in at the end. .Eb ; A \fItconc\fP structure can be initialized in two ways. ; nil can be given to \fItconc\fP in which case \fItconc\fP will generate ; a \fItconc\fP structure. \->\fI(setq foo (tconc nil 1))\fP ((1) 1) ; Since \fItconc\fP destructively adds to ; the list, you can now add to foo without using \fIsetq\fP again. \->\fI(tconc foo 2)\fP ((1 2) 2) \->\fIfoo\fP ((1 2) 2) ; Another way to create a null \fItconc\fP structure ; is to use \fI(ncons\ nil)\fP. \->\fI(setq foo (ncons nil))\fP (nil) \->\fI(tconc foo 1)\fP ((1) 1) ; now see what \fIlconc\fP can do \-> \fI(lconc foo nil)\fP ((1) 1) ; no change \-> \fI(lconc foo '(2 3 4))\fP ((1 2 3 4) 4) .Ee .sh 3 fclosures .pp An fclosure is a functional object which admits some data manipulations. They are discussed in \(sc8.4. Internally, they are constructed from vectors. .Lf fclosure "'l_vars 'g_funobj" .Wh l_vars is a list of variables, g_funobj is any object that can be funcalled (including, fclosures). .Re A vector which is the fclosure. .Lf fclosure-alist "'v_fclosure" .Re An association list representing the variables in the fclosure. This is a snapshot of the current state of the fclosure. If the bindings in the fclosure are changed, any previously calculated results of .i fclosure-alist will not change. .Lf fclosure-function "'v_fclosure" .Re the functional object part of the fclosure. .Lf fclosurep "'v_fclosure" .Re t iff the argument is an fclosure. .Lf symeval-in-fclosure "'v_fclosure 's_symbol" .Re the current binding of a particular symbol in an fclosure. .Lf set-in-fclosure "'v_fclosure 's_symbol 'g_newvalue" .Re g_newvalue. .Se The variable s_symbol is bound in the fclosure to g_newvalue. .sh 2 Random\ functions .pp The following functions don't fall into any of the classifications above. .Lf bcdad "'s_funcname" .Re a fixnum which is the address in memory where the function s_funcname begins. If s_funcname is not a machine coded function (binary) then .i bcdad returns nil. .Lf copy "'g_arg" .Re A structure .i equal to g_arg but with new list cells. .Lf copyint* "'x_arg" .Re a fixnum with the same value as x_arg but in a freshly allocated cell. .Lf cpy1 "'xvt_arg" .Re a new cell of the same type as xvt_arg with the same value as xvt_arg. .Lf getaddress "'s_entry1 's_binder1 'st_discipline1 [... ... ...]" .Re the binary object which s_binder1's function field is set to. .No This looks in the running lisp's symbol table for a symbol with the same name as s_entry\fIi\fP. It then creates a binary object whose entry field points to s_entry\fIi\fP and whose discipline is st_discipline\fIi\fP. This binary object is stored in the function field of s_binder\fIi\fP. If st_discipline\fIi\fP is nil, then "subroutine" is used by default. This is especially useful for .i cfasl users. .Lf macroexpand "'g_form" .Re g_form after all macros in it are expanded. .No This function will only macroexpand expressions which could be evaluated and it does not know about the special nlambdas such as .i cond and .i do , thus it misses many macro expansions. .Lf ptr "'g_arg" .Re a value cell initialized to point to g_arg. .Lf quote "g_arg" .Re g_arg. .No the reader allows you to abbreviate (quote foo) as 'foo. .Lf kwote "'g_arg" .Re \fI(list (quote quote) g_arg)\fP. .Lf replace "'g_arg1 'g_arg2" .Wh g_arg1 and g_arg2 must be the same type of lispval and not symbols or hunks. .Re g_arg2. .Se The effect of .i replace is dependent on the type of the g_arg\fIi\fP although one will notice a similarity in the effects. To understand what .i replace does to fixnum and flonum arguments, you must first understand that such numbers are `boxed' in .Fr . What this means is that if the symbol x has a value 32412, then in memory the value element of x's symbol structure contains the address of another word of memory (called a box) with 32412 in it. .br .sp Thus, there are two ways of changing the value of x: the first is to change the value element of x's symbol structure to point to a word of memory with a different value. The second way is to change the value in the box which x points to. The former method is used almost all of the time, the latter is used very rarely and has the potential to cause great confusion. The function .i replace allows you to do the latter, i.e., to actually change the value in the box. .br .sp You should watch out for these situations. If you do \fI(setq\ y\ x)\fP, then both x and y will point to the same box. If you now \fI(replace\ x\ 12345)\fP, then y will also have the value 12345. And, in fact, there may be many other pointers to that box. .br .sp Another problem with replacing fixnums is that some boxes are read-only. The fixnums between -1024 and 1023 are stored in a read-only area and attempts to replace them will result in an "Illegal memory reference" error (see the description of .i copyint* for a way around this problem). .br .sp For the other valid types, the effect of .i replace is easy to understand. The fields of g_val1's structure are made eq to the corresponding fields of g_val2's structure. For example, if x and y have lists as values then the effect of \fI(replace\ x\ y)\fP is the same as \fI(rplaca\ x\ (car\ y))\fP and \fI(rplacd\ x\ (cdr\ y))\fP. .Lf scons "'x_arg 'bs_rest" .Wh bs_rest is a bignum or nil. .Re a bignum whose first bigit is x_arg and whose higher order bigits are bs_rest. .Lf setf "g_refexpr 'g_value" .No .i setf is a generalization of setq. Information may be stored by binding variables, replacing entries of arrays, and vectors, or being put on property lists, among others. Setf will allow the user to store data into some location, by mentioning the operation used to refer to the location. Thus, the first argument may be partially evaluated, but only to the extent needed to calculate a reference. .i setf returns g_value. (Compare to .i desetq ) .Eb (setf x 3) = (setq x 3) (setf (car x) 3) = (rplaca x 3) (setf (get foo 'bar) 3) = (putprop foo 3 'bar) (setf (vref vector index) value) = (vset vector index value) .Ee .Lf sort "'l_data 'u_comparefn" .Re a list of the elements of l_data ordered by the comparison function u_comparefn. .Se the list l_data is modified rather than allocated in new storage. .No \fI(comparefn 'g_x 'g_y)\fP should return something non-nil if g_x can precede g_y in sorted order; nil if g_y must precede g_x. If u_comparefn is nil, alphabetical order will be used. .Lf sortcar "'l_list 'u_comparefn" .Re a list of the elements of l_list with the .i car 's ordered by the sort function u_comparefn. .Se the list l_list is modified rather than copied. .No Like \fIsort\fP, if u_comparefn is nil, alphabetical order will be used. t of \fI(cond\ ((assq\ 'g_arg\ 'l_arg2)\ (apply\ 'sl_func\ nil)))\fP .No sassq is written as a macro. .Eb ; \fIassoc\fP or \fIassq\fP is given a key and an assoc list and returns ; the key and value item if it exists, they differ only in how they test ; for equality of the keys. \-> \fI(setq alist '((alpha . a) ( (complex key) . b) (junk . x)))\fP ((alpha . a) ((complex key) . b) (junk . x)) ; we should use \fIassq\fP whdoc/ps2/09.lisp/ch3.n 444 3 12 23037 3662146660 7372 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch3.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: ch3.n,v 1.3 83/06/21 13:00:48 sklower Exp $ .Lc Arithmetic\ Functions 3 .pp This chapter describes .Fr "'s" functions for doing arithmetic. Often the same function is known by many names. For example, .i add is also .i plus , and .i sum . This is caused by our desire to be compatible with other Lisps. The .Fr user should avoid using functions with names such as \(pl and \(** unless their arguments are fixnums. The Lisp compiler takes advantage of these implicit declarations. .pp An attempt to divide or to generate a floating point result outside of the range of floating point numbers will cause a floating exception signal from the UNIX operating system. The user can catch and process this interrupt if desired (see the description of the .i signal function). .sh 2 Simple\ Arithmetic\ Functions \n(ch 1 .Lf add "['n_arg1 ...]" .Lx plus "['n_arg1 ...]" .Lx sum "['n_arg1 ...]" .Lx \(pl "['x_arg1 ...]" .Re the sum of the arguments. If no arguments are given, 0 is returned. .No if the size of the partial sum exceeds the limit of a fixnum, the partial sum will be converted to a bignum. If any of the arguments are flonums, the partial sum will be converted to a flonum when that argument is processed and the result will thus be a flonum. Currently, if in the process of doing the addition a bignum must be converted into a flonum an error message will result. .Lf add1 'n_arg .Lx 1+ 'x_arg .Re its argument plus 1. .Lf diff "['n_arg1 ... ]" .Lx difference "['n_arg1 ... ]" .Lx \(mi "['x_arg1 ... ]" .Re the result of subtracting from n_arg1 all subsequent arguments. If no arguments are given, 0 is returned. .No See the description of add for details on data type conversions and restrictions. .Lf sub1 "'n_arg" .Lx 1\(mi "'x_arg" .Re its argument minus 1. .Lf minus "'n_arg" .Re zero minus n_arg. .Lf product "['n_arg1 ... ]" .Lx times "['n_arg1 ... ]" .Lx \(** "['x_arg1 ... ]" .Re the product of all of its arguments. It returns 1 if there are no arguments. .No See the description of the function \fIadd\fP for details and restrictions to the automatic data type coercion. .Lf quotient "['n_arg1 ...]" .Lx / "['x_arg1 ...]" .Re the result of dividing the first argument by succeeding ones. .No If there are no arguments, 1 is returned. See the description of the function \fIadd\fP for details and restrictions of data type coercion. A divide by zero will cause a floating exception interrupt -- see the description of the .i signal function. .Lf *quo "'i_x 'i_y" .Re the integer part of i_x / i_y. .Lf Divide "'i_dividend 'i_divisor" .Re a list whose car is the quotient and whose cadr is the remainder of the division of i_dividend by i_divisor. .No this is restricted to integer division. .Lf Emuldiv "'x_fact1 'x_fact2 'x_addn 'x_divisor" .Re a list of the quotient and remainder of this operation: ((x_fact1\ *\ x_fact2)\ +\ (sign\ extended)\ x_addn)\ /\ x_divisor. .No this is useful for creating a bignum arithmetic package in Lisp. .sh 2 predicates .Lf numberp "'g_arg" .Lf numbp "'g_arg" .Re t iff g_arg is a number (fixnum, flonum or bignum). .Lf fixp "'g_arg" .Re t iff g_arg is a fixnum or bignum. .Lf floatp "'g_arg" .Re t iff g_arg is a flonum. .Lf evenp "'x_arg" .Re t iff x_arg is even. .Lf oddp "'x_arg" .Re t iff x_arg is odd. .Lf zerop "'g_arg" .Re t iff g_arg is a number equal to 0. .Lf onep "'g_arg" .Re t iff g_arg is a number equal to 1. .Lf plusp "'n_arg" .Re t iff n_arg is greater than zero. .Lf minusp "'g_arg" .Re t iff g_arg is a negative number. .Lf greaterp "['n_arg1 ...]" .Lx > "'fx_arg1 'fx_arg2" .Lx >& "'x_arg1 'x_arg2" .Re t iff the arguments are in a strictly decreasing order. .No In functions .i greaterp and .i > the function .i difference is used to compare adjacent values. If any of the arguments are non-numbers, the error message will come from the .i difference function. The arguments to .i > must be fixnums or both flonums. The arguments to .i >& must both be fixnums. .Lf lessp "['n_arg1 ...]" .Lx < "'fx_arg1 'fx_arg2" .Lx <& "'x_arg1 'x_arg2" .Re t iff the arguments are in a strictly increasing order. .No In functions .i lessp and .i < the function \fIdifference\fP is used to compare adjacent values. If any of the arguments are non numbers, the error message will come from the \fIdifference\fP function. The arguments to .i < may be either fixnums or flonums but must be the same type. The arguments to .i <& must be fixnums. .Lf \(eq "'fx_arg1 'fx_arg2" .Lf \(eq& "'x_arg1 'x_arg2" .Re t iff the arguments have the same value. The arguments to \(eq must be the either both fixnums or both flonums. The arguments to \(eq& must be fixnums. .sh 2 Trignometric\ Functions .pp Some of these funtcions are taken from the host math library, and we take no further responsibility for their accuracy. .Lf cos "'fx_angle" .Re the (flonum) cosine of fx_angle (which is assumed to be in radians). .Lf sin "'fx_angle" .Re the sine of fx_angle (which is assumed to be in radians). .Lf acos "'fx_arg" .Re the (flonum) arc cosine of fx_arg in the range 0 to \(*p. .Lf asin "'fx_arg" .Re the (flonum) arc sine of fx_arg in the range \(mi\(*p/2 to \(*p/2. .Lf atan "'fx_arg1 'fx_arg2" .Re the (flonum) arc tangent of fx_arg1/fx_arg2 in the range -\(*p to \(*p. .sh 2 Bignum/Fixnum\ Manipulation .Lf haipart "bx_number x_bits" .Re a fixnum (or bignum) which contains the x_bits high bits of \fI(abs\ bx_number)\fP if x_bits is positive, otherwise it returns the \fI(abs\ x_bits)\fP low bits of \fI(abs\ bx_number)\fP. .Lf haulong "bx_number" .Re the number of significant bits in bx_number. .No the result is equal to the least integer greater to or equal to the base two logarithm of one plus the absolute value of bx_number. .Lf bignum-leftshift "bx_arg x_amount" .Re bx_arg shifted left by x_amount. If x_amount is negative, bx_arg will be shifted right by the magnitude of x_amount. .No If bx_arg is shifted right, it will be rounded to the nearest even number. .Lf sticky-bignum-leftshift "'bx_arg 'x_amount" .Re bx_arg shifted left by x_amount. If x_amount is negative, bx_arg will be shifted right by the magnitude of x_amount and rounded. .No sticky rounding is done this way: after shifting, the low order bit is changed to 1 if any 1's were shifted off to the right. .sh 2 Bit\ Manipulation .Lf boole "'x_key 'x_v1 'x_v2 ..." .Re the result of the bitwise boolean operation as described in the following table. .No If there are more than 3 arguments, then evaluation proceeds left to right with each partial result becoming the new value of x_v1. That is, .br \ \ \ \ \ \fI(boole\ 'key\ 'v1\ 'v2\ 'v3)\ \(==\ (boole\ 'key\ (boole\ 'key\ 'v1\ 'v2)\ 'v3)\fP. .br In the following table, \(** represents bitwise and, \(pl represents bitwise or, \o'\(ci\(pl' represents bitwise xor and \(no represents bitwise negation and is the highest precedence operator. .ps 8 .(b .TS center box ; c s s s s s s s s c c c c c c c c c. (boole 'key 'x 'y) = key 0 1 2 3 4 5 6 7 result 0 x \(** y \(no x \(** y y x \(** \(no y x x \o'\(ci\(pl' y x \(pl y common names and bitclear xor or _ key 8 9 10 11 12 13 14 15 result \(no (x \(pl y) \(no(x \o'\(ci\(pl' y) \(no x \(no x \(pl y \(no y x \(pl \(no y \(no x \(pl \(no y -1 common names nor equiv implies nand .TE .)b .ps 10 .pp .Lf lsh "'x_val 'x_amt" .Re x_val shifted left by x_amt if x_amt is positive. If x_amt is negative, then .i lsh returns x_val shifted right by the magnitude if x_amt. .No This always returns a fixnum even for those numbers whose magnitude is so large that they would normally be represented as a bignum, i.e. shifter bits are lost. For more general bit shifters, see .i bignum-leftshift and .i sticky-bignum-leftshift. .Lf rot "'x_val 'x_amt" .Re x_val rotated left by x_amt if x_amt is positive. If x_amt is negative, then x_val is rotated right by the magnitude of x_amt. .sh 2 Other\ Functions .pp As noted above, some of the following functions are inherited from the host math library, with all their virtues and vices. .Lf abs 'n_arg .Lx absval 'n_arg .Re the absolute value of n_arg. .Lf exp "'fx_arg" .Re .i e raised to the fx_arg power (flonum) . .Lf expt "'n_base 'n_power" .Re n_base raised to the n_power power. .No if either of the arguments are flonums, the calculation will be done using .i log and .i exp . .Lf fact "'x_arg" .Re x_arg factorial. (fixnum or bignum) .Lf fix "'n_arg" .Re a fixnum as close as we can get to n_arg. .No \fIfix\fP will round down. Currently, if n_arg is a flonum larger than the size of a fixnum, this will fail. .Lf float "'n_arg" .Re a flonum as close as we can get to n_arg. .No if n_arg is a bignum larger than the maximum size of a flonum, then a floating exception will occur. .Lf log "'fx_arg" .Re the natural logarithm of fx_arg. .Lf max "'n_arg1 ... " .Re the maximum value in the list of arguments. .Lf min "'n_arg1 ... " .Re the minimum value in the list of arguments. .Lf mod "'i_dividend 'i_divisor" .Lx remainder "'i_dividend 'i_divisor" .Re the remainder when i_dividend is divided by i_divisor. .No The sign of the result will have the same sign as i_dividend. .Lf *mod "'x_dividend 'x_divisor" .Re the balanced representation of x_dividend modulo x_divisor. .No the range of the balanced representation is abs(x_divisor)/2 to (abs(x_divisor)/2) \(mi x_divisor + 1. .Lf random "['x_limit]" .Re a fixnum between 0 and x_limit \(mi 1 if x_limit is given. If x_limit is not given, any fixnum, positive or negative, might be returned. .Lf sqrt "'fx_arg" .Re the square root of fx_arg. be fixnums or both flonums. The arguments to .i >& must both be fixnums. .Lf lessp "['n_arg1 ...]" .Lx < "'fx_arg1 'fx_arg2" .Lx <& "'x_arg1 'x_arg2" .Re t iff the arguments are in a strictly increasing order. .No In functions .i lessp and .i < the function \fIdifference\fP is used to compare adjacent values. If any of the arguments are non numbers, the error message will come from the \fIdifference\fP function. The arguments to .i < may be either fixnums or flonums but mudoc/ps2/09.lisp/ch4.n 444 3 12 103452 3662146764 7420 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch4.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: ch4.n,v 1.4 83/07/27 15:11:44 layer Exp $ .pp .Lc Special\ Functions 4 .Lf and "[g_arg1 ...]" .Re the value of the last argument if all arguments evaluate to a non-nil value, otherwise .i and returns nil. It returns t if there are no arguments. .No the arguments are evaluated left to right and evaluation will cease with the first nil encountered. .Lf apply "'u_func 'l_args" .Re the result of applying function u_func to the arguments in the list l_args. .No If u_func is a lambda, then the \fI(length\ l_args)\fP should equal the number of formal parameters for the u_func. If u_func is a nlambda or macro, then l_args is bound to the single formal parameter. .Eb ; \fIadd1\fP is a lambda of 1 argument \-> \fI(apply 'add1 '(3))\fP 4 ; we will define \fIplus1\fP as a macro which will be equivalent to \fIadd1\fP \-> \fI(def plus1 (macro (arg) (list 'add1 (cadr arg))))\fP plus1 \-> \fI(plus1 3)\fP 4 ; now if we \fIapply\fP a macro we obtain the form it changes to. \-> \fI(apply 'plus1 '(plus1 3))\fP (add1 3) ; if we \fIfuncall\fP a macro however, the result of the macro is \fIeval\fPed ; before it is returned. \-> \fI(funcall 'plus1 '(plus1 3))\fP 4 ; for this particular macro, the \fIcar\fP of the \fIarg\fP is not checked ; so that this too will work \-> \fI(apply 'plus1 '(foo 3))\fP (add1 3) .Ee .Lf arg "['x_numb]" .Re if x_numb is specified then the x_numb'\fIth\fP argument to the enclosing lexpr If x_numb is not specified then this returns the number of arguments to the enclosing lexpr. .No it is an error to the interpreter if x_numb is given and out of range. .Lf break "[g_message ['g_pred]]" .Wh if g_message is not given it is assumed to be the null string, and if g_pred is not given it is assumed to be t. .Re the value of \fI(*break 'g_pred 'g_message)\fP .Lf *break "'g_pred 'g_message" .Re nil immediately if g_pred is nil, else the value of the next (return 'value) expression typed in at top level. .Se If the predicate, g_pred, evaluates to non-null, the lisp system stops and prints out `Break ' followed by g_message. It then enters a break loop which allows one to interactively debug a program. To continue execution from a break you can use the .i return function. to return to top level or another break level, you can use .i retbrk or .i reset . .Lf caseq "'g_key-form l_clause1 ..." .Wh l_clause\fIi\fP is a list of the form (g_comparator ['g_form\fIi\fP ...]). The comparators may be symbols, small fixnums, a list of small fixnums or symbols. .No The way caseq works is that it evaluates g_key-form, yielding a value we will call the selector. Each clause is examined until the selector is found consistent with the comparator. For a symbol, or a fixnum, this means the two must be \fIeq\fP. For a list, this means that the selector must be \fIeq\fP to some element of the list. .br .sp The comparator consisting of the symbol \fBt\fP has special semantics: it matches anything, and consequently, should be the last comparator. .br .sp In any case, having chosen a clause, \fIcaseq\fP evaluates each form within that clause and .Re the value of the last form. If no comparators are matched, \fIcaseq\fP returns nil. .Eb Here are two ways of defining the same function: \->\fI(defun fate (personna) (caseq personna (cow '(jumped over the moon)) (cat '(played nero)) ((dish spoon) '(ran away with each other)) (t '(lived happily ever after))))\fP fate \->\fI(defun fate (personna) (cond ((eq personna 'cow) '(jumped over the moon)) ((eq personna 'cat) '(played nero)) ((memq personna '(dish spoon)) '(ran away with each other)) (t '(lived happily ever after))))\fP fate .Ee .Lf catch "g_exp [ls_tag]" .Wh if ls_tag is not given, it is assumed to be nil. .Re the result of \fI(*catch 'ls_tag g_exp)\fP .No catch is defined as a macro. .Lf *catch "'ls_tag g_exp" .Wh ls_tag is either a symbol or a list of symbols. .Re the result of evaluating g_exp or the value thrown during the evaluation of g_exp. .Se this first sets up a `catch frame' on the lisp runtime stack. Then it begins to evaluate g_exp. If g_exp evaluates normally, its value is returned. If, however, a value is thrown during the evaluation of g_exp then this *catch will return with that value if one of these cases is true: .nr $p 0 .np the tag thrown to is ls_tag .np ls_tag is a list and the tag thrown to is a member of this list .np ls_tag is nil. .No Errors are implemented as a special kind of throw. A catch with no tag will not catch an error but a catch whose tag is the error type will catch that type of error. See Chapter 10 for more information. .Lf comment "[g_arg ...]" .Re the symbol comment. .No This does absolutely nothing. .Lf cond "[l_clause1 ...]" .Re the last value evaluated in the first clause satisfied. If no clauses are satisfied then nil is returned. .No This is the basic conditional `statement' in lisp. The clauses are processed from left to right. The first element of a clause is evaluated. If it evaluated to a non-null value then that clause is satisfied and all following elements of that clause are evaluated. The last value computed is returned as the value of the cond. If there is just one element in the clause then its value is returned. If the first element of a clause evaluates to nil, then the other elements of that clause are not evaluated and the system moves to the next clause. .Lf cvttointlisp .Se The reader is modified to conform with the Interlisp syntax. The character % is made the escape character and special meanings for comma, backquote and backslash are removed. Also the reader is told to convert upper case to lower case. .Lf cvttofranzlisp .Se .Fr "'s" default syntax is reinstated. One would run this function after having run any of the other .i cvtto- functions. Backslash is made the escape character, super-brackets work again, and the reader distinguishes between upper and lower case. .Lf cvttomaclisp .Se The reader is modified to conform with Maclisp syntax. The character / is made the escape character and the special meanings for backslash, left and right bracket are removed. The reader is made case-insensitive. .Lf cvttoucilisp .Se The reader is modified to conform with UCI Lisp syntax. The character / is made the escape character, tilde is made the comment character, exclamation point takes on the unquote function normally held by comma, and backslash, comma, semicolon become normal characters. Here too, the reader is made case-insensitive. .Lf debug "s_msg" .Se Enter the Fixit package described in Chapter 15. This package allows you to examine the evaluation stack in detail. To leave the Fixit package type 'ok'. .Lf debugging "'g_arg" .Se If g_arg is non-null, Franz unlinks the transfer tables, does a \fI(*rset\ t)\fP to turn on evaluation monitoring and sets the all-error catcher (ER%all) to be \fIdebug-err-handler\fP. If g_arg is nil, all of the above changes are undone. .Lf declare "[g_arg ...]" .Re nil .No this is a no-op to the evaluator. It has special meaning to the compiler (see Chapter 12). .Lf def "s_name (s_type l_argl g_exp1 ...)" .Wh s_type is one of lambda, nlambda, macro or lexpr. .Re s_name .Se This defines the function s_name to the lisp system. If s_type is nlambda or macro then the argument list l_argl must contain exactly one non-nil symbol. .Lf defmacro "s_name l_arg g_exp1 ..." .Lx defcmacro "s_name l_arg g_exp1 ..." .Re s_name .Se This defines the macro s_name. \fIdefmacro\fP makes it easy to write macros since it makes the syntax just like \fIdefun\fP. Further information on \fIdefmacro\fP is in \(sc8.3.2. \fIdefcmacro\fP defines compiler-only macros, or cmacros. A cmacro is stored on the property list of a symbol under the indicator \fBcmacro\fP. Thus a function can have a normal definition and a cmacro definition. For an example of the use of cmacros, see the definitions of nthcdr and nth in /usr/lib/lisp/common2.l .Lf defun "s_name [s_mtype] ls_argl g_exp1 ... " .Wh s_mtype is one of fexpr, expr, args or macro. .Re s_name .Se This defines the function s_name. .No this exists for Maclisp compatibility, it is just a macro which changes the defun form to the def form. An s_mtype of fexpr is converted to nlambda and of expr to lambda. Macro remains the same. If ls_arg1 is a non-nil symbol, then the type is assumed to be lexpr and ls_arg1 is the symbol which is bound to the number of args when the function is entered. .br For compatibility with the Lisp Machine Lisp, there are three types of optional parameters that can occur in ls_argl: \fI&optional\fP declares that the following symbols are optional, and may or may not appear in the argument list to the function, \fI&rest symbol\fP declares that all forms in the function call that are not accounted for by previous lambda bindings are to be assigned to \fIsymbol\fP, and \fI&aux form1 ... formn\fP declares that the \fIformi\fP are either symbols, in which case they are lambda bound to \fBnil\fP, or lists, in which case the first element of the list is lambda bound to the second, evaluated element. .Eb ; \fIdef\fP and \fIdefun\fP here are used to define identical functions ; you can decide for yourself which is easier to use. \-> \fI(def append1 (lambda (lis extra) (append lis (list extra))))\fP append1 \-> \fI(defun append1 (lis extra) (append lis (list extra)))\fP append1 ; Using the & forms... \-> \fI(defu\kCn test (a b &optional c &aux (retval 0) &rest z) \h'|\nCu'\kB(if c them (msg \kA"Optional arg present" N \h'|\nAu'"c is " c N)) \h'|\nBu'(msg \kA"rest is " z N \h'|\nAu'"retval is " retval N))\fP test \-> \fI(test 1 2 3 4)\fP Optional arg present c is 3 rest is (4) retval is 0 .Ee .Lf defvar "s_variable ['g_init]" .Re s_variable. .No This form is put at the top level in files, like \fIdefun\fB. .Se This declares s_variable to be special. If g_init is present and s_variable is unbound when the file is read in, s_variable will be set to the value of g_init. An advantage of `(defvar foo)' over `(declare (special foo))' is that if a file containing defvars is loaded (or fasl'ed) in during compilation, the variables mentioned in the defvar's will be declared special. The only way to have that effect with `(declare (special foo))' is to \fIinclude\fP the file. .Lf do "l_vrbs l_test g_exp1 ..." .Re the last form in the cdr of l_test evaluated, or a value explicitly given by a return evaluated within the do body. .No This is the basic iteration form for .Fr . l_vrbs is a list of zero or more var-init-repeat forms. A var-init-repeat form looks like: .br .tl ''(s_name [g_init [g_repeat]])'' There are three cases depending on what is present in the form. If just s_name is present, this means that when the do is entered, s_name is lambda-bound to nil and is never modified by the system (though the program is certainly free to modify its value). If the form is (s_name\ 'g_init) then the only difference is that s_name is lambda-bound to the value of g_init instead of nil. If g_repeat is also present then s_name is lambda-bound to g_init when the loop is entered and after each pass through the do body s_name is bound to the value of g_repeat. .br l_test is either nil or has the form of a cond clause. If it is nil then the do body will be evaluated only once and the do will return nil. Otherwise, before the do body is evaluated the car of l_test is evaluated and if the result is non-null, this signals an end to the looping. Then the rest of the forms in l_test are evaluated and the value of the last one is returned as the value of the do. If the cdr of l_test is nil, then nil is returned -- thus this is not exactly like a cond clause. .br g_exp1 and those forms which follow constitute the do body. A do body is like a prog body and thus may have labels and one may use the functions go and return. .br The sequence of evaluations is this: .nr $p 0 .np the init forms are evaluated left to right and stored in temporary locations. .np Simultaneously all do variables are lambda bound to the value of their init forms or nil. .np If l_test is non-null, then the car is evaluated and if it is non-null, the rest of the forms in l_test are evaluated and the last value is returned as the value of the do. .np The forms in the do body are evaluated left to right. .np If l_test is nil the do function returns with the value nil. .np The repeat forms are evaluated and saved in temporary locations. .np The variables with repeat forms are simultaneously bound to the values of those forms. .np Go to step 3. .No there is an alternate form of do which can be used when there is only one do variable. It is described next. .Eb ; this is a simple function which numbers the elements of a list. ; It uses a \fIdo\fP function with two local variables. \-> \fI(defun printem (lis) (do ((xx lis (cdr xx)) (i 1 (1+ i))) ((null xx) (patom "all done") (terpr)) (print i) (patom ": ") (print (car xx)) (terpr)))\fP printem \-> \fI(printem '(a b c d))\fP 1: a 2: b 3: c 4: d all done nil \-> .Ee .Lf do "s_name g_init g_repeat g_test g_exp1 ..." .nr $p 0 .No this is another, less general, form of do. It is evaluated by: .np evaluating g_init .np lambda binding s_name to value of g_init .np g_test is evaluated and if it is not nil the do function returns with nil. .np the do body is evaluated beginning at g_exp1. .np the repeat form is evaluated and stored in s_name. .np go to step 3. .Re nil .Lf environment "[l_when1 l_what1 l_when2 l_what2 ...]" .Lx environment-maclisp "[l_when1 l_what1 l_when2 l_what2 ...]" .Lx environment-lmlisp "[l_when1 l_what1 l_when2 l_what2 ...]" .Wh the when's are a subset of (eval compile load), and the symbols have the same meaning as they do in 'eval-when'. .br .sp The what's may be .br (files file1 file2 ... fileN), .br which insure that the named files are loaded. To see if file\fIi\fP is loaded, it looks for a 'version' property under file\fIi\fP's property list. Thus to prevent multiple loading, you should put .br (putprop 'myfile t 'version), .br at the end of myfile.l. .br .sp Another acceptable form for a what is .br (syntax type) .br Where type is either maclisp, intlisp, ucilisp, franzlisp. .Se \fIenvironment-maclisp\fP sets the environment to that which `liszt -m' would generate. .br .sp \fIenvironment-lmlisp\fP sets up the lisp machine environment. This is like maclisp but it has additional macros. .br .sp For these specialized environments, only the \fBfiles\fP clauses are useful. .Eg (environment-maclisp (compile eval) (files foo bar)) .Re the last list of files requested. .Lf err "['s_value [nil]]" .Re nothing (it never returns). .Se This causes an error and if this error is caught by an .i errset then that .i errset will return s_value instead of nil. If the second arg is given, then it must be nil (\s-2MAC\s0lisp compatibility). .Lf error "['s_message1 ['s_message2]]" .Re nothing (it never returns). .Se s_message1 and s_message2 are \fIpatom\fPed if they are given and then \fIerr\fP is called (with no arguments), which causes an error. .Lf errset "g_expr [s_flag]" .Re a list of one element, which is the value resulting from evaluating g_expr. If an error occurs during the evaluation of g_expr, then the locus of control will return to the .i errset which will then return nil (unless the error was caused by a call to .i err, with a non-null argument). .Se S_flag is evaluated before g_expr is evaluated. If s_flag is not given, then it is assumed to be t. If an error occurs during the evaluation of g_expr, and s_flag evaluated to a non-null value, then the error message associated with the error is printed before control returns to the errset. .Lf eval "'g_val ['x_bind-pointer]" .Re the result of evaluating g_val. .No The evaluator evaluates g_val in this way: .br If g_val is a symbol, then the evaluator returns its value. If g_val had never been assigned a value, then this causes an `Unbound Variable' error. If x_bind-pointer is given, then the variable is evaluated with respect to that pointer (see \fIevalframe\fP for details on bind-pointers). .br .sp If g_val is of type value, then its value is returned. If g_val is of any other type than list, g_val is returned. .br .sp If g_val is a list object then g_val is either a function call or array reference. Let g_car be the first element of g_val. We continually evaluate g_car until we end up with a symbol with a non-null function binding or a non-symbol. Call what we end up with: g_func. .br .sp G_func must be one of three types: list, binary or array. If it is a list then the first element of the list, which we shall call g_functype, must be either lambda, nlambda, macro or lexpr. If g_func is a binary, then its discipline, which we shall call g_functype, is either lambda, nlambda, macro or a string. If g_func is an array then this form is evaluated specially, see Chapter 9 on arrays. If g_func is a list or binary, then g_functype will determine how the arguments to this function, the cdr of g_val, are processed. If g_functype is a string, then this is a foreign function call (see \(sc8.5 for more details). .br .sp If g_functype is lambda or lexpr, the arguments are evaluated (by calling .i eval recursively) and stacked. If g_functype is nlambda then the argument list is stacked. If g_functype is macro then the entire form, g_val is stacked. .br .sp Next, the formal variables are lambda bound. The formal variables are the cadr of g_func. If g_functype is nlambda, lexpr or macro, there should only be one formal variable. The values on the stack are lambda bound to the formal variables except in the case of a lexpr, where the number of actual arguments is bound to the formal variable. .br .sp After the binding is done, the function is invoked, either by jumping to the entry point in the case of a binary or by evaluating the list of forms beginning at cddr g_func. The result of this function invocation is returned as the value of the call to eval. .Lf evalframe "'x_pdlpointer" .Re an evalframe descriptor for the evaluation frame just before x_pdlpointer. If x_pdlpointer is nil, it returns the evaluation frame of the frame just before the current call to \fIevalframe\fP. .No An evalframe descriptor describes a call to \fIeval\fP, \fIapply\fP or \fIfuncall\fP. The form of the descriptor is .br \fI(type pdl-pointer expression bind-pointer np-index lbot-index)\fP .br where type is `eval' if this describes a call to \fIeval\fP or `apply' if this is a call to \fIapply\fP or \fIfuncall\fP. pdl-pointer is a number which describes this context. It can be passed to .i evalframe to obtain the next descriptor and can be passed to .i freturn to cause a return from this context. bind-pointer is the size of variable binding stack when this evaluation began. The bind-pointer can be given as a second argument to \fIeval\fP to order to evaluate variables in the same context as this evaluation. If type is `eval' then expression will have the form \fI(function-name\ arg1\ ...)\fP. If type is `apply' then expression will have the form \fI(function-name\ (arg1\ ...))\fP. np-index and lbot-index are pointers into the argument stack (also known as the \fInamestack\fP array) at the time of call. lbot-index points to the first argument, np-index points one beyond the last argument. .br In order for there to be enough information for \fIevalframe\fP to return, you must call \fI(*rset\ t)\fP. .Ex \fI(progn (evalframe nil))\fP .br returns \fI(eval 2147478600 (progn (evalframe nil)) 1 8 7)\fP .Lf evalhook "'g_form 'su_evalfunc ['su_funcallfunc]" .Re the result of evaluating g_form after lambda binding `evalhook' to su_evalfunc and, if it is given, lambda binding `funcallhook' to su_funcallhook. .No As explained in \(sc14.4, the function .i eval may pass the job of evaluating a form to a user `hook' function when various switches are set. The hook function normally prints the form to be evaluated on the terminal and then evaluates it by calling .i evalhook . .i Evalhook does the lambda binding mentioned above and then calls .i eval to evaluate the form after setting an internal switch to tell .i eval not to call the user's hook function just this one time. This allows the evaluation process to advance one step and yet insure that further calls to .i eval will cause traps to the hook function (if su_evalfunc is non-null). .br In order for \fIevalhook\fP to work, \fI(*rset\ t)\fP and \fI(sstatus\ evalhook\ t)\fP must have been done previously. .Lf exec "s_arg1 ..." .Re the result of forking and executing the command named by concatenating the s_arg\fIi\fP together with spaces in between. .Lf exece "'s_fname ['l_args ['l_envir]]" .Re the error code from the system if it was unable to execute the command s_fname with arguments l_args and with the environment set up as specified in l_envir. If this function is successful, it will not return, instead the lisp system will be overlaid by the new command. .Lf freturn "'x_pdl-pointer 'g_retval" .Re g_retval from the context given by x_pdl-pointer. .No A pdl-pointer denotes a certain expression currently being evaluated. The pdl-pointer for a given expression can be obtained from .i evalframe . .Lf frexp "'f_arg" .Re a list cell \fI(exponent . mantissa)\fP which represents the given flonum .No The exponent will be a fixnum, the mantissa a 56 bit bignum. If you think of the the binary point occurring right after the high order bit of mantissa, then f_arg\ =\ 2\*[exponent\*]\ *\ mantissa. .Lf funcall "'u_func ['g_arg1 ...]" .Re the value of applying function u_func to the arguments g_arg\fIi\fP and then evaluating that result if u_func is a macro. .No If u_func is a macro or nlambda then there should be only one g_arg. \fIfuncall\fP is the function which the evaluator uses to evaluate lists. If \fIfoo\fP is a lambda or lexpr or array, then \fI(funcall\ 'foo\ 'a\ 'b\ 'c)\fP is equivalent to \fI(foo\ 'a\ 'b\ 'c)\fP. If \fIfoo\fP is a nlambda then \fI(funcall\ 'foo\ '(a\ b\ c))\fP is equivalent to \fI(foo a b c)\fP. Finally, if .i foo is a macro then .i (funcall\ 'foo\ '(foo\ a\ b\ c)) is equivalent to .i (foo\ a\ b\ c) . .Lf funcallhook "'l_form 'su_funcallfunc ['su_evalfunc]" .Re the result of \fIfuncall\fPing the \fI(car\ l_form)\fP on the already evaluated arguments in the \fI(cdr\ l_form)\fP after lambda binding `funcallhook' to su_funcallfunc and, if it is given, lambda binding `evalhook' to su_evalhook. .No This function is designed to continue the evaluation process with as little work as possible after a funcallhook trap has occurred. It is for this reason that the form of l_form is unorthodox: its .i car is the name of the function to call and its .i cdr are a list of arguments to stack (without evaluating again) before calling the given function. After stacking the arguments but before calling .i funcall an internal switch is set to prevent \fIfuncall\fP from passing the job of funcalling to su_funcallfunc. If \fIfuncall\fP is called recursively in funcalling l_form and if su_funcallfunc is non-null, then the arguments to .i funcall will actually be given to su_funcallfunc (a lexpr) to be funcalled. .br In order for \fIevalhook\fP to work, \fI(*rset\ t)\fP and \fI(sstatus\ evalhook\ t)\fP must have been done previously. A more detailed description of .i evalhook and .i funcallhook is given in Chapter 14. .Lf function "u_func" .Re the function binding of u_func if it is an symbol with a function binding otherwise u_func is returned. .Lf getdisc "'y_func" .Re the discipline of the machine coded function (either lambda, nlambda or macro). .Lf go "g_labexp" .Wh g_labexp is either a symbol or an expression. .Se If g_labexp is an expression, that expression is evaluated and should result in a symbol. The locus of control moves to just following the symbol g_labexp in the current prog or do body. .No this is only valid in the context of a prog or do body. The interpreter and compiler will allow non-local .i go 's although the compiler won't allow a \fIgo\fP to leave a function body. The compiler will not allow g_labexp to be an expression. .Lf if "'g_a 'g_b" .Lx if "'g_a 'g_b 'g_c ..." .Lx if "'g_a \fBthen\fP 'g_b [...] [\fBelseif\fP 'g_c \fBthen\fP 'g_d ...] [\fBelse\fP 'g_e [...]" .Lx if "'g_a \fBthen\fP 'g_b [...] [\fBelseif\fP 'g_c \fBthenret\fP] [\fBelse\fP 'g_d [...]" .No The various forms of \fIif\fP are intended to be a more readable conditional statement, to be used in place of \fIcond\fP. There are two varieties of \fIif\fP, with keywords, and without. The keyword-less variety is inherited from common Maclisp usage. A keyword-less, two argument \fIif\fP is equivalent to a one-clause \fIcond\fP, i.e. (\fIcond\fP (a b)). Any other keyword-less \fIif\fP must have at least three arguments. The first two arguments are the first clause of the equivalent \fIcond\fP, and all remaining arguments are shoved into a second clause beginning with \fBt\fP. Thus, the second form of \fIif\fP is equivalent to .br (\fIcond\fP (a b) (t c ...)). .br .sp The keyword variety has the following grouping of arguments: a predicate, a then-clause, and optional else-clause. The predicate is evaluated, and if the result is non-nil, the then-clause will be performed, in the sense described below. Otherwise, (i.e. the result of the predicate evaluation was precisely nil), the else-clause will be performed. .br .sp Then-clauses will either consist entirely of the single keyword \fBthenret\fP, or will start with the keyword \fBthen\fP, and be followed by at least one general expression. (These general expressions must not be one of the keywords.) To actuate a \fBthenret\fP means to cease further evaluation of the \fIif\fP, and to return the value of the predicate just calculated. The performance of the longer clause means to evaluate each general expression in turn, and then return the last value calculated. .br .sp The else-clause may begin with the keyword \fBelse\fP and be followed by at least one general expression. The rendition of this clause is just like that of a then-clause. An else-clause may begin alternatively with the keyword \fBelseif\fP, and be followed (recursively) by a predicate, then-clause, and optional else-clause. Evaluation of this clause, is just evaluation of an \fIif\fP-form, with the same predicate, then- and else-clauses. .Lf I-throw-err "'l_token" .Wh l_token is the \fIcdr\fP of the value returned from a \fI*catch\fP with the tag ER%unwind-protect. .Re nothing (never returns in the current context) .Se The error or throw denoted by l_token is continued. .No This function is used to implement \fIunwind-protect\fP which allows the processing of a transfer of control though a certain context to be interrupted, a user function to be executed and than the transfer of control to continue. The form of l_token is either .br \fI(t tag value)\fP for a throw or .br \fI(nil type message valret contuab uniqueid [arg ...])\fP for an error. .br This function is not to be used for implementing throws or errors and is only documented here for completeness. .Lf let "l_args g_exp1 ... g_exprn" .Re the result of evaluating g_exprn within the bindings given by l_args. .No l_args is either nil (in which case .i let is just like .i progn ) or it is a list of binding objects. A binding object is a list \fI(symbol\ expression)\fP. When a .i let is entered, all of the expressions are evaluated and then simultaneously lambda-bound to the corresponding symbols. In effect, a .i let expression is just like a lambda expression except the symbols and their initial values are next to each other, making the expression easier to understand. There are some added features to the .i let expression: A binding object can just be a symbol, in which case the expression corresponding to that symbol is `nil'. If a binding object is a list and the first element of that list is another list, then that list is assumed to be a binding template and .i let will do a .i desetq on it. .Lf let* "l_args g_exp1 ... g_expn" .Re the result of evaluating g_exprn within the bindings given by l_args. .No This is identical to .i let except the expressions in the binding list l_args are evaluated and bound sequentially instead of in parallel. .Lf lexpr-funcall "'g_function ['g_arg1 ...] 'l_argn" .No This is a cross between funcall and apply. The last argument, must be a list (possibly empty). The element of list arg are stack and then the function is funcalled. .Ex (lexpr-funcall 'list 'a '(b c d)) is the same as (funcall 'list 'a 'b 'c 'd) .Lf listify "'x_count" .Re a list of x_count of the arguments to the current function (which must be a lexpr). .No normally arguments 1 through x_count are returned. If x_count is negative then a list of last abs(x_count) arguments are returned. .Lf map "'u_func 'l_arg1 ..." .Re l_arg1 .No The function u_func is applied to successive sublists of the l_arg\fIi\fP. All sublists should have the same length. .\".pg .Lf mapc "'u_func 'l_arg1 ..." .Re l_arg1. .No The function u_func is applied to successive elements of the argument lists. All of the lists should have the same length. .Lf mapcan "'u_func 'l_arg1 ..." .Re nconc applied to the results of the functional evaluations. .No The function u_func is applied to successive elements of the argument lists. All sublists should have the same length. .Lf mapcar "'u_func 'l_arg1 ..." .Re a list of the values returned from the functional application. .No the function u_func is applied to successive elements of the argument lists. All sublists should have the same length. .Lf mapcon "'u_func 'l_arg1 ..." .Re nconc applied to the results of the functional evaluation. .No the function u_func is applied to successive sublists of the argument lists. All sublists should have the same length. .Lf maplist "'u_func 'l_arg1 ..." .Re a list of the results of the functional evaluations. .No the function u_func is applied to successive sublists of the arguments lists. All sublists should have the same length. .lp Readers may find the following summary table useful in remembering the differences between the six mapping functions: .(b .TS box; c | c s s. \ Value returned is .T& c | c c c. T{ .na Argument to functional is .ad T} l_arg1 list of results \fInconc\fP of results _ .T& c | c c c. elements of list mapc mapcar mapcan sublists map maplist mapcon .TE .)b .Lf mfunction "t_entry 's_disc" .Re a lisp object of type binary composed of t_entry and s_disc. .No t_entry is a pointer to the machine code for a function, and s_disc is the discipline (e.g. lambda). .\".pg .Lf oblist .Re a list of all symbols on the oblist. .Lf or "[g_arg1 ... ]" .Re the value of the first non-null argument or nil if all arguments evaluate to nil. .No Evaluation proceeds left to right and stops as soon as one of the arguments evaluates to a non-null value. .Lf prog "l_vrbls g_exp1 ..." .Re the value explicitly given in a return form or else nil if no return is done by the time the last g_exp\fIi\fP is evaluated. .No the local variables are lambda-bound to nil, then the g_exp\fIi\fP are evaluated from left to right. This is a prog body (obviously) and this means than any symbols seen are not evaluated, but are treated as labels. This also means that return's and go's are allowed. .Lf prog1 "'g_exp1 ['g_exp2 ...]" .Re g_exp1 .Lf prog2 "'g_exp1 'g_exp2 ['g_exp3 ...]" .Re g_exp2 .No the forms are evaluated from left to right and the value of g_exp2 is returned. .Lf progn "'g_exp1 ['g_exp2 ...]" .Re the last g_exp\fIi\fP. .Lf progv "'l_locv 'l_initv g_exp1 ..." .Wh l_locv is a list of symbols and l_initv is a list of expressions. .Re the value of the last g_exp\fIi\fP evaluated. .No The expressions in l_initv are evaluated from left to right and then lambda-bound to the symbols in l_locv. If there are too few expressions in l_initv then the missing values are assumed to be nil. If there are too many expressions in l_initv then the extra ones are ignored (although they are evaluated). Then the g_exp\fIi\fP are evaluated left to right. The body of a progv is like the body of a progn, it is .i not a prog body. (C.f. .i let ) .Lf purcopy "'g_exp" .Re a copy of g_exp with new pure cells allocated wherever possible. .No pure space is never swept up by the garbage collector, so this should only be done on expressions which are not likely to become garbage in the future. In certain cases, data objects in pure space become read-only after a .i dumplisp and then an attempt to modify the object will result in an illegal memory reference. .Lf purep "'g_exp" .Re t iff the object g_exp is in pure space. .Lf putd "'s_name 'u_func" .Re u_func .Se this sets the function binding of symbol s_name to u_func. .Lf return "['g_val]" .Re g_val (or nil if g_val is not present) from the enclosing prog or do body. .No this form is only valid in the context of a prog or do body. .Lf selectq "'g_key-form [l_clause1 ...]" .No This function is just like \fIcaseq\fP (see above), except that the symbol \fBotherwise\fP has the same semantics as the symbol \fBt\fP, when used as a comparator. .Lf setarg "'x_argnum 'g_val" .Wh x_argnum is greater than zero and less than or equal to the number of arguments to the lexpr. .Re g_val .Se the lexpr's x_argnum'th argument is set to g-val. .No this can only be used within the body of a lexpr. .Lf throw "'g_val [s_tag]" .Wh if s_tag is not given, it is assumed to be nil. .Re the value of \fI(*throw 's_tag 'g_val)\fP. .Lf *throw "'s_tag 'g_val" .Re g_val from the first enclosing catch with the tag s_tag or with no tag at all. .No this is used in conjunction with .i *catch to cause a clean jump to an enclosing context. .Lf unwind-protect "g_protected [g_cleanup1 ...]" .Re the result of evaluating g_protected. .No Normally g_protected is evaluated and its value remembered, then the g_cleanup\fIi\fP are evaluated and finally the saved value of g_protected is returned. If something should happen when evaluating g_protected which causes control to pass through g_protected and thus through the call to the unwind-protect, then the g_cleanup\fIi\fP will still be evaluated. This is useful if g_protected does something sensitive which must be cleaned up whether or not g_protected completes. ve a function body. The compiler will not allow g_labexp to be an expression. .Lf if "'g_a 'g_b" .Lx if "'g_a 'g_b 'g_c ..." .Lx if "'g_a \fBthen\fP 'g_b [...] [\fBelseif\fP 'g_c \fBthen\fP 'g_d ...] [\fBelse\fP 'doc/ps2/09.lisp/ch5.n 444 3 12 45222 3655277256 7404 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch5.n 6.1 (Berkeley) 4/29/86 .\" ." $Header: ch5.n,v 1.3 83/07/23 12:40:05 layer Exp $ .Lc Input/Output 5 .pp The following functions are used to read from and write to external devices (e.g. files) and programs (through pipes). All I/O goes through the lisp data type called the port. A port may be open for either reading or writing, but usually not both simultaneously (see .i fileopen ). There are only a limited number of ports (20) and they will not be reclaimed unless they are .i close d. All ports are reclaimed by a .i resetio call, but this drastic step won't be necessary if the program closes what it uses. .pp If a port argument is not supplied to a function which requires one, or if a bad port argument (such as nil) is given, then .Fr will use the default port according to this scheme: If input is being done then the default port is the value of the symbol .b piport and if output is being done then the default port is the value of the symbol .b poport . Furthermore, if the value of piport or poport is not a valid port, then the standard input or standard output will be used, respectively. .pp The standard input and standard output are usually the keyboard and terminal display unless your job is running in the background and its input or output is connected to a pipe. All output which goes to the standard output will also go to the port .b ptport if it is a valid port. Output destined for the standard output will not reach the standard output if the symbol .b ^w is non nil (although it will still go to .b ptport if .b ptport is a valid port). .pp Some of the functions listed below reference files directly. .Fr has borrowed a convenient shorthand notation from .i /bin/csh , concerning naming files. If a file name begins with ~ (tilde), and the symbol .b tilde-expansion is bound to something other than nil, then .Fr expands the file name. It takes the string of characters between the leading tilde, and the first slash as a user-name. Then, that initial segment of the filename is replaced by the home directory of the user. The null username is taken to be the current user. .pp .Fr keeps a cache of user home directory information, to minimize searching the password file. Tilde-expansion is performed in the following functions: \fIcfasl, chdir, fasl, ffasl, fileopen, infile, load, outfile, probef, sys:access, sys:unlink\fP. .Lf cfasl "'st_file 'st_entry 'st_funcname ['st_disc ['st_library]]" .Re t .Se This is used to load in a foreign function (see \(sc8.4). The object file st_file is loaded into the lisp system. St_entry should be an entry point in the file just loaded. The function binding of the symbol s_funcname will be set to point to st_entry, so that when the lisp function s_funcname is called, st_entry will be run. st_disc is the discipline to be given to s_funcname. st_disc defaults to "subroutine" if it is not given or if it is given as nil. If st_library is non-null, then after st_file is loaded, the libraries given in st_library will be searched to resolve external references. The form of st_library should be something like "-lm". The C library (" -lc " ) is always searched so when loading in a C file you probably won't need to specify a library. For Fortran files, you should specify "-lF77" and if you are doing any I/O, the library entry should be "-lI77 -lF77". For Pascal files "-lpc" is required. .No This function may be used to load the output of the assembler, C compiler, Fortran compiler, and Pascal compiler but NOT the lisp compiler (use .i fasl for that). If a file has more than one entry point, then use .i getaddress to locate and setup other foreign functions. .br It is an error to load in a file which has a global entry point of the same name as a global entry point in the running lisp. As soon as you load in a file with .i cfasl , its global entry points become part of the lisp's entry points. Thus you cannot .i cfasl in the same file twice unless you use .i removeaddress to change certain global entry points to local entry points. .Lf close "'p_port" .Re t .Se the specified port is drained and closed, releasing the port. .No The standard defaults are not used in this case since you probably never want to close the standard output or standard input. .Lf cprintf "'st_format 'xfst_val ['p_port]" .Re xfst_val .Se The UNIX formatted output function printf is called with arguments st_format and xfst_val. If xfst_val is a symbol then its print name is passed to printf. The format string may contain characters which are just printed literally and it may contain special formatting commands preceded by a percent sign. The complete set of formatting characters is described in the UNIX manual. Some useful ones are %d for printing a fixnum in decimal, %f or %e for printing a flonum, and %s for printing a character string (or print name of a symbol). .Ex \fI(cprintf "Pi equals %f" 3.14159)\fP prints `Pi equals 3.14159' .Lf drain "['p_port]" .Re nil .Se If this is an output port then the characters in the output buffer are all sent to the device. If this is an input port then all pending characters are flushed. The default port for this function is the default output port. .Lf ex "[s_filename]" .Lx vi "[s_filename]" .Lx exl "[s_filename]" .Lx vil "[s_filename]" .Re nil .Se The lisp system starts up an editor on the file named as the argument. It will try appending .l to the file if it can't find it. The functions \fIexl\fP and \fIvil\fP will load the file after you finish editing it. These functions will also remember the name of the file so that on subsequent invocations, you don't need to provide the argument. .No These functions do not evaluate their argument. .Lf fasl "'st_name ['st_mapf ['g_warn]]" .Wh st_mapf and g_warn default to nil. .Re t if the function succeeded, nil otherwise. .Se this function is designed to load in an object file generated by the lisp compiler Liszt. File names for object files usually end in `.o', so .i fasl will append `.o' to st_name (if it is not already present). If st_mapf is non nil, then it is the name of the map file to create. .i Fasl writes in the map file the names and addresses of the functions it loads and defines. Normally the map file is created (i.e. truncated if it exists), but if \fI(sstatus\ appendmap\ t)\fP is done then the map file will be appended. If g_warn is non nil and if a function is loaded from the file which is already defined, then a warning message will be printed. .No .i fasl only looks in the current directory for the file to load. The function .i load looks through a user-supplied search path and will call .i fasl if it finds a file with the same root name and a `.o' extension. In most cases the user would be better off using the function .i load rather than calling .i fasl directly. .Lf ffasl "'st_file 'st_entry 'st_funcname ['st_discipline ['st_library]]" .Re the binary object created. .Se the Fortran object file st_file is loaded into the lisp system. St_entry should be an entry point in the file just loaded. A binary object will be created and its entry field will be set to point to st_entry. The discipline field of the binary will be set to st_discipline or "subroutine" by default. If st_library is present and non-null, then after st_file is loaded, the libraries given in st_library will be searched to resolve external references. The form of st_library should be something like "-lS -ltermcap". In any case, the standard Fortran libraries will be searched also to resolve external references. .No in F77 on Unix, the entry point for the fortran function foo is named `_foo_'. .Lf filepos "'p_port ['x_pos]" .Re the current position in the file if x_pos is not given or else x_pos if x_pos is given. .Se If x_pos is given, the next byte to be read or written to the port will be at position x_pos. .Lf filestat 'st_filename .Re a vector containing various numbers which the UNIX operating system assigns to files. if the file doesn't exist, an error is invoked. Use \fIprobef\fP to determine if the file exists. .No The individual entries can be accesed by mnemonic functions of the form filestat:\fIfield\fP, where field may be any of atime, ctime, dev, gid, ino, mode,mtime, nlink, rdev, size, type, uid. See the UNIX programmers manual for a more detailed description of these quantities. .Lf flatc "'g_form ['x_max]" .Re the number of characters required to print g_form using \fIpatom\fP. If x_max is given and if \fIflatc\fP determines that it will return a value greater than x_max, then it gives up and returns the current value it has computed. This is useful if you just want to see if an expression is larger than a certain size. .Lf flatsize "'g_form ['x_max]" .Re the number of characters required to print g_form using \fIprint\fP. The meaning of x_max is the same as for flatc. .No Currently this just .i explode 's g_form and checks its length. .Lf fileopen "'st_filename 'st_mode" .Re a port for reading or writing (depending on st_mode) the file st_name. .Se the given file is opened (or created if opened for writing and it doesn't yet exist). .No this function call provides a direct interface to the operating system's fopen function. The mode may be more than just "r" for read, "w" for write or "a" for append. The modes "r+", "w+" and "a+" permit both reading and writing on a port provided that .i fseek is done between changes in direction. See the UNIX manual description of fopen for more details. This routine does not look through a search path for a given file. .Lf fseek "'p_port 'x_offset 'x_flag" .Re the position in the file after the function is performed. .Se this function positions the read/write pointer before a certain byte in the file. If x_flag is 0 then the pointer is set to x_offset bytes from the beginning of the file. If x_flag is 1 then the pointer is set to x_offset bytes from the current location in the file. If x_flag is 2 then the pointer is set to x_offset bytes from the end of the file. .Lf infile "'s_filename" .Re a port ready to read s_filename. .Se this tries to open s_filename and if it cannot or if there are no ports available it gives an error message. .No to allow your program to continue on a file-not-found error, you can use something like: .br \fI(cond ((null (setq myport (car (errset (infile name) nil)))) .br \ \ \ \ \ \ \ \ \ \ \ \ (patom '"couldn't open the file")))\fP .br which will set myport to the port to read from if the file exists or will print a message if it couldn't open it and also set myport to nil. To simply determine if a file exists, use .i probef . .Lf load "'s_filename ['st_map ['g_warn]]" .Re t .No The function of .i load has changed since previous releases of .Fr and the following description should be read carefully. .Se .i load now serves the function of both .i fasl and the old .i load . .i Load will search a user defined search path for a lisp source or object file with the filename s_filename (with the extension .l or .o added as appropriate). The search path which .i load uses is the value of \fI(status\ load-search-path)\fP. The default is (|.|\ /usr/lib/lisp) which means look in the current directory first and then /usr/lib/lisp. The file which .i load looks for depends on the last two characters of s_filename. If s_filename ends with ".l" then .i load will only look for a file name s_filename and will assume that this is a .Fr source file. If s_filename ends with ".o" then .i load will only look for a file named s_filename and will assume that this is a .Fr object file to be .i fasl ed in. Otherwise, .i load will first look for s_filename.o, then s_filename.l and finally s_filename itself. If it finds s_filename.o it will assume that this is an object file, otherwise it will assume that it is a source file. An object file is loaded using .i fasl and a source file is loaded by reading and evaluating each form in the file. The optional arguments st_map and g_warn are passed to .i fasl should .i fasl be called. .No \fIload\fP requires a port to open the file s_filename. It then lambda binds the symbol piport to this port and reads and evaluates the forms. .Lf makereadtable "['s_flag]" .Wh if s_flag is not present it is assumed to be nil. .Re a readtable equal to the original readtable if s_flag is non-null, or else equal to the current readtable. See chapter 7 for a description of readtables and their uses. .Lf msg "[l_option ...] ['g_msg ...]" .No This function is intended for printing short messages. Any of the arguments or options presented can be used any number of times, in any order. The messages themselves (g_msg) are evaluated, and then they are transmitted to .i patom . Typically, they are strings, which evaluate to themselves. The options are interpreted specially: .Eb \fImsg Option Summary\fP \fI(P\ p_portname)\fP causes subsequent output to go to the port p_portname (port should be opened previously) \fIB\fP print a single blank. \fI(B\ 'n_b)\fP\ \ evaluate n_b and print that many blanks. \fIN\fP print a single by calling \fIterpr\fP. \fI(N\ 'n_n)\fP\ \ evaluate n_n and transmit that many newlines to the stream. \fID\fP \fIdrain\fP the current port. .Ee .Lf nwritn "['p_port]" .Re the number of characters in the buffer of the given port but not yet written out to the file or device. The buffer is flushed automatically when filled, or when .i terpr is called. .Lf outfile "'s_filename ['st_type]" .Re a port or nil .Se this opens a port to write s_filename. If st_type is given and if it is a symbol or string whose name begins with `a', then the file will be opened in append mode, that is the current contents will not be lost and the next data will be written at the end of the file. Otherwise, the file opened is truncated by \fIoutfile\fP if it existed beforehand. If there are no free ports, outfile returns nil. If one cannot write on s_filename, an error is signalled. .\".pg .Lf patom "'g_exp ['p_port]" .Re g_exp .Se g_exp is printed to the given port or the default port. If g_exp is a symbol or string, the print name is printed without any escape characters around special characters in the print name. If g_exp is a list then \fIpatom\fP has the same effect as \fIprint\fP. .Lf pntlen "'xfs_arg" .Re the number of characters needed to print xfs_arg. .Lf portp "'g_arg" .Re t iff g_arg is a port. .Lf pp "[l_option] s_name1 ..." .Re t .Se If s_name\fIi\fP has a function binding, it is pretty-printed, otherwise if s_name\fIi\fP has a value then that is pretty-printed. Normally the output of the pretty-printer goes to the standard output port poport. The options allow you to redirect it. .Eb \fIPP Option Summary\fP \fI(F\ s_filename)\fP direct future printing to s_filename \fI(P\ p_portname)\fP causes output to go to the port p_portname (port should be opened previously) \fI(E\ g_expression)\fP evaluate g_expression and don't print .Ee .Lf princ "'g_arg ['p_port]" .Eq patom. .Lf print "'g_arg ['p_port]" .Re nil .Se prints g_arg on the port p_port or the default port. .Lf probef "'st_file" .Re t iff the file st_file exists. .No Just because it exists doesn't mean you can read it. .Lf pp-form "'g_form ['p_port]" .Re t .Se g_form is pretty-printed to the port p_port (or poport if p_port is not given). This is the function which \fIpp\fP uses. \fIpp-form\fP does not look for function definitions or values of variables, it just prints out the form it is given. .No This is useful as a top-level-printer, c.f. .i top-level in Chapter 6. .Lf ratom "['p_port ['g_eof]]" .Re the next atom read from the given or default port. On end of file, g_eof (default nil) is returned. .Lf read "['p_port ['g_eof]]" .Re the next lisp expression read from the given or default port. On end of file, g_eof (default nil) is returned. .No An error will occur if the reader is given an ill formed expression. The most common error is too many right parentheses (note that this is not considered an error in Maclisp). .Lf readc "['p_port ['g_eof]]" .Re the next character read from the given or default port. On end of file, g_eof (default nil) is returned. .Lf readlist "'l_arg" .Re the lisp expression read from the list of characters in l_arg. .Lf removeaddress "'s_name1 ['s_name2 ...]" .Re nil .Se the entries for the s_name\fIi\fP in the Lisp symbol table are removed. This is useful if you wish to .i cfasl or .i ffasl in a file twice, since it is illegal for a symbol in the file you are loading to already exist in the lisp symbol table. .Lf resetio .Re nil .Se all ports except the standard input, output and error are closed. .Lf setsyntax "'s_symbol 's_synclass ['ls_func]" .Re t .Se this sets the code for s_symbol to sx_code in the current readtable. If s_synclass is .i macro or .i splicing then ls_func is the associated function. See Chapter 7 on the reader for more details. .Lf sload "'s_file" .Se the file s_file (in the current directory) is opened for reading and each form is read, printed and evaluated. If the form is recognizable as a function definition, only its name will be printed, otherwise the whole form is printed. .No This function is useful when a file refuses to load because of a syntax error and you would like to narrow down where the error is. .Lf tab "'x_col ['p_port]" .Se enough spaces are printed to put the cursor on column x_col. If the cursor is beyond x_col to start with, a .i terpr is done first. .Lf terpr "['p_port]" .Re nil .Se a terminate line character sequence is sent to the given port or the default port. This will also drain the port. .Lf terpri "['p_port]" .Eq terpr. .Lf tilde-expand 'st_filename .Re a symbol whose pname is the tilde-expansion of the argument, (as discussed at the beginning of this chapter). If the argument does not begin with a tilde, the argument itself is returned. .Lf tyi "['p_port]" .Re the fixnum representation of the next character read. On end of file, -1 is returned. .Lf tyipeek "['p_port]" .Re the fixnum representation of the next character to be read. .No This does not actually read the character, it just peeks at it. .Lf tyo "'x_char ['p_port]" .Re x_char. .Se the character whose fixnum representation is x_code, is printed as a on the given output port or the default output port. .Lf untyi "'x_char ['p_port]" .Se x_char is put back in the input buffer so a subsequent .i tyi or .i read will read it first. .No a maximum of one character may be put back. .Lf username-to-dir 'st_name .Re the home directory of the given user. The result is stored, to avoid unnecessarily searching the password file. .Lf zapline .Re nil .Se all characters up to and including the line termination character are read and discarded from the last port used for input. .No this is used as the macro function for the semicolon character when it acts as a comment character. want to see if an expression is larger than a certain size. .Lf flatsize "'g_form ['x_max]" .Re the number of characters required to print g_form using \fIprint\fP. The meaning of x_max is the same as for flatc. .No Currently this just .i explode 's g_form and checks its length. .Lf fileopen "'st_filename 'st_mode" .Re a port for reading or writing (depending on doc/ps2/09.lisp/ch6.n 444 3 12 52222 3655277317 7401 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch6.n 6.1 (Berkeley) 4/29/86 .\" ." $Header: ch6.n,v 1.4 83/07/21 21:08:16 sklower Exp $ .Lc System\ Functions 6 .pp This chapter describes the functions used to interact with internal components of the Lisp system and operating system. .Lf allocate "'s_type 'x_pages" .Wh s_type is one of the .Fr data types described in \(sc1.3. .Re x_pages. .Se .Fr attempts to allocate x_pages of type s_type. If there aren't x_pages of memory left, no space will be allocated and an error will occur. The storage that is allocated is not given to the caller, instead it is added to the free storage list of s_type. The functions .i segment and .i small-segment allocate blocks of storage and return it to the caller. .Lf argv "'x_argnumb" .Re a symbol whose pname is the x_argnumb\fIth\fP argument (starting at 0) on the command line which invoked the current lisp. .No if x_argnumb is less than zero, a fixnum whose value is the number of arguments on the command line is returned. \fI(argv\ 0)\fP returns the name of the lisp you are running. .Lf baktrace .Re nil .Se the lisp runtime stack is examined and the name of (most) of the functions currently in execution are printed, most active first. .No this will occasionally miss the names of compiled lisp functions due to incomplete information on the stack. If you are tracing compiled code, then \fIbaktrace\fP won't be able to interpret the stack unless .i (sstatus\ translink\ nil) was done. See the function .i showstack for another way of printing the lisp runtime stack. This misspelling is from Maclisp. .Lf chdir "'s_path" .Re t iff the system call succeeds. .Se the current directory set to s_path. Among other things, this will affect the default location where the input/output functions look for and create files. .No \fIchdir\fP follows the standard UNIX conventions, if s_path does not begin with a slash, the default path is changed to the current path with s_path appended. .i Chdir employs tilde-expansion (discussed in Chapter 5). .Lf command-line-args .Re a list of the arguments typed on the command line, either to the lisp interpreter, or saved lisp dump, or application compiled with the autorun option (liszt -r). .Lf deref "'x_addr" .Re The contents of x_addr, when thought of as a longword memory location. .No This may be useful in constructing arguments to C functions out of `dangerous' areas of memory. .Lf dumplisp "s_name" .Re nil .Se the current lisp is dumped to the named file. When s_name is executed, you will be in a lisp in the same state as when the dumplisp was done. .No dumplisp will fail if one tries to write over the current running file. UNIX does not allow you to modify the file you are running. .Lf eval-when "l_time g_exp1 ..." .Se l_time may contain any combination of the symbols .i load , .i eval , and .i compile . The effects of load and compile is discussed in \(sc12.3.2.1 compiler. If eval is present however, this simply means that the expressions g_exp1 and so on are evaluated from left to right. If eval is not present, the forms are not evaluated. .Lf exit "['x_code]" .Re nothing (it never returns). .Se the lisp system dies with exit code x_code or 0 if x_code is not specified. .Lf fake "'x_addr" .Re the lisp object at address x_addr. .No This is intended to be used by people debugging the lisp system. .Lf fork .Re nil to the child process and the process number of the child to the parent. .Se A copy of the current lisp system is made in memory and both lisp systems now begin to run. This function can be used interactively to temporarily save the state of Lisp (as shown below), but you must be careful that only one of the lisp's interacts with the terminal after the fork. The .i wait function is useful for this. .Eb \-> \fI(setq foo 'bar)\fP ;; set a variable bar \-> \fI(cond ((fork)(wait)))\fP ;; duplicate the lisp system and nil ;; make the parent wait \-> \fIfoo\fP ;; check the value of the variable bar \-> \fI(setq foo 'baz)\fP ;; give it a new value baz \-> \fIfoo\fP ;; make sure it worked baz \-> \fI(exit)\fP ;; exit the child (5274 . 0) ;; the \fIwait\fP function returns this \-> \fIfoo\fP ;; we check to make sure parent was bar ;; not modified. .Ee .Lf gc .Re nil .Se this causes a garbage collection. .No The function .i gcafter is not called automatically after this function finishes. Normally the user doesn't have to call .i gc since garbage collection occurs automatically whenever internal free lists are exhausted. .Lf gcafter "s_type" .Wh s_type is one of the .Fr data types listed in \(sc1.3. .No this function is called by the garbage collector after a garbage collection which was caused by running out of data type s_type. This function should determine if more space need be allocated and if so should allocate it. There is a default gcafter function but users who want control over space allocation can define their own -- but note that it must be an nlambda. .Lf getenv "'s_name" .Re a symbol whose pname is the value of s_name in the current UNIX environment. If s_name doesn't exist in the current environment, a symbol with a null pname is returned. .Lf hashtabstat .Re a list of fixnums representing the number of symbols in each bucket of the oblist. .No the oblist is stored a hash table of buckets. Ideally there would be the same number of symbols in each bucket. .Lf help "[sx_arg]" .Se If sx_arg is a symbol then the portion of this manual beginning with the description of sx_arg is printed on the terminal. If sx_arg is a fixnum or the name of one of the appendicies, that chapter or appendix is printed on the terminal. If no argument is provided, .i help prints the options that it recognizes. The program `more' is used to print the manual on the terminal; it will stop after each page and will continue after the space key is pressed. .Lf include "s_filename" .Re nil .Se The given filename is .i load ed into the lisp. .No this is similar to load except the argument is not evaluated. Include means something special to the compiler. .Lf include-if "'g_predicate s_filename" .Re nil .Se This has the same effect as include, but is only actuated if the predicate is non-nil. .Lf includef "'s_filename" .Re nil .Se this is the same as .i include except the argument is evaluated. .Lf includef-if "'g_predicate s_filename" .Re nil .Se This has the same effect as includef, but is only actuated if the predicate is non-nil. .Lf maknum "'g_arg" .Re the address of its argument converted into a fixnum. .Lf monitor "['xs_maxaddr]" .Re t .Se If xs_maxaddr is t then profiling of the entire lisp system is begun. If xs_maxaddr is a fixnum then profiling is done only up to address xs_maxaddr. If xs_maxaddr is not given, then profiling is stopped and the data obtained is written to the file 'mon.out' where it can be analyzed with the UNIX 'prof' program. .No this function only works if the lisp system has been compiled in a special way, otherwise, an error is invoked. .Lf opval "'s_arg ['g_newval]" .Re the value associated with s_arg before the call. .Se If g_newval is specified, the value associated with s_arg is changed to g_newval. .No \fIopval\fP keeps track of storage allocation. If s_arg is one of the data types then \fIopval\fP will return a list of three fixnums representing the number of items of that type in use, the number of pages allocated and the number of items of that type per page. You should never try to change the value \fIopval\fP associates with a data type using \fIopval\fP. .br If s_arg is .i pagelimit then .i opval will return (and set if g_newval is given) the maximum amount of lisp data pages it will allocate. This limit should remain small unless you know your program requires lots of space as this limit will catch programs in infinite loops which gobble up memory. .Lf *process "'st_command ['g_readp ['g_writep]]" .Re either a fixnum if one argument is given, or a list of two ports and a fixnum if two or three arguments are given. .No \fI*process\fP starts another process by passing st_command to the shell (it first tries /bin/csh, then it tries /bin/sh if /bin/csh doesn't exist). If only one argument is given to \fI*process\fP, \fI*process\fP waits for the new process to die and then returns the exit code of the new process. If more two or three arguments are given, \fI*process\fP starts the process and then returns a list which, depending on the value of g_readp and g_writep, may contain i/o ports for communcating with the new process. If g_writep is non-null, then a port will be created which the lisp program can use to send characters to the new process. If g_readp is non-null, then a port will be created which the lisp program can use to read characters from the new process. The value returned by \fI*process\fP is (readport\ writeport\ pid) where readport and writeport are either nil or a port based on the value of g_readp and g_writep. Pid is the process id of the new process. Since it is hard to remember the order of g_readp and g_writep, the functions \fI*process-send\fP and \fI*process-receive\fP were written to perform the common functions. .Lf *process-receive "'st_command" .Re a port which can be read. .Se The command st_command is given to the shell and it is started running in the background. The output of that command is available for reading via the port returned. The input of the command process is set to /dev/null. .Lf *process-send "'st_command" .Re a port which can be written to. .Se The command st_command is given to the shell and it is started runing in the background. The lisp program can provide input for that command by sending characters to the port returned by this function. The output of the command process is set to /dev/null. .Lf process "s_pgrm [s_frompipe s_topipe]" .Re if the optional arguments are not present a fixnum which is the exit code when s_prgm dies. If the optional arguments are present, it returns a fixnum which is the process id of the child. .No This command is obsolete. New programs should use one of the \fI*process\fP commands given above. .Se If s_frompipe and s_topipe are given, they are bound to ports which are pipes which direct characters from .Fr to the new process and to .Fr from the new process respectively. .i Process forks a process named s_prgm and waits for it to die iff there are no pipe arguments given. .Lf ptime .Re a list of two elements. The first is the amount of processor time used by the lisp system so far, and the second is the amount of time used by the garbage collector so far. .No the time is measured in those units used by the .i times (2) system call, usually 60\fIth\fPs of a second. The first number includes the second number. The amount of time used by garbage collection is not recorded until the first call to ptime. This is done to prevent overhead when the user is not interested in garbage collection times. .Lf reset .Se the lisp runtime stack is cleared and the system restarts at the top level by executing a \fI(funcall\ top-level\ nil)\fP. .Lf restorelisp "'s_name" .Se this reads in file s_name (which was created by .i savelisp ) and then does a \fI(reset)\fP. .No This is only used on VMS systems where .i dumplisp cannot be used. .Lf retbrk "['x_level] .Wh x_level is a small integer of either sign. .Se The default error handler keeps a notion of the current level of the error caught. If x_level is negative, control is thrown to this default error handler whose level is that many less than the present, or to \fItop-level\fP if there aren't enough. If x_level is non-negative, control is passed to the handler at that level. If x_level is not present, the value -1 is taken by default. .Lf *rset "'g_flag" .Re g_flag .Se If g_flag is non nil then the lisp system will maintain extra information about calls to \fIeval\fP and \fIfuncall\fP. This record keeping slows down the evaluation but this is required for the functions \fIevalhook\fP, \fIfuncallhook\fP, and \fIevalframe\fP to work. To debug compiled lisp code the transfer tables should be unlinked: \fI(sstatus\ translink\ nil)\fP .Lf savelisp "'s_name" .Re t .Se the state of the Lisp system is saved in the file s_name. It can be read in by .i restorelisp . .No This is only used on VMS systems where .i dumplisp cannot be used. .Lf segment "'s_type 'x_size" .Wh s_type is one of the data types given in \(sc1.3 .Re a segment of contiguous lispvals of type s_type. .No In reality, .i segment returns a new data cell of type s_type and allocates space for x_size \- 1 more s_type's beyond the one returned. .i Segment always allocates new space and does so in 512 byte chunks. If you ask for 2 fixnums, segment will actually allocate 128 of them thus wasting 126 fixnums. The function .i small-segment is a smarter space allocator and should be used whenever possible. .Lf shell .Re the exit code of the shell when it dies. .Se this forks a new shell and returns when the shell dies. .Lf showstack .Re nil .Se all forms currently in evaluation are printed, beginning with the most recent. For compiled code the most that showstack will show is the function name and it may miss some functions. .Lf signal "'x_signum 's_name" .Re nil if no previous call to signal has been made, or the previously installed s_name. .Se this declares that the function named s_name will handle the signal number x_signum. If s_name is nil, the signal is ignored. Presently only four UNIX signals are caught. They and their numbers are: Interrupt(2), Floating exception(8), Alarm(14), and Hang-up(1). .Lf sizeof "'g_arg" .Re the number of bytes required to store one object of type g_arg, encoded as a fixnum. .Lf small-segment "'s_type 'x_cells" .Wh s_type is one of fixnum, flonum and value. .Re a segment of x_cells data objects of type s_type. .Se This may call .i segment to allocate new space or it may be able to fill the request on a page already allocated. The value returned by .i small-segment is usually stored in the data subpart of an array object. .Lf sstatus "g_type g_val" .Re g_val .Se If g_type is not one of the special sstatus codes described in the next few pages this simply sets g_val as the value of status type g_type in the system status property list. .Lf sstatus\ appendmap "g_val" .Re g_val .Se If g_val is non-null when .i fasl is told to create a load map, it will append to the file name given in the .i fasl command, rather than creating a new map file. The initial value is nil. .Lf sstatus\ automatic-reset "g_val" .Re g_val .Se If g_val is non-null when an error occurs which no one wants to handle, a .i reset will be done instead of entering a primitive internal break loop. The initial value is t. .Lf sstatus\ chainatom "g_val" .Re g_val .Se If g_val is non nil and a .i car or .i cdr of a symbol is done, then nil will be returned instead of an error being signaled. This only affects the interpreter, not the compiler. The initial value is nil. .Lf sstatus\ dumpcore "g_val" .Re g_val .Se If g_val is nil, .Fr tells UNIX that a segmentation violation or bus error should cause a core dump. If g_val is non nil then .Fr will catch those errors and print a message advising the user to reset. .No The initial value for this flag is nil, and only those knowledgeable of the innards of the lisp system should ever set this flag non nil. .Lf sstatus\ dumpmode "x_val" .Re x_val .Se All subsequent .i dumplisp 's will be done in mode x_val. x_val may be either 413 or 410 (decimal). .No the advantage of mode 413 is that the dumped Lisp can be demand paged in when first started, which will make it start faster and disrupt other users less. The initial value is 413. .Lf sstatus\ evalhook "g_val" .Re g_val .Se When g_val is non nil, this enables the evalhook and funcallhook traps in the evaluator. See \(sc14.4 for more details. .Lf sstatus\ feature "g_val" .Re g_val .Se g_val is added to the \fI(status\ features)\fP list, .Lf sstatus\ gcstrings "g_val" .Re g_val .Se if g_val is non-null, and if string garbage collection was enabled when the lisp system was compiled, string space will be garbage collected. .No the default value for this is nil since in most applications garbage collecting strings is a waste of time. .Lf sstatus\ ignoreeof "g_val" .Re g_val .Se If g_val is non-null when an end of file (CNTL-D on UNIX) is typed to the standard top-level interpreter, it will be ignored rather then cause the lisp system to exit. If the the standard input is a file or pipe then this has no effect, an EOF will always cause lisp to exit. The initial value is nil. .Lf sstatus\ nofeature "g_val" .Re g_val .Se g_val is removed from the status features list if it was present. .Lf sstatus\ translink "g_val" .Re g_val .Se If g_val is nil then all transfer tables are cleared and further calls through the transfer table will not cause the fast links to be set up. If g_val is the symbol .i on then all possible transfer table entries will be linked and the flag will be set to cause fast links to be set up dynamically. Otherwise all that is done is to set the flag to cause fast links to be set up dynamically. The initial value is nil. .No For a discussion of transfer tables, see \(sc12.8. .Lf sstatus\ uctolc "g_val" .Re g_val .Se If g_val is not nil then all unescaped capital letters in symbols read by the reader will be converted to lower case. .No This allows .Fr to be compatible with single case lisp systems (e.g. Maclisp, Interlisp and UCILisp). .Lf status "g_code" .Re the value associated with the status code g_code if g_code is not one of the special cases given below .Lf status\ ctime .Re a symbol whose print name is the current time and date. .Ex \fI(status ctime)\fP = |Sun Jun 29 16:51:26 1980| .No This has been made obsolete by \fItime-string\fP, described below. .Lf status\ feature "g_val" .Re t iff g_val is in the status features list. .Lf status\ features .Re the value of the features code, which is a list of features which are present in this system. You add to this list with \fI(sstatus\ feature\ 'g_val)\fP and test if feature g_feat is present with \fI(status\ feature\ 'g_feat)\fP. .Lf status\ isatty .Re t iff the standard input is a terminal. .Lf status\ localtime .Re a list of fixnums representing the current time. .Ex \fI(status localtime)\fP = (3 51 13 31 6 81 5 211 1) .br means 3\fIrd\fP second, 51\fIst\fP minute, 13\fIth\fP hour (1 p.m), 31\fIst\fP day, month 6 (0\ =\ January), year 81 (0\ =\ 1900), day of the week 5 (0\ =\ Sunday), 211\fIth\fP day of the year and daylight savings time is in effect. .Lf status\ syntax "s_char" .No This function should not be used. See the description of .i getsyntax (in Chapter 7) for a replacement. .Lf status\ undeffunc .Re a list of all functions which transfer table entries point to but which are not defined at this point. .No Some of the undefined functions listed could be arrays which have yet to be created. .Lf status\ version .Re a string which is the current lisp version name. .Ex \fI(status version)\fP = "Franz Lisp, Opus 38.61" .Lf syscall "'x_index ['xst_arg1 ...]" .Re the result of issuing the UNIX system call number x_index with arguments xst_arg\fIi\fP. .No The UNIX system calls are described in section 2 of the UNIX Programmer's manual. If xst_arg\fIi\fP is a fixnum, then its value is passed as an argument, if it is a symbol then its pname is passed and finally if it is a string then the string itself is passed as an argument. Some useful syscalls are: .br \fI(syscall\ 20)\fP returns process id. .br \fI(syscall\ 13)\fP returns the number of seconds since Jan 1, 1970. .br \fI(syscall\ 10\ 'foo)\fP will unlink (delete) the file foo. .Lf sys:access "'st_filename 'x_mode" .Lx sys:chmod "'st_filename 'x_mode" .Lx sys:gethostname .Lx sys:getpid .Lx sys:getpwnam 'st_username .Lx sys:link "'st_oldfilename 'st_newfilename" .Lx sys:time .Lx sys:unlink 'st_filename .No We have been warned that the actual system call numbers may vary among different UNIX systems. Users concerned about portability may wish to use this group of functions. Another advantage is that tilde-expansion is performed on all filename arguments. These functions do what is described in the system call section of your UNIX manual. .br .sp .i sys:getpwnam returns a vector of four entries from the password file, being the user name, user id, group id, and home directory. .Lf time-string "['x_seconds]" .Re an ascii string giving the time and date which was x_seconds after UNIX's idea of creation (Midnight, Jan 1, 1970 GMT). If no argument is given, time-string returns the current date. This supplants \fI(status ctime)\fP, and may be used to make the results of \fIfilestat\fP more intelligible. .Lf top-level .Re nothing (it never returns) .No This function is the top-level read-eval-print loop. It never returns any value. Its main utility is that if you redefine it, and do a (reset) then the redefined (top-level) is then invoked. The default top-level for Franz, allow one to specify his own printer or reader, by binding the symbols \fBtop-level-printer\fP and \fBtop-level-reader\fP. One can let the default top-level do most of the drudgery in catching .i reset 's, and reading in .lisprc files, by binding the symbol \fBuser-top-level\fP, to a routine that concerns itself only with the read-eval-print loop. .Lf wait .Re a dotted pair \fI(processid . status)\fP when the next child process dies. s where .i dumplisp cannot be used. .Lf retbrk "['x_level] .Wh x_level is a small integer of either sign. .Se The default error handler keeps a notion of the current level of the error caught. If x_level is negative, control is thrown to this default error handler whose level is that many less than the present, or to \fItop-level\fP if there aren't enough. If x_doc/ps2/09.lisp/ch61.n 444 3 12 634 3655277334 7421 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch61.n 6.1 (Berkeley) 4/29/86 .\" ." @(#)ch61.n 6.1 4/29/86 .Lc "Local functions" 61 .pp This chapter describes functions which we found useful at Berkeley. Some of these functions may be useful at other sites lmacsmantagsdXtmacsdoc/ps2/09.lisp/ch7.n 444 3 12 45662 3662145722 7404 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch7.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: ch7.n,v 1.3 83/07/01 11:22:58 layer Exp $ .Lc The\ Lisp\ Reader 7 .sh 2 Introduction \n(ch 1 .pp The .i read function is responsible for converting a stream of characters into a Lisp expression. .i Read is table driven and the table it uses is called a .i readtable. The .i print function does the inverse of .i read ; it converts a Lisp expression into a stream of characters. Typically the conversion is done in such a way that if that stream of characters were read by .i read , the result would be an expression equal to the one .i print was given. .i Print must also refer to the readtable in order to determine how to format its output. The .i explode function, which returns a list of characters rather than printing them, must also refer to the readtable. .pp A readtable is created with the .i makereadtable function, modified with the .i setsyntax function and interrogated with the .i getsyntax function. The structure of a readtable is hidden from the user - a readtable should only be manipulated with the three functions mentioned above. .pp There is one distinguished readtable called the .i current .i readtable whose value determines what .i read , .i print and .i explode do. The current readtable is the value of the symbol .i readtable . Thus it is possible to rapidly change the current syntax by lambda binding a different readtable to the symbol .i readtable. When the binding is undone, the syntax reverts to its old form. .sh +0 Syntax\ Classes .pp The readtable describes how each of the 128 ascii characters should be treated by the reader and printer. Each character belongs to a .i syntax .i class which has three properties: .ip character\ class\ - Tells what the reader should do when it sees this character. There are a large number of character classes. They are described below. .ip separator\ - Most types of tokens the reader constructs are one character long. Four token types have an arbitrary length: number (1234), symbol print name (franz), escaped symbol print name (|franz|), and string ("franz"). The reader can easily determine when it has come to the end of one of the last two types: it just looks for the matching delimiter (| or "). When the reader is reading a number or symbol print name, it stops reading when it comes to a character with the .i separator property. The separator character is pushed back into the input stream and will be the first character read when the reader is called again. .ip escape\ - Tells the printer when to put escapes in front of, or around, a symbol whose print name contains this character. There are three possibilities: always escape a symbol with this character in it, only escape a symbol if this is the only character in the symbol, and only escape a symbol if this is the first character in the symbol. [note: The printer will always escape a symbol which, if printed out, would look like a valid number.] .pp When the Lisp system is built, Lisp code is added to a C-coded kernel and the result becomes the standard lisp system. The readtable present in the C-coded kernel, called the .i raw .i readtable , contains the bare necessities for reading in Lisp code. During the construction of the complete Lisp system, a copy is made of the raw readtable and then the copy is modified by adding macro characters. The result is what is called the .i standard .i readtable . When a new readtable is created with .i makereadtable, a copy is made of either the raw readtable or the current readtable (which is likely to be the standard readtable). .sh +0 Reader\ Operations .pp The reader has a very simple algorithm. It is either .i scanning for a token, .i collecting a token, or .i processing a token. Scanning involves reading characters and throwing away those which don't start tokens (such as blanks and tabs). Collecting means gathering the characters which make up a token into a buffer. Processing may involve creating symbols, strings, lists, fixnums, bignums or flonums or calling a user written function called a character macro. .pp The components of the syntax class determine when the reader switches between the scanning, collecting and processing states. The reader will continue scanning as long as the character class of the characters it reads is .i cseparator. When it reads a character whose character class is not .i cseparator it stores that character in its buffer and begins the collecting phase. .pp If the character class of that first character is .i ccharacter , .i cnumber , .i cperiod , or .i csign . then it will continue collecting until it runs into a character whose syntax class has the .i separator property. (That last character will be pushed back into the input buffer and will be the first character read next time.) Now the reader goes into the processing phase, checking to see if the token it read is a number or symbol. It is important to note that after the first character is collected the component of the syntax class which tells the reader to stop collecting is the .i separator property, not the character class. .pp If the character class of the character which stopped the scanning is not .i ccharacter , .i cnumber , .i cperiod , or .i csign . then the reader processes that character immediately. The character classes .i csingle-macro , .i csingle-splicing-macro , and .i csingle-infix-macro will act like .i ccharacter if the following token is not a .i separator. The processing which is done for a given character class is described in detail in the next section. .sh +0 Character\ Classes .de Cc .sp 2v .tl '\fI\\$1\fP''raw readtable:\\$2' .tl '''standard readtable:\\$3' .. .pc .Cc ccharacter A-Z\ a-z\ ^H\ !#$%&*,/:;<=>?@^_`{}~ A-Z\ a-z\ ^H\ !$%&*/:;<=>?@^_{}~ .pc % A normal character. .Cc cnumber 0-9 0-9 This type is a digit. The syntax for an integer (fixnum or bignum) is a string of .i cnumber characters optionally followed by a .i cperiod. If the digits are not followed by a .i cperiod , then they are interpreted in base .i ibase which must be eight or ten. The syntax for a floating point number is either zero or more .i cnumber 's followed by a .i cperiod and then followed by one or more .i cnumber 's. A floating point number may also be an integer or floating point number followed by 'e' or 'd', an optional '+' or '\-' and then zero or more .i cnumber 's. .Cc csign +\- +\- A leading sign for a number. No other characters should be given this class. .Cc cleft-paren ( ( A left parenthesis. Tells the reader to begin forming a list. .Cc cright-paren ) ) A right parenthesis. Tells the reader that it has reached the end of a list. .Cc cleft-bracket [ [ A left bracket. Tells the reader that it should begin forming a list. See the description of .i cright-bracket for the difference between cleft-bracket and cleft-paren. .Cc cright-bracket ] ] A right bracket. A .i cright-bracket finishes the formation of the current list and all enclosing lists until it finds one which begins with a .i cleft-bracket or until it reaches the top level list. .Cc cperiod . . The period is used to separate element of a cons cell [e.g. (a\ .\ (b\ .\ nil)) is the same as (a\ b)]. .i cperiod is also used in numbers as described above. .Cc cseparator ^I-^M\ esc\ space ^I-^M\ esc\ space Separates tokens. When the reader is scanning, these character are passed over. Note: there is a difference between the .i cseparator character class and the .i separator property of a syntax class. .Cc csingle-quote \\' \\' This causes .i read to be called recursively and the list (quote ) to be returned. .Cc csymbol-delimiter | | This causes the reader to begin collecting characters and to stop only when another identical .i csymbol-delimiter is seen. The only way to escape a .i csymbol-delimiter within a symbol name is with a .i cescape character. The collected characters are converted into a string which becomes the print name of a symbol. If a symbol with an identical print name already exists, then the allocation is not done, rather the existing symbol is used. .Cc cescape \e \e This causes the next character to read in to be treated as a .b vcharacter . A character whose syntax class is .b vcharacter has a character class .i ccharacter and does not have the .i separator property so it will not separate symbols. .Cc cstring-delimiter """" """" This is the same as .i csymbol-delimiter except the result is returned as a string instead of a symbol. .Cc csingle-character-symbol none none This returns a symbol whose print name is the the single character which has been collected. .Cc cmacro none `, The reader calls the macro function associated with this character and the current readtable, passing it no arguments. The result of the macro is added to the structure the reader is building, just as if that form were directly read by the reader. More details on macros are provided below. .Cc csplicing-macro none #; A .i csplicing-macro differs from a .i cmacro in the way the result is incorporated in the structure the reader is building. A .i csplicing-macro must return a list of forms (possibly empty). The reader acts as if it read each element of the list itself without the surrounding parenthesis. .Cc csingle-macro none none This causes to reader to check the next character. If it is a .i cseparator then this acts like a .i cmacro. Otherwise, it acts like a .i ccharacter. .Cc csingle-splicing-macro none none This is triggered like a .i csingle-macro however the result is spliced in like a .i csplicing-macro. .Cc cinfix-macro none none This is differs from a .i cmacro in that the macro function is passed a form representing what the reader has read so far. The result of the macro replaces what the reader had read so far. .Cc csingle-infix-macro none none This differs from the .i cinfix-macro in that the macro will only be triggered if the character following the .i csingle-infix-macro character is a .i cseparator . .Cc cillegal ^@-^G^N-^Z^\e-^_rubout ^@-^G^N-^Z^\e-^_rubout The characters cause the reader to signal an error if read. .sh +0 Syntax\ Classes .pp The readtable maps each character into a syntax class. The syntax class contains three pieces of information: the character class, whether this is a separator, and the escape properties. The first two properties are used by the reader, the last by the printer (and .i explode ). The initial lisp system has the following syntax classes defined. The user may add syntax classes with .i add-syntax-class . For each syntax class, we list the properties of the class and which characters have this syntax class by default. More information about each syntax class can be found under the description of the syntax class's character class. .de Sy .sp 1v .(b .tl '\fB\\$1\fP''raw readtable:\\$2' .tl '\fI\\$4\fP''standard readtable:\\$3' .tl '\fI\\$5\fP''' .if \n(.$>5 .tl '\fI\\$6\fP''' .)b .. .pc .Sy vcharacter A-Z\ a-z\ ^H\ !#$%&*,/:;<=>?@^_`{}~ A-Z\ a-z\ ^H\ !$%&*/:;<=>?@^_{}~ ccharacter .pc % .Sy vnumber 0-9 0-9 cnumber .Sy vsign +- +- csign .Sy vleft-paren ( ( cleft-paren escape-always separator .Sy vright-paren ) ) cright-paren escape-always separator .Sy vleft-bracket [ [ cleft-bracket escape-always separator .Sy vright-bracket ] ] cright-bracket escape-always separator .Sy vperiod . . cperiod escape-when-unique .Sy vseparator ^I-^M\ esc\ space ^I-^M\ esc\ space cseparator escape-always separator .Sy vsingle-quote \\' \\' csingle-quote escape-always separator .Sy vsymbol-delimiter | | csingle-delimiter escape-always .Sy vescape \e \e cescape escape-always .Sy vstring-delimiter """" """" cstring-delimiter escape-always .Sy vsingle-character-symbol none none csingle-character-symbol separator .Sy vmacro none `, cmacro escape-always separator .Sy vsplicing-macro none #; csplicing-macro escape-always separator .Sy vsingle-macro none none csingle-macro escape-when-unique .Sy vsingle-splicing-macro none none csingle-splicing-macro escape-when-unique .Sy vinfix-macro none none cinfix-macro escape-always separator .Sy vsingle-infix-macro none none csingle-infix-macro escape-when-unique .Sy villegal ^@-^G^N-^Z^\e-^_rubout ^@-^G^N-^Z^\e-^_rubout cillegal escape-always separator .sh +0 Character\ Macros .pp Character macros are user written functions which are executed during the reading process. The value returned by a character macro may or may not be used by the reader, depending on the type of macro and the value returned. Character macros are always attached to a single character with the .i setsyntax function. .sh +1 Types There are three types of character macros: normal, splicing and infix. These types differ in the arguments they are given or in what is done with the result they return. .sh +1 Normal .pp A normal macro is passed no arguments. The value returned by a normal macro is simply used by the reader as if it had read the value itself. Here is an example of a macro which returns the abbreviation for a given state. .Eb \->\fI(de\kAfun stateabbrev nil \h'|\nAu'(cdr (assq (read) '((california . ca) (pennsylvania . pa)))))\fP stateabbrev \-> \fI(setsyntax '\e! 'vmacro 'stateabbrev)\fP t \-> \fI'( ! california ! wyoming ! pennsylvania)\fP (ca nil pa) .Ee Notice what happened to \fI ! wyoming\fP. Since it wasn't in the table, the associated function returned nil. The creator of the macro may have wanted to leave the list alone, in such a case, but couldn't with this type of reader macro. The splicing macro, described next, allows a character macro function to return a value that is ignored. .sh +0 Splicing .pp The value returned from a splicing macro must be a list or nil. If the value is nil, then the value is ignored, otherwise the reader acts as if it read each object in the list. Usually the list only contains one element. If the reader is reading at the top level (i.e. not collecting elements of list), then it is illegal for a splicing macro to return more then one element in the list. The major advantage of a splicing macro over a normal macro is the ability of the splicing macro to return nothing. The comment character (usually ;) is a splicing macro bound to a function which reads to the end of the line and always returns nil. Here is the previous example written as a splicing macro .Eb \-> \fI(de\kAfun stateabbrev nil \h'|\nAu'(\kC(lam\kBbda (value) \h'|\nBu'(cond \kA(value (list value)) \h'|\nAu'(t nil))) \h'|\nCu'(cdr (assq (read) '((california . ca) (pennsylvania . pa))))))\fP \-> \fI(setsyntax '! 'vsplicing-macro 'stateabbrev)\fP \-> \fI'(!pennsylvania ! foo !california)\fP (pa ca) \-> \fI'!foo !bar !pennsylvania\fP pa \-> .Ee .sh +0 Infix .pp Infix macros are passed a .i conc structure representing what has been read so far. Briefly, a tconc structure is a single list cell whose car points to a list and whose cdr points to the last list cell in that list. The interpretation by the reader of the value returned by an infix macro depends on whether the macro is called while the reader is constructing a list or whether it is called at the top level of the reader. If the macro is called while a list is being constructed, then the value returned should be a tconc structure. The car of that structure replaces the list of elements that the reader has been collecting. If the macro is called at top level, then it will be passed the value nil, and the value it returns should either be nil or a tconc structure. If the macro returns nil, then the value is ignored and the reader continues to read. If the macro returns a tconc structure of one element (i.e. whose car is a list of one element), then that single element is returned as the value of .i read. If the macro returns a tconc structure of more than one element, then that list of elements is returned as the value of read. .Eb \-> \fI(de\kAfun plusop (x) \h'|\nAu'(cond \kB((null x) (tconc nil '\e+)) \h'|\nBu'(t (lconc nil (list 'plus (caar x) (read))))))\fP plusop \-> \fI(setsyntax '\e+ 'vinfix-macro 'plusop)\fP t \-> \fI'(a + b)\fP (plus a b) \-> \fI'+\fP |+| \-> .Ee .sh -1 Invocations .pp There are three different circumstances in which you would like a macro function to be triggered. .ip \fIAlways\ -\fP Whenever the macro character is seen, the macro should be invoked. This is accomplished by using the character classes .i cmacro , .i csplicing-macro , or .i cinfix-macro , and by using the .i separator property. The syntax classes .b vmacro , .b vsplicing-macro , and .b vsingle-macro are defined this way. .ip \fIWhen\ first\ -\fP The macro should only be triggered when the macro character is the first character found after the scanning process. A syntax class for a .i when .i first macro would be defined using .i cmacro , .i csplicing-macro , or .i cinfix-macro and not including the .i separator property. .ip \fIWhen\ unique\ -\fP The macro should only be triggered when the macro character is the only character collected in the token collection phase of the reader, i.e the macro character is preceeded by zero or more .i cseparator s and followed by a .i separator. A syntax class for a .i when .i unique macro would be defined using .i csingle-macro , .i csingle-splicing-macro , or .i csingle-infix-macro and not including the .i separator property. The syntax classes so defined are .b vsingle-macro , .b vsingle-splicing-macro , and .b vsingle-infix-macro . .sh -1 Functions .Lf setsyntax 's_symbol\ 's_synclass\ ['ls_func] .Wh ls_func is the name of a function or a lambda body. .Re t .Se S_symbol should be a symbol whose print name is only one character. The syntax class for that character is set to s_synclass in the current readtable. If s_synclass is a class that requires a character macro, then ls_func must be supplied. .No The symbolic syntax codes are new to Opus 38. For compatibility, s_synclass can be one of the fixnum syntax codes which appeared in older versions of the .Fr Manual. This compatibility is only temporary: existing code which uses the fixnum syntax codes should be converted. .Lf getsyntax 's_symbol .Re the syntax class of the first character of s_symbol's print name. s_symbol's print name must be exactly one character long. .No This function is new to Opus 38. It supercedes \fI(status\ syntax)\fP which no longer exists. .Lf add-syntax-class 's_synclass\ 'l_properties .Re s_synclass .Se Defines the syntax class s_synclass to have properties l_properties. The list l_properties should contain a character classes mentioned above. l_properties may contain one of the escape properties: .i escape-always , .i escape-when-unique , or .i escape-when-first . l_properties may contain the .i separator property. After a syntax class has been defined with .i add-syntax-class , the .i setsyntax function can be used to give characters that syntax class. .Eb ; Define a non-separating macro character. ; This type of macro character is used in UCI-Lisp, and ; it corresponds to a FIRST MACRO in Interlisp \-> \fI(add-syntax-class 'vuci-macro '(cmacro escape-when-first))\fP vuci-macro \-> .Ee ad by the reader. More details on macros are provided below. .Cc csplicing-macdoc/ps2/09.lisp/ch8.n 444 3 12 64514 3662147115 7400 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch8.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: ch8.n,v 1.4 83/07/27 15:12:22 layer Exp $ .Lc Functions,\ Fclosures,\ and\ Macros 8 .sh 2 valid\ function\ objects \n(ch 1 .pp There are many different objects which can occupy the function field of a symbol object. Table 8.1, on the following page, shows all of the possibilities, how to recognize them, and where to look for documentation. .(z .sp 1v .TS box center ; c | c | c . informal name object type documentation = interpreted list with \fIcar\fP 8.2 lambda function \fIeq\fP to lambda _ interpreted list with \fIcar\fP 8.2 nlambda function \fIeq\fP to nlambda _ interpreted list with \fIcar\fP 8.2 lexpr function \fIeq\fP to lexpr _ interpreted list with \fIcar\fP 8.3 macro \fIeq\fP to macro _ fclosure vector with \fIvprop\fP 8.4 \fIeq\fP to fclosure _ compiled binary with discipline 8.2 lambda or lexpr \fIeq\fP to lambda function _ compiled binary with discipline 8.2 nlambda function \fIeq\fP to nlambda _ compiled binary with discipline 8.3 macro \fIeq\fP to macro _ foreign binary with discipline 8.5 subroutine of \*(lqsubroutine\*(rq\*[\(dg\*] _ foreign binary with discipline 8.5 function of \*(lqfunction\*(rq\*[\(dg\*] _ foreign binary with discipline 8.5 integer function of \*(lqinteger-function\*(rq\*[\(dg\*] _ foreign binary with discipline 8.5 real function of \*(lqreal-function\*(rq\*[\(dg\*] _ foreign binary with discipline 8.5 C function of \*(lqc-function\*(rq\*[\(dg\*] _ foreign binary with discipline 8.5 double function of \*(lqdouble-c-function\*(rq\*[\(dg\*] _ foreign binary with discipline 8.5 structure function of \*(lqvector-c-function\*(rq\*[\(dg\*] _ array array object 9 .TE .tl ''Table 8.1'' .(f \*[\(dg\*]Only the first character of the string is significant (i.e \*(lqs\*(rq is ok for \*(lqsubroutine\*(rq) .)f .)z .br .sh 2 functions .pp The basic Lisp function is the lambda function. When a lambda function is called, the actual arguments are evaluated from left to right and are lambda-bound to the formal parameters of the lambda function. .pp An nlambda function is usually used for functions which are invoked by the user at top level. Some built-in functions which evaluate their arguments in special ways are also nlambdas (e.g \fIcond\fP, \fIdo\fP, \fIor\fP). When an nlambda function is called, the list of unevaluated arguments is lambda bound to the single formal parameter of the nlambda function. .pp Some programmers will use an nlambda function when they are not sure how many arguments will be passed. Then, the first thing the nlambda function does is map \fIeval\fP over the list of unevaluated arguments it has been passed. This is usually the wrong thing to do, as it will not work compiled if any of the arguments are local variables. The solution is to use a lexpr. When a lexpr function is called, the arguments are evaluated and a fixnum whose value is the number of arguments is lambda-bound to the single formal parameter of the lexpr function. The lexpr can then access the arguments using the \fIarg\fP function. .pp When a function is compiled, .i special declarations may be needed to preserve its behavior. An argument is not lambda-bound to the name of the corresponding formal parameter unless that formal parameter has been declared .i special (see \(sc12.3.2.2). .pp Lambda and lexpr functions both compile into a binary object with a discipline of lambda. However, a compiled lexpr still acts like an interpreted lexpr. .sh 2 macros .pp An important feature of Lisp is its ability to manipulate programs as data. As a result of this, most Lisp implementations have very powerful macro facilities. The Lisp language's macro facility can be used to incorporate popular features of the other languages into Lisp. For example, there are macro packages which allow one to create records (ala Pascal) and refer to elements of those records by the field names. The .i struct package imported from Maclisp does this. Another popular use for macros is to create more readable control structures which expand into .i cond , .i or and .i and . One such example is the If macro. It allows you to write .sp 1v .nf .ft I (If (equal numb 0) then (print 'zero) (terpr) \ elseif (equal numb 1) then (print 'one) (terpr) \ else (print '|I give up|)) .ft P .sp 1v which expands to .sp 1v .ft I (cond \ \ \ \ ((equal numb 0) (print 'zero) (terpr)) \ \ \ \ ((equal numb 1) (print 'one) (terpr)) \ \ \ \ (t (print '|I give up|))) .ft P .sp 1v .fi .sh 3 macro\ forms .pp A macro is a function which accepts a Lisp expression as input and returns another Lisp expression. The action the macro takes is called macro expansion. Here is a simple example: .sp 1v .nf \-> \fI(def first (macro (x) (cons 'car (cdr x))))\fP first \-> \fI(first '(a b c))\fP a \-> \fI(apply 'first '(first '(a b c)))\fP (car '(a b c)) .fi .sp 1v The first input line defines a macro called .i first . Notice that the macro has one formal parameter, \fIx\fP. On the second input line, we ask the interpreter to evaluate \fI(first\ '(a\ b\ c))\fP. .i Eval sees that .i first has a function definition of type macro, so it evaluates .i first 's definition, passing to .i first , as an argument, the form .i eval itself was trying to evaluate: \fI(first\ '(a\ b\ c))\fP. The .i first macro chops off the car of the argument with .i cdr , cons' a .i car at the beginning of the list and returns \fI(car\ '(a\ b\ c))\fP, which .i eval evaluates. The value .i a is returned as the value of \fI(first\ '(a\ b\ c))\fP. Thus whenever .i eval tries to evaluate a list whose car has a macro definition it ends up doing (at least) two operations, the first of which is a call to the macro to let it macro expand the form, and the other is the evaluation of the result of the macro. The result of the macro may be yet another call to a macro, so .i eval may have to do even more evaluations until it can finally determine the value of an expression. One way to see how a macro will expand is to use .i apply as shown on the third input line above. .sh +0 defmacro .pp The macro .i defmacro makes it easier to define macros because it allows you to name the arguments to the macro call. For example, suppose we find ourselves often writing code like \fI(setq\ stack\ (cons\ newelt\ stack)\fP. We could define a macro named \fIpush\fP to do this for us. One way to define it is: .nf .sp 1v \-> \fI(de\kAf push \h'|\nAu'(macro (x) (list 'setq (caddr x) (list 'cons (cadr x) (caddr x)))))\fP push .fi .sp 1v then \fI(push\ newelt\ stack)\fP will expand to the form mentioned above. The same macro written using defmacro would be: .nf .sp 1v \->\fI\kA (defmacro push (value stack) \h'|\nAu'(list 'setq ,stack (list 'cons ,value ,stack)))\fP push .fi .sp 1v Defmacro allows you to name the arguments of the macro call, and makes the macro definition look more like a function definition. .sh +0 the\ backquote\ character\ macro .pp The default syntax for .Fr has four characters with associated character macros. One is semicolon for comments. Two others are the backquote and comma which are used by the backquote character macro. The fourth is the sharp sign macro described in the next section. .pp The backquote macro is used to create lists where many of the elements are fixed (quoted). This makes it very useful for creating macro definitions. In the simplest case, a backquote acts just like a single quote: .sp 1v .nf \->\fI`(a b c d e)\fP (a b c d e) .fi .sp 1v If a comma precedes an element of a backquoted list then that element is evaluated and its value is put in the list. .sp 1v .nf \->\fI(setq d '(x y z))\fP (x y z) \->\fI`(a b c ,d e)\fP (a b c (x y z) e) .fi .sp 1v If a comma followed by an at sign precedes an element in a backquoted list, then that element is evaluated and spliced into the list with .i append . .nf .sp 1v \->\fI`(a b c ,@d e)\fP (a b c x y z e) .sp 1v .fi Once a list begins with a backquote, the commas may appear anywhere in the list as this example shows: .nf .sp 1v \->\fI`(a b (c d ,(cdr d)) (e f (g h ,@(cddr d) ,@d)))\fP (a b (c d (y z)) (e f (g h z x y z))) .sp 1v .fi It is also possible and sometimes even useful to use the backquote macro within itself. As a final demonstration of the backquote macro, we shall define the first and push macros using all the power at our disposal: defmacro and the backquote macro. .sp 1v .nf \->\fI(defmacro first (list) `(car ,list))\fP first \->\fI(defmacro push (value stack) `(setq ,stack (cons ,value ,stack)))\fP stack .fi .sh +0 sharp\ sign\ character\ macro .pp The sharp sign macro can perform a number of different functions at read time. The character directly following the sharp sign determines which function will be done, and following Lisp s-expressions may serve as arguments. .sh +1 conditional\ inclusion .lp If you plan to run one source file in more than one environment then you may want to some pieces of code to be included or not included depending on the environment. The C language uses \*(lq#ifdef\*(lq and \*(lq#ifndef\*(rq for this purpose, and Lisp uses \*(lq#+\*(rq and \*(lq#\-\*(rq. The environment that the sharp sign macro checks is the \fI(status\ features)\fP list which is initialized when the Lisp system is built and which may be altered by \fI(sstatus\ feature\ foo)\fP and \fI(sstatus\ nofeature\ bar)\fP The form of conditional inclusion is .br .tl ''\fI#+when what\fP'' where .i when is either a symbol or an expression involving symbols and the functions .i and , .i or , and .i not . The meaning is that .i what will only be read in if .i when is true. A symbol in .i when is true only if it appears in the .i (status\ features) list. .Eb ; suppose we want to write a program which references a file ; and which can run at ucb, ucsd and cmu where the file naming conventions ; are different. ; \-> \fI(de\kAfun howold (name) \h'|\nAu'\kC(terpr) \h'|\nCu'\kB(load #\kA+(or ucb ucsd) "/usr/lib/lisp/ages.l" \h'|\nAu'#+cmu "/usr/lisp/doc/ages.l") \h'|\nBu'\kA(patom name) \h'|\nBu'\kA(patom " is ") \h'|\nAu'\kB(print (cdr (assoc name agefile))) \h'|\nBu'\kA(patom "years old") \h'|\nAu'(terpr))\fP .Ee The form .br .tl ''\fI#\-when what\fP'' is equivalent to .br .tl ''\fI#+(not when) what\fP'' .sh +0 fixnum\ character\ equivalents .lp When working with fixnum equivalents of characters, it is often hard to remember the number corresponding to a character. The form .br .tl ''\fI#/c\fP'' is equivalent to the fixnum representation of character c. .Eb ; a function which returns t if the user types y else it returns nil. ; \-> \fI(de\kBfun yesorno nil \h'|\nBu'(progn \kA(ans) \h'|\nAu'\kB(setq ans (tyi)) \h'|\nBu'(cond \kA((equal ans #/y) t) \h'|\nAu'(t nil))))\fP .Ee .sh +0 read\ time\ evaluation .lp Occasionally you want to express a constant as a Lisp expression, yet you don't want to pay the penalty of evaluating this expression each time it is referenced. The form .br .tl ''\fI#.expression\fP'' evaluates the expression at read time and returns its value. .Eb ; a function to test if any of bits 1 3 or 12 are set in a fixnum. ; \-> \fI(de\kCfun testit (num) \h'|\nCu'(cond \kA(\kB(zerop (boole 1 num #.(+ (lsh 1 1) (lsh 1 3) (lsh 1 12)))) \h'|\nBu'nil) \h'|\nAu'(t t)))\fP .Ee .sh 2 fclosures .pp Fclosures are a type of functional object. The purpose is to remember the values of some variables between invocations of the functional object and to protect this data from being inadvertently overwritten by other Lisp functions. Fortran programs usually exhibit this behavior for their variables. (In fact, some versions of Fortran would require the variables to be in COMMON). Thus it is easy to write a linear congruent random number generator in Fortran, merely by keeping the seed as a variable in the function. It is much more risky to do so in Lisp, since any special variable you picked, might be used by some other function. Fclosures are an attempt to provide most of the same functionality as closures in Lisp Machine Lisp, to users of .Fr . Fclosures are related to closures in this way: .br (fclosure '(a b) 'foo) <==> .br (let ((a a) (b b)) (closure '(a b) 'foo)) .sh 3 an\ example .sp 1v .in 0 .nf .sz -2 .hl % \fBlisp\fP Franz Lisp, Opus 38.60 \->\fB(defun code (me count) (print (list 'in x)) (setq x (+ 1 x)) (cond ((greaterp count 1) (funcall me me (sub1 count)))) (print (list 'out x)))\fP code \->\fB(defun tester (object count) (funcall object object count) (terpri))\fP tester \->\fB(setq x 0)\fP 0 \->\fB(setq z (fclosure '(x) 'code))\fP fclosure[8] \->\fB (tester z 3)\fP (in 0)(in 1)(in 2)(out 3)(out 3)(out 3) nil \->\fBx\fP 0 .hl .fi .sz +2 .sp 3v .pp The function \fIfclosure\fP creates a new object that we will call an fclosure, (although it is actually a vector). The fclosure contains a functional object, and a set of symbols and values for the symbols. In the above example, the fclosure functional object is the function code. The set of symbols and values just contains the symbol `x' and zero, the value of `x' when the fclosure was created. .lp When an fclosure is funcall'ed: .ip 1) The Lisp system lambda binds the symbols in the fclosure to their values in the fclosure. .ip 2) It continues the funcall on the functional object of the fclosure. .ip 3) Finally, it un-lambda binds the symbols in the fclosure and at the same time stores the current values of the symbols in the fclosure. .sp 1v .pp Notice that the fclosure is saving the value of the symbol `x'. Each time a fclosure is created, new space is allocated for saving the values of the symbols. Thus if we execute fclosure again, over the same function, we can have two independent counters: .sp 1v .in 0 .nf .sz -2 .hl \-> \fB(setq zz (fclosure '(x) 'code))\fP fclosure[1] \-> \fB(tester zz 2)\fP (in 0)(in 1)(out 2)(out 2) \-> \fB(tester zz 2)\fP (in 2)(in 3)(out 4)(out 4) \-> \fB(tester z 3)\fP (in 3)(in 4)(in 5)(out 6)(out 6)(out 6) .hl .fi .sz +2 .sp 3v .sh 3 useful\ functions .pp Here are some quick some summaries of functions dealing with closures. They are more formally defined in \(sc2.8.4. To recap, fclosures are made by \fI(fclosure 'l_vars 'g_funcobj)\fP. l_vars is a list of symbols (not containing nil), g_funcobj is any object that can be funcalled. (Objects which can be funcalled, include compiled Lisp functions, lambda expressions, symbols, foreign functions, etc.) In general, if you want a compiled function to be closed over a variable, you must declare the variable to be special within the function. Another example would be: .(l (fclosure '(a b) #'(lambda (x) (plus x a))) .)l Here, the #' construction will make the compiler compile the lambda expression. .pp There are times when you want to share variables between fclosures. This can be done if the fclosures are created at the same time using \fIfclosure-list\fP. The function \fIfclosure-alist\fP returns an assoc list giving the symbols and values in the fclosure. The predicate \fIfclosurep\fP returns t iff its argument is a fclosure. Other functions imported from Lisp Machine Lisp are .i symeval-in-fclosure, .i let-fclosed, and .i set-in-fclosure. Lastly, the function \fIfclosure-function\fP returns the function argument. .sh 3 internal\ structure .pp Currently, closures are implemented as vectors, with property being the symbol fclosure. The functional object is the first entry. The remaining entries are structures which point to the symbols and values for the closure, (with a reference count to determine if a recursive closure is active). .sh 2 foreign\ subroutines\ and\ functions .pp .Fr has the ability to dynamically load object files produced by other compilers and to call functions defined in those files. These functions are called .i foreign functions.* .(f *This topic is also discussed in Report PAM-124 of the Center for Pure and Applied Mathematics, UCB, entitled ``Parlez-Vous Franz? An Informal Introduction to Interfacing Foreign Functions to Franz LISP'', by James R. Larus .)f There are seven types of foreign functions. They are characterized by the type of result they return, and by differences in the interpretation of their arguments. They come from two families: a group suited for languages which pass arguments by reference (e.g. Fortran), and a group suited for languages which pass arguments by value (e.g. C). .sp 1v .lp There are four types in the first group: .ip \fBsubroutine\fP This does not return anything. The Lisp system always returns t after calling a subroutine. .ip \fBfunction\fP This returns whatever the function returns. This must be a valid Lisp object or it may cause the Lisp system to fail. .ip \fBinteger-function\fP This returns an integer which the Lisp system makes into a fixnum and returns. .ip \fBreal-function\fP This returns a double precision real number which the Lisp system makes into a flonum and returns. .sp 1v .lp There are three types in the second group: .ip \fBc-function\fP This is like an integer function, except for its different interpretation of arguments. .ip \fBdouble-c-function\fP This is like a real-function. .ip \fBvector-c-function\fP This is for C functions which return a structure. The first argument to such functions must be a vector (of type vectori), into which the result is stored. The second Lisp argument becomes the first argument to the C function, and so on .lp A foreign function is accessed through a binary object just like a compiled Lisp function. The difference is that the discipline field of a binary object for a foreign function is a string whose first character is given in the following table: .(b .TS box center ; c | c . letter type = s subroutine _ f function _ i integer-function _ r real-function. _ c c-function _ v vector-c-function _ d double-c-function _ .TE .)b Two functions are provided for setting-up foreign functions. .i Cfasl loads an object file into the Lisp system and sets up one foreign function binary object. If there are more than one function in an object file, .i getaddress can be used to set up additional foreign function objects. .pp Foreign functions are called just like other functions, e.g \fI(funname\ arg1\ arg2)\fP. When a function in the Fortran group is called, the arguments are evaluated and then examined. List, hunk and symbol arguments are passed unchanged to the foreign function. Fixnum and flonum arguments are copied into a temporary location and a pointer to the value is passed (this is because Fortran uses call by reference and it is dangerous to modify the contents of a fixnum or flonum which something else might point to). If the argument is an array object, the data field of the array object is passed to the foreign function (This is the easiest way to send large amounts of data to and receive large amounts of data from a foreign function). If a binary object is an argument, the entry field of that object is passed to the foreign function (the entry field is the address of a function, so this amounts to passing a function as an argument). .pp When a function in the C group is called, fixnum and flownum arguments are passed by value. For almost all other arguments, the address is merely provided to the C routine. The only exception arises when you want to invoke a C routine which expects a ``structure'' argument. Recall that a (rarely used) feature of the C language is the ability to pass structures by value. This copies the structure onto the stack. Since the Franz's nearest equivalent to a C structure is a vector, we provide an escape clause to copy the contents of an immediate-type vector by value. If the property field of a vectori argument, is the symbol \*(lqvalue-structure-argument\*(rq, then the binary data of this immediate-type vector is copied into the argument list of the C routine. .pp The method a foreign function uses to access the arguments provided by Lisp is dependent on the language of the foreign function. The following scripts demonstrate how how Lisp can interact with three languages: C, Pascal and Fortran. C and Pascal have pointer types and the first script shows how to use pointers to extract information from Lisp objects. There are two functions defined for each language. The first (cfoo in C, pfoo in Pascal) is given four arguments, a fixnum, a flonum-block array, a hunk of at least two fixnums and a list of at least two fixnums. To demonstrate that the values were passed, each ?foo function prints its arguments (or parts of them). The ?foo function then modifies the second element of the flonum-block array and returns a 3 to Lisp. The second function (cmemq in C, pmemq in Pascal) acts just like the Lisp .i memq function (except it won't work for fixnums whereas the lisp .i memq will work for small fixnums). In the script, typed input is in .b bold , computer output is in roman and comments are in .i italic. .in 0 .nf .sp 2v .sz -2 .hl \fIThese are the C coded functions \fP % \fBcat ch8auxc.c\fP /* demonstration of c coded foreign integer-function */ /* the following will be used to extract fixnums out of a list of fixnums */ struct listoffixnumscell { struct listoffixnumscell *cdr; int *fixnum; }; struct listcell { struct listcell *cdr; int car; }; cfoo(a,b,c,d) int *a; double b[]; int *c[]; struct listoffixnumscell *d; { printf("a: %d, b[0]: %f, b[1]: %f\n", *a, b[0], b[1]); printf(" c (first): %d c (second): %d\n", *c[0],*c[1]); printf(" ( %d %d ... )\n ", *(d->fixnum), *(d->cdr->fixnum)); b[1] = 3.1415926; return(3); } struct listcell * cmemq(element,list) int element; struct listcell *list; { for( ; list && element != list->car ; list = list->cdr); return(list); } .sp 2v \fIThese are the Pascal coded functions \fP % \fBcat ch8auxp.p\fP type pinteger = ^integer; realarray = array[0..10] of real; pintarray = array[0..10] of pinteger; listoffixnumscell = record cdr : ^listoffixnumscell; fixnum : pinteger; end; plistcell = ^listcell; listcell = record cdr : plistcell; car : integer; end; function pfoo ( var a : integer ; var b : realarray; var c : pintarray; var d : listoffixnumscell) : integer; begin writeln(' a:',a, ' b[0]:', b[0], ' b[1]:', b[1]); writeln(' c (first):', c[0]^,' c (second):', c[1]^); writeln(' ( ', d.fixnum^, d.cdr^.fixnum^, ' ...) '); b[1] := 3.1415926; pfoo := 3 end ; { the function pmemq looks for the Lisp pointer given as the first argument in the list pointed to by the second argument. Note that we declare " a : integer " instead of " var a : integer " since we are interested in the pointer value instead of what it points to (which could be any Lisp object) } function pmemq( a : integer; list : plistcell) : plistcell; begin while (list <> nil) and (list^.car <> a) do list := list^.cdr; pmemq := list; end ; .sp 2v \fIThe files are compiled\fP % \fBcc -c ch8auxc.c\fP 1.0u 1.2s 0:15 14% 30+39k 33+20io 147pf+0w % \fBpc -c ch8auxp.p\fP 3.0u 1.7s 0:37 12% 27+32k 53+32io 143pf+0w .sp 2v % \fBlisp\fP Franz Lisp, Opus 38.60 .ft I .fi First the files are loaded and we set up one foreign function binary. We have two functions in each file so we must choose one to tell cfasl about. The choice is arbitrary. .ft P .br .nf \->\fB (cfasl 'ch8auxc.o '_cfoo 'cfoo "integer-function")\fP /usr/lib/lisp/nld -N -A /usr/local/lisp -T 63000 ch8auxc.o -e _cfoo -o /tmp/Li7055.0 -lc #63000-"integer-function" \->\fB (cfasl 'ch8auxp.o '_pfoo 'pfoo "integer-function" "-lpc")\fP /usr/lib/lisp/nld -N -A /tmp/Li7055.0 -T 63200 ch8auxp.o -e _pfoo -o /tmp/Li7055.1 -lpc -lc #63200-"integer-function" .ft I Here we set up the other foreign function binary objects .ft P \->\fB (getaddress '_cmemq 'cmemq "function" '_pmemq 'pmemq "function")\fP #6306c-"function" .ft I .fi We want to create and initialize an array to pass to the cfoo function. In this case we create an unnamed array and store it in the value cell of testarr. When we create an array to pass to the Pascal program we will use a named array just to demonstrate the different way that named and unnamed arrays are created and accessed. .br .nf .ft P \->\fB (setq testarr (array nil flonum-block 2))\fP array[2] \->\fB (store (funcall testarr 0) 1.234)\fP 1.234 \->\fB (store (funcall testarr 1) 5.678)\fP 5.678 \->\fB (cfoo 385 testarr (hunk 10 11 13 14) '(15 16 17))\fP a: 385, b[0]: 1.234000, b[1]: 5.678000 c (first): 10 c (second): 11 ( 15 16 ... ) 3 .ft I .fi Note that cfoo has returned 3 as it should. It also had the side effect of changing the second value of the array to 3.1415926 which check next. .br .nf .ft P \->\fB (funcall testarr 1)\fP 3.1415926 .sp 2v .fi .ft I In preparation for calling pfoo we create an array. .ft P .nf \->\fB (array test flonum-block 2)\fP array[2] \->\fB (store (test 0) 1.234)\fP 1.234 \->\fB (store (test 1) 5.678)\fP 5.678 \->\fB (pfoo 385 (getd 'test) (hunk 10 11 13 14) '(15 16 17))\fP a: 385 b[0]: 1.23400000000000E+00 b[1]: 5.67800000000000E+00 c (first): 10 c (second): 11 ( 15 16 ...) 3 \->\fB (test 1)\fP 3.1415926 .sp 1v \fI Now to test out the memq's \-> \fB(cmemq 'a '(b c a d e f))\fP (a d e f) \-> \fB(pmemq 'e '(a d f g a x))\fP nil .hl .fi .sz +2 .sp 3v .pp The Fortran example will be much shorter since in Fortran you can't follow pointers as you can in other languages. The Fortran function ffoo is given three arguments: a fixnum, a fixnum-block array and a flonum. These arguments are printed out to verify that they made it and then the first value of the array is modified. The function returns a double precision value which is converted to a flonum by lisp and printed. Note that the entry point corresponding to the Fortran function ffoo is _ffoo_ as opposed to the C and Pascal convention of preceding the name with an underscore. .sp 1v .in 0 .nf .sz -2 .hl % \fBcat ch8auxf.f\fP double precision function ffoo(a,b,c) integer a,b(10) double precision c print 2,a,b(1),b(2),c 2 format(' a=',i4,', b(1)=',i5,', b(2)=',i5,' c=',f6.4) b(1) = 22 ffoo = 1.23456 return end % \fBf77 -c ch8auxf.f\fP ch8auxf.f: ffoo: 0.9u 1.8s 0:12 22% 20+22k 54+48io 158pf+0w % \fBlisp\fP Franz Lisp, Opus 38.60 \-> \fB(cfasl 'ch8auxf.o '_ffoo_ 'ffoo "real-function" "-lF77 -lI77")\fP /usr/lib/lisp/nld -N -A /usr/local/lisp -T 63000 ch8auxf.o -e _ffoo_ -o /tmp/Li11066.0 -lF77 -lI77 -lc #6307c-"real-function" .sp 1v \-> \fB(array test fixnum-block 2)\fP array[2] \->\fB (store (test 0) 10)\fP 10 \-> \fB(store (test 1) 11)\fP 11 \-> \fB(ffoo 385 (getd 'test) 5.678)\fP a= 385, b(1)= 10, b(2)= 11 c=5.6780 1.234559893608093 \-> \fB(test 0)\fP 22 .hl es not return anything. The Lisp system always returns t after calling a subroutine. .ip \fBfunction\fP This returns whatever the function returns. This must be a valid Lisp objecdoc/ps2/09.lisp/ch9.n 444 3 12 31537 3662147177 7410 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)ch9.n 6.2 (Berkeley) 5/14/86 .\" ." $Header: ch9.n 1.4 83/07/21 21:08:57 sklower Exp $ .Lc Arrays\ and\ Vectors 9 .pp Arrays and vectors are two means of expressing aggregate data objects in .Fr . Vectors may be thought of as sequences of data. They are intended as a vehicle for user-defined data types. This use of vectors is still experimental and subject to revision. As a simple data structure, they are similar to hunks and strings. Vectors are used to implement closures, and are useful to communicate with foreign functions. Both of these topics were discussed in Chapter 8. Later in this chapter, we describe the current implementation of vectors, and will advise the user what is most likely to change. .pp Arrays in .Fr provide a programmable data structure access mechanism. One possible use for .Fr arrays is to implement Maclisp style arrays which are simple vectors of fixnums, flonums or general lisp values. This is described in more detail in \(sc9.3 but first we will describe how array references are handled by the lisp system. .pp The structure of an array object is given in \(sc1.3.10 and reproduced here for your convenience. .(b .TS box center ; c | c | c | c . Subpart name Get value Set value Type = access function getaccess putaccess binary, list or symbol _ auxiliary getaux putaux lispval _ data arrayref replace block of contiguous set lispval _ length getlength putlength fixnum _ delta getdelta putdelta fixnum .TE .)b .sh 2 "general arrays" \n(ch 1 Suppose the evaluator is told to evaluate \fI(foo\ a\ b)\fP and the function cell of the symbol foo contains an array object (which we will call foo_arr_obj). First the evaluator will evaluate and stack the values of .i a and .i b . Next it will stack the array object foo_arr_obj. Finally it will call the access function of foo_arr_obj. The access function should be a lexpr\*[\(dg\*] or a symbol whose function cell contains a lexpr. .(f \*[\(dg\*]A lexpr is a function which accepts any number of arguments which are evaluated before the function is called. .)f The access function is responsible for locating and returning a value from the array. The array access function is free to interpret the arguments as it wishes. The Maclisp compatible array access function which is provided in the standard .Fr system interprets the arguments as subscripts in the same way as languages like Fortran and Pascal. .pp The array access function will also be called upon to store elements in the array. For example, \fI(store\ (foo\ a\ b)\ c)\fP will automatically expand to (foo c a b) and when the evaluator is called to evaluate this, it will evaluate the arguments .i c , .i b and .i a . Then it will stack the array object (which is stored in the function cell of foo) and call the array access function with (now) four arguments. The array access function must be able to tell this is a store operation, which it can do by checking the number of arguments it has been given (a lexpr can do this very easily). .sh 2 "subparts of an array object" An array is created by allocating an array object with .i marray and filling in the fields. Certain lisp functions interpret the values of the subparts of the array object in special ways as described in the following text. Placing illegal values in these subparts may cause the lisp system to fail. .sh 3 "access function" The purpose of the access function has been described above. The contents of the access function should be a lexpr, either a binary (compiled function) or a list (interpreted function). It may also be a symbol whose function cell contains a function definition. This subpart is used by .i eval , .i funcall , and .i apply when evaluating array references. .sh 3 auxiliary This can be used for any purpose. If it is a list and the first element of that list is the symbol unmarked_array then the data subpart will not be marked by the garbage collector (this is used in the Maclisp compatible array package and has the potential for causing strange errors if used incorrectly). .sh 3 data This is either nil or points to a block of data space allocated by .i segment or .i small-segment. .sh 3 length This is a fixnum whose value is the number of elements in the data block. This is used by the garbage collector and by .i arrayref to determine if your index is in bounds. .sh 3 delta This is a fixnum whose value is the number of bytes in each element of the data block. This will be four for an array of fixnums or value cells, and eight for an array of flonums. This is used by the garbage collector and .i arrayref as well. .sh 2 "The Maclisp compatible array package" .pp A Maclisp style array is similar to what is known as arrays in other languages: a block of homogeneous data elements which is indexed by one or more integers called subscripts. The data elements can be all fixnums, flonums or general lisp objects. An array is created by a call to the function .i array or \fI*array\fP. The only difference is that .i *array evaluates its arguments. This call: .i "(array foo t 3 5)" sets up an array called foo of dimensions 3 by 5. The subscripts are zero based. The first element is \fI(foo\ 0\ 0)\fP, the next is \fI(foo\ 0\ 1)\fP and so on up to \fI(foo\ 2\ 4)\fP. The t indicates a general lisp object array which means each element of foo can be any type. Each element can be any type since all that is stored in the array is a pointer to a lisp object, not the object itself. .i Array does this by allocating an array object with .i marray and then allocating a segment of 15 consecutive value cells with .i small-segment and storing a pointer to that segment in the data subpart of the array object. The length and delta subpart of the array object are filled in (with 15 and 4 respectively) and the access function subpart is set to point to the appropriate array access function. In this case there is a special access function for two dimensional value cell arrays called arrac-twoD, and this access function is used. The auxiliary subpart is set to (t\ 3\ 5) which describes the type of array and the bounds of the subscripts. Finally this array object is placed in the function cell of the symbol foo. Now when .i "(foo 1 3)" is evaluated, the array access function is invoked with three arguments: 1, 3 and the array object. From the auxiliary field of the array object it gets a description of the particular array. It then determines which element \fI(foo\ 1\ 3)\fP refers to and uses arrayref to extract that element. Since this is an array of value cells, what arrayref returns is a value cell whose value is what we want, so we evaluate the value cell and return it as the value of \fI(foo\ 1\ 3)\fP. .pp In Maclisp the call \fI(array\ foo\ fixnum\ 25)\fP returns an array whose data object is a block of 25 memory words. When fixnums are stored in this array, the actual numbers are stored instead of pointers to the numbers as is done in general lisp object arrays. This is efficient under Maclisp but inefficient in .Fr since every time a value was referenced from an array it had to be copied and a pointer to the copy returned to prevent aliasing\*[\(dg\*]. .(f \*[\(dg\*]Aliasing is when two variables are share the same storage location. For example if the copying mentioned weren't done then after \fI(setq\ x\ (foo\ 2))\fP was done, the value of x and (foo\ 2) would share the same location. Then should the value of (foo\ 2) change, x's value would change as well. This is considered dangerous and as a result pointers are never returned into the data space of arrays. .)f Thus t, fixnum and flonum arrays are all implemented in the same manner. This should not affect the compatibility of Maclisp and .Fr . If there is an application where a block of fixnums or flonums is required, then the exact same effect of fixnum and flonum arrays in Maclisp can be achieved by using fixnum-block and flonum-block arrays. Such arrays are required if you want to pass a large number of arguments to a Fortran or C coded function and then get answers back. .pp The Maclisp compatible array package is just one example of how a general array scheme can be implemented. Another type of array you could implement would be hashed arrays. The subscript could be anything, not just a number. The access function would hash the subscript and use the result to select an array element. With the generality of arrays also comes extra cost; if you just want a simple aggregate of (less than 128) general lisp objects you would be wise to look into using hunks. .sh 2 vectors Vectors were invented to fix two shortcommings with hunks. They can be longer than 128 elements. They also have a tag associated with them, which is intended to say, for example, "Think of me as an \fIBlobit\fP." Thus a \fBvector\fP is an arbitrary sized hunk with a property list. .pp Continuing the example, the lisp kernel may not know how to print out or evaluate \fIblobits\fP, but this is information which will be common to all \fIblobits\fP. On the other hand, for each individual blobits there are particulars which are likely to change, (height, weight, eye-color). This is the part that would previously have been stored in the individual entries in the hunk, and are stored in the data slots of the vector. Once again we summarize the structure of a vector in tabular form: .(b .TS box center ; c | c | c | c . Subpart name Get value Set value Type = datum[\fIi\fP] vref vset lispval _ property vprop vsetprop lispval vputprop _ size vsize \- fixnum .TE .)b Vectors are created specifying size and optional fill value using the function (\fInew-vector\fP 'x_size ['g_fill ['g_prop]]), or by initial values: (\fIvector\fP ['g_val ...]). .sh 2 "anatomy of vectors" There are some technical details about vectors, that the user should know: .sh 3 size The user is not free to alter this. It is noted when the vector is created, and is used by the garbage collector. The garbage collector will coallesce two free vectors, which are neighbors in the heap. Internally, this is kept as the number of bytes of data. Thus, a vector created by (\fIvector\fP 'foo), has a size of 4. .sh 3 property Currently, we expect the property to be either a symbol, or a list whose first entry is a symbol. The symbols \fBfclosure\fP and \fBstructure-value-argument\fP are magic, and their effect is described in Chapter 8. If the property is a (non-null) symbol, the vector will be printed out as []. Another case is if the property is actually a (disembodied) property-list, which contains a value for the indicator \fBprint\fP. The value is taken to be a Lisp function, which the printer will invoke with two arguments: the vector and the current output port. Otherwise, the vector will be printed as vector[]. We have vague (as yet unimplemented) ideas about similar mechanisms for evaluation properties. Users are cautioned against putting anything other than nil in the property entry of a vector. .sh 3 "internal order" In memory, vectors start with a longword containing the size (which is immediate data within the vector). The next cell contains a pointer to the property. Any remaining cells (if any) are for data. Vectors are handled differently from any other object in .Fr, in that a pointer to a vector is pointer to the first data cell, i.e. a pointer to the \fIthird\fP longword of the structure. This was done for efficiency in compiled code and for uniformity in referencing immediate-vectors (described below). The user should never return a pointer to any other part of a vector, as this may cause the garbage collector to follow an invalid pointer. .sh 2 "immediate-vectors" Immediate-vectors are similar to vectors. They differ, in that binary data are stored in space directly within the vector. Thus the garbage collector will preserve the vector itself (if used), and will only traverse the property cell. The data may be referenced as longwords, shortwords, or even bytes. Shorts and bytes are returned sign-extended. The compiler open-codes such references, and will avoid boxing the resulting integer data, where possible. Thus, immediate vectors may be used for efficiently processing character data. They are also useful in storing results from functions written in other languages. .(b .TS box center ; c | c | c | c . Subpart name Get value Set value Type = datum[\fIi\fP] vrefi-byte vseti-byte fixnum vrefi-word vseti-word fixnum vrefi-long vseti-long fixnum _ property vprop vsetprop lispval vputprop _ size vsize \- fixnum vsize-byte fixnum vsize-word fixnum .TE .)b To create immediate vectors specifying size and fill data, you can use the functions \fInew-vectori-byte\fP, \fInew-vectori-word\fP, or \fInew-vectori-long\fP. You can also use the functions \fIvectori-byte\fP, \fIvectori-word\fP, or \fIvectori-long\fP. All of these functions are described in chapter 2. he array object (which is stored in the function cell of foo) and call the array access function with (now) four arguments. The array access function must be abdoc/ps2/09.lisp/chb.n 444 3 12 14607 3661000703 7436 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)chb.n 6.1 (Berkeley) 4/29/86 .\" ." $Header: /na/franz/doc/RCS/chb.n,v 1.1 83/01/31 07:11:40 jkf Exp $ .Ap 2 Special\ Symbols .pp The values of these symbols have a predefined meaning. Some values are counters while others are simply flags whose value the user can change to affect the operation of lisp system. In all cases, only the value cell of the symbol is important, the function cell is not. The value of some of the symbols (like \fBER%misc\fP) are functions - what this means is that the value cell of those symbols either contains a lambda expression, a binary object, or symbol with a function binding. .pp The values of the special symbols are: .in .5i .de Sa .sp 1v .ti -.5i \fB\\$1\fP\ \-\ \\ .. .Sa $gccount$ The number of garbage collections which have occurred. .Sa $gcprint If bound to a non nil value, then after each garbage collection and subsequent storage allocation a summary of storage allocation will be printed. .Sa $ldprint If bound to a non nil value, then during each .i fasl or .i cfasl a diagnostic message will be printed. .Sa ER%all The function which is the error handler for all errors (see \(sc10) .Sa ER%brk The function which is the handler for the error signal generated by the evaluation of the .i break function (see \(sc10). .Sa ER%err The function which is the handler for the error signal generated by the evaluation of the .i err function (see \(sc10). .Sa ER%misc The function which is the handler of the error signal generated by one of the unclassified errors (see \(sc10). Most errors are unclassified at this point. .Sa ER%tpl The function which is the handler to be called when an error has occurred which has not been handled (see \(sc10). .Sa ER%undef The function which is the handler for the error signal generated when a call to an undefined function is made. .Sa ^w When bound to a non nil value this will prevent output to the standard output port (poport) from reaching the standard output (usually a terminal). Note that ^w is a two character symbol and should not be confused with ^W which is how we would denote control-w. The value of ^w is checked when the standard output buffer is flushed which occurs after a .i terpr , .i drain or when the buffer overflows. This is most useful in conjunction with ptport described below. System error handlers rebind ^w to nil when they are invoked to assure that error messages are not lost. (This was introduced for Maclisp compatibility). .Sa defmacro-for-compiling The has an effect during compilation. If non-nil it causes macros defined by defmacro to be compiled and included in the object file. .Sa environment The UNIX environment in assoc list form. .Sa errlist When a .i reset is done, the value of errlist is saved away and control is thrown to the top level. \fIEval\fP is then mapped over the saved away value of this list. .Sa errport This port is initially bound to the standard error file. .Sa evalhook The value of this symbol, if bound, is the name of a function to handle evalhook traps (see \(sc14.4) .Sa float-format The value of this symbol is a string which is the format to be used by print to print flonums. See the documentation on the UNIX function printf for a list of allowable formats. .Sa funcallhook The value of this symbol, if bound, is the name of a function to handle funcallhook traps (see \(sc14.4). .Sa gcdisable If non nil, then garbage collections will not be done automatically when a collectable data type runs out. .Sa ibase This is the input radix used by the lisp reader. It may be either eight or ten. Numbers followed by a decimal point are assumed to be decimal regardless of what ibase is. .Sa linel The line length used by the pretty printer, pp. This should be used by .i print but it is not at this time. .Sa nil This symbol represents the null list and thus can be written (). Its value is always nil. Any attempt to change the value will result in an error. .Sa piport Initially bound to the standard input (usually the keyboard). A read with no arguments reads from piport. .Sa poport Initially bound to the standard output (usually the terminal console). A print with no second argument writes to poport. See also: ^w and ptport. .Sa prinlength If this is a positive fixnum, then the \fIprint\fP function will print no more than prinlength elements of a list or hunk and further elements abbreviated as `...'. The initial value of prinlength is nil. .Sa prinlevel If this is a positive fixnum, then the \fIprint\fP function will print only prinlevel levels of nested lists or hunks. Lists below this level will be abbreviated by `&' and hunks below this level will be abbreviated by a `%'. The initial value of prinlevel is nil. .Sa ptport Initially bound to nil. If bound to a port, then all output sent to the standard output will also be sent to this port as long as this port is not also the standard output (as this would cause a loop). Note that ptport will not get a copy of whatever is sent to poport if poport is not bound to the standard output. .Sa readtable The value of this is the current readtable. It is an array but you should NOT try to change the value of the elements of the array using the array functions. This is because the readtable is an array of bytes and the smallest unit the array functions work with is a full word (4 bytes). You can use .i setsyntax to change the values and .i "(status syntax ...)" to read the values. .Sa t This symbol always has the value t. It is possible to change the value of this symbol for short periods of time but you are strongly advised against it. .Sa top-level In a lisp system without /usr/lib/lisp/toplevel.l loaded, after a .i reset is done, the lisp system will .i funcall the value of top-level if it is non nil. This provides a way for the user to introduce his own top level interpreter. When /usr/lib/lisp/toplevel.l is loaded, it sets top-level to franz-top-level and changes the .i reset function so that once franz-top-level starts, it cannot be replaced by changing top-level. Franz-top-level does provide a way of changing the top level however, and that is through user-top-level. .Sa user-top-level If this is bound then after a .i reset , the top level function will .i funcall the value of this symbol rather than go through a read eval print loop. and flonum arrays in Maclisp can be achieved by using fixnum-block and flonum-block arrays. Such arrays are required if ydoc/ps2/09.lisp/chc.n 444 3 12 10766 3655277517 7467 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)chc.n 6.1 (Berkeley) 4/29/86 .\" ." $Header: /na/franz/doc/RCS/chc.n,v 1.1 83/01/31 07:11:44 jkf Exp $ .Ap 3 Short\ Subjects. .sp 2v .tl ''\fB\s+2The Garbage Collector\s0\fP' .pp The garbage collector is invoked automatically whenever a collectable data type runs out. All data types are collectable except strings and atoms are not. After a garbage collection finishes, the collector will call the function .i gcafter which should be a lambda of one argument. The argument passed to .i gcafter is the name of the data type which ran out and caused the garbage collection. It is .i gcafter 's responsibility to allocate more pages of free space. The default .i gcafter makes its decision based on the percentage of space still in use after the garbage collection. If there is a large percentage of space still in use, .i gcafter allocates a larger amount of free space than if only a small percentage of space is still in use. The default .i gcafter will also print a summary of the space in use if the variable .i $gcprint is non nil. The summary always includes the state of the list and fixnum space and will include another type if it caused the garbage collection. The type which caused the garbage collection is preceded by an asterisk. .sp 4v .tl ''\s+2\fBDebugging\fP\s0'' .pp There are two simple functions to help you debug your programs: .i baktrace and .i showstack . When an error occurs (or when you type the interrupt character), you will be left at a break level with the state of the computation frozen in the stack. At this point, calling the function .i showstack will cause the contents of the lisp evaluation stack to be printed in reverse chronological order (most recent first). When the programs you are running are interpreted or traced, the output of .i showstack can be very verbose. The function .i baktrace prints a summary of what .i showstack prints. That is, if showstack would print a list, .i baktrace would only print the first element of the list. If you are running compiled code with the \fI(status\ translink)\fP non nil, then fast links are being made. In this case, there is not enough information on the stack for .i showstack and .i baktrace . Thus, if you are debugging compiled code you should probably do \fI(sstatus\ translink\ nil)\fP. .pp If the contents of the stack don't tell you enough about your problem, the next thing you may want to try is to run your program with certain functions traced. You can direct the trace package to stop program execution when it enters a function, allowing you to examine the contents of variables or call other functions. The trace package is documented in Chapter 11. .pp It is also possible to single step the evaluator and to look at stack frames within lisp. The programs which perform these actions are described in Chapters 14 and 15. .bp .tl ''\fB\s+2The Interpreter\'s Top Level\s0\fP'' .pp The default top level interpreter for Franz, named .i franz-top-level is defined in /usr/lib/lisp/toplevel.l It is given control when the lisp system starts up because the variable top-level is bound to the symbol .i franz-top-level . The first action .i franz-top-level takes is to print out the name of the current version of the lisp system. Then it loads the file .lisprc from the HOME directory of the person invoking the lisp system if that file exists. The .lisprc file allows you to set up your own defaults, read in files, set up autoloading or anything else you might want to do to personalize the lisp system. Next, the top level goes into a prompt-read-eval-print loop. Each time around the loop, before printing the prompt it checks if the variable user-top-level is bound. If so, then the value of user-top-level will be .i funcall ed. This provides a convenient way for a user to introduce his own top level (Liszt, the lisp compiler, is an example of a program which uses this). If the user types a ^D (which is the end of file character), and the standard input is not from a keyboard, the lisp system will exit. If the standard input is a keyboard and if the value of .i "(status\ ignoreeof)" is nil, the lisp system will also exit. Otherwise the end of file will be ignored. When a .i reset is done the current value of .i errlist is saved away and control is thrown back up to the top level where .i eval is mapped over the saved value of .i errlist. disable Ifdoc/ps2/09.lisp/extrnames.awk 444 3 12 614 3655303656 11206 # Copyright (c) 1980 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)extrnames.awk 6.1 (Berkeley) 4/29/86 # BEGIN { print "(Doc)" } /^\.Lf/ { print "(" $2 " " substr(FILENAME,1,length(FILENAME)-2) ")" } /^\.Lx/ { print "(" $2 " " substr(FILENAME,1,length(FILENAME)-2) ")" } indexsedd lmacsmantagsdXtmacsdoc/ps2/09.lisp/fixmks.sed 444 3 12 501 3655304015 10453 # Copyright (c) 1980 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)fixmks.sed 6.1 (Berkeley) 4/29/86 # / MK/s/// /"/s///g /,/s// /g /;.*/s/// /\\(pl/s//+/ /\\(mi/s//-/ /\\(\*\*/s//*/ /\\(eq/s//=/  chc.n extrnames.awk fixmks.sedwkfranz.nedindexsedd lmacsmantagsdXtmacsdoc/ps2/09.lisp/franz.n 444 3 12 160042 3655277557 10067 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)franz.n 6.1 (Berkeley) 4/29/86 .\" ." franz.n -[Thu Jun 17 11:01:27 1982 by jkf]- ." this file will contain a description of the franz lisp system. ." sort of a systems manual. .de Fr F\s-2RANZ\s0 L\s-2ISP\s0 .. .tp .(l C .sz +2 \fBThe Franz Lisp System\fP .sz -2 .sp 2v \fIby \fIJohn K. Foderaro\fP .)l .sp 3v .tl ''Abstract'' .br This document describes the .Fr system written at The University of California at Berkeley. Included are descriptions of the memory management, interpreter and compiler, the conventions used within the C coded kernel and those within the compiled code. This does not duplicate the information found in The Franz Lisp Manual. .++ C '\s-2Draft\s+2'\fBThe\ Franz\ Lisp\ System\fP'%' .+c Characteristics\ of\ \F\s-2RANZ\ \s0L\s-2ISP\s0 .ls 1 .pp There is no formal standard for lisp systems, thus each lisp system is almost guaranteed to be different from any other lisp system. In this section we will examine the design decisions which most often characterize a lisp system. This focus does not imply that all other parts of the language are generally agreed upon. In fact, there is nothing sacred to lisp system designers. For example, one usually identifies the symbol .i nil with the empty list, and one usually thinks of lisp as a dynamically scoped language. Both of these conventions are are not true in the lisp dialect .i NIL currently being written at MIT. As another example, one imagines that a lisp system must use garbage collection to reclaim storage. The lisp dialect .i ZetaLisp that is running on Lisp Machines doesn't normally use a garbage collector because of the way in which it allocates its address space. It is faster to reboot the machine than to do a garbage collection. In most lisp dialects the lisp expressions are written in parenthesised form. In .i Portable .i Standard .i Lisp (PSL) at the University of Utah, programs are written primarily in an Algol-like syntax. .pp Thus some of the discussion to follow indicates not so much .i unique charateristics of .Fr but instead, how decisions were made. .sh 2 Scoping\ and\ Binding .pp The .Fr interpreter uses .i dynamic .i scoping , that is, after A calls B, B can access all of the variables that A allocated as well as those that A can access, provided B doesn't allocate variables of the same names. There are two popular ways of implementing dynamic scoping: .i deep .i binding and .i shallow .i binding . Note that we will use the terms variable allocation and lambda binding interchangeably in this report. The former term is less language-specific than the latter. .sh +1 Deep\ Binding .pp In a deep binding implementation, when a variable is allocated, the name of the variable and a space for its value are pushed on the top of a stack. When a program asks for the value of a variable, the lisp system must search down the stack for the first occurrence of the variable. This system offers great flexibility for the programmer since the state of his program can be described by the contents of the stack. It is thus possible to save the context of a program by just saving the stack or in some cases just a pointer to a place in the stack. The problem with deep binding is that it is time-consuming to search down the stack for the value of a variable, and, as a result, most systems modify the deep binding model by giving variables a global value cell and allowing programs to set and access the global cell. Some implementations of Interlisp use deep binding. .sh +0 Shallow\ Binding .pp In a shallow binding implementation, each variable has a global value cell which contains the current value of the variable. When a variable is allocated inside a program, its name and old value are pushed on a stack called a .i bindstack . The variable is then given a new value. Throughout the lifetime of the allocation, the current value of the variable can be found in the global value cell associated with the variable. When leaving the context of the variable's allocation, the old value is restored from the .i bindstack . A shallow binding scheme makes it much cheaper to access the values of variables, however it is much more difficult to save the state and to restore it. .pp .Fr and most other lisps which are not derived from Interlisp use shallow binding. Some versions of Interlisp use shallow binding. .sh -1 Lisp\ Compiler .pp Dynamic scoping often is not necessary and it is never cheap, even in a shallow binding implementation. Thus the .Fr compiler prefers to do lexical scoping rather than dynamic scoping. If the user does not specify otherwise, when a function is compiled, all variables allocated will be put on a local stack and will .i not be accessible by any function that this function calls. This convention results in faster code being generated by the compiler, but if the user is not careful, it can result in compiled and interpreted code working differently. In some of the new lisp designs, such as .i NIL and .i Common .i Lisp the semantics of compiled and interpreted code have been unified by transferring the compiler semantics (lexical scoping) to the interpreter. This is a rather large step if dynamic scoping is no longer an option, and it is not clear whether the resulting language should be called 'lisp'. .sh +0 Data\ Types .pp A complete list of data types in .Fr can be found in the first chapter of the .Fr Manual. The most important ones are described below. .pp Lisp is a list processing language and the basic data type is the list cell. A list cell also goes by the name of cons cell, pair, or dotted pair (dtpr). It contains pointers to two lisp objects, and these pointers can be accessed via the .i car and .i cdr functions. Each pointer requires four (8-bit) bytes and thus the list cell is eight bytes large. The cdr pointer is stored first since this makes it easier to 'cdr down a list' using the addressing modes of the VAX. .pp The symbol cell is used to implement variables. It contains a pointer to a string that is the print name, a cell to store a value, a cell to store the function definition, a cell to store a pointer to the property list and one pointer that the list system uses if it stores the symbol in the oblist. .sh +0 Memory\ Management .pp A lisp system must be able to determine the type of an object at run time. The method used to determine the type influences the way storage is managed and garbage collection is done. Next, we will look at three possible places to store the type information. .sh +1 Typed\ data .pp The type of the data object could be placed in the object itself, much as Pascal stores the type of a variant record in the record itself. This could result is a large amount of storage being used to store type information. No lisp system that we know of uses this method exclusively. .sh +0 Typed\ pointers .pp Every reference to a lisp object could contain the type of the object referenced. This is a good idea in a machine like an IBM 370 where only part of machine word is used by the addressing hardware. Lisps that use typed pointers generally use a .i heap memory management scheme and a .i copying garbage collector. In a heap scheme, all memory is divided by a pointer (called the heap pointer) separating lisp data and free space. When a new lisp object is needed, it is formed at the dividing line and then the heap pointer is incremented past the new object. Garbage collection is done by maintaining two separate spaces for lisp data, only one of which is used at any one time. When one fills up, all active lisp objects are copied to the other space, leaving the first space totally free. Subsequent allocations are done from the second space, until it fills up, at which point all active data in the second space is copied to the first space. The advantage of the copying garbage collector is that the data space is compacted, which will improve virtual memory behavior. The disadvantage is that half the data space is always unused. .pp PSL on a PDP-10 uses this scheme, as does Lisp 370 on an IBM 370. PSL and NIL on the VAX will also use this scheme. Since the VAX hardware uses the entire word for address calculation, PSL and NIL must mask off the type bits of a pointer before using it to reference memory. .sh +0 Typed\ pages .pp The final alternative is to allocate data objects by pages rather than individually. Each page contains only one type of object and there is a table that keeps track of the type of data object in each page. The address of an object tells which page the object is on and the page number tells which type the object is. Since a whole page of objects is allocated when only one object is necessary, the rest of the objects in the page are put on a free list. This method of allocation is sometimes referred to as .i bibop for BIg Bag Of Pages. The garbage collector for bibop is usually a traditional .i mark and .i sweep algorithm. All active data objects are marked and then each page is swept linearly with the free cells being put on the free list and the used cells left alone. The advantage of mark and sweep over a copying garbage collector is that the mark phase is cheaper because data objects do not have to be copied. Also, all of memory can be used since there is no requirement for two spaces. The disadvantage is that a sweep phase is required in a mark and sweep but one is not required in a copying garbage collector. The sweep phase is expensive because it has to alter most data pages while building a free list. This operation can be expensive in a virtual memory environment. Alternatives to the sweep phase have been proposed in [Foderaro+Fateman Characterization of Vax Macsyma]. .pp .Fr uses a bibop memory allocator and a mark and sweep garbage collector, as does Maclisp (on a PDP-10). The reason that .Fr uses bibop is primarily due to the VAX architecture, which makes typed pointers expensive to implement. Also, typed pointers would make it difficult to pass lisp values to programs written in other languages, some of which may not have the ability to extract the address of a lisp object from a typed pointer. .sh -1 Construction .pp The .Fr system is built by adding lisp code to a C-coded kernel. The C-coded kernel is a working lisp interpreter, although it has few of the functions a lisp system needs. The lisp code provides most of the functions, the top level and error handlers. The lisp compiler is also written in lisp, but is usually run as a separate process. .sh +0 Unique\ features .pp .Fr can dynamically load and execute functions defined in the other languages which run on the VAX. It uses two different dynamic loaders. One is part of the lisp system and is used for lisp only, it is called .i fasl (for fast loader). The other is the Unix loader, ld, which is used for loading in C, Fortran or Pascal code. Loading code with fasl is much faster than with ld since fasl benefits from the simplicity of a lisp object file. .+c Data\ Structures .sh 0 _ .nr $1 \n(ch .pp In this chapter we shall examine the data structures which are most important to the .Fr system. First, though we will see how the lisp system uses the address space. .sh 2 Physical\ layout .pp As a Unix process, lisp has three address regions: text, data and stack. Text begins at location 0 and continues up to 0x3b73c (0x means hex number). The data segment begins on the next page boundary and continues up to a limit set by the configuration parameters (currently 0x2fd000). Lisp does not begin running with such a large data segment, rather it grows when necessary. The stack segment begins at address 0x7fffffff and grows downward to a maximum size of one-half megabyte. .pp The text segment stores the instructions for the C kernel as well as read-only data. The read-only data for lisp are the symbol nil, the i/o ports, and the small integer table. The symbol nil is stored at location 0 which makes it very easy to test whether a value is nil. The problem with storing nil in read-only space is that a special case must be made for nil's property list, which is the only thing in the nil symbol that the user is permitted to alter. .pp The fixnums -1024 through 1023 are stored sequentially, with 0 being stored at 0x1400. .Fr doesn't have any 'immediate' lisp data, that is data whose value is stored as part of the reference to the data. But, by storing some of the fixnums in a known place, we can achieve some of the benefits of immediate data: A program can use .i eq as a test for a fixnum in the range -1024 to 1023. In the majority of cases, when asked to allocate a fixnum, the system can return a pointer into this table and bypass the memory allocator. .sh +0 Typetable .pp .Fr uses the typed pages (or bibop) method of type determination. The .i typetable is an array of bytes ( .i chars in C lingo). This table describes the type of all pages, from page 0 where nil is stored, up to the end of data space. Thus there are many entries that describe the types of the pages which make up the C kernel. In order to reduce the wasted space in the typetable, we could have made the typetable begin typing pages at the start of data space and make a special case of the pages that contain nil and the small integer table. However, the effect of this change would be that type checks (which are done in-line in compiled code) would be longer and slower. Since type checking happens quite frequently, we felt it was better to waste the space in the typetable in order to save execution time and instruction space. .pp Each page on a VAX is 512 bytes, and thus to find the type of an object given the address of it, it is only necessary to shift the address right 9 bits and index the typetable array offset by one. The offset by one is required because the value -4, which is an illegal address, is used as a sentinel value to indicate an illegal value. Thus when we take the type of -4 we will be indexing the table by -1 and we want to retrieve the first byte in the table (which contains the value UNBOUND). The C macro which retrieves the type is this (from file h/global.h): .(b I #define TYPE(a1) ((typetable+1)[(int)(a1) >> 9]) .)b This is code generated by the lisp compiler to check if the type code of an argument (stored at 0(r10)) is a symbol (which is type code 1): .(b I ashl $-9,0(r10),r0 cmpb _typetable+1[r0],$1 .)b .pp The type codes which are stored in the typetable are these: .ts 2i 4i 6i .(b I UNBO -1\tSTRNG 0\tATOM 1\tINT 2 DTPR 3\tDOUB 4\tBCD 5\tPORT 6 ARRAY 7\tOTHER 8\tSDOT 9\tVALUE 10 HUNK2 11\tHUNK4 12\tHUNK8 13\tHUNK16 14 HUNK32 15\tHUNK64 16\tHUNK128 17 .)b The names given above are the C kernel internal names. ATOM is symbol, INT is fixnum, DTPR is list cell, DOUB is flonum, BCD is binary, SDOT is bignum and all the HUNKn types are just known as hunk to the user. .sh +0 Stacks .pp .Fr uses three stacks: the .i C .i runtime stack, the .i namestack and the .i bindstack . The C runtime stack is the stack part of the address space and the other two stacks are stored in the data space. .sh +1 C\ runtime\ stack The C-coded kernel uses this stack in the same way as a typical C program use the stack: storing return addresses and non-lisp-object arguments to subroutines, saving registers, and storing local variables within a function. The lisp system stores .i catch .i frames on this stack as well (to be described later). .pp The lisp system assumes that there are no lisp data on the stack and thus the use of this stack by a program is unrestricted. As will be discussed later on, the .b calls and .b ret instructions are used for most subroutine calls and returns. These instructions expect the stack to look a certain way. .sh +0 Namestack .pp The namestack contains only lisp data. It is used to pass arguments to functions and to hold local (lexically scoped) data within lisp functions. It is also used as a temporary storage spot for lisp data which must be protected from garbage collection. .pp A slight digression on the garbage collector: The person who writes code for the lisp system must always be aware of his greatest enemy: the garbage collector. Whenever a function is called that could possibly allocate more lisp data, one must assume that it when it attempts to allocate space, the garbage collector will be invoked and that it will take away everything that isn't protected from garbage collection. The objects that are protected from garbage collection are: the namestack, the bindstack, the oblist (table of interned symbols), and the compiler literals. Objects that are only referred to by values in registers or the C runtime stack will not be seen by the mark phase of the garbage collector and will be swept up during the sweep phase. .pp Back to the namestack: The first free element on the namestack is pointed to by the C variable .i np . This variable is always stored in the VAX register r6. Another pointer into the namestack is the C variable .i lbot . It is always stored in VAX register r7. Its use will be described in the section on calling conventions. .sh +0 Bindstack .pp The bindstack is a stack of lisp object pairs: symbol and value. It is used to implement shallow binding. When a symbol is lambda-bound, the symbol and its current value are put on this stack. Then the symbol can be given a new value. When the context of the lambda binding is over, the symbol and value pair are popped from the stack and the symbol is given its old value. The C variable .i bnp points to the first free entry on the bindstack. In the C code, the following macros lambda-bind a symbol to a value and restore the old value: .(b #define PUSHDOWN(atom,value)\e {bnp->atm=(atom);\e bnp++->val=(atom)->a.clb;\e (atom)->a.clb=value;\e if(bnp>bnplim) binderr();} #define POP\e {--bnp; bnp->atm->a.clb=bnp->val;} .)b .sh -1 Bitmap .pp The bitmap is used in garbage collection to hold the mark bits for the mark and sweep garbage collector. As its names implies, it is viewed as a collection of bits. The minimum size of a lisp data object is 4 bytes, thus there are 128 of those on a VAX page of 512 bytes. Since there are 8 bits in a byte, it takes 16 bytes to obtain 128 bits. Therefore the size of the bitmap in bytes is 16 times the maximum number of pages. Like the typetable, the bitmap keeps track of marks from the bottom of memory, not the bottom of data space. The bitmap and the typetable are static structures. It is their size, which is determined when the C kernel is built, which determines the size to which the data segment can grow. .sh +0 Transfer\ Tables .pp Transfer tables are used by compiled lisp code as a transfer vector to other functions. A transfer table consists of pairs of entries: symbol and pointer to function. When a compiled lisp function calls another (non-local) function, it calls indirectly through an entry in the transfer table. Depending on the setting of certain status variables, the call may bring control into a function linkage routine or directly to the function desired (if that function is a compiled lisp or C function). .pp Transfer tables serve a number of useful purposes. .np They allow compiled code to call interpreted code or compiled code using the same calling sequence. .np They allow the selection of which function to call to be determined at runtime based on the name of the function. In most other languages, this selection process is done at either compile or load time. .np They allow the user to run in a debugging mode where all calls from compiled code go through the interpreter. Once control reaches the interpreter, it is easier to debug. .np They allow the user to run in a production mode, where all calls from compiled to other compiled code are done without function lookup overhead. .np They allow the user to switch between debugging and production modes at runtime with one function call. .pp Transfer tables will be described further in the section on the lisp compiler. .sh +0 Catch\ frames .pp Lisp has a number of forms of non-local transfers. Among them are .i throw , .i error , .i return and .i go . If a program is willing to accept a non-local transfer, it puts a .i catch .i frame on the stack which describes which type of transfer it accepts. The catch frame describes the current state of the registers, the variables np, lbot, and bnp, and also contains entries that describe what kinds of non-local transfers the function will accept. After creating a catch frame, the program goes on to evaluate forms. Should the evaluation of one of those forms result in a non-local transfer to the catch frame that this program has set up, the system will restore the namestack and bindstack to the way they were when the program put the catch frame on the stack (by using np and bnp) and will return control to the program (setting the variable retval to describe why it returned). This is described further in the section on interpreter conventions. .pp The C variable .i errp points to the most recent catch frame, and then each catch frame points to the previous catch frame. .sh +0 oblist .pp Normally when symbols are created they are .i interned , that is they are put in a hash table called an oblist (or obarray). The purpose of the oblist is to insure that if you type a symbol's name to the reader, you will always get the same symbol. Also it protects the symbol from garbage collection. The oblist is simply a hash table with buckets, with a hash link being part of the symbol data structure. Currently the hash table is not accessible to a lisp program, but with a little work it could be. .+c Interpreter .sh 0 _ .nr $1 \n(ch .pp The interpreter is composed of these parts: .ip \fIcore:\fP The functions eval, apply and funcall. .ip \fIstack\ management:\fP The code to create catch frames and handle non-local transfers. .ip \fImemory\ management:\fP The code to allocate and garbage collect memory. .ip \fIthe\ functions:\fP The user callable functions that expect lisp arguments and return lisp values. .pp In the above list, the first three are written mainly in C (with a little assembler) and the last is written mainly in Lisp with a little bit in C and a very small amount in assembler. .pp The core functions are the center of activity in the interpreter. The .i eval function given a lisp expression to evaluate. It must determine if it is a simple expression such as a symbol or number whose value eval can determine immediately, or if it is an function calling expression. If the form is a function call, eval must determine if the arguments should be evaluated and if so eval must recursively call itself to evaluate the arguments and then stack them. If the function called is to be interpreted, eval must lambda-bind the formal variables of the function to the arguments just stacked. If the function being called is compiled, eval just calls the function and lets the function do the lambda binding if it wants to. .pp The .i apply function is passed two lisp objects: a function to call (either a symbol or a functional object) and a list of arguments already evaluated. It will do lambda binding if the function to call is to be interpreted. .pp The .i funcall function is passed any number of lisp objects, the first of which is the function to call, and the rest are the arguments to the function which have already been evaluated and stacked. Funcall will do lambda binding if the function to call is to be interpreted. .pp When compiled lisp code calls a function which must be interpreted, it enters the interpreter through the funcall function. The interpreter may go to compiled code through either eval, apply or funcall, though most often it goes through eval. .sh 2 Conventions .pp These are the conventions used in interpreted and compiled code. .sh +1 C\ conventions .pp Our conventions are extensions of the C calling conventions, so we describe here the conventions for C. The VAX has 16 general purpose registers. Registers r12 through r15 are reserved for use by the hardware because we use the .i calls subroutine call. Registers r0-r5 can be used by a program without saving them first. The result of a function call is returned in r0. Registers r11-r6 are allocated (from high to low) by the C compiler when a .i register declaration is made in the C code. Registers r11-r6 must be saved upon entry and restored upon exit if they are used within a function. On the VAX it is very easy to preserve registers since it is done automatically by the hardware if the .i calls (or .i callg ) instruction is used. The first short word (two bytes) of a subroutine is a register save mask which tells which registers should be saved (on the C runtime stack) upon entry and restored when a .i ret instruction is done. .sh +0 np\ and\ lbot .pp Earlier we mentioned that the C variables np and lbot are always stored in registers r6 and r7. It is very difficult to globally assign a variable to a register in the C language (no external register declarations are permitted) and thus we have to filter the output of the C compiler and convert all occurrences of 'np' to 'r6' and all occurrences of 'lbot' to 'r7'. This is only half the job, though. We also must modify the register save masks for those routines which alter the value of np or lbot to insure that those registers get saved and restored upon function entry and exit. This is done in the C code by putting .(b C Savestack(n) .)b at the beginning of a routine which will alter np or lbot and which also allocates n register variables. Also in that routine, before the function returns, we put .(b C Restorestack() .)b This is not really necessary in the VAX, but it is there for other machine implementations which don't have a .i ret function which restores registers. The calls to Savestack are recognized by a filter which processes the output of the C compiler and fixes up the save masks. .sh +0 Function\ calling .pp The following text describes what the conventions are for calling compiled lisp functions, whether they were written in lisp or C. We look at it from the viewpoint of the called function. .pp Upon entry to the compiled functon, lbot points to the first argument and np points to the first free spot on the namestack. If np equals lbot then there are no arguments. Recall that np will be in r6 and lbot in r7. The function is free to alter registers r0 through r5 and should return the result in r0. The function may alter registers r6 through r11 as long as their original values are restored when the function returns. The value of np should always point to the first free entry in the namestack. This is all that is required. The extra conventions followed by the lisp compiler in the code it generates are described in the next chapter. .sh +0 Catch\ frames .pp A catch frame saves the state of execution that a program might want to return to at some later time. A catch frame is stored on the C runtime stack, with the most recent frame pointed to by the C global variable errp. The information saved is .ip \fIargs\fP - one or two optional arguments. The lisp compiler always stacks two arguments since it must know exactly how large the frame is. .ip \fIclass\fP - the class describes what type of frame this is (described below). .ip \fIretaddr\fP - address to return to if returning from this frame .ip \fIolderrp\fP - pointer to next older catch frame on the stack .ip \fIbnp\fP - value of bnp (bindstack pointer) when the frame was created .ip \fInp\fP - value of np when the frame was created .ip \fIlbot\fP - value of lbot when the frame was created. .ip \fIsystem\ dependent\fP - the rest of the information stacked depends on the particular machine. In the case of the VAX, registers r13 through r8 are stacked. (r14 and r15 are the stack pointer and program counter; they are not saved since they can be calculated from the other information). .pp The information in a catch frame is put on the C runtime stack in the precise order given above, and the variable errp points not at the beginning of the entire frame, but to the lbot entry. Thus errp\ +\ 4 points to np. The classes of frames are described below. Each class is defined as a constant in the C code (h/frame.h) whose value is a small integer. .ip F_PROG\ [1] - takes no arguments. This frame marks the beginning of a piece of code which can accept a .i return or a .i go . The interpreter uses this to implement .i prog and .i do and for its primative break loop. The lisp compiler does not use catch frames for progs since it only permits .i returns and .i gos to occur within .i progs or .i dos and thus it can determine how to do the non-local transfer at compile time. .ip F_CATCH\ [2] - this takes one or two arguments and is used to implement both .i catch and .i errset . In both cases the first argument is the tag which is being caught, which in the case of an .i errset is symbol ER%all. An .i errset also supplies a second argument which is non nil if the error message should be printed. .ip F_RESET\ [3] - in the C kernel, the reset function is implemented as a non local transfer to a F_RESET catchframe. When the lisp system is built, the reset function is redefined to do a .i throw. Thus this type of catch frame is rarely used. .ip F_EVAL\ [4] - this has one argument, the form being evaluated. Since stacking this on every eval would be expensive, this type of catch frame is only stacked if a \fI(*rset\ t)\fP has been done and if the value of the symbol .i *rset is non nil. The form being evaluated is stacked so that the necessary information for the .i evalframe function is available and so that .i freturn can return from the context of any pending evaluation. .ip F_FUNCALL\ [5] - this is much like F_EVAL, except the one argument it takes is the name of the function to call. It has the same restrictions on when it is stacked as F_EVAL and for the same reasons. .pp In C, a frame is pushed on the stack with Pushframe, with a call of one of these forms: .(b errp = Pushframe(class); errp = Pushframe(class,arg1); errp = Pushframe(class,arg1,arg2); .)b After the call the C variable .i retval contains the value which describes why this function returned. You must remember that it is possible for this one function call to return more than once! The reasons it can return are these (from h/frame.h): .ip C_INITIAL\ [0] This is the initial call to set up the frame. .ip C_GO\ [1] This will only happen for F_PROG frames. In this case, the C variable lispretval contains a lisp symbol which is the tag to which control should be transferred. If the tag cannot be found in this prog or do body, the tag should be again thrown up the stack to a next higher prog or do. .ip C_RET\ [2] This will only happen for F_PROG frames. In this case, lispretval contains the value to return from this prog. .ip C_THROW\ [3] This will only happen for F_CATCH frames. In this case lispretval contains the value to return from this catch. .ip C_RESET\ [4] This will only happen for F_RESET frames. It simply means that a reset is being done. .ip C_FRETURN\ [5] This will only happen for F_EVAL and F_FRETURN frames. The variable lispretval contains the value to return from this call to .i eval or .i funcall . .pp The call to Pushframe is turned into a simple subroutine call (using the .i jsb instruction instead of the .i calls ) by the filters which alter the code coming out of the C compiler. Thus it may be useful to see what stacking a catch frame really looks like. Here is what the lisp compiler generates to stack the frame for \fI(*catch\ 'tag\ x)\fP .(b movl 0(r8),r0 #move 'tag to r0 pushl $0 # dummy argument pushl r0 # put tag argument on C runtime stack pushl $2 # push F_CATCH jsb _qpushframe # call Pushframe movl r0,_errp # move result into errp .)b .pp Every function which does a Pushframe() must also do a Popframe() before it returns to its caller. This simply removes the frame from the stack. In C it is written: .br .tl ''errp = Popframe()'' in the code generated by the lisp compiler it looks like: .(b movl _errp,r1 # put current errp in r1 movl 12(r1),_errp # put previous errp in errp addl3 $32,r1,sp # pop frame from stack .)b .pp Non-local transfers are done with the Inonlocalgo function. This function always takes three arguments. The first is the return type (one of the types mentioned above which begin with 'C_'). It will be assigned to retval. The second argument is the value to be assigned to lispretval, except in the case of a C_THROW, where the second argument is the tag to throw to and the third argument is the value to assign to lispretval. This function never returns. If it doesn't find a catch frame which matches what it is looking for, it signals an error. The function is called with .i calls and the arguments are stacked on the C runtime stack, not the namestack. .+c Liszt:\ The\ Lisp\ Compiler .sh 0 _ .nr $1 \n(ch .pp The purpose of compiling a lisp function is to create a representation of the function which can be evaluated in less time and perhaps take up less space. There are two approaches to lisp compilers. One is to convert the functions to a compact form, often called .i bytecodes which can be rapidly interpreted. Each bytecode represents a primitive operation in the lisp system. This approach is simple to implement but there is an time penalty in using an interpreter. The other approach is to compiled to machine code. In general, this is not as portable as the bytecode approach but the result generally runs faster. There are two ways of compiling to machine code. One is to place arguments to functions in registers. If there are more arguments than registers, the arguments are put on a stack and a special type of call is made. This method is used in Maclisp. The other method is to assume a stack model, in which arguments to a function are placed on a stack. This is what the .Fr compiler Liszt does. The stack model made it much easier to write parts of the lisp system in the C langauge. It also simplifies the garbage collector since the mark phase doesn't have to locate and peruse all saved registers looking for lisp data. .sh 2 File\ Compiler .pp When a file of lisp expressions is loaded, the .i load function repeatedly reads and evaluates the forms in the file. Some of these evaluations may result in functions being defined, and others may use the functions just defined or previously defined. The job of the lisp compiler is to create an object file, which, when read in by .i fasl, acts just like it was .i load ed in, except when a function is defined it is defined in machine code, not as a lisp expression. This is quite a bit different from what compilers do in other languages and it is done this way to make it easier to switch between compiled and interpreted code. .sh +0 Differences\ between\ compiled\ and\ interpreted .pp There are some differences, though, between compiled and interpreted code. Local variables in compiled code are lexically scoped (put on the namestack and inaccessible to other functions) unless the variable has been declared .i special. The declaration: .(b \fI(declare (special x y))\fP .)b declares both x and y to be special from this point in the file on. The declaration .(b \fI(declare (specials t))\fP .)b declares all variables to be special. .pp Lisp has a very powerful macro definition system. The compiler will macro expand all it can, whereas the interpreter expands macros when necessary but never replaces a macro call with its expansion. Thus if you redefine a macro, the compiled code that uses it will still work the same way, but the interpreted code will use the new definition. Also, when compiling a file, macro definitions must be done before any call on the macro is encountered during compiling. In the interpreter, macros can be defined or redefined anytime up until they are used. Thus the interpreter is far freer about macro definitions than the compiler. This could cause programs which work interpreted to fail compiled. .sh +0 Top\ level\ algorithm .pp The top level algorithm of the compiler is simply this: .np read a lisp expression from the input file .np macro expand the top level of the form as much as possible .np if the form is a function definition (a list beginning with the symbol 'def') then compile it. .np if the form is not a function definition then put it on a list of forms that will be evaluated when the file is .i fasl ed in. .np if not at end of file, go to step 1. .pp In reality, step 3 is a bit more complex. If the definition is of a macro, then the form will be evaluated immediately, thus adding the macro definition to the compiler's environment. If the lisp variable .i macros is t then the macro will also be compiled. There are also some forms like \fI(progn\ 'compile\ ...)\fP and \fI(eval-when\ ()\ )\fP which determine when the forms get compiled and evaluated. See the lisp manual for details. .sh +0 Expression\ Compilation .pp Just as the interpreter is centered around the .i eval function, the lisp compiler is centered around the function .i d-exp whose job it is to compile the expression passed to it. The lisp compiler is one pass. Before a call to d-exp returns, all the compiled code for a form has been computed and written to a file. One reason that the lisp compiler can be a single pass compiler is that the assembler which reads the compiler's output is a two pass assembler. .sh +1 global\ state\ variables .pp There are a number of variables that maintain the state of the compilation process. These variables are declared special and are thus dynamically scoped and visible to any function within the compiler. When d-exp is called their meanings are: .ip \fIv-form\fP - contains the expression to be compiled. .ip \fIg-loc\fP - tells where the result of evaluating this expression should be put. If g-loc is nil, then the value returned is unimportant and shouldn't be put anywhere. .ip \fIg-cc\fP - controls conditional branches. If g-cc is non nil, then it is a list cell whose value has either a non-null car or non-null cdr but not both. If the car is non-nil then if the value of the expression held in v-form is non-nil, a branch should be done to the symbol stored in \fI(car\ g-cc)\fP. If the cdr is non-nil then if the value of v-form is nil, a branch should be done to the symbol stored in \fI(cdr\ g-cc)\fP. Since at every conditional branch control should either jump or continue, the car and cdr will never both be specified. .ip \fIg-ret\fP - is non nil if the result of evaluating v-form will be returned as the value of the function we are evaluating. This is used to allow liszt to detect when tail recursion removal is possible. .ip \fIg-locs\fP - maintains current information about the state of the stacks: the bindstack (for specials), the namestack (for locals) and the C runtime stack (for catch frames) The form of g-locs is a stack of tokens stored as a list. The meaning of each token is as follows: .br \fInil\fP - this represents an unnamed object on the namestack. This happens when calling functions, when the arguments are stacked prior to a function call. .br \fI\fP - the given symbol is the name of a local variable on the namestack. .br \fI(prog . )\fP - prog statement which binds special variables .br \fI(do . )\fP - head of a do statement which binds special variables .br \fI(catcherrset . 0)\fP - catch or errset frame on stack .br \fI(lambda . )\fP - lambda expression which binds special variables .ip \fIg-labs\fP - this is a stack of labels. There is one entry in g-labs for every entry which is a list in g-locs. the forms of the entries are: .br \fInil\fP - no labels in this form .br \fI(endlab (real . gen) (real2 . gen2) ...)\fP - endlab is the label to go to to get out of this body. After this label will be code to unbind specials and pop off locals. The 'real' labels are those found in the code. the gen labels are those generated and put in the assembler code. .sh +0 Function\ compilation .pp The action d-exp takes when compiling an expression depends on the type of expression. For atoms (symbols and numbers) the compilation is very simple, it is just a matter of putting the value where g-loc specifies and then jumping if specified by g-cc. When the expression is a list, d-exp first macro expands the form and then looks at the first element of the list (if the list has not macro expanded to an atom). If the first element is a symbol then the list is is a function call. If the function is one of the functions which liszt knows how to open compile then liszt will call the particular routine designated to open compile this function. There are two classes of functions within liszt that do open compiling. The first class, the fl-expr class, are distinguished by names which begin with c-. These functions always generate code which returns the result in r0. They are not equipped to obey the contents of g-loc and g-cc. Thus d-exp, after calling one of these functions, must do what is necessary to obey g-loc and g-cc. The other class of open compiling functions, the fl-exprcc class (whose names begin with cc-), handle g-loc and g-cc. As a result these are usually much more complex and generate better code. .sh -1 Register\ Conventions .pp The register conventions used by liszt are an extension of those used by the C code. .ip \fIr0\fP - return value placed here .ip \fIr1,r2,r3,r4\fP - scratch registers. When long strings of .i car's or .i cdr's are done (such as .i caddadr ) these registers are used in a least-recently-used fashion to access down the list. The compiler keeps track of the values in these registers but must assume that they are garbage after a function is called. .ip \fIr5\fP - fixnum accumulator. There a number of functions which work on fixnum's only and these usually put their result in r5. The assembler code function .i qnewint which returns a pointer to a cell containing a fixnum value (after checking if it is in the fixnum table), expects its argument to be in r5. .ip \fIr6\fP np .ip \fIr7\fP lbot. When calling a function, this register is set just before the function call, and after the function call its value is used to reset the value of np in order to pop the arguments off the namestack. .ip \fIr8\fP the literal table pointer. The compiler generates a table of all the literal lisp data which the compiled code might access. Upon function entry a pointer to the base of this table is put in r8. For example, if we compile \fI(setq\ x\ 'foo)\fP then we will need a pointer to the lisp symbol .i foo and if the symbol .i x as been declared special we will also need a pointer to .i x . .ip \fIr10\fP - upon function entry the value of lbot (r7) is put in r10. This allows us to reference the arguments to our function while using lbot to call other function. .sh +0 Addresses There are four types of addresses used internally in Franz: symbolic, intermediate addresses (iadr), extended intermediate (eiadr) and vax assembler format. .sh +1 Symbolic .pp These are the names of lisp objects, such as `a', `foo', 34, or 3.234234. A name is either a local variable, a special variable or a number. A number is either a small fixnum, large fixnum, bignum or floating point number. .sh +0 Intermediate\ address\ (IADR) .pp This type of address is generated from a symbolic address by .i d-loc, .i d-loclit and the routines .i d-simple and .i d-rsimple which call them. The forms are .ip \fINil\fP - the location or value of nil. .ip \fIT\fP - the location or value of t. .ip \fIreg\fP - register r0, which is where the result of function calls are stored. .ip \fIstack\fP - the address pointed to by np with np incremented after the value is stored. (i.e (r6)+) .ip \fIunstack\fP - the address one word below np (np is decremented before accessing. (i.e. -(r6)) .ip \fI\fP - this is just . This allows strange forms to be represented directly. .ip \fI(stack\ n)\fP - The n'th value on the namestack for this function. The first value 0(r10) is (stack 1). .ip \fI(vstack\ n)\fP - The cdr of the n'th value on the namestack. That is, (stack 1) is *0(r10) .ip \fI(bind\ n)\fP - The value of the n'th value in the literal table. If this refers to a symbol, then this is the value of the symbol. If this refers to a list then this this is the cdr of the list (although this is a rare use). (bind 1) corresponds to *0(r8). .ip \fI(lbind\ n)\fP - The n'th value in the literal table. If this refers to object foo then this is the address of foo in memory. .ip \fI(fixnum\ n)\fP - This is the address of small fixnum n in memory. A small fixnum is in the range -1024 to 1023. .ip \fI(immed\ n)\fP - The is the immediate constant n. .sh +0 extended\ intermediate\ address\ (EIADR) .pp This address is generated from an IADR by e-cvt. It symbolically represents a vax address. .ip \fI\fP - This corresponds to . .ip \fI(n\ )\fP - This corresponds to n() (stack n+1) and (lbind n+1) are converted to these forms. .ip \fI(n\ \ )\fP - This corresponds to n()[] There is currently no IADR which generates this. .ip \fI(*\ n\ )\fP -This corresponds to *n() (vstack n+1) and (bind n+1) are converted to these forms. .ip \fI(+\ )\fP - This corresponds to ()+. stack is converted to this form. .ip \fI(-\ )\fP - This corresponds to -() unstack is converted to this form. .ip \fI($\ )\fP - This corresponds to $ (immed ) is converted to this form. .ip \fI(#\ )\fP - This corresponds to $ where equals the base of the fixnums (0x1400) plus 4 * (fixnum ) is converted to this form .ip \fI(*\ #\ )\fP - This corresponds to $. It is generated by d-rsimple occasionally when you ask for the cdr of a number (which you do sometimes when you are compiling fixnum operators). .sh +0 Vax\ Unix\ assembler\ addresses .pp The addresses are printed from a EIADR by e-cvtas. The conversions are shown in the above section. .sh -1 Function\ calling\ convention .sh +1 Function\ linkages .pp The function associated with a symbol is stored in the function definition slot of the symbol. If the function slot contains a list then the function is to be interpreted and its 'car' will be lambda, nlambda, lexpr or macro. If the function is compiled then the function definition slot will contain a binary object. A binary object is composed of two independent parts: the discipline and the entry. The discipline is one of: .ip \fIlambda\fP - a function whose arguments should be evaluated. .ip \fInlambda\fP - a function whose arguments should not be evaluated but which should be passed as a list .ip \fImacro\fP - a function which should be passed the unevaluated form being evaluated and whose result should be evaluated. .ip \fI\"subroutine\"\fP - a foreign function subroutine .ip \fI\"integer-function\"\fP - a foreign function returning an integer .ip \fI\"real-function"\fP - a foreign function returning a flonum. .pp A lexpr is not in the list as there is no difference to the caller between compiled lambda's and compiled lexprs. .sh +0 Transfer\ tables Most calls from compiled code to other lisp functions go through transfer tables. A transfer table entry is a pair: symbol, address of routine. When another lisp function is called it uses the .i calls instruction which will indirectly jump through the address in the transfer table. This address may point to the desired function or it may point to the interface routine. If a call ends up in the interface routine, then that routine will trace back through the call stack and eventually reach the tranfer table entry that it was 'called through'. Since the transfer table entry contains a symbol which names the function to be called, the interface routine can determine which routine was to have been called. If that routine is compiled then the interface routine can modify the transfer table so that a call through that table entry will go directly to the desired function. If the routine to be called is interpreted, or if the user has requested that transfer linkages should be disabled, then the interface routine will go through the 'funcall' function in the interpreter to continue the call. .sh +0 calling\ sequence\ in\ the\ compiler: .pp When transfer tables are used .(b \fBforeach\fP arg \fBcompute\fP arg and stack result using (r6)+ for example: movl r0,(r6)+ movab -n(r6),r7 where n = 4*number of args to fcn calls $0,*trantb+m where m is the index of the function in the transfer table. movl r7,r6 restore r6 .)b .pp The compiler supports local functions, which are function accessible only within one file. Because they are not accessible from C code, we can use a very fast call and return sequence when calling them. To call a local function .(b \fBforeach\fP arg \fBcompute\fP and stack using (r6)+ jsb LOCALNAME go directly to the function, it will restore r6 before it returns. .)b .pp The beginning of each function looks as follows. First for a non-lexpr function called in the standard way (topsim is the label jumped to when tail merging, it will be unique for each function; the brackets indicate the optional code which exists if the -p switch is given to liszt); .(b .word 0x5c0 # save r6, r7, r8, r10 [ movab mcounts,r0 # if profiling, mcounts replaced by fasl jsb mcount ] movab linker,r8 # set up r8 movl r7,r10 # set up oldlbot movab n(r10),r6 # n = 4*Number of args expected. topsim: .)b .pp Now for lexprs: .(b .word 0x5c0 [ movab mcounts,r0 # if profiling. [mcounts replaced by fasl] jsb mcount ] movab linker,r8 # set up r8 subl3 $4,r7,-(sp) # address one word below bottom of args topsim: movl r6,r10 # first free addr to arg base subl3 r7,r6,r0 # number of args * 4 into r0 movab 0x1400(r0),(r6)+ # stack boxed number of args movl 0(r10),-(sp) # also store on stack so user can't clobber .)b .pp And finally for local functions: .(b movl r10,-(sp) # save r10 movab -n(r6),r10 # set up arg base using arg top topsim: .)b .sh -1 Assembler\ file\ format .pp The liszt compiler generates a file which is in Unix assembler format. The Unix assembler converts that file into an object file which fasl then reads. Although the object file generated is a standard Unix object file (as defined in /usr/include/a.out.h), it is not of a format that the Unix ld loader can understand. This is because the requirements of a lisp object file are different from an object file of other languages. The run time semantics of lisp and the fact that lisp data must be protected from garbage collection are the principal differences. The unconventional object file created by the unix assembler is a result of the unconventional assembler input file. Next we will look at what must be put in the assembler file and how it is put there. .pp The assembler file must contain .ip \fIinstructions\fP - vax assembler code for the compiled functions. If there aren't any functions compiled, this can be empty. .ip \fIliterals\fP - lisp data which is referred to by compiled code .ip \fItransfer\ table\fP - the names of the functions which correspond to the calls through the transfer table. The instructions simply say 'call indirect through the nth transfer table entry'. .ip \fIfunction\ names\fP - the names of the functions which are being defined. .ip \fIload\ time\ forms\fP - in order to mimic the .i load function, fasl has to be able to evaluate lisp expressions at fasl time, so we must be able to store lisp expressions in the assembler file and indicate when they should be evaluated. .pp Based on the requirements above, the form of the assembler file is as described below. The assembler builds two segments: text and data. We put all of our information in the text segment. The compiler places some annotation strings in the data segment so that the object file can be identified, however the data segment is ignored by fasl. The format is .ip \fIcompiled\ instructions\fP The instructions for each compiled (non-local) function begins with .(b .globl F00003 F00003: .word 0x5c0 .)b The globl declaration and the fact that the symbol name begins with a F will tell fasl that this is the beginning of a lisp function. The symbols beginning with F must be unique within a file but may be duplicated in other files. The lisp name of the function will appear later. Next the instructions for the function are given. Only a small fixed set of external symbols may be referenced. The list is found in the code for nfasl.c and the common ones will be described below (soon). Labels should be given a name beginning with L and should be unique within the file. .ip \fItable\ sizes\fP somewhere in the file there should be a pair of 'set' assembler pseudo ops which describe the sizes of the literal table and transfer table. The form is this .(b .set linker_size 4 .set trans_size 3 .)b where linker_size is the number of entries in the literal table which will be required and trans_size is the number of entries in the transfer table which will be required. Those tables will be built by fasl. .ip \fIbinder\ table\fP - this table describes the order that the functions should be defined and forms evaluated. It is a table of longwords beginning at the symbol bind_org and ending when a -1 entry is seen. The meaning of the entries will be described below. .ip \fIlisp\ expression\ table\fP - this is a table of null terminated strings beginning at the symbol lit_org and ending at the symbol lit_end. Each string is read by the lisp read function (using the raw readtable). The first linker_size expressions are put in the literal table. The next trans_size expressions are the names of the functions to put in the transfer table. The remaining expressions correspond to the entries in the binder table. The binder entries are processed, one by one. Provided that the binder entry is not -1, an expression is read from the lisp expression table. Then if the binder table entry is 0, that expression is the name of a lambda type lisp function. A binary object is created, the discipline is set to lambda and the function address is set to the lexically next function defined in the file. If the binder entry is 1 then this is an nlambda function, and if the entry is 2 then this is a macro function. If the entry is 99 then the expression just read should be evaluated by the lisp function eval. .pp The lisp compiler normally puts the assembler format output file in /tmp and removes it when it is done. The -S switch will tell liszt to write the assembler file in the same place as the source file, and with the same root name but a .s extension. The -C file will tell the lisp compiler to comment the file as it generates it, making it easier to understand what is going on. Assume that the following is file foo.l: .(b (defun foo (x) (bar y) (baz k)) (print (foo 3)) (def test (nlambda (l) (print 'hithere) (foo 3))) .)b we now compile it with -SC .(b .globl F00007 #(fcn lambda foo) F00007: .word 0x5c0 movab linker,r8 movl r7,r10 movab 4(r10),r6 L00008: movl *0(r8),(r6)+ #(calling bar) #(from y to stack) movab -4(r6),r7 calls $0,*trantb+0 movl r7,r6 movl *4(r8),(r6)+ #(calling baz) #(from k to stack) movab -4(r6),r7 calls $0,*trantb+8 movl r7,r6 ret .globl F00009 #(fcn nlambda test) F00009: .word 0x5c0 movab linker,r8 movl r7,r10 movab 4(r10),r6 L00010: movl 8(r8),(r6)+ #(calling print) #(from 'hithere to stack) movab -4(r6),r7 calls $0,*trantb+16 movl r7,r6 movl $5132,(r6)+ #(calling foo) #(from (fixnum 3) to stack) movab -4(r6),r7 calls $0,*trantb+24 movl r7,r6 ret bind_org: .set linker_size, 3 .set trans_size, 4 .long 0 .long 99 .long 1 .long -1 lit_org: .asciz "y" .asciz "k" .asciz "hithere" .asciz "bar" .asciz "baz" .asciz "print" .asciz "foo" .asciz "foo" .asciz "(print (foo 3))" .asciz "test" lit_end: .data # this is just for documentation .asciz "@(#)Compiled by Lisp Compiler 7.1 on Sun Feb 21 17:51:54 1982" .asciz "@(#)decl.l 1.5 2/10/82" .asciz "@(#)array.l 1.1 9/25/81" .asciz "@(#)datab.l 1.1 9/25/81" .asciz "@(#)expr.l 1.1 9/25/81" .asciz "@(#)io.l 1.1 9/25/81" .asciz "@(#)funa.l 1.3 2/10/82" .asciz "@(#)funb.l 1.2 2/10/82" .asciz "@(#)func.l 1.2 2/10/82" .asciz "@(#)tlev.l 1.4 10/24/81" .asciz "@(#)fixnum.l 1.6 10/21/81" .asciz "@(#)util.l 1.2 10/7/81" .)b .sh +0 functions\ callable\ from\ compiled\ lisp\ code .sh +0 Object\ File\ Format .sh +0 Fasl n whose arguments should be evaluated. .ip \fInlambda\fP - a function whose arguments should not be evaluated but which should be passed as a list .ip \fImacro\fP - a function which should be passed the unevaluated form being evaluated and whose result should be evaluated. .ip \fI\"subroutine\"\fP - a foreign function subroutine .ip \fI\"integer-function\"\fP - a foreign function returning an integer .ip \fI\"real-function"\fP - a foreign function returning a flonum. .pp doc/ps2/09.lisp/indexsed 444 3 12 355 3655304170 10214 # Copyright (c) 1980 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)indexsed 6.1 (Berkeley) 4/29/86 # // s//\\ / ch5.n ch6.nch61.nn ch7.n ch8.n ch9.n chb.n chc.n extrnames.awk fixmks.sedwkfranz.nedindexsedd lmacsmantagsdXtmacsdoc/ps2/09.lisp/lmacs 444 3 12 7254 3662216065 7540 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)lmacs 6.1 (Berkeley) 4/29/86 .\" ." @(#)lmacs 34.4 3/23/82 ." $Header: lmacs 1.2 83/07/01 11:21:33 sklower Exp $ .""""""" ." macros for the Franz Lisp Manual ." ." first we set these global me variables ."""""""" .nr ss 3v \" space 4v between sections ."" comment: .nr si 3n \" section indent ."""""""" ." the following two lines are for larger type font ." .nr pp 12 ." .nr sp 12 ." If we are making an on line manual, include the line below: .if 0 .ll 7.5i \" extra wide for nroff, DISABLED .""""""""""""""" ." A chapter is begun by ." .Lc chaptertitle number ." ." a function is introduced by a ." .Lf functionname arglist ." where the arglist must be one string, use "'s if necessary. ." if there are two names for a function then the first is called with ." .Lf and subsequent ones with .Lx ." then there are these macros to begin text describing what the function ." does: ." .Wh ." says "WHERE" allowing you to give more ." details on a function. ." .Re ." tells what value the function returns ." ." .No ." begins a note, giving more detail on the fcn ." ." .Se ." describes a size effect of a function. ." ." .Im ." note to implementor. this will only be ." printed out in the implementors version of ." the manual. ." .Rm prints a message about this function being ." likely to disappear ." ." .Ex begin a short example ." ." .Eb begin an large offset example ." .Ee end an example ." ." .Fb begin a large offset example but don't ." try to keep it on one page. ." .Fe end what .Fb started ." ." useful macros ." .Fr rest prints out Franz Lisp and appends rest ." to it. ." ." used in creating the index, table of contents and appendicies ." ." .Ib begin index ." .In ch# pg# fcn-name fcn-args this isnt inserted by hand, but ." is generated by the index program. it indicates ." where a function begins. ." ." .Ap c T begin appendix c with title T ." ."""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .de Lc ." .in 0 .++ RC '\\$1''\\\\\\\\\\\\\\\\n(ch-%' .nr % 2 .nr ch \\$2-1 .+c \\$1 .fo '''\fR\s-2Printed:\ \*(td\s0\fP' .. .de Lf .sp 1v .ne 11 .Lx \\$1 "\\$2" .. .de Lx .in 0 .ie '\\$2'' \fB(\\$1)\fP .el \fB(\\$1\fP \\$2\fB)\fP .br .nr $i 5n ." if troff, then put nice index entry, if nroff then we are making an ." online manual so put out a cryptic lisp expression. If you want to ." make an nroff version of the manual with index, then you will have ." to alter the lines below: replace .if t with .if 1 and .if n with .if 0 .if t .tm .In \\n(ch \\n% \\$1 "\\$2" .if n .tm (\\$1 ch\\n(ch.r) .. .de Re .ip \s-2RETURNS\s0: 9 .. .de Ex .ip \s-2EXAMPLE\s0: 9 .. .de No .ip \s-2NOTE\s0: 6 .. .de Eq .ip \s-2EQUIVALENT\ TO\s0: 15 .. .de Im .ip \s-2IMPLEMENTATION\s0: 20 .. .de Se .ip \s-2SIDE\ EFFECT\s0: 13 .. .de Wh .ip \s-2WHERE\s0: 9 .. .de Rm .No this function will most likely disappear in future releases. .. .de Fr F\s-2RANZ\s0 L\s-2ISP\s0\\$1 .. .de Ib \" beginning of index .Ap 1 Index\ to\ F\s-2RANZ\s0\ L\s-2ISP\s0\ Functions .ta 6i \" set tab stop for location column .tc . \" generate dots to line up page numbers .nf .. .de In .ie '\\$4'' (\\fB\\$3\\fR)\t\\$1-\\$2 .el (\\fB\\$3\\fR\ \\$4)\t\\$1-\\$2 .. .de Eb .in 0 .(b .sp 1v .hl .sz -2 .. .de Ee .sz +2 .hl .sp 1v .)b .. .de Fb .in 0 .sp 1v .ne 1i .hl .sz -2 .. .de Fe .sz +2 .hl .sp 1v .. .de Ap \" appendix n title (n is 1 2 3 4 for A B C D etc) .++ RA '''\\\\\\\\\\\\\\\\n(ch-%' .nr ch \\$1-1 .+c \\$2 .fo '''\fR\s-2Printed:\ \*(td\s0\fP' .. call' function in the interpreter to continue the call. .sh +0 calling\ sequence\ in\ the\ compiler: .pp When transfer tables are used .(b \fBforeach\fP arg \fBcompute\fP arg and stack result using (r6)+ for example: movl r0,(r6)+ movab -n(r6),r7 where n = 4*number of args to fcn calls $0,*trantb+m where m is the index doc/ps2/09.lisp/mantags 444 3 12 504 3655305312 10036 # # Copyright (c) 1986 Regents of the University of California. # All rights reserved. The Berkeley software License Agreement # specifies the terms and conditions for redistribution. # # @(#)mantags 6.1 (Berkeley) 4/29/86 # /^\.Lf/ { print $2, FILENAME, "?^\.Lf " $2 "?" } /^\.Lx/ { print $2, FILENAME, "?^\.Lx " $2 "?" } chc.n extrnames.awk fixmks.sedwkfranz.nedindexsedd lmacsmantagsdXtmacsdoc/ps2/09.lisp/tmacs 444 3 12 7147 3662215677 7561 .\" Copyright (c) 1980 Regents of the University of California. .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" .\" @(#)tmacs 6.2 (Berkeley) 5/14/86 .\" ." @(#)lmacs 34.4 3/23/82 ." $Header: lmacs 1.2 83/07/01 11:21:33 sklower Exp $ .""""""" ." macros for the Franz Lisp Manual ." ." first we set these global me variables ."""""""" .nr ss 3v \" space 4v between sections ."" comment: .nr si 3n \" section indent ."""""""" ." the following two lines are for larger type font ." .nr pp 12 ." .nr sp 12 ." If we are making an on line manual, include the line below: .if 0 .ll 7.5i \" extra wide for nroff, DISABLED .""""""""""""""" ." A chapter is begun by ." .Lc chaptertitle number ." ." a function is introduced by a ." .Lf functionname arglist ." where the arglist must be one string, use "'s if necessary. ." if there are two names for a function then the first is called with ." .Lf and subsequent ones with .Lx ." then there are these macros to begin text describing what the function ." does: ." .Wh ." says "WHERE" allowing you to give more ." details on a function. ." .Re ." tells what value the function returns ." ." .No ." begins a note, giving more detail on the fcn ." ." .Se ." describes a size effect of a function. ." ." .Im ." note to implementor. this will only be ." printed out in the implementors version of ." the manual. ." .Rm prints a message about this function being ." likely to disappear ." ." .Ex begin a short example ." ." .Eb begin an large offset example ." .Ee end an example ." ." .Fb begin a large offset example but don't ." try to keep it on one page. ." .Fe end what .Fb started ." ." useful macros ." .Fr rest prints out Franz Lisp and appends rest ." to it. ." ." used in creating the index, table of contents and appendicies ." ." .Ib begin index ." .In ch# pg# fcn-name fcn-args this isnt inserted by hand, but ." is generated by the index program. it indicates ." where a function begins. ." ." .Ap c T begin appendix c with title T ." ."""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" .de Lc ." .in 0 .nr ch \\$2-1 .+c \\$1 .. .de Lf .sp 1v .ne 11 .Lx \\$1 "\\$2" .. .de Lx .in 0 .ie '\\$2'' \fB(\\$1)\fP .el \fB(\\$1\fP \\$2\fB)\fP .br .nr $i 5n ." if troff, then put nice index entry, if nroff then we are making an ." online manual so put out a cryptic lisp expression. If you want to ." make an nroff version of the manual with index, then you will have ." to alter the lines below: replace .if t with .if 1 and .if n with .if 0 .if t .tm .In \\n% \\$1 "\\$2" .if n .tm (\\$1 ch\\n(ch.r) .. .de Re .ip \s-2RETURNS\s0: 9 .. .de Ex .ip \s-2EXAMPLE\s0: 9 .. .de No .ip \s-2NOTE\s0: 6 .. .de Eq .ip \s-2EQUIVALENT\ TO\s0: 15 .. .de Im .ip \s-2IMPLEMENTATION\s0: 20 .. .de Se .ip \s-2SIDE\ EFFECT\s0: 13 .. .de Wh .ip \s-2WHERE\s0: 9 .. .de Rm .No this function will most likely disappear in future releases. .. .de Fr F\s-2RANZ\s0 L\s-2ISP\s0\\$1 .. .de Ib \" beginning of index .pn 158 .He .Ap 1 Index\ to\ F\s-2RANZ\s0\ L\s-2ISP\s0\ Functions .ta 6i \" set tab stop for location column .tc . \" generate dots to line up page numbers .nf .. .de In .ie '\\$3'' (\\fB\\$2\\fR)\t\\$1 .el (\\fB\\$2\\fR\ \\$3)\t\\$1 .. .de Eb .in 0 .(b .sp 1v .hl .sz -2 .. .de Ee .sz +2 .hl .sp 1v .)b .. .de Fb .in 0 .sp 1v .ne 1i .hl .sz -2 .. .de Fe .sz +2 .hl .sp 1v .. .de Ap \" appendix n title (n is 1 2 3 4 for A B C D etc) .++ A .nr ch \\$1-1 .+c \\$2 .. .de He .oh 'The Franz Lisp Manual''PS2:9-%' .eh 'PS2:9-%''The Franz Lisp Manual' .. L\s-2ISP\s0\\$1 .. .de Ib \" beginning of index .Ap 1 Index\ to\ F\s-2RANZ\s0\ L\s-2ISP\s0\ Functions .ta 6i \" set tab stop for location column .tc . \" generate dots to line up page numbers .nf .. .de In .ie '\\$4'' (\\fB\\$3\\fR)\t\\$1-\\$2 .el (\\fB\\$3\\fR\ \\$4)\t\\$1-\\$2 .. .de Eb .in 0 .(b .sp 1v .hl .sz -2 .. .de Ee .sz +2 .hl .sp 1v .)b .. .de Fb .in 0 .sp 1v .ne 1i .hl .sz -2 .. .de Fe .sz +2doc/ps2/01.cacm/ 755 3 12 0 3660732141 6343 doc/ps2/01.cacm/p6 444 3 12 2577 3653550154 6715 .\" @(#)p6 6.1 (Berkeley) 4/24/86 .\" .SH IX. STATISTICS .PP The following numbers are presented to suggest the scale of the Research .UX operation. Those of our users not involved in document preparation tend to use the system for program development, especially language work. There are few important ``applications'' programs. .PP Overall, we have today: .PP .SP .5 .TS center; r5 l. 125 user population 33 maximum simultaneous users 1,630 directories 28,300 files 301,700 512-byte secondary storage blocks used .TE .SP .5 There is a ``background'' process that runs at the lowest possible priority; it is used to soak up any idle \*sCPU\*n time. It has been used to produce a million-digit approximation to the constant \fIe\fR, and other semi-infinite problems. Not counting this background work, we average daily: .SP .5 .TS center; r 5 l. 13,500 commands 9.6 \*sCPU\*n hours 230 connect hours 62 different users 240 log-ins .TE .SP .5 .SH X. ACKNOWLEDGMENTS .PP The contributors to .UX are, in the traditional but here especially apposite phrase, too numerous to mention. Certainly, collective salutes are due to our colleagues in the Computing Science Research Center. R. H. Canaday contributed much to the basic design of the file system. We are particularly appreciative of the inventiveness, thoughtful criticism, and constant support of R. Morris, M. D. McIlroy, and J. F. Ossanna. .[ $LIST$ .] pendicies ." ." .Ib begin index ." .In ch# pg# fcn-name fcn-args this isnt inserted by hand, but ." is generated by tdoc/ps2/01.cacm/p5 444 3 12 16372 3653550115 6727 .\" @(#)p5 6.1 (Berkeley) 4/24/86 .\" .SH VII. TRAPS .PP The \*sPDP\*n-11 hardware detects a number of program faults, such as references to non-existent memory, unimplemented instructions, and odd addresses used where an even address is required. Such faults cause the processor to trap to a system routine. Unless other arrangements have been made, an illegal action causes the system to terminate the process and to write its image on file .UL core in the current directory. A debugger can be used to determine the state of the program at the time of the fault. .PP Programs that are looping, that produce unwanted output, or about which the user has second thoughts may be halted by the use of the .UL interrupt signal, which is generated by typing the ``delete'' character. Unless special action has been taken, this signal simply causes the program to cease execution without producing a .UL core file. There is also a .UL quit signal used to force an image file to be produced. Thus programs that loop unexpectedly may be halted and the remains inspected without prearrangement. .PP The hardware-generated faults and the interrupt and quit signals can, by request, be either ignored or caught by a process. For example, the \&shell ignores quits to prevent a quit from logging the user out. The editor catches interrupts and returns to its command level. This is useful for stopping long printouts without losing work in progress (the editor manipulates a copy of the file it is editing). In systems without floating-point hardware, unimplemented instructions are caught and floating-point instructions are interpreted. .SH VIII. PERSPECTIVE .PP Perhaps paradoxically, the success of the .UX system is largely due to the fact that it was not designed to meet any predefined objectives. The first version was written when one of us (Thompson), dissatisfied with the available computer facilities, discovered a little-used \*sPDP\*n-7 and set out to create a more hospitable environment. This (essentially personal) effort was sufficiently successful to gain the interest of the other author and several colleagues, and later to justify the acquisition of the \*sPDP\*n-11/20, specifically to support a text editing and formatting system. When in turn the 11/20 was outgrown, the system had proved useful enough to persuade management to invest in the \*sPDP\*n-11/45, and later in the \*sPDP\*n-11/70 and Interdata 8/32 machines, upon which it developed to its present form. Our goals throughout the effort, when articulated at all, have always been to build a comfortable relationship with the machine and to explore ideas and inventions in operating systems and other software. We have not been faced with the need to satisfy someone else's requirements, and for this freedom we are grateful. .PP Three considerations that influenced the design of .UX are visible in retrospect. .PP First: because we are programmers, we naturally designed the system to make it easy to write, test, and run programs. The most important expression of our desire for programming convenience was that the system was arranged for interactive use, even though the original version only supported one user. We believe that a properly designed interactive system is much more productive and satisfying to use than a ``batch'' system. Moreover, such a system is rather easily adaptable to noninteractive use, while the converse is not true. .PP Second: there have always been fairly severe size constraints on the system and its software. Given the partially antagonistic desires for reasonable efficiency and expressive power, the size constraint has encouraged not only economy, but also a certain elegance of design. This may be a thinly disguised version of the ``salvation through suffering'' philosophy, but in our case it worked. .PP Third: nearly from the start, the system was able to, and did, maintain itself. This fact is more important than it might seem. If designers of a system are forced to use that system, they quickly become aware of its functional and superficial deficiencies and are strongly motivated to correct them before it is too late. Because all source programs were always available and easily modified on-line, we were willing to revise and rewrite the system and its software when new ideas were invented, discovered, or suggested by others. .PP The aspects of .UX discussed in this paper exhibit clearly at least the first two of these design considerations. The interface to the file system, for example, is extremely convenient from a programming standpoint. The lowest possible interface level is designed to eliminate distinctions between the various devices and files and between direct and sequential access. No large ``access method'' routines are required to insulate the programmer from the system calls; in fact, all user programs either call the system directly or use a small library program, less than a page long, that buffers a number of characters and reads or writes them all at once. .PP Another important aspect of programming convenience is that there are no ``control blocks'' with a complicated structure partially maintained by and depended on by the file system or other system calls. Generally speaking, the contents of a program's address space are the property of the program, and we have tried to avoid placing restrictions on the data structures within that address space. .PP Given the requirement that all programs should be usable with any file or device as input or output, it is also desirable to push device-dependent considerations into the operating system itself. The only alternatives seem to be to load, with all programs, routines for dealing with each device, which is expensive in space, or to depend on some means of dynamically linking to the routine appropriate to each device when it is actually needed, which is expensive either in overhead or in hardware. .PP Likewise, the process-control scheme and the command interface have proved both convenient and efficient. Because the \&shell operates as an ordinary, swappable user program, it consumes no ``wired-down'' space in the system proper, and it may be made as powerful as desired at little cost. In particular, given the framework in which the \&shell executes as a process that spawns other processes to perform commands, the notions of I/O redirection, background processes, command files, and user-selectable system interfaces all become essentially trivial to implement. .SH Influences .PP The success of .UX lies not so much in new inventions but rather in the full exploitation of a carefully selected set of fertile ideas, and especially in showing that they can be keys to the implementation of a small yet powerful operating system. .PP The .UL fork operation, essentially as we implemented it, was present in the \*sGENIE\*n time-sharing system. .[ lampson deutsch 930 manual 1965 system preliminary .] On a number of points we were influenced by Multics, which suggested the particular form of the I/O system calls .[ multics input output feiertag organick .] and both the name of the \&shell and its general functions. The notion that the \&shell should create a process for each command was also suggested to us by the early design of Multics, although in that system it was later dropped for efficiency reasons. A similar scheme is used by \*sTENEX\*n. .[ bobrow burchfiel tenex .] uence\ in\ the\ compiler: .pp When transfer tables are used .(b \fBforeach\fP arg \fBcompute\fP arg and stack result using (r6)+ for example: movl r0,(r6)+ movab -n(r6),r7 where n = 4*number of args to fcn calls $0,*trantb+m where m is the index doc/ps2/01.cacm/p4 444 3 12 33657 3653550066 6740 .\" @(#)p4 6.1 (Berkeley) 4/24/86 .\" .SH VI. THE SHELL .PP For most users, communication with the system is carried on with the aid of a program called the \&shell. The \&shell is a command-line interpreter: it reads lines typed by the user and interprets them as requests to execute other programs. (The \&shell is described fully elsewhere, .[ bourne shell bstj %Q This issue .] so this section will discuss only the theory of its operation.) In simplest form, a command line consists of the command name followed by arguments to the command, all separated by spaces: .P1 command arg\*s\d1\u\*n arg\*s\d2\u\*n .\|.\|. arg\*s\dn\u\*n .P2 The \&shell splits up the command name and the arguments into separate strings. Then a file with name .UL command is sought; .UL command may be a path name including the ``/'' character to specify any file in the system. If .UL command is found, it is brought into memory and executed. The arguments collected by the \&shell are accessible to the command. When the command is finished, the \&shell resumes its own execution, and indicates its readiness to accept another command by typing a prompt character. .PP If file .UL command cannot be found, the \&shell generally prefixes a string such as .UL /\|bin\|/ to .UL command and attempts again to find the file. Directory .UL /\|bin contains commands intended to be generally used. (The sequence of directories to be searched may be changed by user request.) .SH 6.1 Standard I/O .PP The discussion of I/O in Section III above seems to imply that every file used by a program must be opened or created by the program in order to get a file descriptor for the file. Programs executed by the \&shell, however, start off with three open files with file descriptors 0, 1, and 2. As such a program begins execution, file 1 is open for writing, and is best understood as the standard output file. Except under circumstances indicated below, this file is the user's terminal. Thus programs that wish to write informative information ordinarily use file descriptor 1. Conversely, file 0 starts off open for reading, and programs that wish to read messages typed by the user read this file. .PP The \&shell is able to change the standard assignments of these file descriptors from the user's terminal printer and keyboard. If one of the arguments to a command is prefixed by ``>'', file descriptor 1 will, for the duration of the command, refer to the file named after the ``>''. For example: .P1 ls .P2 ordinarily lists, on the typewriter, the names of the files in the current directory. The command: .P1 ls >there .P2 creates a file called .UL there and places the listing there. Thus the argument .UL >there means ``place output on .UL there .'' On the other hand: .P1 ed .P2 ordinarily enters the editor, which takes requests from the user via his keyboard. The command .P1 ed